
白话文读懂Claude Code最佳实践指南,学不会退网
今天来说说claude code。
这是一篇关于Claude Code 最佳实践的分享文章。
原文有点晦涩难懂,我对此进行了修改优化,增加一些截图,配合各位读者朋友进行阅读。
为了更加通俗易懂并且容易入门,我结合了4月份Claude Code 官方出品的一篇文章进行解读,如有谬误,恳请勘误。
本篇文章主要介绍:
- 介绍Claude Code的概念。
- 探讨Claude Code内部工作原理。
- 探讨Claude Code的理想应用场景。
- 分享Claude Code最佳实践指南。
首先介绍一下原作者。
原分享人(作者)Cal,大约一年半前加入 Anthropic,参与创建了“应用 AI”团队。然后他的的日常工作就是大量地与 Claude 交互,通过提示工程(Prompt Engineering)来挖掘模型的最佳性能。
Cal也是一个疯狂痴迷AI编程的奇人,因为疯狂刷Claude Code的token,使用量飙升到了内部排行榜榜首,依托他对提示工程的理解,成功加入了这个团队,成为核心贡献者之一。
同样的道理:AI时代,抓住机会正确地卷,一切皆有可能。
目前他本人主要负责提示工程、系统提示、工具集成以及效果评估等工作,确保对工具的每一次迭代都能带来真正的提升。
Claude Code 是什么?
Claude Code不知道什么时候火起来的,姑且不论。
很多开发者朋友都在问,它到底是什么?
就像MCP刚出来那会,有人就问,MCP到底是什么?
来自Cal的一个很形象的比喻:
Claude Code 就像你们公司团队里那个总是在默默无闻(Terminal)里完成所有工作(coding)的全栈技术大牛。
Claude Code大牛从不使用图形用户界面(GUI),能力超群。
很多人会问,Claude Code 为什么这么难用(我也觉得)?
根据他们官网的描述,Claude Code 刻意追求低级和开放性,提供接近原始模型的访问,而无需强制执行特定的工作流程。这种设计理念打造了一个灵活、可定制、可脚本化且安全的强大工具。
对于刚接触编码工具的工程师来说,学习难度较高。
但是,如果在你的电脑上拥有了 Claude Code,就如同拥有了一个什么都可以帮你做的全栈大牛(除了不能帮你生娃)。
忍受一下学习的苦,也未尝不可。
深入理解:Claude Code 的工作原理
Cal谈到,在 Anthropic内部,员工比较信奉“可以奏效的简单方案”(The Simple Thing That Works),也就是说,有一些非必要的流程消耗可以砍掉了。
Claude Code 就是非常纯粹的 AI 智能体(AI Agent),因为它只懂得帮你干活,很纯粹,很简单,没有任何心眼子。
核心: AI 智能体
Claude Code为什么这么简单高效呢?
Claude Code作为一个成功的AI智能体,制胜的秘诀在于:
- 有明确的指令 (Instructions)
- 装备了强大的工具集 (Powerful Tools):比如说编辑/创建文件、使用CLI或MCP工具、提交commit等。
- 有循环执行机制 (Loop)
模型会根据指令,在一个循环中持续调用工具,直到它自主判断任务已经完成。
Claude Code 的工具集正是那些终端高手所钟爱的:创建和编辑文件的工具、执行终端命令的工具等。
独特的代码理解方式
与传统编程AI工具不同,Claude Code 在理解代码库时,不进行任何形式的索引或 RAG(检索增强生成)。
它的工作方式更像一个新人加入团队后熟悉项目的过程——通过探索来理解,称之“智能体式搜索”。它会使用glob、grep、find 等命令在代码库中穿梭,阅读文件,理解项目结构和逻辑。
这意味着模型可以先进行一次搜索,然后根据搜索结果判断:“嗯,我可能还需要了解另外几件事。” 于是它会进行更多的搜索,逐步构建起对整个代码库的认知。
完善的辅助系统
在这个核心智能体之上,他们还构建了一些关键部分:
轻量级用户界面:让你能实时观察 Claude Code 的工作过程。
权限系统:在 AI 智能体执行读取等安全操作时自动放行,但在执行写入文件、运行命令等可能具有风险的操作时,会请求人类用户授权,确保安全可控。
安全性与灵活性:由于 Claude Code 只是模型之上的一个轻量级封装,你可以轻松地将其指向通过 AWS、GCP 等云服务商提供的 Claude 模型,以满足不同的安全与合规需求。
Claude Code 使用入门
这部分主要认识一下CLAUDE.md文件,其他更加复杂的用法,,有机会看看。
为什么CLAUDE.md这么重要?
CLAUDE.md 是一个特殊文件,Claude 在发起对话时会自动将其拉入上下文中。
也就是说,它可以存储如下信息:
- 常用 bash 命令
- 核心文件和实用函数
- 代码风格指南、存储库规则
- 开发者环境设置、测试说明
- 项目特有的任何意外行为或警告
- 其他信息
CLAUDE.md 的格式实例如下:
# Bash commands
- npm run build: Build the project
- npm run typecheck: Run the typechecker
# Code style
- Use ES modules (import/export) syntax, not CommonJS (require)
- Destructure imports when possible (eg. import { foo } from 'bar')
# Workflow
- Be sure to typecheck when you’re done making a series of code changes
- Prefer running single tests, and not the whole test suite, for performance
刚启动Claude Code,运行 /init 命令,会自动为你生成一个 CLAUDE.md。
新手用户,可能会误输入指令,导致本地文件被删以及更多系统bug,不过不用担心。
Claude Code默认会请求任何可能修改系统的操作的权限,比如说文件写入、bash 命令、MCP工具等等。
有四种方法可以管理允许的工具:
- 在会话期间出现提示时, 选择“始终允许” 。
- 使用/permissions指令启动Claude Code后,可以添加或移除允许列表中的工具。
你可以在里面添加允许的操作,比如添加 Edit 以始终允许文件编辑。
你也可以在Deny里面添加被拒绝执行的命令。
并且你还可以添加多个空间。
Claude Code中配置MCP工具
Claude Code默认通过CLI向导(claude mcp add)来配置MCP工具.
claude mcp add <server-name> -s user -- <command> [args...]
部分SSE服务的,添加方法如下:
# 基础
claude mcp add --transport sse <名称> <URL>
# 添加SSE服务器
claude mcp add --transport sse sse-server https://example.com/sse-endpoint
# 添加带自定义请求头的SSE服务器
claude mcp add --transport sse api-server https://api.example.com/mcp -e X-API-Key=your-key
使用命令行可进行MCP的管理。
# List all configured servers
claude mcp list
# Get details for a specific server
claude mcp get my-server
# Remove a server
claude mcp remove my-server
Claude Code 的应用场景
Claude Code 的应用范围非常广泛,几乎涵盖了软件开发的全周期。
项目探索与上手 (Exploration)
当你加入一个新团队或接触一个开源项目时,往往需要花费大量时间熟悉代码,Claude Code 可以极大缩短这个过程。
你可以直接问它:
这个产品功能是在哪里实现的?
或者
通过 Git 历史,告诉我这段代码在过去几周发生了哪些变化?
成为你的伙伴 (Thought Partner)
在动手编码前,你可以让 Claude Code 扮演大军师的角色。
你可以说:
我准备改造AI-Media2Doc功能,请你先研究一下代码库,为我提供两到三种不同的实现方案,并分析优劣。暂时不要写任何代码。
Claude 会利用其智能体式搜索能力,为你提供决策参考。
高效构建与编码 (Building & Coding)
从零到一:
你可以把它放进一个空目录,让它为你创建一个全新的应用或游戏。
在现有代码库中工作:
它能极大地提升日常开发效率,例如,为现有代码快速添加单元测试。在 Claude Code 团队内部,我们的单元测试覆盖率非常高,这很大程度上归功于此。此外,我们还可以让它自动生成高质量的 Git 提交信息和 PR 描述。
部署与运维 (Deployment & Lifecycle)
通过 Claude Code SDK,你可以“无头模式”(Headless Mode)以编程方式使用它,将其集成到 CI/CD 流程或 GitHub Actions 中,实现自动化工作流。
支持与规模化 (Support & Scaling)
帮助你更快地定位和修复 Bug。
许多团队因为技术债而推迟了大型重构项目(如旧版 Java 升级、PHP 迁移到 React)。Claude Code 这样的工具,使得这类原本望而生畏的项目变得更具可行性。
它精通各类命令行工具,如 Git、Docker、BigQuery 等。当你遇到棘手的 git rebase 冲突时,不必再头痛,直接启动 Claude Code,告诉它情况,让它帮你解决。
最佳实践与高级技巧
基础最佳实践
首先善用 claude.md 文件
这是在不同会话或团队成员间共享状态和指令的核心方式,相当于 Claude 的“长期记忆”。当 Claude 启动时,它会自动读取当前工作目录下的 claude.md 文件,并将其内容作为核心指令。
你可以在里面存放项目特定的信息,如“如何运行单元测试”、“项目目录结构概览”、“团队代码风格指南”等。
你也可以在你的用户主目录(Home Directory)下放置一个全局的 claude.md 来存放通用指令。
智能管理权限
默认情况下,写文件或执行命令需要手动确认。你可以使用“自动接受模式”(快捷键 Shift + Tab)让 Claude 直接执行。
你可以在设置中将某些常用且安全的命令(如 npm run test)配置为始终自动批准,从而减少不必要的中断。
优化集成设置
如果你使用的工具有命令行版本(如 GitHub 的 gh),请务必安装它。这能让 Claude 更方便地与外部服务交互。
如果你的公司有内部命令行工具,记得在 claude.md 文件里告诉 Claude 它的存在和用法。
有效管理上下文
模型拥有 20 万 token 的超大上下文窗口,但在长时间的会话中仍有可能被填满。
当右下角出现上下文即将用尽的警告时,你有两个选择:
/clear:清空当前会话,重新开始。
/compact:它会启动一个内部提示,让模型将当前会话的所有工作总结成一份摘要,然后用这份摘要作为新会话的“种子”,让你无缝地继续工作。
构建高效工作流
先计划,后执行:
不要直接命令“修复这个bug”,而是说:
我遇到了这个bug,请先调查原因,然后给我一个修复计划。
这样你可以在它动手前验证其思路是否正确。
利用待办事项 (To-Do List):在处理复杂任务时,Claude 会生成一个待办事项列表。你可以观察这个列表,如果发现方向不对,可以随时按 Escape 键打断它,并调整计划。
拥抱测试驱动开发 (TDD):让 Claude 进行小范围修改、运行测试、检查代码规范、然后提交。这种小步快跑的方式能确保项目不会偏离轨道。
利用多模态能力:你可以随时粘贴截图,或者让 Claude 读取图片文件(如 mock.png),并根据视觉设计来构建界面。
高级技巧
当你熟练后,可以尝试在 Tmux 或多个终端标签页中同时运行多个 Claude 智能体,让它们并行处理不同任务。
这是一个有趣的挑战,比如我就可以开3个终端同时并行运行。
Escape 键
单击 Escape,随时用它来打断 Claude 的当前操作,并给出新的指示。知道何时打断,是最大化效率的关键。
双击 Escape,双击可以让你撤销到上一次对话,相当于一次“重置”。
无头模式与自动化,探索如何通过编程方式(SDK)在各种场景(如 GitHub Actions)中使用 Claude,将 AI 智能体的能力“撒”向开发工作流的每一个角落。
新功能速览与问答
Claude发布新功能的速度非常快。
你现在可以在 Claude 中输入 /model 来查看并切换当前使用的模型(如从 Sonnet 切换到 Opus)。
工具调用间的思考过程,从 Claude 3(Opus)开始,模型可以在两次工具调用之间进行“思考”。你会看到用浅灰色文本显示的思考过程,这对于理解其决策路径和调试非常有帮助。
Claude Code与 VS Code 和 JetBrains 的集成为你带来更流畅的体验。
其实现在就可以在VS Code里面直接使用了,用起来崽爽。
现场问答 (Q&A)
问:一个项目里可以有多个 claude.md 文件吗?
答: 在同一个目录下不行。
Claude 启动时只读取当前工作目录下的 claude.md。为避免在单一代码库(Monorepo)中上下文爆炸,它不会默认读取子目录的 claude.md。
但你可以在主 claude.md 中用 @ 符号引用其他文件,或者在启动 Claude 时,鼓励它去搜索并阅读相关子目录中的 claude.md。
问:我让 Claude 遵守 claude.md 里的指令(比如不留注释),但它不听怎么办?
答: 这是一个典型的模型行为问题,尤其在旧模型上更常见。好消息是,新一代模型(如 Opus)在遵循指令方面的能力已大幅提升。
问:可以实现多智能体并行执行,并让它们共享上下文吗?
答: 目前我们的理念是专注于打造一个极度强大的单一智能体。对于多智能体协作,今天的最佳实践是通过文件进行状态同步。你可以让一个智能体将其中间结果或状态写入一个共享文件(如 ticket.md),然后让另一个智能体去读取这个文件,从而实现间接的协作。未来我们可能会探索更原生的多智能体协作功能。
参考:Claude Code:代理编码的最佳实践
本文转载自AIGC新知,作者:绛烨
