2026年8月24日,一个看似简单的功能需求,让我彻底改变了工作方式。
任务本身不复杂:为某个SaaS管理后台新增CSV批量导入能力,附带重复数据识别和导入结果汇总。按照老习惯,我打开Claude Code,把需求描述、UI设计稿和现有代码全部塞进去,然后下达指令"把这个功能做出来"。三个钟头过去,功能确实能跑了,但验收环节暴露了4处缺陷:空白文件没有防护、重复判断的规则恰好搞反、某个接口命名前后矛盾、大文件导入时内存直接溢出。当晚我查看账单:18.5美元,消耗了120万token,还搭进去28分钟人工修补。说实话,我不是在修bug,是在给AI收拾烂摊子。
这个经历让我开始琢磨:一个人硬扛全栈会累,那让一个Agent硬扛全栈是不是也会累?如果把需求梳理、系统设计、编码实现、质量审查这四类认知工作拆开,交给不同的模型各自负责一块,效果会不会更好?过去一个月,我实际搭建了一条由Kimi、Claude Code、Codex、DeepSeek组成的最小化多Agent流水线。这篇文章不是理论概念,是我带着具体数字、配置细节和踩坑总结的实战记录。
我此前的用法和许多独立开发者如出一辙:挑一个能力最强的模型,把所有相关信息都丢进去,期望它端到端交付。对于简单的增删改查,这招确实省心。可一旦任务链条拉长,覆盖需求理解、架构规划、编码实现、自我验证这些环节,单个Agent就开始精神分裂。它一会儿扮演产品经理,一会儿是架构师,一会儿又成了程序员和测试员,同一个上下文里挤满了彼此冲突的决策目标。
拿CSV导入这个功能举例,Claude Code前十分钟还在和我确认"重复数据的判定标准用邮箱还是手机号",后十分钟已经跑去纠结React表格的列宽样式;我提醒它补充测试,它又折返回来调整接口命名。最终交付的代码里,接口定义出现三处不一致、一个类型错误、空白文件场景未做处理。我粗略统计了一下:有效交互时间大约110分钟,其中有40分钟完全花在纠正它的理解偏差上,反复强调"我们之前说的不是这个意思"。
我也尝试过用GPT-4.1来做全局统筹,但它在超长上下文中的代码一致性表现更差,成本上也没有竞争力。单Agent方案的根本问题,并非模型智商不够,而是单一上下文里塞入了过多维度的决策。需求梳理需要发散思维,架构规划需要收敛思维,编码实现需要精确思维,代码审查需要批判思维——这四种思维模式天然互斥,硬塞进同一个会话,出问题几乎是必然的。
还有一个容易被忽视的隐性成本。Claude Code在Agent模式下,每次思考都会反复扫描整个项目目录,我那120万token里,将近一半都消耗在重复读取文件上了。18.5美元对个人项目来说不是小数目,但真正让人心累的不是钱,而是精神负担——你得时刻盯着这个"全能助手",防止它偏离方向。
这个阶段我最大的领悟可以浓缩为一句话:一个人硬扛全栈没问题,但别指望一个Agent也能硬扛全栈。 我需要的不是更聪明的模型,而是把任务拆成若干棒次,每一棒交给最合适的选手。
我按照认知角色做了如下拆分:
理想很完美,但第一周我就遭遇了四个大跟头。
第一个坑:交接不等于丢链接。 起初我让Kimi产出一份3000字的PRD markdown文档,直接丢给Codex。结果Codex只扫了一眼标题和代码示例,把"支持10万行CSV"这条非功能性需求给漏了,生成的实现采用了一次性全量读入内存的方式。问题出在交接格式上,而不是模型本身。后来我改用带字段约束的prd.json,每个需求项都有独立ID、优先级、验收标准和性能约束,下游必须逐条确认后才算接收。
第二个坑:每个模型都想动接口。 Claude定的函数签名是parse_csv(file_stream, options),Codex写着写着就改成了parse_csv_buffer(buffer),DeepSeek又建议改回parse_csv(file_stream)但参数的语义已经变了。三天下来,接口文件简直像被轰炸过的战场。最终我引入了接口冻结机制:Claude输出一份interface.lock文件,把函数签名、错误码、数据库字段全部锁死;下游任何一方想改动,必须先写变更理由到handoff.yaml里,触发人工审批流程。
第三个坑:审查者变成了啦啦队。 第一次让DeepSeek做代码审查,我的提示词写得太客气,结果它给出的全是"整体不错,建议继续优化"这类废话。这种审查还不如不做。后来我重写了审查提示词,要求它必须按Severe/Major/Minor三个等级分类问题,Severe级别的必须打回重写。同时我给Codex加上"只修被点名的问题,禁止顺手重构"的约束,否则它会借着修bug的名义改出一堆新问题。
第四个坑:编排框架纯粹是智商税。 我一度被某个开源的Multi-Agent框架吸引,花了两天学习DAG概念、定义工具、配置状态机,最后发现它带给我的核心价值就是帮我调API。对个人开发者和小团队来说,一条线性处理链加两个条件回环就完全够用了。我现在的编排器就是100行Python代码,负责读JSON状态、调用SDK、跑测试、写日志。千万别为了用框架而用框架。
现在的流程是这样运转的:Kimi产出PRD → Claude确定架构和测试 → Codex实现代码 → DeepSeek审查diff → 自动跑测试 → 人工最后合并。每两个阶段之间都有一份handoff.yaml文件,记录上游产物的哈希值、变更过的文件、悬而未决的决策和测试结果。
我把核心配置公开出来,供大家参考。
Kimi需求蒸馏环节:
kimi_client = OpenAI(
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.cn/v1"
)
system = """
你是一名需求分析师。只输出结构化PRD,禁止写代码。
必须包含:背景、用户故事、验收标准(每条可测试)、非功能约束、风险点。
输出格式为JSON,字段名固定。
"""
prd = kimi_client.chat.completions.create(
model="kimi-latest",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": raw_requirements}
],
temperature=0.2
)
Claude Code架构与测试环节:
我在项目里放了提示文件.claude/CLAUDE.md:
1. 先写测试,再写实现。
2. 所有函数必须带类型注解。
3. 不要修改 interface.lock 中的签名。
4. 输出 ARCHITECTURE.md 说明模块关系。
5. 测试必须覆盖空文件、超大文件、重复数据三种场景。
Claude Code使用Sonnet模型跑Agent模式,每次只处理一个任务包,防止它分心。
Codex实现环节:
.codex/config.yaml配置:
model: codex-latest
instructions: |
- 只根据已有测试补实现,不要新增函数。
- 禁止重构与当前任务无关的代码。
- 读取 interface.lock 和 handoff.yaml 后再开始。
- 输出变更摘要到 IMPLEMENTATION.md。
DeepSeek审查环节:
review_prompt = """
你是一名资深代码审查员。审查以下git diff,按Severe/Major/Minor分级。
Severe包括:安全漏洞、逻辑错误、接口破坏、未处理异常。
只评论与本次变更相关的问题,不要泛泛而谈。
输出JSON:{"summary": "...", "blockers": [...], "suggestions": [...]}
"""
使用的模型是deepseek-coder-v2,温度设为0.0,既便宜又稳定。
三道质检关卡:
- 第一关:Codex自己跑一遍pytest,失败就自动重试一次。
- 第二关:DeepSeek审查diff,如果发现Severe级别问题就退回给Codex修改,最多循环3次。
- 第三关:我人工过一遍handoff.yaml和最终diff,大约耗时5-10分钟。
这套回环机制表面上看增加了环节,但实际上把"做完再返工"变成了"中途就拦截"。回到CSV导入那个需求,跑完整条流水线后的数据如下:
算一笔总账:端到端速度提升了2.6倍,成本降到了原来的2.6分之一,返工时间是此前的不到三分之一。更重要的是我的心理状态变了——不再需要同时扮演需求方、架构师和测试员去跟同一个模型反复拉锯。
如果你想尝试这种模式,不一定要照搬我这套模型组合,先把下面七条原则落实到位:
interface.lock或ARCHITECTURE.md把函数签名、错误码、数据库字段都定死,谁要改谁就得负责。最后说一句可能不中听的话:市面上很多号称"AI员工团队"的SaaS产品,本质上就是套了个多Agent外壳的API调用器,每个月收几百块席位费,对独立开发者来说大概率是交智商税。 你自己花一个下午搭一条流水线,完全可控、可改、账单透明。当然,如果你的团队已经有10个人、流程也标准化了,那买成熟工具能省下管理成本,就另当别论了。
说明:数据来源为公开行业报告综合整理、部分数值为估算仅供参考