## 摘要 这是一场由 Anthropic Applied AI 团队成员 Cal 主讲的关于 Claude Code 最佳实践的技术演讲。Cal 分享了他从普通用户到核心贡献者的经历,深入解析了 Claude Code 的工作原理、使用场景和最佳实践。 **核心要点:** - Claude Code 是一个基于纯代理架构的编程工具,通过强大的终端工具和代理搜索能力理解代码库 - 主要应用场景包括代码发现、思维伙伴、构建编写、部署和调试支持 - 关键最佳实践:使用 `.claude.md` 文件、权限管理、集成设置、上下文管理和高效工作流 - 高级技巧:多实例并行、escape 键的巧妙使用、MCP 扩展和无头自动化 **适合人群:** 软件开发者、AI 工具使用者、团队技术负责人 ## 完整中文翻译 ### 开场介绍 大家好,欢迎来到 Claude Code 最佳实践的分享。在这次演讲中,我将从高层次介绍什么是 Claude Code,然后深入了解 Claude Code 的工作原理,因为了解工具的工作方式很有用。接着我们会讨论 Claude Code 的良好使用场景,以及我们在内部和用户那里总结出的最佳实践,帮助大家充分利用这个工具。 首先让我简单介绍一下自己以及我是如何走到这个台上的。我叫 Cal,大约一年半前加入 Anthropic,帮助创建了一个叫做应用AI的团队。应用AI团队的使命是帮助我们的客户和合作伙伴在 Claude 基础上构建优秀的产品和功能。这意味着我每天大部分时间都在与 Claude 对话,以从这些模型中获得最佳输出。 话虽如此,我也热爱编程,我绝对是那种经常开始很多项目、有一些疯狂想法但从不完成的程序员。所以我有一个代码墓地,都是我开始但从未真正完成的项目。但我总是在启动新项目。 去年年底,我在 Slack 上听说有一个新工具,几个人在使用,他们说很酷。所以在一个周五晚上,我下载了这个后来成为 Claude Code 的工具。我把它应用到我想构建的一个新笔记应用上。那整个周末彻底改变了我编程和思考软件工程的方式。我整个周末都带着笔记本电脑,超级沉迷于观看 Claude Code 工作。我会按回车键,然后切换到浏览器刷新,看着这个强大的应用程序在我眼前组合起来。我在这个项目上走得比我自己能走的要远得多,这让我震惊。 在做这件事的时候,我有点担心。我想,你知道的,我有点了解这些东西是如何工作的。所以我想,天哪,我在使用很多令牌。我希望我不会惹上麻烦或者有人注意到我没有真正为 Anthropic 的代码做贡献。但我不知道的是,Claude Code 团队建立了一个内部排行榜,追踪所有 Anthropic 员工使用这个工具的情况。在那个周末,我冲到了榜首。 通过这个,我认识了 Boris 和 Cat 以及一些早期的 Claude Code 团队成员。我能够开始与他们交谈并说:"嘿,我喜欢这个工具。我也很了解提示工程。我能帮助你们吗?"通过这个,我参与进来,现在我是团队的核心贡献者之一。我在提示工程、系统提示、工具工作方式、工具描述和工具结果方面做了很多工作,我也负责这个工具的评估工作。当我们考虑改变提示时,我们如何知道我们让事情变得更好还是一样,而没有完全破坏 Claude Code。 ### Claude Code 的工作原理 现在让我们深入了解。这是我当前对 Claude Code 的心理模型,也是当人们问我时我如何向他们描述的。Claude Code 就像那个在终端上做所有事情的同事。他们是那种从不碰 GUI 的人,他们是个高手。我想起我作为初级工程师时,有一个导师,我会走到他的桌子前说:"嘿,Tony,你能帮我解决这个 bug 吗?"他会打开他的终端,做一些疯狂的 bash 命令,在 Vim 中改变东西,我总是会想:"哇,那太疯狂了。我应该学会如何做到这一点。"我从来没有学会。但在你的计算机上拥有 Claude Code 就像一直有 Tony 在你身边。 那么,Claude Code 在底层是如何工作的呢?在 Anthropic,我们总是尝试做我们称之为"有效的简单事情"。对于 Claude Code 来说,这意味着它是我们认为的一个非常纯粹的代理。在 Anthropic,当我们谈论代理时,我们真正的意思是一些指令、一些强大的工具,然后你让模型在循环中运行,直到它决定完成。这就是 Claude Code 的真正含义。 所以它是工具,强大的工具,这些工具是你知道的某个真正擅长终端的人能够使用的工具来创建和编辑文件、使用终端。然后你也可以通过 MCP 引入其他东西。 在此基础上,还有 Claude 如何理解代码库。如果你要在一年前构建一个编程代理或编程工具,你可能会有这样的想法,好吧,我要从用户那里得到关于这个代码库的某个消息,我需要找出哪些文件是相关的。所以也许我会索引整个代码库并嵌入它,并做这种花哨的 RAG 检索。这不是 Claude Code 的工作方式。我们不做任何类型的索引。相反,Claude 以你如果你是团队新成员并且对代码库不熟悉的方式来探索和理解代码库,通过代理搜索,这是你我会使用的相同类型的搜索工具,比如 glob、grep 和 find,它可以通过代码库工作并理解正在发生的事情。 当我们谈论代理搜索时,这真正意味着模型可以去做一些搜索,然后它可以查看结果并说,嗯,也许我需要弄清楚更多的事情,我要去做更多的搜索,然后回来。 在这些基础之上,在这个代理之上,我们有一些东西。我们有一个非常好的轻量级 UI 层,你可以在其中观看 Claude Code 工作。你看到所有的文本飞过,我们有这个很好的权限系统,允许代理工作,并在代理做危险事情时强制人类介入。 在此基础上,我们也非常关心这个工具的安全性。因为 Claude Code 只是模型之上的一个轻量级层,而且我们的模型不仅可以通过 Anthropic API 获得,还可以通过我们的云提供商 AWS 和 GCP 获得,如果你觉得通过那种方式使用 Claude 更舒服,那么将 Claude Code 指向这些其他服务之一是非常容易和自然的。 ### Claude Code 的使用场景 现在很多人问我:"嘿,Cal,我可以使用 Claude Code 做什么?它擅长什么?哪里有趣?"现实是它几乎在所有方面都很出色。 **发现** 在你的职业生涯中,你经常会被丢到一个新的代码库中。无论这意味着你在换团队、换公司,还是开始在某个开源项目上工作。当你刚开始并变得熟悉时,你可能不会很有效率,因为你只是试图弄清楚代码库中的东西在哪里,团队使用什么模式,诸如此类的事情。Claude Code 可以帮助加速这个入职过程。你可以问 Claude,嘿,这个功能在哪里实现?或者由于它擅长终端,你可以说,嘿,看看这个文件,看看 git 历史,告诉我过去几周这个代码是如何变化的故事。 **思维伙伴** 你可以使用 Claude Code 的一件事,我认为这被低估了,就是不要直接开始工作,你可以使用 Claude Code 作为思维伙伴。所以经常当我与 Claude 一起工作并且我想实现一个功能或者我们要改变一些东西时,我会打开 Claude 并说:"嘿 Claude,你知道,我在考虑实现这个功能,你能搜索一下,弄清楚我们如何做到这一点,也许报告两三个不同的选项。不要开始工作,还不要写任何文件。"Claude 会去使用那些代理搜索能力,回来给出一些想法,然后我可以与 Claude 一起验证事情,然后我们可以跳入项目。 **构建和编写代码** 当然,Claude Code 擅长构建和编写代码,我想说这在两个不同的方面。一是它可以做从零到一的东西,你把它放在一个空目录中,你说嘿,给我构建一个应用程序,构建一个演示的游戏,这很有趣,很有满足感。当然,在现实中,真正重要的是 Claude Code 在现有代码库中工作得好吗。这主要是我们在 Claude Code 团队关注的。 在我们的代码库中,我们有异常高的单元测试覆盖率。这是因为 Claude Code 使添加单元测试变得如此简单和直接。所以我们有很好的代码覆盖率。然后我们在 Claude Code 自己的代码库中的另一件事是我们有很好的提交和 PR 消息,因为当我们完成工作时,我们只是说嘿 Claude 为我写提交,为我写 PR 消息。 **部署和生命周期** 我们也看到在部署和生命周期的其他部分使用 Claude Code 的绝佳机会。这是一些其他人已经谈论过的,但这是使用 Claude Code SDK。所以无头使用它,以编程方式使用它,能够在任何地方撒入编程代理。所以这就像将它撒入 CI/CD 中,在 GitHub 中使用它来帮助人们以编程方式。 **支持和规模** 最后,它在支持和规模方面很出色。它可以帮助你更快地调试错误。当我们开始向客户提供 Claude Code 并与他们交谈时,我们没有完全预测到的一件事是很多客户或潜在客户说:"嘿,我们一直在推迟这个大型代码库迁移。那些使用旧版本 Java 试图升级到新版本的人,或者一个使用 PHP 试图升级到 React 或 Angular 的团队。我们与多个这样的团队交谈过,拥有像 Claude Code 这样的工具让这样的项目变得更容易消化。当你去你的团队说:"嘿,我们要花一个月的时间重构或重写代码库的大部分。" 在所有这些之上,这在所有这些方面都很重要,再次记住 Claude 擅长终端。这意味着它将擅长所有那些不同的 CLI 工具,像 Git、Docker、Big Query 这样的东西。我永远不必担心,哦,我要如何摆脱这个棘手的 rebase?我只会启动 Claude Code 并告诉它情况,说:"嘿,你能为我修复这个吗?"这太不可思议了。 ### 最佳实践 现在,让我们谈论最佳实践。第一个不会让人惊讶,但第一个是使用 `.claude.md` 文件。 **使用 .claude.md 文件** 记住 Claude Code,如我所说,是一个代理,它有一些工具,在提示中有一些轻量级指令,但它真的没有记忆。所以我们在会话之间或当我们在同一个代码库中一次又一次地启动 Claude Code 时共享状态的主要方式是这个 `.claude.md` 文件。 当我们启动 Claude 时会发生什么,如果工作目录中有这个 `.claude.md` 文件,它就会被放入上下文中。它被放入提示中。基本上它说的是,嘿 Claude,顺便说一下,这些是开发者为你留下的重要指令。一定要密切关注这个。 你可以在各个地方放置 `.claude.md` 文件。你可以把它放在一个项目中并检入,这样你的所有队友都可以共享它。如果有你只是希望 Claude 总是知道的事情,无论你在做什么,你都可以在你的主目录中放一个。你在这里放的东西是像,嘿,顺便说一下,也许这是你运行单元测试的方式。或者只是让你知道,为了让你的搜索和生活更轻松,这里只是对这个项目如何布局的概述,测试在哪里,不同的模块是什么,诸如此类的事情。或者这是我们的风格指南。所有这些东西只是为了让 Claude 的生活更轻松。你可以随着时间的推移构建这些东西。 **权限管理** 你能做的另一件重要事情是权限管理。当你运行 Claude Code 时,有各种不同类型的权限事情飞过。开箱即用,当你启动我们的工具时发生的是,对于读取操作,如果 Claude 在搜索或阅读,我们就让它去。但是一旦它开始写入或运行 bash 命令或做可能在你的机器上改变东西的事情,那就是我们启动这个 UI 的时候,它会说像是的,是的,总是允许这个或不,我想做别的事情。 使用权限管理并对此保持聪明可以帮助你更快地工作。有一个叫做自动接受模式的东西,如果你正在使用 Claude Code 并按 shift tab,Claude 就会开始工作。你可以做一些事情,比如你可以在设置中配置 Claude,对于像 bash 上的特定命令,如果你只是厌倦了说是运行 npm run test,你可以总是批准它。所以调整你的权限管理是加速工作流程的好方法。 **集成设置** 会帮助你从 Claude Code 中获得最多的一件事是记住它擅长终端。如果有你使用的应用程序,它们有一种通过 CLI 访问它们的方式,GitHub 就是一个很好的例子。他们有一个叫做 GH 的强大工具,你基本上可以给 Claude Code 更多的工作,你可以通过安装更多的 CLI 工具或附加更多的 MCP 服务器来做到这一点。 我想说只是通过经验,如果你使用像 CLI 工具这样的东西,它是众所周知和有良好文档的,你在 CLI 工具和只是在你的机器上安装它和获取 MCP 服务器之间选择,我会推荐使用 CLI 工具。然后如果你内部有自己的工具,在 Anthropic,我们有一个叫做 coup 的东西,为我们做一堆事情。你也可以告诉 Claude 这个,这就是你会放在 `.claude.md` 中的那种东西。 **上下文管理** 记住 Claude 是一个代理,当它是一个代理时,它所做的是调用这些工具,上下文随着时间的推移越来越多,至少对于 Anthropic,我们的模型有 200,000 个令牌的上下文窗口,你可以最大化这个东西。 所以当你与 Claude 进行长时间的会话并且你正在工作并来回时,你有两个选择。你会在右下角看到你会开始得到这个小警告,说嘿,你开始填满上下文窗口,根据正在发生的事情,你有两个选择。 你可以运行 `/clear` 并重新开始,这会清除除了例如 `.claude.md` 之外的所有东西,或者你可以运行 `/compact`,会发生的基本上是插入一个用户消息,它只是说像嘿,我需要去总结我们一直在做的一切。我要把这个给另一个开发者,他们会从我离开的地方开始。然后那个摘要就是播种下一个会话的东西。你可以从那里继续。我们花了很多时间调整这种压缩功能,以便当你最大化上下文窗口然后运行压缩时,你可以重新开始并继续前进。 ### 高效工作流程 **使用规划和待办事项** 你可以用 Claude Code 做什么以及如何获得最多?所以使用规划和待办事项。我之前谈到过一点,但你能做的最好的事情之一是当你打开 Claude Code 时,不是说:"嘿,我需要你修复这个 bug",你可以说:"嘿,我有这个 bug。你能搜索一下,弄清楚是什么导致的,然后告诉我一个我们要如何修复它的计划吗?"这可以为你节省很多时间,因为你可以验证,你可以阅读 Claude 的计划,你可以验证它将要做什么。 然后我们有这个待办事项列表功能。所以经常当 Claude 在处理一个大任务时,它会创建一个待办事项列表。如果你注意的话,你可以观看这个待办事项列表,如果你看到任何奇怪的东西或不合理的东西,那就是你可以按 escape 并说:"嘿 Claude,让我们改变待办事项列表。我认为你走错了路。" **智能轻松编程** 让 Claude 工作并按回车键看最后会发生什么是非常诱人和强大的。我认为有一些事情可以帮助让这变得更好。今天晚些时候有一个专门讲这个 30 分钟的演讲。但是做像测试驱动开发这样的事情,让 Claude 做小的改变,运行测试,确保它们通过,总是让 Claude 做像检查 TypeScript 和 linting 这样的事情,然后定期提交,这样如果它有点偏离轨道,你总是可以回退并重试。 **使用截图指导和调试** 你可以使用截图来指导和调试。所以 Claude 建立在我们的多模态模型之上。你总是可以抓取一个截图,粘贴进去,或者如果你在某个地方有一个图像文件,你可以说:"嘿,Claude,看看这个 mock.png,然后为我构建网站或其他什么。" ### 高级技巧 当你习惯使用 Claude 时,有一些你可以考虑的事情来把事情推向下一个层次? **多实例并行** 我们内部和客户看到的一件事是,当你开始使用这个工具一段时间后,使用多个 Claude 是非常诱人的。所以我知道 Anthropic 的人和一些同时运行四个 Claude 的客户。有各种方法可以做到这一点。你可以在 T-Mux 中有它或只是不同的标签,各种疯狂的事情。所以我挑战你尝试让多个 Claude 同时运行并协调所有这些事情。这很有趣。我只能做两个,但我知道有人做四个。 **使用 Escape 键** Escape 是你最好的朋友。当 Claude 工作时,你可以关注它在做什么,你可以按 escape 来停止它并插话说:"嘿,我认为你走错了路,或者我想要你做别的事情。"知道什么时候按 escape 与只是让 Claude 想出来的正确时间,是充分利用工具的关键。 有一个隐藏功能。没有太多人知道这个,但如果你按两次 escape,你实际上可以在对话中跳回去。你可以回去,你可以重置。 **工具扩展和 MCP** 这是将它提升到下一个级别。如果你觉得 Claude 拥有的 bash 和工具仍然无法做某事,这就是你应该开始查看 MCP 服务器的时候。 **无头自动化** 我认为这是我们最兴奋的事情,但我们内部仍在努力理解,那就是我们如何以编程方式使用 Claude。我们在 GitHub actions 中有这个。我们想弄清楚我们可以开始使用它的其他创造性地方。我挑战你们所有人也这样做。 ### 最新功能 演讲者还展示了一些最新功能: **模型切换** 现在你可以用 `/model` 查看你运行的是什么模型。我在默认模式下,恰好是 Sonnet。我们可以跳到 Opus。你可以在 `/config` 中做同样的事情。 **思考功能增强** 长期以来我们有这个"努力思考"或扩展思考功能。现在这很棒,但在我们过去的模型中,我们不会让我们的模型在工具调用之间思考,而那可能是思考最重要的时候。所以从 Claude 4 开始,我们的模型现在可以在工具调用之间思考,我们可以观看这种情况发生。 **IDE 集成** 我们与 VS Code 和 JetBrains 有了很好的新集成。Claude 会知道我在哪个文件中。 ### 问答环节 演讲最后有一个简短的问答环节,涵盖了: - 多个 `.claude.md` 文件的处理 - Claude 4 在遵循指令方面的改进 - 多代理执行和并行化的可能性 ## 来源引用 **演讲标题:** Claude Code Best Practices **演讲者:** Cal (Anthropic Applied AI 团队成员) **时长:** 约 25 分钟 **格式:** 技术演讲 + 现场演示 + 问答 **主要话题:** Claude Code 工具使用、最佳实践、工作原理解析 **目标受众:** 软件开发者、AI 工具使用者 *注:本文基于英文演讲音频转录稿翻译整理,部分技术细节可能因版本更新而有所变化。*