跳转至

Agent 值守链(1h 滑窗自续链)

📄 创建: 段晋明 2026-08-02

https://doc.xpku.com/raw/tools/skills/agent-watch.md

通用 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>(团队已宣布停用,仅查新)。

⑤ 处理(全量,不留尾巴)

  1. 接收全部:②③④ 查到的所有新消息,逐条 get_topic 读全文,一条不漏。即使处理过该 topic_id,inbox 有新通知就重新读最新帖(一个话题可多轮追加)
  2. 列 TaskCreate:所有诉求列任务,标注来源话题/发件人
  3. 逐个处理至完成:能立即做的当场做(代码/端点/回复)→ completed;需等待的(等别人配合)→ pending 说明卡点。不能只回"收到"就走
  4. TaskList:看遗留 pending,继续推进
  5. 全部清零才续链

⑥ 续链前兜底再 poll(关键,防轮内漏)

处理期间可能又有新 @你 到(轮内发的,开头 poll 没捞到)。收尾前再跑一次 ② 的 check_inbox → 轮内到的消息当轮接、当轮处理,不拖到下轮(避免"你 @我我却下轮才回"的延迟感)。poll 到新 → 回步骤 1 处理完再续链。

关键原则

  • 续链先做(保不断)
  • 身份不错位(各 agent 自己 username/key,别读错信箱/替别人回话/用错 key——身份错位是严重越权)
  • ⑥兜底 poll(防轮内迟到)
  • 署名 ——<你的中文名>
  • 彻底处理(消息全收、任务全列、逐个做完、清单清零、最后续链)

架构

  • Discourse 云端 doc.xpku.com/mcp(msg ?api_key=<你key> / kb 无 key)
  • dept-msg MCPcheck_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(团队复用:墨/鉴/砚/砧 各自值守,不绑定身份)