Linguista

关于Claude Code的对话「Rosetta」

内容概述

本文整理了 Anthropic 公司的一场深度对话,由 Claude 关系主管 Alex Albert 访谈 Claude Code 的创造者 Boris Cherny。本次访谈的核心是 Anthropic 推出的代理式编程工具——Claude Code。对话从 Claude Code 的起源谈起,揭示了其作为 Anthropic 内部高效工具的诞生背景,并介绍了基础的安装与使用方法。Boris 进一步阐述了其“代理式”核心体验,并将其置于从打孔卡到提示词的编程范式演进历程中进行解读,为我们理解AI时代软件工程的变革提供了独特的视角。访谈还涵盖了新模型(如 Claude 4)为工具带来的能力跃升,以及一系列提升效率的实用技巧,包括任务规划、扩展思考和 Claude.md 文件的妙用。最后,双方探讨了 Claude Code 的未来发展方向。这篇访谈录为希望深入了解和高效使用 Claude Code 的开发者,提供了一份兼具宏观视角与微观技巧的详实指南。

内容纲要

Claude Code 访谈录
├── 一、产品介绍与起源
│   ├── 产品定位:终端中的代理式编程工具
│   ├── 设计初衷:通用性、简洁性与快速迭代
│   ├── 起源故事:从内部高效工具到公开发布
│   └── 开发理念:强调“Dogfooding”(内部使用)
├── 二、如何上手使用
│   ├── 安装与运行:通过NPM安装,终端启动
│   └── 环境兼容性:支持各类终端及IDE内置终端
├── 三、目标用户与定价模型
│   ├── 目标用户:大型企业、处理大型代码库的开发者
│   └── 定价与订阅:集成于Claude Max订阅服务
├── 四、核心体验与编程范式的演进
│   ├── 代理式体验:自主使用工具完成复杂任务
│   └── 编程范式演进:从“打孔卡”到“提示词”的转变
├── 五、模型升级带来的提升
│   ├── Claude 4模型优势:更强的指令遵循能力与“一次性”完成任务
│   └── 新应用场景:集成于GitHub Actions等自动化流程
├── 六、工作流与实用技巧
│   ├── 集成工作流
│   │   ├── GitHub Actions集成:通过`@Claude`分配任务
│   │   └── 混合工作流:后台处理简单任务,交互式处理复杂任务
│   └── 高级使用技巧
│       ├── 任务规划:先制定计划再编码
│       ├── 扩展思考:获取上下文 -> 思考 -> 编码
│       ├── 使用`Claude.md`文件
│       │   ├── `Claude.md` (团队共享)
│       │   ├── `Claude.local.md` (个人偏好)
│       │   ├── 全局与嵌套`Claude.md`文件
│       │   └── 记忆模式:使用`#`键保存指令
└── 七、未来展望
    ├── 方向一:深化工具集成
    └── 方向二:简化轻量任务处理

Claude Code 访谈录

访谈者 (Alex): Alex, Anthropic 公司 Claude 关系主管 受访者 (Boris): Boris, Anthropic 公司技术团队成员,Claude Code 创造者

一、 Claude Code 产品介绍与起源

Boris: 我们当时在讨论,“这是我们的秘密武器吗?我们确定要把它公之于众吗?” 因为这正是 Anthropic 的每一个人每天都在使用的工具。

Alex: 大家好,我是 Alex,在 Anthropic 负责 Claude 的对外关系。

Boris: 我是 Boris,一名技术团队成员,也是 Claude Code 的创造者。

Alex: 今天,我们将要讨论 Claude Code。Boris,首先,请问什么是 Claude Code,它是如何诞生的?

Boris: 好的,Claude Code 是一种在终端(terminal)里进行“代理式编程”(agentic coding)的方式。你不需要采用新的工具,不需要使用新的 IDE,也不需要访问某个特定的网站。它就是代理式编程,并且在你工作的任何地方都能运行。我认为这实际上源于 Anthropic 的工程师和研究人员完成工作的方式,因为大家使用的技术栈五花八门,非常奇特,并没有一个所有人都使用的标准技术栈。有人用 Zed IDE,有人用 VS Code,还有人会说:“你休想从我这里夺走我的 Vim,除非我死了。” 我们想构建一个能为所有人服务的工具,最终我们选择了终端。

Alex: 我明白了,所以终端几乎是所有界面中最通用的,因为它很灵活,并且已经融入了每个人的工作流程中。

Boris: 完全正确。而且它恰好也是最简单的,正因为如此简单,我们才能进行非常快速的迭代。事后看来,这成了一件好事,但这绝对不是我们最初的意图。

Alex: 我们是在二月份发布 Claude Code 的,到现在已经三个多月了。情况怎么样?社区的反应如何?

Boris: 简直是疯狂,完全出乎意料。在发布之前,我们还不确定是否要发布它。这个工具在内部极大地提升了我们工程师和研究人员的生产力,我们为此进行了一场辩论,我们在想:“这是我们的秘密武器吗?我们确定要把它公之于众吗?” 因为这正是 Anthropic 的每一个人每天都在使用的工具。是的,我认为最终证明这是个正确的决定,因为它让人们更有效率,而且大家也喜欢它。

Alex: 是在哪个时刻让你觉得我们必须发布它?

Boris: 它最开始只是在我们核心团队的一个小范围内使用。后来,我们把它提供给了所有 Anthropic 的员工。当时有一个日活跃用户(DAU)的图表,只看内部员工,那个图表连续三天都是垂直上升的。我们当时就觉得,“好了,这太疯狂了,这绝对是个爆款。” 之后,我们把它提供给了一些外部人士,只是想看看是不是我们自己想多了,这个工具到底有没有用。所有的反馈都非常积极,我想答案已经很明显了。

Alex: 所以它真的是先在 Anthropic 内部火起来,然后所有的工程师和研究人员都在使用它,这让我们觉得理应把它推向世界。

Boris: 是的,这也是我们开发这个工具的一个重要方式。Claude Code 是用 Claude Code 写出来的。几乎所有 Claude Code 的代码都是用 Claude Code 编写、重写、再重写的。我们非常信奉“自己吃自己的狗粮”(dogfooding)这一理念。这太重要了,因为当你使用一个明显经过开发者自用的产品时,你是能感觉到的。在我每天使用的产品中,我能感觉到哪些是开发团队自己一直在用的,哪些不是。我们就是希望这个产品,当你上手尝试时,能明显感觉到其中倾注了大量的爱,并且这是我们自己也在使用的工具。

二、 如何上手使用

Alex: 很有趣。那么,如果我是一个新开发者,想要使用 Claude Code,具体要怎么做才能让这个产品运行起来?

Boris: 嗯,非常简单。你只需要从 NPM 下载它。命令是 npm install -g @anthropic-ai/claude-code,有点像一句咒语。你下载它,你的系统上只需要有 Node.js,很多人都有这个环境,然后就完成了。你打开它,它会引导你完成剩下的所有事情。

Alex: 哇,所以你只需在终端里输入 Claude,按下回车键,然后就行了?就像 Claude 会引导你完成剩下的过程,然后你就可以开始和它对话,它就会开始写代码。

Boris: 完全正确,是的。你安装它,然后运行 Claude。其中一个很酷的地方在于,就像你说的,Claude 可以在任何终端里运行。无论你用 iTerm2、Apple Terminal,还是任何你使用的终端,甚至在 SSH 会话或 TMUX 会话里,它都能工作。实际上,人们使用 Claude Code 最主要的方式之一是在 IDE 的内置终端里。例如,你可以在 VS Code 的终端里运行 Claude,它会变得更强大。你将不再是在终端里看到文件编辑,而是在 IDE 本身看到美观、清晰、大尺寸的编辑界面。我们还会从 IDE 中获取更多信号来让 Claude 更智能,但体验是一样的,你只需在终端里运行 Claude

三、 目标用户与定价模型

Alex: 你认为目前 Claude Code 的理想客户是谁?谁在用 Claude Code?是哪一类人?哪一类开发者?

Boris: 我认为最重要的一点是,Claude Code 相当昂贵。如果你只是在周末写写代码,可以稍微试用一下。你获取一个 API 密钥,充值 5,就可以体验了。但如果你想用它来做更严肃的工作,每月可能会花费你 50100 甚至 200 美元,范围很广,取决于你的用途。但通常可以预计每月大约 50 美元。有很多大型企业在使用它,所以如果你在一家大公司,它往往非常适合。它在处理大型代码库方面表现出色,没有索引步骤,也不需要额外的设置。你只需运行它,它就能在几乎所有大型代码库和任何语言中开箱即用。

Alex: 那么它和 Claude Max 的集成是怎么回事?如何运作?

Boris: 我们发现,当人们使用 API 密钥来付费时,他们会有点担心自己的使用量,因而没有像他们想的那样尽情使用。所以,我们将 Claude Code 作为 Claude Max 服务的一部分。你支付 Max 订阅费,每月大概 100200 美元,你可以选择价格点,有不同的使用量限制。这样你基本上可以随心所欲地使用 Claude Code。实际上,你不会达到任何速率限制,很少有人会。这等于是无限制的 Claude Code。

Alex: 哇,所以你在 Claude.ai 和 Claude Code 上的账户之间,通过这一个订阅套餐就统一了。

Boris: 正是如此。

四、 核心体验与编程范式的演进

Alex: 好的。如果我是一名开发者,正在使用 Claude Code,我的代码库在我的电脑上。我进入终端,输入“Claude”,按下回车。接下来会发生什么?

Boris: Claude 就开始工作了。它会使用工具,走出去做它该做的事。它会采取很多步骤。如果你以前只在 IDE 中用过编程助手,习惯于那种助手帮你补全一行或几行代码的体验,那这完全不是一回事。它非常、非常的“代理式”(agentic)。Claude 会理解你的请求,然后会使用它所掌握的所有工具——比如 Bash、文件编辑等等——来探索代码库,读取文件,获取所需的上下文,然后编辑文件,做出你想要的任何更改。

Alex: 哇,这与我们过去二三十年的编程方式相比,或许是一种全新的编程形态。

Boris: 是的,对我来说,我的编程之旅可以追溯到很久以前。我编程已经有一段时间了,但我的祖父实际上是 20 世纪 40 年代苏联最早的计算机程序员之一。他用打孔卡(punch cards)编程,因为当时用软件编程还没出现。他会用那些大大的打孔卡,在美国当时有一种 IBM 的设备,算是那个时代的 IDE,他用那个来为纸质打孔卡编程。他就是那样编程的,而且每晚都会把这些卡片带回家。我妈妈告诉我她小时候的故事,她会在这些卡片上用蜡笔画画,对她来说,这是她成长经历的一部分。从那时起,编程一直在演进。先是打孔卡,然后有了汇编语言(assembly),接着是第一批高级语言,比如 COBOL 和 FORTRAN。到了 80 年代,我们进入了 Java 和 Haskell 这类类型化语言的时代,那真是激动人心。然后在 90 年代,我们有了 JavaScript 和 Python,这些是解释型语言,同时仍然能提供很好的安全性。我认为编程语言和使用编程语言的“体验”是同步发展的。大约在 Java 出现的时候,你也看到了像 Eclipse 这样的 IDE,它拥有最早的类型提示功能。你输入一个字符,就会弹出一个下拉菜单,IDE 会问你“你是想输入这个、这个还是这个?” 这简直不可思议,因为作为人类,你不再需要去阅读代码了。所以我认为这就是演进的过程。现在,语言的发展似乎已经趋于平稳,所有现代语言都属于相似的语系,如果你粗略地看,它们都非常相似。但现在,“体验”正在发生真正的变革。你现在不必再处理打孔卡、汇编语言,甚至代码本身,你处理的是提示词(prompts),而模型会解决编程的部分。作为一个程序员,这让我感到无比兴奋。

Alex: 是的,我喜欢这个说法。我们基本上是从“打孔卡”走向了“提示词”。

五、 模型升级带来的提升

Alex: 在模型方面,我想谈谈。直到最近,Claude Code 主要由 Claude 3.7 Sonnet 驱动。现在,随着 Claude 4 系列模型开始为 Claude Code 提供支持,这解锁了哪些能力?你认为我们未来的方向是什么?

Boris: 大概在模型发布前几个月,我们开始在内部试用它们,我记得我当时下巴都惊掉了,感觉它的能力增强了太多。我认为,当你同步地在终端中使用 Claude Code 时,许多新的用例被解锁了。其中一个巨大的变化是,Claude 在遵循你的指令方面做得好得多。无论你是在提示中还是在 Claude.md 文件里告诉它要做什么,它往往会直接执行并坚持到底。这是一个巨大的变化,因为 3.7 版本像一头野兽,它是一个了不起的编程模型,但真的很难驾驭。比如你试着让它写测试,它会把你的所有测试都 mock 掉,你会说:“不,我不是这个意思。” 通常你说一两次它就能明白,但它的强大值得你这样做。而现在,有了新一代的 4 系列模型,你不再需要这样做了。它们通常第一次就能做到你想要的样子。而 Opus,感觉比 Sonnet 又高了一个层次。它不仅能很好地理解我的意图,而且还能一次性(one-shot)完成许多以前模型根本做不到的事情。举个例子,我已经好几个月没写过单元测试了,因为 Opus 会帮我写测试,而且几乎每次都能在第一次就完美地一次性完成。这在终端里非常有用,让你能更放手一些。但我认为最酷的用例之一是在 GitHub Actions 和其他环境中运行它。你可以给它一个任务,然后模型就会自己去完成,当它第一次就带着正确的结果回来时,那种感觉太棒了。

Alex: 所以,现在有了 GitHub Actions,我们可以在 GitHub 内部 @Claude,然后让它在后台处理任务,最后带着结果和一个新的 PR 回来。

Boris: 完全正确。

Alex: 好的。

Boris: 是的,你像平常一样在终端里打开 Claude,运行 Claude,然后运行 /install GitHub Action,它会引导你完成安装步骤。有几个步骤,但都是自动的,你只需要点击一两个按钮,它就会在你的 GitHub 仓库中安装 Claude 应用。体验非常酷。在任何 issue 里,你都可以 @mention Claude,就用 @Claude。我每天都在 PR 中使用它。同事提交一个 pull request,我不再是跟他们说:“嘿,你能修复一下这个问题吗?” 我会直接说:“嘿 @Claude,修复这个问题”,然后它就会修复它。我也不再需要请求别人“你能写一下测试吗?” 每次这样做我都觉得有点内疚。现在我只会说:“嘿 @Claude,写测试。” 这已经不成问题了。

Alex: 这对我来说感觉太不可思议了。这完全是编程的一个新维度,我们基本上可以随时随地召唤一个按需待命的程序员来为我们修复这些问题,甚至不是在你的电脑上,而是在后台运行。

Boris: 是的,我认为这只是一个开始,我们开始像与一位程序员同事一样与模型互动。我不再是 @ 一位同事,而是 @ Claude。

六、 工作流与实用技巧

Alex: 当我们转向这种模式,在后台管理所有这些 Claude Code 实例时,这对软件工程意味着什么改变?

Boris: 我认为需要发生一点思维上的转变。有些人非常喜欢控制代码,如果你习惯于手写代码,我认为现在行业正在转向一个你编排代理来编写代码的时代,这更多的是关于审查代码,而不是手写代码。我认为人们必须应对这一转变。作为一个程序员,这令人难以置信地兴奋,因为你可以用更快的速度完成更多的事情。当然还有一些事情我需要深入进去手写代码,但现在我开始害怕做这件事了,因为 Claude 在这方面做得太好了。随着模型能力越来越强,那些你必须手写代码的场景——无论是复杂的数数据模型,还是非常精密的系统组件间的交互,或是难以在提示中清晰描述的东西——我认为这些场景会越来越少,越来越多的编程工作将是关于编排代理。

Alex: 我想更深入地了解一下你的工作流程。你目前是如何结合使用所有这些工具的——从 IDE 集成,到终端里的 Claude Code,再到 GitHub 中的后台 Actions?

Boris: 我想我做的工作有两种。有些事情非常简单,比如写一些测试或修复一个小 bug。通常,我会在 GitHub issue 里让 Claude 去做。或者,我通常会同时运行几个 Claude 实例,我有几个我们代码库的检出版本(checkout),在其中一个终端标签页里,我会让 Claude 去做某件事,然后按下 shift-enter 进入自动接受模式,几分钟后我再回来,当 Claude 完成时我会收到一个终端通知。

Alex: 哦,哇。

Boris: 还有第二种工作,需要你更多地参与其中,我认为这仍然是工程工作的主体。大多数工程任务无法一次性完成,仍然很难。所以,我会在我的 IDE 终端里运行 Claude,让它做一些事情,在某个时候,它可能会卡住,或者代码不完美。这时我就会进入我的 IDE 进行编辑,完成那“最后一英里”的修改。

Alex: 我明白了,所以这几乎形成了一个任务难度与你和 Claude 交互方式的对应光谱。

Boris: 是的,当你刚开始使用这类工具时,会有一个学习期。人们有时会尝试用它做太多的事情,你给它一个太难的任务,它处理不了,你就会对结果不满意。这是每个人都必须经历的学习过程,以便在内心建立一个标准,了解 Claude 能做什么,什么可以一次性完成,什么需要两次,以及这种互动是怎样的。不幸的是,这个标准会随着每个新模型而改变,所以你不能只学一次。每当有新版本发布,能力就会增长,Claude 就能在第一次就正确地完成更多的事情,所以你每次都可以对它提出更高的要求。

Alex: 是的,我注意到了这一点,即使在编码之外也是如此。这些模型变化如此之快,改进如此之快,以至于如果你六个月前尝试过一个模型并因某个任务而放弃它,那么现在仍然保持这种看法是不对的。你几乎每次都必须重置你的直觉。

Alex: 我很好奇,从开发者或 Anthropic 内部人员的使用情况来看,还有没有其他的使用技巧或窍门?大家都在用 Claude Code 做哪些酷炫的事情?

Boris: 我觉得,我看到的高级用户(无论是在 Anthropic 内部还是外部)开始做的最重要的一件事,就是在开始编码前,要求 Claude 制定一个计划。新手刚开始用 Claude Code 时,有时会直接说:“嘿,帮我写这个非常庞大复杂的功能”,然后当结果与他们脑海中想象的不一样时,就会感到沮丧。一个很好的协调你和 Claude 意图的方法,就是让它先制定一个计划给你过目。我有时会明确地说:“这是我想解决的问题。在你编码之前,先头脑风暴一些想法,给我列出一些解决方案,并且暂时不要写任何代码。” 然后 Claude 就会给我选项一、选项二、选项三。我可能会说:“好的,选项一和选项三听起来不错,我们把它们结合起来。现在你可以开始编码了。” 它通常很听话。

要将此提升到新层次,另一个方法是要求 Claude 使用“扩展思考”(extended thinking)。这在 Claude 已经有了一些上下文的情况下效果最好。如果 Claude 还没有任何上下文就开始思考,效果就不会很好。这有点像人,对吧?你可以想多久就想多久,但在你真正去阅读代码之前,你并不知道你到底在做什么。Claude 也是一样,先让它读取文件,然后暂停,接着我再让它思考和头脑风暴一些想法,最后再让它编码。

Alex: 有意思,所以这是一种交错进行的方法,它能够调用一个工具,思考结果,思考下一步该做什么,然后再调用另一个工具,如此往复。

Boris: 是的,完全正确。我们实际上在内部基准测试中也看到了这一点,当我们对不同类型的评估进行内部基准测试时,通常,如果先获取上下文,然后思考,再使用工具进行编辑、使用 Bash 等等,结果会好很多,作为用户的感觉也是如此。

Alex: 嗯,跟我讲讲 Claude.md 文件吧,这些文件看起来非常强大。

Boris: 是的,Claude.md,我们用它来做所有事情。它是 Claude 的记忆库。它是你想在团队中共享的给 Claude 的指令,也是你想在所有项目中共享的指令。所以,是的,它非常强大。Claude.md 有很多不同的种类。最简单的一种是名为 Claude.md 的文件,你把它放在仓库的根目录。它就是一个 Markdown 文件,是的,CLAUDE 全部大写,md 小写。当你在那个文件夹里启动 Claude 时,它会自动读取这个文件。所以,任何你希望 Claude 每次都执行的指令,比如你希望它频繁运行的 Bash 命令、它在做修改时应该了解的重要文件、重大的架构决策,或者任何类似的东西,比如 MCP 服务器,你都可以把它放进 Claude.md 文件里。

还有第二种 Claude.md,这种是需要你提交到版本控制里的,所以你希望写一次,然后和整个团队共享,这样大家就不用自己再写了。

Alex: 是的,有意思。

Boris: 第二种 Claude.md 只属于你自己,它叫作 Claude.local.md。这个文件也放在同一个地方,但只供你个人使用,你不会和团队共享它,你可以用 git ignore 来忽略它,这样就不会提交上去。第三种是全局的 Claude.md,它放在你用户主目录下的 .Claude 文件夹里。实际上大多数人不用这个,但如果你想,可以把任何你想在所有 Claude 实例间共享的指令放在那里。最后一种是,你可以把 Claude.md 文件放在代码库中任何目录下的任何嵌套文件里。当 Claude 认为相关时,它会自动把它拉取进来,以获取关于如何处理那部分代码库的指令。

Alex: 所以这些可以是具体的指令,甚至是关于编码风格或任何类似事情的个人偏好,关于 Claude 应该如何互动,它应该了解你的哪些情况,你喜欢如何工作,可以是任何事情。

Boris: 完全正确。有时当我在一次对话中看到 Claude 做得特别好或特别差时,我会按下井号键(#),这会进入记忆模式,然后我会告诉 Claude:“嘿,你应该记住这个。” 这可以是一条指令,例如,“每当我修改代码时,总要运行 linter(代码检查工具)”,我告诉它这个,它就会把这条指令整合到正确的记忆文件中。

Alex: 有意思。我想我需要更多地使用这个功能。

七、 未来展望

Alex: Claude Code 的下一步计划是什么?

Boris: 我认为我们正在考虑两个方向。第一个是如何让 Claude 更好地与你所有的工具协同工作。它从与所有终端兼容开始,现在它可以与许多 IDE 和很多 CI 系统协同工作。我们一直在思考这方面的下一步是什么,以确保它能与你使用的所有工具配合,Claude 应该知道如何使用它们,并且应该能够原生支持这些工具。

第二件事是如何让 Claude 更好地处理那些你可能不想打开终端来做的简单任务。比如,如果我可以在一个聊天应用里标记(tag)Claude,让它为我修复一个问题,就像我在 GitHub 上做的那样。这意味着什么?什么样的体验是好的?我们正在尝试各种选项,我们希望确保在把它交给用户之前,它的体验是真正优秀的。

Alex: 这很令人兴奋。嗯,我希望能看到 Claude Code 无处不在,非常期待。感谢你,Boris,谢谢这次的谈话。

Boris: 是的,谢谢你。


要点回顾

一、 Claude Code 产品介绍与起源

二、 如何上手使用

三、 目标用户与定价模型

四、 核心体验与编程范式的演进

五、 模型升级带来的提升

六、 工作流与实用技巧

七、 未来展望