Anthropic员工对外分享Claude Code 最佳实践
2025年8月2日
本文来自Anthropic员工对外分享Claude Code 最佳实践,高级技巧。
本次演讲的核心思想是:停止将 Claude Code 当作一个简单的代码补全工具,而是将它视为一位能够自主工作的终端大神同事。 掌握了正确的心智模型和工作流,你就能将它从一个辅助工具,转变为一个能独立承担复杂任务的强大编程伙伴。
1、核心工作流:先规划,后执行
这是最重要的一个技巧。不要直接命令 Claude “写代码”或“修复 bug”。这样做效率低下且容易出错。正确的工作流分为两步:
第一步:让它制定计划。告诉它你的最终目标,然后明确要求它:“先别写代码,给我一份详细的行动计划(TODO list)。” Claude 会利用其强大的代码库探索能力,分析相关文件,并给出一份包含具体步骤的计划。
第二步:你来审查和确认。快速浏览这份计划。这是你作为人类开发者最有价值的环节——确认它的思路是否正确。如果计划没问题,你再授权它执行;如果计划有偏差,你可以立刻通过对话(或按 Escape
键打断)来纠正,避免它在错误的方向上浪费时间。
这个“规划-确认-执行”的循环,是避免 AI “幻觉”和返工、保证高质量输出的关键。
2、关键实践:用 CLAUDE.md
喂养项目专属知识
Claude Code 的能力强弱,直接取决于它对你项目上下文的理解程度。CLAUDE.md
文件就是你为它提供的 “项目专属说明书”和“长期记忆”。
在这个文件中,你可以定义项目的技术栈、代码风格指南(比如“不要写多余的内联注释”)、关键模块的架构、运行测试的特定命令等。
一旦配置好,团队中任何人在这个项目中使用 Claude,都能获得一致且符合规范的帮助。这极大地提升了团队协作效率和代码质量,尤其是在新成员上手(Onboarding)和大型重构项目中。
3、进阶玩法:从“结对编程”到“组建 AI 团队”
当你熟练掌握了基础用法后,可以尝试更高级的并行工作模式。
多实例并行:不要局限于一个终端。你可以同时打开多个 Claude Code 实例,让它们协同工作。例如: 实例A:负责核心业务逻辑的编写。实例B:负责为 A 编写的逻辑生成单元测试。实例C:负责查阅文档或根据代码变更生成 PR 描述。
这种方式将复杂的任务并行化,能成倍提升开发速度。更高阶的玩法是利用其 SDK 将这种能力集成到 CI/CD 流程中,实现真正的无头自动化,让 Claude 成为你自动化流水线中的一员。
以下是原文
开场白与分享会纲要
我们开始吧。欢迎大家来到 Claude Code 最佳实践分享会。
在这次分享中,我会先从宏观层面介绍一下 Claude Code 是什么。然后,我们会深入了解它的底层工作原理。
了解了这些之后,我们再来聊聊 Claude Code 的适用场景,以及我们从内部使用和用户反馈中总结出的一些最佳实践,希望能帮助大家最大限度地发挥这个工具的潜力。
自我介绍:我与 Claude 的日常
在正式开始前,请允许我简单介绍一下自己,以及我为什么会站在这里。
我叫 Cal,大约一年半前加入了 Anthropic,参与组建了一个我们称之为“应用 AI”的团队。我们团队的使命,就是帮助客户和合作伙伴基于 Claude 构建出色的产品和功能。
所以,简单来说,我每天大部分时间都在和 Claude 互动,想方设法从模型中获得最好的输出结果。
当然,我自己也非常热爱编程。我绝对是那种喜欢开很多新项目,脑子里总有各种疯狂点子,但最后却很少能完成的人。所以我的电脑里简直就是一个“代码坟场”,堆满了我开了头却烂尾的项目。我总是在不断地尝试新东西。
一次改变编程方式的体验
去年年底,我在公司内部的 Slack 上听同事们聊起一个新工具,都说它特别酷。于是,在一个周五晚上,我下载了这款后来被命名为 Claude Code 的工具,然后用它来开发一个我一直想做的笔记应用。
结果,那个周末彻底改变了我写代码和看待软件工程的方式。我整个周末都抱着笔记本电脑,简直沉迷于看 Claude Code 工作。
我只要按下回车,然后切换到浏览器刷新,就能看到一个功能强大的应用在我眼前一步步成型。我独自一人在那个周末取得的进展,远远超过了我以往任何时候。这种体验太震撼了,让我大开眼界。
当时我还挺担心的,心想:“天啊,我用了这么多 token,不会惹上麻烦吧?希望没人注意到我没在为公司的项目贡献代码。”
我当时不知道的是,Claude Code 团队内部做了一个排行榜,用来追踪公司里谁用得最多。结果那个周末过后,我一下子冲到了榜首。
正是因为这个契机,我认识了 Boris、Cat 和其他早期的 Claude Code 团队成员。我跟他们说:“嘿,我超喜欢这个工具,而且我对提示词工程也很了解,我能帮上什么忙吗?”
就这样,我加入了团队,现在是核心贡献者之一。我负责很多与提示词工程相关的工作,包括系统提示词、工具的工作方式、工具描述和结果处理等。同时,我也参与评估这个工具的性能,确保我们对提示词的每一次调整,都能让它变得更好,而不是搞砸了什么。
核心理念:Claude Code 的心智模型
好了,言归正传。我们先来聊聊我当前对 Claude Code 的心智模型,也就是当别人问起时,我通常会如何向他们解释。
Claude Code 就像你身边那个从不用图形界面、所有操作都在终端里完成的大神同事。
我刚入行时,就有一位这样的导师。每当我遇到 bug,跑去请教他,他就会打开终端,一顿行云流水的操作,用各种神奇的 Bash 命令和 Vim 技巧解决问题。我每次都看得目瞪口呆,心想:“太牛了,我也要学这个。”
虽然我最终没学会,但现在,在电脑上拥有 Claude Code,就好像随时都有那位大神在身边一样。
Claude Code 的工作原理
那么,Claude Code 在底层是如何工作的呢?
在 Anthropic,我们信奉一个原则,那就是“用最简单有效的方法解决问题”。对于 Claude Code 来说,这意味着它是一个非常“纯粹”的智能体 (agent)。
在 Anthropic,我们所说的智能体,其实就是“一些指令”加上“一套强大的工具”,然后让模型在一个循环里自主运行,直到它认为任务完成为止。Claude Code 的核心就是这样。
它拥有的工具,也正是那些终端高手会使用的:创建和编辑文件、使用命令行,以及通过 MCP (Model-Controlled Program) 协议集成其他工具。
代码库感知能力
在这些工具之上,是 Claude 理解代码库的方式。
如果是在一年前,你要开发一个编程智能体,你可能会想:“好的,我收到了用户的请求,需要先找出相关的代码文件。
那么,我可能得把整个代码库索引一遍,做成向量嵌入,然后用 RAG(检索增强生成)那套复杂的方法来检索。”
但 Claude Code 并不是这么做的。它理解代码库的方式,更像一个刚加入团队的新人——通过“智能体式搜索”(agentic search)来探索。它使用的搜索工具,比如 glob
、grep
和 find
,也和我们开发者平时用的一样。
所谓的“智能体式搜索”,就是模型可以自己去执行搜索,然后分析结果,心想:“嗯,信息还不够,我得再多了解一些情况。”然后它会继续搜索,直到搞清楚为止。
透明度与安全性
在这些基础能力之上,我们还构建了一些重要的特性。我们提供了一个简洁的 UI 层,让你能清楚地看到 Claude 的每一步操作。
同时,我们设计了一套分层权限系统,在赋予智能体强大能力的同时,也确保了用户的控制权,当智能体要执行危险操作时,会强制需要人类介入。
我们也非常重视安全性。
Claude Code 是一个轻量级的工具,它直接通过 API 与 Anthropic 的模型通信,中间没有任何中转服务器。而且,我们的模型不仅可以通过 Anthropic 的 API 使用,还支持通过我们的云服务合作伙伴 AWS 和 Google Cloud Vertex AI 调用。
如果你更习惯在这些云平台上使用,也可以很方便地将 Claude Code 指向它们。
应用场景:贯穿整个软件开发生命周期
很多人问我,Claude Code 到底能用在哪些地方?
答案是,它几乎能胜任软件开发生命周期的每一个环节。
1. 探索阶段
在你的职业生涯中,你总会遇到需要接触新代码库的情况,无论是换团队、换公司,还是参与开源项目。刚开始的时候,你效率肯定不高,因为大部分时间都花在搞清楚代码在哪、团队遵循什么模式上了。
而 Claude Code 就能极大地加速这个上手的过程。你可以直接问它:“这个功能是在哪里实现的?”或者因为它是终端高手,你可以让它:“看看这个文件,再查查它的 Git 历史,给我讲讲过去几周这段代码都经历了哪些变化。”
2. 设计阶段
除了直接上手干活,你还可以把 Claude Code 当作一个“思考伙伴”。
我觉得这一点常常被大家低估了。当我准备实现一个功能或者做一些改动时,我经常会先和 Claude 聊一聊,对它说:“嘿 Claude,我准备做这个功能,你先帮我搜一搜,看看我们应该怎么实现,然后给我提供两三种不同的方案。”
记住,先不要动手写代码。
Claude 会利用它的搜索能力,给出几个备选方案。然后,我可以和它一起评估这些方案,最后再开始实施。
3. 构建阶段
当然,Claude Code 非常擅长构建和编写代码。
这体现在两个方面:一方面,它能处理从零到一的创建任务,比如在一个空目录里对它说“给我写个应用”或“做个游戏”,这种演示效果很酷,也很有成就感。
但另一方面,在现实工作中,更重要的是它在现有代码库中的表现,而这也是我们主要关注和优化的方向。
在 Claude Code 团队内部,我们代码库的单元测试覆盖率高得有点不正常。
之所以能做到这一点,就是因为 Claude Code 让添加单元测试变得异常简单。我们还用它来生成高质量的 commit 信息和 PR 描述。
当我们完成工作后,只需要说一句:“嘿 Claude,帮我写一下 commit 信息。”
4. 部署阶段 我们还发现,在部署环节,Claude Code 也有巨大的潜力。
这主要通过 Claude Code SDK 来实现,你可以无头化(headless)、程序化地调用它。
比如,把它集成到你的 CI/CD 流水线或者 GitHub Actions 里,实现自动化。
5. 支持与扩展阶段
最后,在支持和扩展阶段,它能帮你更快地调试错误。
我们发现一个很有意思的用途,就是处理那些大家一直拖着不敢动的大型代码库迁移项目。
比如,有的团队想从旧版 Java 升级,有的想从 PHP 迁移到 React 或 Angular。有了 Claude Code 这样的工具,这些原本令人望而生畏的大型重构项目就变得更容易处理了。
而且,这一切都离不开它的核心能力:熟练掌握并使用你团队的所有命令行工具(例如 git、docker、bq),让你能专注于解决问题,而不是纠结于语法。
最佳实践与高级技巧
环境设置与配置
CLAUDE.md 文件
要善用 CLAUDE.md
文件。我们说过,Claude Code 没有长期记忆,而 CLAUDE.md
就是我们跨会话、跨团队共享状态的主要方式。当你启动 Claude 时,它会自动把这个文件的内容加载到上下文中,把它当作是开发者留下的重要指示。你可以在项目根目录创建一个,并提交到代码库中,这样团队成员就能共享。也可以在你的用户主目录下放一个,用来存放那些你希望 Claude 在任何项目中都知道的通用指令。
权限管理
通过精心管理允许的工具,可以减少编码过程中的打断,提升效率。
集成设置
记住,Claude 是个终端高手。所以,如果你平时用的工具有命令行版本(CLI),比如 GitHub 的 gh
,一定要装上。这样能让 Claude 的能力更上一层楼,实现无缝的 GitHub 工作流,让它来处理版本控制。
上下文管理
要养成定期使用 /clear
命令的习惯,这样能保持对话的专注度,避免上下文过长导致混乱。
高效工作流
规划与待办事项
在开始一个任务时,不要直接让 Claude 写代码。更好的方式是,先让它阅读相关文件,然后制定一个详细的计划。
在你确认了它的待办事项列表(TODO list)后,再让它开始执行。
智能“凭感觉”编程 这听起来可能有点玄学,但非常有效。
你可以借助测试驱动开发(TDD)和频繁的提交作为“护栏”,然后放心地让 Claude “凭感觉”去写代码,让它自由发挥。
使用截图进行指导和调试 Claude 的模型是多模态的。你可以利用这一点,通过截图来比较实现效果和设计稿的差异,或者用截图来指导它如何进行设计和调试。
高级技巧
多实例与并行化 当你用熟了之后,你很可能会想同时开好几个 Claude 实例来并行工作。你可以用不同的实例来分别负责编码、评审和测试,或者部署工作树 (worktrees) 或子智能体来同时处理复杂问题。
善用 Escape 键
学会用 Escape
键,它会是你最好的朋友。在 Claude 工作时,你可以随时按 Escape
键来暂停它。
如果你觉得它走偏了,想重新介入对话,只需要再按一次 Escape
键就行。在放手让它工作和适时介入指导之间找到平衡,是高效使用它的关键。
工具扩展与 MCP 如果你觉得现有的工具和 Bash 依然无法满足你的需求,那么就应该开始研究如何通过 MCP (Model-Controlled Program) 协议来扩展它的工具集,集成你自己的 Bash 工具、MCP 服务器和自定义斜杠命令。
记住,Claude Code 本身既是一个 MCP 客户端,也是一个服务器。
无头自动化
利用 -p
模式,将 Claude Code 集成到你的 CI/CD 流水线中,或者用于处理大规模的代码变更,实现真正的自动化。
最新功能速览
我们团队的迭代速度非常快。
为了让大家跟上节奏,我来快速展示几个最新功能。
现在,你可以在 Claude Code 中使用 /model
命令来查看和切换正在使用的模型。默认是 Sonnet,但你也可以轻松切换到更强大的 Opus 来处理复杂任务。当然,在 /config
设置里也能做同样的操作。
另外一个重大更新是,从 Claude 4 模型开始,模型可以在两次工具调用之间进行“思考”。
以前,模型是无法做到这一点的。现在,如果你在指令后面加上“think hard”(认真思考),你就能看到一个“Thinking...”的过程,模型会先规划好策略,然后再去调用工具。
这让它在处理复杂问题时表现得更出色。
最后,我们与 VS Code 和 JetBrains 的集成也越来越深入。Claude 现在能感知你当前打开的文件和选中的代码行。比如,你可以选中一段代码,然后说:“帮我把这段翻译成西班牙语”,它就能立刻完成。
为了不错过这些新功能,我建议大家关注我们在 GitHub 上的 anthropic/claude-code
项目。我们会在那里发布更新日志,我本人每周也都会去查看,确保自己没有落伍。
问答环节
好了,我们还有大概四分钟,大家有什么关于 Claude Code 的问题都可以提出来。
观众提问:
一个项目里可以有多个 claude.md
文件吗?比如在不同的子目录里。它会自动识别并使用吗?
Cal 回答: 问得好。在同一个目录里肯定不行。但你可以在一个子目录里放一个,在项目根目录放一个。
我们最近做了一些调整,默认情况下,它只会加载当前工作目录和你的用户主目录下的 claude.md
文件。之所以这么做,是因为在像 Anthropic 这样的大型单体代码库(monorepo)中,如果从根目录启动,会加载所有子目录的 claude.md
,导致上下文爆炸。
不过,Claude 在通过智能体搜索探索代码库时,如果发现子目录里有相关的 claude.md
文件,它会被鼓励去阅读。
另外,你也可以在一个 claude.md
文件里,通过 @
符号来引用另一个 claude.md
文件,这样就可以把它们串联起来。
观众提问:
我发现让 Claude 遵守 claude.md
里的指令有些困难。比如,我让它在重构代码时不要留下解释“代码做了什么”的内联注释,因为它写的注释都非常多余。
我甚至在 claude.md
里明确写了这条规则,但它还是会先删掉,然后在下一次操作里又重新加上。有什么好办法吗?
Cal 回答: 哈哈,我完全理解。这其实更多的是一个模型本身的问题。
我们内部也花了很多力气在提示词里强调“不要写多余的注释”,但模型就是有这个“爱好”。
好消息是,这个问题在 Claude 4 中得到了很大的改善。
首先,新模型在遵循指令方面的能力大大增强了。我们从早期测试用户那里得到的反馈是,claude.md
里的规则现在被遵守得好多了。所以,升级到新模型可能会是解决你问题的好机会。
同时,这也提醒我们,可以去重新审视一下自己的 claude.md
文件,看看哪些规则已经不再需要,或者可以添加哪些新的、更精细的指令。
观众提问: 我们正在做多智能体并行执行的研究。
有没有可能实现这样的工作流:比如有四个智能体,让智能体 2 和 3 使用智能体 1 的上下文,然后智能体 4 在某个节点使用智能体 2 的上下文?
Cal 回答: 这是个非常有意思的想法。就像我前面说的,我们目前的核心理念还是“做最简单有效的事”,也就是把单个智能体的能力打磨到极致。
不过,对于你说的场景,目前最好的实现方式可能是通过文件系统来做状态共享。比如,你可以让智能体 1 把它的思考过程和结果写到一个共享的 Markdown 文件里,然后让智能体 2 和 3 去读取这个文件作为它们的初始上下文。
我自己在用多个 Claude 实例协作时,也经常这么做。我会让一个 Claude 实例把任务分解,写成一个 ticket.md
,然后打开另一个实例,让它去读取这个“工单”来执行任务。
所以,核心思路就是利用模型强大的读写文件能力来模拟智能体之间的通信。也许未来我们会提供更原生的方式,但目前这是最实用的方法。
好了,时间差不多了。我背包里还有一些稀有的 Claude Code 贴纸,有兴趣的朋友可以过来找我聊聊,我会很乐意送给大家。谢谢!