Claude Code 最佳实践与高效技巧
本课程整理自 Anthropic 工程团队发布的官方最佳实践。这些技巧来自大量内部和外部使用经验,帮助你最大化 Claude Code 的效率,避免常见的低效模式。
你将学到
- 编写高效请求(prompt)的技巧
- 上下文窗口管理的核心原则
- 给 Claude 验证目标的重要性
- 如何利用子代理提升效率
- 常见失败模式及其避免方法
适合谁
- 已有 Claude Code 基础使用经验的开发者
- 觉得 Claude Code "不够好用"、想提升效率的工程师
1. 上下文窗口是最重要的资源
上下文窗口容纳整个对话:每条消息、每个读取的文件、每个命令输出。上下文填满后 Claude 性能下降——可能开始"忘记"早期指令或犯更多错误。
管理原则
- 用
/context持续关注上下文使用量 - ~60% 时主动
/compact(压缩历史,保留摘要) - 不相关的任务之间用
/clear彻底清理 - CLAUDE.md 每次加载都占空间——只放真正需要的内容
避免上下文浪费
- 不要让 Claude 读取不相关的文件
- 长输出的命令(如完整日志)先用管道过滤
- 用子代理(subagent)做独立调查,保护主对话上下文
2. 编写高效的请求
具体化
不好的请求:
fix the bug
好的请求:
Fix the TypeError in src/components/UserList.tsx:23.
The error is: Cannot read properties of undefined (reading 'map').
It happens when the API returns an empty response.
包含关键信息
- 文件名和行号:
src/utils/parser.ts:45 - 错误信息:完整的 stack trace
- 预期行为:描述应该发生什么
- 已知约束:如"不要修改公共 API"
定义成功标准
Implement validateEmail function.
Test cases:
- 'user@example.com' -> true
- 'invalid' -> false
- 'user@.com' -> false
Run the tests after implementation.
告诉 Claude 什么算"完成"——写测试?更新文档?创建 PR?
3. 给 Claude 验证目标
Claude 在有明确验证标准时表现显著更好。
提供测试用例
Implement the sortByDate function.
It should:
- Sort ascending by default
- Support a 'desc' parameter for descending
- Handle null dates (put at end)
Write tests covering these cases and run them.
粘贴预期输出
The API should return:
{
"status": "success",
"data": { "userId": 123, "name": "Alice" }
}
Currently it returns:
{
"error": "unauthorized"
}
增量验证
不要一次提出一整个功能,拆成小步骤:
- 先实现数据模型 → 确认
- 再写 UI 组件 → 确认
- 最后连接交互逻辑 → 确认
每一步让 Claude 执行并验证正确后再进入下一步。
4. 探索优先,然后计划,然后编码
Anthropic 官方推荐的工作流:Explore → Plan → Implement → Commit
为什么不要直接让 Claude 写代码
直接说"实现 X 功能"看起来高效,但经常导致:
- Claude 对现有代码理解不充分,写出不一致的代码
- 实现方向错误,需要大量返工
- 上下文被试错过程填满
正确做法
# Step 1: Explore
分析 src/middleware/ 下的中间件架构,告诉我它们是如何组织的
# Step 2: Plan (Shift+Tab 进入 Plan Mode)
基于现有中间件架构,给我一个添加 rate limiting 的实施方案
# Step 3: Implement (确认方案后切回 Normal Mode)
按照方案实施
# Step 4: Commit
commit with a descriptive message
5. 利用子代理做独立调查
子代理在独立的上下文中工作,不会污染你的主对话:
Use subagents to investigate how our authentication system handles token
refresh, and whether we have any existing OAuth utilities I should reuse.
use a subagent to review this code for edge cases
子代理完成后返回摘要。适合:
- 并行调查代码库的不同部分
- 代码审查
- 搜索相关实现供参考
6. 常见失败模式及解决
"大杂烩"会话
问题:在一个会话里做了太多不相关的事(修 Bug → 重构 → 写文档),上下文混乱。
解决:用 /clear 分隔不同任务。每个任务一个干净的上下文。
反复在一个方向上挣扎
问题:Claude 第一次修复失败后,让它"再试一次",结果越试越糟。
解决:如果 Claude 两次未能修正同一个错误,停下来。用 /clear 清理,用更好的初始描述重新开始。
CLAUDE.md 过长
问题:把所有规则都塞进 CLAUDE.md,Claude 反而忽略重要指令。
解决:只保留广泛适用的规则。偶尔使用的工作流放到 Skills 中。
忘记验证
问题:让 Claude 实现功能后直接提交,没有运行测试。
解决:总是在请求中包含验证步骤:"implement X, write tests, and run them"。
无限探索
问题:Claude 不停地读文件、分析代码,迟迟不动手。
解决:缩小调查范围("只看 src/auth/ 目录"),或用子代理做调查。
7. 高效使用快捷操作
| 场景 | 操作 |
|---|---|
| Claude 走偏了 | Escape 立即停止 |
| 想回退到之前的状态 | 双击 Escape 或 /rewind |
| 切换到只分析模式 | Shift+Tab 进入 Plan Mode |
| 恢复上一次会话 | claude --continue |
| 从 PR 恢复 | claude --from-pr 123 |
小结
- 上下文是最宝贵的资源——主动管理,及时清理
- 请求要具体——包含文件名、错误信息、成功标准
- 给验证目标——测试用例、预期输出、运行命令
- 先探索再编码——Explore → Plan → Implement → Commit
- 两次失败后重启——不要在错误方向上反复尝试
- 用子代理保护主上下文——独立调查、代码审查
延伸阅读
内容来源:Anthropic 官方工程博客