Transcription
是什么让它运作得如此之好,是因为 Claude Code 可以访问工程师在终端上能做的一切。你所能做的一切,Claude Code 都能做到。中间没有任何东西。实际上,Anthropic 内部使用大量积分的人数正在增加,每月花费超过一千美元。我们看到了这种超级用户行为。这是他们在 YC 教的东西。如果你能解决自己的问题,那么你更有可能为他人解决问题。产品中有一个非常古老的想法叫做“等待和需求”。你以一种可被黑客攻击、足够开放的方式构建产品,以至于人们可以滥用它来满足其他用例,而它实际上并非为此设计。然后你为它而建,因为有需求。你认为 CLI 是最终的形态吗?一年或三年后,我们会主要使用 Claude Code 和 CLI 吗?还是有其他更好的东西?Kat Boris,非常感谢你的到来。感谢邀请我们。是的,所以对于不知道的人来说,你们是 Claude Code 的创造者。我从心底里非常感谢你们。我爱 Claude Code。听到这个真是太棒了。这就是我们想听到的。我——好吧,我想我开始的地方是,当我第一次使用它时,有一个时刻,我想是在 Sonnet 3.7 发布的时候,我当时想:“天哪,这是一个全新的范式。这是思考代码的全新方式。”而最大的区别是,你们走到了极致,直接取消了文本编辑器,你只需要和终端对话,就这样。而以前的 AI 编程范式,之前的框架,都是你有一个文本编辑器,AI 在旁边,它有点……或者它是一个标签补全。所以,请带我了解那个决策过程,那个弧线,那个仅仅是 o- 架构这个新范式的过程,你们是怎么想的?是的,我认为最重要的事情是,这根本不是故意的。好吧,我们算是偶然得到的。所以,我——当时我加入 Anthropic 时,我们还在不同的团队。当时,Claude Code 有一个前身,叫做 CLYDE,C-L-I-I-D-E。在 Anthropic,这是一个研究项目,启动起来花了一点时间。这是一个非常沉重的 Python 项目,需要运行大量的索引和东西。当我加入时,我想提交我的第一个 PR。我手工写了它,一个新手,在一个时间里,我不知道任何这些工具。在播客上承认这一点——我什么都不知道。然后我提交了这个 PR,Adam Wolf,他曾是我们团队的工程经理,他是我当时的 Rampa 伙伴,他直接拒绝了 PR。他说:“你手工写的?你在干什么?”“用 CLYDE。”因为他当时也在捣鼓 CLYDE。所以我试用了 CLYDE,我给了它任务描述,它就一击即就完成了。当时是 Sonnet 3.5,即使是这种基本任务,我仍然需要修复它。而且框架非常老旧,它花了五分钟才完成这个东西,只是花了很长时间,但它奏效了,我简直惊呆了,这竟然是可能的。这让我开始思考,也许你实际上不需要 IDE。然后,后来我通过 Anthropic API 进行原型开发,最简单的方法就是构建一个小的终端应用程序。因为这样我就不必构建 UI 或其他任何东西。我开始只是做一个小的聊天应用程序。然后我开始想,“也许我们可以做一些有点像 CLYDE 的事情,所以让我构建一个小的 CLYDE。”而且实际上,它比预期的更有用,而且没有花很多功夫。我认为对我来说最大的启示是,当我们开始给模型提供工具时,它们就开始使用工具了。这真是一个疯狂的时刻,模型就是想使用工具。我们给了它 Bash,它就开始使用 Bash,编写 AppleScript 来自动化东西,以响应问题。我当时想:“这真是太疯狂了,我从未见过这样的事情。”因为当时我只用过 IDE,带有文本编辑,一点点单行补全,多行补全之类的。所以,这就是它的由来,这种原型开发的融合,但也以一种非常粗糙的方式看到了可能性,而这个东西最终出奇地有用。我认为对我们来说也是一样。我认为对我来说,大概是 Sonnet 4 Opus 4。那就是那个神奇的时刻,我当时想:“我的天,这东西奏效了。”是的,这很有趣。那么,请告诉我那个——那个工具的时刻。因为我认为这是 Claude Code 的特别之处之一,它就是写 Bash,而且写得非常好。而且我认为很多以前的代理架构,甚至今天任何构建代理的人,你的第一反应可能是:“好吧,我们将给它一个查找文件工具,然后我们将给它一个打开文件工具。”然后你为代理可能采取的每一种不同操作构建所有这些自定义包装器。但 Claude Code 只使用 Bash,而且写得非常好。那么,你是如何思考的,你是如何思考你从中吸取的教训的?是的,我认为我们现在正处于一个阶段,Claude Code 实际上有很多工具。我认为有十几个左右,我们实际上每周都会添加和删除工具,所以这变化很大。但今天确实有一个搜索,有一个搜索工具。我们这样做有两个原因。一是用户体验,所以我们可以向用户展示更好的结果,因为目前大多数任务仍然有用户在循环中。二是权限。所以,如果你在你的 Claude Code settings.JS 文件中说,你不能读取,我们必须强制执行。我们对 Bash 强制执行,但如果有一个特定的搜索工具,我们可以更有效地做到这一点。但我们绝对希望取消工具,并让模型保持简单。上周或两周前,我们取消了 LS 工具。因为过去我们需要它,但后来我们确实构建了一种方法来强制执行这种权限系统,用于 Bash。所以在 Bash 中,如果我们知道你不允许读取某个特定目录,Claude 也不允许列出该目录。因为我们可以一致地强制执行这一点,所以我们不再需要这个工具了。这很好,因为这对 Claude 来说选择更少,上下文中的东西也更少。明白了。你们团队是如何分配职责的?我想说 Boris 设定了技术方向,并且是我们推出的许多功能的 the product visionary。我将自己视为一个支持角色,以确保一、我们的定价和打包能够引起用户的共鸣;二、确保我们能够顺利地推出我们的功能。所以,从决定好吧,这些是我们绝对应该进行内部测试的原型,到设定内部测试的质量阈值,再到与我们的最终用户沟通。而且我们肯定有一些新的举措正在进行中,我想说,从历史上看,很多 Claude Code 都是自下而上构建的。Boris 和许多核心团队成员都有很棒的想法,比如待办事项列表、子代理、钩子,所有这些都是自下而上的。当我们考虑扩展到更多表面,并将 Claude Code 带到更多地方时,我认为其中许多是“好吧,让我们与客户交谈,让工程师参与到这些对话中,并优先考虑这些服务,然后一一解决。”明白了,什么是内部测试?内部测试是——Anthropic 内部测试?它的意思是 dogfooding。好的,所以 Anthropic 的 Ant。所以,我们内部员工的昵称是 Ant。所以,内部测试是我们内部的 dogfooding 版本。我认为 70% 或 80% 的 Anthropic 技术员工每天都使用 Claude Code。是的。所以,每次我们考虑一个新功能时,我们都会将其发布给内部人员,我们会收到大量反馈。是的。我们有一个反馈渠道,我认为每五分钟就有一个帖子。所以,你会很快地获得信号,了解人们是否喜欢它,它是否有 bug,或者它是否不好,我们应该取消它。你可以看出,你可以看出,正在构建东西的人一直在使用它来构建,因为它的易用性是合乎逻辑的,如果你试图构建东西,而这只有在你进行内部测试时才会发生。我同意,我认为这是一种构建新事物的非常有趣的范式,那种自下而上的“我为自己做东西。”请告诉我。是的,Cat 也非常谦虚。我认为 Cat 在产品方向上扮演着非常重要的角色,它也来自团队的每个人。这些具体的例子,实际上来自团队的每个人。待办事项列表和子代理是 Sid。Hooks Dixon 发布了它。Plugins Daisy 发布了它。所以,团队的每个人,这些想法都来自每个人。所以,我认为对我们来说,我们构建了这个核心代理循环和这种核心体验。然后团队的每个人都一直在使用该产品,所以团队之外的每个人也一直在使用该产品。所以,有很多机会可以构建满足这些需求的东西。例如,批处理模式,感叹号,你可以输入批处理命令。这只是几个月前的事了,我当时正在使用 Claude Code,我不得不在两个终端之间来回切换,我觉得这有点烦人,于是我随口问 Claude 是否能想出一些想法,它想出了这个感叹号批处理模式。然后我说:“太好了,把它变成粉色,然后发布。”它就做到了。而这仍然是持续存在的事情。现在你看到其他人也在效仿。这很有趣,我实际上不知道,这非常有用,因为我总是需要打开一个新的标签页来运行任何批处理命令。所以,你只需要输入一个感叹号,然后它就会直接运行,而不是通过所有 Claude 的东西进行过滤。是的,Claude Code 也能看到完整的输出。有趣。那太完美了。所以,你在 Claude Code 视图中看到的任何东西,Claude Code 也能看到。好的,这很有趣。是的,这是我们正在考虑的一种用户体验。过去,工具是为工程师设计的,但现在工程师和模型各占一半。是的。所以,作为一名工程师,你可以看到输出,但这对模型来说也相当有用。这也是理念的一部分,就像一切都是双重用途一样。例如,模型也可以调用斜杠命令。我有一个斜杠命令,用于斜杠提交,我通过几个不同的步骤,比如 diffing 和生成一个合理的提交消息,以及这类东西。我手动运行它,但 Claude 也可以为我运行它,这非常有用,因为我们可以共享这个逻辑。我们可以定义这个工具,然后我们都可以使用它。是的。设计双重用途的工具与设计仅供一方使用的工具,有什么区别?令人惊讶的是,它们是一样的。到目前为止,是的。我感觉这种优雅的人类设计对模型来说也非常好。所以,你只是在想什么对你来说有意义,对模型来说通常也有意义,如果它对你有意义的话。是的,我认为 Claude Code 是一个终端 UI 的一个非常酷的事情,而且它运作得如此之好,是因为 Claude Code 可以访问工程师在终端上能做的一切。是的。而且我认为,当涉及到工具是否应该是双重用途时,我认为让它们成为双重用途实际上使工具更容易理解。它只是意味着,好吧,你所能做的一切,Claude Code 都能做到。中间没有任何东西。是的,这很有趣。是的,有几个这样的决定。所以,没有代码编辑器。它在终端里,所以它可以访问你的文件,而且它在你的电脑上,而不是像在 Claude 的虚拟机里。所以,你可以重复使用它,你可以构建你的 CLAUDE.MD 文件,或者构建斜杠命令,以及所有这些东西,它变得非常可组合和可扩展,从一个非常简单的起点开始。我很好奇你们是如何为那些想着“好吧,我想构建一个代理,我想构建的可能不是 Claude Code,而是其他东西”的人考虑的,如何获得那个简单的包,然后随着时间的推移,它可以扩展并变得非常强大?嗯,对我来说,我首先把它看作是开发任何产品,你必须先为自己解决问题,然后才能为他人解决问题。这是他们在 YC 教的东西,你必须从自己开始。所以,如果你能解决自己的问题,那么你更有可能为他人解决问题。而且我认为对于编码来说,在本地开始是合理的。现在我们在网上也有 Claude Code,所以你也可以在虚拟机中使用它,你可以在远程环境中使用它。当你出门在外时,这非常有用,你想从手机上修复一些东西。这有点像,我们一步一步地开始验证这一点,你可以在 GitHub 上使用 @Claude。是的。我每天上班路上都用它。我喜欢“@redwhite”,我可能不应该这样做,但我喜欢——是的,在 GitHub 上“@redwhite”,然后我说“@Claude 修复这个问题”之类的。是的。所以,能够从手机上控制它非常有用,这证明了这种体验。我不知道这是否一定对所有用例都有意义。对于编码,我认为从本地开始是正确的。我不知道这是否对所有事情都适用。明白了。你们使用哪些斜杠命令?/pr commit。是的,是的。我认为 PR commit 斜杠命令让 Claude 更快地确切知道需要运行哪些 bash 命令才能进行提交。对于不熟悉的人来说,PR commit 斜杠命令做什么?它只是准确地告诉它如何进行提交。好的,你可以像 dyam 一样。你可以说“好吧,这是需要运行的三个 bash 命令。”明白了。而且很酷的是,我们还有这种内置于斜杠命令的模板系统。所以,我们实际上会提前运行 bash 命令。它们嵌入在斜杠命令中,你还可以预先允许某些工具指示。对于那个斜杠命令,我们说“允许 git commit git push GHPR。”所以,在你运行斜杠命令后,你不会被要求许可,因为我们有基于权限的安全系统,而且它还使用了 Haiku,这很酷,它是一种更便宜、更快的模型。是的。对我来说,我使用 commit PR feature dev,我们用得很多。所以,Sid 创建了这个。它很酷。它会一步一步地引导你构建东西。所以,我们提示 Claude 说:“首先问我想要什么。”构建规范。然后构建一个详细的计划,然后做一个待办事项列表,一步一步地走。所以,这是一种更结构化的功能开发。是的。然后我认为我们可能用得最多的最后一个是,我们对我们所有的 PR 进行安全审查,以及代码审查。所以,Claude 在 Anthropic 内部进行我们所有的代码审查。仍然有人批准,但 Claude 进行代码审查的第一步。这只是一个斜杠代码审查斜杠命令。明白了。是的,我想深入探讨一下如何制定一个好的计划?所以,那种功能开发的东西,因为我认为有很多小技巧,我开始发现,或者每个人都在开始发现,它们是有效的。我想知道,我们错过了什么?例如,计划开发过程中的一个步骤,一个不直观的步骤是,即使我不知道需要构建的东西是什么,我脑子里只有一句话,“我想要功能 X。”我让 Claude 直接实现它,什么都不给它,然后看看它做了什么。这有助于我理解“好吧,这就是为什么它犯了所有这些不同的错误,或者它做了一些我没想到的事情,这可能是好的。”然后我用它,就像从那种一次性开发中学习,然后把它清除掉。然后这有助于我为实际的功能开发写一个更好的计划规范,这是你以前永远不会做的事情,因为仅仅让一个工程师去处理一个你还没有实际规范的功能会太贵了。但因为你有 Claude 在你的代码库中进行操作,你可以从中学习,这有助于为你的实际计划提供信息。我认为我可能可以开始,我很想知道你如何使用它。我认为有几种不同的模式。对我来说,一种是原型模式。是的。传统的工程原型,你想构建最简单的东西,它触及所有系统,只是为了让你对系统是什么有一个模糊的认识?有未知数。然后只是追踪一切。是的。所以我做的和你一样,Dan。Claude 只是做了这件事,然后我看看它在哪里搞砸了,然后我会让它把它扔掉,重新做一遍。所以,只需按两次 Escape,回到旧的检查点,然后重试。我认为可能还有另外两种任务。一种是 Claude 一次就能完成的事情。而且我觉得它能做到,所以我只是告诉它,然后我就去另一个标签页。我按 Shift-Tab 自动接受,然后去做别的事情,或者去我的另一个 Claude 那里处理它——而它在做这件事,但也有这种更难的功能开发。这些事情,也许过去需要几个小时的工程时间。对于这些,我通常会切换到计划模式,然后在它写任何代码之前先就计划达成一致。我认为很难的是,边界随着每个模型以一种令人惊讶的方式变化。就像新的模型更智能,所以你需要计划模式的边界被推出去了一点。是的。就像以前你需要计划,现在不需要了。而且我认为有一个普遍的趋势是,以前是脚手架的东西,随着更高级的模型,它被推到了模型本身。而且模型倾向于随着时间的推移吞噬一切。你如何看待构建一个代理框架,它不会让你花费大量时间构建的东西,在三个月后,当新的 Claude 发布时,它就会被模型吞噬?你该构建什么,而不是说它现在还不能用,但下次就会起作用,所以我们不会花时间在上面?我认为我们构建了大多数我们认为会提高 Claude Code 能力的东西,即使这意味着我们将在三个月内不得不放弃它。如果有什么的话,我们希望我们能在三个月内放弃它。我认为目前我们只想提供最优质的体验。所以,我们不太担心一次性工作。有趣。这是一个例子,即使是计划模式本身。我认为我们可能在某个时候会取消它,当 Claude 可以直接从你的意图中弄清楚你可能想先计划,或者例如,我昨天刚刚删除了系统提示中的大约两千个 token,只是因为 Sonnet-4.5 不再需要它了,但 Opus Opus-4.1 需要它。那么,当最新的前沿模型不需要它,但你正在试图弄清楚如何使其更有效率,因为你有如此多的用户,你可能不会对所有事情都使用 Opus 或 Sonnet-4.5,你可能会使用 Haiku。那么,在为 Haiku 构建更复杂的框架与不花时间在上面,使用 Sonnet,承担成本,并专注于更前沿的东西之间存在权衡。总的来说,我们将 Claude Code 定位为一种非常优质的产品。所以,我们的北极星是确保它与我们最强大的模型——目前是 Sonnet-4.5——一起工作得非常好。我们正在研究如何让它与未来几代的小型模型一起工作得很好,但这并不是我们的首要任务。你如何看待我注意到的一件事是,我们经常获得模型,非常感谢,我们在它们发布之前就获得了模型,而我们的工作是弄清楚它是否好。在过去的六个月里,当我测试 Claude 时,例如在 Claude 应用程序中,使用一个新的前沿模型,实际上很难立即判断它是否更好。但在 Claude Code 中很容易看出,因为框架对你从模型中获得的性能很重要。而你们拥有在 Anthropic 内部构建 Claude 或构建 Claude Code 的优势,所以模型训练和你们正在构建的框架之间有更紧密的集成,它们似乎相互影响。那么,这在内部是如何运作的?以及你们从这种紧密集成中获得了哪些好处?我认为最重要的一点是研究人员就是这样使用的。所以,当他们看到什么有效,什么无效时,他们可以改进东西。我们做了很多评估之类的事情来来回回沟通,并了解模型到底处于什么位置。但有一个前沿,你需要给模型一个足够困难的任务来真正挑战模型的极限。如果你不这样做,那么所有模型都一样。但如果你给它一个相当困难的任务,你就能分辨出区别。你使用哪些子代理?我有几个。我有一个规划器子代理,我使用它。我有一个代码审查子代理。代码审查实际上是我有时使用子代理,有时使用斜杠命令的东西。所以,通常在 CI 中,它是一个斜杠命令,但在同步使用中,我使用子代理来做同样的事情。为什么?这是个好问题。也许是品味问题。我不知道。我认为也许当你同步运行时,将上下文窗口稍微分叉出去会很好,因为代码审查中发生的所有事情都与我接下来要做的事情无关。但在 CI 中,这无关紧要。你是否会同时生成 10 个子代理?为了什么?对我来说,我主要用于大型迁移。这是最大的事情。我们有这个代码审查/斜杠命令,我们使用它。其中一个步骤是查找所有问题。所以,有一个子代理检查 CLAUDE.MD 合规性。另一个子代理查看 Git 历史记录,了解发生了什么。另一个子代理查找明显的 bug。然后我们在此之后进行去重质量步骤。所以,它们找到很多东西。其中很多是误报。所以,然后我们生成了大约五个子代理。这些都只是检查误报。最后的结果很棒。它找到了所有真正的问题,而没有误报。这太棒了。我实际上也这样做。我有一个非技术性的 Claude Code 用例是报销。所以,我现在在旧金山,所以我有很多费用。所以我构建了这个小的 Claude 项目,或者在 Claude Code 中,它使用了一个金融 API 来下载我所有的信用卡交易。然后它决定,这些可能是我需要报销的费用。然后我有两个子代理,一个代表我,一个代表公司。它们进行斗争,以确定实际的费用是多少。这是一个审计员子代理和一个 Pro-Dan 子代理。所以,那个对手处理器模式似乎很有趣。这很酷。我觉得当子代理开始流行的时候。实际上,我们受到启发的是,很久以前有一个 Reddit 帖子,有人为前端开发人员、后端开发人员和我认为的设计师创建了子代理。测试开发人员。测试开发人员。有一个 PM 子代理。这很可爱,感觉有点拟人化,也许有点道理,但实际上价值在于不相关的上下文窗口。你有两个不知道彼此的上下文窗口。这很有趣,而且你通常能获得更好的结果。你呢?你有没有什么有趣的子代理?我一直在 tinkering 一个非常擅长前端测试的。它使用 Playwright 来查看所有错误,并拉入它们,并尝试测试应用程序的更多步骤。它还没有完全到位,但我看到了生命迹象,我认为这是我们可能捆绑到我们的插件市场中的东西。我确实使用过类似的东西,只是用 Puppeteer,然后看着它构建东西,然后打开浏览器,然后说“哦,我需要改变这个。”这真是太酷了。这简直是魔法,非常酷。我认为我们开始看到大规模多大规模子代理的开端。我不知道该称它们为什么,比如蜂群之类的?有很多人。实际上,Anthropic 内部使用大量积分的人数正在增加,每月花费大约一千美元。而且这个比例的人数实际上增长得相当快。我认为常见的用例是代码迁移。所以,他们正在做的是从框架 A 到框架 B。有一个主代理为所有事情制定了一个大的待办事项列表,然后对大量子代理进行 map-reduce。所以,你会指示 Claude 同时启动 10 个代理,然后一次启动 10 个,然后将所有东西迁移过去。这很有趣。你所说的迁移,一个具体的例子是什么?我认为最经典的例子是 LINT 规则。所以,有一些 LINT 规则你正在推出。没有自动修复器,因为 AST 分析实际上无法,它太简单了。我认为其他事情是框架迁移。我们刚刚从一个测试框架迁移到了另一个。这是一个相当常见的例子,很容易验证输出。我发现的一件事是,这既适用于 Every 内部的项目,也适用于开源项目。如果你是一个正在构建产品的人,并且你想构建一个以前做过的功能。所以,也许人们需要实现很多内存的例子,如何做内存?因为我们在内部有许多不同的产品,你可以直接生成 Claude 子代理来询问这些其他三个产品是如何做的?并且有可能进行隐性代码共享,你不需要 API,你也不需要问任何人。你只需要问“我们已经如何做到这一点了?”然后利用最佳实践来构建自己的。你也可以用开源来做,因为有很多开源项目,人们已经研究内存一年了,而且效果很好。你可以看看人们已经发现了哪些模式,以及我想要实现哪些模式?完全可以。你也可以连接到你的版本控制系统。是的。如果你过去构建过类似的功能,Claude Code 可以使用这些 API,比如直接查询 GitHub,找出人们过去是如何实现类似功能的。是的。阅读那段代码并复制相关部分。是的。你是否发现日志文件有什么用处?好的,这是我如何实现它的完整历史,它对 Claude 重要吗?以及你如何实现它,或者让它变得有用?有些人对此深信不疑。一些 Anthropic 的人,对于他们做的每一项任务,他们都会告诉 Claude Code 以特定格式写日记条目。是的。这只是记录了它做了什么?它尝试了什么?为什么它没有奏效?是的。然后他们甚至有这些代理来回顾过去的记忆,并将其综合成观察。我认为这是萌芽阶段,这里有一些有趣的东西,我们可以产品化。是的。但这是一个新的新兴模式,我们正在看到它运作良好。是的。我认为一次性从一个 transcript 中获取记忆的难点在于,很难知道一个特定的指令与所有未来的任务有多相关。对?就像我们的典型例子是,如果我说让按钮变粉色,我不想让你记住将来让所有按钮都变粉色。对?所以我认为从大量日志中综合记忆是更一致地找到这些模式的一种方法。似乎你可能需要一些你可以知道你会能够总结,以这种自上而下的方式总结,这以后会很有用,而且你知道它可能有用的大致抽象级别。但也有很多东西,你实际上,任何给定的提交,插件,让按钮变粉色,它可能因为无数你事先不知道的原因而有用。所以,你也需要模型能够查找所有类似的过去提交,并在正确的时间将其呈现出来。这也是你在考虑的事情吗?是的,我认为可能会有这样的东西。也许,我认为一种看待它的方式是,这种传统的记忆存储工作,mem X 之类的东西,你只是想把所有信息都放进系统里,然后之后就是一个检索问题。是的。我认为随着模型变得越来越聪明,它自然地,我看到它也开始自然地这样做,就像我们之前谈到的,使用 Bash 自发地查看 Git 历史记录,然后说“哦,好的,是的,这是一种有趣的方式。”是的。在我们开始录音之前,我们一直在谈论的一件事是,我们在 Every 内部所做的事情,我觉得它真的改变了我们做工程的方式,因为每个人都变成了 CLI pilled。我们有一种工程范式,我们称之为“复合工程”。在正常的工程中,你添加的每个功能都会使添加下一个功能变得更加困难。而在复合工程中,你的目标是——让下一个功能比你刚刚添加的功能更容易构建。在那里,我们做到这一点的方式是,我们试图将我们从所有已完成的工作中学到的所有东西都编入代码,以构建该功能。所以,我们如何制定计划,以及计划的哪些部分需要更改?或者当我们开始测试时,我们发现了什么问题?我们错过了什么?然后我们将它们编入所有提示和所有子代理以及所有斜杠命令中,这样下次当有人做类似的事情时,它就会被捕获,这使得它更容易。这就是为什么对我来说,例如,我可以进入我们的一个代码库并开始变得高效,即使我不知道代码是如何工作的,因为我们有这个内置的记忆系统,关于我们在实现东西时学到的所有东西。但我们必须自己构建它。我很好奇你是否正在处理那个循环,以便 Claude Code 自动完成它?是的,我们开始考虑它了。很有趣,我们刚听到 Fiona 说了同样的话。她刚加入团队,她是我们的经理。她已经十年没有写过代码了。她第一天就赢得了 PR。她说:“是的,我不仅忘了如何编码,而且 Claude Code 让重新开始变得非常容易。”是的。“而且我也不需要了解任何背景。”“因为我都知道。”我认为这很大程度上是因为当人们为 Claude Code 本身提交拉取请求时,以及我认为我们的客户告诉我们,他们经常做类似的事情。如果你看到一个错误,我会说“@Claude 将此添加到 CLAUDE.MD 中”,这样下次它就会自动知道。是的。你可以通过多种方式植入这种记忆。所以,你可以说“@Claude 将它添加到 CLAUDE.MD 中。”你也可以说“@Claude 写一个测试。”这是确保它不会回归的一个简单方法。而且我不再觉得问任何人写测试很糟糕了,对吧?这非常容易。而且我认为我们几乎 100% 的测试都是由 CLAUDE 编写的,如果它们不好,我们就不会提交它,然后好的测试就会被提交。而且我认为 lint 规则也很重要。对于那些经常强制执行的东西,我们实际上有很多内部 lint 规则。CLAUDE 编写了 100% 的这些规则,这主要是因为“@Claude 在 PR 中写这个 lint 规则。”是的,现在有一个问题是如何自动完成?而且我认为,总的来说,Kat 和我的想法是,我们看到了这种超级用户行为,第一步是如何通过使产品可被黑客攻击来启用它,这样最好的用户就可以想出如何做这个很酷的新东西?对?但然后真正的艰苦工作就开始了,我们如何将其推广给其他人?是的。对我来说,我把自己算在“其他人”的行列里。我真的不知道如何使用 Vim,我没有这个疯狂的 T-mac 设置。所以我有一个相当普通的设置。所以,如果你能做一个我能使用的功能,那 pretty good 的指标是其他普通工程师也会使用它。这很有趣,请告诉我,因为这是我一直在思考的事情,就是让一些东西具有可扩展性和灵活性,以便超级用户能够找到你甚至没有梦想过的新颖的使用方式,但它也足够简单,任何人都可以使用它,并且他们可以变得高效,而且你可以将超级用户发现的东西带回基本体验。你是如何思考这些设计和产品决策,以便你能够实现这一点的?总的来说,我们认为每个工程环境都与其他环境略有不同。所以,让我们的每个部分都可扩展非常重要。所以,从你的状态行到添加你自己的斜杠命令,再到钩子,它们允许你在 Claude Code 的几乎任何一步插入一些确定性。所以,我们认为这些是我们提供给每个工程师的基本构建块,他们可以玩。插件实际上是我们的。所以,它是由我们团队的 Daisy 构建的,这是我们试图让普通用户,比如我们,更容易地将这些斜杠命令和钩子引入我们的工作流程。所以,插件允许你浏览现有的 MCP 服务器,现有的钩子,现有的插件,或者说现有的斜杠命令,然后让你用一个命令在 Claude Code 中将其拉入你自己。嗯,产品中有一个非常古老的想法叫做“潜在需求”,我认为这可能是我个人思考产品和思考下一步该构建什么的主要方式。这是一个非常简单的想法。你以一种可被黑客攻击、足够开放的方式构建产品,以至于人们可以滥用它来满足其他用例,而它实际上并非为此设计。然后你看看人们如何滥用它,然后你为它而建,因为你知道有需求。对?当我还在 Meta 时,这就是我们构建所有大型产品的方式。我认为几乎所有的大型产品都有这种潜在需求的萌芽。例如,像 Facebook Dating 这样的东西,它源于这样一个想法:当我们查看谁在查看个人资料时,我认为 60% 的查看是发生在彼此不认识的异性之间,所以就像传统的设置一样。所以,我们想,好吧,也许我们可以推出一个约会产品,我们可以利用这种存在的潜在需求。这很有趣。对于 Marketplace 来说,情况也差不多。我认为当时 Facebook 群组中的帖子有 40% 是买卖帖子。所以,我们想,人们正在试图使用这个产品来买卖。如果我们围绕它构建一个产品,那可能会奏效。所以,我们也是这样思考的,但我们也有幸为开发者构建。而开发者喜欢黑客攻击,喜欢定制。而且作为我们自己产品的用户,使用和构建这个东西非常有趣。所以,是的,就像 Kat 所说的,我们只是构建了正确的扩展点。我们看看人们如何使用它,这告诉我们下一步该构建什么。例如,我们收到了所有这些用户请求,人们说:“伙计,Claude Code 要求我提供所有这些权限,而我在这里喝咖啡,我不知道它在要求我提供权限。”“我该如何让它在 Slack 上 ping 我?”所以,我们构建了钩子。Dixon 构建了钩子,这样人们就可以在 Slack 上收到通知。而且你可以收到任何你想收到的 Slack 通知。所以,这很像是人们真的想要做某事的能力。我们不想自己构建集成,所以我们暴露了钩子供人们使用。让我想起的是,你们最近发布了,你们似乎改变了谈论 Claude Code 的方式,将其定位为更通用的代理 SDK。这是由潜在需求驱动的,你们是否看到了一个更通用的用例?我们意识到,就像你谈到的使用 Claude Code 来做编码以外的事情一样,我们也看到了很多这种情况。例如,我们收到了大量人们使用 Claude Code 帮助他们写博客、管理所有数据输入、用自己的语气进行初步尝试的故事。我们发现人们以此构建电子邮件助手。我用它来做很多市场研究,因为它的核心是一个代理,只要你给它一个具体的任务,它就可以无限期地运行,并且它能够获取正确的底层数据。我正在处理的一件事是,我想看看世界上所有公司有多少工程师,并创建一个排名。这是 Claude Code 可以做的事情,即使它不是传统的编码用例。所以,你们意识到底层的基本原理非常通用?只要你有一个代理循环可以长时间运行,并且你能够访问互联网并编写和运行代码, pretty much 你就可以,如果你眯着眼睛看,你可以在上面构建任何东西。我认为,当我们从 CLAUDE Code SDK 改名为 CLAUDE Agent SDK 时,已经有成千上万的公司在使用这个东西了。而许多这些用例与编码无关。所以,无论是内部还是外部,我们都看到了。是的,有健康助手,比如金融分析师,法律助手,它相当广泛。是的。最酷的有哪些?我认为实际上你最近在播客上请了 Noah Brier。我认为 Obsidian 的思维导图笔记记录用例非常酷。这很有趣。令人难以置信的是有多少人使用它。是的。这个特定的组合。我认为其他一些,比如一些编码或与编码相关的用例,也很酷。我们有一个 CLAUDE Code 的问题跟踪器。团队总是忙于处理所有涌入的问题。问题太多了。所以,CLAUDE 会对问题进行去重。它会自动查找重复项,而且在这方面非常出色。它还进行初步解决。所以,通常当有问题时,它会主动在内部提交一个 PR。这是 Indigo 在团队中构建的一个新东西,所以这很酷。还有类似值班和从其他地方收集信号,比如获取 sentry 日志和从 BigQuery 获取日志,并整理所有这些。而且它在这方面做得很好,因为一切都只是 Bash。所以,这些都是我看到的内部用例。它是,当它整理日志或去重问题时,你是否让 Claudes 在后台持续运行?你是在为它构建这个吗?它被触发了,对于那个特定的问题,每当一个新的问题被提交时,它就会被触发。所以,它运行一次,但它可以选择运行它需要的时间。明白了。那么,Claudes 始终运行的想法呢?哦,主动的 Claudes。我认为这绝对是我们想要达到的目标。我想说,目前我们非常专注于让 Claude Code 在单个任务上极其可靠。如果你想想多行自动补全,然后是单轮代理,然后现在我们正在研究可以完成任务的 Claude Code。我觉得如果你沿着这条曲线追踪,最终你会达到更高层次的抽象,比如更复杂的任务。然后希望之后的一步是更多的主动性。所以,只是了解你团队的目标,你的目标是什么。能够说“嘿,我认为你可能想尝试这个功能。这是代码的初步版本,这是我做的假设。这些是正确的吗?”我迫不及待了。而且我认为,可能就在那之后,Claude 就是你的经理了。不,那不在计划中。所以,团队的每个人都非常兴奋我们今天能谈话,他们给了我很多问题,我想确保我回答了所有问题。这是一个好问题。为什么你们选择代理式 RAG 而不是向量搜索作为你们的架构?向量嵌入仍然相关吗?所以,实际上,最初我们确实使用了向量嵌入,它们只是非常棘手,难以维护,因为你必须不断地重新索引代码,而且它们可能会过时。而且你有本地更改,这些需要包含在内。然后当我们考虑外部企业如何采用它时,我们意识到这暴露了更多的表面区域和安全风险。我们还发现,实际上 Claude Code 非常好,Claude 模型在代理搜索方面也非常出色。所以,你可以通过代理搜索达到相同的准确度水平。而且它的部署故事要干净得多。这很有趣。如果你想为 Claude Code 带来语义搜索,你可以通过 MCP 工具来实现。所以,如果你想管理你自己的索引并公开一个让 Claude Code 可以调用的 MCP 工具,那就可以了。你认为最值得与 Claude Code 一起使用的 MCP 是什么?哦,Puppeteer 和 Playwright 排名很高。绝对是的。Century 有一个非常好的。Asana 有一个非常好的。你认为有没有什么超级用户技巧,你在 Anthropic 内部或组织中其他大型 Claude Code 超级用户那里看到,人们不知道但应该知道的?Claude Code 不太喜欢自然地做的一件事是
但对我个人而言,非常有用的一个功能是 Claude Code。它本身并不喜欢提问,但如果你在和一个思想伙伴、一个合作者进行头脑风暴,通常你们会互相提问。所以,这是我喜欢做的一件事,尤其是在计划模式下。我会直接告诉 Claude Code:“嘿,我们正在头脑风暴这件事,请问我问题。如果你有任何不确定的地方,我希望你提问。”它会照做。我认为这实际上能帮助你得到更好的答案。
还有很多技巧可以分享。我认为有几个非常常见的错误我看到人们犯。一个是你说的,不够使用计划模式。这非常重要,我认为这是刚接触代理编码的人会犯的错误。他们认为这个东西能做任何事,但它不能。它今天还不够好,而且会变得更好。但今天它能一次性完成一些任务,但不能一次性完成大多数任务。所以你必须了解它的局限性,你必须了解你在哪个环节介入。像计划模式这样的东西,如果先依赖计划,它可以很容易地将成功率提高 2-3 倍。
我看到高级用户做得很好的其他事情是,拥有大量 Claude Code 部署的公司。现在幸运的是有很多这样的公司,所以我们可以向他们学习。将设置 JSON 提交到代码库非常重要,因为你可以用它来预先允许某些命令,这样你就不会每次都收到权限提示,也可以阻止某些命令。比如,你不想使用网络抓取或其他什么。这样,作为一个工程师,我就不会收到提示,我可以提交它并与整个团队共享,这样每个人都可以使用它。我通过直接使用“跳过危险权限”来解决这个问题。是的,我们这里有这个功能,但我们不推荐它,它是一个模型,它可能会做一些奇怪的事情。
我认为我们看到的另一个很酷的用例是人们使用停止钩子(stop hooks)来做有趣的事情。停止钩子会在回合结束后运行。它会与任何东西进行一些工具调用,然后完成,并将控制权交还给用户。然后我们运行停止钩子。所以你可以定义一个停止钩子,如果测试不通过就返回文本,继续进行。本质上,你可以让模型一直运行,直到事情完成。当你将其与 SDK 和这种程序化用法结合起来时,这简直是不可思议。
你可以,这是一个随机过程,一个非确定性的过程,但有了脚手架,你就可以获得这些确定性的结果。所以你们开始了一种命令行界面(CLI)的范式转变,你认为 CLI 是最终的形式吗?一年或三年后,我们会主要在 CLI 中使用 Claude Code 吗?还是有其他更好的方式?
它不是最终的形式,但我们非常专注于确保 CLI 尽可能智能,并且尽可能可定制。你可以谈论下一代的形式。
好的,Cat 让我谈谈它,因为没人知道这些东西。它发展得太快了,对吧?现在没人知道这些形式是什么。我认为我们的团队正处于实验阶段。我们有 CLI,然后我们推出了 IDE 扩展。现在我们有一个新的 IDE 扩展,它是一个 GUI。它更容易访问。我们在 GitHub 上有 #claude,所以你现在可以在任何地方 #claude 它。现在有 #claude。网页版和移动版都有 Claude,所以你可以在任何这些地方使用它。我们正处于实验阶段,所以我们正在努力弄清楚下一步是什么。
我认为如果我们放眼全局,看看这些东西的走向,我认为一个大的趋势是更长的自主期。所以,随着每一个模型,我们都会衡量模型可以自主运行和执行任务多长时间,并且在危险模式下在容器中自动压缩,直到任务完成。现在我们已经达到了两位数小时的级别。我认为上一个模型是 30 多个小时,下一个模型将是几天。当你考虑并行化模型时,会出现很多问题。所以一个问题是,这个东西运行的容器是什么?因为你不想不得不关闭你的笔记本电脑。我现在就是这样,因为我做了很多 DSPi,或者说提示优化,它在我的笔记本电脑上,我不想关闭它。所以我挡路了——我的笔记本电脑开着,因为我“不想关闭它”。
是的,是的,没错。我们之前拜访过客户公司,他们都在到处走动,他们的 Claude Code 正在运行吗?所以我认为一个目标是摆脱这种模式。而且我也认为很快我们就会进入“Claude 监控 Claude”的模式。而且我不知道这是否是正确的形式,因为作为人类,你需要能够检查它并了解发生了什么,但它也需要是 Claude 优化的,你优化的是 Claude 之间的带宽通信。所以我的预测是,终端不是最终的形式。我的预测是,在接下来的几个月里,也许一年左右,会出现更多形式,而且它会很快地不断变化。
你对……我教了很多 Claude Code 给很多日常订阅者……有什么看法?谢谢。不客气。为你工作。我认为其中一个大问题是,终端很吓人,而且只是在和订阅者通话时说:“这是打开终端的方法,即使你不是技术人员,你也可以这样做。”这是一件大事。你怎么看?
我们营销团队的一位成员开始使用 Claude Code,因为她写了一些关于 Claude Code 的内容,我说:“你真的应该体验一下。”然后她的屏幕上出现了 30 个弹出窗口,她不得不接受各种权限,因为她以前从未使用过终端。所以我完全理解你的观点。对于非工程师来说,这确实很难,甚至对一些工程师来说,我们发现他们并不完全习惯在终端中日常工作。我们的 VS Code GUI 扩展是朝着这个方向迈出的第一步,因为你根本不需要考虑终端。它是一个传统的界面,有很多按钮。我认为我们正在开发更多图形界面。所以网页版 Claude Code 是一个 GUI。我认为这可能是对技术水平较低的人来说一个不错的起点。
是的,是的。也许几个月前有一个神奇的时刻,我走进办公室,Anthropic 的一些数据科学家就坐在 Claude Code 团队旁边,数据科学家们就在他们的电脑上运行着 Claude Code。我说:“这是什么?你怎么发现的?”我认为是 Brandon 第一个做的,他说:“哦,是的,我刚安装了它。我做这个产品,所以我应该用它。”我说:“我的天哪。”所以他学会了如何使用终端,而且他以前真的没有做过这个工作流程。显然,他技术很好。所以我认为现在我们开始看到所有这些与代码相关的职能,人们使用 Claude Code。是的,从潜在需求的角度来看,这很有趣,这些人正在破解产品,所以有使用它的需求。因此,我们希望通过更易于访问的界面使其更容易一些。但同时,对我们 Claude Code 来说,我们专注于为最优秀的工程师打造最好的产品。所以我们专注于软件工程,我们希望把它做好,但我们也希望它成为其他人可以破解的东西。
所以,有时候 Claude Code 会写一些有点冗长的代码,但你可以直接告诉它简化,它做得很好。
有趣。那么,你是如何以及何时这样做的?所以你是在使用斜杠命令,还是……我只是说,每次都说“简化”?是的,简化。有时候你说:“嘿,这应该是一行代码的更改。”然后它写了五行,你说:“简化它。”它立刻就明白了你的意思……然后它会修复它。
是的,我认为我们团队的很多人也这样做,这很有趣。
为什么不呢?如果你总是这么说,为什么不把它变成一个斜杠命令或者一个工具呢?让它自动发生?
我们在 CLAUDE.MD 中有这方面的说明。我认为它影响的对话比例很低,所以我们不想让它过度倾斜。至于为什么不是斜杠命令,是因为你实际上不需要那么多上下文。我认为斜杠命令非常适合那些否则需要写两三行代码的情况。但对于一些,即使是计划模式,你实际上可以使用几个词,但有时……但实际上需要两三行来捕捉你想要的一切。对于简化,你只需要写“简化它”,它就明白了。
是的,这说得通。酷。是的,好的,现在我们可以……这很有趣。是的,但这些东西感觉还是太早了。我们在录音前还在谈论我们处于采用曲线的哪个阶段,而且它仍然……赫斯曲线还是什么?无论那个术语是什么。正是如此。而且感觉我们仍然是最初的 10%。这些东西会变化得如此之快。它会不断变化。即使我与 Anthropic 以外的研究人员交谈,他们也使用 Claude Code,他们也会遇到一些问题,没有意识到他们可以简单地告诉语言模型……
对,简化它。我认为这表明,即使是那些在这个行业工作的人,他们并不总是意识到……是的,你只是可以和模型说话。
这就是问题所在。我认为有一个潜在的期望,使用 AI 不应该是一项技能,因为它只是按照你说的去做,而你却说:“好吧,你说的任何话都会影响它做什么。”所以如果你能说得更好,它就会做得更好。
完全同意。它会随着每一个模型而改变,这是困难的部分。提示工程师曾是一份工作,现在众所周知,它不再是一份工作了。而且还会有更多这样的工作,这些微技能,你必须学会使用这个东西,而且随着模型变得更好,它可以更好地解释它。
但我也认为,这对我们来说,是我们必须拥有的谦逊的一部分,我们正在构建一个产品,我们真的不知道接下来会发生什么,我们只是和大家一起弄清楚。我们只是顺其自然。所以,你为自己构建它很酷,因为我认为这是了解它的最佳方式,就是你……这也是我们所做的,你就是生活在未来。你一直在使用它,而且很清楚缺少什么。你说:“我只是想要这个东西”,然后你就可以做下一件事,而不是说:“嗯,让我问一下某个大型公司的一位企业产品经理‘你想要什么样的 AI 功能?’”他们说:“我不知道,在我的 IDE 旁边放一个小聊天机器人。”然后你说:“好吧。”
是的,是的,这是构建开发工具的奢侈之处,对吧?是的,你是你自己的客户。我认为这也是 AI 的一个独特之处,因为它……可以说是重置了所有软件的游戏规则。所以我们有 Quora 的邮件助手,我们有 Sparkle,它可以整理你的文件。任何你为了在电脑上使用的东西,如果你正在构建它,用 AI 构建它,很有可能以前没有做过,因为整个局面都被重置了。所以,这是一个非常令人兴奋的时期,可以为自己构建东西。
完全同意。它也完全打开了竞争的局面。任何个人现在都可以构建一个应用程序来满足他们的需求,然后将其分发给其他人。
是的,是的。这真的很酷。我一直在原型化所有这些随机的个人项目。比如什么?我刚搬进一个新公寓,它是空的……所以我一直在构建这个购物顾问助手……使用 CLAUDE Agent SDK,因为谁有时间阅读所有评论……并查看所有选项并找到它们的价格,而且一切都很难发现。所以它只是问我一些问题,我告诉它我想要什么。它向我展示了很多……
是的,正是如此。它向我展示了各种各样的沙发和选项的照片,以及人们在网上说什么。然后我告诉它我不喜欢什么,它真的感觉像是在和一个购物助手一起工作。而且……这真的很酷。
我也有一个小邮件回复代理,可以为我起草回复。但我不太用邮件,所以这很奇怪,而且我知道不是你在回复。这就是为什么它延迟了七天。代理只是……做得非常彻底。
Agent SDK 很酷。
是的,Agent SDK 很酷。是的,它总是让人惊叹,我们能够用如此小的团队构建多少东西。
这就是为什么我觉得……另一件很酷的事情是,我认为人们正在将他们的思维模式从文档转向演示。我们内部的货币实际上是演示。你希望人们对你的东西感到兴奋吗?向我们展示它能做什么的 15 秒。是的。我们发现团队中的每个人现在都内化了这一点。演示文化肯定如此。而且我认为这更好,因为有很多事情你可能在脑子里,如果你是一个优秀的作家,也许你能想办法解释它。但即使那样,也很难解释。但如果有人能看到,他们会立即理解。我认为这正在发生在产品构建中,但也发生在各种其他类型的创意……创意事业中。比如拍电影,比如你必须推销它,但现在你可以说:“我做了配乐视频,”然后你就可以看到你想要制作的东西的闪光点,而且成本很低。所以这意味着你不必花那么多时间去说服别人。你只需要说:“我做好了。”
是的,而且作为构建者,你也可以直接构建它,然后再次构建它,然后再次构建它,直到你满意为止。是的。我觉得反过来说,你以前会制作一个文档或在白板上画东西,或者我会用 Sketch 或 Figma 或其他东西画东西,而现在我只会构建它,直到我喜欢它的感觉。是的。而且……现在很容易获得这种感觉。而且我认为你以前可以在视觉上看到它,或者用语言描述它,但你永远无法获得那种氛围。而现在氛围真的很容易。
而且你构建了计划模式三次。是的。因为这个,你构建了它,然后你把它扔掉了,重新构建,然后扔掉,重新构建。是的。或者待办事项。Sid 也构建了原始版本,也是三四次,他构建了三四个原型。然后我听说我们在一天内做了 20 个版本。是的。我认为我们发布的几乎所有东西背后都有至少几个原型。
你如何跟踪并从一个原型到另一个原型继承你学到的东西?特别是如果是一个人原型化它,然后你说:“我来接手,我将做 20 个。”你如何最大化从中获得的收益?
有几个要素。一个是风格指南。所以我们发现了一些风格元素。我认为很多都是为终端构建的,我们正在发现一种新的终端设计语言,并在此过程中构建它。我认为其中一些可以编码到风格指南中。所以这是我们的 CLAUDE.MD。但还有另一部分是产品感觉,我认为模型还没有完全理解。我认为也许我们应该尝试找到方法来教模型这种产品感觉,关于这个有效,那个无效,对吧?因为在产品中,你想以最简单的方式解决用户的问题,然后删除所有不是那个的东西。然后清除所有障碍。所以你尽可能清晰地将产品与意图对齐。也许模型还没有完全理解。
是的,它从来没有。它并没有真正感受到使用 CLAUDE 代码是什么样的。模型不使用 CLAUDE 代码。是的。是的。所以,我认为当你的 CLAUDE 代码可以自我测试,并且可以使用它自己,我们在开发时就是这样做的。而且它可以看到 UI 错误和一些我不知道的事情。也许我们应该尝试提示它。老实说,很多这些东西都很简单,当你有一个新的想法时,通常你只是提示它,而且它通常就能奏效。也许我们应该试试。
很多原型实际上是用户体验交互。所以我认为一旦我们发现一种新的用户体验交互,比如 Shift-Tab 进行自动接受。我认为 Boris 发现了。实际上是 Igor。Igor 是的。是的,我们来回交流……然后事情可以适应它。他进行了为期一周的双原型测试。Shift-Tab 感觉很好。然后现在的一个计划模式迭代使用了 Shift-Tab,因为它实际上是另一种告诉模型代理程度的方法。是的。所以,我认为随着越来越多的功能使用相同的交互,你会形成一个更强的心理模型,知道什么应该放在哪里。
或者思考。我认为这也是一个很好的例子。比如在我们发布 CLAUDE Code 之前,或者可能它是第一个思考模型?是 3.7 吗?我不记得第一个了。是的。是的。而且它能够思考,我们正在头脑风暴“我们如何切换思考?”然后有人说:“如果我们只是让模型用自然语言思考,它就知道如何思考呢?”我们说:“好的,太棒了,我们去做吧。”所以我们做了一段时间,然后我们意识到人们会意外地切换它。所以他们说:“不要思考”,然后模型说:“哦,我应该思考。”然后它就开始思考了。所以我们不得不把它调出来,所以“不要思考”并没有触发它。但它仍然不明显,所以我们改进了用户体验,以突出思考的词语。
是的,那太有趣了,感觉很神奇。当你进行超思考时,就像彩虹一样,或者别的什么。是的。是的,正是如此。然后随着 Sonnet 4.5,我们发现当你开启扩展思考时,性能有了很大的提升。所以我们让它很容易切换,因为有时你想要它,有时你不想要,因为……对于一个非常简单的任务,你不想让模型思考五分钟。你只是想让它完成事情。所以我们使用 Tab 作为切换它的交互方式,然后我们取消了一些思考的词。虽然我认为我们保留了超思考,只是出于怀旧原因。它是一个很酷的用户体验。
有趣。你认为……有一个新的指标是关于你删除了什么。我认为程序员一直觉得删除大量代码感觉很好。但因为你可以如此快速地构建东西,所以删除东西也变得更加重要。我认为我最喜欢的差异类型是红色差异。这是最好的。每当我看到一个,我就说:“是的,来吧,再来一个,再来一个。”但很难,因为你发布的任何东西,人们都在使用它。所以你必须让人们满意。所以,我认为我们的一般原则是,如果我们取消发布某个东西,我们就需要发布一个更好的东西,人们可以利用它,更好地满足那个意图。是的,我认为这又回到了如何衡量 Claude Code 及其影响?这是每家公司、每个客户都会问我们的问题。
我认为在 Anthropic 内部,自一月份以来,我们的人员规模几乎翻了一番。但在此期间,每位工程师的生产力却提高了近 70%。
通过什么衡量?我认为我们实际上已经用几种方式衡量了它。但 PR 是最简单的,也是主要的。但你说了,这并不能完全捕捉到它的全部,因为很多都是让原型制作更容易,让尝试新事物更容易,让那些你从未尝试过的事情更容易,因为它们远远低于上线标准。你正在发布一个功能,还有一个愿望清单。是的。现在你只是做了所有这些,因为它们太容易了。是的。你只是不会去做。所以,是的,很难谈论它。
然后还有另一面,写了更多的代码,所以你必须删除更多的代码。你必须更仔细地进行代码审查,并尽可能多地自动化代码审查。还有一个有趣的新的产品管理挑战,因为你可以发布很多东西,结果它感觉不那么连贯,因为你可以很容易地在这里添加一个按钮,在那里添加一个标签,在这里添加一个小东西。它只是……构建一个拥有你想要的所有功能但没有组织原则的产品要容易得多,因为你一直在发布很多东西。
是的,我认为我们努力做到相当有纪律,确保所有抽象都非常容易理解,即使他们只听到功能名称。我们有一个原则,我相信 Boris 带来了团队,我真的很喜欢,我们不想要新的用户体验。一切都应该如此直观,你只需插入即可正常工作。我认为这为确保每个功能都非常直观设定了很高的标准。
你如何用对话式 UI 来做到这一点?因为没有一堆按钮和旋钮,一开始只有一个空白的文本框,你怎么考虑让它直观?
我们做了很多小事情。我们教人们可以使用问号查看提示。Claude Code 在工作时,我们会显示提示。我们有侧边的更改日志,我们会告诉你“哦,有一个新模型出来了”,或者我们在底部显示。我们有一个通知区用于思考。我认为我们通过微妙的方式告诉用户功能。我认为另一件非常重要的事情是确保所有基本元素都定义得很清楚。钩子在开发者生态系统中具有通用含义。插件在开发者生态系统中具有通用含义。只是确保我们构建的东西与普通开发者听到它时立即想到的东西相匹配。
还有渐进式披露。在 Claude Code 中,任何时候当你运行它时,你都可以按 CTRL+O 查看模型看到的完整原始对话记录。我们不会在你真正相关之前显示给你。所以当有一个折叠的工具结果时,我们会说“使用 CTRL+O 查看它”。所以我们不想一开始就给你太多的复杂性,因为这个东西什么都能做。
我认为还有一个新的原则,我们刚刚开始探索,那就是模型会教你如何使用这个东西。所以你可以问 Claude Code 关于它自己的事情,它知道查找自己的文档来告诉你。但我们也可以更深入,例如,斜杠命令是人们可以使用的东西。但模型也可以调用斜杠命令。也许你看到模型调用它,然后你会说:“哦,是的,我猜那个也能做。”
是的,是的。有趣。
当你第一次开始做 Claude Code 时,它是一种单一的东西,一种通过 CLI 使用 AI 的单一思考方式。其他人也有类似的东西,但感觉是一种转变。现在有一个完整的景象,每个人都在走向 CLI。这如何改变了你对构建的看法,构建的感觉,以及你如何应对你所处的竞赛压力?
我认为对我来说,模仿是最大的恭维,所以这很棒,而且看到所有其他人正在构建的东西并从中获得灵感,这很酷。我认为最终的目标是激励人们为这项即将到来的不可思议的技术构建下一件事,这真的很令人兴奋。
就我个人而言,我并不真正使用很多其他工具。所以通常当新东西出来时,我可能会尝试一下以获得一种感觉,但除此之外,我认为我们非常专注于解决我们自己和客户遇到的问题,并构建下一件事。
酷。太棒了。我也喜欢这次采访的这一部分。我们是否回答了你团队的所有问题?好问题。我们是否通过了我团队的所有问题?让我想想。我认为我们做到了。
我也很好奇你会如何回答取消发布的问题。因为如果你也在进行这种 AI 驱动的开发,你会发布很多东西。你有一个小团队,所以有很多运营负担。我之所以这样问,是因为我认为我们在这方面做得不好,而且我有一种感觉,一些产品因此有点混乱。而且我认为特别是对于 Quora,产品表面积很大,它可以做很多不同的事情。我们有一个……一个电子邮件系统,所以你可以问它“告诉我关于我正在进行的旅行”,它会浏览你所有的电子邮件并总结旅行。或者我们有一个功能,它会自动存档任何你不需要立即回复的电子邮件,然后每天两次,你会收到一个摘要,总结了你可能需要看到但不需要实际处理的所有内容,你只需滚动浏览即可完成。而且围绕着……例如,电子邮件是如何分类的?所以现在我们有一个完整的视图,我们有所有这些分类规则,你可以对它们进行排序,等等,但它很复杂,而且很难沟通。我想保留很多……所有的力量和灵活性,但你也无法看着屏幕说:“我不知道发生了什么。这太复杂了。”所以,我正在处理所有这些事情,所以这种删除……取消发布……的想法感觉是一个我们还没有真正探索过的有趣的文化原则。
这真的很难。我认为它也有社会成本,你有点想成为那个告诉你的同事取消发布他们的……是的。这绝对很棘手。是的,比代码本身要多。
我绝对在 Instagram 上运行这个,说实话。因为我认为 Facebook 在取消发布方面做得非常糟糕。我们遇到了这个问题,每次……我认为即使取消发布戳也很辣,因为有一些老员工。但如果你看数据,没有人真正使用它了。但出于怀旧原因,他们有点依恋它。所以对于 Facebook 来说,它可能永远不会……什么都不会被取消发布。它总是被移到一个次要的地方,一个溢出菜单,一个没人看的地方,一个坟墓。是的。我认为 Instagram 非常有原则。有一个非常强的产品和设计观点,那就是“如果一半的人不使用这个东西,你 50% 的人……哇,或者别的什么,我们就把它删掉,然后处理它,然后我们会想出一些被更多人使用的东西。”
我喜欢。好吧,谢谢。这太棒了。我很高兴能和你交谈,继续构建。谢谢你们的邀请。是的,谢谢。