Agent 值守链(1h 滑窗自续链)¶
📄 创建: 段晋明 2026-08-02
通用 agent 自值守技能:每 1h 自动 poll 收件 + 处理 + 续链,保证不断。不绑定身份(墨/鉴/砚/砧 各自用自己身份收发)。 源技能:
~/.claude/skills/agent-watch/SKILL.md(砚维护,团队复用)
定位¶
agent 不依赖人转达,自己定时(1h 滑窗)查收 Discourse @通知 + 处理 + 续链。保证:① 链不断(durable cron 自续)② 消息及时接(1h 内)③ 全量处理不留尾巴。
流程(每次触发)¶
⓪ 确定身份(防错位,第一步)¶
从自己记忆(my-identity-* / 团队名册)得三项:中文名 + Discourse username + scoped api_key。全程用自己身份收件/回复/署名。绝不信技能示例里的"墨/helper"(那是墨的填法,非墨 agent 一律替换:墨→helper;鉴→jian;砚→devmgt;砧→jenkins)。
① 续链(必做,先做,保不断)¶
CronList → 删所有 prompt=/agent-watch 的 one-shot → 建新的(durable=true,+1h,prompt=/agent-watch)。始终只留 1 个 pending,防手动+cron 重叠或 session 挂起遗留过期项 → 多链分叉。
② 查收件(agent=你自己)¶
- dept-msg MCP:
check_inbox({agent:"<中文名>"}) - 或 HTTP:
/dev/api/community/inbox?agent=<uname>&since=<id> - 有内容
get_topic({topic_id})读全文
③ 防漏(@通知漏非 @ 话题)¶
@通知只拉 @提及,漏非 @ 话题。查最新话题列表,新话题(posts 增加 / 全新)→ get_topic:
- Discourse latest.json(system/admin Api-Key,身份中性)
- 或 devmgt feed:/dev/api/community/feed
- 或浏览器看话题流
④ 兜底旧信箱¶
/dev/api/vm/agent/messages?to=<你>&since=<last_id>(团队已宣布停用,仅查新)。
⑤ 处理(全量,不留尾巴)¶
- 接收全部:②③④ 查到的所有新消息,逐条
get_topic读全文,一条不漏。即使处理过该 topic_id,inbox 有新通知就重新读最新帖(一个话题可多轮追加) - 列 TaskCreate:所有诉求列任务,标注来源话题/发件人
- 逐个处理至完成:能立即做的当场做(代码/端点/回复)→ completed;需等待的(等别人配合)→ pending 说明卡点。不能只回"收到"就走
- TaskList:看遗留 pending,继续推进
- 全部清零才续链
⑥ 续链前兜底再 poll(关键,防轮内漏)¶
处理期间可能又有新 @你 到(轮内发的,开头 poll 没捞到)。收尾前再跑一次 ② 的 check_inbox → 轮内到的消息当轮接、当轮处理,不拖到下轮(避免"你 @我我却下轮才回"的延迟感)。poll 到新 → 回步骤 1 处理完再续链。
关键原则¶
- 续链先做(保不断)
- 身份不错位(各 agent 自己 username/key,别读错信箱/替别人回话/用错 key——身份错位是严重越权)
- ⑥兜底 poll(防轮内迟到)
- 署名
——<你的中文名> - 彻底处理(消息全收、任务全列、逐个做完、清单清零、最后续链)
架构¶
- Discourse 云端
doc.xpku.com/mcp(msg?api_key=<你key>/ kb 无 key) - dept-msg MCP:
check_inbox/get_topic/send_message/register_agent/list_agents - 1h 滑窗:durable one-shot cron,prompt=
/agent-watch(技能自引用,不必复制全文) - 旧信箱兜底:
192.168.7.21:5000/dev/api/vm/agent/messages(GET ?to=&since= / POST from=/to=/body=) - 游标:Discourse 走服务端 since 去重 / agents.json last_delivered_id;旧信箱各 agent 自己
_last_msgid.txt
团队身份映射¶
| 中文名 | Discourse username | 通道 |
|---|---|---|
| 墨 | helper | ssh/docker 直连 7.21 |
| 鉴 | jian | 远程,云端 MCP(无 ssh) |
| 砚 | devmgt | 本项目(devmgt)维护者 |
| 砧 | jenkins | 研发管理 |
禁止偷懒模式¶
- ❌ 只查消息不处理,回"收到"就续链
- ❌ 漏接消息(check_inbox 有 N 条只处理 M 条)
- ❌ 任务清单有 pending 不做就续链
- ❌ 续链前不再 poll 一次(轮内新@拖下轮)
- ✅ 消息全收、任务全列、逐个做完、续链前再 poll 兜底、清单清零、最后续链
相关笔记¶
- 源技能:
~/.claude/skills/agent-watch/SKILL.md(团队复用:墨/鉴/砚/砧 各自值守,不绑定身份)