难度标注
本文档使用以下标注帮助你根据自身水平选择性阅读:
| 标注 | 含义 | 建议 |
|---|---|---|
| 🟢 基础 | 每个用户都需要掌握 | 必读 |
| 🟡 进阶 | 提升效率的关键技巧 | 熟练后阅读 |
| 🔴 高级 | 团队级和自动化场景 | 按需深入 |
1 导读:理解 Claude Code
核心交互模型
它会经历三个阶段:收集上下文、采取行动和验证结果
你的角色:
| 你做什么 | Claude 做什么 |
|---|---|
| 通过 @ 引用文件,帮 Claude 看见正确的上下文 | 阅读文件、搜索代码、理解架构 |
| 用自然语言描述需求,帮 Claude 思考正确的方向 | 分析问题、规划方案、评估风险 |
| 配置权限,让 Claude 能够行动 | 编辑文件、运行测试、执行命令 |
| @ 和 ! 速览 |
| 符号 | 作用 | 示例 |
|---|---|---|
| @ | 感知:将文件/资源注入上下文 | 解释 @src/auth.ts 的逻辑 |
| ! | 行动:在提示框中直接执行 Shell | ! git log –oneline -5(结果注入上下文) |
1 | # @ 的常见用法 |
2 快速上手
项目目录结构全景 🟢
一个完整的 Claude Code 项目配置结构:
1 | your-project/ |
新手提示:刚开始只需要
CLAUDE.md和.claude/settings.json。其他配置随着需求逐步添加。
settings.json 分层配置 🟡
Claude Code 使用分层配置系统,优先级从高到低:
| 优先级 | 层级 | 位置 | 作用范围 | 是否共享 |
|---|---|---|---|---|
| 最高 🔴 | 托管策略 | 系统级路径(IT 部署) | 组织内所有用户 | 是 |
| ↓ | 命令行参数 | CLI flags | 当前会话 | 否 |
| ↓ | 本地项目设置 | .claude/settings.local.json | 你在此项目 | 否 |
| ↓ | 共享项目设置 | .claude/settings.json | 所有协作者 | 是(提交 Git) |
| 最低 🟢 | 用户设置 | ~/.claude/settings.json | 你的所有项目 | 否 |
规则:高优先级覆盖低优先级。托管策略不可覆盖。
基础配置示例:
1 | { |
提示:添加
$schema字段可以在 VS Code / Cursor 中获得自动补全。
必备 CLI 工具 🟢
Claude Code 可以调用任何已安装的 CLI 工具。以下工具强烈建议提前安装:
1 | # GitHub CLI(Claude Code 用它操作 PR、Issue) |
关键:CLI 工具是与外部服务交互最节省上下文的方式。例如
gh、aws、gcloud、sentry-cli等。
快速验证配置 🟢
1 | cd your-project |
3 给 Claude 验证自己工作的能力
四种验证策略 🟢
| 策略 | 模糊做法 ❌ | 高效做法 ✅ |
|---|---|---|
| 提供测试用例 | “实现一个验证邮箱的函数” | “写一个 validateEmail 函数。测试: user@example.com → true, invalid → false, user@.com → false。实现后运行测试。” |
| UI 变更截图对比 | “让 dashboard 更好看” | “[粘贴截图] 按这个设计实现。完成后截图对比原图,列出差异并修复。” |
| 根因修复 | “构建失败了” | “构建失败,错误信息: [粘贴]。修复它并验证构建成功。解决根本原因,不要抑制错误。” |
| 指定验证命令 | “修改认证流程” | “修改认证流程后,运行 npm test – –testPathPattern auth 验证所有认证测试通过。” |
4 先探索,再计划,再编码
为什么需要分阶段 🟢
让 Claude 直接跳到编码可能产出解决错误问题的代码。使用 Plan Mode 将探索与执行分离。
推荐的工作流有四个阶段:
| 阶段 | 模式 | 做什么 | 关键操作 |
|---|---|---|---|
| 1️⃣ 探索 | Plan Mode(只读) | 理解代码库、定位相关文件 | Shift+Tab 进入 Plan Mode |
| 2️⃣ 计划 | Plan Mode(只读) | 制定实施方案、确认范围 | Ctrl+G 在编辑器中编辑计划 |
| 3️⃣ 编码 | Normal Mode | 按计划实现、运行测试 | Shift+Tab 切回 Normal Mode |
| 4️⃣ 提交 | Normal Mode | 提交代码、创建 PR | /commit-push-pr |
Boris Pro Tip B3:Boris 把 Plan Mode 视为基础操作而非可选步骤。他的日常流程是:先让 Claude 在 Plan Mode 下理解代码、生成计划,然后用第二个 Claude 会话审计这个计划的合理性,确认后才开始编码。
第一阶段:探索(Explore)🟢
按 Shift+Tab 切换到 Plan Mode,让 Claude 只读地探索代码库:
1 | # 进入 Plan Mode 后 |
Plan Mode 的特点:
- Claude 只执行读取操作,不会修改任何文件
- 适合安全地探索不熟悉的代码
- 按
Shift+Tab循环切换:Normal Mode → Auto-Accept Mode → Plan Mode
也可以从命令行启动:
1 | claude --permission-mode plan |
第二阶段:计划(Plan)🟢
让 Claude 在 Plan Mode 下创建详细的实施计划:
1 | > 我想添加 Google OAuth 登录。需要修改哪些文件? |
关键操作:
- 按
Ctrl+G在文本编辑器中打开计划,可以直接编辑 - 计划确认后再切换到 Normal Mode 执行
- 你可以修改计划中的任何部分,删除不需要的步骤,或添加额外约束
用第二个 Claude 审计计划 🟡
对于复杂任务,Boris 推荐的做法是:
1 | # 会话 A(Plan Mode) |
第三阶段:编码(Implement)🟢
切换回 Normal Mode,让 Claude 按计划编码:
1 | > 按你的计划实现 OAuth 流程。 |
增量开发技巧:
- 写一个文件 → 测试 → 继续,尽早发现问题
- 如果 Claude 偏离方向,按
Esc立即停止 - 按两次
Esc或/rewind回到之前的检查点
第四阶段:提交(Commit)🟢
1 | > 用描述性的消息提交更改并创建 PR |
或直接使用自定义 Skill:
1 | > /commit-push-pr |
实战:用规范驱动开发(SDD)做业务需求 🟡
规范驱动开发(Spec-Driven Development, SDD) 提供了一种更结构化的做法:先把需求写成 Markdown 规范文件,再用 Claude Code 逐步实现。
核心理念
| 传统做法 | SDD 做法 |
|---|---|
| 口述需求 → Claude 直接写代码 | 先写 spec.md → Claude 按规范编码 |
| 需求散落在聊天记录中 | 规范集中在文件中,可版本管理 |
| 发现问题时改代码 | 发现问题时先改规范,再重新生成 |
| Claude 的理解随上下文衰减 | 每次通过 @spec.md 注入完整需求 |
核心价值:把”发现需求理解偏差”的成本从”改代码”左移到”改 Markdown”——代价低一个数量级。
三层产物
1 | specs/001-feature-name/ |
| 产物 | 定位 | 核心内容 | 谁来写 |
|---|---|---|---|
| spec.md | 需求规范(WHAT/WHY) | 用户故事、验收标准、边界情况、MVP 范围 | 你主导,Claude 辅助提问 |
| plan.md | 技术方案(HOW) | 技术选型、目录结构、数据模型、接口设计、风险评估 | Claude 主导,你审核决策 |
| tasks.md | 执行计划(DO) | 原子化任务列表、依赖关系、TDD 顺序 | Claude 生成,你审核完整性 |
在 Claude Code 中实操
第一步:协作编写 spec.md
1 | > 我想构建 [功能描述]。用采访模式对我进行详细提问, |
第二步:生成 plan.md
1 | > @specs/001-feature/spec.md |
第三步:分解 tasks.md
1 | > @specs/001-feature/spec.md @specs/001-feature/plan.md |
第四步:逐步执行
1 | > @specs/001-feature/tasks.md |
TDD 防幻觉原则
这是 SDD 中最实用的洞察:
⚠️ 不要让 Claude 同时写代码和测试。如果它先写了有 Bug 的代码,再写测试,它会写出”验证错误逻辑”的测试——一切绿色但全是错的。
正确做法:测试先行,独立验证。
1 | # ❌ 错误:同时生成 |
防止 AI 偷改测试:仅靠提示词说”不要修改测试”并不可靠。建议用三层防护:
- 提示词约束:在 CLAUDE.md 中写明
严禁修改 *_test.go / *.test.ts 文件 - 权限控制:在
.claude/settings.json中配置"deny": ["Write(*_test.go)", "Write(*.test.ts)"] - Git 兜底:先提交测试代码,实现完成后用
git diff检查测试文件是否被意外修改
第 2 层是关键——即使 AI 忽略提示词,权限系统也会硬性阻止。
何时使用 SDD
| 场景 | 推荐做法 |
|---|---|
| 修 Bug、小改动、单文件 | 直接编码(3.6 的流程) |
| 明确的小功能(< 3 文件) | Plan Mode → 编码(3.1-3.5 的流程) |
| 完整业务功能、新模块、多文件 | SDD 三层规范 → 逐步实现 |
| 大型重构、系统迁移 | SDD + worktree 并行(第 9 节) |
5 提供具体的上下文
5.1 具体化原则 🟢
Claude 能推断意图,但无法读你的心。引用具体文件、提及约束、指向示例模式。
| 策略 | 模糊提示 ❌ | 具体提示 ✅ |
|---|---|---|
| 限定范围 | “添加测试” | “为 foo.py 编写测试,覆盖用户已注销的边界情况。不要使用 mock。” |
| 指向来源 | “为什么 API 设计这么奇怪?” | “查看 ExecutionFactory 的 git 历史,总结它的 API 是怎么演变成现在这样的” |
| 参考已有模式 | “添加日历组件” | “查看首页已有 widget 的实现方式,HotDogWidget.php 是好的参考。按相同模式实现日历组件。” |
| 描述症状 | “修复登录 bug” | “用户报告会话超时后登录失败。检查 src/auth/ 中的 token 刷新。写一个能复现问题的失败测试,然后修复它。” |
模糊提示有时也有用——当你在探索阶段、可以承受方向纠正时。
"这个文件有什么可以改进的?"可能发现你没想到的问题。
丰富的上下文输入方式 🟢
![[Pasted image 20260304161759.png]]
用 @ 引用文件
1 | > 解释 @src/utils/auth.js 中的逻辑 |
@引用文件时,Claude Code 会自动加载该文件所在目录的 CLAUDE.md。
粘贴截图/图片
- 直接拖放图片到 Claude Code 窗口
- 使用
Ctrl+V粘贴剪贴板中的图片 - 提供图片路径:
分析这张截图: /path/to/screenshot.png
管道输入
1 | # 文件内容传入 |
提供 URL或者文件、目录
1 | 参考 https://docs.example.com/api-v2 的文档,为我们的客户端添加 v2 支持 |
使用 /permissions 将常用域名加入白名单,避免每次批准。
让 Claude 自己获取上下文
不需要你手动提供一切——Claude 可以自己通过 Bash 命令、MCP 工具、文件读取来获取上下文。
Boris Pro Tip B4:Boris 大量使用语音输入(macOS 上按两次 fn 键触发听写),他发现语音描述需求比打字快约 3 倍。语音天然产出更详细的描述,而 Claude 擅长理解非结构化的自然语言。
提示词结构图 🟡
一个高质量提示词的结构:
1 | ┌─────────────────────────────────────────────┐ |
结构化提示模板 🟡
功能开
1 | 实现 [功能描述]。 |
Bug 修复模板
1 | 修复 [问题描述]。 |
代码审查模板
1 | 审查 @path/to/file 的以下方面: |
采访模式:让 Claude 采访你 🟡
对于大型功能,让 Claude 先采访你以明确需求,而不是一开始就写代码。
AskUserQuestion:采访模式的秘密武器
AskUserQuestion 是 Claude Code 内置的一个交互工具。当 Claude 需要你做决策时,它会弹出结构化的选择题界面——不需要你打字组织语言,只需点击选项即可。
这个工具有时会被 Claude 自动触发,但你也可以显式要求使用它。
实战演示:用苏格拉底式提问对齐需求
假设你要做一个「与众不同的小游戏」,在 Claude Code 中输入:
1 | 我想开发一款独特的小游戏,但具体做什么、怎么做还没想好。 |
当你耐心回答完所有问题,就得到了一份完整的需求文档:
适用环境:AskUserQuestion 在 Claude Code IDE Extension 和 CLI 中都可用。在 CLI 里,用键盘上下箭头选择选项。
标准提示模板
1 | 我想构建 [简要描述]。用 AskUserQuestion 工具对我进行详细采访。 |
引申用法:用 AskUserQuestion 排查盲区
对于真实项目中的复杂问题,当你有不确定的地方,可以这样用:
1 | 对于这个问题,我们还有哪些没有考虑到的? |
这个模式把 Claude 从「执行者」变成了「顾问」——它不再猜你想要什么,而是通过结构化提问帮你自己想清楚。
完成采访后,开一个新会话来执行规格。新会话有干净的上下文,完全聚焦于实现。