解码 Claude Code(七)— 深度报告:三个真实项目的完整复盘

前六期我们拆解了 Claude Code 的每一个核心模块。这一期,我们走进真实项目——不谈理论,只看结果。

三个案例来自 Anthropic 工程团队和社区开发者的第一手报告。它们规模不同、领域不同,但都回答了同一个问题:当 Claude Code 真正"上阵"的时候,会发生什么?

案例一:16 个 Claude 并行写 C 编译器

项目概况

2026 年 2 月,Anthropic 安全团队研究员 Nicholas Carlini 做了一个疯狂的实验:用 16 个 Claude 实例并行开发一个 C 编译器,目标是可以编译 Linux 内核。

最终结果:

  • 代码量:100,000 行 Rust
  • 会话数:近 2,000 个 Claude Code 会话
  • Token 消耗:20 亿输入 + 1.4 亿输出
  • 成本:约 20,000 美元
  • 能力:能编译 Linux 6.9(x86/ARM/RISC-V)、QEMU、FFmpeg、SQLite、PostgreSQL、Redis
  • 测试通过率:GCC torture test 套件 99%

这不是 demo,不是原型——这是一个能编译 Doom 的编译器。

架构设计:最简并行方案

Carlini 没有设计复杂的编排系统。整个架构只有三个组件:

1. 无限循环(Ralph Loop)

#!/bin/bash
while true; do
  COMMIT=$(git rev-parse --short=6 HEAD)
  LOGFILE="agent_logs/agent_${COMMIT}.log"
  claude --dangerously-skip-permissions \
    -p "$(cat AGENT_PROMPT.md)" \
    --model claude-opus-X-Y &> "$LOGFILE"
done

Claude 完成一个任务,立即开始下一个。它没有选择——循环永远不会停(除非 Claude 不小心执行了 pkill -9 bash 把自己杀了,这确实发生过一次)。

2. Git 文件锁实现任务分配

每个 agent 在 current_tasks/ 目录下创建文件来"锁定"任务。如果两个 agent 抢同一个任务,Git 的同步机制会强制第二个选别的。没有中心调度器,没有消息队列——就是文件系统 + Git。

3. 容器化隔离

每个 agent 运行在独立的 Docker 容器里,各自 clone 代码到本地,完成后 push 到上游仓库。合并冲突频繁发生,但 Claude 有能力自行解决。

关键发现

测试质量决定上限。 Carlini 反复强调:Claude 会不遗余力地解决你给它的任何问题,所以测试套件必须近乎完美,否则 Claude 会解错题。

他发现 Claude 会不断用新功能破坏已有功能,于是搭建了 CI 流水线,强制每次提交不能 break 现有测试。测试不是给自己写的——是给 Claude 写的。

站在 Claude 的角度设计工具。 测试输出不能刷屏(会污染上下文窗口),错误信息必须一行就能 grep 到(ERROR: 具体原因),日志要预计算汇总统计(免得 Claude 自己算一遍浪费时间)。

Claude 还有个致命弱点:无法感知时间。不加限制的话,它会花几个小时跑测试,而不是推进开发。解决方案是 --fast 模式:只跑 1%-10% 的随机抽样,既覆盖全部文件,又能快速定位回归。

并行不是银弹。 当所有 agent 面对同一个大问题时(比如编译 Linux 内核),16 个 agent 会卡在同一个 bug 上,互相覆盖修复。Carlini 的解法很巧妙:用 GCC 作为"对照编译器",随机分配文件给 GCC 和 Claude 的编译器,通过二分法定位哪些文件有问题,从而让不同 agent 修复不同 bug。

碰到的天花板

这个项目也暴露了 Opus 4.6 的极限:

  • 无法实现 16 位 x86 代码生成器(输出的代码超过 Linux 的 32K 限制)
  • 生成的代码效率远低于 GCC(即使开了全部优化,还不如 GCC 关优化)
  • Rust 代码质量合理,但远达不到专家水平
  • 新功能和修复经常破坏已有功能

Carlini 的总结很诚实:这个编译器"已经达到了 Opus 能力的极限"。

教训提炼

维度 教训
测试 测试不是验证工具,是导航工具。没有好测试,agent 会迷路
并行 任务独立时并行是免费的,任务耦合时并行反而有害
成本 2 万美元听起来贵,但比一个团队几个月的人力便宜一个数量级
架构 最简方案(文件锁 + Git)往往优于复杂编排系统
局限 即使是最强的模型,在专家级任务上仍有明显天花板

案例二:GAN 启发的三代理全栈开发

项目概况

2026 年 3 月,Anthropic Labs 团队的 Prithvi Rajasekaran 公开了一项研究:如何让 Claude 自主完成复杂的前端设计和全栈应用开发。

他的灵感来源出人意料——生成对抗网络(GAN)。

在 GAN 里,生成器负责产出,判别器负责挑剔。Rajasekaran 把这个结构搬到了 AI 编程中:一个 agent 写代码,另一个 agent 审代码,两者对抗迭代,直到质量达标。

从前端设计开始

问题很明确:Claude 默认倾向于产出"安全但无聊"的布局——技术上能用,但视觉上毫无记忆点。

Rajasekaran 设计了四个评分维度:

维度 权重 核心问题
设计品质 看起来是一个整体,还是零件拼凑?
原创性 有刻意的设计决策,还是模板默认值?
工艺 排版层级、间距一致性、色彩和谐度
功能性 用户能不能不猜就完成任务?

前两个权重更高,因为工艺和功能性 Claude 本来就做得不错,真正缺的是审美上的冒险。

然后他构建了对抗循环:

生成器:根据提示创建 HTML/CSS/JS
    ↓
评估器:用 Playwright 打开页面,截图、导航、逐维度打分、写详细批评
    ↓
生成器:根据批评修改,或彻底转向新的美学方向
    ↓
重复 5-15 轮

关键细节:评估器不是看静态截图打分,而是真的打开浏览器导航页面、截图、仔细研究后再评分。每轮迭代都有真实的墙钟时间,完整运行最长可达四小时。

最精彩的一刻

Rajasekaran 让 Claude 为一个荷兰艺术博物馆设计网站。前九轮迭代产出了一系列干净但中规中矩的暗色主题页面。

然后第十轮,Claude 推翻了之前所有的方向,重新想象了这个网站——它变成了一个空间体验:用 CSS perspective 渲染的 3D 房间,棋盘格地板,画作以自由位置挂在墙上,通过门道在画廊房间之间导航。

这是单次生成不可能出现的创意飞跃。

扩展到全栈开发

验证了生成器-评估器模式后,Rajasekaran 将其扩展为三代理系统:

规划器(Planner):接收 1-4 句话的用户描述,扩展为完整产品规格。关键约束——只描述"做什么"和"为什么",不规定"怎么做"。因为如果规划器在技术细节上猜错了,错误会级联传播到下游。

生成器(Generator):按功能一个接一个地实现(sprint 模式)。每个 sprint 结束后自我评估,然后交给评估器。技术栈固定:React + Vite + FastAPI + SQLite(后换为 PostgreSQL)。

评估器(Evaluator):不只是看代码——它打开应用,实际操作每个功能,记录 bug,写报告反馈给生成器。这一次,评估器真的在"使用"软件,而不是在"读"代码。

解决的三个核心问题

问题一:上下文腐烂。 长时间运行后,agent 开始遗忘早期指令,做出矛盾决策。早期用 Sonnet 4.5 时特别严重("上下文焦虑"——模型会提前结束工作)。Opus 4.5 基本消除了这个问题,配合自动 compaction 就够了。

问题二:自我评价偏差。 Agent 对自己产出的评价几乎总是正面的——即使明显平庸。把评价者和生产者分开后,评价可以校准为"挑剔"风格,而生成器有了具体的改进目标。

问题三:长任务失控。 将完整应用拆解为逐功能 sprint,每个 sprint 有明确的起止和验证条件。这比"一口气写完整个应用"靠谱得多。

教训提炼

维度 教训
评估 分离生成和评估是质量的关键杠杆
迭代 5-15 轮对抗迭代远优于单次生成
规划 规划器应约束"做什么"而非"怎么做"
创意 允许 agent 推翻方向,可能产生意外突破
成本 每次完整运行可达 4 小时,但产出质量显著高于一次性生成

案例三:Managed Agents — 从宠物到牲畜

项目概况

前两个案例都是研究实验。第三个案例是真正的生产系统——Anthropic 的 Managed Agents 托管服务。

这个故事的核心不是 Claude 多聪明,而是如何设计一个能持续运行的 AI agent 基础设施。

"宠物"问题

最初的架构很直觉:把所有东西塞进一个容器——Claude、运行 harness、执行沙箱、会话记录。

问题很快暴露:

  • 容器挂了 = 会话丢了(而且没地方调试)
  • harness 假设所有资源都在旁边(客户要求连接自己的 VPC 时就傻了)
  • 安全隐患:Claude 生成的不可信代码和密钥在同一个容器里(一次提示注入就能拿到 token)

这就是经典的"宠物"问题——你精心照料它,它挂了你很难受。

解耦方案:"大脑"和"手"

Anthropic 的解法来自操作系统设计哲学:像 Unix 把硬件抽象为文件一样,把 agent 组件抽象为接口。

大脑(Brain)= Claude + harness,负责思考和决策
手(Hands)= 沙箱和工具,负责执行
会话(Session)= 事件日志,独立存储

三者通过极简接口连接:

大脑 → 手:execute(name, input) → string
大脑 → 会话:emitEvent(id, event)
会话 → 大脑:getSession(id) / getEvents()

这意味着:

  • 容器挂了?大脑捕获错误,Claude 决定是否重试,新容器按标准配方重建
  • harness 挂了?新 harness 启动,从会话日志恢复,继续上次的事件
  • 客户要连接自己的 VPC?大脑不需要知道手在哪里,只需要调 execute

性能飞跃

解耦带来了意外收获:

  • 首 token 延迟(TTFT)中位数降低 60%,p95 降低超过 90%
  • 原因:之前每个会话都要等容器启动完成才能开始推理;现在推理可以先开始,容器按需创建

安全架构

密钥永远不出现在沙箱里:

  • Git 操作:sandbox 初始化时用 token clone 仓库,配置本地 git remote,之后 push/pull 不需要 token
  • MCP 工具:OAuth token 存在安全保险库,通过专用代理调用,harness 和沙箱都碰不到凭据
  • 原则:Claude 能"用"权限,但永远"看不到"凭据

教训提炼

维度 教训
架构 解耦大脑和手,让每个组件可以独立失败和替换
接口 设计少量稳定的抽象接口,比优化任何单一实现更重要
安全 凭据永远不应存在于不可信代码可达的地方
性能 延迟来自不必要的等待,而非计算本身
演进 为"尚未想到的程序"设计系统,接口比实现更持久

三个案例的共同脉络

把三个项目放在一起看,你会发现它们在说同一件事:

规律一:反馈闭环是第一生产力

C 编译器项目靠 CI 测试套件闭环,前端设计靠评估器打分闭环,Managed Agents 靠会话日志 + 错误恢复闭环。

没有闭环的 agent 就像没有方向盘的车——动力再强也没用。闭环越精确、越自动化,agent 的表现就越好。

规律二:管理上下文 = 管理 AI 的"智商"

C 编译器项目用 Git 文件锁隔离任务上下文,前端项目用三代理分工隔离角色上下文,Managed Agents 用会话日志解耦存储上下文。

三个项目的核心挑战都是同一个:随着任务变长,上下文窗口会被垃圾填满,模型的注意力被分散,性能下降。解决方案不是更大的上下文窗口——而是更聪明的上下文隔离。

规律三:最简架构往往赢

C 编译器没有复杂编排,只有文件锁 + Git。前端项目没有微服务,只有三个 agent + 一个循环。Managed Agents 的核心就是三个接口。

这不是巧合。在 AI agent 领域,模型的智力在飞速增长,但 harness 编码的假设会迅速过时。越简单的架构,越容易适配新一代模型。

规律四:评估比生成更难

三个项目都花了大量精力在"怎么评判结果好不好"上——而不是"怎么让 Claude 写出结果"。

C 编译器的测试套件、前端项目的四维评分体系、Managed Agents 的会话恢复机制——这些才是真正的工程挑战。生成代码 Claude 已经很擅长了,但告诉它"你做得好不好"仍然需要人类精心设计。

用户的真实感受

社区开发者 @svpino 在用 Claude Code 构建了一个完整的 SaaS 应用后写道:

"我用 Claude Code 写了一个从前端到数据库的完整应用。期间我只做了一件事:坐在旁边看它工作,偶尔在它走偏的时候拉一下。这种感觉就像你在驾驶一辆自动驾驶汽车——你知道它大部分时间在正确行驶,但你随时准备接管方向盘。"

另一位开发者 @swyx 的总结更精炼:

"Claude Code 改变的不是你写代码的速度,而是你思考代码的方式。你不再想'怎么实现这个功能',而是想'怎么描述这个功能才能让 AI 做对'。这是一个元认知层面的转变。"

展望:从工具到伙伴

三个案例揭示了一个趋势:Claude Code 正在从"工具"进化为"伙伴"。

C 编译器项目展示了它的极限能力——在结构良好的环境里,它已经可以完成专家级的工程任务。前端项目展示了它的创意潜力——在对抗迭代的驱动下,它能做出超越预期的设计决策。Managed Agents 展示了它的工程成熟度——在生产环境里,它已经可以作为可靠的基础设施运行。

但所有案例也指向同一个瓶颈:AI 仍然需要一个精心设计的环境才能发挥最大潜力。测试、评估、反馈、上下文管理——这些"脚手架"决定了 AI 的天花板。

下一期,也是本系列的最后一期,我们将跳出具体案例,看看 AI 编程的未来。Karpathy 预言的 Software 3.0 时代,Boris Cherny 心中的终极开发体验,以及 Anthropic 对 AI 编程的长期愿景。


系列导航

参考来源

Views: 19

解码 Claude Code — Anthropic 的 AI 编程革命(一)

# 解码 Claude Code — Anthropic 的 AI 编程革命(一)

这是一个改变软件开发方式的工具,而它的起点,不过是一次意外的 API 测试。

代码屏幕

从一个”意外”说起

2024 年 9 月,Anthropic 的一位工程师为了方便测试自家 API,随手写了一个终端命令行工具。他给了模型一个 bash shell,想看看会发生什么。

模型做的第一件事,是写了一段 AppleScript,查询他正在听什么音乐。

那一刻,他意识到:模型不只是想回答问题——它想用工具

这个工程师叫 Boris Cherny,他创造的这个"顺手写的 CLI 工具",就是今天被全球开发者疯狂使用的 Claude Code

终端界面

Claude Code 是什么

一句话:Claude Code 是一个运行在终端里的 AI 编程助手,它能读写你的代码、执行命令、管理项目,像一个不知疲倦的结对编程搭档。

它不是 Copilot 那样的代码补全工具,也不是 ChatGPT 那样的问答机器人。它直接住在你的终端里,拥有 bash 权限,能操作文件系统,能调用 Git,能运行测试——它是一个有手脚的 AI

如果你用过命令行,你大概能理解这种感觉:你不用离开终端,不用切换窗口,只需要用自然语言描述你想做什么,它就帮你做了。

AI 概念

为什么它值得关注

几个数字:

  • GitHub 上 4% 的代码提交已经由 Claude Code 完成,Boris 预计年底将达到 20%
  • Anthropic 工程团队生产力提升 200%,Boris 本人每天发布 10-30 个 PR,100% 由 AI 生成
  • Anthropic 内部 70-80% 的技术人员每天都在使用它
  • 内部反馈频道每 5 分钟就有一条新帖子

这不是实验室里的 demo,这是一个已经被自家工程师"吃"到离不开的生产力工具。

核心能力速览

Claude Code 的能力可以归纳为五个维度:

1. 代码理解与生成

它能读懂整个代码库的上下文,不只是当前文件。你说"帮我把这个函数重构一下",它知道这个函数被谁调用、影响了哪些模块、测试该怎么改。

2. 终端原生操作

它有 bash 权限。能装依赖、跑测试、查看日志、操作 Git。这意味着它可以完成完整的开发循环,而不是只生成一段代码让你自己粘贴。

3. 记忆与上下文管理

通过 CLAUDE.md 文件,它记住了项目规范、团队约定、技术栈偏好。它不是每次从零开始的——它"认识"你的项目。

4. 技能系统

类似插件机制,但更灵活。你可以给它装"技能"——代码审查、批量重构、定时任务、浏览器自动化。技能用 Markdown 编写,门槛极低。

5. 多代理协作

它可以派出"子代理"并行工作。一个负责搜索代码,一个负责写实现,一个负责跑测试。多个 AI 实例协同完成复杂任务,就像一个微型开发团队。

团队协作

背后的男人 — Boris Cherny

Claude Code 的创造者 Boris Cherny 并非 AI 领域出身。他在 Meta 工作了 7 年,经历了 4 次晋升,负责过 Facebook、Instagram、WhatsApp、Messenger 的代码质量。他让工程生产力提升了两位数百分比。

2024 年加入 Anthropic 后,他提交的第一个 PR 因为是手写的,被同事拒绝了——"你应该用 Claude 来写代码"。

这个反讽成了 Claude Code 诞生的催化剂。

Boris 的核心产品哲学很有意思:

  • 潜在需求(Latent Demand):不要问用户想要什么,观察他们如何"滥用"现有功能。Facebook Marketplace 的诞生是因为 40% 的群组帖子都是买卖内容。
  • 为未来 6 个月构建:不针对今天的模型能力设计产品,而是预测半年后模型能做什么。
  • 吃自己的狗粮(Anthropic 版叫 "ant fooding"):70-80% 的内部日活不是强制要求,是自发传播。

一个更大的图景

Karpathy(OpenAI 联合创始人、前 Tesla AI 总监)在 2025 年底说过一句话:

作为程序员,我从未感到如此落后。

他把软件发展分成三个阶段:

  • Software 1.0:人类写显式规则(if-else、for 循环)
  • Software 2.0:人类定义架构,机器学习权重(神经网络)
  • Software 3.0:人类写提示和上下文,AI 生成一切

Claude Code 正是 Software 3.0 的代表。在新的范式里,编程不再是敲代码,而是描述你想要什么,然后让 AI 去做

未来科技

这不是遥远的未来。Boris 本人已经 100% 使用 AI 编写代码。Anthropic 的代码库里,每天有数百个 PR 完全由 Claude Code 生成。

系列预告

这是《解码 Claude Code》系列的第一期,我们聊了它是谁、从哪来、为什么重要。

接下来的 7 期,我们将深入拆解它的每一个核心模块:

  • 第二期:架构哲学 — 为什么 CLI 形态赢了?bash 权限意味着什么?
  • 第三期:记忆与上下文 — 如何让 AI 不再"健忘"?
  • 第四期:技能系统 — 用 Markdown 打造可复用的 AI 能力
  • 第五期:多代理协作 — 从单兵作战到 AI 军团
  • 第六期:实战技巧 — Boris 的 50 条黄金法则
  • 第七期:深度报告 — 从天气应用到大规摸重构的真实案例
  • 第八期:未来展望 — Karpathy、Boris 等大佬怎么看 AI 编程的未来

下期见。

Views: 5

Views: 46