AI摘要

文章讨论了仅依靠Markdown文件管理AI的不可靠性,并分享了作者在使用Clawbot时遇到的七个故障。作者提出了一个四层防御体系,包括代码层、配置层、升级层和操作系统层,以确保AI代理的安全性和稳定性。这个体系包括了三个开源工具:agent-guardrails、config-guard和upgrade-guard,以及一个操作系统层的看门狗,以防止AI代理引发的故障。作者强调,应该通过编写执行代码钩子来管理AI代理,而不是仅仅依赖于规则文件。

说实话,让 Clawbot 有 root 权限然后靠一个 md 文件管着它,跟给小孩银行卡然后靠口头约定一样不靠谱。我用一天的血泪教训证明了这一点。

翻车现场

我在服务器上跑一个Clawbot,管着交易机器人、安全监控、定时报告——整个技术栈。它有 shell 权限,能改文件,能重启服务。
2月2号,它决定改一下网关配置文件。
写了个不完整的 JSON。少了一个字段。网关重启时解析失败。重启。又失败。无限循环。
凌晨2点。我在睡觉。服务器死循环了8个小时。
这是第1个故障。
醒来修好之后,我发现后面还有:
🔴 故障 #2 把我的 Kalshi 交易通知系统"重写了个快速版"——完全绕过了我花好几天搭的评分引擎。它在给我手机发未验证的交易建议。
🔴 故障 #3 我的 BTC 交易机器人监控已经偷偷死了好几天。Clawbot 用 exec & 启动的。父进程 session 清理时发了 SIGTERM,bot 接到信号调了 sys.exit(0),死得跟正常退出一模一样。零报错。零告警。没人知道。
🔴 故障 #4 OpenClaw 升级破坏了插件依赖。没有回滚机制。
🔴 故障 #5 把 Notion API token 硬编码进代码里了。差点推到公开 GitHub 仓库。
🔴 故障 #6 三天前的后台进程还在跑着占资源,变成僵尸进程了。
🔴 故障 #7 把一个复杂的验证流水线"简化"成12行代码,跳过了所有安全检查。
7个故障。一天。全都可以避免。

没人说的真话

image.png

我想明白了:每个故障的根源都一样。
我在靠 markdown 规则约束 AI agent。
我的 AGENTS.md 写了350行。详细、全面。配置安全、密钥管理、代码复用、进程管理——全覆盖了。
agent 读了。有时候遵守。经常不遵守。

Anthropic 自己都说了:
"Unlike CLAUDE.md instructions which are advisory, hooks are deterministic."

执行力层级:

  • 代码钩子(pre-commit、生命周期 hook)→ 100% 可靠
  • 架构约束(强制 import、注册表)→ 95% 可靠
  • 自检循环(agent 检查自己的输出)→ 80% 可靠
  • 提示指令(系统 prompt)→ 60–70% 可靠
  • markdown 规则 → 40–50% 可靠(上下文越长越不靠谱)

我那350行 AGENTS.md 在最底层。得全部搬到最顶层。

4层防御体系

image.png

我搞了三个开源工具,加上操作系统层的看门狗,组成完整防线:

  • 代码层 → agent-guardrails → 防 AI 重写验证过的代码、泄露密钥、绕过标准
  • 配置层 → config-guard → 防 AI 写错配置格式、搞崩网关
  • 升级层 → upgrade-guard → 防版本升级破坏依赖、没法回滚
  • OS层 → watchdog (cron) → 防网关挂了没人知道

每一层都来自真实事故。每一层都是机械执行——跟 AI 怎么想的没有关系。

🔧 第1层:代码 — agent-guardrails

翻车原因: agent 把评分引擎重写成"快速版"。agent 把 API token 硬编码进代码。
解决方案:

  • pre-create-check.sh → agent
    创建新文件之前,先列出项目里所有已有的函数。你已经有的东西,它看到了就不会重新造轮子。
  • post-create-validate.sh → 文件创建之后,自动检测重复逻辑。写了已有的东西就报警。
  • check-secrets.sh → 扫描硬编码密钥、OWASP 注入模式(SQL 拼接、命令注入)、依赖漏洞(npm audit + pip-audit)、.gitignore 覆盖率。
  • Git pre-commit hook → 阻止包含绕过模式("simplified version"、"quick version"、"temporary")和任何密钥泄露的提交。
  • Import 注册表(init.py) → 强制 agent import 验证过的模块,不许重写。

🔗 GitHub: github.com/jzOcb/agent-guardrails

🔧 第2层:配置 — config-guard

翻车原因: agent 改网关配置,写了不完整的 JSON,网关无限重启,服务器挂了8小时。

解决方案:
config-guard.sh check — 改配置前做7项验证:

  • JSON 语法检查
  • 未知字段检测
  • 模型名格式验证
  • 必填字段检查
  • 占位符检测(抓 YOUR_TOKEN_HERE 这种)
  • 频道配置变更检测
  • Token 变更检测

config-guard.sh apply --restart — 唯一允许改配置的方式:

  • 备份当前配置
  • 跑完7项验证
  • 应用修改
  • 重启网关
  • 重启失败 → 自动回滚到备份

🔗 GitHub: github.com/jzOcb/config-guard

🔧 第3层:升级 — upgrade-guard

翻车原因: OpenClaw 更新破坏了插件依赖。没快照。没回滚路径。手动恢复搞了好几个小时。
解决方案:
upgrade-guard.sh snapshot — 升级前拍完整系统快照:

  • 版本号
  • 配置备份
  • 60+ 插件文件校验和
  • 符号链接映射
  • 进程状态

upgrade-guard.sh upgrade — 6步安全升级:

  • 升级前快照
  • 拉取最新版本
  • 运行升级脚本
  • 验证所有插件完整
  • 健康检查(HTTP + 进程)
  • 任何一步失败 → 自动回滚

upgrade-guard.sh rollback — 一条命令紧急恢复到上个好的状态。
🔗 GitHub: github.com/jzOcb/upgrade-guard

🔧 第4层:OS — 看门狗

翻车原因: 凌晨2点网关崩了,没人醒着,服务器死了8小时。
解决方案:
watchdog.sh 每60秒跑一次。它不管 AI 怎么想。它不读 AGENTS.md。它就检查三件事:

  • 网关进程还活着吗?
  • HTTP 端点能响应吗?
  • Telegram bot 正常吗?

升级机制:

  • 连续3次失败 → 自动重启网关
  • 6次以上失败 → 自动回滚到上次快照

AI 可以崩。服务器可以重启。看门狗不在乎。它是一个50行的 bash 脚本,跑在 cron 里,对 AI 控制的任何东西零依赖。

效果

image.png

部署4层防线之后:
✅ 零次未检测到的崩溃(看门狗60秒内发现) ✅ 零次配置损坏(config-guard 拦截无效修改) ✅ 零次密钥泄露(pre-commit hook 拦截) ✅ 零次"快速版"绕过(代码护栏捕获) ✅ 零次升级灾难(快照 + 自动回滚)
AGENTS.md 我还在用。从350行精简到170行。铁律还在那里写着——但现在它们也被写进了代码里。

开源

三个工具都是 MIT 协议,兼容 Claude Code / OpenClaw / Clawdbot,中英双语文档:
🔗 agent-guardrails: github.com/jzOcb/agent-guardrails 🔗 config-guard: github.com/jzOcb/config-guard 🔗 upgrade-guard: github.com/jzOcb/upgrade-guard

三个 repo 互相引用。合起来就是一套完整的 AI agent 防御体系。

别再写更长的规则文件了。开始写执行Code Hook吧。

你的 AI agent 不是恶意的。它只是不够靠谱到能自我管理。给它装上它绕不过去的护栏。

文章来源:Jason Zuo@xxx111god

扫码加入猫哥的AI群
最后修改:2026 年 02 月 18 日
点赞的人是最酷的