Anthropic团队实战:16个Agent并行开发编译器的Claude Code使用经验

核心发现:Claude Code远不止写函数那么简单
Anthropic的工程博客和官方文档揭示了研发团队使用Claude Code的真实方式——不是简单地让AI帮写一个函数,而是16个Agent并行开发编译器、三角色架构做全栈应用、自动分类器处理审批流程。这些实践背后的架构思维,值得每位从事AI辅助编程的开发者深入学习。



16个并行Agent从零构建C编译器
Anthropic研究员Nicholas Carlini做了一个令人震撼的实验:用16个并行Claude Agent从零编写了一个能编译Linux内核的C编译器。这不是玩具项目,而是一个真正能编译Linux 6.9、FFmpeg、SQLite、PostgreSQL的编译器,GCC Torture测试通过率高达99%,甚至能编译并运行Doom。
GCC Torture测试是GNU编译器集合中一组极端的测试用例,专门设计来触发编译器中的边界情况和潜在bug。它包含数千个精心构造的C程序,涵盖复杂的指针运算、类型转换、优化边界等场景。通过率达到99%意味着该编译器在绝大多数边界情况下都能正确生成机器码,这是工业级编译器的质量标准。作为参照,许多商业编译器在早期版本中也难以达到这一水平。
多Agent协作的技术实现
整套系统的运行机制相当精巧:通过bash循环脚本让Claude在Docker容器里持续运行,每完成一个任务就自动领取下一个。多Agent之间通过Git分布式协作,每个Agent在独立目录下用文件锁认领任务,完成后拉代码、合并代码,冲突由Claude自己解决。
Docker容器提供了轻量级的操作系统级虚拟化,每个Agent运行在隔离的环境中,互不干扰且环境一致。文件锁(File Lock)是操作系统提供的并发控制原语,当一个Agent锁定某个任务文件时,其他Agent尝试获取同一锁会被阻塞或跳过,从而避免两个Agent同时处理同一任务。这种方案比复杂的消息队列系统更简单可靠,特别适合文件系统为中心的协作模式。
同时还做了专业化分工:有的Agent负责合并重复代码,有的做性能优化,有的写文档。最终产出数据:近2000个Claude Code会话,两周时间,输入20亿token,输出1.4亿token,总成本约2万美金,产出10万行代码。
三条关键经验
验证器必须靠谱。 Claude会自主解决任何给定问题——如果验证器有bug,它会修好验证器而不是修好代码。这意味着如果你给它一个有问题的测试用例,它可能会"聪明地"修改测试让其通过,但bug依然存在。正确做法是先确认测试用例本身没问题,再让Claude去修复。
站在Claude的角度想问题。 不要让日志输出几千字无用内容,那会污染上下文窗口,严重影响后续推理质量。精简输出信息是提升Agent效率的关键一步。
并行化要保持简单。 任务拆得越简单,并行效果越好。复杂任务的协调开销会吞噬并行带来的收益。
三Agent架构:解决上下文焦虑
单Agent长时间运行存在两个致命问题。第一是上下文焦虑现象:当上下文窗口被各种信息填满时,Claude会开始反复检查已完成的工作,不敢推进新任务,在窗口即将满时则会草率完成任务。第二是自我评估偏差:Agent在评价自己的工作时总是过于宽容和乐观——"挺好的,差不多了",实际上差得远。
大语言模型的上下文窗口本质上是Transformer架构中自注意力机制能处理的最大token序列长度。当窗口接近填满时,模型需要在更多信息中分配注意力权重,导致对关键信息的关注度下降。这类似于人类工作记忆的局限——当同时处理太多信息时,决策质量会显著下降。Claude的"上下文焦虑"表现正是这一技术限制在Agent行为层面的体现。
Planner-Generator-Evaluator分工
Anthropic的解决方案是三角色架构:
- Planner(计划器):把简单提示扩展为完整产品规格,有意不过度指定技术细节
- Generator(生成器):按Sprint逐个功能实现,每个Sprint结束后自评
- Evaluator(评估器):用Playwright实际操作运行中的应用,像用户一样点击测试,发现真实bug后反馈给生成器
Playwright是微软开源的浏览器自动化框架,能模拟真实用户在Chrome、Firefox、Safari中的操作行为,包括点击、输入、页面导航等。与传统单元测试不同,Playwright进行的是端到端测试——它验证的是完整的用户体验流程而非单个函数的正确性。在三Agent架构中,Evaluator使用Playwright意味着它能发现那些代码层面看不出来、但用户实际使用时会遇到的问题。
对比测试数据
同一个提示"制作复古游戏编辑器":单Agent花20分钟、9美金,结果界面粗糙、核心功能损坏;三Agent花6小时、200美金,结果功能丰富、实际可玩。成本贵了20倍,但结果从"不能用"变成了"能玩"。对于真实项目来说,这个投入产出比完全值得。
智能审批:解决93%盲目批准问题
用过Claude Code的开发者都知道,它每执行一步都要询问是否批准。据统计,用户93%的时候都选择批准,这导致严重的审批疲劳——点到第十次的时候你已经不看内容了,安全防线形同虚设。
双层防御机制
Anthropic的方案是Auto Mode:用模型分类器自动判断哪些操作安全、哪些危险,安全的直接通过,危险的才询问用户。
具体设计了双层防御:输入层扫描工具输出,发现可疑内容时注入警告;输出层分类器只看用户消息和工具调用,不看Agent的推理过程——这是为了防止Agent"说服"分类器放行。
Prompt Injection(提示注入)是一种针对LLM应用的攻击方式,恶意内容试图通过输入来改变模型的行为指令。Anthropic的分类器"只看用户消息和工具调用,不看Agent推理过程"这一设计,本质上是防御一种高级攻击向量:Agent可能在推理链中被注入的内容"说服",进而生成看似合理但实际危险的工具调用请求。通过将分类判断与Agent思维链解耦,即使Agent被"欺骗",分类器仍能独立判断操作是否安全。
测试数据显示:一万条真实内部流量,误报率仅0.4%,只拦错了40条。
Managed Agents:避免过度设计
这是最能体现架构思维的部分。Anthropic团队发现,Agent框架里编码了太多对模型局限的假设,但模型进步后这些假设就会过时。举个例子:你搭了一套完整的Agent框架,写了一堆最佳实践,结果模型一升级大半都废了——因为那些实践本质上是在补偿模型的缺陷,模型变强了补偿就不需要了。
三组件拆分策略
他们的核心思路是把Agent系统拆成三个独立组件:
- 大脑:Claude + Harness,无状态可水平扩展
- 双手:沙箱和工具容器,变成"牲畜"可随时替换,不再是"宠物"
- 记忆:持久化的事件日志,Harness可按需组织上下文
"牲畜vs宠物"是云原生架构中的经典比喻,源自2012年的一次技术演讲。"宠物"服务器有名字、被精心维护、坏了要修复;"牲畜"实例没有个性、随时可替换、坏了直接销毁重建。这一理念是容器化和Kubernetes等编排系统的思想基础。Anthropic将工具容器视为"牲畜",意味着任何Agent的执行环境都可以被快速销毁和重建,大幅提升了系统的弹性和可扩展性。
效果数据:首token延迟P50下降约60%,P95下降超过90%。首Token延迟(Time To First Token)是衡量LLM服务响应速度的关键指标,指从请求发出到第一个输出token生成的时间。P50和P95分别表示中位数和第95百分位的延迟值。P95下降90%意味着即使在负载较高的情况下,绝大多数用户也能获得接近即时的响应体验。这一改进对于交互式编程场景尤为重要,因为开发者期望的是接近实时的对话反馈。
官方最佳实践六条
1. CLAUDE.md配置先行
每次启动Claude Code都会读取CLAUDE.md文件,相当于项目的持久记忆。加载优先级从远到近叠加:用户级(所有项目生效)→ 项目级(团队共享)→ 子目录级(优先级最高)。
关键原则:写Claude猜不到的东西(构建命令、代码风格规则、常见坑),能通过读代码推断出来的就别写。CLAUDE.md太长会导致重要规则被淹没。
2. Plan Mode处理复杂任务
四步流程:探索阶段(Plan Mode下读文件、回答问题)→ 规划阶段(创建详细实现方案)→ 实现阶段(切出Plan Mode按方案编码)→ 提交阶段(写描述性Commit Message、开PR)。
适用场景:新功能开发、多文件重构、架构决策、需求不明确时。一句话能描述清楚的任务就别规划了。
3. Dynamic Workflows交叉验证
2.1.154版本新功能,核心思路是把计划变成脚本,可重复运行、并行执行、交叉验证。最实用的特性是N个独立"怀疑者"验证,多数反驳就排除——写代码的Claude不是审查自己代码的那个Claude。
4. 管理上下文窗口
这是所有策略的基础。不相关任务之间用Clear命令重置;用子Agent做调查避免污染主上下文;两次纠正无效就Clear重来。上下文管理做得好,Agent的输出质量会有质的提升。
5. 多Agent协作模式
Claude Code支持创建多种专用子Agent:Explore(快速扫描代码库)、Frontend Engineer、Backend Engineer、Code Reviewer、Test Engineer。关键参数:Isolation用Worktree给子Agent独立的Git分支避免文件冲突,Run Background后台运行完成时通知。
6. 给Claude提供验证手段
没有验证手段的自主运行是危险的。Agent自己觉得做完了,但可能没做完或做错了。必须提供客观的验证机制,比如测试套件、类型检查、lint工具等。
总结:一个核心原则
把这些实践串起来看,Anthropic其实在讲同一件事:把确定性的逻辑交给脚本,把需要判断的交给AI,然后给AI一个靠谱的验证手段。
落实到日常开发:配置先行写好CLAUDE.md,复杂任务用Plan Mode,并行化是趋势,分离生成和评估,管好上下文,不要过度设计。模型在快速进步,今天的最佳实践明天可能就是累赘——保持架构的灵活性,比追求当下的完美更重要。
相关推荐

RAG并没有你想的那么复杂:回归本质的实践指南
RAG(检索增强生成)的核心逻辑其实极其朴素:检索相关内容、拼接到提示词、让模型生成回答。本文解析为什么开发者把RAG想复杂了,以及如何用最简方案快速落地RAG系统。

Qencode MCP:用自然语言驱动AI完成视频转码与处理
Qencode MCP通过模型上下文协议将云端视频处理能力接入AI Agent生态,支持用自然语言完成视频转码、分析、编辑、优化与交付全流程,大幅降低开发者视频处理门槛。

Vibe Coding实战指南:AI全链路开发打造一人公司
深入解析Vibe Coding开发模式,从需求分析、UI设计到多端部署和AI自动化运营,掌握AI协同开发全链路闭环,助力个人开发者独立完成产品落地与推广。