
````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 试图把这两件事结合起来。

这是一个长期项目。

它不会一蹴而就。

但它会持续进化。

```