[翻译]Claude Code 研发解析:一款爆款 AI 开发工具的诞生与架构

原文地址: how-claude-code-is-built

Claude Code 研发解析:一款爆款AI开发工具的诞生与架构

本文为独家深度解析,带您揭秘这款新晋热门开发工具的研发过程,以及它对AI驱动软件开发未来的深远意义。
作者:盖尔盖伊·奥罗什
2025年9月24日

Claude Code 自今年5月全面开放以来,迅速席卷开发者社区。目前,该工具的年化营收已突破5亿美元,自5月发布后的三个月内,使用量更是激增超10倍。

近期,我专访了Claude Code的两位创始工程师——鲍里斯·切尔尼(该项目原型的缔造者、首席创始工程师)、西德·比达萨里亚(项目二号工程师,Claude Code子智能体功能开发者),以及创始产品经理凯特·吴。

本次访谈中,我深入了解了Claude Code的研发细节,也洞悉了成功的AI优先工程团队的运作模式;这仿佛让我窥见了未来,看到了高速发展的初创企业未来的运营形态。好消息是,在这个模式下,软件工程师的需求依旧旺盛……

本文将围绕以下内容展开:

  1. 缘起:Claude Code的创意最初源于一个命令行工具,它能通过Claude播报工程师工作时正在收听的音乐。在获得文件系统访问权限后,这款工具在Anthropic内部迅速走红。如今,Claude Code已拥有独立的成熟研发团队。
  2. 技术栈与架构:基于TypeScript、React、Ink、Yoga和Bun构建。技术栈的选择遵循模型适配性原则,充分发挥底层大模型的优势。趣闻:Claude Code中约90%的代码由其自身编写而成!
  3. 极速迭代:数天完成功能开发与上线,而非数周。团队开发节奏极快,每位工程师日均完成约5次版本发布。原型验证效率惊人:开发一项新功能会完成10余个实际原型的测试。可见,AI智能体大幅加速了产品迭代。
  4. 终端用户体验重构:Claude Code为终端交互带来了诸多创新功能,这些功能在大语言模型赋能的终端出现前,并无实际应用需求。本文将介绍其中部分创新。
  5. AI优先软件工程的形态:利用AI智能体完成代码评审与测试、测试驱动开发(TDD)的复兴、事件响应自动化,以及功能标志的谨慎使用。这是否预示着未来AI优先工程团队的工作模式?
  6. 子智能体研发:揭秘仅用三天就完成的子智能体功能开发过程,其中两天的开发成果最终被舍弃。
  7. AI辅助工程团队的未来:工程团队能从Anthropic的运营模式中学到什么,以及其独特性中哪些部分难以复制。

值得一提的是,在科技行业,除非你与世隔绝,否则不可能没听过Claude Code——当然,只看高德纳(Gartner)报告的人除外:在其最新的AI代码助手报告中,高德纳对Claude Code只字未提,还出现了诸多其他错误。这也是订阅《实用工程师》、紧跟科技行业动态的又一理由——否则,你可能会被高德纳的报告甩下数月甚至数年。

一、缘起:从音乐播报工具到爆款开发神器

2024年9月,鲍里斯·切尔尼加入Anthropic,开始基于Claude 3.6模型开发各类原型工具,彼时他希望能更深入地熟悉Anthropic的公共API。鲍里斯回忆道:

我最初尝试在终端中调用Claude做一些开发实验,初代版本功能极其简陋:无法读取文件、不支持bash命令,也完全不具备任何工程开发相关能力,但它能与计算机进行基础交互。
我将这个原型与AppleScript关联,它能播报我工作时正在听的音乐,还能根据我的指令切歌。
这个演示虽有意思,但实用性并不高。

与此同时,凯特·吴正研究AI智能体的计算机应用场景,以及智能体带来的全新能力。与凯特交流后,鲍里斯萌生了为这款终端工具赋予更多能力的想法,而不仅限于AppleScript的基础功能。他说:

我尝试为它添加了文件系统和批处理交互工具,让它能读取、写入文件,还能执行批处理命令。
一瞬间,这个智能体的价值就显现了。我在公司的代码库中测试它,只是简单地提出一些问题,Claude就会自主探索文件系统、读取相关文件:它会先读取一个文件,查看其中的导入语句,再依次读取这些导入的文件,直至找到问题的答案!Claude的文件系统自主探索能力让我大为震撼,我从未用过这样的工具。
在AI领域,我们有一个概念叫产品能力溢出,而这个原型正是如此。所谓产品能力溢出,是指模型本身具备某项特定能力,但承载该AI的产品并未设计相应功能来发挥这一能力。Claude的文件系统探索能力就是典型的产品能力溢出——模型本身早已具备这项能力,却没有一款产品围绕它进行开发!

产品市场契合:内部验证的成功

鲍里斯开始在日常工作中使用这个原型工具,随后将其分享给了后来成为Claude Code核心团队的成员,公司的其他开发者也纷纷开始日常使用。

2024年11月,即初代原型诞生两个月后,鲍里斯和Claude Code团队推出了可供公司内部试用的版本。上线首日,公司约20%的工程师开始使用;到第五天,这一比例升至50%。彼时,鲍里斯已确信,这款工具面向外部市场后,必将成为爆款。

但公司内部曾就是否对外发布这款工具展开激烈讨论,有人认为应将其作为内部专属工具。鲍里斯回忆道:

我们当时确实犹豫是否要公开推出Claude Code,因为它可能成为我们的竞争优势,就像我们的"独门秘方":既然它能让我们领先,为何要对外发布?
最终,我们达成了一致的观点:

  1. Anthropic的核心定位是模型安全公司;
  2. 我们通过打造用户实际使用的工具,来研究模型安全与能力边界;
  3. Claude Code必然会成为一款热门工具,因为公司内部所有人都已对它爱不释手;
  4. 因此,发布这款工具能让我们更深入地研究模型安全与能力。

团队组建:从单人探索到成熟团队

最初,整个项目只有鲍里斯一人。2024年11月,西德·比达萨里亚加入Anthropic,接触到了Claude Code的早期版本,他认可这款工具的价值,随即加入项目,与鲍里斯并肩开发。

这个两人小团队拥有极高的开发自由度,西德表示:

我们的核心工作就是快速制作原型,打造能彰显底层模型强大能力的产品。团队内部没有繁琐的正式流程,一切都灵活高效。我们几乎可以自主选择开发方向,只专注于最具潜力的创意。

截至2025年7月,团队规模已扩充至约10名工程师,且仍在持续招聘。如今,Claude Code已拥有成熟的产品团队,涵盖工程师、产品经理、设计师和数据科学家,团队还在不断壮大。

不止于程序员:跨角色的实用价值

如今,Anthropic内部超80%的开发工程师会日常使用Claude Code,但这款工具的用户远不止程序员。鲍里斯说:

有一次我走进办公室,无意间看到一位数据科学家的电脑屏幕,上面正运行着Claude Code。我问他:"你怎么会用这个工具?"他回答:"我研究出了它的用法,现在它能帮我写查询语句。"
如今,每次经过数据科学家的工位,我都会看到他们的电脑上运行着Claude Code——很多人甚至同时打开多个实例,用它写查询、做可视化,完成各类工作。

有趣的是,鲍里斯最初开发Claude Code时,目标用户仅为软件工程师,这也是其命名的由来;但这款产品的实际应用场景,早已超出了最初的预期。

团队扩张与效率提升:逆势增长的代码提交流量

通常,若以每位工程师的代码合并请求数(PR) 为指标,当工程团队规模快速翻倍时,该指标往往会下降——因为老员工需要花费更多时间培训新员工,编码时间减少,而新员工也需要时间适应工作。尽管这一指标并非完美,但能直观反映团队的迭代速度,GitHub、Dropbox、蒙佐、阿迪恩等公司均将其作为核心考核指标。

但Anthropic在团队规模翻倍的同时,代码合并请求量却提升了67%——这一切都归功于Claude Code。原本预期会下降的指标,反而实现了增长,核心原因就是Claude Code大幅提升了工程师的代码提交效率。巧合的是,Claude Code在公司内部全面推广的时机,恰好与Anthropic工程师团队规模翻倍的时间重合。

我个人也发现,使用Claude Code后,完成工作的效率大幅提升,编码任务的推进也更加顺畅。此外,当我开发的功能需要验证代码正确性时,Claude Code能通过运行程序、检查输出结果或执行测试用例,帮我完成验证工作。

二、技术栈与架构:模型适配为核心,极简设计为原则

核心技术栈

Claude Code的技术栈选择围绕模型适配性展开,所有技术均为Claude大模型所擅长,具体包括:

  1. TypeScript:核心开发语言;
  2. React+Ink:UI层基于React开发,借助Ink框架实现交互式命令行界面;
  3. Yoga:由元宇宙(Meta)开源的布局系统,基于约束式布局设计,适配性极佳。终端应用需要支持各种尺寸的终端窗口,而Yoga能完美解决这一问题;
  4. Bun:构建与打包工具,相比Webpack、Vite等工具,Bun的速度优势显著。

Ink框架是打造美观终端UI的利器,例如,要实现一个实时更新的测试结果计数器UI,只需用React编写简单代码即可:

import React, {useState, useEffect} from 'react';
import {render, Text} from 'ink';
const Counter = () => {
  const [counter, setCounter] = useState(0);
  useEffect(() => {
    const timer = setInterval(() => {
      setCounter(previousCounter => previousCounter + 1);
    }, 100);
    return () => clearInterval(timer);
  }, []);
  return <Text color="green">{counter} tests passed</Text>;
};
render(<Counter />);

(以上为控制台计数器的核心代码,来源:GitHub Ink官方仓库)

Claude Code通过npm进行分发,作为Node生态中最主流的包管理工具,npm能实现工具的快速安装与更新。只需安装Node 18及以上版本,执行以下命令即可完成Claude Code的全局安装:

npm install -g @anthropic-ai/claude-code

安装完成后,在终端输入Claude命令即可启动工具。

技术栈选择原则:模型适配,自主开发

在AI领域,有模型适配(on distribution) 和模型不适配(off distribution) 两个概念:前者指模型本身已擅长处理相关任务,后者指模型对相关任务的处理能力较弱。

Claude Code团队的技术栈选择,始终遵循模型适配原则,只选用Claude大模型擅长的技术。TypeScript和React正是模型的强项,因此成为了核心选择;若选择一款Claude不擅长的小众技术栈,就属于模型不适配,会大幅增加开发成本。鲍里斯总结道:

即便采用模型不适配的技术栈,模型也能通过学习掌握相关能力,但这需要我们进行大量的教学和调试工作。我们想要的是一款无需额外教学,Claude Code能自主开发、维护的技术栈——而目前的选择完美实现了这一点:Claude Code中约90%的代码,都是由它自己编写的。

架构设计:极简核心,模型为主

令人意外的是,Claude Code的客户端侧并没有复杂的模块、组件和业务逻辑——对于一款能实现文件系统和代码库遍历的工具而言,这一点尤为特别。本质上,Claude Code只是Claude大模型之上的一个轻量级外壳,几乎所有核心工作都由模型完成,架构的核心设计包括:

  1. 由模型定义UI,并提供供模型修改UI的钩子函数;
  2. 为模型提供各类可调用的工具;
  3. 底层框架仅做基础支撑,不干预模型的核心工作。

Claude Code团队始终坚持少写业务逻辑的原则,鲍里斯表示:

这听起来可能有些奇怪,但我们的开发理念是,让用户能最直接地感受大模型的原生能力。我们坚信,模型的潜力远大于当前各类产品所展现的水平。
如今很多代码开发工具,反而成了模型的束缚:它们添加了大量的UI组件和脚手架,看似为用户提供了便利,实则让模型束手束脚。那些为提升用户体验而设计的功能,最终限制了模型能力的发挥。因此,我们始终坚持极简的UI设计。
每次大模型迭代升级后,我们都会删除大量代码。例如,当Claude 4.0模型发布后,我们删除了约一半的系统提示词,因为模型的能力已经足够强大,无需这些提示词的引导。我们始终坚持在模型周围减少代码冗余,包括精简提示词、精简工具集——我们会持续删除无用工具,尝试开发新工具。

本地运行:拒绝虚拟化,追求极简

Claude Code采用本地运行模式,不依赖虚拟化技术。研发初期,团队曾考虑过多种部署方式:虚拟机(如Docker容器)、云端部署,以此打造沙箱环境,提升安全性。但最终选择了本地运行,核心原因就是极简。鲍里斯说:

在所有设计决策中,我们几乎都会选择最简单的方案。对于"批处理命令在哪里运行"和"文件系统在哪里读写"这两个问题,最简单的答案就是本地。
因此,我们确定了最终方案:Claude Code在本地执行批处理命令,在本地读写文件系统,全程不使用虚拟化技术。

权限系统:安全为核心,灵活可配置

Claude Code最复杂的模块,当属权限系统。本地运行模式下,智能体可能会执行一些不可逆的危险操作(如删除文件),而权限系统就是保障安全的核心。

团队依旧以极简为原则,设计了操作前权限确认的核心逻辑,用户在智能体执行操作前,可选择以下三种权限授予方式:

  1. 单次授权:仅允许本次执行该操作;
  2. 永久授权:本次及未来所有会话中,均允许执行该操作;
  3. 拒绝授权:禁止执行该操作,并可引导Claude调整操作方式。

示例:删除文件前的权限确认

删除test.txt文件
Bash(rm /Users/gergelyorosz/Documents/Projects/test.txt) 运行中...
执行Bash命令:rm /Users/gergelyorosz/Documents/Projects/test.txt
操作:删除test.txt文件
是否继续?
1. 是
2. 是,且后续在/Users/gergelyorosz/Documents/Projects目录下执行rm命令时,无需再次确认
3. 否,告知Claude调整操作方式(按esc键)

鲍里斯表示,权限系统的打磨耗费了大量精力:

我们的核心原则是:用户运行Claude Code后,工具不得在未获得授权的情况下,修改用户系统中的任何内容——这是底线,否则会带来极大的安全风险。
但同时,我们也为用户提供了灵活的选择,例如:用户可以在特定工作场景中,设置"免授权"规则,避免重复的权限确认操作。
我们的权限系统包含诸多细节设计,例如,当智能体提交命令后,系统会对命令进行静态分析,检查该命令是否已在配置文件(settings.json)中被加入白名单。
配置系统采用多层级设计,支持按项目、按用户、按公司进行个性化配置,且配置文件可在团队内共享。我们发现,很多团队会共享白名单配置文件,将代码提交等常规命令加入白名单,避免Claude Code反复请求授权。

其他核心功能

尽管核心设计极简,但Claude Code拥有数十项丰富功能,部分核心功能如下:

  1. 钩子函数(Hooks):支持为Claude Code创建自定义shell命令;
  2. MCP协议支持:连接MCP服务器,为Claude Code赋予更多能力(可参考《模型上下文协议(MCP)深度解析》);
  3. 代码仓库集成:支持GitHub Actions,可无缝集成到GitLab CI/CD流程;
  4. 灵活的输出样式:支持切换输出样式,也可自定义样式,内置样式包括:
    • 解释式:详细讲解代码的实现思路与选择;
    • 学习式:协作式输出,Claude会让用户亲自完成一些小任务,帮助用户保持参与感、动手实践并学习新知识——这对初级工程师或零基础学习者尤为友好;
  5. 个性化配置:支持通过各类配置文件,自定义终端、模型、状态栏等各项参数;
  6. 子智能体(Subagents):下文将详细解析;
  7. 企业级功能:支持身份与访问管理(IAM),可在企业内部部署使用,还能查看全公司的工具使用分析数据;
  8. Claude Code SDK:基于Claude Code的智能体核心框架,开发自定义AI智能体。

(更多最新功能,可参考《Claude Code新功能汇总》)

三、极速迭代:数天完成功能开发,日均数十次内部发布

这支约十几人的工程师团队,保持着惊人的开发速度,核心数据如下:

  1. 内部发布:日均60-100次——工程师每次对代码进行修改后,都会发布一个新的内部npm包,Anthropic全体员工均使用内部版本,研发团队能快速获得用户反馈;
  2. 代码提交:今夏,团队工程师日均提交约5个代码合并请求——远高于多数科技公司日均1-2个的常规水平;
  3. 外部发布:日均1次——几乎每天都会发布一个正式版本,完成产品部署。

案例:两天完成20个原型,打造待办清单功能

Claude Code团队的原型验证效率,远超行业常规水平,待办清单功能的开发就是典型案例。鲍里斯向我详细介绍了该功能的研发过程:他在两天内,仅用数小时就完成了约20个原型的开发与测试。

他还分享了各版本原型的实际提示词,每完成一个原型后,他都会按以下步骤迭代:

  1. 对原型效果进行微调;
  2. 实际试用,体验交互感受;
  3. 若体验良好,分享给同事收集反馈;
  4. 若体验不佳,编写新提示词,开发全新原型。

原型1:完成即展示

设计思路:待办清单是追踪Claude工作进度的简易方式,因此设计为在最新工具调用下方,实时展示待办项完成状态。
提示词:让待办项不再随操作实时弹出,隐藏待办项的工具使用记录和结果,在输入框上方固定渲染待办清单,用灰色字体标注标题"/todo (1/3)"。
实际效果:执行"创建待办清单:计算2+2、3+3、4+4,并完成计算"后,待办清单会在输入框上方显示,标注已完成2项,剩余1项。

原型2:底部进度展示

设计思路:将待办项的更新内容逐行内联展示,在模型处理待办项时,用粗体标题标注工具使用情况,并保留"第2步/共4步"的进度提示,在后方添加灰色的"/todo查看"标识。
实际效果:计算时会实时显示"计算2+2...(第1步/共3步 ·/todo查看)",进度直观,但无集中的待办清单展示。

原型3-4:交互式悬浮胶囊组件

设计思路:参考后台任务的展示方式,在输入框下方添加一个交互式悬浮胶囊组件,显示"待办:1/3",可展开查看详细进度。

  • 原型3:实现基础的悬浮胶囊,显示实时进度;
  • 原型4:让胶囊组件支持交互,展开后可看到待办项详情,还能执行"切换状态、删除待办、全部完成、清空已完成"等操作。

原型5-6:侧边抽屉式展示

设计思路:舍弃悬浮胶囊和粗体标题,在输入框右侧添加灰色分隔线,垂直居中展示待办清单,待办项活跃时显示,完成后隐藏。

  • 原型5:实现基础的侧边抽屉,但交互时存在画面抖动问题;
  • 原型6:为抽屉添加动画效果,解决抖动问题,提升交互体验。

原型7-9:提升可见性的顶部固定展示

设计思路:为最大化提升待办清单的可见性,将其固定在输入框上方,持续展示。

  • 原型7:基础顶部固定展示,待办项过多时会占用大量屏幕空间;
  • 原型8:增加截断功能,最多显示5个待办项,超出部分标注"···还有4项",支持按Ctrl+R查看全部;
  • 原型9:在清单上方添加灰色的"待办:"标题,优化视觉层次。

原型10-20:加载动画区域整合

设计思路:持续优化待办清单的展示位置,最终将其整合到加载动画区域,既保证可见性,又不占用额外屏幕空间。
实际效果:在模型执行操作的加载动画旁,实时显示待办进度,还能看到下一个待办项,交互体验大幅提升。

最终迭代:支持快捷键切换

团队从社区收集到大量反馈,用户希望能自由控制待办清单的显示/隐藏。因此,团队在第20个原型的基础上,增加了Ctrl+T快捷键切换功能——这就是如今正式版本中的待办清单功能。
当前正式版效果:执行睡眠命令待办清单时,可通过Tab键切换待办步骤的显示状态,实时查看每个步骤的执行情况。

原型验证的革命:AI智能体带来的效率提升

借助AI智能体,团队实现了日均5-10个原型的开发与测试,这在传统开发模式中是无法想象的。过去,原型验证是极其耗时的工作,即便有两天时间,能完成2个不同的原型已属不易。但如今,AI智能体大幅加速了原型开发,让高频次的原型测试成为可能。

并非所有团队都能达到如此快的速度,但我们必须改变对原型验证耗时的固有认知——AI工具正在彻底重构原型开发的效率。

Claude Code团队的原型验证,核心围绕UI交互体验优化展开,你可以在相关技术贴中看到各版本原型的动画演示。建议观看原型迭代的视频,直观感受功能的进化过程,以及鲍里斯如何通过不断尝试新创意,最终打磨出如今的待办清单功能。

四、终端用户体验重构:大语言模型赋能的全新交互形态

Claude Code团队带来了诸多终端交互的创新理念,而这一切的前提,是大语言模型能对每个终端命令做出智能响应——这是首次实现真正意义上的交互式终端,也让这些创新功能有了实际应用价值。本文将介绍其中部分创新(后续将展开详细解析)。

关键术语译法说明

  1. product overhang:产品能力溢出(AI领域专属概念,指模型能力未被产品充分发挥)
  2. on distribution/off distribution:模型适配/模型不适配(贴合AI技术语境,替代字面翻译)
  3. dogfooding:内部试用(科技行业通用术语,指产品先在公司内部使用测试)
  4. subagents:子智能体(AI智能体领域标准译法)
  5. pull request (PR):代码合并请求(程序员通用术语)
  6. feature flags:功能标志(软件开发术语,指通过标志控制功能开启/关闭)
  7. pill:胶囊组件(UI设计术语,指悬浮的小型矩形交互组件)
  8. drawer:抽屉组件(UI设计术语,指侧边可展开/隐藏的组件)
  9. spinner:加载动画(终端/UI设计术语,指操作中的动态加载标识)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容