主线别被打断:/btw、/fork、/rewind 三个用法
Claude Code 一次会话拖久了,最亏的不是 token,是主线被旁边的问题带歪。问一句「这个目录是干什么的」,后面的实现就开始绕。想试另一个方案,又舍不得丢掉已经对齐的上下文。
这三个命令各管一件事:旁问、分叉、回退。它们都不是 /clear 的花式写法。
命令会随版本改。下面以官方文档和 2026 年仍公开的会话能力为准。你这台机器上没有某个命令时,在会话里输入 /help 或 / 搜一下,不要按旧教程硬敲。
/btw:问一句,别写回主线
长任务还在改文件,你突然想确认一个事实:抓取流程在哪、这个配置项谁在读、刚才那个假设对不对。
用 /btw 开一个旁路。它能读到主线程的上下文,但这段问答不会写回主线程。主线下一步该怎么走,不被这句旁问带跑。
/btw 这个项目的抓取流程是什么?Desktop 的本地会话和 SSH 会话里,有时还有快捷键能开 side chat。云端会话的入口以当前界面为准,没有就用命令。
不要用它做第二件正事。旁问问完就回到主线。真要换一条实现路线,用下面的 /fork。
/fork:从现在分出一条新路
讨论到一半,想试另一个方向,但原会话还要留着。/fork 从当前状态拉出一个新会话,原来的会话不动。之后两边的消息和执行各走各的。
和恢复历史不是一回事:
--continue//resume是回到旧会话接着聊。/fork是从眼下这一点复制出一条独立路线。
适合「这个方案先放着,我另开一条看用队列行不行」。不适合「刚才改坏了,我想回到改之前」——那是 /rewind。
分叉会继承父会话当时的上下文。分出去之后,两边不再同步。不要在两条线上改同一批文件,除非你已经用 worktree 把目录隔开。
/rewind:回到刚才,而且可以只退一边
Claude Code 会按你的提示做检查点,记下会话状态和文件编辑快照。这不是 git 提交,也代替不了版本库。它只方便你在这一次会话里退回去。
快捷键是连按两次 Esc,或直接输入:
/rewind文档里常见四个选项,你界面上的文案以当前版本为准:
- 回退代码和对话
- 回退对话,代码留下
- 回退代码,对话留下
- 从这一点开始压缩对话,腾出上下文
最有用的是第三条。试了一个方案,文件不满意,对话里已经说清了「这条路走不通」。回退代码、留下对话,就不用把需求再讲一遍,它也还记得刚才为什么失败。
/rewind 退不回 git 里已经提交的历史。检查点丢了、会话关了,还是靠分支和提交。
别和这两个搞混
| 你想做的事 | 用这个 | 不要用 |
|---|---|---|
| 长任务中途问一句,不影响下一步 | /btw | 直接在主线程里问 |
| 保留现在,另试一条路 | /fork | /clear 后再讲一遍 |
| 文件或对话退回刚才某一步 | /rewind | 指望 /compact 把改动撤销 |
| 这件活结束了,下一件不想带旧上下文 | /clear | /fork |
| 还要接着干,只是上下文太满 | /compact | /clear |
/clear 是丢掉这轮对话历史,项目记忆还在。/compact 是压历史、留关键决定。两个都不会单独撤掉某一次文件修改,也不会把一句旁问隔离出去。
一条能直接用的顺序
复杂功能先进计划模式,对齐再改。改到一半要核对一个事实,用 /btw。想对比两个实现,先 /fork,或者另开 worktree,不要在同一目录里分叉两套改动。试崩了,用 /rewind 只退代码。这轮做完再 /compact,把决定写进 CLAUDE.md 或自动记忆。