> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# /btw、/fork 和 /rewind 简明教程
- URL: https://www.hubwiz.com/blog/a-concise-tutorial-to-btw-fork-and-rewind/
- Published: 2026-03-20T11:49:40.000Z
- Updated: 2026-03-20T11:49:40.000Z
- Description: 使用Claude Code的/btw、/fork和/rewind命令消除上下文污染
- Author: admin
- Tags: TOOL, CLAUDE CODE, #Import 2026-10-14 14:41

学习如何使用Claude Code的/btw、/fork和/rewind命令消除上下文污染、管理并行会话并优化AI编码工作流。包含示例和决策框架的完整指南。

每个认真使用Claude Code的开发者都撞过同一堵墙。你在看着AI重构一个复杂模块。一个问题突然出现在脑海中，于是你输入了它。Claude停下来，回答，然后试图继续。但现在你的上下文窗口中包含了与任务无关的几百个token的问答。

这就是**上下文污染**：AI辅助编码生产力的无声杀手。直到现在，还没有干净的方法来避免它。

随着2026年3月10日Claude Code v2.1.72的发布，Anthropic推出了`/btw`，一个看似简单却从根本上解决这个问题的命令。结合现有的`/fork`和`/rewind`命令，它为开发者提供了一个完整的工具包，用于管理AI辅助开发中最容易被忽视的方面：**上下文卫生**。

本文详细解析所有三个命令，展示何时使用每个命令，并演示它们如何组合成工作流，从第一次提示到最后一次提交保持会话高效。

## 1、为什么上下文窗口优化对AI编码很重要

把LLM的上下文窗口想象成会议室里的白板。你写在上面的每个笔记、问题和答案都会在会议剩余时间里一直存在。如果白板一半被无关讨论覆盖，团队实际工作的空间就少了，更糟的是，那些无关的笔记不断吸引每个人的注意力，从重要事项上分散注意力。

在Claude Code中，上下文窗口的工作方式相同。每个token都影响模型的下一个输出。当你在主任务上下文中注入不相关的问题和答案时，会发生两件事：

1. **Token预算缩小。** 每次Q&A交换消耗的空间本可以容纳文件内容、代码分析或实现计划。
2. **信号降级。** 模型在处理信号的同时处理噪音，这可能降低实际任务的输出质量。

在典型的长时间运行会话中，几个随意的问题可以消耗20-30%的可用上下文。这不仅是浪费空间。它积极地降级了Claude在会话剩余时间生成的每个响应。

## 2、/btw命令：临时侧通道

`/btw`（"by the way"的缩写）在2026年3月10日的Claude Code v2.1.72中发布，解决了上下文污染最常见的来源：随意的中途问题。

### 工作原理

输入`/btw`后跟你的问题。Claude Code会生成一个临时的临时代理，它：

1. 通过主会话的提示缓存读取当前对话上下文
2. 基于Claude已经看到和决定的一切回答你的问题
3. 在终端中内联显示答案
4. 自我销毁。问题和答案永远不会进入主对话历史

主会话在后台继续。零中断。零上下文污染。

### 为什么这很重要

`/btw`背后的关键洞察是**大多数中途问题是关于理解，而不是改变方向**。你想知道为什么Claude选择了某种方法、某个库做什么、或者某个模式如何工作。这些问题对你作为开发者很重要，但与Claude正在进行的任务无关。在`/btw`之前，你有两个糟糕的选择：中断会话（污染上下文）或启动单独的会话（丢失所有上下文）。现在你有了第三个选项，既能保留你的理解，又能保持Claude的专注。

### 实践中

你让Claude将API从Express迁移到Fastify。Claude正在重写路由处理器，你想知道中间件策略。

**没有/btw：**

```
你：等等，你如何处理Express中间件？你把它们转换成Fastify插件了吗？

Claude：好问题！我正在使用fastify-plugin包装器将每个Express中间件转换为Fastify插件。这是我的方法...
[400+ token永久添加到上下文]
Claude：现在，我刚才说到哪了...让我继续处理路由处理器。

```

**使用/btw：**

```
/btw 你如何处理Express中间件迁移？

[btw] 主会话正在使用fastify-plugin将Express中间件转换为Fastify插件。每个中间件都用fp()包装并通过fastify.register()注册。错误处理使用Fastify的setErrorHandler。
[主会话继续不受干扰，上下文不变]

```

相同的信息。零上下文成本。

### 为什么它便宜

`/btw`代理利用主会话的提示缓存。你没有重新发送整个上下文或开始新的对话。临时代理搭载在已处理的token上，使每次`/btw`查询的成本只是正常轮次的一小部分。对于关注API支出的团队来说，这很重要：你可以在每个会话中检查Claude的进度数十次，而不会产生有意义的成本影响。

### 设计约束

- **仅单轮**：一个问题，一个答案。没有后续。
- **只读**：不能编辑文件、运行命令或创建工件。
- **无工具访问**：不能读取主会话未见过的文件。

这些约束是有意的。它们使`/btw`快速、便宜和安全。如果你的问题需要不止一个答案，或者你需要Claude实际做某事，使用`/fork`。

## 3、/fork命令：用于深度探索的并行会话

有时理解是不够的。你需要Claude读取额外的文件、生成图表、原型化替代方法或运行命令测试理论。`/btw`不能做任何这些。`/fork`可以。

### 工作原理

Forking创建一个继承分支点之前完整对话历史的新会话。原始会话保持不变。

**会话内：**

```
/fork

```

**从CLI**（在单独终端中打开很有用）：

```
claude -r "session-name" --fork-session

```

VSCode扩展对fork的支持在v2.1.19中发布，所以你也可以从编辑器的命令面板触发它。

### 为什么Forking比从头开始好

当你启动新的Claude Code会话时，你会丢失所有上下文。Claude读过的文件、做出的决定和识别的模式都消失了。Fork保留了所有这些。它就像复制一个运行中的进程。Fork从原始会话所在的位置开始，完全了解已发生的一切。这意味着你可以立即提出深入问题或探索替代方案，而无需花费轮次让Claude了解当前状态。

### 实践中

你正在构建实时通知系统。Claude正在实现WebSocket，但你想知道Server-Sent Events。

```
# 终端2 - fork会话
claude -r "notifications-feature" --fork-session

# 在fork中：
你：使用SSE而不是WebSocket原型化这个通知系统。比较复杂度。
Claude：[创建SSE文件，分析权衡，生成比较]

```

同时，原始会话继续WebSocket实现。你现在有两种并行方法可以比较，且任何会话的上下文都没有被另一个污染。

### 何时/fork胜过/btw

- **问快速问题：** 使用`/btw`——更便宜、更快、零上下文成本
- **读取Claude未见过的文件：** 使用`/fork`——`/btw`没有工具访问
- **生成图表或工件：** 使用`/fork`——`/btw`是只读的
- **原型化替代方法：** 使用`/fork`——需要完整会话能力
- **运行命令测试某事：** 使用`/fork`——`/btw`不能执行命令

权衡是直截了当的：`/btw`更便宜更轻量，`/fork`更强大。根据你的问题需要选择，而不是习惯。

## 4、/rewind命令：外科手术式状态恢复

`/rewind`在2025年9月29日引入，是当Claude走上错误道路时你使用的命令。与`/btw`（防止污染）和`/fork`（隔离探索）不同，`/rewind`主动移除已存在的坏上下文。

### 工作原理

Claude Code在Claude的每次更改前创建检查点。通过以下方式激活rewind：

- 输入`/rewind`
- 按**Esc**两次

然后选择要恢复的内容：

### Rewind选项

- **仅代码：** 代码被还原，对话保留
- **仅对话：** 代码保留，对话回滚
- **两者：** 代码被还原且对话被回滚

### 为什么Rewinding比争论好

当Claude误解你的需求时，自然的本能是解释错误："不，我不是指X，我是指Y。原因是..."这创建了一个消耗大量上下文的纠正链。错误的方法留在对话中（浪费token），纠正也留下（更多token），Claude必须调和冲突指令（降低质量）。

Rewinding完全消除了这个问题。你回滚到错误发生前，提供更清晰的提示，Claude就像错误从未发生一样继续。上下文窗口只包含正确、相关的信息。

### 实践中

你通过`/btw`检查Claude的缓存实现：

```
/btw 你正在实现什么缓存策略？

[btw] 使用Redis的直写缓存，5分钟TTL，URL作为缓存键。

```

这对用户特定端点是错误的。不是在内联解释问题，而是rewind：

```
[Esc + Esc]
> Rewind代码和对话

你：实现缓存层。约束：
- 用户端点：缓存键中包含用户ID，2分钟TTL
- 公共端点：仅URL键，5分钟TTL
- 两者都使用Redis

```

干净的开始。正确的方法。零上下文浪费。

### 使用总结进行上下文压缩

对于长时间运行的会话，`/rewind summarization`将对话压缩为摘要并重新开始：

```
/rewind summarization

```

这释放了大部分上下文窗口，同时保留关键决策。可以将其视为归档已完成的工作。结果被保留，但逐步细节不再消耗活动上下文。这对于推动上下文限制的多阶段项目至关重要。

### 注意

`/rewind`检查点系统只跟踪Claude的更改。你的手动编辑和bash命令不包括在内。

## 5、决策框架：使用哪个Claude Code命令

当你在会话中间需要决定使用哪个工具时，使用这个流程图：

快速参考：命令选择指南

- **快速问题：** 使用`/btw`——成本非常低，无上下文影响
- **需要文件/工具访问：** 使用`/fork`——中等成本，单独会话
- **探索替代方案：** 使用`/fork`——中等成本，单独会话
- **错误方向：** 使用`/rewind`——免费，移除污染
- **膨胀的上下文：** 使用`/rewind summarization`——免费，压缩历史
- **小错误：** 使用**Esc + Esc**——免费，回滚上次更改
- **非破坏性检查：** 使用`/btw`——成本非常低，无上下文影响

## 6、高级Claude Code工作流模式

这些模式结合三个命令，在现实开发场景中实现最大效果。

### 监控-纠正循环

最常见的高级模式结合了`/btw`用于监控和`/rewind`用于纠正。

1. 开始复杂任务
2. 定期使用`/btw`检查Claude的方法
3. 如果方法错误，`/rewind`到错误发生前
4. 用纠正后的指令重新提示
5. 恢复`/btw`监控

这个循环保持你的上下文窗口外科手术般干净。你从不与Claude争论，从不在内联解释错误，从不在上下文中累积失败的方法。结果是一个只包含任务描述和正确实现工作的上下文窗口。

### 探索分支

对于你想在提交前看到实际代码的架构决策：

1. 在主会话中到达决策点
2. Fork：`claude -r "main-task" --fork-session`
3. 在fork中探索选项A
4. 如果需要，再次fork原始会话用于选项B
5. 跨fork比较结果
6. 用获胜方法继续主会话

这个模式在项目早期特别有价值，当你做出以后会很昂贵才能逆转的决策时。两三个forked会话的成本与重构糟糕架构选择的成本相比微不足道。

### 上下文压缩管道

对于跨越多个项目阶段的多小时会话：

1. 完成项目的第1阶段
2. 使用`/rewind summarisation`压缩第1阶段
3. 保留第1阶段决策，以干净上下文开始第2阶段
4. 对每个后续阶段重复

这在原本会超过上下文窗口的工作中保持会话连续性，在整个过程中保持高信噪比。

### 用于自动化的脚本化Fork

将forking集成到开发脚本中以实现并行工作流：

```
#!/bin/bash
# 主会话继续时进行并行代码审查
claude -r "$SESSION_ID" --fork-session \
  -p "审查到目前为止的更改。检查安全问题、性能问题和缺失的错误处理。将审查写入review.md"

```

这创建了一个一次性的审查会话，检查主会话的工作而不影响它。

## 7、成本比较：上下文污染 vs 干净工作流

**会话中的直接问题：**

- 上下文成本：高（永久性）
- 美元成本：高（更长的上下文）
- 质量影响：负面（噪音）

**`/btw`侧通道：**

- 上下文成本：零
- 美元成本：非常低（缓存）
- 质量影响：中性

**`/fork`并行会话：**

- 上下文成本：零（单独）
- 美元成本：中等（新会话）
- 质量影响：中性

**`/rewind`纠错后：**

- 上下文成本：负（释放空间）
- 美元成本：免费
- 质量影响：正面（移除噪音）

最昂贵的模式是大多数开发者默认的：在主会话中问问题，消耗上下文，然后在每个后续轮次为膨胀的上下文付费。讽刺的是，"免费"的问题实际上在会话生命周期内成本最高。

## 8、结束语

Claude Code的`/btw`、`/fork`和`/rewind`形成了一个完整的上下文卫生工具包，每个解决不同方面的问题：

- **`/btw`** 在污染发生前预防它。用于每个不需要工具访问的中途问题。
- **`/fork`** 隔离探索。当你需要全功能调查而不污染主会话时使用。
- **`/rewind`** 在污染发生后移除它。用于航向纠正和上下文压缩。

从Claude Code中获得最大收益的开发者不是写最好提示的人。他们是像管理稀缺资源一样管理上下文窗口的人。上下文窗口中的每个token要么是信号要么是噪音，这三个命令给了你最大化信号的工具。

对每个不需要工具访问的问题使用`/btw`。需要探索时fork。事情出错时rewind。你的上下文窗口会感谢你。

---

原文链接: [Mastering Claude Code's /btw, /fork, and /rewind: The Context Hygiene Toolkit](https://medium.com/@richardhightower/mastering-claude-codes-btw-fork-and-rewind-the-context-hygiene-toolkit-5ceefa59623d?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处