工程边界:Rules、AGENTS.md、Skills、CLI、MCP
发布时间:
最近在推 Codex AI 辅助研发时,发现很多时候在配置工作流时经常混淆 Rules、AGENTS.md、Skills 和 MCP 的概念,这里系统性梳理下。 举一个工程例子,包含了Rules、AGENTS.md、Skills 和 MCP:例如从 Codex接需求、敲代码到最终提 PR,本质上就是一套从上到下的工程控制流。
- Agent 启动后会加载 AGENTS.md 构建常驻指令,当遇到排障或发版等具体问题时,Agent 会通过匹配或显式调用,把沉淀好的 Skills 也就是 SOP 按需加载进来。
- 如果这些方法需要查库或读外部 API,就通过 MCP 协议去调外部资源。如果任务极其庞大,目前还有实验性质的 Multi-agents 机制将任务拆分给不同角色的子 Agent 并行处理。
- 最终任何企图在沙盒外执行的系统命令,都必须经过 Rules 的物理拦截与人工审批。
在 Review 配置时,共性错误是把权限与规范混为一谈。Rules 解决的是底层执行权限问题,即某条系统命令能否在沙盒外运行、是否需要人肉点头,它用 Starlark 语法写死,是绝对的安全基建。而 AGENTS.md 解决的是工程规范问题,比如代码风格和日志标准,例如我们当前项目是基于 uv 的。由于 Codex 对 AGENTS.md 有 32KiB 的合并上限,如果把所有细枝末节都塞进去,不仅会导致模型处理变慢,超出部分还会被静默截断。这就引出了常驻记忆与按需加载的本质区别。AGENTS.md 只做宏观约束,Skills 负责微观方法论。Skills 的核心就在于渐进式展开,系统平时只保留它的元数据,用到时才把具体的 SKILL.md 注入上下文,这就从根源上解决了常驻 Prompt 臃肿导致的逻辑漂移。
而Skills 是 Anthropic 在 2025 年 10 月 16 日官方工程博客里提出的 “Agent Skills”,核心定义就是可被发现、按需加载的文件夹化能力包。Codex 在 12 月跟进了这一规范,并彻底废弃了原有的 Custom Prompts。而 Rules 并没有被废弃,它只是被物理抽离成了沙盒的安全执行层。
而且有时候我们根本不需要 MCP,直接 CLI 是最便捷的,例如 GitHub 这类公共基础设施,GitHub CLI(gh)往往比 MCP 更贴合工程现实。模拟浏览器登录这个同样说明了 CLI 的价值:像 Vercel 的 agent-browser,本质上就是给 agent 用的无头浏览器自动化 CLI,而不是 MCP。所以更稳的做法是:MCP 提供接口形态之一,CLI 也是接口,当工具本身已经成熟到足以当接口用(gh、agent-browser),就让它们以最短路径发挥价值,不必为了看起来更标准而把系统复杂度硬抬上去。
以修复 payments 服务的线上超时问题为例。仓库级别的 AGENTS.md 提前设定了宏观约束,要求修改重试策略前必须用现有 trace 复现并补齐回归测试,同时路由引导 Agent 优先使用 systematic-debugging 这个 skill。命中后引擎加载对应的 SKILL.md,按序执行收集日志、检索代码入口、编写测试、严控重试风暴以及本地验证等步骤。整个 SOP 跑完,当 Agent 试图执行 gh pr view 查阅远程信息并提交代码时,系统的 default.rules 就会强行介入。即使 Skill 里写了允许执行,Rules 依然会触发弹窗要求人工确认,并主动拆解组合命令逐条过检以确保安全底线。
目前各家 IDE 对这些概念的底层实现并不统一。一个新的项目,咱们人类第一眼看 REAMDE,大模型看AGENTS.md 这个是规范了,Skills 大家也基本都一样采纳。
但是,但是,但是。 Rules完全是一个字:乱。Codex 里是执行拦截层,全部都是prefix_rule,是 Starlark 写的沙盒执行闸门。在 Cursor 里,它是放 .cursor/rules/ 下的上下文提示词(类似 MDC 规范);在 Claude Code 里,它是 .claude/rules/下的持久化偏好。
工程实践是必须落地几条硬性架构约束。首先必须清理现有臃肿的 AGENTS.md,剥离冗长的自定义提示词,只留核心红线和高频 Skill 路由。其次所有代码审查、特定模块排障和发版检查清单,必须全部重构为按需加载的 Skills。最后高风险操作的控制权必须全部交还给 Rules,不要指望在 Prompt 里用自然语言警告 AI 了,强大的工具需要清晰的架构规矩来驾驭,在系统控制权上不能有任何侥幸心理。