Claude Code 最佳实践
充分利用 Claude Code 的技巧和模式,从配置环境到跨并行会话扩展。
Claude Code 是代理式编码环境。与只回答问题并等待的聊天机器人不同,Claude Code 可以读取文件、运行命令、进行更改,并在您观看、引导或离开时自主完成工作。
大多数最佳实践基于一个约束:Claude 的上下文窗口很快填满,填满后性能会下降。 将持久规则放在 CLAUDE.md 中。无关任务之间使用 /clear。运行 /context 查看占用。
让 Claude 能够验证其工作
包含测试、屏幕截图或预期输出,以便 Claude 自检。这是杠杆最高的一步。
| 策略 | 之前 | 之后 |
|---|---|---|
| 提供验证标准 | 「实现验证电子邮件地址的函数」 | 「编写 validateEmail。测试:user@example.com → true,invalid → false,user@.com → false。实现后运行测试」 |
| 视觉验证 UI | 「让仪表板更好看」 | 「[粘贴截图] 实现此设计。截图结果并与原图比较,列出差异并修复」 |
| 解决根本原因 | 「构建失败」 | 「构建失败并报此错误:[粘贴错误]。修复并验证构建成功,不要压制错误」 |
让 Claude 展示证据:测试输出、运行的命令或截图 — 不要只断言成功。
先探索,再计划,再编码
将研究与规划与实现分开。
- 探索 — 计划模式。
阅读 /src/auth 并理解我们如何处理会话和登录。 - 计划 —
我想添加 Google OAuth。需要改哪些文件?制定计划。按Ctrl+G编辑计划。 - 实现 — 退出计划模式。
按你的计划实现 OAuth。写测试、跑套件、修失败。 - 提交 —
写好 commit 信息并开 PR
不确定方案、多文件改动或不熟悉代码时,计划最有用。若 diff 一句话能说清,直接让 Claude 做。
在提示中提供具体上下文
| 策略 | 之前 | 之后 |
|---|---|---|
| 限定范围 | 「给 foo.py 加测试」 | 「为 foo.py 写测试,覆盖用户已登出的边界情况,不要用 mock」 |
| 指向来源 | 「ExecutionFactory 的 API 为何这么怪?」 | 「查 ExecutionFactory 的 git 历史并总结 API 如何演变成这样」 |
| 引用模式 | 「加日历组件」 | 「参照首页 HotDogWidget.php 的模式,实现带月份选择与年份翻页的日历组件」 |
| 描述症状 | 「修登录 bug」 | 「用户反馈会话超时后无法登录。查 src/auth/,尤其 token 刷新。先写失败测试再修」 |
用 @ 引用文件。粘贴图片。管道:cat error.log | claude。
配置环境
编写有效的 CLAUDE.md
运行 /init 再细化。示例:
# 代码风格
- 使用 ES modules(import/export),不用 CommonJS(require)
- 尽可能解构导入(如 import { foo } from 'bar')
# 工作流
- 一系列代码改动完成后要做类型检查
- 优先跑单个测试,不要整套件,以提升性能| ✅ 应包含 | ❌ 应排除 |
|---|---|
| Claude 猜不到的 Bash 命令 | 读代码能推断的内容 |
| 与默认不同的代码风格 | 标准语言惯例 |
| 测试说明与首选 runner | 冗长 API 文档(链到文档) |
| 仓库礼仪 | 频繁变化的信息 |
| 架构决策 | 逐文件描述代码库 |
| 开发环境怪癖 | 「写干净代码」 |
导入:参阅 @README.md 与 @package.json 中的 npm 命令。
位置:~/.claude/CLAUDE.md(所有项目)、./CLAUDE.md(团队)、./CLAUDE.local.md(个人)、monorepo 父目录。
配置权限
使用 auto 模式、/permissions 白名单或 /sandbox。见 权限模式 与 权限配置。
使用 CLI 工具
让 Claude 使用 gh、aws、gcloud、sentry-cli 等。可用 用 'foo-cli-tool --help' 学习 foo 工具。
连接 MCP 服务器
claude mcp add 连接 Notion、Figma、数据库、工单系统。
设置 hooks
hooks 在生命周期点确定性运行 — 不同于建议性的 CLAUDE.md。用 /hooks 浏览;可让 Claude 编写「改文件后 lint」等 hook。
创建 skills
.claude/skills/SKILL.md,frontmatter 含 name 与 description。有副作用且需手动触发的工作流设 disable-model-invocation: true(/skill-name)。
创建自定义子代理
.claude/agents/ 限制工具与专注系统提示。「用子代理审查这段代码的安全问题。」
有效沟通
像问资深工程师一样问代码库:「日志怎么工作?」「这行做什么?」「为何这里调用 foo() 而不是 bar()?」
大功能可先让 Claude 访谈你:
我想做 [简要描述]。用 AskUserQuestion 工具详细访谈我。
问技术实现、UI/UX、边界情况、顾虑与权衡。
访谈充分后把完整规格写到 SPEC.md。再用新会话执行规格。
管理会话
Esc— 中途停止;保留上下文Esc + Esc或/rewind— 恢复对话和/或代码/clear— 无关任务间重置- 同一问题纠正两次仍失败 →
/clear并用更好的开场提示 /compact或/compact Focus on the API changes控制摘要/btw— 快速提问且不增长上下文- 子代理 —
用子代理调查 X - 检查点 — 可试错;不行就回退(不能替代 git)
/rename与claude --resume处理跨天工作
自动化与扩展
claude -p "Explain what this project does"
claude -p "List all API endpoints" --output-format json
claude -p "Analyze this log file" --output-format stream-json --verbose在 git worktree 中并行会话。写/审分离:一会话实现,另一会话用干净上下文审查 diff。
迁移扇出:
for file in $(cat files.txt); do
claude -p "Migrate $file from React to Vue. Return OK or FAIL." \
--allowedTools "Edit,Bash(git commit *)"
doneclaude --permission-mode auto -p "fix all lint errors"完成前用子代理或 /code-review 对照计划审查 diff。
避免常见失败模式
- 大杂烩会话 — 无关任务塞一会话 → 任务间
/clear - 反复纠正 — 两次失败后
/clear+ 更好开场提示 - CLAUDE.md 过长 — 删减;必须用 hook 保证的步骤写 hook
- 无证据就认为完成 — 要求测试输出或命令结果