````mdx --- title: 从托盘提醒到 AI 桌宠:HGuard 的设计与进化路线 date: 2026-02-26 tags: [Rust, 桌面应用, 系统设计, AI, 桌宠] --- # 从托盘提醒到 AI 桌宠:HGuard 的设计与进化路线 HGuard 最初只是一个非常简单的想法: > 我需要一个能提醒我起立和喝水的工具。 作为一个长期写代码、写算法、折腾系统的人,我发现“久坐”不是偶然,而是一种常态。现有工具要么太重,要么过于商业化,要么缺少可扩展性。 于是我决定自己写一个。 但在实现基础功能之后,我意识到: **它不应该只是一个提醒工具。** 我希望它最终成为: - 一个后台健康守护系统 - 一个可交互的桌面存在体 - 一个具备 AI 对话能力的桌宠 - 一个能够理解当前屏幕内容的上下文助手 这篇文章记录 HGuard 当前的实现状态,以及未来明确、可执行的演进路线。 --- # 一、当前版本:一个稳定的后台健康守护核心 当前版本的 HGuard 已实现以下能力: ## 1. 托盘常驻 - 程序以托盘应用形式运行 - 不打扰桌面工作 - 支持随时退出或暂停 ## 2. 可配置任务系统 使用 `config.toml` 管理任务,例如: ```toml [[tasks]] name = "stand_up" interval_minutes = 60 message = "该起立活动一下了" [[tasks]] name = "drink_water" interval_minutes = 20 message = "喝水时间到" ```` 优点: * 用户无需重新编译程序 * 扩展任务非常简单 * 未来可支持更多任务类型 ## 3. 异步调度引擎 核心采用 async 架构,调度结构大致如下: ``` engine ├── scheduler ├── task ├── notifier ``` ### engine * 启动系统 * 加载配置 * 初始化任务 ### scheduler * 管理任务周期 * 基于时间轮或 interval 驱动 ### task * 定义任务状态 * 管理运行记录 ### notifier * 触发提醒 * 未来可扩展为多种通知形式 这种结构保证: * 调度逻辑与通知逻辑解耦 * 可随时添加新类型任务 * 未来可平滑接入 AI 模块 当前版本定位非常明确: > 一个稳定、轻量、后台运行的健康守护内核。 --- # 二、架构升级目标:模块分层与 AI 解耦 未来 HGuard 不会把 AI 写进核心模块,而是采用分层架构。 计划结构: ``` core/ engine.rs scheduler.rs task.rs notifier.rs ai/ llm_client.rs context_memory.rs screen_analyzer.rs ui/ desktop_window.rs interaction.rs live2d_renderer.rs system/ screen_capture.rs permission.rs ``` 原则: * Core 不依赖 AI * AI 作为增强能力存在 * UI 与 Core 通过 IPC 通信 这样可以保证: * 即使 AI 模块崩溃,健康提醒仍然运行 * 可以替换不同 LLM API * 可关闭屏幕分析功能 --- # 三、阶段性演进路线(可实施版本) ## Phase 1(已完成) * 托盘运行 * 可配置任务 * 异步调度 * 基础通知系统 目标:稳定运行。 --- ## Phase 2:桌面悬浮窗口 目标:让 HGuard “可见”。 ### 实现步骤: 1. 使用 Tauri 或 winit 创建无边框窗口 2. 设置透明背景 3. 支持置顶 4. 支持拖动 5. 显示当前任务状态 这个阶段不接入 AI,只做 UI 可视化。 --- ## Phase 3:接入 AI 文本生成 目标:让提醒“更有情绪”。 ### 实现步骤: 1. 新建 ai/llm_client.rs 2. 支持 API Key 配置 3. 设计基础 Prompt: ``` 你是一个桌面健康助理。 用户喜欢写代码。 提醒语气略带调侃但不过分。 ``` 4. 每次提醒时: * 传入任务类型 * 生成变体提醒语 例如: > 你已经连续写了 60 分钟代码了,是时候站起来救救你的脊椎了。 --- ## Phase 4:屏幕理解能力 目标:实现“上下文感知”。 ### 技术路线: 1. 每 N 秒截屏(默认关闭) 2. OCR 提取文本 3. 或调用多模态模型 4. 生成 contextual 对话 示例: * 当前在 VSCode * 正在编辑 Rust 文件 * 超过 2 小时未切换窗口 生成: > 你是真的喜欢 Rust,还是只是逃避现实? ⚠ 必须提供隐私开关。 --- ## Phase 5:Live2D 桌宠 目标:可视化人格。 ### 技术选型: 推荐: * 前端 + Live2D SDK * Rust 后端通过 IPC 通信 实现: * 不同情绪切换动画 * 提醒时触发动作 * 被点击时触发对话 --- ## Phase 6:情绪系统与记忆系统 定义简单状态机: * Idle * Reminder * Playful * Concerned 记录: * 今日提醒次数 * 忽略次数 * 活跃时长 形成持续人格。 --- # 四、性能与隐私设计原则 在设计 AI 桌宠时必须考虑: ## 1. 不高频截图 默认关闭屏幕理解。 ## 2. 本地优先 优先本地 OCR 或模型。 ## 3. 明确告知用户 说明: * 截图是否上传 * 是否保存数据 * 是否长期存储 健康工具不应成为监控工具。 --- # 五、最终愿景 HGuard 的终极形态不是一个简单工具,而是: * 一个长期运行的后台守护系统 * 一个具备情境感知能力的桌面助手 * 一个拥有轻量人格的陪伴型 AI 它不会干扰工作。 但它会存在。 --- # 六、当前进度总结 已完成: * 核心调度系统 * 配置驱动任务 * 托盘常驻 * 异步架构 正在进行: * UI 可视化方案设计 * AI 接口抽象 下一步: * 实现桌面悬浮窗口 * 接入基础 LLM API --- # 七、为什么要做这个项目? 因为我发现: 健康不是“知道该做什么”, 而是需要一个系统长期提醒你。 而陪伴也不是“热闹”, 而是一个持续存在的反馈体。 HGuard 试图把这两件事结合起来。 这是一个长期项目。 它不会一蹴而就。 但它会持续进化。 ```