宝玉xp 25-12-30 15:55
微博认证:前微软Asp.Net最有价值专家 2025微博年度新知博主 科技博主

Claude Code 5亿美元背后的AI工程革命(上集)

来整理一下 Claude Code 诞生的故事,主要来源是科技博主 Gergely Orosz 采访 Claude Code 核心成员的文章How Claude Code is built http://t.cn/AX4szOXm 。

Claude Code 确实了不起,5 亿美元年化收入,三个月用户量涨了 10 倍,现在也是很多程序员首选 Coding Agent 工具。

这个工具最初只是一个能告诉你“现在在听什么歌”的命令行小玩具。

Gergely Orosz 采访了 Claude Code 的三位核心成员:
- 创始工程师 Boris Cherny(17 年从业经验,前 Meta 主任工程师)
- 二号工程师 Sid Bidasaria(Subagents 功能的作者)
- 以及产品经理 Cat Wu。

他们聊了 Claude Code 是怎么从原型变成产品的,技术上做了哪些选择,以及这个十几人的小团队如何做到每人每天发布 5 个 PR。

这可能是目前最接近“AI 优先工程团队”的样本。他们用 AI 写代码、写测试、做代码审查、排查故障,甚至用 Claude Code 来开发 Claude Code 本身。90% 的代码是它自己写的。

我想做的是把这次采访里最有意思的部分整理出来,讲讲这个团队是怎么工作的,有什么可以借鉴的,又有什么是他们的特殊条件决定的、不能照搬的。

下面分成 7 个小故事,每个都能独立看,串起来是一个完整的图景。

【1】一个听歌小工具,如何变成年入 5 亿美元的产品

2024 年 9 月,Boris Cherny 刚加入 Anthropic,闲着没事写了个命令行小玩具。

这东西能干嘛呢?它能用 AppleScript 告诉你现在在听什么歌,还能根据你的指令换歌。就这么简单。Boris 自己的评价是:“挺酷的 demo,但没啥意思。”

真正的转折发生在他和同事 Cat Wu 聊完之后。Cat 当时在研究 AI Agent 的计算机使用能力,聊着聊着,Boris 冒出一个念头:如果给这个命令行工具更多权限呢?比如让它能读写文件、能执行命令?

他试了。然后,见证奇迹的时刻来了。

Boris 把这个升级版工具扔进 Anthropic 的代码库,随便问了几个问题。Claude 开始自己探索文件系统——读一个文件,看到里面的 import 语句,就顺着去读被引用的文件,一层层往下挖,直到找到答案。

“这把我震住了,”Boris 回忆说,“我从来没用过这样的工具。”

在 AI 领域有个概念叫“product overhang”,翻译过来就是“产品溢出”。意思是模型其实已经具备某种能力了,但现有的产品形态没有把这种能力释放出来。

Boris 发现的,正是一个巨大的“product overhang”,Claude 早就能做到这些,只是没人给它造个壳子。

Boris 开始每天用这个工具干活,然后分享给几个同事。两个月后的 11 月,他们发布了一个内部版本。

数据很夸张:第一天,20% 的工程师在用;第五天,50%。

这时候出现了一个有趣的争论:要不要对外发布?

反对的理由很真实:这东西如果真有我们以为的那么强,留着当“秘密武器”不好吗?为什么要把竞争优势拱手让人?

最终,Anthropic 选择了发布。逻辑是这样的:Anthropic 的核心使命是研究模型安全,而研究安全最好的方式是让人真正使用这些工具。既然内部已经验证了 Claude Code 会被大量使用,那发布它就能带来更多关于模型能力和安全的洞察。

2025 年 5 月,Claude Code 正式公开。三个月后,使用量涨了 10 倍,年化收入超过 5 亿美元。

有意思的是,Boris 最初只想着给程序员用——所以才叫“Claude Code”。但有一天他走过数据科学家的工位,发现对方屏幕上也跑着 Claude Code。“你用这个干嘛?”“我让它帮我写查询、做可视化啊。”现在,Anthropic 的数据科学家们人手一个,有些人同时开好几个。

一个听歌小工具,因为多给了几个权限,变成了一个价值数亿美元的产品。这大概是“product overhang”最好的证明,模型能力一直在那儿,等的只是有人把它释放出来。

---

【2】90% 的代码是自己写的——Claude Code 的技术选型哲学

Claude Code 有 90% 的代码是它自己写的。

听起来像噱头,但这其实归功于他们的技术决策逻辑。

先看技术栈:TypeScript 写主体,React 搭配 Ink 框架做终端 UI,Meta 开源的 Yoga 做布局系统,Bun 负责构建打包。

为什么选这些技术栈呢?因为它们“在分布内”。

“在分布内”(on distribution)是 AI 领域的术语。意思是模型已经见过大量这类代码,擅长处理它们。TypeScript 和 React 正是 Claude 的强项。如果选一个冷门框架,模型就得“学习”,效果会打折扣。

这个选择带来一个美妙的循环:用 Claude 擅长的技术栈写 Claude Code,然后用 Claude Code 写更多 Claude Code。90% 自己写自己,就是这么来的。

他们在架构层面的选择同样简洁。

Claude Code 在本地运行。没有 Docker 容器,没有云端沙箱,就是直接在你的电脑上读写文件、执行命令。

至于为什么这样设计?

Boris 的回答是:“每次做设计决策,我们几乎都选最简单的方案。本地运行就是最简单的答案。”

这种简单延伸到整个产品哲学:尽可能少写业务逻辑,让模型做主角。

“这听起来可能有点奇怪,”Boris 说,“但我们希望用户能尽可能“原汁原味”地感受模型。很多 AI 产品会加一堆脚手架——额外的 UI 元素、各种辅助功能——结果反而限制了模型的发挥。我们要做的是让 UI 尽可能精简。”

为了保持简洁,每次 Claude 发布新模型,他们就会大量精简代码。

比如 Claude 4.0 发布时,他们删掉了大约一半的系统提示词,因为新模型不再需要那些“拐杖”了。工具数量也在不断精简——能删就删,能合并就合并。

整个 Claude Code 架构可以概括为三件事:定义 UI 并暴露给模型修改的接口、暴露工具让模型调用、然后闪到一边去。

当然,简单不意味着没有复杂的部分。权限系统就是例外。

毕竟让 AI 在你电脑上执行命令是有风险的。Claude Code 的解决方案是执行前先问你:要不要批准这个操作?可以只批准这一次,也可以以后都批准,或者拒绝。

权限系统支持多层配置——按项目、按用户、按公司。团队可以共享配置文件,把常用的安全命令加入白名单。

这套权限设计背后的原则是这样的:
如果你启动 Claude Code,它不应该在没经过你同意的情况下改动任何东西。但同时,也要给用户“放权”的选择——在你信任的场景下,可以跳过确认环节。

简单,但不是简陋。克制,但不是功能缺失。

---

【3】两天 20 个原型——AI 时代的产品迭代长什么样

以前做产品原型,两天能做出两个就算效率高了。

Boris 花两天做了 20 个。

这不是夸张,是他开发 Claude Code 的 todo list 功能时的真实记录。他甚至把每一步的提示词和截图都分享了出来。

我们来看看这 20 个原型是怎么迭代的。

第一版,他想让 todo 列表显示在最近一次工具调用的下方。提示词很短:“让 todo 不要随着输入出现,而是在输入框上方显示一个固定的 todo 列表,标题用灰色显示 '/todo (1 of 3)'”。

看了看效果,不太满意。

第二版,改成在每个 todo 更新时内联显示。提示词:“其实不要显示 todo 列表,改成在模型开始处理一个 todo 时,把工具名称渲染成粗体标题。保留'step 2 of 4'这样的进度显示。”

还是不对。

第三版和第四版,他尝试做一个“交互式药丸”——屏幕底部一个小方块,点开能看进度。“在文字输入框下面加一个 todo 药丸,类似后台任务的样式,显示 'todos: 1 of 3'。”然后:“让这个药丸可以交互,像后台任务药丸那样。”

有点意思了,但还不够好。

第五版和第六版,他换了个思路:做个从右边滑出来的“抽屉”。“把之前的药丸和标题都撤销,改成在输入框右边显示 todo 列表,垂直居中,用灰色分隔线隔开。”“有点跳,能不能做成抽屉动画?”

看起来挺酷,但实用性存疑。

第七到第九版,他又把 todo 列表挪到输入框上方,试验不同的截断方式和标题样式。“如果超过 5 个就显示'... and 4 more'”,“加个灰色的 'Todo:' 标题”。

离答案越来越近了。

第十到二十版,他开始琢磨怎么把 todo 列表和加载动画结合起来。最后的解决方案是把进度信息放到 spinner(加载指示器)旁边,最大化可见性。

发布后,用户反馈说想看完整的 todo 列表。于是又加了一个迭代:按 Ctrl+T 可以展开全部步骤。

这就是现在线上的版本。

整个过程里,Boris 的提示词出奇地简短——大多数就一两句话。但每一版都是可以实际运行的原型,不是静态图,不是 PPT。他可以真正测试验证这个功能,感受它顺不顺手。

传统的产品开发流程是:想法 → 讨论 → 画线框图 → 做高保真设计 → 开发 → 测试 → 上线。每一步都要时间,每一步都可能卡住。

现在的流程变成了:想法 → 一句话提示词 → 可运行的原型 → 感觉不对就再来一版。

这其实要求开发者在思维方式上进行改变,才能适应这种开发流程。

以前,原型的作用是“验证想法”——因为做原型成本高,你得先想清楚再动手。现在,原型变成了“探索可能性”——因为做原型成本低,你可以先做出来再说,不好就扔掉。

Boris 说,用 Claude Code 的时候,他经常直接跳过画设计图的阶段,直接做一个能跑的版本,比什么都直观。

Claude Code 团队的日常节奏是:每个工程师每天推大约 5 个 PR,内部每天发布 60-100 个版本,外部每天发布 1 个版本。

一天 5 个 PR,这在大多数公司是难以想象的。Uber 在最紧张的重构期,一天能推一个中型 PR 就算不错了。

工具变了,节奏就变了,思维方式也得跟着变。

---

下集:http://t.cn/AX48XC0k

发布于 美国