多不同厂家都不同Agent共同管理一个项目的话,怎么约束好?Git仓库还是写agents.md

回复 Erfan 直接给结论:这两者不是二选一,而是上下游配合关系——用 AGENTS.md 统一“软性上下文”,用 Git + Hook(Linter / 单测 / CI)做“硬性防线”。 当团队里有人用 Claude Code、有人用 Codex、有人用 Cursor 或 Devin Desktop 时,光写文档约束不住,因为不同厂家的模型对提示词的遵循度不一样,上下文长了照样乱改。最稳的 Repo 级 Harness(仓库级工程约束)分三步落地: 1. 单一事实源:写一份 AGENTS.md,其他入口软链接过去 现在行业标准是根目录放 AGENTS.md(Codex、Cursor、Devin 等原生支持)。但 Claude Code 默认读 CLAUDE.md,千万别维护两份文件,直接把规范全写在 AGENTS.md 里,然后建软链接(ln -s AGENTS.md CLAUDE.md)或者在 CLAUDE.md 里只写一句 @AGENTS.md 引用。 注意 AGENTS.md 里别写几千字废话,只写三样:怎么跑构建和单测的命令、目录职责边界、绝对不能碰的红线(比如禁止手改自动生成的迁移文件)。如果仓库很大,可以在子目录放局部的 AGENTS.md,按需加载省上下文。 2. 并发与文件冲突约束:Git Worktree + PR 物理隔离 多个不同 ca 同时改一个仓库,最怕在同一个工作区里互相覆盖代码。 硬规矩是“一个 Agent 独占一个 git worktree 和独立分支”。不管是人带着 ca 写,还是后台异步跑的 Agent,都禁止直接推主干,必须走 PR。同时可以在仓库里维护一个共享状态文档(比如 docs/plan.md 或任务看板),让不同 Agent 把各自改动的模块和进度写进去,靠文档同步上下文。 3. 确定性兜底:把规范变成 Hook 和 CI(最关键) 不要指望不同厂家的 Agent 都能乖乖听 AGENTS.md 的话。凡是能用代码检查的规则,一律从文档里拿出来变成 Hook(比如 git pre-commit hook 或各家 ca 的 Edit 后置 Hook): 代码风格、import 顺序、禁止使用的 API,直接写成 ESLint / Ruff 规则或自定义 AST 检查脚本。代码一改完自动触发 Hook 跑 lint 和相关单测,报错直接打回给当前 Agent 重修,过不了 CI 根本合不进主分支。 总结下来就是:AGENTS.md 负责告诉各家 ca“怎么干活最快”,而 Git 分支隔离 + 确定性 Hook 负责保证“谁发疯都弄不坏主干”。