乐于分享
好东西不私藏

OpenClaw实战:AI员工失踪40分钟——四层防护解决AI通知丢失

OpenClaw实战:AI员工失踪40分钟——四层防护解决AI通知丢失

那天,我等了整整四十分钟

那是一个普通的下午。

我盯着协作平台的消息列表,什么也没有。

四十分钟前,我通过 OpenClaw 的 CEO Agent 委派了一个子Agent撰写深度长文。正常二十分钟内能完成。结果打开日志一看——子Agent 18分钟前就做完了

CEO Agent 的会话记录里写着:

"文章已撰写完成,已通知 Wesley。"

已通知 Wesley。但我什么都没收到。

这不是第一次了。这是第七次

以为只是"忘记汇报"——其实是全链路都在失联

一开始我以为只要改改提示词就解决了。直到深入排查,才发现整条任务链路上,每一个环节都可能悄悄断掉

我发了任务,CEO Agent 收到了吗?→ 没有 ACK

CEO Agent 委派了子Agent,我知道吗?→ 没有 DELEGATE 通知

子Agent 执行过程中卡住了?→ 没有 ERROR 告警

子Agent 完成了,CEO 发通知了吗?→ 没有 DONE 通知

从"收到指令"到"任务完成",四个关键节点,我收到信息的次数:

Wesley 发出指令
    ↓
CEO Agent 接收任务     ← 节点1:ACK
    ↓
CEO Agent 委派子Agent  ← 节点2:DELEGATE
    ↓
子Agent 执行中         ← 节点3:ERROR
    ↓
子Agent 完成,CEO 验收 ← 节点4:DONE
    ↓
Wesley 收到通知 ✅

这就是 v2 方案的出发点:从「单点补丁」升级为「全生命周期防护」。

提示词是建议,不是保障

为什么单纯改提示词永远无法可靠解决?

长对话会触发 context 压缩(compaction)。 当对话轮次足够多,OpenClaw 会对历史 context 进行摘要压缩。那些精心设计的"每次收到任务必须 ACK"规则,在压缩中可能变成一句模糊的"要注意汇报"。

更关键的是:当 CEO Agent 在对话里写下"任务完成,已通知 Wesley",从模型视角它觉得自己"已经做了"——但实际上,真正的通知需要显式调用 message 工具触发 API。说"已通知"≠ 调用工具通知。

提示词是建议,不是保障。在 context 压缩面前,再精心的提示词都可能被悄悄抹去。

四层防护体系:全生命周期 Defense in Depth

核心思路:假设 CEO Agent 一定会忘记,然后在系统层面逐层兜底。

L1 — 提示词层:全链路 Standing Order(即时,不可靠)

在团队配置文件(每次会话加载、compaction 不可丢弃)里,增加覆盖四节点的 Standing Order:

收到任何任务,必须在以下4个节点调用 message(action=send) 通知 Wesley:
1. ACK(收到任务)— 立即
2. DELEGATE(委派子任务)— 每次委派时
3. ERROR(异常/超时)— 立即
4. DONE(最终完成)— 验收通过后

❌ 在对话里写"完成了" → 这不是通知
✅ 每个节点都调用 message(action=send) → 这才是通知

定位:最优路径,即时生效,但不可靠

L2 — 监控层:SRE Watchdog 全链路扫描(≤5分钟兜底)

每5分钟扫描一次,完全绕开模型,纯脚本执行:

检查1:开始未 ACK — 扫描最近10分钟内 CEO 收到的任务,没有对应 ACK → SRE 直接发通知

检查2:完成未通知 — 扫描最近20分钟内已完成的子Agent,没有 DONE → SRE 直接发通知

带去重机制,每个任务只通知一次。定位:全链路兜底,高可靠,延迟 ≤5 分钟

L3 — 平台层:Custom Hook 实时检测(≤3分钟)

OpenClaw 支持自定义 Hook,监听 message:sent 事件:

检测到子Agent announce 时,启动 3分钟倒计时

倒计时内 CEO 正常发了协作平台通知 → 清除告警

超时未发 → 记录遗漏事件供 L2 消费

L3 和 L2 联动,两层互补,完整闭环。定位:硬编码兜底,延迟 ≤3 分钟

L4 — 任务层:Cron 内嵌通知指令(源头固化)

每个 Cron 定时任务的 payload 统一携带通知规则:

{
  "message": "{任务内容}\n\n⚙️ 通知规则(强制执行):\n开始前:ACK 通知 Wesley\n完成后:DONE 通知 Wesley\n出异常:ERROR 通知 Wesley"
}

通知指令作为任务描述的一部分,不在 context 压缩范围内。定位:源头植入,从根本上降低 L1 失效概率

防护矩阵全景

Wesley 发出指令 → CEO 收到
    │
    ├──[L1]── CEO 看到 Standing Order → 每节点调用 message ✅(即时)
    ├──[L4]── Cron payload 内嵌通知指令 ✅(源头固化)
    ├──[L3]── Hook 实时检测,3分钟无通知 → 记录遗漏 ✅(≤3分钟)
    └──[L2]── Watchdog 每5分钟全链路扫描 → SRE 直接发通知 ✅(最终兜底)

即使 L1 全部失效,L2/L3/L4 依然保证通知到达,延迟不超过5分钟。

这次学到的5个教训

教训一:问题不是"忘记汇报",而是全链路失联。 任意节点的沉默都会造成焦虑、误判和资源浪费。

教训二:提示词是建议,不是保障。 七次失败才接受这个事实。context 压缩后,行为变得不可预测。

教训三:硬编码永远强于软约束。 Hook 和定时任务 > Cron payload > 团队配置文件 > 口头要求。越靠近系统底层,越不依赖模型行为,越可靠。

教训四:监控必须独立于被监控对象。 让 CEO Agent 监控自己有没有发通知,逻辑上就不可靠。L2/L3 在 CEO Agent 感知之外运行,这正是它们有效的原因。

教训五:Defense in Depth 是 AI Agent 运维的核心原则。 不要追求完美的单一方案,部署多层次、互相独立的保障,让系统在任意一层失效时仍能正常运转。

这对一人公司意味着什么

用 AI Agent 团队,和管理人类团队有一个根本性的不同:

人类员工忘了汇报,你提醒一次,他记住了。AI Agent 忘了,改一百次提示词,它还是可能忘。

不是说 AI Agent 不好,而是它们的"遗忘机制"和人类完全不同——context 窗口会被压缩、被截断。

所以你需要的不是更好的"提醒",而是系统化的工程保障——就像软件工程不靠"程序员应该记得测试"来保证质量,而是用 CI/CD 和自动化测试来强制保障。

这套四层防护上线后,我已经连续收到完整的任务生命周期通知:收到指令有 ACK,委派有同步,异常有告警,完成有 DONE 确认。不是偶尔,是每次。

对一人公司来说,AI Agent 的可靠性不是玄学,而是工程学。

写在最后

让我跳出循环的,不是找到了更好的提示词,而是转变了思维方式:

从「相信模型会遵守规则」→ 「假设模型会违反规则,然后用系统来兜底」。

从「做完要汇报」→ 「全生命周期每个节点都有保障」。

这是做 AI Agent 运维的人,迟早要经历的两次认知升级。希望你能早点经历,少走我走过的弯路。

关注「Wesley AI 日记」,不错过每一次更新。


📚 往期精选

📖 OpenClaw实战:Agent输出总翻车?踩坑30天后找到的几个核心原因

📖 OpenClaw实测:稳定输出——记一个3w星框架如何帮我炼出5条AI管理铁律

📖 OpenClaw实战:记忆架构升级——给AI Agent Teams建一个集体大脑

📖 OpenClaw实战:让AI越变越聪明的秘密——每日复盘,自我进化

📖 OpenClaw 实战:AI Agent 团队从1个扩到8个,再砍回4个的真实原因

📖 给 OpenClaw Agent Team 装上记忆——踩了19天坑,终于搞明白了

📖 AI Agent 说“完成了”,我信了——然后被打脸了

📖 实战复盘:OpenClaw 6人Agent Team险些全军覆没


扫码加入「光锥之内」,看更多真实过程记录