Claude Code 首席工程师揭秘 AI 如何重塑开发日常!

AI 正在颠覆软件开发!

原文链接:https://www.youtube.com/watch?v=Yf_1w00qIKc

责编 | 梦依丹
出品丨AI 科技大本营(ID:rgznai100)

AI 正在颠覆软件开发!

近日,Anthropic 发布了其技术专家 Boris Cherny(Claude Code 首席工程师)与对外沟通负责人 Alex Albert 的深度对话,揭秘了 AI 编程工具 Claude Code 的诞生、核心能力、使用技巧以及未来展望。从终端的普适性到新模型的强大赋能,再到 Claude.md 文件的妙用,一个由 AI 辅助甚至主导的编程新时代正加速到来。

在 Boris 与 Alex 的对谈中,他们围绕 Claude Code 的产品定位、差异化能力和使用体验进行了深入交流。

对话精彩摘要:

  • AI 编程新范式,终端即是主场:Boris 强调,Claude Code 的核心理念是在开发者熟悉的终端环境中提供 AI 辅助编程,无需切换工具或 IDE,实现无缝集成。

  • 源于内部实践,是久经考验的生产力工具:Claude Code 并非空中楼阁,而是 Anthropic 工程师和研究员日常使用的“秘密武器”。它经历了内部广泛的“自己先用”(Dogfooding)验证,Boris 自豪地表示 “Claude Code 就是用 Claude Code 写出来的”。

  • 编程范式进化:从“打孔卡”到“提示词”:Boris 生动地将 AI 编程的演进类比为从“打孔卡时代”到“提示词时代”的跨越。



超 3000 人的「AI 产品及应用交流」社群,不错过 AI 产品风云!诚邀所有 AI 产品及应用从业者、产品经理、开发者和创业者,扫码加群:

进群后,您将有机会得到:


· 最新、最值得关注的 AI 产品资讯及大咖洞见

· 独家视频及文章解读 AGI 时代的产品方法论及实战经验

· 不定期赠送热门 AI 产品邀请码



以下是 Boris 与 Alex 对话的中文翻译:

Alex: 今天我们来聊聊 Claude Code。Boris,先给我们介绍下,什么是 Claude Code?它是怎么来的?
Boris: 好呀。Claude Code 简单说,就是在你的终端(命令行窗口)里用 AI 帮你写代码的一种方式。你不需要换新工具,不需要用新 IDE(集成开发环境),也不需要访问什么特定的网站。它就是这种 AI 辅助编程的模式,在你平时工作的地方就能用。
这源于我们 Anthropic 工程师和研究员们平时用工具干活的方式。因为大家用的技术栈五花八门,特别杂,没有一个统一的标准。有人用 Zed 这个 IDE,有人用 VS Code,还有些人死守着 Vim,觉得“谁也别想从我这儿抢走它!” 我们想做个对所有人都适用的工具,所以最后选择了终端。
Alex: 我明白了。所以终端几乎是所有界面里最通用的了,因为它灵活,而且已经融入了大家的工作流。
Boris: 完全正确。而且它恰好也是最简单的,正因为它简单,我们才能迭代得特别快。事后看来,这反倒成了一件好事,但当初我们可没这么想。
Alex: 有意思。那如果我是一个新手开发者,想用 Claude Code,具体要怎么操作呢?
Boris: 嗯,很简单。你只要从 NPM(一个软件包管理器)下载就行,命令是 
npm install -g @anthropic-ai/claude-code
输起来是有点像念咒语哈。下载下来,系统里有 Node.js 就行。然后就搞定了。打开它,它会一步步引导你完成剩下的设置。
Alex: 哇!所以,我只要在终端里输入 `claude`,敲回车,就行了。然后 Claude 就会引导我完成剩下的步骤,接着我就可以跟它对话,让它开始写代码了。
Boris: 没错,没错。你装好之后运行 `claude` 就行。很酷的一点是,就像你说的,Claude 在任何终端里都能用。不管你用 iTerm2、苹果终端,还是其他什么终端,甚至在 SSH 远程连接或者 tmux(一个终端复用软件)会话里,它都能跑起来。
很多人喜欢在 IDE 自带的终端里用 Claude Code。比如,你可以在 VS Code 的终端里运行 Claude,它会变得更强大。这样一来,文件修改就不再是在终端里显示了,而是在 IDE 里,看起来又大又漂亮。
我们还会利用 IDE 提供更多信息,让 Claude 更智能。但使用体验是一样的,你还是在终端里运行 Claude。
Alex: 好的。这里面信息量挺大,我待会儿想细聊。不过在此之前,我们二月份发布了 Claude Code。
Boris: 是的。
Alex: 到现在差不多三个多月了。感觉怎么样?社区反响如何?
Boris: 嗯,简直炸了!完全出乎意料。发布之前,我们还不确定要不要发。这工具在我们内部让工程师和研究员的效率大大提升。我们当时还在讨论,这算不算我们的“秘密武器”?我们真要把它分享出去吗?因为这可是 Anthropic 每个人每天都在用的工具。现在看来,这个决定是对的,因为它确实能提高大家的效率,而且大家也喜欢它。
Alex: 是什么时候让你觉得“我们必须发布它”的?
Boris: 一开始只是我们核心团队的几个人在用。后来我们开放给所有 Anthropic 员工,结果那个日活用户图表啊,噌噌噌连着涨了三天,都快垂直了!
我们当时就觉得,这太疯狂了,肯定火了。后来我们又给了一些外部人员试用,想看看是不是我们自己太嗨了,这东西到底有没有用。结果收到的反馈都非常正面。所以,我觉得这事儿就挺明显的了。
Alex: 明白了。所以它首先是在 Anthropic 内部火起来。然后所有的工程师、研究员都在用,这就让我们觉得,是时候把它推向世界了。
Boris: 是的,我们开发这个工具很大程度上就是这么过来的。Claude Code 就是用 Claude Code 写出来的。几乎所有 Claude Code 的代码都是由它自己反复编写和重构。我们非常信奉“自己先用”(也就是所谓的 Dogfooding)的理念。这太重要了,因为当你用一个产品,如果能明显感觉到开发团队自己也在用,那种体验是不一样的。在我日常使用的产品里,我能感觉到哪些是团队自己天天在用的,哪些不是。我们就是想让 Claude Code 成为那种你一上手就能感觉到倾注了很多心血,而且是我们自己也在用的产品。
Alex: 你觉得现在 Claude Code 的理想用户是谁?或者说,都是些什么样的人、什么样的开发者在用它?
Boris: 嗯,首先要说的是 Claude Code 还挺贵的。如果你只是周末写写代码,可以稍微试试。搞个 API 密钥,充 5 美元就能体验一下。但如果你想用它做更严肃的工作,那可能一个月要花掉你,比如说,50、100、200 美元,差不多这个范围。具体看你怎么用,但一般预计可能每月 50 美元左右。
有很多大企业在用它。如果你在一家大公司,它往往特别适合。它处理大型代码库的能力非常惊人,不需要索引步骤,也不需要额外的设置。直接运行就能用,几乎适配所有语言的大型代码库。
Alex: 那它跟 Claude Max(一个订阅套餐)的集成是怎么回事?怎么运作的?
Boris: 是这样的,我们发现大家用 API 密钥付费的时候,会有点担心用量超标。
结果就不敢尽情用。所以我们把 Claude Code 加入了 Claude Max 套餐。你付了 Max 的订阅费——比如每月 100 或 200 美元,你可以选不同的价位,对应不同的用量上限——然后你基本上就可以随心所欲地用 Claude Code 了,实际上你基本不会碰到任何用量限制,很少有人会。可以说是无限畅用 Claude Code。
Alex: 哇!所以 claude.ai(Claude 的网页版)和 Claude Code 的账户都统一到这一个订阅套餐里了。
Boris: 完全正确。
Alex: 那么,如果我是一个开发者,正在用 Claude Code 处理我电脑上的代码库。我打开终端,输入 `claude`,敲回车。接下来会发生什么?
Boris: 嗯,Claude 就开始干活了。它会使用工具,自己去执行任务,会做好多步骤。
所以,如果你以前只用过 IDE 里的代码辅助,习惯了那种系统帮你补全一行或几行代码的体验,那这个完全不一样。它非常非常“智能主动”(agentic)。Claude 会理解你的指令,然后动用它能用的一切工具——比如命令行(bash)、文件编辑等等——来探索代码库,读取文件,获取它需要的上下文信息,然后编辑文件,做出你想要的任何修改。
Alex: 哇!所以,跟我们过去二三十年的编程方式相比,这或许是一种全新的编程形态了。
Boris: 是啊,对我来说,我的编程之路说来话长了。我编程有些年头了,但我爷爷其实是上世纪四十年代苏联最早的一批计算机程序员之一。
他那时候用打孔卡编程,因为用软件编程还没出现呢。他会用那种很大很大的打孔卡,在美国当时有种 IBM 的机器,算是那个时代的 IDE 吧,用来给这些纸质打孔卡编程。他就是这么编程的,每晚都会把这些卡片带回家。我妈跟我讲过她小时候的故事,她会在这些卡片上用蜡笔画画,这对她来说是成长经历的一部分。
然后编程就进化了。从打孔卡,到汇编语言,再到最早的高级语言,像 COBOL 和 FORTRAN。到了 80 年代,有了 Java 和 Haskell 这些带类型的语言,非常令人兴奋。90 年代又有了 JavaScript 和 Python 这些解释型语言,它们仍然能提供很好的安全性。
我倾向于认为编程语言和使用编程语言的体验是同步进化的。比如 Java 出现的时候,你也看到了像 Eclipse 这样的 IDE。它有了最早的那种输入预测功能,你输入一个字符,就会弹出一个下拉菜单,问你‘你是想输入这个还是那个?’,这简直太不可思议了,你再也不用去读那么多代码了。
所以我觉得这就是进化的过程。语言本身我觉得发展到现在,现代语言都属于相似的几个大家族,大体上看都差不多。但编程的体验真的在进化,你不再需要跟打孔卡、汇编甚至代码本身打交道了;你现在跟“提示词”(prompts)打交道,模型来搞定编码的部分。这对我这个程序员来说,简直太令人激动了。
Alex: 这个说法太棒了。基本上,我们就是从“打孔卡时代”迈向了“提示词时代”。
Boris: 是啊。
Alex: 嗯,关于这个我稍后还有几个问题想问你,不过在此之前,我想先聊聊模型方面。直到最近,Claude Code 主要还是由 Claude 3 Sonnet 模型驱动的。现在有了 Claude 3.5 Sonnet 和 Opus 这样的新模型在底层支持 Claude Code,这带来了哪些新的可能性?你觉得我们未来会走向何方?
Boris: 是的,大概在新模型发布前几个月吧,我们内部就开始试用了。我记得当时我的下巴都惊掉了,感觉它们的能力强了太多。所以我觉得很多新的应用场景都被解锁了。
当你在终端里同步使用 Claude Code 时,我觉得一个很大的变化是 Claude 更能听懂你的指令了。你通过提示词或在 Claude 里告诉它做什么,它往往就能照做并坚持下去。这是个巨大的进步,因为之前的 Sonnet 版本有点像头“猛兽”。它是个很棒的编码模型,但是,天啊,太难驾驭了。比如你想让它写测试,它可能会把你的测试全都模拟(mock)掉,你就会说:“不,我不是这个意思。”通常你说个一两次它就能明白。但它实在太强大了,所以也值了。
我觉得现在有了这一代新模型,你不用再费那个劲了。它们通常第一次就能按你的要求做。而 Opus 感觉又比 Sonnet 高了一个层次,它不仅能很好地理解我的意图,而且很多以前模型做不到的事情,它都能“一次搞定”。举个例子,我已经好几个月没有手写单元测试了。
因为 Opus 会帮我写测试,而且几乎每次都能一次性完美搞定。这在终端里非常有用,能让你更省心。但我认为最酷的应用场景之一是在 GitHub Actions(GitHub 的自动化工具)和其他类似环境里运行它。你可以给它一个任务,然后模型就会自己去处理,当它第一次就带着正确的结果回来时,那种感觉太棒了。
Alex: 所以现在有了 GitHub Actions,我们可以在 GitHub 里 @Claude(提及 Claude),让它在后台处理任务,然后带着结果提交一个新的 PR(代码合并请求)。
Boris: 完全正确。你像平常一样在终端打开 Claude,运行 `claude`,然后运行 `/install-github-action`。它会引导你完成安装步骤,有几个步骤,都是自动的,你只需要点一两个按钮。然后它就会在你的 GitHub 仓库里安装 Claude 应用。
是的,体验非常酷。在任何 issue(问题追踪)里,你都可以 @Claude。我每天都在 PR 里用它。同事提交一个 PR,我不用再问他们“嘿,能修一下这个吗?”,我直接说“嘿,@Claude,修一下这个。”然后它就修好了。也不用再问“能写一下测试吗?”——我每次不得不这么说的时候都觉得有点不好意思。
我现在直接说“嘿,@Claude,写测试。”这事儿就再也不是个问题了。
Alex: 我的天,这感觉太不可思议了。这简直是编程的一个全新维度,我们基本上可以随时召唤一个“随叫随到”的程序员帮你解决这些问题,甚至不是在你电脑上,而是在后台运行。
Boris: 是的,我觉得这就像开始像跟同事程序员互动一样跟模型互动了。以前是 @同事,现在是 @Claude。
Alex: 当我们进入一个拥有多个 Claude Code 实例、以智能体协作为基础的管理模式时,你认为这会对软件工程产生怎样的影响?
Boris: 我觉得需要一个思维上的转变。有些人特别喜欢掌控代码。如果你习惯了手写代码,我觉得现在这个行业正在转向一个由你来“指挥”AI 智能体编写代码的时代。更多的是审查代码,而不是手写代码。大家可能需要适应这个转变。但作为程序员,这非常令人兴奋,因为你能用更快的速度做更多的事情。
还是有些地方我得亲自上手写代码,但现在我反而有点怵头了,因为 Claude 写得太好了。
Alex: 有意思。
Boris: 我觉得随着模型能力越来越强,那些你不得不手写代码的场景——可能是因为数据模型复杂,或者是一些非常精妙的东西,比如一堆系统组件间的交互,或者很难用提示词描述清楚的东西——这些场景会越来越少,编程会越来越多地变成指挥 AI 智能体干活。
Alex: 我想更深入地了解一下你的工作流程。你现在是怎么结合使用所有这些功能的——从 IDE 集成,到终端里的 Claude Code,再到 GitHub 里的后台任务?
Boris: 嗯,我做的工作大概有两种。有些事情很简单,比如写点测试,或者修复个小 bug 之类的。通常我会在 GitHub issues 里让 Claude 去做。或者,我通常会同时运行几个 Claude 实例,在我的代码库里开几个工作区。然后在其中一个终端标签页里,我让 Claude 去做点什么,按下 Shift+Enter 进入“自动接受”模式,几分钟后我回来,Claude 完成时我会收到终端通知。
第二种工作就需要你更多地参与了。我觉得这仍然是工程的大部分。大多数工程问题没法一次搞定,还是挺难的。所以我会把 Claude 跑在我的 IDE 终端里,让它做点什么,有时候它会卡住,或者代码不完美。这时我就会在 IDE 里介入,编辑一下,完成最后那点“临门一脚”的修改。
Alex: 我明白了。所以这几乎形成了一个任务难度与你和 Claude 互动方式的对应关系。
Boris: 是的,刚开始用这类工具时会有一个学习期。有时候人们会尝试用它做太多事,给它太难的任务,结果它“卡壳”了,你对结果也不满意。这是每个人都必须经历的学习过程,才能在心里对 Claude 的能力有个谱:它能一次搞定什么,两次搞定什么,那种互动是什么样的。不幸的是,每次模型更新,情况都会变。所以你不能只学一次。每次有新版本发布,能力都会增长,Claude 第一次就能正确完成更多事情,所以你每次都可以多要求一点。
Alex: 没错。我注意到,即便在编程之外,这些模型变化如此之快,进步如此神速,如果你六个月前试过一个模型,然后觉得它不适合某个任务,那么现在还保持这种看法就不对了。你几乎每次都得重新调整你的直觉。
很好奇还有没有其他来自开发者或 Anthropic 内部人员的使用技巧或窍门?大家用 Claude Code 都做了哪些很酷的事情?
Boris: 嗯,我觉得我看到的高级用户(无论公司内外)开始做的最重要的一件事,就是在让 Claude 开始编码之前,先让它制定一个计划。刚开始用 Claude Code 的人有时会说:“嘿,帮我写这个非常庞大复杂的功能”,然后当它没有按照他们脑子里想的方式完成时,他们就会很沮丧。一个很好的方法来统一你和 Claude 的想法,就是让它先制定一个计划,并让你过目。我有时会明确地说:“这是我要解决的问题。在你编码之前,先集思广益,给我列出一些解决思路的清单,暂时不要写任何代码。”然后 Claude 会给我方案一、方案二、方案三,我可能会说:“好的,方案一和方案三听起来不错,我们把它们结合一下。现在你可以开始编码了。”
另一个能把这个提升到新水平的方法是,让 Claude 进行“拓展思考”。如果 Claude 已经有了一些上下文信息,这招效果最好。如果 Claude 还没任何上下文,光是思考,效果就不太好。这有点像人;你可以想多久都行,但除非你去看代码,否则你不会真正知道你在做什么。
Alex: 对。
Boris: 对 Claude 也是一样。先让它读取文件,然后暂停。接着我会让它思考并集思广益,然后再让它编码。
Alex: 有意思。所以是那种穿插进行的方式,它能够调用一个工具,思考结果,考虑接下来需要做什么,然后再调用另一个工具,如此往复。
Boris: 是的,完全正确。我们其实在内部基准测试中也看到了这一点。当我们对不同类型的评估进行内部基准测试时,通常情况下,如果先获取上下文,然后思考,再使用工具进行编辑、使用命令行等等,结果会好很多。作为用户的感觉也是这样。
Alex: 嗯。跟我说说 `Claude.md` 文件吧,这些文件看起来非常强大。
Boris: 是的,`Claude.md`,我们用它来做各种事情。它是 Claude 的“记忆库”,是你希望在团队中共享给 Claude 的指令,也是你希望在所有项目中共享指令。所以,它非常强大。有很多不同类型的 `Claude.md` 文件。
最简单的一种是在你的代码仓库根目录下放一个名为 `Claude.md` 的文件。
Alex: 只是一个 Markdown 文件。
Boris: 只是一个 Markdown 文件。是的,`Claude` 全大写,`md` 小写。
Alex: 当你在那个文件夹启动 Claude 时,它会自动读取这个文件。所以里面的内容会自动加载到上下文中。任何你希望 Claude 每次都执行的指令,比如你希望它经常运行的 bash 命令,或者在做修改时它应该重点了解的文件,或者重大的架构决策,诸如此类的东西,都可以放进 `Claude.md` 里。
还有一种 `Claude.md`,这种是你会提交到代码库里的。所以你希望和团队共享,写一次,团队所有人都能用,大家就不用自己写了。
Boris: 嗯,有意思。
Alex: 第二种 `Claude.md` 是只给你自己用的,叫做 `Claude.local.md`。它也放在同一个地方,但只属于你。你不用和团队共享,用 `.gitignore` 文件(Git 的忽略配置文件)把它忽略掉,这样就不会提交到代码库里。
第三种是全局的 `Claude.md`,放在你用户主目录下的 `.claude` 文件夹里。大多数人不用这个,但如果你想,可以把任何希望在所有 Claude 实例间共享的指令放在那里。
最后一种是,你可以在代码库中任何目录的任何嵌套文件里放置 `Claude.md` 文件。
Boris: 哦,哇!
Alex: 当 Claude 认为相关时,会自动把它加载进来,以获取关于如何处理那部分代码库的指令。
Boris: 所以这些就像是,嗯,具体的指令,甚至是你的偏好,比如编码风格,或者任何关于 Claude 应该如何互动、它应该了解你的什么、你喜欢怎样工作之类的东西,什么都可以。
Alex: 完全正确。有时当我在对话中看到 Claude 做了什么特别好或特别糟糕的事情时,我会按下井号键(#),这会进入“记忆模式”。然后我会告诉 Claude:“嘿,你应该记住这个。”这可能是一条指令,比如:“每当我修改代码时,总要运行 linter(代码风格检查工具)。”我告诉它之后,它会把这条指令整合到正确的记忆文件中。
Boris: 有意思。我觉得我得多试试这个。Claude Code 接下来有什么计划?
Alex: 嗯,我们主要在考虑两个方向。一是如何让 Claude 更好地与你所有的工具协同工作。它一开始就能在所有终端运行,现在能和许多 IDE 配合,也能和很多 CI(持续集成)系统一起工作。我们一直在思考接下来该怎么做,以确保它能与你使用的所有工具兼容,Claude 应该知道如何使用它们,并且能“原生”支持这些工具。
第二件事是如何让 Claude 更擅长处理那些你可能不想为此打开终端的简单任务。比如说,我能不能在聊天应用之类的东西里 @Claude,让它帮我修复一个问题?就像我在 GitHub 上能做的那样。这意味着什么?怎样才算好用?我们正在尝试很多方案,希望在把它交给用户之前,确保体验非常好。
Boris: 太令人期待了!我希望能看到 Claude Code 无处不在。期待那一天的到来。谢谢你,Alex,这次聊得很开心。
Alex: 不客气,也谢谢你。

(文:AI科技大本营)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往