第 04 期 | 交互基石:探索终端里的魔法模式 (Modes)

更新于 2026/4/5

🎯 学习目标

学完本期你将掌握:

  1. Plan Mode 与 Default Mode 的实战切换时机
  2. Extended Thinking(深度思考)模式的开启与效果
  3. Headless / Print Mode 的脚本化用法
  4. 会话恢复 (--continue, --resume) 的技巧

📖 核心概念讲解

4.1 模式全景图

╭─ Claude Code 模式体系 ─────────────────────────────╮
│                                                     │
│  ┌─────────────┐    ┌──────────────┐               │
│  │ Plan Mode   │◄──►│ Default Mode │  Shift+Tab    │
│  │ 只读分析    │    │ 读写执行     │               │
│  └─────────────┘    └──────────────┘               │
│                                                     │
│  ┌──────────────────────────────────────────┐      │
│  │ Extended Thinking(深度思考)              │      │
│  │ 适用于复杂推理、架构设计                    │      │
│  │ 开启: 终端内按 `!` 前缀或设置 thinking=on │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
│  ┌──────────────────────────────────────────┐      │
│  │ Print Mode (-p)(脚本模式)               │      │
│  │ 单次执行,无交互,输出到 stdout            │      │
│  │ 用法: claude -p "query"                   │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
│  ┌──────────────────────────────────────────┐      │
│  │ Bare Mode (--bare)(精简启动)             │      │
│  │ 跳过加载 CLAUDE.md / Skills               │      │
│  │ 用于快速一次性任务                         │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
╰─────────────────────────────────────────────────────╯

4.2 深度思考 (Extended Thinking)

当遇到复杂的架构决策或多步推理问题时,可以开启深度思考模式:

# 全局开启
claude --effort max

# 或在设置中配置
# ~/.claude/settings.json
{
  "preferences": {
    "thinkingMode": "on"
  }
}

努力级别 (Effort Level):

级别 说明 适用场景
low 快速响应,少量推理 简单文件操作
medium 默认级别 日常编码
high 深度推理 Bug 排查、重构
max 最大推理深度 架构设计、复杂算法

💻 模拟 Claude TUI 交互

场景 1:Plan Mode 探索陌生代码库

> (Shift+Tab 切换到 Plan Mode)

╭─ 🔒 Plan Mode ──────────────────────────────────────╮
│  Only read-only tools are available                  │
╰──────────────────────────────────────────────────────╯

> 从购物车页面开始,解释结账流程是如何工作的

╭─ Claude (Plan Mode) ────────────────────────────────╮
│                                                      │
│  🔍 Using tool: Glob (src/pages/cart**)             │
│  🔍 Using tool: Read (src/pages/cart/index.tsx)      │
│  🔍 Using tool: Grep ("checkout" across src/**)     │
│  🔍 Using tool: Read (src/api/checkout.ts)          │
│  🔍 Using tool: Read (src/hooks/useCheckout.ts)     │
│  🔍 Using tool: Read (src/services/payment.ts)      │
│                                                      │
│  ## 结账流程分析                                     │
│                                                      │
│  ```mermaid                                          │
│  sequenceDiagram                                     │
│    Cart->>CheckoutAPI: POST /api/checkout            │
│    CheckoutAPI->>Stripe: Create PaymentIntent        │
│    Stripe-->>CheckoutAPI: clientSecret               │
│    CheckoutAPI-->>Cart: { clientSecret, orderId }    │
│    Cart->>Stripe.js: confirmPayment(clientSecret)    │
│    Stripe.js-->>Cart: Success / Failure              │
│    Cart->>CheckoutAPI: PATCH /api/orders/{id}        │
│  ```                                                 │
│                                                      │
│  关键文件:                                          │
│  • `src/pages/cart/index.tsx` → 购物车 UI            │
│  • `src/api/checkout.ts` → 创建订单 + Stripe Intent │
│  • `src/services/payment.ts` → Stripe SDK 封装      │
│  • `src/hooks/useCheckout.ts` → 前端状态管理        │
│                                                      │
│  💡 整个流程没有修改任何文件,纯分析。               │
│                                                      │
╰──────────────────────────────────────────────────────╯

场景 2:Print Mode 脚本化使用

# 单次执行,结果输出到终端
$ claude -p "解释 src/auth/jwt.ts 的作用"

这个文件实现了 JWT 认证中间件:
- generateToken(): 生成包含 userId 的 JWT
- verifyToken(): 验证请求头中的 Bearer token
- refreshToken(): 刷新即将过期的 token
...

# 管道式用法:分析日志
$ tail -200 app.log | claude -p "分析这些日志中的异常"

# 管道式用法:代码审查
$ git diff main --name-only | claude -p "审查这些修改文件的安全性"

# 输出为 JSON 格式
$ claude -p --output-format json "列出项目中所有的 API 端点"

场景 3:恢复之前的会话

# 恢复上一次会话
$ claude -c

  ✓ Resuming previous session...
  ✓ Context restored: "auth module refactoring"
  ✓ 12 messages in history

# 恢复命名会话
$ claude -r "auth-refactor" "继续完成 refresh token 的实现"

# 分叉会话(保留原始,在副本上工作)
$ claude --resume abc123 --fork-session

💻 代码演示:Pipe 管道的高级用法

# 🔥 实用组合:自动翻译项目中的新字符串
claude -p "translate new strings into French and raise a PR for review"

# 🔥 批量处理:检查所有改动文件的安全问题
git diff main --name-only | claude -p "review these changed files for security issues"

# 🔥 日志分析:找到异常并自动通知
tail -200 app.log | claude -p "Slack me if you see any anomalies"

# 🔥 控制输出格式
claude -p --output-format json "列出所有 TODO 注释" > todos.json

# 🔥 限制预算和轮次
claude -p --max-turns 3 --max-budget-usd 0.50 "快速修复这个 lint 错误"

🔧 涉及的 CLI Flags

Flag 作用 示例
-p / --print Print Mode,无交互执行 claude -p "query"
-c / --continue 恢复上一次会话 claude -c
-r / --resume 恢复指定会话 claude -r "session-name"
--fork-session 分叉会话 claude --resume id --fork-session
--effort 设定推理深度 claude --effort max
--bare 精简启动 claude --bare -p "query"
--max-turns 限制最大执行轮次 claude -p --max-turns 3
--max-budget-usd 限制花费上限 claude -p --max-budget-usd 5.00
--model 指定模型 claude --model sonnet
--output-format 输出格式 json, text, stream-json

📝 本期要点回顾

  1. Plan Mode 是探索陌生代码库的 "安全第一步"
  2. Print Mode (-p) 让 Claude Code 变成 Unix 管道中的智能组件
  3. Extended Thinking 可在复杂场景下提升推理质量
  4. --continue--resume 实现跨会话的工作延续
  5. --max-budget-usd--max-turns 是费用控制的安全阀

🔗 参考资料