Skip to content
Published at:

第 31 章:效率优化策略

在前两章中,我们探讨了如何写出好的 Prompt 和如何建立高效的人机协作模式。这些是"做对的事"——方向正确、分工合理。而本章要回答的是另一个维度的核心问题:在方向正确的前提下,如何把效率做到极致?

效率优化不是"省几秒钟"的雕虫小技。一个资深 Claude Code 用户和一个初学者的日常产出差距,往往不是 20% 或 30%,而是 2-3 倍甚至更多。这个差距来自四个维度:任务粒度(一次做多少)、上下文管理(如何在有限窗口里效率最大化)、模型选择(花多少钱得到什么质量)、以及并行组织(如何让多个工作流同时推进)。

本章目标:建立 Claude Code 效率优化的完整方法论——掌握任务粒度拆分、上下文预算管理、模型选择经济学、批量与并行策略,以及效率度量和持续迭代的方法。

31.1 任务粒度:一次做多少最合适

任务粒度是效率优化的第一层问题。如果粒度太细,Claude Code 的优势发挥不出来——启动成本(描述需求 + 等待响应 + 审查 Diff)比你自己动手还高。如果粒度太粗,Claude Code 会迷失方向,输出质量下降,审查和修正的成本急剧上升。找到那个"黄金区间"是效率的前提。

粒度的三个区间

先说结论:一个 Prompt 的最佳粒度是 一个清晰目标 + 3-8 个文件的改动。超过 8 个文件容易失控,少于 3 个文件往往不值得启动,不如自己改更快。

┌────────────────────────────────────────────────────────────┐
│                                                            │
│  ❌ 太小:    "把这个变量名从 x 改成 userId"                │
│               → 浪费时间,自己改 3 秒,Claude 来回 1 分钟  │
│                                                            │
│  ✅ 合适:    "重构 src/api/auth.ts,把回调改成 async/await"│
│               → Claude 的优势区间,多个关联文件一致性修改   │
│                                                            │
│  ❌ 太大:    "重构整个项目"                                │
│               → Claude 会迷失,质量下降,审查成本暴增       │
│                                                            │
└────────────────────────────────────────────────────────────┘

如何判断粒度过小?

如果你的指令满足以下三个条件中的任意两个,就是粒度过小的信号:

信号示例更好的做法
修改范围 ≤ 1 个文件、≤ 5 行"把 utils.ts 第 12 行的 const 改成 let"手动改,或者把类似的修改合并成批量指令
不需要 Claude 理解上下文就能完成"在这个文件最上面加一行 import React from 'react'"编辑器的自动导入功能更快
审查时间和执行时间都大于手动操作说一句话 5 秒,等响应 10 秒,审查 Diff 10 秒 → 总计 25 秒 vs 手动 5 秒自己动手

如何判断粒度过大?

如果出现以下信号,说明你的指令应该被拆分:

信号具体表现
你在不断纠正 Claude对话中反复出现"不对,我指的是...""刚才那个不要,改成..."
Claude 遗漏了关键要求你列了 8 条要求,Claude 只完成了 5 条,漏掉了 3 条
审查 Diff 时感到吃力一次改了 15 个文件,你逐文件审查 Diff 花了 20 分钟——比手动改还久
工具调用出现大量重试Claude 反复读取同一个文件,或者反复执行同一个命令——它在困惑

拆分大任务的技巧

当你面临一个"太大"的任务时,用以下三种维度中的一种来拆分:

按模块拆分(最常用):

"重构整个用户系统"
        ↓ 拆分为
├── 重构 src/models/user.ts(数据层,3 个文件)
├── 重构 src/routes/auth.ts(路由层,2 个文件)
├── 重构 src/pages/Login.tsx + src/pages/Register.tsx(前端,2 个文件)
└── 补充测试(src/__tests__/auth/,3 个文件)

按层次拆分(最安全):

"搭建用户认证功能"
        ↓ 拆分为
├── 第一步:"创建 User 数据模型和数据访问层"(数据层)
├── 第二步:"实现注册和登录的 API 路由"(API 层)
├── 第三步:"实现前端注册和登录页面"(前端层)
└── 第四步:"编写单元测试和集成测试"(测试层)

后一步依赖前一步的输出——确保每步验证通过后再进下一步。

按依赖关系拆分(最精确):

当任务涉及的模块之间有强依赖关系时,按依赖链从上到下拆分。原则是:先改被依赖的基础模块,再改依赖它的上层模块。

"重构 API 调用体系"
        ↓ 按依赖链拆分
├── 第一步:"创建统一的 HTTP 客户端(src/api/client.ts)"
│    → 这一步不依赖任何已有模块,只创建基础设施
├── 第二步:"提取 users API 模块,依赖 client.ts"
│    → 依赖第一步创建的 client.ts
├── 第三步:"修改所有页面组件,使用新的 API 模块"
│    → 依赖第二步创建的 API 函数

拆分后执行的原则:每次对话只完成一个拆分后的子任务。完成一个 → 验证 → Commit → /clear(或 /compact)→ 开始下一个。这个节奏确保每个子任务都在"干净的上下文"和"干净的 Git 状态"中执行。

完整示例:一次典型的拆分

假设你要为现有系统添加"文件上传"功能。如果直接说"帮我添加文件上传功能",Claude 会需要同时处理文件存储配置、API 路由、前端上传组件、进度展示、错误处理——十几个文件,很容易出错。

正确的拆分:

第一轮对话(数据层 + 配置):
"在 src/config/upload.ts 中添加文件上传配置(存储路径、大小限制、允许的类型)。
 然后在 src/services/storage.ts 中封装文件存储逻辑(写入磁盘、生成访问 URL)。
 两个文件,依赖关系是 config → storage。"

验证 → Commit: "feat: 添加文件上传配置和存储服务"

第二轮对话(API 层):
"基于 storage.ts 的封装,在 src/routes/upload.ts 中创建文件上传 API:
 POST /api/upload —— 接收文件、调用 storage 服务、返回文件 URL。
 在 src/middleware/upload.ts 中添加 multipart 解析的中间件。
 两个新文件,一个修改 src/router.ts 注册路由。"

验证 → Commit: "feat: 添加文件上传 API 路由"

第三轮对话(前端):
"在 src/components/UploadButton.tsx 中创建文件上传组件:
 - 拖拽或点击选择文件
 - 上传进度条
 - 上传完成后的文件列表展示
 - 错误提示
 同时在 src/pages/ResourcePage.tsx 中集成这个组件。"

验证 → Commit: "feat: 添加文件上传前端组件"

第四轮对话(测试 + 收尾):
"为上面实现的文件上传功能编写测试:
 - src/__tests__/services/storage.test.ts
 - src/__tests__/routes/upload.test.ts
 - src/components/__tests__/UploadButton.test.tsx"

四轮对话,每轮 2-3 个文件,每轮之间有清晰的边界和验证点。总时间约 40 分钟——比一轮"大而全"的指令(可能 15 分钟得到结果,但审查修正再花 30 分钟)更快、更可靠。

黄金法则:当你犹豫"要不要拆"的时候,做一个快速检查——想象你要手动向一个聪明的同事描述这个任务,如果一句话说不清楚,就拆。一句话能说清楚 = 一个 Prompt。一句话说不清楚 = 多个 Prompt。

31.2 上下文预算管理

任务粒度解决了"一次做多少"的问题,接下来要面对的是另一个硬约束:上下文窗口。不管你的指令多精确,如果上下文满了,Claude Code 就会"失忆"——忘记你之前说过的重要信息、忘记项目约定、甚至忘记当前在做什么。

上下文窗口的本质

把上下文窗口理解为一个固定容量的工作台。在这个工作台上:

  • 你的项目文件(通过 Read 工具加载)是"参考材料"
  • 对话历史是"工作记录"
  • 系统提示和 CLAUDE.md 是"贴在墙上的规则"
  • 工具调用的结果(命令输出、Grep 结果)是"笔记"

这些共用同一个容量池。对于 DeepSeek V4 Pro(本书默认模型),这个容量是约 100 万 token(1M);对于 Claude 模型家族是约 20 万 token。超过这个容量,最早的内容会被截断——就像你在工作台上放了太多东西,最早放的资料被挤掉了。

Token 的实际消耗

/context 命令可以显示当前的 token 消耗分布。典型的长对话 token 分布如下:

┌────────────────────────────────────────────────┐
│ Token 消耗分布(一次 45 分钟的深度协作)        │
│                                                │
│ 系统提示 (System Prompt) : ~5,000 tokens     │
│ CLAUDE.md 项目说明      : ~2,000 tokens     │
│ 已加载的文件内容         : ~30,000 tokens    │
│ 对话历史                 : ~60,000 tokens    │
│ 工具调用输出 (各种输出) : ~20,000 tokens    │
│ ─────────────────────────────────────────────  │
│ 总计                     : ~117,000 tokens    │
│ 窗口上限 (Claude)        : 200,000 tokens    │
│ 剩余空间                  : ~83,000 tokens    │
│                                                │
│ 对于 DeepSeek V4 Pro (1M tokens),剩余空间巨大 │
└────────────────────────────────────────────────┘

要注意的是:对话历史是增长最快且最难控制的消耗项。你每对 Claude 说一句话(平均 100 token),Claude 回复一段话(平均 500-1000 token),加上中间的工具调用输出——15 分钟的密集对话就能积累 2-3 万 token。如果使用 Claude 模型(200K 窗口),2 小时后对话历史就占了窗口的 40-60%。

预算分配策略

将上下文窗口视为可分配的预算,有意识地控制各部分的比例:

预算项推荐占比内容
核心上下文(CLAUDE.md、关键常量文件)30%项目架构、编码规范、类型定义等"应该始终在场"的信息
当前任务上下文(相关文件、近期对话)40%当前正在修改的文件、最近的讨论方向、未解决的决策
输出空间(留给 Claude 的生成空间)30%Claude 生成代码、解释、计划的 token 空间

30-40-30 的实操指南

  • 核心上下文(30%):通过 CLAUDE.md 和 Memory 系统固化(详见第 12 章)。不要让对话历史承担"记住项目约定"的职责——这种东西写在文件里,每次通过 CLAUDE.md 自动加载。
  • 当前任务上下文(40%):只加载与当前任务直接相关的文件。不要因为"可能用到"而加载几十个文件——用到的时候 Claude 会自己去 Read。对话历史保持在最近 20 轮以内最理想。
  • 输出空间(30%):确保 Claude 有足够的 token 来生成完整的代码和解释。如果输出空间不足,Claude 的回复会被截断,导致代码不完整或解释中途断开。

上下文即将耗尽的信号

即使有 /context 命令,实际工作中你更可能先感受到以下信号:

信号原因应该做什么
Claude 重复问题或方案之前的决策从"当前上下文"中被挤掉了立即 /compact
Claude 开始做违背之前约定的事它"忘了"你之前说的要求/compact 并在提示中强调关键约定
回复截断或不完整输出空间不足清掉对话历史的前半段
工具调用明显变多但没进展Claude 在反复了解它"应该已经知道"的信息/compact/clear 重来
回答质量下降(方案变浅、遗漏细节)整个上下文过度拥挤果断 /clear 重来

/compact 的正确使用

/compact 会分析当前对话,保留关键决策和信息,丢弃冗余的中间步骤。但它的效果很大程度上取决于你的引导:

# ❌ 简单的 compact——让 Claude 自己判断保留什么
/compact

# ✅ 带引导的 compact——告诉 Claude 什么是重要的
/compact 只保留以下信息:
- 项目使用 React 18 + TypeScript 5
- API 响应格式统一为 { code, data, message }
- 用户认证模块已完成,不要重复修改
- 当前正在重构的文件列表及进度
其余所有中间讨论、已完成的步骤、不相关的对话都可以舍弃。

什么时候用 /compact vs 什么时候用 /clear

场景使用
对话中有重要的决策和结论,需要保留/compact
任务完全变了,之前的对话与当前无关/clear
对话很长但 Claude 表现还好暂时不需要操作
Claude 开始"忘记"重要信息立即 /compact
Claude 在错误方向上越走越远/clear,拒绝这次对话中未提交的改动

DeepSeek V4 Pro 的 1M 上下文优势

对于使用 DeepSeek V4 Pro 的读者(本书的默认推荐配置),1M token 的上下文窗口意味着:

  • 更宽松的预算:不需要像在 Claude 200K 窗口中那样精打细算。你可以在一次对话中加载更多文件、保留更长的对话历史。
  • 更少的中断:很少需要 /compact。在一次对话中完成更大的任务(如完整实现一个功能模块的全部代码)而不担心上下文不够。
  • 更好的长文本处理:可以一次加载完整的 API 文档、数据库 schema、甚至多个完整文件,而不需要"分批加载、分批处理"。

但要注意:上下文大不等于不需要管理。即使在 1M 窗口下,不相关的信息挤占空间仍然会降低 Claude 的注意力质量——类似你在一个堆满资料的桌子上工作,虽然桌子够大,但杂乱的资料仍然干扰思考。

使用 1M 上下文的建议

  • 不需要过度压缩,但保持对话围绕核心任务
  • 完成一个大阶段后,还是建议 /clear 开启新对话——干净的上下文 > 满的上下文
  • 如果发现 Claude 的回复质量下降,即使上下文只用了 30%(30 万 token),也尝试 /compact

上下文管理的本质:不是为了省钱(token 不贵),而是为了保证 Claude 的"注意力质量"。一个干净的上下文,就像一张整洁的桌子——你能立刻找到需要的工具和资料,不会被不相关的杂物干扰。

31.3 模型选择经济学(成本 vs 质量)

效率不只是速度——还包括投入产出比。同样的任务,选择正确的模型可以让你省下 60-70% 的费用而不牺牲质量(或者相反,在关键任务上用更贵的模型换取更可靠的结果)。

模型成本速查

以下是本书涉及的四个核心模型的基本对比(以 2026 年 5 月为参考):

特性DeepSeek V4 FlashDeepSeek V4 ProClaude Haiku 4.5Claude Sonnet 4.6Claude Opus 4.7
上下文窗口1M tokens1M tokens200K tokens200K tokens200K tokens
推理能力⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
速度极快极快
成本级别¥¥¥¥¥¥¥¥¥¥¥
单次对话成本 (约)0.01-0.05 元0.05-0.3 元0.01-0.03 元0.1-1 元0.5-5 元
适合的复杂度低-中低-高中-高

成本说明:以上为典型的一次中等复杂度的对话(15-30 轮)的估算,实际费用取决于 token 消耗量、模型定价策略的变化和 API 提供商的定价。DeepSeek V4 系列的成本约为同级别 Claude 模型的 1/10 到 1/5。

任务-模型映射:什么时候用什么

不是所有任务都需要"最强模型"。以下映射表是基于实际使用经验的推荐:

任务类型推荐模型成本级别理由
简单问答、代码解释V4 Flash / Haiku¥只需要理解代码,不需要深度推理
添加注释、格式化V4 Flash¥规则明确,不需要推理
日常编码、中小规模重构V4 Flash / V4 Pro¥¥性价比最优区间
多文件协调修改(3-8 个文件)V4 Pro / Sonnet¥¥需要保持跨文件的一致性
复杂架构设计、多方案对比V4 Pro / Opus¥¥¥需要深度推理和权衡
调试棘手 Bug(无明显线索)V4 Pro / Opus¥¥¥需要多条线索交叉推理
安全审计、关键业务代码Opus¥¥¥¥错误代价高,值得投入最强模型
批量生成文档、测试用例V4 Flash¥量大但单次推理简单
代码审查(全面扫描)V4 Pro¥¥需要覆盖多种问题类型
Code Review(深度审查)Opus / V4 Pro¥¥¥需要发现隐蔽问题

混合策略:不要只用一个模型

经验表明,最经济的策略是 90% V4 Flash + 10% V4 Pro/Opus

日常开发节奏:
  上午 09:00 → V4 Flash → 处理 5 个常规任务(代码解释、小重构、添加测试)
               成本:约 0.1 元

  下午 14:00 → V4 Pro → 处理 1 个复杂任务(架构重构、跨模块协调)
               成本:约 0.2 元

  紧急 Bug → V4 Pro / Opus → 深度推理调试
               成本:约 0.3 元

  一天总计约 0.6 元,一个月约 15-20 元

对比:如果所有任务都用 Opus,一天的成本可能是 5-20 元,一个月 150-600 元——差别是 10-30 倍。

实用切换规则

规则 1(默认规则):日常任务用 V4 Flash(或 Haiku)

规则 2(升级规则):遇到以下情况立即切 V4 Pro(或 Sonnet/Opus):
  - Claude 连续两次尝试都没解决问题
  - 任务涉及 5 个以上文件的协调修改
  - 需要做架构层面的决策或方案对比
  - 代码的正确性要求极高(认证、支付、数据完整性)

规则 3(降级规则):批量任务用 V4 Flash:
  - 生成 50 个单元测试
  - 为 20 个文件添加类型标注
  - 生成 API 文档
  (量大、规则明确、单个推理简单的任务)

批量策略:Flash 做初稿,Pro 做终审

对于质量要求高的批量任务,使用"两阶段法":

第一阶段(V4 Flash,低成本):
  目标:批量生成初稿
  例如:"为 src/api/ 下的所有 15 个模块添加完整的 JSDoc 注释"
  产出:15 个文件,每个都有了注释(但质量可能参差不齐)

第二阶段(V4 Pro,高质量审查):
  目标:审查和修正
  例如:"审查 src/api/ 下所有文件的 JSDoc 注释:检查参数类型是否准确、
         返回值描述是否正确、是否有遗漏的关键说明。逐个文件给出修正。"
  产出:修正后的一致高质量注释

两阶段总成本约 0.5 元,但如果全程用 V4 Pro 则可能花费 2-3 元。对于一次性的批量任务差别不大,但如果你每周做 5 次批量操作——一个月下来能省 30-50 元。

个人开发者月度预算建议

根据使用强度,给出三个档次的预算参考:

使用强度月任务量推荐配置月费用(约)
轻度(业余项目、偶尔使用)30-50 次对话V4 Flash 为主5-10 元
中度(日常开发辅助)100-200 次对话V4 Flash 90% + V4 Pro 10%15-30 元
重度(全栈开发、多项目管理)300-500 次对话V4 Flash 80% + V4 Pro 15% + Opus 5%40-80 元

成本 vs 时间思考:一个思维练习——如果你用 V4 Pro(0.3 元/次)替代 V4 Flash(0.05 元/次)处理一个任务,多花了 0.25 元,但节省了 15 分钟的反复纠正和重试时间。假设你为自己定的时薪是 100 元,15 分钟 = 25 元。省了 24.75 元。在关键任务上,贵的模型往往更便宜——因为它减少了你审查、纠正、重试的时间。

模型选择的三个原则

  1. 默认从便宜的模型开始:大部分任务的复杂度不需要最强模型。用 V4 Flash 试试——如果一次通过,省了钱;如果需要第二次尝试,再考虑切 V4 Pro。

  2. 错误成本决定模型投入:如果这个任务失败了会导致什么后果?如果是"少了一个注释"——无所谓,用 Flash。如果是"用户的支付数据可能出错"——无论花多少 token 都值得最强的 Opus。

  3. 复杂度和文件数成正比时升级模型:当一个任务涉及 5 个以上文件的协调修改时,模型需要在改文件 A 时记住文件 B 中的细节——这需要更强的推理能力。触及这个阈值时,切 V4 Pro 或以上。

31.4 批量任务策略

效率优化的第三个维度是批量思维:不要把可以合并的事情拆成多次对话。每次开启新对话都有"冷启动成本"——Claude 需要重新加载项目文件、理解任务背景、建立工作状态。把同类的、共享上下文的任务放在一起批量处理,能显著减少这种重复成本。

上下文复用:Prepare Once, Ask Many

在一个对话中完成一组相关的多个操作,而不是为每个操作开启新对话:

# ❌ 三次独立的对话——每次都重新加载、重新理解
对话 1:"给 User.ts 中的 5 个函数添加 JSDoc 注释"
对话 2:"给 Post.ts 中的 8 个函数添加 JSDoc 注释"
对话 3:"给 Comment.ts 中的 6 个函数添加 JSDoc 注释"

# ✅ 一次对话、批量处理——加载一次,理解一次,连续执行
对话:"在理解 src/models/ 结构的基础上,请依次为以下文件的所有公开函数添加 JSDoc:
 1. src/models/User.ts
 2. src/models/Post.ts
 3. src/models/Comment.ts
 每个文件完成后 pause,等我确认再继续下一个。"

三个文件共享同一个模型类结构(field → type → validation),Claude 在第一个文件中建立的"理解"可以直接复用到后两个文件。如果在三个独立对话中,Claude 每次都重新推断项目的类型约定和命名规范——不仅慢,而且可能出现不一致。

流水线(Pipeline)模式:Q1 输出 → Q2 输入

当一个任务的输出是下一个任务的输入时,在同一次对话中串联执行:

"请为 src/api/users.ts 梳理所有 API 接口(函数名 + 参数 + 返回值)。
 然后基于整理出的接口列表,为每个接口编写单元测试。"

Claude 的执行流程:
  1. [Read] 读取 users.ts
  2. 梳理出 5 个接口的完整签名
  3. 基于签名为每个接口设计测试用例
  4. [Write] 创建 users.test.ts

在同一个对话中,Claude 对 API 接口的理解是"新鲜"的——不需要第二次加载和重新理解。通过 /compact 在中间步骤压缩已经被使用过的上下文,为后续步骤腾出空间。

更复杂的流水线示例:

"实现用户搜索功能,分三个步骤:
 Step 1: 在 src/api/search.ts 中创建搜索 API 接口(接收 query + filters,返回分页结果)
 Step 2: 在 src/hooks/useSearch.ts 中封装搜索 Hook(管理 loading/error/results 状态)
 Step 3: 在 src/components/SearchBar.tsx 中实现搜索组件(输入框 + 下拉结果)
 每个 Step 完成后告诉我结果,经我确认再执行下一步。"

后台任务:长操作的异步处理

某些操作(如对整个代码库的全面分析、大量文件的批量修改)可能需要较长时间执行。这时可以使用后台任务让 Claude 在后台工作,你继续做其他事情:

# 让 Claude 在后台分析整个项目
"启动后台任务:扫描 src/ 下的所有 .ts 文件,分析每个文件的复杂度(行数、函数数、依赖数),
 输出一个按复杂度排序的列表,标注出复杂度最高的 10 个文件。
 结果保存为 src/docs/complexity-report.md。"

# 或者使用 /loop 定时检查
"/loop 2m /tasks"  # 每 2 分钟查看一次后台任务的状态

关于后台任务和 /loop 命令的详细用法,见第 19 章:命令系统进阶

并行 Agent 调度 vs 顺序执行

当你有多个互不依赖的子任务时,使用并行 Agent 分发(Subagent Dispatch)可以在等待一个 Agent 完成的同时让另一个 Agent 开始工作:

顺序执行(三次等待):
  Agent 处理 Auth 模块 ────→ 等待结果
                            Agent 处理 DB 模块 ────→ 等待结果
                                                      Agent 处理 UI 模块 ────→ 完成

并行分发(一次等待):
  Agent 1 ──→ 处理 Auth 模块 ──┐
  Agent 2 ──→ 处理 DB 模块  ──┼──→ 汇总审查 → 完成
  Agent 3 ──→ 处理 UI 模块  ──┘

并行分发的前提条件:

  • 三个子任务互不修改相同的文件(否则产生冲突)
  • 三个子任务没有逻辑依赖(Auth 不依赖 DB、DB 不依赖 UI)
  • 你有能力同时审查三个 Agent 的输出

如果子任务之间有依赖(如 DB 模块被 Auth 和 UI 依赖),那必须先完成 DB 模块,否则后续任务可能基于错误的基础。

并行代理调度的详细用法和配置见第 32 章:高级工作流

批量选择的决策框架

场景策略效率提升
3 个独立模块的同类操作一次对话串行完成30-40%(省去两次冷启动)
有依赖关系的多步操作一次对话流水线完成40-50%(省去重新加载上下文)
3 个真正独立的子任务并行 Agent 分发60-70%(三个 Agent 同时工作)
大量文件的同类操作后台任务不占用你的注意力时间

核心原则:能复用上下文就不要新建对话,能并行就不要串行,能后台就不要前台等待。但前提是子任务之间没有隐式依赖——如果存在依赖而你误判为独立,并行执行的结果可能互相矛盾。

31.5 并行工作流的组织

并行工作流是效率提升的顶级玩法——不仅是让 Claude Code 并行工作,更是让你自己管理多个并行的开发流。这是从"一个人用 AI 辅助工作"到"一个人管理多个 AI 工作流"的跨越。

多会话并行:一个开发者、三个工作流

在日常开发中,经常会同时面对多个独立的工作线。例如:

当前需要做的事情:
  1. Feature A:继续开发用户导出功能(前端 + API)
  2. Feature B:修复一个紧急的生产 Bug(登录超时)
  3. Code Review:审查同事提交的 PR #234

传统的做法:串行完成——先修 Bug(紧急),再开发 Feature A,最后 Review PR。
                          → 上下文频繁切换,效率低

多会话并行的做法:
  会话 1:Feature A 的开发
  会话 2:Bug 修复
  会话 3:PR Review
  → 三个会话各保持独立的上下文,互不干扰

在 VSCode 扩展中,每个会话有独立的对话历史和文件上下文。切换任务时,切换到对应的会话——不需要回忆"这个 Bug 我们上一次讨论到哪了?"——所有上下文完好保存。

多会话的组织建议

会话命名使用频率
主开发会话"Feature: 用户导出功能"每天 8-10 次
紧急修复会话"Hotfix: 登录超时 Bug #342"需要时随时切换
代码审查会话"Review: PR #234"每天 2-3 次
学习/探索会话"Exploration: 尝试新架构方案"每周 2-3 次
通用助手"General: 日常问答"每天多次

命名会话:不要保留 "Session 1" 这种默认名。好的命名让你在会话列表中一眼就能找到目标——尤其是在 10 个并发会话中。

Git Worktree 隔离并行开发

当多个工作流涉及修改相同的文件时,多会话会互相干扰——一个会话改动了一个文件,另一个会话也在同一个文件上做了不同的修改。Git Worktree 是解决这个问题的标准方案:

bash
# 主项目工作在 main 分支
git worktree add ../project-feature-a feature/user-export
git worktree add ../project-hotfix feature/fix-login-timeout

# 目录结构:
# ~/project/                 → 主项目(不动,或做小型日常修改)
# ~/project-feature-a/      → Feature A 的隔离开发环境
# ~/project-hotfix/         → Hotfix 的隔离开发环境

每个 Worktree 有独立的文件系统和 .git,但在同一个仓库下(共享提交历史、分支)。在 Worktree A 中让 Claude Code 重构 15 个文件,切换回主项目时你是干净的——没有未提交的变更污染工作区。

何时使用 Worktree

场景是否需要 Worktree
两个独立的新功能互不修改相同的文件不需要,多会话+同目录即可
两个功能会修改重叠的文件需要 Worktree 隔离
大规模重构可能破坏项目必须 Worktree 隔离
想在不稳定的分支上试验必须 Worktree 隔离
Code Review 不需要修改代码不需要

Claude Code 的 Worktree 模式通过 /worktree 或相关工具自动管理(详见第 32 章第 22 章中关于 Worktree 回退的讨论)。

Subagent 分发:一个人同时推进多个方向

Subagent 是 Claude Code 内置的并行工具——在一个对话中向多个子 Agent 分发独立的任务,等待它们分别完成后汇总结果。

场景:要为新项目搭建完整的目录结构和基础设施

主对话中的指令:
"请使用 Subagent 并行搭建以下模块,每个 Subagent 独立工作:

 Subagent 1: 搭建后端项目骨架
   - 初始化 Express.js 项目
   - 创建 src/routes/、src/models/、src/middleware/ 目录结构
   - 配置 TypeScript、ESLint
   - 添加基础的 app.ts 入口文件

 Subagent 2: 搭建前端项目骨架
   - 初始化 React + Vite 项目
   - 创建 src/pages/、src/components/、src/hooks/ 目录结构
   - 配置路由(react-router)
   - 添加基础的 App.tsx

 Subagent 3: 搭建数据库和配置
   - 创建 database schema 文件(SQL)
   - 配置环境变量模板(.env.example)
   - 创建 Docker Compose 配置

 三个 Subagent 完成后,汇总结果并输出项目初始化报告。"

Subagent 分发的核心价值:

  • 并行速度:三个 Agent 同时工作,总等待时间是单个 Agent 的 1/3
  • 上下文隔离:每个 Subagent 有独立的上下文,不会互相干扰
  • 质量一致性:由主对话统一审查三个输出,确保风格和约定一致

Subagent 的适用条件

  • 子任务之间互不依赖、互不修改相同的文件(和并行分发一样的约束)
  • 每个子任务有清晰的独立输出(如"创建一个目录结构"、"生成一个配置文件")
  • 你的需求描述足够精确,每个 Subagent 能独立理解要做什么(不需要主对话在中间纠正)

更详细的 Subagent 使用指南和编排策略见第 32 章:高级工作流

并行工作流的完整示例

以一个全栈功能为例,展示如何组织并行工作流:

项目:为博客系统添加"评论"功能

并行组织方案(4 个并发工作流):

┌─────────────────────────────────────────────────────┐
│                                                     │
│  Worktree 1(后端 API)                             │
│  分支:feature/comment-api                          │
│  会话 1:实现 Comment 数据模型 + API 路由            │
│          (src/models/Comment.ts,                    │
│           src/routes/comment.ts,                    │
│           src/middleware/auth.ts 更新)               │
│  负责人:你 + Claude Code (V4 Pro)                  │
│                                                     │
│  Worktree 2(前端组件)                             │
│  分支:feature/comment-ui                           │
│  会话 2:实现评论前端组件                            │
│          (src/components/Comment/*,                 │
│           src/pages/Post.tsx 集成)                   │
│  负责人:Subagent A (V4 Flash)                      │
│                                                     │
│  Worktree 3(测试)                                 │
│  分支:feature/comment-tests                        │
│  会话 3:编写评论功能的测试                          │
│          (src/__tests__/models/Comment.test.ts,     │
│           src/__tests__/routes/comment.test.ts,     │
│           src/__tests__/components/Comment.test.tsx) │
│  负责人:Subagent B (V4 Flash)                      │
│                                                     │
│  主会话(编排和审查)                                │
│  会话 4:协调进度、审查输出、合并                    │
│  负责人:你                                          │
│                                                     │
└─────────────────────────────────────────────────────┘

执行顺序:
  Day 1 上午:Worktree 1 完成后端 API(2 小时)
  Day 1 下午:Worktree 2 和 Worktree 3 并行启动(分别 1.5 小时)
  Day 1 傍晚:合并三个分支,解决冲突,集成测试(1 小时)
  
  总计:4.5 小时完成全栈功能(对比串行方式 8-10 小时)

这个工作流的效率提升源自三个并行层:

  1. Worktree 隔离:三个方向的代码修改互不干扰,可以同时进行
  2. Subagent 分发:前端和测试部分委托给 Subagent,你不必亲自跟踪每个文件
  3. 你的角色转换:从"自己写代码"变成"编排工作流 + 审查输出"——你同时管理三个工作线,但实际"动手"的部分只有后端 API

31.6 效率度量

效率优化如果没有度量,就变成了"感觉上快了"的主观判断。建立简单的度量体系,你才能知道哪些优化真正有效,哪些只是心理安慰。

度量什么:四个核心指标

维度度量指标如何记录
速度单个任务从"提出需求"到"验证通过"的时间简单计时(开始 → 完成)
质量产出中需要你亲自修正的次数和程度"0 修改接受" vs "改了 3 处" vs "重写了大半"
决策质量Claude 的方案有多少次你选择调整方向"照单全收" vs "方向对但细节改" vs "方向错了重来"
学习你是否学到了新东西(新的模式、新的思路)每周回顾时记录 1-3 个学到的东西

每日检查(2 分钟)

每天结束时快速记录:

今天完成了 __ 个任务(使用 Claude Code 辅助)
其中:
  - __ 个任务一次通过(无需修正)
  - __ 个任务有小改(改了几个文件的部分逻辑)
  - __ 个任务有大改(重写了大部分)
  - __ 个任务 Claude 无法完成(你手动接手)

感觉今天最顺畅的时刻:_______
感觉今天最卡顿的时刻:_______

明天想尝试不同的:_______

每周回顾(15 分钟)

基于每日检查的数据,每周做一次回顾:

本周数据汇总:
  - 完成任务:__ 个
  - 一次通过率:__%
  - 平均任务粒度:__ 个文件/任务
  - 使用的模型分布:V4 Flash __ 次 / V4 Pro __ 次 / Opus __ 次
  - 估计总费用:__ 元

反思:
  1. 哪个任务特别适合让 Claude 做?(记录下来作为模板)
  2. 哪个任务特别不适合?(记录下来,以后手动处理或改变策略)
  3. 任务粒度是否在"黄金区间"(3-8 个文件)?是否需要调整拆分策略?
  4. 模型选择是否合理?有没有"过度使用 Opus"或"该用 V4 Pro 却用了 Flash"的情况?

下周行动:
  1. ___
  2. ___
  3. ___

效率提升的迭代循环

度量 → 发现问题 → 调整策略 → 再度量 → 确认改善(或再调整)

示例迭代:
  第 1 周:度量发现"一次通过率"只有 40%(太低了)
          → 分析原因:任务粒度过大(平均 10 个文件/任务)
          → 调整策略:严格控制在 5 个文件以内
  
  第 2 周:"一次通过率"提升到 65%
          → 继续调整:发现 V4 Flash 处理复杂重构时的一次通过率低
          → 调整策略:3 个文件以上的重构自动切 V4 Pro
  
  第 4 周:"一次通过率"达到 80%,平均任务时间从 15 分钟降到 8 分钟

关键不是每周都有巨大的突破,而是持续地发现问题并调整。一个月后回顾,你会发现自己的使用效率相比第一个月有 2-3 倍的提升。

分享你的经验

效率优化是一个社区驱动的过程。你发现的"一个技巧让你效率提升了 30%"——对其他用户可能是从未想过的突破点。反之亦然。

与团队或社区分享:

  • 你的任务拆分模板("这样拆最有效")
  • 你的模型选择经验("这种任务用 V4 Flash 就够了")
  • 你的度量数据("这周一次通过率提升了 10%,因为...")

这些分享不仅帮助别人,也帮助你整理和沉淀自己的经验。Claude Code 的用户社区(GitHub Discussions、Discord 频道等)是分享和获取经验的好地方。

31.7 本章小结

本章是第六篇"方法论篇"的最后一章,建立了 Claude Code 效率优化的完整框架。效率不是靠"按得更快",而是靠五个维度的系统优化:

  1. 任务粒度:找到"黄金区间"——一个 Prompt 一个清晰目标,3-8 个文件的改动。太少浪费启动成本,太多 Claude 迷失方向。大任务按模块、按层次、按依赖关系拆分。

  2. 上下文预算管理:将上下文窗口视为可分配的资源,用 30-40-30 预算策略控制各部分的比例。识别上下文即将耗尽的信号(重复问题、忘记约定、回复截断),在正确时机使用 /compact/clear。DeepSeek V4 Pro 的 1M 上下文是巨大优势,但大窗口不等于不需要管理。

  3. 模型选择经济学:90% 日常任务用 V4 Flash(低成本快速),10% 复杂任务用 V4 Pro / Opus(高质量确保)。在批量任务中采用"Flash 做初稿,Pro 做终审"的两阶段策略。记住核心原则:默认从便宜的模型开始,但错误成本高时毫不犹豫切最强模型——贵的模型往往更便宜,因为它减少了你的纠正时间。

  4. 批量任务策略:共享上下文的任务放在一次对话中完成(冷启动成本的节省);有依赖关系的任务用流水线模式串联(前一步的输出作为后一步的输入);真正独立的子任务用并行 Agent 分发(同时推进多个方向)。

  5. 并行工作流组织:多会话保持不同任务线的独立上下文;Git Worktree 在需要隔离文件系统时防止冲突;Subagent 分发让你同时管理多个工作线而不必亲自跟踪每个文件。

  6. 效率度量:记录速度(任务时间)、质量(一次通过率)、决策质量(方案采纳率)、学习(每周收获)。通过每周回顾识别问题、调整策略、在下周验证改进。效率优化的本质是一个持续迭代的反馈循环。

从方法论篇到精通篇

本章是方法论篇的收官。回顾方法论篇的完整脉络:

  • 第 28 章:Prompt 工程 — 如何写出精确、高效的指令
  • 第 29 章:让 AI 理解你的项目 — 如何设计 AI 友好的项目结构
  • 第 30 章:人机协作模式 — 建立与 AI 的高效分工和信任
  • 第 31 章(本章):效率优化策略 — 在正确方向上把效率做到极致

这四章构建了 AI 编程方法论的完整框架:说清楚(Prompt)→ 准备好(项目结构)→ 配合好(人机协作)→ 做到位(效率优化)。掌握了这四层,你已经不是"使用 Claude Code"——你已经建立了一套以 Claude Code 为核心的、可度量、可优化的开发工作流。

下一步:第七篇"精通篇"将带你进入 Claude Code 的高级工作流——多 Agent 编排、自定义扩展开发、团队推广策略、模型深度对比和前沿趋势探索。这些是少数 Claude Code 专家用户掌握的领域——也是真正的生产力飞跃的起点。


章节小结:本章建立了 Claude Code 效率优化的完整方法论,涵盖任务粒度拆分、上下文预算管理、模型选择经济学、批量与并行策略、以及效率度量和持续迭代。核心思想是:效率不是碰运气,而是有意识地管理每个维度的投入产出比——拆对粒度、管好上下文、选对模型、组好工作流、记好数据。这五者的协同效应,远比任何单一技巧的改进更大。