学习中心/Claude Code/Claude Code 最佳实践与高效技巧
中级

Claude Code 最佳实践与高效技巧

来自 Anthropic 官方的最佳实践,学会写高效提示、管理上下文、避免常见陷阱

Anthropic30 min

学习笔记

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"
}

增量验证

不要一次提出一整个功能,拆成小步骤:

  1. 先实现数据模型 → 确认
  2. 再写 UI 组件 → 确认
  3. 最后连接交互逻辑 → 确认

每一步让 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

小结

  1. 上下文是最宝贵的资源——主动管理,及时清理
  2. 请求要具体——包含文件名、错误信息、成功标准
  3. 给验证目标——测试用例、预期输出、运行命令
  4. 先探索再编码——Explore → Plan → Implement → Commit
  5. 两次失败后重启——不要在错误方向上反复尝试
  6. 用子代理保护主上下文——独立调查、代码审查

延伸阅读

内容来源:Anthropic 官方工程博客