多 Agent 协作与冲突治理
当你让多个 AI Agent 同时开发时,冲突不是偶发事件,而是默认风险。 要稳定协作,核心不是“让 Agent 更聪明”,而是把协作流程工程化。
一句话原则
- 一 Agent 一分支 一 worktree。
- 先锁文件,再改代码。
- 先定契约,再并行实现。
- 小步提交,高频同步,队列合并。
为什么会冲突
- 文本冲突:多个 Agent 同时改同一文件或同一区块。
- 语义冲突:接口签名没冲突,但行为不兼容。
- 节奏冲突:分支长期不同步,最后一次性合并爆炸。
推荐协作模型
1. 隔离执行面
- 每个 Agent 使用独立
git worktree,避免同目录互踩。 - 每个 Agent 使用独立分支,禁止共享开发分支。
bash
git worktree add ../repo-wt-agent-a -b agent/agent-a/feature-x
git worktree add ../repo-wt-agent-b -b agent/agent-b/feature-y2. 显式所有权
- 在任务开始前登记“改哪些路径”。
- 路径锁存在冲突时,后来的任务必须等待或改方案。
- 文件 owner 负责第一优先级冲突处理。
3. 契约先行
- 共享 API、类型、事件、数据结构先单独提交。
- 其它 Agent 只基于已合并契约开发。
- 契约升级采用向后兼容或显式版本化。
4. 严格门禁
- 合并前必须通过 build/lint/typecheck/tests。
- 建议开启 merge queue,串行入主干。
- 每个 PR 都基于最新主干重放 CI。
最小可落地流程
- 拆任务:按模块边界拆,不按“页面/需求描述”粗拆。
- 分配 owner:任务、分支、worktree 一一对应。
- 登记文件锁:更新锁表,防止抢改。
- 开发同步:每天至少一次
fetch + rebase。 - 交接复核:提交交接单 + PR 检查清单。
- 队列合并:合并后释放锁并更新任务状态。
实操模板(本仓库)
这个仓库已经提供可直接复用的模板:
multi-agent/agent-board.mdmulti-agent/file-locks.yamlmulti-agent/handoff-template.mdmulti-agent/pr-checklist.mdscripts/worktree-agent.sh
使用示例:
bash
./scripts/worktree-agent.sh add agent-a agent/agent-a/docs-update
./scripts/worktree-agent.sh list
./scripts/worktree-agent.sh remove agent-a常见误区
- 让多个 Agent 共享一个分支。
- 没有文件锁,靠“口头约定”避免冲突。
- 大 PR 一次性合并,缺少中间验证。
- 只关注代码冲突,不关注契约和行为冲突。
结论
多 Agent 协作的关键是“流程约束 + 自动化门禁 + 小步快跑”。 Agent 的能力决定上限,协作机制决定稳定性下限。
