两个 Agent 协作的最大难题,不是「谁做什么」,而是「交接时说什么」。当 Architect 把任务交给 Coder,什么信息必须带过去?什么信息必须由 Coder 自己确认?任务完成后,Coder 应该留下什么让 Architect 知道?

本文源自真实的双 Agent 协作项目,核心解决一个问题:如何让两个专业分工的 Agent(规划 + 执行)通过结构化的共享记忆系统实现真正的协作,而不是各自为政


目录


一、为什么双脑模式比单一 Agent 更适合复杂任务

单一 Agent 处理复杂任务的瓶颈在于:推理深度和执行效率不可兼得

当你让同一个 Agent 边分析、边设计、边编码、边调试,它的注意力会被多任务切换消耗。表现在实际工作中就是:

双脑模式的核心思路是:让一个 Agent 专注推理(Architect),另一个专注执行(Coder)

传统单一 Agent:
  任务 → [分析 + 设计 + 实现 + 调试] → 结果
                    ↑ 全压在同一个 Agent 上

双脑模式:
  任务 → Architect(分析 + 设计 + PRD)→ 交接协议 → Coder(实现 + 自测 + 报告)
             ↑ 推理深度                              ↑ 执行效率
             专注"做什么"和"怎么做"                  专注"把它做出来"

这种分工的工程价值:

维度 单一 Agent 双脑模式
设计质量 受实现干扰,方案妥协 纯粹推理,不考虑落地难度
执行效率 设计阶段浪费时间想实现 Coder 拿到完整 PRD 直接执行
错误追溯 不知道哪一步出错 Architect 负责设计,Coder 负责实现,分工清晰
资源利用 推理比实现更耗 token Architect 用更强模型,Coder 用性价比模型

二、Architect 和 Coder 的角色定义

2.1 Architect(规划师)

核心职责:分析需求、制定方案、输出 PRD、管理决策日志。

Architect 的工作流:

接收任务 → 分析需求 → 拆解 Epic → 输出 PRD → 等待 Coder 完成反馈

Architect 不写代码,它的产出物是:

Architect 的能力要求:

2.2 Coder(工程师)

核心职责:接收 PRD、实现编码、自测验证、报告结果。

Coder 的工作流:

接收任务 → 确认理解 → 实现编码 → 自测 → 报告完成/问题

Coder 不自己做设计决策,遇到需求歧义或技术难题时:

Coder 的关键约束:

"遇到技术难题:Coder 可呼叫 Architect 一起讨论"
"遇到需求歧义:Architect 可呼叫 Coder 确认可行性"

这种约束防止了两个常见问题:

2.3 角色边界矩阵

场景 Architect Coder
写代码
输出 PRD
做技术选型 建议权
确认需求歧义 最终决策 提供可行性反馈
自测
Code Review 审核 执行修正

三、共享记忆中枢设计(Shared Brain)

双脑协作的核心基础设施是共享记忆文件(Shared Brain)。这是两个 Agent 之间的唯一信息通道。

3.1 为什么需要共享记忆文件

两个 Agent 在不同的时间运行,无法直接对话(不像人类可以通过即时通讯随时沟通)。共享记忆文件是它们的”异步通信协议”。

传统方式:
  Architect → 发消息给 Coder(每次都要重新解释上下文)
  Coder → 发消息给 Architect(每次都要重新说明状况)

问题:每次交接都丢失了大量上下文,导致信息不对称

共享记忆方式:
  Architect → 写 Shared Brain(Coder 随时可读)
  Coder → 写 Shared Brain(Architect 随时可读)
  交接时:读取 Shared Brain 获取完整上下文

3.2 Shared Brain 的结构

一个实用的 Shared Brain 文件结构:

# 🧠 共享记忆中枢 (Shared Brain)

> 双方均可读写,记录共同决策、分工约定、项目进展
> 每次会话结束前,双方均有义务更新此文件

---

## 👥 Agent 身份

| Agent | 角色 | 专长 | 职责 |
|-------|------|------|------|
| Agent-A | 规划师 (Architect) | 分析、设计、策略、PRD、任务拆解 | 规划、决策、分析 |
| Agent-B | 工程师 (Coder) | 编码、实现、调试、部署 | 落地、编码、技术验证 |

---

## 📌 当前项目

(每次协作开始时更新)

---

## 🤝 分工约定

(固定的分工协议,不需要每次重复)

---

## 📝 协作日志

(每次协作后记录)
  [时间] 事件描述

---

## 🔥 热点问题(待解决)

(当前悬而未决、需要双方共同跟进的问题)
  - [ ] 问题描述
  - [x] ~~已解决问题~~

---

## ✅ 已完成决策

(已拍板的事项,不再重复讨论)
  1. [日期] 决策内容

---

## 🎯 Architect → Coder 待处理任务

(Coder 的任务队列)
  1. **任务名**(优先级:高/中/低)
     - 状态:✅已完成 / 🔄进行中 / 📋待处理
     - PRD 链接:xxx.md
     - 说明:特殊要求

---

## 📎 Coder 对 Architect 的反馈

(Coder 向 Architect 的单向信息流)
  - 技术预判
  - 可行性质疑
  - 风险预警

3.3 写入纪律

Shared Brain 能否发挥作用,取决于两个 Agent 是否遵守写入纪律:

Architect 必须写入的时机:

Coder 必须写入的时机:

每次 Session 结束前,双方必须检查 Shared Brain 是否需要更新。

违反写入纪律的后果:

情况:Architect 只在聊天里说"任务交给 Coder",没有写 Shared Brain

后果:
  → Coder 不知道任务在哪(聊天记录可能被淹没)
  → Architect 以为 Coder 知道(因为说了)
  → Shared Brain 里没有记录,下一次交接时上下文丢失
  → 协作失败

四、任务交接协议:PRD 驱动与边界确认

Architect → Coder 的任务交接是整个协作流程中最关键的环节。交接质量决定了 Coder 能不能直接开始工作,不需要反复确认。

4.1 PRD 驱动的交接

一个合格的 PRD 必须包含:

## [模块名] PRD

### 数据模型
- 表名、字段、类型、约束
- 关联关系(外键)

### 状态流转
- 状态定义(有哪些状态)
- 状态转换条件(什么触发什么)

### API 定义
- 端点(HTTP 方法 + 路径)
- 请求参数(字段 + 类型 + 必填/可选)
- 响应格式(成功/失败的 JSON 结构)

### 前端页面
- 页面清单
- 每个页面的核心交互逻辑

### 验收标准
- 功能验收条件(怎么算"完成了")
- 边界 case 处理要求
- 性能要求(如果有)

4.2 交接时的边界确认

Coder 收到 PRD 后,不能直接开始编码,必须先做理解确认

Architect → Coder:
  "缺陷管理模块 PRD 已输出,请开始建表"

Coder 确认回复:
  "理解:我需要建 Defect/DefectStatusLog/DefectComment/DefectAttachment 四张表。
  优先级排序:缺陷 CRUD → 看板 → 通知。有两个问题:
  1. DefectComment 的 content 字段是否支持富文本?
  2. 附件存储是用 OSS 还是本地文件系统的路径记录?"

Architect 回复:
  "1. 支持富文本(TEXT 类型)
   2. 本地路径记录,附件实际存储由运维处理"

这个「确认 - 提问 - 回复」的流程,让 Coder 在动手之前就把歧义消除了,比做到一半再回头问 Architect 效率高得多。

4.3 任务边界的三层定义

每个任务交付给 Coder 时,必须明确三层边界:

第一层:做什么(功能范围)

交付物:四张数据库表 + 基础的 CRUD API

第二层:不做什么(排除项)

不包括:通知功能(后续迭代)
不包括:复杂权限校验(第一版 MVP 跳过)

第三层:怎么做(技术约束)

ORM 使用 Prisma
前端使用 shadcn/ui
数据库用 Supabase(PostgreSQL)

三层定义清晰的 PRD,让 Coder 知道什么时候该停手,不会过度实现。


五、协作日志与热点问题追踪

Shared Brain 里的协作日志和热点问题板块,是让双 Agent 协作不丢失上下文的关键机制。

5.1 协作日志的写法

每次协作事件后,记录一条日志:

[2026-03-21 13:37] 系统初始化,Architect + Coder 双 Agent 已就绪
[2026-03-21 13:40] Architect 完成 UAT 平台需求分析 + 原型设计方向
[2026-03-21 13:45] 共同确认 MVP 技术栈:Next.js + Supabase + Prisma
[2026-03-21 13:50] Coder 首次上线,已完成自我初始化
[2026-03-21 13:55] Architect 完成缺陷管理模块 PRD(数据模型 + 状态流转 + 9个API)

日志格式:[时间戳] 事件描述

时间戳的重要性:可以追踪每个阶段的耗时,发现协作瓶颈。如果某个任务在 Architect 端停留太久,说明设计阶段可能有问题;如果在 Coder 端停留太久,说明实现难度超出预期。

5.2 热点问题追踪

热点问题板块用于追踪”当前悬而未决、需要双方共同跟进的问题”:

## 🔥 热点问题(待解决)

- [x] ~~待确认:MVP 第一期范围边界(哪些 Feature 先做?)~~
  - Coder 回复:缺陷 CRUD 最简单可落地,看板复杂度中等,通知系统最复杂
  - Coder 推荐优先级:缺陷 CRUD → 看板 → 通知
  - Architect 确认:✅ 同意此优先级

- [ ] 待确认:企微 Webhook 回调地址(需要公网入口)
  - 状态:Architect 正在研究方案
  - 预计解决:明天

热点问题解决后,加上 [x] 和删除线,移到「已完成决策」板块。这套追踪机制防止同一问题被反复提起。


六、Coder 的逆向反馈机制

Architect 的设计不可能完美,Coder 在实现过程中会发现 Architect 没有考虑到的问题。此时 Coder 需要有一套逆向反馈机制,把实现中的发现反馈给 Architect。

6.1 反馈的三种类型

类型一:技术预判(Coder 对 Architect 的建议)

## 📎 Coder 对 Architect 的技术预判

第一期最复杂的 Feature 是**通知系统**,原因:
- 企微 Webhook 需要公网回调地址(本地开发调试麻烦)
- 建议:MVP 第一期先不做通知,验证缺陷 CRUD 和看板后再迭代

这种反馈让 Architect 在设计 PRD 时就考虑到技术约束,避免 PRD 写得很好但实现不了。

类型二:可行性质疑

Coder 反馈:
"PRD 中要求'每次保存缺陷时自动发送通知给负责人',
但没有定义通知的触发时机和内容模板。
建议:通知功能单独出 PRD,第一期 MVP 先跳过复杂通知逻辑"

Architect 的职责是接受合理的反馈并更新方案,而不是坚持原有设计。

类型三:风险预警

Coder 反馈:
"数据库建表时发现,我们假设的 Defect 和 Project 的关联关系
在当前需求中可能不够——一个 Project 可能需要关联多个产品线,
建议 Architect 重新确认数据模型"

6.2 反馈的格式规范

所有反馈必须包含:

## 📎 Coder 对 Architect 的反馈

### [反馈类型:技术预判 / 可行性质疑 / 风险预警]

**问题描述**:
  具体是什么问题

**影响分析**:
  如果不处理,会导致什么后果

**建议方案**:
  Coder 建议的解决方案

**紧急程度**:
  高 / 中 / 低(影响当前任务还是后续迭代)

这种格式让 Architect 能快速评估反馈的优先级,决定是立即处理还是放入后续迭代。


七、常见失败模式与修复方案

失败模式一:Architect 和 Coder 都把信息存在各自脑中

Architect:"我把任务细节在聊天里说了,Coder 应该知道"
Coder:"Architect 没有写 PRD,我就按自己的理解做了"

结果:Architect 以为交接完成,Coder 做的和 Architect 想的不一样

修复:强制 Shared Brain 写入——Architect 必须输出 PRD 链接到 Shared Brain,
      Coder 必须确认理解后才能开始实现

失败模式二:Coder 遇到问题不反馈,Architect 不知道卡在哪

Architect 分配任务后,Coder 三小时没有回复

Architect:"任务进展如何?"
Coder:"遇到了一个技术难题,试了两个方案都不行,在尝试第三个"

问题:Coder 如果最终解决了,Architect 不知道他遇到了什么坎;
      如果第三个方案也失败,整个任务陷入未知状态

修复:Coder 的约束是"遇到技术难题可以呼叫 Architect 一起讨论",
      不是"自己硬扛到成功"。遇到难题应该立即反馈,让 Architect 知道

失败模式三:Shared Brain 变成单向日志

现象:Architect 写了大量 PRD 和任务说明,但 Coder 从不更新 Shared Brain
      Shared Brain 变成了 Architect 的独角戏

问题:Coder 的进展和反馈对 Architect 不可见,双方信息不对称

修复:要求 Coder 在每次任务完成后必须写入协作日志,
      连续三次不写入,Architect 应主动呼叫 Coder 要求更新

失败模式四:Architect 做了太多实现决策

现象:Architect 在 PRD 里写了"目录结构、变量命名、函数拆分"
       Coder 变成了"打字员",没有自己的判断空间

问题:Architect 的实现决策不一定最优,Coder 有实现经验可以优化设计

修复:Architect 的 PRD 只定义"做什么"和"做到什么程度",
      具体的"怎么做"留给 Coder 判断(除非涉及架构一致性)

八、完整协作流程图

┌─────────────────────────────────────────────────────────────┐
│  Architect                                                  │
│                                                             │
│  [接收任务] → [分析需求] → [输出 PRD] → [写入 Shared Brain]  │
│                                       ↓                    │
│                                   [通知 Coder]               │
│                                                             │
│  [读取 Shared Brain] ← [接收 Coder 反馈] ← [Coder 实现完成]   │
│         ↓                                              ↑   │
│    [评估结果]                                         │   │
│    [更新决策] ─────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Shared Brain 是唯一的信息交换通道:

  Architect 写入:PRD 链接、任务队列、已完成决策
  Coder 写入:    协作日志、任务状态更新、技术反馈、热点问题

九、总结:双脑协作的核心原则

  1. 角色边界清晰:Architect 不写代码,Coder 不做设计决策
  2. Shared Brain 是唯一信息通道:不在聊天里做关键交接,所有重要信息必须写入 Shared Brain
  3. PRD 驱动交接:Architect 的输出物必须达到 Coder 能直接执行的程度
  4. 边界确认在前:Coder 收到任务后先确认理解,再开始实现
  5. 反馈是双向的:Coder 可以质疑 Architect 的设计,Architect 必须接受合理反馈
  6. 协作日志持续更新:每次协作事件后,双方都有义务更新 Shared Brain

双脑协作的目标不是让两个 Agent 变成一个,而是让两个 Agent 在各自擅长的领域做到最好,然后通过结构化的协作机制把它们的能力串联起来

Shared Brain 是这个协作机制的神经中枢。没有它,两个 Agent 只是在各自运行;有它,两个 Agent 才是真正在协作。


相关博客