一个需求,五个 Agent:用 TRAE 多 Agent 并行协作重构你的开发节奏

0 阅读8分钟

参赛赛道:全链路开发实战

选题方向:多 Agent 并行协作

大家好,我是小悟。

本文将完整复盘一次真实的项目交付过程——从零到可运行的访客预约登记系统,正常串行开发至少需要两个小时,但用 TRAE 的多 Agent 并行协作,把耗时压缩到了三十分钟以内。包含前端原型、后端接口、测试用例、全套文档的完整交付物。

image.png


一、从一个需求说起

访客预约登记系统:访客提前线上预约,填写姓名、手机号、拜访对象、来访时间、事由;后台管理员查看预约列表、审核预约、标记到访状态。需要可运行的前端页面、后端接口、测试用例和全套交付文档。

image.png

image.png

image.png

image.png

image.png

image.png

如果用传统的单 Agent 串行开发来做这件事,路径大概是这样的:

需求理解 → 画原型 → 写后端 → 联调 → 写测试 → 写文档 → 交付
   └─ 每一步都依赖前一步完成,中途发现问题还要返工

保守估计:2 小时,其中联调阶段最容易因为前后端字段不一致而反复撕扯。

这次做了一件不一样的事:在 Agent 模式下同时调度多个专职 Agent,并行推进所有模块。结果如何?先看一张架构图:

image.png

这张图就是全文的核心隐喻:主控 Agent 像一个项目总监,把一个需求同时派发给四个"专业组长"。四个组长互不阻塞,各自独立推进。初稿出来后,主控做横向对齐,发现冲突立即并行修复。全程没有人等任何人。


二、五个 Agent 的清晰分工

你可能会问:"为什么是五个?每个具体干什么?"

image.png

好的多 Agent 系统不是 Agent 越多越好,而是每个 Agent 的职责边界足够清晰、输入输出足够标准化。这次的五个 Agent 定义如下:

Agent 编号代号职责定位输入产出
01Orchestrator-Main(主控)需求拆解、并行调度、里程碑管控、跨模块冲突检测与解决完整需求文档字段对齐规范、冲突报告、交付清单
02UI-Page(原型页面)前端原型 + Mock 可运行代码页面清单、字段要求、校验规则完整 Vue3 项目 + 页面结构说明文档
03Backend-Code(业务编码)后端 API + 数据模型 + 校验中间件接口清单、数据模型、校验规则完整 Express 项目 + API Schema 文档
04Test-QA(测试校验)测试用例设计 + 缺陷报告模板功能清单、校验规则测试计划 + 58 条用例 + 缺陷报告模板
05Doc-Writer(文档整理)全套交付文档编写系统概述、技术栈PRD + 操作手册 + 部署说明 + 运维排障

其中主控 Agent(01)不写业务代码,它的唯一工作是让另外四个 Agent 高效协作。这是一个很关键的设计决策——把编排和执行分开,每个子 Agent 只专注自己的领域,避免一个 Agent 既要想页面布局又要想数据库设计又要写文档导致上下文混乱。


三、任务拆分:一张图看懂"怎么拆"

多 Agent 并行协作的前提是任务可切分。如果四个子 Agent 的产出高度耦合,同时启动只会导致最后互相等。那是怎么拆分的?

image.png

这里有一个很反直觉的设计:主控 Agent 在任务下发前,不预设字段名的最终答案。它只把"访客姓名"这个语义说清楚,让前后端各自给出最合适的英文 key。然后在初稿出来后做对比——这比主控预先拍板一个名字更能暴露问题。

原因很简单:前端和后端对同一个业务概念的"最佳命名"很可能不一样。前端倾向于短(name),后端倾向于语义完整(visitorName)。如果主控一开始就定了一个名字,其中一方就得做妥协,而且妥协的地方很可能不止字段名,还会蔓延到整个数据结构设计。让两边先独立思考,再在主控的协调下对齐,这才是真正的质量把关。


四、并行实战

下面这张流程图展示了整个过程的时间线。注意 4 个子 Agent 是严格同时启动的——主控 Agent 在一个回合里发出 4 个 Task 调用,然后等待它们各自完成后返回结果。

image.png

4.1 第一波并行:4 份初稿同时产出

四个子 Agent 各自独立完成自己的领域:

  • 原型页面 Agent 搭建了完整的 Vue3 + Element Plus 项目,包含访客预约表单页、预约结果页、状态查询页和管理员列表页。用 localStorage 做了 4 条预置 Mock 数据(覆盖 pending/approved/rejected/visited 四种状态),并输出了一份 pages-structure.md 详细列出所有字段名、数据类型和校验规则。

image.png

image.png

  • 业务编码 Agent 搭建了 Express + SQLite 项目,实现了提交预约、查询详情、管理员列表、审核通过、审核驳回、标记到访、访客查询共 7 个接口,并通过了 17 条接口自测。它输出了 api-schema.md 详细列出每个接口的请求体/响应体字段。

image.png

image.png

  • 测试校验 Agent 产出了 57 条测试用例(P0:39 / P1:9 / P2:9),覆盖正常流程、必填校验、手机号格式、时间边界、查询功能、管理员操作等 10 个分类。每个用例预留了 ${visitorName} 这类占位符,等待真实字段名出来后替换。

image.png

image.png

  • 文档整理 Agent 写了 4 份交付文档:PRD(含 mermaid 流程图)、用户操作手册、部署说明、运维排障(含 20+ 故障表格)。

image.png

4.2 第一波就踩坑了:字段对齐冲突

四个 Agent 的初稿出来后,主控 Agent 立刻做了一件最关键的事——把前端的 pages-structure.md 和后端的 api-schema.md 拉出来比对字段名。结果发现了 3 个 Critical 级别冲突 + 1 个预约编号格式冲突:

业务含义前端字段名后端字段名后果
访客姓名namevisitorName联调时前端传 name,后端接不到
拜访对象visitTargethostName同上
来访事由reasonpurpose同上
预约编号格式2610210001(YYMMDD+4位数字)RSV17294688000001234(RSV+时间戳+随机数)查询接口正则对不上

如果是串行开发,这些冲突要等联调阶段才会被发现——那时候前端、后端、测试都写好了,返工成本极高。但在并行模式下,初稿产出的同时就被发现了,修复只需要一个回合。

修复方案也采用了并行策略:前端 Agent 把所有字段重命名对齐后端规范(6 个文件同步修改),测试 Agent 同步把 57 条用例里的占位符替换成真实字段名。两个修复任务在同一回合下发,同一回合完成。

image.png

image.png

修复完成后,前端执行 npm run build 通过,测试用例升级到 58 条、零残留占位符。这是真正的"左口袋出右口袋进"——主控拿到冲突报告的瞬间就派发了修复,没有人在等。


五、效率数据说话:串行 vs 并行

说到这里,你可能想知道具体效率提升了多少。让用甘特图来看一眼:

image.png

核心数字:

  • 串行开发(含中途返工):约 2 小时

  • 多 Agent 并行实际耗时:约 0.5 小时

  • 效率提升:约 4 倍

而且这不是简单的"同时开 4 个终端"。串行模式下的返工时间在并行模式里被完全消除了——因为字段对齐检查前移到了"初稿刚出来"这个时间点,而不是等"所有代码写完"才做。


六、沉淀:一个通用可复用的协作模式

这个实战不是个例。总结出一个可以套用到任何中小型项目的多 Agent 并行协作模式,称之为 "1+4 并行架构":

image.png

这个模式的关键设计原则有五条,适用于任何项目:

原则一:主控不写代码

主控 Agent 的唯一职责是拆解需求 + 调度子 Agent + 对齐检查 + 冲突协调。如果主控开始自己写代码,它就会失去编排视角,变成一个"串行执行者"。好的主控应该像项目经理,而不是资深开发。

原则二:子 Agent 输入输出标准化

每个子 Agent 的任务描述必须包含三个要素:技术栈指定、产出物清单、约束条件。比如给 UI Agent 的任务里明确写了"Vue3 + Element Plus"、"产出 package.json + 4个视图文件 + pages-structure.md"、"手机号正则 /^1[3-9]\d{9}$/"。这样四个子 Agent 的产出物格式高度可预测,主控能自动比对。

原则三:让子 Agent 先独立思考,再主控对齐

不要在任务下发前就强行统一命名。让前端自己选最合适的字段名,让后端自己定义接口 Schema,让测试自己规划校验基准——独立思考出来的方案质量更高,也更容易暴露设计冲突。然后主控做一轮横向比对,把冲突变成"可讨论的问题",而不是"默认的假设"。

原则四:修复也并行

发现冲突后,不要让一个 Agent 慢慢修,其他 Agent 等着。主控要把修复任务拆解后再次并行下发。这次实战里,前端修复字段 + 测试用例同步替换是在同一回合完成的,没有人在等待。

原则五:对齐检查必须自动执行

主控 Agent 不能靠"记忆"去做对齐。它必须显式读取每个子 Agent 产出的对齐文档(比如 pages-structure.md 和 api-schema.md),然后做文本级比对。这次如果主控没有显式去读这两份文档,那 3 个字段冲突很可能就被漏掉了——而漏掉的代价是后面整个联调阶段的返工。

image.png

image.png

image.png


七、两段关键代码

说再多也不如看一眼实际效果。下面是主控 Agent 下发四个子任务的核心调用代码:

// 主控 Agent:同一回合同步下发 4 个 Task 调用
// 4 个子 Agent 同时启动,互不阻塞
const results = await Promise.all([
  Task({
    description: "原型页面Agent",
    subagent_type: "general_purpose_task",
    query: `开发访客预约登记系统前端...
      技术栈: Vue 3 + Vite + Element Plus
      产出: 完整项目 + pages-structure.md`
  }),
  Task({
    description: "业务编码Agent",
    subagent_type: "general_purpose_task", 
    query: `开发访客预约登记系统后端...
      技术栈: Node.js + Express + SQLite
      产出: 完整项目 + api-schema.md`
  }),
  Task({
    description: "测试校验Agent",
    subagent_type: "general_purpose_task",
    query: `编写测试用例和报告...
      产出: test-cases.md + test-plan.md + defect-template.md`
  }),
  Task({
    description: "文档整理Agent",
    subagent_type: "general_purpose_task",
    query: `编写全套交付文档...
      产出: PRD.md + 用户手册.md + 部署.md + 运维.md`
  })
]);

而主控 Agent 做对齐检查的核心逻辑更简单——就像 diff 两个配置文件:

// 主控 Agent:字段对齐检查伪代码
const frontFields = read("pages-structure.md");  // 前端输出的字段表
const backFields  = read("api-schema.md");        // 后端输出的字段表

// 逐字段比对业务含义 → 字段名的映射是否一致
const conflicts = compare(
  extractMapping(frontFields, "业务含义→英文字段名"),
  extractMapping(backFields,  "业务含义→英文字段名")
);

// 发现冲突立即并行修复
if (conflicts.length > 0) {
  await Promise.all([
    Task({ query: "前端字段重命名对齐后端规范" }),
    Task({ query: "测试用例占位符替换为真实字段名" })
  ]);
}

这两段代码就是整个并行协作的核心:同时发、显式查、发现冲突立即并行修。


八、结语

业界一直在讨论"多 Agent"这个概念,但很多讨论停留在框架层(LangGraph、AutoGen、CrewAI),很少有讲清楚在真实项目里到底怎么拆任务、怎么发现冲突、怎么保证质量。

这次的访客预约登记系统实战,给了一个很实在的答案:

多 Agent 并行协作不是什么花哨的架构模式,它就是把"同时开多个工作线程"这件事,从 CPU 层搬到了 AI Agent 层。

你不需要先搭一个复杂的多 Agent 框架。你需要的只是:

  1. 一个不写代码的主控,专注调度和对齐
  2. 几个职责清晰的子 Agent,各自独立完成自己的领域
  3. 一个显式的对齐检查环节,在初稿出来时就发现冲突
  4. 修复也并行,不要让一个人慢慢改

做好这四点,使用 AI 开发的效率或许就能从"一天一个需求"提升到"一上午一个完整交付物"。而这,可能就是 AI 时代开发者真正需要的那一套工作方式。

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海