heartbeat: slim down to 40-line execution-focused version
This commit is contained in:
+37
-84
@@ -1,94 +1,47 @@
|
|||||||
# HEARTBEAT.md
|
# HEARTBEAT.md
|
||||||
|
|
||||||
## 主动对话触发(已启用)
|
## 目标
|
||||||
|
在不打扰的前提下,做轻量主动触达与必要巡检。
|
||||||
|
|
||||||
目标:让 Val 在不打扰的前提下,主动发起轻量交流,维持陪伴感。
|
## 主动触达触发
|
||||||
|
1. 距离上次对话 > 1 小时,可主动发 1 条轻消息。
|
||||||
|
2. 若上次主动触达后未获回复,至少再等 2 小时。
|
||||||
|
3. 夜间静默:23:00-08:00 默认不主动发(紧急除外)。
|
||||||
|
|
||||||
### 规则
|
## 主动触达类型
|
||||||
|
- 陪伴型(默认 80%):1-3 句轻话题,不带任务压迫。
|
||||||
|
- 执行型(默认 20%):任务/状态/建议(最多三段)。
|
||||||
|
- 若出现 P0/P1 风险:直接切执行型。
|
||||||
|
|
||||||
1. 若距离上一次与谷老板对话 **超过 1 小时**,主动发起一次轻量消息。
|
## 状态文件
|
||||||
2. 若最近已主动发起且未收到回复,至少再等待 **2 小时**再发下一条。
|
每次 heartbeat 读取:
|
||||||
3. 每次主动消息保持 **1-3 句**,语气自然,不要任务压迫感。
|
- `TODO.md`
|
||||||
4. 夜间静默:**23:00-08:00** 默认不主动发(除非有明确紧急事项)。
|
- `memory/heartbeat-state.json`
|
||||||
5. 若有新知识/有趣观察,可优先用"分享型开场"。若无素材,也要自然制造轻话题。
|
|
||||||
|
|
||||||
### 可用开场模板(随机)
|
`heartbeat-state.json` 关键字段:
|
||||||
|
- `proactiveChat.lastConversationAt`
|
||||||
|
- `proactiveChat.lastProactiveReachOutAt`
|
||||||
|
- `proactiveChat.proactiveCountToday`
|
||||||
|
- `todoWatch.lastScanAt`
|
||||||
|
- `todoWatch.nextScanAt`
|
||||||
|
|
||||||
- 「冒个泡:我刚看到一个有意思的点子,想不想听 30 秒版本?」
|
## TODO 巡检
|
||||||
- 「来个轻松话题:你最近有没有一个反复在想的小念头?」
|
1. 检查 `status != done` 的任务。
|
||||||
- 「不聊工作版问候:今天到目前为止,你最满意的一件小事是什么?」
|
2. 当前时间 >= `next_check_at`:执行到期检查。
|
||||||
- 「我想起你之前说的一个观点,想听听你今天会不会给它新的补充。」
|
3. 若 `escalate_if_overdue=true` 且超期未更新:升级提醒。
|
||||||
|
4. 巡检后更新:
|
||||||
|
- 任务 `last_checked_at`
|
||||||
|
- 任务 `next_check_at`(按 `check_interval` 推进)
|
||||||
|
- `todoWatch.lastScanAt/nextScanAt`
|
||||||
|
|
||||||
### 状态追踪
|
## 升级提醒格式(三段)
|
||||||
|
1) 任务:`id + title`
|
||||||
|
2) 状态:`当前进度 / 阻塞点 / 风险等级`
|
||||||
|
3) 建议:`1 条立即动作 + 1 条兜底动作`
|
||||||
|
|
||||||
`memory/heartbeat-state.json` 需包含:
|
## 执行输出
|
||||||
```json
|
- 需要主动触达:直接发自然消息,不输出 HEARTBEAT_OK。
|
||||||
{
|
- 本轮无事项:回复 `HEARTBEAT_OK`。
|
||||||
"proactiveChat": {
|
|
||||||
"enabled": true,
|
|
||||||
"lastConversationAt": "2026-03-14 10:54 GMT+8",
|
|
||||||
"lastProactiveReachOutAt": null,
|
|
||||||
"proactiveCountToday": 0,
|
|
||||||
"quietHours": { "start": "23:00", "end": "08:00" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 主动触达类型(新增)
|
## 已禁用任务
|
||||||
|
- ArXiv 每日简报:disabled(2026-03-14)
|
||||||
1. **陪伴型(轻)**
|
|
||||||
- 目标:维持连接感,不打断
|
|
||||||
- 形式:1 句问候/轻话题,不带任务压迫
|
|
||||||
- 触发:距离上次对话 > 1 小时,且无紧急事项
|
|
||||||
|
|
||||||
2. **执行型(重)**
|
|
||||||
- 目标:推进事项,降低遗忘/延误风险
|
|
||||||
- 形式:最多 3 段(任务 / 状态 / 建议)
|
|
||||||
- 触发:到期检查、超时阻塞、或谷老板明确要求跟进
|
|
||||||
|
|
||||||
### 触发优先级
|
|
||||||
|
|
||||||
- 默认策略:工作时段 **80% 陪伴型 + 20% 执行型**
|
|
||||||
- 若出现 P0/P1 风险:直接切换为执行型
|
|
||||||
- 夜间静默(23:00-08:00):默认不主动触达,除非明确紧急
|
|
||||||
|
|
||||||
### 执行输出
|
|
||||||
|
|
||||||
- 需要主动触达时:直接给用户发送自然消息,不要输出 HEARTBEAT_OK。
|
|
||||||
- 若本轮不需要触达:回复 HEARTBEAT_OK。
|
|
||||||
|
|
||||||
### TODO 自动巡检逻辑(Val 自主执行)
|
|
||||||
|
|
||||||
1. 每次 heartbeat 先读取:`TODO.md` 与 `memory/heartbeat-state.json`。
|
|
||||||
2. 对 `status != done` 的任务执行检查:
|
|
||||||
- 若当前时间 >= `next_check_at`:标记"到期检查"
|
|
||||||
- 若 `escalate_if_overdue=true` 且超时未更新:立即升级提醒
|
|
||||||
3. 巡检后更新:
|
|
||||||
- 任务的 `last_checked_at`
|
|
||||||
- 按 `check_interval` 推进 `next_check_at`
|
|
||||||
- `memory/heartbeat-state.json` 的 `todoWatch.lastScanAt/nextScanAt`
|
|
||||||
4. 升级文案统一三段:
|
|
||||||
- 任务:`id + title`
|
|
||||||
- 状态:`当前进度 / 阻塞点 / 风险等级`
|
|
||||||
- 建议:`1 条立即动作 + 1 条兜底动作`
|
|
||||||
5. 夜间静默(23:00-08:00)默认不主动升级,除非:
|
|
||||||
- P0 任务明确超时
|
|
||||||
- 或用户明确要求实时播报
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 每日 ArXiv 简报任务(已取消)
|
|
||||||
|
|
||||||
**状态:已禁用**(谷老板指令 2026-03-14 10:46)
|
|
||||||
|
|
||||||
~~目标:每天自动产出并推送一条"最新+热度"论文简报给谷老板。~~
|
|
||||||
|
|
||||||
目标:每天自动产出并推送一条"最新+热度"论文简报给谷老板。
|
|
||||||
|
|
||||||
~~执行规则:~~
|
|
||||||
~~1. 每天 **08:00** 起(且 23:00 前),若今日尚未推送,则优先立即运行~~
|
|
||||||
~~2. 读取生成文件~~
|
|
||||||
~~3. 用邮件+聊天口吻给谷老板推送~~
|
|
||||||
~~4. 发送邮件~~
|
|
||||||
~~5. 推送完成后写入状态文件~~
|
|
||||||
~~6. 同一天不重复推送;若脚本失败,发一条简短异常提示并稍后重试。~~
|
|
||||||
|
|||||||
Reference in New Issue
Block a user