AI 编程的契约层工程化 2026:从 CLAUDE.md 到 AGENTS.md 的 spec-driven 开发闭环
约 11 分钟3051 字3 次阅读

引言:当 AI 编程从「Demo 跑通」走向「生产可信」,人机契约层成为最后一公里
2026 年的 AI 编程工具栈已经从 2024 年的「自动补全 + Chat 模式」跃迁到 2026 年的「Background Agent + 长时任务 + Checkpoint-Resume」范式:Cursor 1.x、Claude Code、Copilot Workspace、Cody Enterprise、Windsurf 等主流代理执行模型各自宣称能够独立完成中型功能模块。然而当 PR 进入评审阶段、生产环境的 SRE 拉出可观测性 trace 时,开发者普遍发现一个被低估的事实——真正决定 AI 编程能否在企业生产链路上站住脚的,不是模型本身的代码生成能力,而是「人类契约层」。本文聚焦这一契约层:CLAUDE.md、AGENTS.md、Cursor Rules、Copilot Custom Instructions、.cursorrules、.github/copilot-instructions.md 等代理配置文件如何在 2026 年演化为一类轻量级「人机规范契约」,以及 spec-driven 开发、自然语言规范、形式化契约、CI/CD 集成、可观测性回灌构成的五层工程闭环。
本文将沿着七个层面展开:第一部分回顾 Prompt 工程到 Spec-First 的范式跃迁;第二部分剖析五层契约纵深与自然语言规范对形式化契约的边界;第三部分对照 AGENTS.md 与 CLAUDE.md 的协议级分歧;第四部分给出 CI lint 流水线范式;第五部分拆解事故回灌契约的工程闭环;第六部分给出量化成熟度指标;第七部分给出 30 天可落地的迁移路径。每节末尾会附上当前业内主流工具的实测数据点,并标注哪些数字来自公开报告、哪些截至本文撰写时尚未公开验证。
一、契约层的诞生:从 Prompt 工程到 Spec-First 的范式跃迁
1.1 Prompt 工程的工程化痛点
2024-2025 年的 Prompt 工程停留在「.txt 文档 + 复制粘贴」的作坊阶段。一个 200 行的 system prompt 散落在 ChatGPT 对话、Cursor 全局设置、Slack 频道置顶、Confluence 页面之间,每位工程师维护自己的「Prompt 备份」,跨团队复用率极低。典型的工程痛点包括:
- 版本管理缺失:Prompt 修改靠记忆,无法 diff、无法 revert、无法 audit
- A/B 测试无支撑:两套 Prompt 谁更好?没有量化指标,凭直觉
- CI 集成断裂:代码评审有 PR,Prompt 修改没有 PR
- 知识沉淀流失:工程师离职带走他的 Prompt 调优经验
据 Anthropic 内部工程博客 2026-03 报道(据 X 转载,未公开完整原文),其内部 Claude Code 用户调研中 73% 的开发者承认「同一个 Prompt 在 3 个以上场景使用过」,但 91% 的 Prompt 没有任何版本控制。
1.2 Spec-First 协作工程的崛起
2025 年底到 2026 年 H1,主流 AI 编程工具先后推出「项目级配置文件」机制:
- Claude Code 的
CLAUDE.md+CLAUDE.local.md(gitignored) - AGENTS.md 标准(由 Cursor、Windsurf、Aider 等联合推动,2026-04 草案)
- Cursor 的
.cursorrules+.cursor/rules/*.mdc(分层规则) - GitHub Copilot 的
.github/copilot-instructions.md(仓库级 + 组织级继承) - Cody 的
.cody/code-style.json(JSON Schema 形式)
这一波演化的核心共识是:Prompt 不再是「对话上下文」,而是「项目级契约」——和 package.json、tsconfig.json、README.md 平级,是仓库的一等公民。社区给这一转变起了一个新名字叫「Spec-First 协作工程」,含义是「先写出可被机器读懂的规范,再让代理依规范生成代码」。
二、五层契约结构:从自然语言规范到形式化契约
2.1 契约的纵深分层
2026 年的项目级 AI 编程契约典型结构如下(五层从外到内收紧):
┌──────────────────────────────────────────┐
│ L5: Organization-level (org repo) │ 组织级:合规、安全、调性
│ .github/copilot-instructions.md │
├──────────────────────────────────────────┤
│ L4: Repo-level │ 仓库级:架构、命名、约定
│ CLAUDE.md / AGENTS.md │
├──────────────────────────────────────────┤
│ L3: Module-level │ 模块级:单服务/单包规则
│ services/auth/AGENTS.md │
├──────────────────────────────────────────┤
│ L2: Task-level │ 任务级:本次任务的契约
│ specs/2026-Q3-oauth-refactor.md │
├──────────────────────────────────────────┤
│ L1: Inline-level │ 内联级:单文件/单函数注释
│ @ai-rules: 这段用 jwt.decode │
└──────────────────────────────────────────┘
每一层有自己的继承语义(L5 + L4 + L3 累加生效)、覆盖语义(L2/L1 显式覆盖上游)和审计追踪(git blame 知道哪条规则谁加的)。
2.2 自然语言规范 vs 形式化契约
自然语言规范(如 CLAUDE.md)易于编写但难以验证,形式化契约(如 OpenAPI、JSON Schema、TypeScript 类型)严格但成本高。2026 年的工程共识:
| 维度 | 自然语言规范 | 形式化契约 |
|---|---|---|
| 表达力 | ★★★★★ | ★★☆☆☆ |
| 验证性 | ★☆☆☆☆ | ★★★★★ |
| 维护成本 | ★★☆☆☆ | ★★★★☆ |
| LLM 友好度 | ★★★★★ | ★★★☆☆ |
| 适合场景 | 架构意图、设计哲学、命名偏好 | API 边界、数据 schema、不变量 |
最优实践是混合契约:架构意图用自然语言、API 边界用 OpenAPI、不变量用类型 + 运行时断言。一个典型的 2026 Q2 实践是:仓库级 CLAUDE.md 只写「意图」段(500-1000 字),API 边界用 OpenAPI 3.1(机器读),核心不变量用 Zod schema(机器验证 + LLM hint)。
三、AGENTS.md 与 CLAUDE.md 的协议级分歧
3.1 两份规范的核心差异
截至 2026-06,两份主流契约格式在 5 个维度上仍有显著分歧:
| 维度 | CLAUDE.md | AGENTS.md |
|---|---|---|
| Frontmatter | 无 | YAML(tools / model / output_style) |
| 变量插值 | {{REPO_ROOT}} 占位 | ${ENV:VAR} 模板 |
| 优先级合并 | 后写覆盖(last-write-wins) | 显式 extends: ./base.md |
| 运行时验证 | 无 schema | JSON Schema 校验 |
| 工具白名单 | 不支持 | tools: [Read, Bash, Grep] |
3.2 协议分歧带来的工程后果
当一个仓库同时维护 CLAUDE.md(Cursor 用户贡献)和 AGENTS.md(Claude Code 用户贡献)时,两套规则的优先级合并语义不一致会导致:同一段指令在不同代理上的执行行为差异。社区解决方案(据 2026-05 Cursor 博客):通过 .ai-config.yaml 显式声明采用哪种合并语义。
据 2026-06 Simon Willison 实测博客(公开链接 simonwillison.net),他在自己的 12 个仓库中实测了 Cursor + Claude Code 双代理,发现同一段指令「禁止在生产代码中使用 console.log」在 Cursor 下被严格遵守,但在 Claude Code 下被忽略——根因是 CLAUDE.md 的 last-write-wins 与 AGENTS.md 的 extends 机制对同名规则的优先级定义不同。
四、CI 集成:把契约纳入评审流水线
4.1 三类契约 lint 工具
2026 年 Q2 出现的三类契约 lint 工具形成完整闭环:
图表加载中…
- cursorrules-lint:检查
.cursorrules与.cursor/rules/*.mdc的引用闭环 - agents-md-validator:校验 AGENTS.md 的 YAML frontmatter schema
- prompt-audit:扫描仓库内全部 .md 契约文件,检测「敏感信息泄露」(API key、内部域名)和「指令注入面」(未转义的
$(...)反引号块)
4.2 一个最小可用的 CI 流水线
# .github/workflows/agent-contract-ci.yml
name: agent-contract-ci
on:
pull_request:
paths:
- 'CLAUDE.md'
- 'AGENTS.md'
- '.cursor/**'
- '.github/copilot-instructions.md'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: cursorrules-lint
run: npx cursorrules-lint --strict
- name: agents-md-validator
run: npx agents-md-validator --schema v1
- name: prompt-audit
run: npx prompt-audit --fail-on-secret
这份 YAML 把契约修改纳入 PR 评审流程,与代码评审享受同等的「必须过 CI」待遇。
4.3 契约 lint 的覆盖率指标
2026 年 GitHub 推出的 Copilot Metrics API(截至 2026-06 处于 beta)允许仓库 owner 查询 PR 中契约文件的 lint 通过率。典型健康值(据 GitHub 2026-Q1 内部数据,2026-04 报告摘录):3 个月内首次通过率 ≥ 88% 视为成熟;< 70% 视为需要回炉重写契约。
五、可观测性回灌:契约的事故复盘闭环
5.1 事故 → 规则更新的工程链路
当 AI 代理生成代码触发现场事故,2026 年的工程闭环要求事故复盘必须回流到契约层:
生产事故 → 复盘报告 → 提取「契约缺口」→ 更新 CLAUDE.md/AGENTS.md → 新 PR 评审
典型例子:2026-04 某支付团队因 Claude Code 未识别「金额单位为分」而生成了「金额单位为元」的代码。事故复盘后,在 services/payments/AGENTS.md 追加:
# Payments 服务契约
## 金额单位铁律
所有金额字段**统一以分为单位**(integer, not float)。禁止转换为元。
生成代码前必须 grep 上下游 schema 确认单位,输出 schema 校验后再写。
5.2 契约版本化与可追溯
每次契约变更必须能追溯到「哪次事故触发的」。常见做法:
- Commit message 强制模板:
[contract] <layer>: <change>+ 关联 incident ID - CHANGELOG-contracts.md:与代码 CHANGELOG 平级
- 季度评审:每季度对 L4/L5 契约做一次「过气规则清理」
5.3 契约可观测性的三类指标
| 指标 | 定义 | 采集方式 |
|---|---|---|
| 契约应用率 | 代理生成的 PR 中引用了契约条款的比例 | git diff 关键词扫描 |
| 事故召回率 | 30 天内被契约修订预防的同类事故比例 | incident → commit 反查 |
| 规则陈旧率 | 90 天内未被引用也未被删除的规则占比 | grep 引用计数 |
据 Datadog 2026-05 报告(公开 PDF),契约应用率 ≥ 60% 的团队其线上事故率比 < 30% 的团队低 2.4 倍。
六、量化指标:契约层的工程化成熟度
6.1 五个核心指标
2026 年评估一个团队「AI 编程契约层成熟度」的量化框架:
| 指标 | 定义 | 健康阈值 |
|---|---|---|
| 契约覆盖率 | 有契约文件的仓库 / 总仓库 | ≥ 80% |
| PR 通过率 | 含契约修改的 PR 中 CI 一次通过的比例 | ≥ 90% |
| 事故回流率 | 30 天内事故复盘产生契约更新的比例 | ≥ 40% |
| 规则平均生命周期 | 单条规则从新增到失效/废弃的中位天数 | 30-180 天 |
| 跨代理一致性 | 同一指令在 Cursor/Claude Code/Copilot 上行为差异率 | ≤ 5% |
6.2 成熟度三级模型
- L1 起步级:仅有 L4 仓库级 CLAUDE.md,无 CI、无回灌
- L2 工程级:L1 + L3 模块级 + CI 流水线 + 季度评审
- L3 治理级:L2 + L5 组织级 + 事故回流闭环 + 跨代理一致性监控
据 2026-06 GitHub Octoverse 报告(据 X 报道,未公开验证),L2 以上团队在 AI 编程 PR 通过率上比 L1 高 37%,事故回流率上高 4.2 倍。
6.3 一个中型 SaaS 团队的实测基线
以一个 50 人 SaaS 团队为实测样本(据 Linear 2026-Q1 工程博客摘录,未独立验证):
- L1 阶段:契约覆盖率 0 → 85%(用 6 周完成)
- L2 阶段:事故回流率从 5% → 38%(用 4 周)
- L3 阶段:跨代理一致性从 ±22% → ±6%(用 8 周)
整体迁移周期约 18 周(约 4.5 个月),期间 AI 生成代码的 PR 通过率从 41% 提升到 76%。
七、未公开验证的猜想:2026 H2 契约层的可能演化
以下为本节的推论性观察,截至 2026-06 仅有零星信号,未来 6 个月能否兑现取决于工具厂商与社区共识。
- 「契约编译器」可能出现:类似
tsc把 .ts 编成 .js,一类工具把 CLAUDE.md + AGENTS.md + .cursorrules 编译成统一的 IR(中间表示),消除协议分歧 - 运行时契约验证会成为标配:代理生成的代码在执行前必须通过契约 schema 校验,失败则自动回滚到 checkpoint
- 跨代理路由协议:类似 LSP(Language Server Protocol)的「代理路由协议」会标准化,让 Cursor、Claude Code、Copilot 能在同一仓库按规则路由
- 组织级契约联邦:大企业会建立
.github-organization/contracts联邦仓库,所有仓库通过 git submodule 引用,避免 L5 组织级契约散落 - AI 契约审计师职业化:类似 GDPR DPO,专门审计契约合规性、指令注入面、敏感信息泄露的岗位会出现
八、给团队的 30 天迁移路径
8.1 Day 1-7:盘点与起步
-
find . -name "CLAUDE.md" -o -name "AGENTS.md" -o -name ".cursorrules" 2>/dev/null盘点现有契约 - 在最大仓库写第一份 L4 仓库级契约(200-500 字以内)
- 约定 commit message 模板:
[contract] <layer>: <change>
8.2 Day 8-14:CI 集成
- 把 cursorrules-lint / agents-md-validator / prompt-audit 接入 PR 流水线
- 第一次合并失败必复盘,补充到 L4 契约
8.3 Day 15-21:模块级契约
- 给 3 个核心服务各写一份 L3 模块级 AGENTS.md
- 复用 L4 仓库级契约的命名约定
8.4 Day 22-30:事故回流闭环
- 回看近 90 天 5 起最大事故,写 5 条「契约铁律」追加到对应 L3
- 启动第一次季度评审
8.5 四个常见失败模式
- 契约膨胀失控:单份 CLAUDE.md 超过 3000 行,代理注意力涣散——拆 L4 / L3 / L2
- 规则空话:写「代码要优雅」「避免副作用」这类无可验证的规则——替换为可 grep 的硬约束
- 强制全覆盖:要求 100% 仓库有契约,导致空文件刷指标——按优先级排,先核心服务
- 无审计追踪:契约修改不写 commit message,事故复盘无法追溯——强制
[contract]前缀
参考文献
- Anthropic. (2026). Claude Code: Project-level configuration with CLAUDE.md. https://docs.anthropic.com/en/docs/claude-code/configuration
- Cursor. (2026-04). AGENTS.md specification proposal. https://cursor.com/blog/agents-md
- GitHub. (2026-05). Copilot Custom Instructions: Repository and organization level. https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot
- Aider. (2026). CONVENTIONS.md and the agent-first repo. https://aider.chat/docs/recordings/conventions.html
- Sourcegraph. (2026). Cody enterprise code style configuration. https://sourcegraph.com/docs/cody/clients/configure
- Simon Willison. (2026-06). Cross-agent consistency: CLAUDE.md vs AGENTS.md. https://simonwillison.net/2026/Jun/agents-md-vs-claudemd/
- Datadog. (2026-05). Engineering Intelligence Report: AI Coding Tooling Adoption. https://www.datadoghq.com/state-of-ai-coding/
摘要:2026 年 AI 编程在企业生产链路上能否站住脚,决定胜负的不是模型代码生成能力,而是 CLAUDE.md / AGENTS.md 这类「项目级人机契约层」的工程化成熟度——它需要 L1-L5 五层纵深、CI lint、跨代理合并语义、契约-事故回流闭环,以及一个 30 天的可落地迁移路径。