命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
将对话和代码倒回到之前的点
/rewind 是 Claude Code 的会话检查点还原命令。它打开一个交互式菜单,列出当前会话中每一条你发出的 prompt,让你选择一个历史节点并对其执行「还原」或「摘要压缩」操作——既可以回滚文件内容,也可以回滚对话上下文,或两者同时回滚。
检查点由 Claude Code 自动创建,无需手动存档:每次你发送一条 prompt,系统就会在执行前对当前文件状态打一个快照。检查点跨会话持久化,可在恢复的对话中继续使用;会话过期后自动清理(默认 30 天,可配置)。
新增能力(v2.1.191):
/rewind现已支持从/clear执行之前的节点恢复对话。换言之,误按/clear清空上下文后,可以用/rewind回到清空前的对话状态——相当于为意外/clear提供了一道安全网。
官方文档确认的触发方式为
/rewind和Esc Esc快捷键。/checkpoint、/undo是本站路由保留的官方别名,均指向同一还原能力。
/rewind
在提示符输入框中直接键入并回车,即可打开检查点菜单。
Esc Esc (连按两次 Esc,且输入框为空时)
注意:如果输入框中已有文字,双击
Esc会清空输入框而不是打开菜单。被清空的文字会保存到输入历史中,按Up键可以召回。
打开菜单后,用上下箭头选中目标 prompt 节点,然后从以下六个动作中选一个:
| 动作 | 效果 |
|---|---|
| Restore code and conversation | 同时回滚代码文件和对话上下文到该节点 |
| Restore conversation | 仅回滚对话上下文,保留当前磁盘文件不变 |
| Restore code | 仅回滚文件内容,保留当前对话不变 |
| Summarize from here | 把该节点及其之后的对话压缩为 AI 摘要,释放 context 窗口空间;此前的对话保持完整 |
| Summarize up to here | 把该节点之前的对话压缩为 AI 摘要;该节点及其之后的对话保持完整,停留在对话末尾 |
| Never mind | 返回节点列表,什么都不做 |
执行「Restore conversation」或「Summarize from here」后,被选中节点的原始 prompt 文字会自动填回输入框,方便你直接重发或修改后重发。
两种 Summarize 操作均支持在执行前输入可选的指引文字,告诉 Claude 摘要时重点关注哪些内容。
/rewind 菜单本身是交互面板,通用导航键位如下:
| 键位 | 说明 |
|---|---|
Up / Down | 在 prompt 节点列表中移动 |
Left / Right | 在动作 tab 之间切换 |
Enter | 确认执行选中动作 |
Esc / Never mind | 退出菜单,不做任何更改 |
/resume)旧会话时仍然可用。/compact 的关系:两种 Summarize 动作是 /compact 的定向版本——/compact 压缩整段对话,而 /rewind 的摘要功能让你选择压缩哪一半。检查点快照只捕获通过 Claude 文件编辑工具层(Edit / Write 等)产生的改动,不是"磁盘上发生的任何变化"都能回滚。一条经验法则:
| 改动来源 | 是否被检查点追踪 | 能否被 /rewind 回滚 |
|---|---|---|
Claude 用 Edit / Write 工具改文件 | 是 | 能 |
Claude 用 Bash 跑 sed -i、> 重定向、rm/mv/cp 改文件 | 否 | 不能(绕过了工具层) |
| 你在外部编辑器手改、或别的并发会话写入 | 否(除非恰好触及当前会话已快照的同一文件) | 通常不能 |
也就是说:同样是"把 foo 改成 bar",Edit 工具改的能一键回退,而 ! sed -i 's/foo/bar/' file 改的回不去。让 Claude 改文件时尽量走编辑工具而非 sed -i/重定向,才能保证 /rewind 兜得住。
| 约束 | 原因 |
|---|---|
| Bash 命令产生的文件变更不被追踪 | rm、mv、cp、sed -i、> 重定向等 shell 命令绕过了 Claude 的文件编辑工具层,检查点机制无法捕获 |
| 当前会话之外的文件改动通常不被追踪 | 你在外部编辑器里的修改、或其他并发会话的写入,除非恰好与当前会话触及同一文件,否则不纳入快照 |
| 不能替代版本控制 | 检查点是「会话级本地撤销」,无法提供 Git 的分支、协作与永久历史 |
| 摘要操作不改变磁盘文件 | Summarize 系列动作仅压缩对话上下文,不回滚任何代码 |
| 原语 | 作用层面 | 文件回滚 | 对话回滚 | 持久性 |
|---|---|---|---|---|
/rewind | 会话内检查点 | ✅(仅 Claude 工具写入) | ✅ | 会话级,30 天 |
git checkout / git reset | 版本控制 | ✅(全部文件) | ❌ | 永久 |
/compact | 上下文压缩 | ❌ | 压缩(非回滚) | 会话内 |
claude --continue --fork-session | 会话分支 | ❌ | 保留原会话并开新分支 | 原会话完整保留;新分支会话持久性官方未明确(合理推论) |
当你想在保留原有会话完整性的前提下尝试另一种实现思路时,应使用
fork(claude --continue --fork-session)而非/rewind。
/rewind 回到 A,再试方案 Y,不会留下混乱的代码残留。/clear 后,用 /rewind 恢复到 /clear 之前的节点,把被清空的上下文找回来。Bash 副作用无法撤销:如果 Claude 执行了 rm -rf dist/ 或 mv src/old.ts src/new.ts,/rewind 对这些改动无能为力。对于有破坏性 shell 操作的任务,应在开始前手动 git commit 做安全点。
双击 Esc 失效:输入框非空时双击 Esc 只会清空输入框,不会打开 /rewind 菜单。确保先清空输入再双击,或直接键入 /rewind 命令。
Vim 模式下 Esc 语义不同:启用 Vim 编辑模式后,Esc 首先用于从 INSERT 切换到 NORMAL 模式,需要额外注意当前所处模式再操作。
摘要是压缩不是回滚:Summarize 动作不会恢复文件内容,仅压缩对话历史。如果需要文件回滚,应选择 Restore 系列动作而非 Summarize。