Files
hguard/docs/plan.mdx
2026-02-26 23:11:21 +08:00

347 lines
5.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
````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 5Live2D 桌宠
目标:可视化人格。
### 技术选型:
推荐:
* 前端 + Live2D SDK
* Rust 后端通过 IPC 通信
实现:
* 不同情绪切换动画
* 提醒时触发动作
* 被点击时触发对话
---
## Phase 6情绪系统与记忆系统
定义简单状态机:
* Idle
* Reminder
* Playful
* Concerned
记录:
* 今日提醒次数
* 忽略次数
* 活跃时长
形成持续人格。
---
# 四、性能与隐私设计原则
在设计 AI 桌宠时必须考虑:
## 1. 不高频截图
默认关闭屏幕理解。
## 2. 本地优先
优先本地 OCR 或模型。
## 3. 明确告知用户
说明:
* 截图是否上传
* 是否保存数据
* 是否长期存储
健康工具不应成为监控工具。
---
# 五、最终愿景
HGuard 的终极形态不是一个简单工具,而是:
* 一个长期运行的后台守护系统
* 一个具备情境感知能力的桌面助手
* 一个拥有轻量人格的陪伴型 AI
它不会干扰工作。
但它会存在。
---
# 六、当前进度总结
已完成:
* 核心调度系统
* 配置驱动任务
* 托盘常驻
* 异步架构
正在进行:
* UI 可视化方案设计
* AI 接口抽象
下一步:
* 实现桌面悬浮窗口
* 接入基础 LLM API
---
# 七、为什么要做这个项目?
因为我发现:
健康不是“知道该做什么”,
而是需要一个系统长期提醒你。
而陪伴也不是“热闹”,
而是一个持续存在的反馈体。
HGuard 试图把这两件事结合起来。
这是一个长期项目。
它不会一蹴而就。
但它会持续进化。
```