Files
EzVibeR/docs/usage/06-健康提醒.md
Claude Agent 205c57e9b7 Update: Usage
2026-06-20 14:55:47 +08:00

5.5 KiB
Raw Permalink Blame History

06 · 健康提醒

桌宠会按你设定的规则,定时弹气泡 + 弹系统通知Linux 走 notify-sendmacOS/Windows 走 tauri-plugin-notification

1. 默认规则

第一次启动时自动写入三条:

名称 action_type 间隔 优先级 静默时段 用途
remind_water remind_water 90 秒 ⚠️ 0 喝水提醒
remind_stretch remind_stretch 180 秒 ⚠️ 1 伸展提醒
remind_test remind_test 120 秒 9 验证系统通知是否生效

⚠️ 90 秒 / 180 秒是开发用的短间隔。生产请改成 45 分钟 / 60 分钟(即 interval_secs = 2700 / 3600)。否则你会觉得桌宠在"轰炸"你。

改的方法:托盘 → 健康提醒 → 找到那一条 → 改"触发间隔(秒)"。详见 §4。

2. 如何进入「健康提醒」管理面板

右键系统托盘图标 → 「健康提醒」独立窗口800×500可调整大小

每次点都会重建窗口以读取最新配置。

3. 可用的 action_type

UI 下拉里内置 9 种:

action_type 含义 触发时
remind_water 喝水提醒 弹气泡"记得喝水~"等文案 + 通知
remind_stretch 伸展提醒 弹气泡"起来动一动~"等文案 + 通知
remind_eyes 用眼休息 远眺、闭眼等文案
remind_stand 站立提醒 起来走走
greet_morning 早安问候 早上 8-12 点
greet_afternoon 下午好 下午 12-18 点
greet_evening 晚安问候 晚上 18 点后
remind_test 测试通知 不分时段
remind_custom 自定义 不分时段

每种 action_type 都有内置的多套随机文案5+ 条),触发时随机抽一条,不重复。

这套文案存在 brain.rsFallbackCache 里。如果你要新增自定义文案,目前需要改源码(本用户手册不涉及开发)。

4. 新增 / 编辑 / 删除

4.1 新增

「+ 添加提醒」 → 弹窗填表:

字段 必填 说明
名称name 唯一标识,不能跟现有重名;建议用英文 + 下划线
动作类型action_type 上面 9 个之一
触发间隔(秒)interval_secs 两次触发的最小间隔(必须 > 0
优先级priority 0=最高,数字越大越低;同 tick 多个 fire 时不区分
是否启用静默时段quiet_hours_enabled 关掉则 24h 都会触发
静默开始小时 仅启用时 0-23
静默结束小时 仅启用时 0-23不含

确认 → 立即生效(不用重启)。

4.2 编辑

表格里点任意一行的 「编辑」 按钮(内置两条 remind_water / remind_stretch 也可编辑)→ 改完确认 → 立即生效。

💡 编辑支持改名——后端按 old_name 找,更新为新 name。

4.3 删除

「删除」 → 确认 → 立即生效。

⚠️ 内置的 remind_water / remind_stretch 也能删(不会自动恢复)。删了想恢复就在「添加」里手动建一条。

5. 静默时段

举例:晚上 22:00 - 次日 08:00 不打扰

  • quiet_hours_enabled = true
  • quiet_start_hour = 22
  • quiet_end_hour = 8

静默时段内不触发提醒,但计时器会偷偷推进到 80% 间隔。所以静默结束后不会立刻轰炸,而是大约 20% 间隔后补一次。

6. 触发后会发生什么

  1. 60 秒定时循环检查每条 Behavior 距上次触发的时间
  2. 到达间隔 + 不在静默时段 → 标记 should_fire = true
  3. brain.think(action_type, SystemReminder, None)不调 LLM!走 FallbackCache 随机文案
  4. 三个事同时发生:
    • 聊天面板:自动切到「🔔 提醒中心」视图,把这条提醒作为新消息
    • 系统通知弹一个原生通知Linux 通知中心 / macOS 通知中心 / Windows 操作中心)
    • 情绪引擎:注入 TimePasses 事件(不是 reminder 事件本身,但累计推进情绪衰减)

7. 手动触发(验证用)

聊天面板顶部有 🔔 按钮,但那是"跳到提醒中心"不触发

手动触发目前需要从聊天面板没有快捷按钮(已知缺口),但你可以通过临时改短间隔到 5 秒来测试通知。详见 09-常见问题FAQ.md → "怎么手动测一次通知"。

或者调用 Rust 的 trigger_reminder Tauri 命令(开发者向,跳过)。

8. 后端权威

提醒事件流是后端权威

  • 即使前端没启动 / 聊天面板关着,定时器照常跑
  • 提醒消息直接写入提醒中心 jsonl不依赖前端 listener
  • 前端只是被动接收 ezvibe:reminder 事件来切视图
  • 写盘和通知即使前端崩了也会发生

所以不要怕关窗口丢提醒

9. 常见疑问

Q: 怎么关掉所有提醒? A: 把所有行为的 interval_secs 改成超大值(如 99999999),或一条条删掉。当前没有"全局开关"

Q: 改完规则多久生效? A: 后端用 reload_all_behaviors 立即全量替换,当前 tick 就生效。不需要等下一次循环。

Q: 静默时段是按哪个时区算? A: 本地时区(chrono::Local::now().hour())。

Q: 我能用 cron 表达式吗? A: 不能。当前只支持"每 N 秒" + 静默时段。


下一步:07-LLM对话.md