我半年前第一次接触“多智能体写代码”,脑子里浮现的画面是几个AI在虚拟白板前吵来吵去、互相review代码。真去跑了一轮才发现,这个画面既对也不对——它们确实会互相讨论、审查、修改,但更像一个各司其职的远程开发团队,有人拆需求、有人写接口、有人测边界、有人管数据库迁移。这篇文章我想完整复盘一下,一个AI多智能体系统是怎么把一句话想法变成一坨能跑的软件的,以及这中间哪些环节真的有用、哪些环节到现在还是个坑。
1. 多智能体与“写软件”这件事的底层逻辑
1.1 为什么单Agent写不了完整项目
先说一个很多人踩过的坑:拿一个ChatGPT式的对话窗口去生成一个完整软件,前三轮还行,到了第五轮就开始前言不搭后语。原因很简单——单个Agent的上下文窗口是有限的,对话越长,早期约定好的变量名、模块边界、数据格式就越容易被“冲淡”。你可以把单个对话窗口看作一个只能记住最近几屏内容的程序员,如果你让他在一个聊天框里同时完成需求分析、架构设计、编写代码、测试、修Bug,还指望他记得自己三小时前定义的那个API函数签名,那他必然崩溃。
我实测过单Agent硬扛一个中型项目:写一个带用户登录、数据看板、定时任务的内部工具,前两轮对话能正确产出项目骨架,从第三轮开始,它开始反复忘记自己定义的数据库字段名,甚至出现“这个接口在另一个文件里已经定义过了但它又定义了一遍”的问题。这就是上下文污染的典型症状。
多智能体的核心价值就在于:让每一段上下文保持短小而聚焦。拆需求的是拆需求的,写接口的是写接口的,跑测试的是跑测试的——每个Agent只在自己的职责范围内做深度推理,需要协作时通过消息传递,而不是把整个项目历史塞进同一个大脑里。本质上,这就是把“一个什么都懂但记不住上下文的全能AI”拆成“一群各司其职、只记自己那摊事儿的专业AI”。
1.2 像团队一样写软件:不只是比喻,是机制
多智能体写代码不是在UI界面上摆几个聊天窗口装样子,它的底层机制是四个字:分工、协商。分工指的是系统把软件开发任务切片——需求拆解、技术选型、模块设计、编码、测试、代码审查、部署脚本,每个切片由专门的Agent承担;协商指的是Agent之间通过结构化消息交换信息,比如“需求Agent”把用户故事交给“架构Agent”,“架构Agent”产出技术方案后再分发给“编码Agent”。
我见过写得比较好的多智能体框架,消息结构一般长这样:
{ "from": "architect", "to": ["coder_backend", "coder_frontend"], "task_id": "T-2027", "type": "implementation_spec", "payload": { "module": "order_service", "api_contract": "...", "data_schema": "..." } }这套结构本质上就是在模拟公司内部的工单系统。每个Agent读到的不是整个项目的全部代码,而是“你负责实现order_service这个模块,API契约如下,数据表结构如下,完成后交给reviewer验证”。这种信息隔离带来的直接好处是:Agent的注意力集中在当前任务上,输出质量明显提升。
从执行层面看,多智能体还有一个单Agent没有的优点——它可以“并行干活”。写后端的不等写前端的,写测试的可以先根据契约写桩代码,数据库迁移的Agent可以同步设计表结构。所有这些任务在传统团队里是串行或者半并行的,但在多智能体系统里,只要任务依赖关系设计得够好,可以真正并发执行,效率会高一大截。
2. 把想法变成需求:Agent团队里的“拆解者”
2.1 需求Agent到底在做一件什么事
任何一个软件项目的第一步都不是写代码,而是把“我想要一个XX软件”这种含糊的愿望,变成一份机器能看懂的任务清单。这个步骤在传统团队里是产品经理和架构师干的活,在多智能体系统里,它由“需求Agent”承担。
我第一次跑多智能体项目时,给系统输入的原始需求只有一句话:“帮我做一个内部项目管理工具,能创建任务、分配人、看进度。”然后需求Agent输出的东西让我有点惊讶——它没有直接跳去写代码,而是先列了一堆反问:
- 任务的优先级和状态流转规则是什么?
- 是否需要多人协作编辑同一任务?
- “看进度”是看列表还是看甘特图?
- 是否需要邮件或消息通知?
- 数据的保留周期是多久?
这其实和真人产品经理的思考路径是一致的。需求Agent在做的本质是一件事:把自然语言模糊意图,转换成可以用验收标准衡量的功能点清单。它内部通常有一个提示词模板,要求模型在写代码之前先输出用户故事、核心角色、功能优先级、边界条件和验收标准。
2.2 从需求到任务拆解的案例拆解
以“内部项目管理工具”为例,我实际跑下来,需求Agent的输出大致被拆成了这些子任务:
| 任务ID | 任务内容 | 产出物 | 验收标准 |
|---|---|---|---|
| T-001 | 用户登录与权限系统 | 登录接口、JWT签发、权限中间件 | 未登录用户访问受限页面时返回401 |
| T-002 | 项目与任务的数据模型 | 数据库表结构、ORM模型 | 支持任务与项目的多对一关联 |
| T-003 | 任务创建与状态流转接口 | RESTful API | 任务状态只能按设定流程流转 |
| T-004 | 前端任务列表与拖拽看板 | React组件、状态管理 | 任务拖拽后状态立即更新并持久化 |
| T-005 | 进度统计与图表展示 | ECharts组件、聚合查询API | 图表数据与数据库聚合结果一致 |
注意,需求Agent并不是一次性把任务拆完就结束。它拆完T-001到T-005之后,还会把任务之间的依赖关系标注出来:T-001是T-002的前置,T-002是T-003和T-004的前置,T-005依赖T-003和T-004的接口完成。这个依赖图就是后续所有Agent协作的执行顺序依据。
2.3 一个实际的坑:需求拆得太粗,后续全乱
这里有个我要特别强调的教训:如果你给需求Agent的原始输入太粗,它拆出来的任务也会跟着粗。我试过一次只给“帮我写个商城”,结果需求Agent输出的任务清单变成了“搭建项目结构、实现商品列表、实现购物车、实现支付接口”,每一项都大到没法直接让编码Agent开工。
后来我把输入改成“帮我写一个B2C商城,支持商品SPU/SKU管理、用户注册登录、购物车、订单流程(待支付-已支付-已发货-已完成)、支付对接用支付宝沙箱”,需求Agent的输出立刻变得可执行。它甚至自己补充了“支付回调幂等处理”“库存扣减需要事务”这种边界细节。
所以这里给所有想上手多智能体的朋友一个建议:**多智能体不是把你的思考负担省掉,而是把你的思考结果更高效地执行掉。**需求输入的质量,决定了整个Agent团队产出的上限。你给的上下文越具体、约束越清晰,需求Agent拆出来的子任务链条就越可靠。
3. 真正的编码主力:编码Agent的拆分与协作方式
3.1 按模块拆Agent,而不是按语言拆Agent
多智能体系统的编码环节,最常见的错误是把Agent按编程语言划分——一个Python Agent、一个JavaScript Agent、一个Go Agent。听起来合理,实际跑起来会发现严重问题:一个业务模块往往同时涉及后端、前端、数据库,按语言拆会让每个Agent都变成“半个模块的负责人”,谁都不对完整的业务逻辑负责。
我实践下来,真正好用的拆分维度是按业务模块或按架构层级。按业务模块拆,就是一个Agent负责“用户管理”从API到数据库再到前端页面的所有代码;按架构层级拆,就是一个Agent负责所有Controller层、另一个Agent负责所有Service层、再一个负责所有数据访问层。这两种方式都比按语言拆更合理,因为Agent内部可以自由选择最合适的语言和框架,只要保证对外接口契约不变就行。
拿我跑过的那个项目管理工具举例,编码Agent的分工是这样的:
- backend-coder:负责Task CRUD、状态流转、用户权限的API实现,技术栈FastAPI + SQLAlchemy
- frontend-coder:负责看板页面、任务列表页、登录页的实现,技术栈React + Redux Toolkit
- database-coder:负责表结构设计、迁移脚本、索引优化,技术栈Alembic + PostgreSQL
三个Agent之间不直接读对方的代码文件,而是通过接口契约协作。backend-coder会先定义好OpenAPI的Schema,frontend-coder根据这个Schema生成TypeScript类型定义和API调用封装,database-coder根据backend-coder的Model定义生成相应的迁移脚本。这种契约先行的模式,大大减少了协作时的无谓沟通成本。
3.2 编码Agent如何避免“各写各的,合不上”
多智能体开发最大的风险,不是单个Agent写不出代码,而是每个Agent写得都对,合在一起就崩。就像三个程序员各自写完模块,联调的时候发现:A把日期格式传成字符串,B在接口里期望的是一个对象,C在数据库里存的时间是UTC,前端拿到的却是本地时间。
为了避免这个问题,成熟的多智能体系统通常会在几个环节加约束:
**第一,统一接口契约层。**所有跨Agent调用的API定义集中存放在一个契约文件里,谁要改接口必须先通知对应消费方,不能悄悄改。这个机制相当于代码仓库里的API变更评审,但由系统强制执行。
**第二,统一风格与代码规范。**lint规则、格式化配置、目录结构约定,这些在项目启动时由“架构Agent”统一定好,所有编码Agent生成的代码自动适配同一套规范。这一点非常有用,我见过没做统一规范的案例,生成的代码里包含三种不同的命名风格,同一个项目里既有snake_case又有camelCase,看着就头疼。
**第三,测试驱动协作。**编码Agent在实现一个新模块时,被要求先产出该模块的契约测试(contract test),然后由测试Agent验证实现是否通过契约测试。这能提前暴露接口不匹配问题,而不是等到联调阶段才炸。
举个实际例子,frontend-coder需要调用backend-coder实现的“更新任务状态”接口。契约文件里约定:
PUT /api/tasks/{task_id}/status Body: { "status": "in_progress" } Response: { "task_id": 1, "status": "in_progress", "updated_at": "2025-..." }backend-coder在实现时必须让接口返回这个结构,frontend-coder在调用时也必须按这个结构传参。如果任何一个环节偏离了,测试Agent会在集成测试阶段报出“响应结构不符合契约”的错误,并自动把错误消息推给对应的Agent去修复。这套机制跑顺了之后,多Agent协作的可靠性会高很多。
3.3 代码质量的最后一道防线:Reviewer Agent
编码Agent写完代码之后,其实还缺一个“具备全局视角”的Agent来审查。单个编码Agent很擅长写自己那个模块的代码,但它往往看不出“自己写的订单接口在并发场景下有超卖风险”这种需要全局业务理解的问题。
Reviewer Agent的作用就是站在代码评审人的视角检查:事务边界是否覆盖了所有涉及写操作的路径、异常处理是否会吞掉关键错误、日志记录是否足够排查线上问题、是否有明显性能隐患(比如N+1查询)。我实测过Reviewer Agent抓出来的两类典型问题:
第一类,接口返回结构不一致。某个编码Agent在“获取任务列表”接口里返回了{ "code": 0, "data": [...] },但另一个编码Agent在“获取任务详情”接口里返回了{ "success": true, "result": {...} }。这种不一致在单Agent生成代码时很容易出现,Reviewer Agent能通过扫描所有接口定义发现。
第二类,缺失事务处理。在“创建订单”这个功能里,编码Agent只写了订单表和库存表的两次写入,但没有放在同一个事务里。Reviewer Agent审查时发现后,会生成一个审查意见:“库存扣减和订单创建必须使用原子事务,建议包裹在async with db.transaction():中”,然后让编码Agent按意见修改。
在这个机制下,代码质量不是靠某一个Agent的“自觉”,而是靠流程上的多重校验。这确实很像真实团队里的Code Review,只不过效率高很多。
4. 让Agent团队跑起来的编排机制
4.1 谁来决定Agent的执行顺序
有了需求拆解的结果和编码分工,接下来要解决的核心问题是:Agent的调用顺序怎么定?总不能所有Agent一拥而上,没依赖关系的任务和必须按顺序执行的任务被混在一起。
我实践下来,编排机制一般有两种实现思路:
一种是基于前文提到的任务依赖图做拓扑排序。需求Agent产出的任务清单里已经标注了“T-001是T-002的前置”,编排器根据这些依赖关系排出一个可执行顺序,然后把相互之间没有依赖的任务放进并行队列,同时运行。这种方式的优点是确定性高、可预期,适合任务边界清晰的场景。
另一种是“规划-执行-反思”的循环模式。系统先由一个规划Agent制定执行计划,然后把计划片段发给执行Agent,执行结果反馈给反思Agent检查,反思Agent发现问题后再重新规划。这个模式听起来很聪明,但实际跑起来会比前一种慢得多,因为它本质上是串行循环,每一步都要等待反馈。
我在项目中采用的是混合模式——大部分任务走拓扑排序的并行执行,少部分高风险任务(比如支付、权限、数据迁移)走单独的反思循环。这样既保证了整体速度,又给关键路径留足了验证空间。
4.2 多Agent协作时的信息共享与“记忆”问题
多智能体真正难解决的地方,不是分工,而是共享记忆。每个Agent的上下文窗口里只装自己的任务说明和部分契约信息,它怎么知道项目里已经有一个工具函数叫format_time,而不是自己再写一个formatDateTime?
目前主流的解决方案是把共享信息存放在一个“项目记忆库”里。这个记忆库可以是集中式的结构化文件(比如项目根目录下的AGENTS.md),也可以是一个向量数据库,存着项目的架构决策、API约定、代码风格规范、已完成模块清单。每个编码Agent在开工前被要求先读取与自己任务相关的记忆片段,完成后把关键产出物回写到记忆库。
我实际使用中,维护好这个记忆库是保证多Agent长期协作不跑偏的基础。刚开始那几次,我没有规范记忆库的更新流程,结果Agent A在记忆库里写了一个旧版本的接口定义,Agent B读到后按错误版本实现了前端,等到集成测试才发现对不上。后来我定了一条硬性规定:**谁修改了接口契约,谁必须在同一次会话中更新记忆库里的对应条目,否则后续流程不允许继续。**加了这条规则之后,接口不一致的错误出现频率大幅下降。
4.3 执行失败处理:Agent也会“卡住”
多Agent系统跑久了,一定会遇到Agent卡住的场景——比如某个编码Agent反复生成有语法错误且无法修复的代码,或者需求Agent拆出的某个任务在现有框架下根本没法实现。
这套系统的容错策略通常是这样的:先给一个“自我修复”的机会,让该Agent根据错误信息重试两到三次;如果还不行,就把问题上升到“管理Agent”,由它决定是换技术方案、调整任务拆解,还是跳过这个功能。管理Agent在系统里的角色相当于技术组长,它不亲自写代码,但能协调资源和排期。
我遇到过一种特别有意思的情况:数据库Agent在实现“任务评论的全文搜索”时,生成了一段基于PostgreSQL的tsvector查询,但项目实际的数据库是MySQL,量级又不支持全文索引的特性差异,导致生成代码反复报错。最后是管理Agent介入,把任务改成“先做简单的LIKE搜索,后续再迁移到Elasticsearch”,才让项目继续推进下去。这类问题在单Agent开发中也会出现,但多Agent系统里的“激活错误”会导致修复链路更长,因此提前在框架里预留降级方案很重要。
5. 一次完整项目的实战复盘:从想法到可运行软件
5.1 我跑的这次项目:输入、过程与成果
为了让大家对整个过程更有实感,我把我最近一次用多智能体系统从零搭建“内部项目工时统计工具”的完整过程放出来。这个工具的原始需求是:“统计团队每个人每周在哪些项目上花了多少小时,能按项目汇总,也能按人查看明细。”
需求Agent处理后的任务拆解:
- 用户与认证模块:支持邮箱密码登录,JWT鉴权,管理员可管理成员。
- 工时录入模块:成员每天可提交“项目+日期+工时+备注”,同一天同一项目只能一条记录。
- 审批与修正模块:管理员可修改成员工时记录,修改需留痕。
- 统计查询模块:按周汇总每人/每项目工时,支持导出CSV。
- 前端界面:登录页、工时段录入页、统计看板页。
这一次,我没有急着让编码Agent开工,而是先看了一下依赖关系:模块4依赖模块2和模块3的完成,模块2和模块1之间没有强依赖,可以并行开发。于是编排器把任务分成了两批:第一批并行跑模块1和模块2,第二批等前两者完成后跑模块3和模块4,模块5安排在整个后端API稳定后启动。
整个跑下来大约耗时,后端四个模块花了12分钟,前端模块花了8分钟,集成测试和修复阶段花了9分钟。相比我手工写这个工具大约需要一整天的工作量,多Agent的提速是明显的,而且生成代码的统一性比我预期的好。
5.2 过程中出现的三个真实问题
当然,整个过程中不是一帆风顺的。我觉得最有分享价值的是这三个问题:
**第一个问题:前端Agent把接口字段名“改”了。**前端Agent拿到后端契约后,发现后端返回的任务对象里有个字段叫spent_hours,它觉得应该叫hours更合适,就直接在前端代码里用了hours。结果集成测试时前端拿不到数据。这里的教训是:契约文件必须是所有Agent的硬约束,前端Agent无权单方面修改契约字段名,只能提交修改申请。
**第二个问题:数据库迁移脚本冲突。**并行开发模块1和模块2时,数据库Agent同时给两个模块添加了表,但迁移脚本基于同一个alembic_version,在合入时发生了版本冲突。后来我调整了策略:所有数据库变更操作改为每次只由一个Agent执行,其他Agent的数据库操作必须等待前一个事务提交。
**第三个问题:统计模块的时区Bug。**后端在统计“本周工时”时,用的是服务器本地时间,而前端页面按用户的浏览器时区展示。结果有同事在UTC+8以外的时区出差,录入的日期在数据库里偏移了一天。这个Bug是Reviewer Agent发现的,它审查代码时注意到后端用了datetime.now()而没有用UTC.now(),于是主动标记出来。这个细节让我很深刻地意识到,Reviewer Agent在全局视角上的价值确实是单Agent难以取代的。
5.3 集成阶段“人机协同”的价值
很多人把多智能体系统想象成全自动的,但实际上,在集成测试和部署环节,人工介入和审查仍然是必要的。我跑完这个工时统计工具之后,并没有直接把生成代码部署上线,而是自己快速过了一遍几个关键环节:
- 检查数据库Schema是否符合预期,索引是否覆盖了高频查询。
- 抽查核心API的鉴权逻辑,确认接口没有绕过JWT验证。
- 看了一眼前端页面,确认不是“数据能跑但界面完全不能用”的状态。
多Agent系统生成的代码更像一个“非常熟练但缺乏常识积累的初级团队”连夜写出来的东西——语法没问题、结构清晰、基础功能能用,但有时候会选择在现实中不太合理的实现。比如这个工具里,前端Agent选择了用两个独立的React页面来处理“录入”和“统计”,而没有用统一的布局框架,导致两个页面风格不太统一。我花了一个小时左右手工调整了样式。
所以我对多智能体项目的定位一直是:**它能帮你完成70%到80%的编码工作量,但剩下的20%到30%,尤其是涉及业务细节理解和边界情况的部分,仍然需要你亲自把关。**这不是说AI不行,而是说工具的正确用法是“用对,但不盲信”。
6. 多智能体开发的实际边界与选型建议
6.1 什么样的项目适合多智能体,什么样的不适合
经过几轮项目实践,我大概摸清了多智能体的能力边界。适合的项目通常有几个特点:需求边界清晰,模块之间依赖较弱,技术栈比较主流,且项目类型有大量类似的开源先例。比如内部管理工具、数据报表系统、简单的电商后端、博客和内容管理系统,这些都是多Agent发挥空间很大的场景。
不太适合的项目也有几类:一是技术细节极其冷门的项目,比如某个小众芯片厂商的嵌入式SDK对接,Agent很难生成准确代码;二是高度依赖业务知识的复杂系统,比如一个需要深入理解供应链算法的ERP模块,Agent生成的方案会“看起来对但用不了”;三是强交互形态需求非常具体的产品,如果对UI细节有像素级要求,让AI默认生成前端页面往往需要大量人工翻工。
我建议判断一个项目是否适合多Agent,就看一个问题:“如果把它拆成10到20个模块,每个模块交给一个刚入职的程序员去实现,他们之间只通过需求文档和接口定义协作,是否可行?”如果可行,那么多Agent就能干;如果连真实初级团队都干不了,多Agent也不可能干好。
6.2 工具选型:从通用框架到垂直方案
选型上,目前市面上的主流方案有两类:一类是通用Agent编排框架,你可以在上面自己定义Agent角色、任务分发规则和消息协议;另一类是垂直场景方案,开箱即用,内置了软件开发相关的Agent配置。
通用框架的好处是灵活,适合喜欢自己掌控细节的开发者。但代价是你会被非常多工程问题缠住:消息队列如何设计、Agent状态如何持久化、失败重试策略如何写、如何控制不同Agent运行时的上下文隔离。第一次使用的人很容易被这些问题拖垮。
垂直方案的好处是快——你只要输入需求描述,系统自己配置好各个Agent角色并开始干活。但代价是当你想自定义某个Agent行为时,可调整的空间不大。而且很多垂直方案为了展示效果,把“生成代码的速度和数量”作为卖点,对代码质量的把关相对粗糙。
我个人的选型建议分三种情况:
| 使用场景 | 推荐方式 | 原因 |
|---|---|---|
| 想快速做原型验证 | 垂直方案 | 从想法到可运行Demo的时间最短 |
| 在真实项目中使用 | 通用框架+自己配置Agent | 效率和可控性之间最容易平衡 |
| 做多Agent机制研究 | 自己搭建底层编排 | 能深入理解消息协议和状态管理的选型影响 |
6.3 我踩过的一些工具链坑
在这块多花一点篇幅,把踩过的工具链问题集中说一下。首先,Agent的并行度不是越高越好。我试过一次同时跑8个编码Agent,结果它们之间因为共享同一个文件结构里的公共文件,产生了大量的写冲突,最后协调成本比串行还高。合理的起步并行数是3到4个。
其次,模型选择在不同Agent身上可以有差异。需求Agent因为要做深度理解,需要更强思考能力的模型;编码Agent优先选代码生成质量高的模型;Reviewer Agent因为要做逻辑审查,也要用理解能力强的模型。这三种Agent用同一个模型不是不行,但会让整体效果有明显的天花板。
还有一种情况也经常被忽视——长期项目的Agent记忆维护。如果你在一个持续迭代的项目里反复跑多Agent,最初的AGENTS.md和项目记忆库会随着版本演化而失真。我自己的做法是每周做一次记忆库整理,删除已废弃的约定,更新过时的接口信息,确保记忆文件反映的是当前代码库的真实状态。否则会出现Agent按照旧约定写出完全无法运行的代码,排查起来比AI不参与还费劲。
6.4 效率对比:多智能体到底比人快多少
这个问题我估计是所有人最关心的。我用同一个“内部项目工时统计工具”分别做过一次手工开发和一次多Agent生成,简单对比如下:
| 对比维度 | 传统人工开发 | 多智能体开发 |
|---|---|---|
| 首次可用版本耗时 | 约1个工作日 | 约45分钟(包含集成测试) |
| 代码完成度 | 高质量,需少量Review | 基础功能完成,需人工审查修复 |
| 接口设计一致性 | 由架构师统一把控 | 由契约文件约束 |
| 边界条件覆盖 | 取决于开发者经验 | 取决于需求输入质量 |
| 部署上线前的改动量 | 小 | 中等(约20%的代码需要微调) |
这个对比不是说多Agent取代程序员,而是说它在“把想法跑成可用软件”这一阶段确实带来了数量级的效率提升。如果一个人同时负责多个工具的迭代,用AI多Agent先跑出初版,再由自己精力聚焦在最重要的业务逻辑和代码审查上,这种组合方式最能发挥价值。我能连续两周把三个内部工具从提案做到能用的状态,靠的就是这套协作模式。
7. 写在最后的几点实用建议
7.1 接受“初版平庸”的认知,把火力放在打磨上
多智能体生成的代码,初版质量大概率是“能用但不够好”的水平。你如果一开始就指望它能生成让你完全满意的代码,大概率会失望。我的建议是转换心态:把多Agent当做一个“无论多累都能秒速产出初稿的初级程序员团队”,你的价值是在它的初稿之上做架构修正和高质量审查,而不是强迫它一步到位。
7.2 小型工具类项目是入门的最佳练手场景
对于还没上手过AI多智能体开发的读者,我建议不要一上来就挑战大型系统。先选一个内部小工具,比如会议室预定、库存登记、个人记账,这类需求没有太多模糊地带、没有太复杂的业务规则,非常适合用来熟悉“需求输入-任务拆解-编码协作-集成测试”的完整循环。等跑顺了两三个小项目,再往中型项目走会稳很多。
7.3 最后给一个最关键的建议
如果你只记住一条建议,我希望是这条:**多智能体的上限取决于你输入需求的质量,而不是模型本身的聪明程度。**花在打磨需求描述上的时间,会在整个执行过程中以“少返工、少冲突、少删代码”的方式回报给你。
我见过不少第一次用多Agent的人,输入“帮我做个共享记账App”就点击生成,然后被生成的代码质量震惊。实际上问题不出在多Agent,而出在需求本身缺少足够的上下文。当你把需求输入细化到“这是一个支持多人共享账本的记账App,场景是家庭和朋友之间AA制记账,要求有账本、成员、消费条目、分账结算四个核心模块,需要微信扫码登录并同步到服务端”时,多Agent系统的表现会完全不一样。
多智能体写软件这件事,说到底是把软件开发的经验、流程和协作规则沉淀成了机器可执行的框架。它不会一夜之间取代开发者,但它确实会改变开发者一天里真正用来敲代码的时间比例。而我写完这个工时统计工具那天最大的感受是:我花在思考要不要做、做哪些功能、边界怎么划的时间,反而超过了看代码的时间。这可能才是未来开发工作应有的样子——人负责想清楚要什么,AI负责把想法变成能运行的软件。