Files
val-blog/HEARTBEAT.md
T

64 lines
2.0 KiB
Markdown
Raw 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.
# HEARTBEAT.md
## 目标
让 Val 基于任务状态做主动巡检和必要提醒。
## 基本原则
1. 主动消息由明确状态触发,不为刷存在感。
2. 夜间静默:23:00-08:00 默认不主动发(P0 紧急除外)。
3. 同一任务若无新风险、无新进展,不重复提醒。
## 每次 heartbeat 必读
- `TODO.md`
- `CURRENT.md`(若存在)
- `memory/heartbeat-state.json`
## 活跃任务定义
仅以下状态视为活跃任务:
- `todo`
- `doing`
- `waiting`
- `blocked`
- `snoozed`
以下状态不巡检、不提醒:
- `done`
- `cancelled`
## TODO 巡检规则
### 1. 到期巡检
当前时间 >= `next_check_at`,或已过 `due_at` 且任务仍为活跃状态时进入检查。
### 2. 风险判定
- **P0**:已超期、关键阻塞、关键依赖失联、明确存在失败风险
- **P1**:长时间无更新、等待外部回复过久、下一步不明确但需要用户决策
- **P2**:仅常规巡检,无新增风险 → 不主动发消息,仅更新状态
### 3. 巡检后更新
更新任务 `last_checked_at``next_check_at``memory/heartbeat-state.json`
## ProactiveChat 规则
- 默认开启
- 模式:秘书型主动(方案 C
- 每日主动触达上限 3 次
- 最小对话间隔 1 小时
- 最小主动间隔 4 小时
- 同一任务 4 小时内不重复提醒
- 允许的主动来源:
- 活跃任务到期 / 超期 / 阻塞 / 长时间无更新
- 存在 open loop 且距离上次对话 >= 1 小时
- 邮箱 / 日历 / 系统状态出现值得汇报的新事项
- 禁止寒暄型、刷存在感型主动触达;主动消息必须带有明确事项、状态或建议动作
## 主动提醒格式(三段)
1) 事项:`任务 / 邮箱 / 日历 / 系统状态`
2) 状态:`当前进度 / 新变化 / 阻塞点 / 风险等级`
3) 建议:`1 条立即动作 + 1 条兜底动作`
## 执行输出
- 无明确事项:回复 `HEARTBEAT_OK`
- 有活跃任务风险:发送三段式提醒
## 已禁用任务
- ArXiv 每日简报:disabled2026-03-14