<!-- title: 计划模式入门：先审阅方案再动手 -->

## 概述

本教程面向"装好了 Claude Code 却不知道第一句该说什么"的零基础用户。它不重复安装、认证、首个项目提交这些已被反复讲过的环节，而是聚焦真正的日常基本功：怎么用斜杠命令控制会话、用 `@` 精准投喂上下文、用键盘中途接管，以及——核心——用**计划模式（Plan Mode）**在动手前先审阅方案。学完你能安全地让 AI 改代码：先看方案、再批准、可随时回退。

## 前置条件

| 条目 | 说明 |
|------|------|
| Claude Code 版本 | v2.1.x 及以上（本教程命令表对齐 2026 年 6 月版本，默认模型 Opus 4.8） |
| 完成首次认证 | 已用 `/login` 登录，或在控制台通过订阅/API Key 接入 |
| 一个 Git 仓库 | 实战案例需要可提交的工作区，方便用 `/diff`、`/rewind` 体验回退 |
| 终端 | macOS/Linux 任一现代终端，或 Windows Terminal；VS Code/Cursor 内置终端亦可 |
| Node.js | 仅当你要运行实战案例里的小项目时需要 |

确认安装无误的最快方式：进入会话后输入 `/doctor`，它会用状态图标逐项检查版本、账户、连接性，发现问题按 `f` 让 Claude 帮你修。

---

## 一、先搞懂"对话循环"

很多人卡住，是因为把 Claude Code 当成了搜索引擎。它其实是一个**会自己动手的智能体（agentic）循环**：

```
你输入一条消息 → Claude 思考 → 调用工具（读文件/改代码/跑命令）→
回到你面前确认（或自动继续）→ 输出结果 → 等你下一条消息
```

关键差别在于"调用工具"这一步。Claude 不会只是"回答"，它会真实地读你的文件、改你的文件、在你的终端跑命令。每一次工具调用都会显示在对话流里，你能清楚看到它"做了什么"。这意味着对新手最重要的不是学提示词，而是学**如何控制这个循环**——批准什么、拦截什么、回退什么。

记住这条主线，后面所有命令和快捷键都围绕它展开：**投喂上下文 → 驱动循环 → 中途接管 → 收尾验证**。

---

## 二、用 `/` 召唤命令面板

在任何空提示符处敲一个 `/`，Claude Code 会弹出当前环境里**所有**可用命令——内置的、你装的插件带的、MCP 服务器提供的，一个不漏。继续敲字母就能过滤。

> ⚠️ 规则：命令只在消息**开头**被识别，命令名后面跟着的文字会作为参数传给它。

新手最常犯的错，是用很笨的方式做了一件已经有命令的事。下面这张表按"你在循环的哪个阶段"来组织高频命令：

**起步 / 项目初始化**

| 命令 | 作用 |
|------|------|
| `/init` | 扫描代码库，生成一份起始 `CLAUDE.md` 项目记忆 |
| `/memory` | 编辑 `CLAUDE.md`、开关自动记忆、查看记忆条目 |
| `/permissions` | 管理允许/询问/拒绝的工具权限规则（别名 `/allowed-tools`） |

**会话进行中（驱动循环）**

| 命令 | 作用 |
|------|------|
| `/plan [描述]` | 直接进入计划模式，可附带任务，如 `/plan 修复登录 bug` |
| `/model` | 切换模型并存为新会话默认 |
| `/effort [low\|medium\|high\|xhigh\|max\|ultracode]` | 调整推理投入；`ultracode` = xhigh 推理 + 自动工作流编排 |
| `/context` | 用彩色网格可视化上下文占用，指出哪里在吃 token |
| `/compact [指令]` | 总结当前对话以释放上下文，可指定保留重点 |
| `/btw <问题>` | 问一个不打进主对话、不占上下文的"顺便问一句" |

**收尾 / 验证**

| 命令 | 作用 |
|------|------|
| `/diff` | 打开交互式差异查看器，看未提交改动和逐轮 diff |
| `/code-review [级别] [--fix]` | 审查 diff 找正确性 bug 与可清理项，`--fix` 直接应用 |
| `/run` | 启动并驱动你的项目 App，确认改动真的跑通（非仅靠测试） |
| `/usage` | 查看本次会话花费与套餐用量（别名 `/cost`、`/stats`） |

**会话之间 / 出问题时**

| 命令 | 作用 |
|------|------|
| `/clear [名字]` | 开启全新对话、清空上下文，项目记忆保留（别名 `/reset`、`/new`） |
| `/resume` | 恢复之前的会话继续（别名 `/continue`） |
| `/rewind` | 把对话和/或代码回滚到某个检查点（别名 `/checkpoint`、`/undo`） |
| `/doctor` | 诊断安装与环境问题 |

**预期结果**：敲 `/` 后看到一长串带简短说明的列表；敲 `/co` 会过滤出 `/code-review`、`/compact`、`/context`、`/copy` 等。

**常见问题**

- *敲了 `/` 却看不到某个命令*：部分命令依赖平台/套餐。比如 `/desktop` 仅在 macOS/Windows 且用订阅登录时出现，`/upgrade` 仅 Pro/Max 套餐可见。
- *命令没生效*：八成是你前面还打了别的字。命令必须在消息最开头。

---

## 三、用 `@` 精准投喂上下文

`@` 是新手最该早点学会的符号。与其复制粘贴大段代码，不如直接指路。

| 写法 | 效果 |
|------|------|
| `@src/utils/auth.js` | 把该文件**完整内容**注入上下文 |
| `@src/utils/` | 给出该目录的**文件清单**（不含文件内容） |
| `@a.js 和 @b.js` | 一条消息引用**多个文件** |
| `@server:protocol://resource/path` | 引用 **MCP 资源**，如 `@github:issue://123` |

**操作要点**

- 路径可用相对或绝对路径，按 `Tab` 可自动补全。
- 在终端里**直接把文件拖进窗口**，会自动插入其路径——对截图和日志文件尤其方便。
- 指向某文件时，Claude Code 会顺带拉入该文件所在目录及父目录里的 `CLAUDE.md`，保证局部上下文齐全。

**实战示范**

```
帮我看一下 @src/routes/register.js，给注册接口加邮箱格式校验，
校验失败返回 400。先用计划模式给我方案。
```

**预期结果**：Claude 读取该文件，结合同目录约定，进入计划模式给出方案，而不是凭空猜你的代码长什么样。

**常见问题**

- *引用目录却没读到内容*：那是设计如此——目录引用只给清单。要内容就指到具体文件，或让 Claude 自己进去读。
- *`@` 没有补全*：确认你在交互式会话里（`claude` 直接启动），而非 `-p` 一次性模式。

---

## 四、图片输入三法

Claude Code 支持视觉输入，对前端、设计还原、报错截图场景极有用。三种方式：

1. **拖拽**：把图片文件直接拖进终端窗口（同 `@` 路径机制）。
2. **剪贴板粘贴**：截图后直接在提示符处粘贴。
3. **文件路径**：在消息里写图片路径，如 `照着 @mocks/login.png 还原这个登录页`。

**适用场景**

| 场景 | 推荐方式 |
|------|----------|
| 浏览器报错截图 | 剪贴板粘贴 |
| 设计稿 PNG | 拖拽或路径 |
| 多张参考图对比 | 多个路径一起引用 |

**常见问题**

- *SSH 连接时粘贴/拖拽失效*：SSH 环境下剪贴板通道可能不通，改用文件路径，或用 `/copy` 在选择器里按 `w` 写入文件。
- *图片太大被拒*：先压缩或裁剪到关键区域。

---

## 五、键盘掌控：三键走天下

新手最高频的操作其实就靠几个键。把它练成肌肉记忆，体验会质变。

| 按键 | 作用 |
|------|------|
| `Shift + Tab` | **循环切换权限模式**：default → acceptEdits → plan（开启 auto 后还会经过 auto，启用时含 bypassPermissions） |
| `Esc` | 中途打断 Claude，立刻夺回输入权 |
| `Esc` 然后 `Esc` | 打开回退/检查点菜单，把会话滚回更早状态 |
| `Ctrl + C` | 取消当前输入；空提示符下退出 |
| `Ctrl + R` | 反向搜索你的提示历史 |
| `Ctrl + O` | 展开成详细完整 transcript 视图 |
| `↑ / ↓` | 翻阅提示历史 |
| `?` | 显示当前终端/IDE 的快捷键清单 |

**最重要的一个键：`Shift + Tab`**。它串起了本教程的核心——权限模式三态。下文专门讲。

**常见问题**

- *在 VS Code 里 `Shift+Tab` 不生效*：跑 `/terminal-setup` 配置终端键绑定（对 VS Code、Cursor、Alacritty、Zed 等需要它的终端可见）。
- *记不住*：会话里随时按 `?`，会列出你当前环境的确切快捷键。

---

## 六、计划模式：新手的安全网

这是整篇教程的重心。**计划模式（Plan Mode）是一种只读模式**：Claude 会探索、解释、提方案，但**不编辑文件、不跑命令**。对新手，它是"先看清楚它想干什么再放它动手"的安全闸。

### 三种权限模式怎么转

`Shift + Tab` 在三态间循环（模式会显示在输入框附近）：

```mermaid
flowchart LR
    A["默认模式<br/>default<br/>每次操作都问你"] -->|Shift+Tab| B["接受编辑模式<br/>acceptEdits<br/>自动批准文件编辑<br/>命令仍要确认"]
    B -->|Shift+Tab| C["计划模式<br/>plan<br/>只读·只提方案"]
    C -->|Shift+Tab| A
```

| 模式 | 文件编辑 | Shell 命令 | 适合 |
|------|----------|-----------|------|
| default | 每个都问 | 每个都问 | 新手默认、不熟悉的代码库 |
| acceptEdits | 自动批准 | 仍要确认 | 信任方向后想少点确认 |
| plan | **禁止** | **禁止** | 大改动前先审方案 |

### 进入计划模式有两种方式

- 直接 `/plan`，或 `/plan 修复登录 bug` 带任务进。
- 或先 `Shift + Tab` 切到 plan，再正常打字。

### 计划模式工作流

在计划模式里，你描述目标（如"给注册接口加邮箱校验"），Claude 会：

1. **探索**：读相关文件、依赖、上下文（你可以用 `@` 引导它）。
2. **提案**：输出结构化方案——改哪些文件、思路、步骤、权衡、备选。
3. **审阅与迭代**：你觉得哪里不对，直接追问，它只读不改地继续完善。
4. **退出并执行**：满意后，Claude 用退出计划模式的机制请你批准；你批准后切回默认/acceptEdits 模式，它才真正动手。

### 什么时候用、什么时候跳过

| 情况 | 建议 |
|------|------|
| 不熟悉的代码库、跨多文件改动、有风险 | **用**计划模式 |
| 改一行拼写、加一句注释、显而易见的小修 | **跳过**，直接动手 |
| 想顺便学"老手会怎么拆这个问题" | **用**，借它的方案学拆解 |

**配合 `/effort` 调推理深度**：方案复杂时，`/effort high` 让它想得更深；简单任务 `/effort low` 省时省钱。`ultracode` 则是"xhigh 推理 + 自动多智能体工作流编排"，留给大型跨库改造。

**常见问题**

- *计划模式里它说"我无法编辑"*：正常，这正是只读约束。退出计划模式（批准方案）后即可执行。
- *批准方案后它又开始每步问我*：因为回到了 default。想少确认，再 `Shift + Tab` 切到 acceptEdits。
- *方案太啰嗦*：用 `/effort medium` 或直接说"方案压缩到 5 步以内"。

---

## 七、上下文不爆缸：`/context`、`/compact`、`/rewind`

上下文窗口（context window）是模型一次能"放在脑子里"的全部文本——你的提示、它的回复、读过的文件。满了之后旧内容会被压缩或丢弃。新手常在不知不觉中把它塞满，导致 Claude "忘事"。

**三个保命命令**

| 命令 | 何时用 |
|------|--------|
| `/context` | 想知道上下文被谁吃了（哪个工具、哪段记忆） |
| `/compact` | 对话变长时，把前面总结掉，腾出空间继续同一对话 |
| `/clear` | 换一个全新任务时，清空历史（项目记忆 `CLAUDE.md` 保留） |

> 区分：`/compact` 是"在同一段对话里瘦身"；`/clear` 是"开新对话"。新手常误用 `/clear` 把还想用的上下文丢了。

**顺手两招**

- `/btw 现在 UTC 几点`：问个跟主任务无关的小问题，不污染历史。
- `/rewind` 或连按两下 `Esc`：发现走偏了，滚回检查点重来，连代码改动一起回退。

**常见问题**

- *Claude 开始"忘记"早先的约定*：大概率上下文爆了。先 `/context` 看，再 `/compact 重点保留校验规则`。
- *回退后改动的代码没了*：`/rewind` 会连同代码回滚。若只想回退对话不动代码，在回退菜单里选仅对话。

---

## 实战案例：给注册接口加邮箱校验（计划模式闭环）

下面是一个**完整、可复现**的小闭环，演示"计划 → 审阅 → 执行 → 验证"。假定你有一个极简 Node.js 项目，文件 `src/routes/register.js`：

```javascript
// src/routes/register.js
import express from "express";
const router = express.Router();

router.post("/register", (req, res) => {
  const { email, password } = req.body;
  // TODO: 缺少邮箱格式校验
  const user = { email, password };
  // ...保存用户...
  res.status(201).json({ ok: true, user });
});

export default router;
```

**第 1 步：进入计划模式并描述目标**

按 `Shift + Tab` 切到 `plan`（输入框提示会显示 `plan mode`），然后输入：

```
参考 @src/routes/register.js，给 /register 加邮箱格式校验：
- 不合法返回 400 和 { error: "invalid email" }
- 合法才继续创建用户
先用计划模式给我方案，别动代码。
```

**预期结果（Claude 的方案，示意）**

```
方案：
1. 在 register.js 顶部加正则常量 EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
2. 在解构后、保存前加校验分支，不满足则 return res.status(400).json(...)
3. 不引入新依赖，单文件内完成
权衡：正则无法覆盖 RFC 全集，但对常见输入足够；如需严格可后加 validator。
将修改文件：src/routes/register.js（仅 1 个文件）
```

**第 2 步：审阅与迭代**

若你想让它顺带加单元测试，追问：

```
方案里再加一步：用 node:test 写 3 个用例（合法/缺@/空），放 tests/register.test.js。
```

Claude 仍只在计划模式里**更新方案**，不落盘。

**第 3 步：批准并执行**

满意后，批准退出计划模式。Claude 会请求执行权限——批准（或先 `Shift + Tab` 切 acceptEdits 免逐一确认）。它落盘两个文件：

```javascript
// 改动后的 register.js 关键片段
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

router.post("/register", (req, res) => {
  const { email, password } = req.body;
  if (!EMAIL_RE.test(email || "")) {
    return res.status(400).json({ error: "invalid email" });
  }
  const user = { email, password };
  res.status(201).json({ ok: true, user });
});
```

**第 4 步：验证**

- `/diff`：打开差异查看器，确认只动了预期的两个文件。
- 让 Claude 跑测试（批准该命令）：

```
运行 tests/register.test.js，告诉我结果。
```

或用 `/run` 让它启动项目、实际打一个非法邮箱请求确认返回 400。

**第 5 步：收尾**

- `/usage` 看本会话花了多少。
- 若不满意，`/rewind` 回到改动前。
- 满意就正常 `git` 提交（提交与否由你决定）。

这个闭环的价值在于：**全程你都在审阅，没有任何一步是 Claude 偷偷做的**。这正是计划模式给新手的底气。

---

## 工作流程图

下面这张图把整篇教程的"对话循环 + 计划模式"串成一条主线：

```mermaid
flowchart TD
    Start(["启动 claude"]) --> Input["组织输入<br/>/ 命令 · @ 文件 · 图片"]
    Input --> Mode{"当前权限模式?"}
    Mode -->|plan 计划模式| Explore["只读探索<br/>读文件·理依赖"]
    Explore --> Propose["产出结构化方案"]
    Propose --> Review{"方案 OK?"}
    Review -->|否·追问| Explore
    Review -->|是·批准| ExitPlan["退出计划模式"]
    Mode -->|default/acceptEdits| Exec["执行工具调用<br/>读/改/跑命令"]
    ExitPlan --> Exec
    Exec --> Confirm{"需要批准?"}
    Confirm -->|是| Approve["你逐项批准"]
    Confirm -->|acceptEdits 编辑| Exec
    Approve --> Exec
    Exec --> Verify["验证<br/>/diff · /run · 测试"]
    Verify --> Done{"满意?"}
    Done -->|否| Rewind["/rewind 回退<br/>或 Esc Esc"]
    Rewind --> Input
    Done -->|是| Ship["/usage 看花费 · git 提交"]
    Ship --> End(["结束 / /clear 新任务"])

    Intercept["Esc 中途打断<br/>Ctrl+R 翻历史<br/>/compact 瘦身"] -.随时介入.-> Input
```

---

## 延伸阅读

- **Interactive mode**（交互模式：键盘快捷键、Vim 模式、命令历史）— Claude Code 官方文档
- **Common workflows**（常见工作流：计划、调试、重构的最佳实践）— Claude Code 官方文档
- **Cost tracking**（成本追踪：看懂 `/usage`、按技能/子智能体拆分）— Claude Code 官方文档
- **Memory management**（记忆管理：`CLAUDE.md` 的写法与分层）— Claude Code 官方文档
- **Claude Code cheatsheet**（官方速查表：术语表 + 命令 + 快捷键）— Claude Help Center

---

## 训练营适用性评估

| 维度 | 评估 |
|------|------|
| 适合的训练营类型 | ① 企业新人入职营（让新人安全上手内部 AI 工具）；② 编程训练营（学 AI 辅助编码的安全姿势）；③ AI 工具速成营（半天工作坊） |
| 学员基础 | 零基础可用，但"实战案例"环节需看得懂一段简单 JavaScript/Node.js |
| 教学时长 | 建议 **3 小时**：1h 概念与命令演示 + 1h 计划模式与键盘实操 + 1h 完整闭环练手 |
| 教学形式 | 演示为主、跟练为辅；每个学员准备一个自己的小 Git 仓库现场跑闭环 |
| 验收标准 | 学员能独立完成"计划 → 审阅 → 执行 → `/diff` 验证 → `/rewind` 回退"全流程，并能说出三种权限模式的区别 |
| 风险点 | 学员易把 `acceptEdits`/`bypassPermissions` 当默认，需强调先在 default/plan 下养成审阅习惯 |

---

## 参考来源

1. [Commands — Claude Code Docs](https://code.claude.com/docs/en/commands) — 官方命令完整参考（含内置命令与打包技能，对齐 v2.1.x）
2. [Claude Code cheatsheet — Claude Help Center](https://support.claude.com/en/articles/14553413-claude-code-cheatsheet) — 官方术语表、核心命令与键盘快捷键速查
3. [Referencing Files and Resources in Claude Code — Steve Kinney](https://stevekinney.com/courses/ai-development/referencing-files-in-claude-code) — `@` 引用语法、目录与 MCP 资源的实操讲解（2026-03 更新）
4. [Claude Code Cheat Sheet - Shortcuts, Commands, Tips (2026) — ComputingForGeeks](https://computingforgeeks.com/claude-code-cheat-sheet/) — 社区维护的 2.1.x 速查表，含 Opus 4.8 默认与后台智能体说明
5. [Claude Code Image Attachment Guide — SmartScope](https://smartscope.blog/en/generative-ai/claude/claude-code-image-guide/) — 图片输入三法（拖拽/粘贴/路径）及适用场景对比

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
