Claude Code 是一个自主编程环境——与聊天机器人不同,它能读取文件、运行命令、修改代码,并在你旁观、重定向或完全离开时自主解决问题。这改变了你的工作方式。本文整理了 Anthropic 内部团队和各类代码库工程师总结的高效实践。
核心约束:上下文窗口
几乎所有最佳实践都基于一个约束:Claude 的上下文窗口填满得很快,填满后性能会下降。
上下文窗口保存你的整个对话,包括每条消息、每个 Claude 读取的文件、每条命令输出。一次调试会话或代码库探索可能产生数万 Token。上下文接近上限时,Claude 可能开始「遗忘」早期指令或犯更多错误。
实践建议: 使用自定义状态栏持续追踪上下文使用量。
给 Claude 提供验证途径
当 Claude 能够验证自己的工作(运行测试、对比截图、验证输出)时,性能会大幅提升。
| 策略 | 低效做法 | 高效做法 |
|---|---|---|
| 提供验证标准 | 「实现一个验证邮件地址的函数」 | 「写一个 validateEmail 函数。测试用例:user@example.com 为 true,invalid 为 false。实现后运行测试」 |
| UI 变更可视化验证 | 「让 Dashboard 好看一点」 | 「[粘贴截图] 实现这个设计。截图结果并与原图对比,列出差异并修复」 |
| 解决根本原因 | 「构建失败了」 | 「构建失败,错误信息:[粘贴错误]。修复它并验证构建成功。解决根本原因,不要屏蔽错误」 |
先探索,再计划,再编码
让 Claude 直接跳到编码,可能会产生解决了错误问题的代码。推荐的四阶段工作流:
- 探索:Claude 读取相关文件,理解当前状态
- 计划:在不修改任何代码的情况下(使用 Plan Mode)制定方案
- 确认:你审查并确认计划
- 编码:Claude 执行实现
使用 Plan Mode 分离探索与执行。
编写高效的 CLAUDE.md
CLAUDE.md 是 Claude 每次会话开始时都会读取的特殊文件。
包含的内容
| 应该包含 | 不应该包含 |
|---|---|
| Claude 无法猜到的 Bash 命令 | Claude 读代码就能知道的内容 |
| 与默认值不同的代码风格规则 | Claude 已知的标准语言约定 |
| 测试说明和首选测试运行器 | 详细的 API 文档(链接即可) |
| 仓库约定(分支命名、PR 规范) | 频繁变化的信息 |
| 项目特定的架构决策 | 长篇解释或教程 |
关键原则:CLAUDE.md 越长,Claude 忽略其中规则的可能性越大。对每一行问自己:「如果删掉这行,Claude 会犯错吗?」如果不会,删掉它。
支持文件导入
# CLAUDE.md 示例
参见 @README.md 了解项目概览,@package.json 了解可用的 npm 命令。
## 额外指令
- Git 工作流:@docs/git-instructions.md
- 个人配置:@~/.claude/my-project-instructions.mdCLAUDE.md 放置位置
~/.claude/CLAUDE.md:适用于所有 Claude 会话./CLAUDE.md:提交到 Git,与团队共享- 父目录中:适用于 monorepo
- 子目录中:Claude 在处理该目录文件时按需加载
权限管理
两种方式减少权限弹窗干扰:
- 权限白名单:允许特定已知安全的工具(如
npm run lint或git commit) - 沙箱:启用操作系统级别的隔离,限制文件系统和网络访问
包含的工作流(如修复 lint 错误、生成样板代码),可以使用 --dangerously-skip-permissions 跳过所有权限检查。
上下文管理技巧
积极使用 /clear
在不相关任务之间使用 /clear 重置上下文窗口。长会话中充斥无关内容会降低性能。
常见失败模式——厨房水槽会话:从一个任务开始,然后问了无关的问题,然后回到第一个任务。上下文中充满了无关信息。解决方案:在不相关任务之间使用 /clear。
使用 Subagent 保护主上下文
Subagent 在独立的上下文窗口中运行,并将摘要汇报回来,非常适合:
使用 subagent 调查我们的认证系统如何处理 Token 刷新,
以及我们是否有可以复用的 OAuth 工具。
Subagent 探索代码库、读取相关文件,汇报发现——而不会污染你的主对话。
使用检查点回滚
Claude 会在修改前自动创建检查点。双击 Escape 或运行 /rewind 打开回滚菜单,可以:
- 仅恢复对话
- 仅恢复代码
- 两者都恢复
- 从选定消息摘要
自动化与并行化
非交互模式
# 一次性查询
claude -p "解释这个项目做什么"
# 结构化输出供脚本使用
claude -p "列出所有 API 端点" --output-format json
# 实时处理的流式输出
claude -p "分析这个日志文件" --output-format stream-jsonWriter/Reviewer 并行模式
| 会话 A(编写者) | 会话 B(审查者) |
|---|---|
| 「为我们的 API 端点实现限流器」 | |
| 「审查 @src/middleware/rateLimiter.ts 中的限流器实现,查找边界情况、竞态条件以及与现有中间件模式的一致性」 | |
| 「这是审查意见:[会话 B 输出],请解决这些问题」 |
避免常见失败模式
-
重复纠正:Claude 做错了,你纠正,还是错,再次纠正。上下文被失败的尝试污染。解决方案:纠正超过两次后,
/clear并用更具体的提示重新开始。 -
过度规格化的 CLAUDE.md:太长了,Claude 忽略了一半,因为重要规则淹没在噪音中。解决方案:无情地修剪。
-
信任-验证缺口:Claude 产出看似合理的实现,但不处理边界情况。解决方案:始终提供验证(测试、脚本、截图)。
-
无限探索:你让 Claude「调查」某事而没有范围限制。Claude 读取数百个文件,填满上下文。解决方案:缩小调查范围或使用 subagent。
原文:Best Practices for Claude Code | 来源:Claude Code 官方文档