5.5 KiB
06 · 健康提醒
桌宠会按你设定的规则,定时弹气泡 + 弹系统通知(Linux 走 notify-send,macOS/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.rs的FallbackCache里。如果你要新增自定义文案,目前需要改源码(本用户手册不涉及开发)。
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 = truequiet_start_hour = 22quiet_end_hour = 8
静默时段内不触发提醒,但计时器会偷偷推进到 80% 间隔。所以静默结束后不会立刻轰炸,而是大约 20% 间隔后补一次。
6. 触发后会发生什么
- 60 秒定时循环检查每条 Behavior 距上次触发的时间
- 到达间隔 + 不在静默时段 → 标记
should_fire = true - 调
brain.think(action_type, SystemReminder, None)— 不调 LLM!走 FallbackCache 随机文案 - 三个事同时发生:
- 聊天面板:自动切到「🔔 提醒中心」视图,把这条提醒作为新消息
- 系统通知:弹一个原生通知(Linux 通知中心 / macOS 通知中心 / Windows 操作中心)
- 情绪引擎:注入
TimePasses事件(不是 reminder 事件本身,但累计推进情绪衰减)
7. 手动触发(验证用)
聊天面板顶部有 🔔 按钮,但那是"跳到提醒中心",不触发。
手动触发目前需要从聊天面板里没有快捷按钮(已知缺口),但你可以通过临时改短间隔到 5 秒来测试通知。详见 09-常见问题FAQ.md → "怎么手动测一次通知"。
或者调用 Rust 的
trigger_reminderTauri 命令(开发者向,跳过)。
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。