引言:AI 辅助编码进入"工具碎片化时代"
过去一年,AI 编程工具经历了剧烈洗牌:
- 有人沉迷 Cursor 的 Tab 补全与 Composer 带来的多文件编辑;
- 有人被 Anthropic 的终端神器 Claude Code 极其强悍的推理与自主 Task 执行力征服;
- 还有大量团队基于合规考量,依然全面采购 GitHub Copilot (Codex)。
当个人狂欢走向团队协作,工程化团队迎来了新的灾难:规则资产碎片化。
text
团队规则变更需求
│
├──► 工程师 A 手动改 .cursor/rules/01-arch.mdc (漏了全局标记)
├──► 工程师 B 手动改 CLAUDE.md (忘了加 Lint 命令)
└──► 工程师 C 根本不知道 .github/copilot-instructions.md 存在
│
▼
结果:同一个项目,三个 AI 吐出三种风格的代码,Review 成本暴增!
本文将分享我们在大型工程中落地的 Unified Agent Rules 架构:如何用"单一真实源(SSOT)"模式治理多工具规则链。
一、架构设计:Single Source of Truth (SSOT)
在软件工程中,任何需要手动在两个地方维持同步的数据,终究会产生漂移。配置 AI 规则亦然。
我们确立的设计原则包括:
- 单一输入源(Single Source of Truth): 项目只维护一份人类可读、高聚合度的
AGENTS.md。 - 协议适配层(Adapter Pattern): 针对 Cursor、Claude Code、Copilot 不同的上下文消费协议,通过脚本自动注入特定的 Header 与指令头。
- 静默同步(Zero-Cost Sync): 开发者感知不到工具差异,仅在提交阶段或本地初始化时自动生成端产物。
text
┌────────────────────────┐
│ AGENTS.md │
│ (Single Source of Truth│
└───────────┬────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
[sync-rules.sh] [sync-rules.ps1]
│ │
┌──────────┼─────────────────────────────┼──────────┐
▼ ▼ ▼ ▼
┌─────────┐ ┌───────────────┐ ┌─────────────┐ ┌───────────────┐
│ Cursor │ │ Claude Code │ │ Copilot │ │ Generic LLM │
│ (.mdc) │ │ (CLAUDE.md) │ │(.github/...)│ │ (Custom-API)│
└─────────┘ └───────────────┘ └─────────────┘ └───────────────┘
二、各家 AI 引擎配置适配剖析
各家底层实现不同,导致我们不能直接无脑复制文本:
1. Cursor MDC 协议:元数据驱动
Cursor 的新版 Rules 采用 .mdc 格式,本质是带 Frontmatter 的 Markdown:
markdown
---
description: 领域驱动设计规则
globs: src/features/**/*
alwaysApply: false
---
- 核心差异 :它支持基于
globs做规则动态激活。 - 适配策略 :全局规则设置
alwaysApply: true;局部规范通过生成脚本打入特定目录。
2. Claude Code:环境与命令感知
Claude Code 作为 CLI 运行在宿主环境中,它极度依赖环境命令:
- 核心差异:不仅要规定"怎么写",还要告诉它"怎么跑"(编译、格式化、单测)。
- 适配策略 :在编译脚本中,前置拼接团队标准的
CLI Commands块,再拼接核心架构规范。
3. Copilot Instructions:全局 System 级提示词
- 核心差异:无前置元数据,纯粹作为上下文拼入系统 Prompt。
- 适配策略:直接透传核心规范,避免掺杂过多非标准标记。
三、工程化落地实战
我们在模板库 AI-Unified-Rules-Suite 中沉淀了最小可行性实现(MVP):
规则编译脚本实现(Bash)
bash
#!/usr/bin/env bash
set -eo pipefail
SOURCE="AGENTS.md"
# 1. 适配 Copilot
mkdir -p .github
cp "$SOURCE" .github/copilot-instructions.md
# 2. 适配 Claude Code:注入 CLI 命令头
cat << 'EOF' > CLAUDE.md
# Claude Code Project Profile
- Run Tests: `pnpm test`
- Lint: `pnpm lint`
EOF
cat "$SOURCE" >> CLAUDE.md
# 3. 适配 Cursor:注入 MDC Header
mkdir -p .cursor/rules
cat << 'EOF' > .cursor/rules/01-unified-architecture.mdc
---
description: Unified Architecture & Best Practices
globs: *
alwaysApply: true
---
EOF
cat "$SOURCE" >> .cursor/rules/01-unified-architecture.mdc
echo "🚀 [Unified Rules] 所有工具配置已成功编译对齐!"
嵌入研发工作流
不要寄希望于"自觉",把规则同步做进流水线:
- 方案 A(Git Hook): 使用
husky/lint-staged,在pre-commit阶段检测AGENTS.md变动并执行编译。 - 方案 B(CI 校验): 在 GitHub Actions 增加规则校验 Step,若端产物与
AGENTS.md不一致直接驳回 PR。
yaml
# .github/workflows/verify-rules.yml
name: Verify AI Rules Sync
on: [pull_request]
jobs:
check-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Rule Compiler
run: bash sync-rules.sh
- name: Check for Diff
run: git diff --exit-code || (echo "❌ AI 规则文件未同步,请在本地运行 bash sync-rules.sh 后提交" && exit 1)
四、实践收益与思考
在推行这套机制 3 个月后,团队获得了几点显著收益:
- 零心智负担切换工具:喜欢终端的用 Claude Code,喜欢图形化界面的用 Cursor,生成的代码范式完全统一;
- 规范资产可沉淀、可追溯 :所有的架构演进只看
AGENTS.md的 Git Blame,告别在各种隐藏目录里找配置; - 新成员开箱即用:克隆仓库后,无论装哪个插件,AI 助手的调校都在同一水平线。
开源资源包:
本文提到的完整模版目录结构、跨平台适配脚本(支持 Windows PowerShell 和 Linux Shell)已整理至
AI-Unified-Rules-Suite开箱即用套件中,评论区自取演进!
