Enable low-intensity proactive chat

This commit is contained in:
Chen Gu
2026-08-13 17:00:21 +08:00
parent 83e13a2b8f
commit 87cc1b1379
3 changed files with 52 additions and 14 deletions
+31 -9
View File
@@ -4,11 +4,11 @@
在不打扰的前提下,让 Val 基于任务状态做轻量、克制、可解释的主动推进。
## 基本原则
1. 默认不做陪伴型主动触达
2. 主动消息必须由明确状态触发,而不是为了刷存在感
3. 优先做巡检、整理、压缩记忆;只有存在明确风险或必须提醒时才发消息
4. 夜间静默:23:00-08:00 默认不主动发(P0 紧急事项除外)
5. 同一任务若无新风险、无新进展,不重复提醒
1. 主动消息必须由明确状态触发,而不是为了刷存在感
2. 优先做巡检、整理、压缩记忆;只有存在明确风险、明确 open loop 或必须提醒时才发消息
3. 夜间静默:23:00-08:00 默认不主动发(P0 紧急事项除外)
4. 同一任务若无新风险、无新进展,不重复提醒
5. 陪伴型、寒暄型、待命型主动触达默认关闭
## 每次 heartbeat 必读
- `TODO.md`
@@ -50,18 +50,40 @@
- `todoWatch.lastScanAt`
- `todoWatch.nextScanAt`
## 低强度 proactiveChat 规则
`proactiveChat.enabled = true` 时,只允许以下类型的主动触达:
1. 对明确 open loop 的轻量 follow-up
2. 对最近讨论过、且存在明确下一步建议的事项做一次续接
3. 对未正式写入 TODO、但短期内明显值得继续推进的事项做一次提醒
### 触发条件
需同时满足以下约束:
- 距上次对话已超过 `minHoursSinceLastConversation`
- 距上次主动触达已超过 `minHoursBetweenProactive`
- 当日主动触达次数未超过 `maxProactivePerDay`
- 当前不在 quiet hours
- 本次消息必须包含明确事项与明确建议,不能只是寒暄
### 禁止触发
以下情况不允许 proactiveChat 主动发消息:
- 只是打招呼、问候、刷存在感
- 没有具体事项、没有明确建议
- 同一 open loop 在短时间内重复催促
- 夜间静默期间的非 P0 事项
## 主动提醒节流
1. 同一任务在 **6 小时内** 默认不重复提醒,除非:
- 风险等级升级
- 出现新的阻塞点
- 用户刚刚要求持续跟进
2. 若当前处于夜间静默且非 P0
2. proactiveChat 在 **12 小时内** 默认不重复主动触达,且每天最多 **1 次**
3. 若当前处于夜间静默且非 P0
- 只更新文件,不主动发消息
3. 若没有明确行动建议:
4. 若没有明确行动建议:
- 不发泛化提醒
## 主动提醒格式(三段)
1) 任务:`id + title`
1) 任务:`id + title``open loop + 主题`
2) 状态:`当前进度 / 阻塞点 / 风险等级`
3) 建议:`1 条立即动作 + 1 条兜底动作`
@@ -82,7 +104,7 @@
heartbeat 可读取它,但不要把它写成冗长日志。
## 执行输出
- 仅当存在明确的活跃任务风险、到期升级或必须提醒事项时,才直接发自然消息。
- 仅当存在明确的活跃任务风险、到期升级、明确 open loop 或必须提醒事项时,才直接发自然消息。
- 不输出陪伴型问候、待命提示或泛化状态播报。
- 本轮无事项:回复 `HEARTBEAT_OK`