/btw、/fork 和 /rewind 简明教程

使用Claude Code的/btw、/fork和/rewind命令消除上下文污染

/btw、/fork 和 /rewind 简明教程
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

学习如何使用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

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