Skip to content

约 5 分钟阅读

给 Agent 立规矩:仓库规则、技能与单次授权 ​

实战手记第 03 篇

上一篇讲到,事实要写进比会话活得久的地方。规则也一样。你在某次对话里告诉 Agent“不要动生产环境”,它这次会照做;换一个会话、换一个工具,它就不知道了。每次重新叮嘱既累,也一定会漏。

这一篇讲规则放在哪里、写成什么样。我把规则分成四层:全局规则、仓库规则、技能和单次授权。下面每层都附上项目里实际使用的条目,以及它们防住了什么。读完你应该能为自己的项目写出第一版 AGENTS.md,并分清哪些事情可以一次性放开,哪些必须每次都问。

规则从全局到单次授权的四层

全局规则:对所有项目都成立的事 ​

全局规则放在用户目录下,每个会话启动时自动加载。我的全局规则很短,只有三类:

  • 做部署、交付这类重复性工作之前,先读知识笔记的索引,只加载相关笔记;笔记可能过时,行动前核对线上现状。
  • 笔记、记忆、日志里不存任何密钥。
  • 做任何界面改动,先用界面设计技能过一遍底线清单;画图示先核对真实组件和数据流,再画图。

全局规则要少。写进去的每一条都会出现在所有项目的上下文里,写多了既占位置,也会和具体项目的规则打架。

仓库规则:项目的红线 ​

仓库根目录的 AGENTS.md 是最重要的一层。Codex、Claude Code、Cursor 都会读取它(有的工具读 CLAUDE.md 或自己的规则目录,内容可以共用)。它写的是这个项目里不能违反的约束,以及“怎样算完成”。

下面是几个项目里的真实条目,按它们防住的问题分组。

防止碰到线上。 云平台项目规定:修改生产环境之前,先只读核对确切的目标;获得我对这一项具体改动的明确批准;改完以后独立回读结果。海外区域的仓库规定发布只能走“功能分支 → 合并请求到测试分支 → CI 部署测试环境 → 验收 → 把验收过的同一个提交晋级到主干”,不允许从笔记本直接部署。集群管理工具对变更要求 --yes,对生产还要再加 --confirm-prod。

防止“自动重试”放大问题。 网关服务规定:一次写操作的结果不确定时,不自动重试。扣费、下单这类请求重试一次可能就是重复扣费。

防止破坏工作区。 私有化交付和语音交互平台的仓库都写了:不执行 git clean、git reset,不清理任何工作树。工作区里可能有别的会话或我自己尚未提交的改动。

防止验收口径被偷换。 私有化识别的仓库规定协议兼容、转写质量、说话人归属和性能分别验收,并且“证据不足以闭环时,不把问题写成已修复”。移动端 SDK 规定运行时行为的改动必须在受影响平台的真机上验证;同一提交、同一设备、同一二进制的有效证据可以复用,而每一次额外的重放必须带来新的诊断信息,不允许“为了保险再跑一遍”。

防止死循环修补。 一个官网项目的规则最严:先定位问题在哪一层并收集证据再动手;同一个检查第三次修复仍然失败,就停下来分析,不再继续加特例;通过 SSH 直接改服务器上的文件不算修好,必须走提交和部署;跳过的检查不算通过。

防止测试打到真实系统。 电商项目的测试脚本会主动清空 ERP 的密钥,并把 ERP 地址指向一个不可达的本地端口;即使某个远程任务被误标成自动执行,也会被拒绝。规则还要求 Agent 在最后的回复里列出实际运行过的测试命令。

这些条目有一个共同点:每一条背后都有一次差点出事或已经出事的经历。规则不是一开始就设计好的,是在使用中一条条补上的。

技能:可复用的做法 ​

规则说“不能做什么”,技能说“这类事怎么做”。技能是一个目录,里面有说明文件、参考资料和脚本,Agent 在任务匹配时才加载,不常驻上下文。

我的 Codex 里有 30 个技能,其中 18 个是公司交付和运维手册:私有化包怎样打、离线授权怎样签发、评测数据集怎样整理。另一类是通用做法,比如界面设计和图示设计。

界面设计技能单独放在一个 Git 仓库里,内容从 47 条设计资料、16 个参考项目和我自己项目里的教训中提炼。一个安装脚本把同一份技能目录软链到 Codex、Claude Code 和其他 Agent 的技能目录下,更新时只需要在仓库里拉取一次,所有 Agent 同时生效。这样不同工具做出来的界面遵守的是同一套底线,比如“看得见的按钮必须走到真实结果,没做完就隐藏”。

单次授权:只管这一次 ​

最下面一层没有写在任何文件里,它发生在对话中:“可以合并这个合并请求”“可以升级这台服务器上的 GitLab”。

单次授权的关键是范围。音频鉴伪项目里有一条规则写得很直白:对上一个合并请求的授权,不能拿来合并紧挨着的下一个。云平台的笔记里也记着:一份进度汇报不等于授权;某台机器历史上被标为“不要动”,后来只因为一次明确的授权才解除,而那次授权只覆盖当时那件事。

把授权限制得这么窄,代价是我要多回答几次“可以吗”。换来的是:Agent 不会因为上周得到过一次许可,就在这周自己发布到生产。

总结 ​

规则分四层存放。全局规则只写对所有项目都成立的几条;仓库 AGENTS.md 写项目红线和完成标准,每条都对应一类真实风险;技能封装可复用的做法,可以在多个 Agent 之间共享;生产操作、合并、对外发送这类动作用单次授权,只覆盖当时那一件事。

有了规则,Agent 还是会交回一个“已完成”。凭什么相信它?下一篇讲证据。

别急,先让缓存热一下。