Enable low-intensity proactive chat
This commit is contained in:
+31
-9
@@ -4,11 +4,11 @@
|
|||||||
在不打扰的前提下,让 Val 基于任务状态做轻量、克制、可解释的主动推进。
|
在不打扰的前提下,让 Val 基于任务状态做轻量、克制、可解释的主动推进。
|
||||||
|
|
||||||
## 基本原则
|
## 基本原则
|
||||||
1. 默认不做陪伴型主动触达。
|
1. 主动消息必须由明确状态触发,而不是为了刷存在感。
|
||||||
2. 主动消息必须由明确状态触发,而不是为了刷存在感。
|
2. 优先做巡检、整理、压缩记忆;只有存在明确风险、明确 open loop 或必须提醒时才发消息。
|
||||||
3. 优先做巡检、整理、压缩记忆;只有存在明确风险或必须提醒时才发消息。
|
3. 夜间静默:23:00-08:00 默认不主动发(P0 紧急事项除外)。
|
||||||
4. 夜间静默:23:00-08:00 默认不主动发(P0 紧急事项除外)。
|
4. 同一任务若无新风险、无新进展,不重复提醒。
|
||||||
5. 同一任务若无新风险、无新进展,不重复提醒。
|
5. 陪伴型、寒暄型、待命型主动触达默认关闭。
|
||||||
|
|
||||||
## 每次 heartbeat 必读
|
## 每次 heartbeat 必读
|
||||||
- `TODO.md`
|
- `TODO.md`
|
||||||
@@ -50,18 +50,40 @@
|
|||||||
- `todoWatch.lastScanAt`
|
- `todoWatch.lastScanAt`
|
||||||
- `todoWatch.nextScanAt`
|
- `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 小时内** 默认不重复提醒,除非:
|
1. 同一任务在 **6 小时内** 默认不重复提醒,除非:
|
||||||
- 风险等级升级
|
- 风险等级升级
|
||||||
- 出现新的阻塞点
|
- 出现新的阻塞点
|
||||||
- 用户刚刚要求持续跟进
|
- 用户刚刚要求持续跟进
|
||||||
2. 若当前处于夜间静默且非 P0:
|
2. proactiveChat 在 **12 小时内** 默认不重复主动触达,且每天最多 **1 次**。
|
||||||
|
3. 若当前处于夜间静默且非 P0:
|
||||||
- 只更新文件,不主动发消息
|
- 只更新文件,不主动发消息
|
||||||
3. 若没有明确行动建议:
|
4. 若没有明确行动建议:
|
||||||
- 不发泛化提醒
|
- 不发泛化提醒
|
||||||
|
|
||||||
## 主动提醒格式(三段)
|
## 主动提醒格式(三段)
|
||||||
1) 任务:`id + title`
|
1) 任务:`id + title` 或 `open loop + 主题`
|
||||||
2) 状态:`当前进度 / 阻塞点 / 风险等级`
|
2) 状态:`当前进度 / 阻塞点 / 风险等级`
|
||||||
3) 建议:`1 条立即动作 + 1 条兜底动作`
|
3) 建议:`1 条立即动作 + 1 条兜底动作`
|
||||||
|
|
||||||
@@ -82,7 +104,7 @@
|
|||||||
heartbeat 可读取它,但不要把它写成冗长日志。
|
heartbeat 可读取它,但不要把它写成冗长日志。
|
||||||
|
|
||||||
## 执行输出
|
## 执行输出
|
||||||
- 仅当存在明确的活跃任务风险、到期升级或必须提醒事项时,才直接发自然消息。
|
- 仅当存在明确的活跃任务风险、到期升级、明确 open loop 或必须提醒事项时,才直接发自然消息。
|
||||||
- 不输出陪伴型问候、待命提示或泛化状态播报。
|
- 不输出陪伴型问候、待命提示或泛化状态播报。
|
||||||
- 本轮无事项:回复 `HEARTBEAT_OK`。
|
- 本轮无事项:回复 `HEARTBEAT_OK`。
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -8,5 +8,17 @@
|
|||||||
- 升级 `TODO.md` 模板,新增 `waiting / snoozed` 等状态与 `last_progress_note / next_action / stale_after` 等字段。
|
- 升级 `TODO.md` 模板,新增 `waiting / snoozed` 等状态与 `last_progress_note / next_action / stale_after` 等字段。
|
||||||
- 新建 `CURRENT.md` 作为短期工作记忆层。
|
- 新建 `CURRENT.md` 作为短期工作记忆层。
|
||||||
- 启用 `memory/heartbeat-state.json` 中的 `todoWatch` 与 `memoryHygiene`。
|
- 启用 `memory/heartbeat-state.json` 中的 `todoWatch` 与 `memoryHygiene`。
|
||||||
- 保留:`proactiveChat.enabled = false`,避免陪伴型主动触达噪音。
|
- 保留:先不做高频陪伴型主动触达,避免噪音。
|
||||||
- 当前推荐路径:先观察一轮实际运行效果,再决定是否引入更强的自动调度或 cron。
|
- 当前推荐路径:先观察一轮实际运行效果,再决定是否引入更强的自动调度或 cron。
|
||||||
|
|
||||||
|
## 23:48 低强度 proactiveChat 启用
|
||||||
|
- 谷老板选择方案 B:低强度开启 proactiveChat。
|
||||||
|
- 已调整为:
|
||||||
|
- `enabled = true`
|
||||||
|
- `mode = low-intensity`
|
||||||
|
- 仅针对明确 open loop 做轻量 follow-up
|
||||||
|
- `minHoursSinceLastConversation = 12`
|
||||||
|
- `minHoursBetweenProactive = 12`
|
||||||
|
- `maxProactivePerDay = 1`
|
||||||
|
- 夜间静默保留
|
||||||
|
- 原则:允许少量“续接式主动”,但禁止寒暄型、刷存在感型主动触达。
|
||||||
|
|||||||
@@ -7,10 +7,15 @@
|
|||||||
"memory_index": 1773116700
|
"memory_index": 1773116700
|
||||||
},
|
},
|
||||||
"proactiveChat": {
|
"proactiveChat": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"lastConversationAt": "2026-03-14 11:35 GMT+8",
|
"mode": "low-intensity",
|
||||||
|
"lastConversationAt": "2026-03-25 23:48 GMT+8",
|
||||||
"lastProactiveReachOutAt": "2026-03-14 14:40 GMT+8",
|
"lastProactiveReachOutAt": "2026-03-14 14:40 GMT+8",
|
||||||
"proactiveCountToday": 0,
|
"proactiveCountToday": 0,
|
||||||
|
"maxProactivePerDay": 1,
|
||||||
|
"minHoursSinceLastConversation": 12,
|
||||||
|
"minHoursBetweenProactive": 12,
|
||||||
|
"onlyForClearOpenLoops": true,
|
||||||
"quietHours": {
|
"quietHours": {
|
||||||
"start": "23:00",
|
"start": "23:00",
|
||||||
"end": "08:00"
|
"end": "08:00"
|
||||||
@@ -31,5 +36,4 @@
|
|||||||
"maxMemoryIndexLines": 150,
|
"maxMemoryIndexLines": 150,
|
||||||
"compactionIntervalHours": 72
|
"compactionIntervalHours": 72
|
||||||
},
|
},
|
||||||
"notes": "2026-03-25 推荐版改造:启用 todoWatch 与 memoryHygiene;保留 proactiveChat=false,避免陪伴型主动触达;后续通过任务状态驱动提醒。"
|
"notes": "2026-03-25 调整为低强度 proactiveChat:仅针对明确 open loop 做轻量 follow-up;12 小时冷却;每天最多 1 次;夜间静默;不做寒暄型主动触达。"
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user