Logo Vincent
返回文章列表

Claude Code /rewind 详解:AI 改错了?一键回退

Claude
Claude Code /rewind 详解:AI 改错了?一键回退

为什么需要 /rewind

你让 Claude 重构一个模块,它改了 5 个文件。你看了一眼——改得不对,方向完全错了。

怎么办?手动 git checkout 每个文件?如果你还没 commit,连 diff 都不好找。

或者另一种情况:Claude 前面几轮回答都很好,但最后一轮走偏了。你想回到”走偏之前”那个节点,重新开始。

/rewind 就是你的后悔药。 一个命令,把代码和对话回退到任意历史节点。

/rewind 是什么

/rewind 是 Claude Code 的代码与对话回退命令(别名 /checkpoint)。它能把你的文件状态和对话历史恢复到会话中任意一个之前的时间点。

输入:

/rewind

会弹出一个交互式的消息选择器,让你选择”回到哪里”。

它是怎么记住历史的

这里有一个巧妙的机制:文件快照系统

每次 Claude 完成一轮回复后,Claude Code 会自动对当前所有被它修改过的文件做一次快照。这个过程完全透明,你感知不到。

具体来说:

  • 触发时机:每次 Claude 回复完成后
  • 快照内容:所有被 Claude 编辑、创建或删除的文件
  • 存储位置~/.claude/file-history/{sessionId}/
  • 版本管理:每个文件按版本编号(v1、v2、v3…)
  • 上限:每个会话最多 100 个快照,超出后淘汰最旧的

文件备份是增量的——只有实际发生变化的文件才会创建新版本。如果某个文件在两轮之间没变,直接复用上一个版本的备份,不浪费空间。

回退的四种模式

选好要回退的时间点后,你有四个选择:

1. 同时回退代码和对话

Restore code and conversation

最常用的模式。 文件恢复到选定时间点的状态,同时删除该时间点之后的所有对话消息。对话会”分叉”——你可以重新开始那个时间点之后的讨论。

2. 只回退对话

Restore conversation

只删除选定时间点之后的对话消息,文件不动。适合你觉得 Claude 后面的回答不好,但代码改动你想保留的情况。

3. 只回退代码

Restore code

只恢复文件到选定时间点的状态,对话不动。适合你想保留对话上下文(比如 Claude 的分析过程),但代码改动需要撤销的情况。

4. 从这里开始总结

Summarize from here

选定时间点之后的消息会被压缩成一条总结消息。既节省上下文空间,又保留了关键信息。

操作界面

/rewind 的交互体验设计得很直观。

第一步:选择回退点

屏幕上会列出你的对话历史,每条消息都会显示:

  • 消息内容摘要
  • 代码变更统计(改了几个文件,增删了多少行)
  • 如果只改了一个文件,显示文件名

用上下箭头选择,Enter 确认。

第二步:确认回退方式

选好时间点后,显示确认界面:

  • 你选的是哪条消息
  • 会恢复几个文件
  • 有多少行代码变更
  • 选择回退模式(代码+对话、只代码、只对话、总结)

底部有一行提醒:

⚠️ Rewinding does not affect files edited manually or via bash

什么会被回退,什么不会

这一点很重要,务必理解:

会被回退的

  • Claude 通过文件编辑工具修改的文件(FileEditTool)
  • Claude 通过文件写入工具创建的文件(FileWriteTool)
  • Claude 删除的文件(从备份恢复)

不会被回退的

  • 手动编辑的文件
  • 通过 Bash 命令修改的文件(比如 sedawk
  • 外部工具或 IDE 做的修改

简单记:只有 Claude 的”官方”文件操作才会被追踪和回退。 如果 Claude 用 Bash 工具执行了 sed -i 来修改文件,这个改动不在 rewind 的追踪范围内。

文件备份机制

稍微展开说一下技术细节,帮助你理解它的可靠性。

备份文件格式

~/.claude/file-history/{sessionId}/
├── abc123def4567890@v1    # 某个文件的第 1 个版本
├── abc123def4567890@v2    # 第 2 个版本
├── abc123def4567890@v3    # 第 3 个版本
├── f1e2d3c4b5a69788@v1    # 另一个文件的第 1 个版本
└── f1e2d3c4b5a69788@v2

文件名是原始路径的哈希值,加上版本号。

变更检测

Claude Code 不是每次都盲目备份。它会:

  1. 检查文件的 stat 信息(大小、修改时间)
  2. 如果 stat 有变化,读取文件内容做字节级比对
  3. 只有真正变化了的文件才创建新版本

权限保留

恢复文件时,不仅恢复内容,还恢复文件权限(通过 chmod)。所以可执行脚本回退后仍然是可执行的。

实际使用场景

场景 1:重构方向错了

你让 Claude 把一个类重构成函数式风格。它改了 5 个文件,你看了之后觉得还是原来的好。

/rewind

选择重构之前的那条消息 → Restore code and conversation → 回到起点重新来。

场景 2:只想撤销最后一步

Claude 帮你改了三轮,前两轮很好,第三轮改坏了。

/rewind

选择第三轮之前的消息 → Restore code and conversation → 保留前两轮的成果。

场景 3:代码没问题,对话要重来

Claude 的代码改动是对的,但后续的对话走偏了,你想从某个节点重新引导。

/rewind

选择消息 → Restore conversation → 文件保持不变,对话从选定点重新开始。

场景 4:上下文太长了

会话太长,上下文快满了。你想保留关键信息但压缩历史。

/rewind

选择一个合适的节点 → Summarize from here → 后续消息被压缩成总结。

开启和关闭

文件快照系统默认是开启的,你不需要做任何配置。

如果出于性能或隐私考虑想关闭:

# 环境变量关闭
export CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING=1

或者在全局配置中设置 fileCheckpointingEnabled: false

关闭后,/rewind 仍然可以回退对话,但无法恢复文件。

/rewind vs git

你可能会想:我有 git 啊,为什么还需要 /rewind?

特性/rewindgit
粒度每轮对话每次 commit
需要提前 commit不需要需要
追踪未 commit 的改动自动追踪不追踪
能回退对话不能
追踪手动编辑不追踪追踪

简单说:git 是长期版本管理,/rewind 是会话内的即时撤销。 两者互补,不冲突。

最佳实践:在每个重要节点先 commit,然后用 /rewind 处理 commit 之间的细粒度回退。

写在最后

/rewind 的核心价值是给你犯错的勇气

和 AI 协作写代码,你不可能每次都给出完美的指令。Claude 也不可能每次都理解得准确无误。有了 /rewind,你可以大胆尝试:让 Claude 试一个激进的方案,不满意就回退;让它走一条冒险的路,走不通就退回来。

没有后悔药的 AI 编程是不完整的。

相关推荐

AI-first 创业公司,为什么只需要一种编程语言?

技术架构越简单 = AI Coding 效率越高。从 Java 的"防人"设计到 TypeScript 全栈通吃,聊聊 AI 时代创业公司的编程语言选择。

cc-ping:一行命令 Ping 所有 Claude Code 配置

用多个 Claude Code API Key 或中继?cc-ping 帮你管理配置、一键切换,还能并行 Ping 所有节点比速度。

震惊!程序员用这个工具,4分钟干完95分钟的活!效率暴涨24倍

躺床上发3条消息,4分钟搞定3个项目。传统方式需要95分钟,这就是冷兵器和热兵器的差距。

CCBot - 研发提效 24 倍

通过 IM 机器人控制 Claude Code,3 个项目 4 分钟全部搞定。传统编程需要 95 分钟,效率提升 24 倍。

Claude Code /add-dir:被低估的 Monorepo 神器

Claude Code 默认只能看到当前目录。/add-dir 打破这个限制——分享我每天跨 5 个仓库使用的经验。

Claude Code 省 Token 小技巧:感叹号的妙用

一个简单却容易被忽略的技巧——用感叹号直接执行命令,省 token、提速度、更可控。

我做了个机器人,让团队在飞书里用 Claude Code

CCBot 让你的团队在飞书群聊里直接用 Claude Code——不需要终端、不需要 SSH。开源、自部署、五分钟搞定。

Claude Code /btw 命令详解:不打扰主线的快问快答

详细介绍 Claude Code 的 /btw 命令——它是什么、怎么用、什么时候该用,以及它和子代理、/compact 的区别。

Claude Code /compact:释放上下文,不丢进度

任务做到一半上下文满了?/compact 帮你压缩对话继续干活——和 /clear、/rewind 的区别一次讲清。

Claude Code /config:一文搞懂所有可调设置

用 Claude Code 却从没打开过 /config?这篇带你逐项拆解——从权限模式到自动压缩,从主题切换到通知配置,帮你打造最顺手的 AI 编程环境。

Claude Code /context:你的上下文都被什么吃了?

对话到一半 Claude Code 说上下文不够了?/context 用一张可视化网格告诉你:上下文被什么占了、占了多少、怎么优化。

Claude Code /diff:这次对话改了什么,一目了然

Claude Code 帮你改了一堆文件,但你不确定到底改了什么?/diff 用交互式界面展示所有改动——既有 git 视角的全量 diff,也有按对话轮次拆分的逐步 diff。

Claude Code /fast:同样的 Opus,两倍速——值不值?

/fast 不会降级模型,还是 Opus,只是更快。什么时候该开、什么时候该关,以及实际体验差异。

Claude Code 引用外部知识的最佳实践:GitHub MCP + Context7

用 GitHub MCP 和 Context7 MCP 两个工具组合,解决 Claude Code 知识过时导致的代码错误问题。

Claude Code /hooks:让 AI 按你的规矩办事

想在 Claude Code 执行命令前自动检查?想在任务完成后自动通知?/hooks 让你用脚本、AI 甚至 HTTP 请求,在关键节点插入自定义逻辑。

Claude Code /init:10 秒自动生成 CLAUDE.md

别再手写 CLAUDE.md 了。看看 /init 自动生成的效果、怎么自定义输出,以及一个让 Claude Code 效率翻倍的小技巧。

Claude Code MCP:让 AI 连接 GitHub、数据库等一切工具

MCP 把 Claude Code 从代码阅读器升级为全栈 Agent。哪些 MCP 服务器值得装、配置怎么写,实测分享。

Claude Code /memory 详解:让 AI 真正记住你的项目

详细介绍 Claude Code 的 /memory 命令和记忆系统——CLAUDE.md 手动指令、Auto Memory 自动记忆、模块化规则,让 Claude 跨会话记住项目规范和个人偏好。

Claude Code /model:Opus、Sonnet、Haiku 怎么选?

不是每个任务都需要 Opus。怎么切换模型、哪个场景用哪个、怎么省 token 又不掉质量。

Claude Code /permissions:谁能干什么,你说了算

每次 Claude Code 要跑命令都弹窗问你?嫌烦又不敢全放开?/permissions 帮你精细控制每个工具的权限——该放的放,该拦的拦。

Claude Code /plan 详解:先想清楚再动手

详细介绍 Claude Code 的 /plan 命令和 Plan Mode——只读规划模式,让 Claude 先分析代码、制定方案,确认后再动手,避免复杂任务翻车。

Claude Code + Playwright MCP:AI 终于能"看见"页面了

一个 Modal 溢出的 bug,Claude Code 反复修了 5 次都没搞定。直到接入 Playwright MCP 让它真正看到页面,一次定位,一次修复。

Claude Code /resume 命令详解:别让对话白聊

详细介绍 Claude Code 的 /resume 命令——恢复历史对话、管理会话、实用技巧,让你的每一轮对话都不浪费。

Claude Code /review:让 AI 帮你做 Code Review

提了 PR 没人看?想在合并前多一道把关?/review 让 Claude Code 像一个资深开发者一样审查你的代码——还有 /ultrareview 和 /security-review 两个进阶选择。

Claude Code Skills 详解:打造你的专属命令库

详细介绍 Claude Code 的 Skills 功能——创建自定义斜杠命令、复用提示词模板、共享团队最佳实践,让 AI 编程更高效更一致。

Claude Code /stats:看看 AI 到底帮你写了多少代码

好奇 Claude Code 到底写了多少行代码?/stats 给你完整数据——token、编辑次数、工具调用,教你怎么看。

Claude Code /status 命令详解:一眼看清会话全貌

详细介绍 Claude Code 的 /status 命令——它是什么、怎么用、能看到哪些信息,以及它在日常工作流中的实际价值。

Claude Code /tasks 命令详解:后台任务尽在掌控

详细介绍 Claude Code 的 /tasks 命令——查看后台任务、管理并行 Agent、掌控长时间运行的进程,让多任务开发井井有条。

Claude Code /usage 命令详解:你的额度还剩多少

详细介绍 Claude Code 的 /usage 命令——查看用量、了解限额、避免突然被限速,让你对自己的额度心中有数。

Claude Code /vim:在 AI 编程助手里用 Vim 键位

习惯了 Vim 的操作方式?/vim 让你在 Claude Code 的输入框里用 hjkl 移动、dd 删行、ciw 替换单词——不用改变肌肉记忆。

Claude Code 使用指南:从安装到实战,一篇就够(2026)

用了半年 Claude Code 的经验总结——5 分钟安装配置、最常用的命令、CLAUDE.md 编写技巧,以及没人告诉你的实战心得。

Claude 全家桶:从聊天到写代码到自动办公,一文讲清楚

一篇文章带你了解 Anthropic 的 Claude 全家桶——Claude.ai、Claude Code、Claude Cowork,以及 Opus、Sonnet、Haiku 三大模型家族。

Claude Code /agents 详解:自定义 AI 子代理,各司其职

详细介绍 Claude Code 的 /agents 命令——查看、管理和创建自定义 Agent,让不同任务由专门的 AI 角色来执行,从代码探索到架构规划各司其职。

Claude Code /doctor 详解:一键诊断你的开发环境

详细介绍 Claude Code 的 /doctor 命令——自动检测安装状态、API 连接、MCP 配置、上下文用量等问题,帮你快速定位和修复环境故障。

Claude Code /effort 详解:控制 AI 思考的深度

详细介绍 Claude Code 的 /effort 命令——调节 Claude 的推理努力程度,在速度和质量之间找到最佳平衡点,让每一次对话都恰到好处。

Claude Code /cost 详解:你的 AI 编程到底花了多少钱

详细介绍 Claude Code 的 /cost 命令——实时查看会话 API 成本,了解各模型定价和 Token 消耗明细,让每一分钱都花得明明白白。

Claude Code /export 详解:把 AI 对话带走

详细介绍 Claude Code 的 /export 命令——将对话导出为文件或复制到剪贴板,方便分享、存档和复盘,让每一次有价值的对话都不浪费。

Claude Code /plugin 详解:给你的 AI 编程助手装插件

详细介绍 Claude Code 的 /plugin 命令——管理插件的安装、启用、禁用和更新,通过插件扩展 Claude Code 的命令、技能、Agent 和 Hook,打造你专属的 AI 编程工具链。

Claude Code /theme 详解:给你的终端换个好看的皮肤

详细介绍 Claude Code 的 /theme 命令——6 种预设主题 + 自动模式,支持深色/浅色、色盲友好、ANSI 兼容,60+ 色值覆盖终端全部 UI 元素。

Claude Code /insights 详解:用 AI 分析你自己用 AI 的方式

详细介绍 Claude Code 的 /insights 命令——五阶段数据分析流水线、七大洞察章节、多维度会话统计,用 Claude Opus 生成专属 HTML 使用报告。

Claude Code /rename 详解:给你的会话取个有意义的名字

详细介绍 Claude Code 的 /rename 命令——手动命名、AI 自动生成(Haiku 模型)、启动参数命名、Plan 模式自动命名,以及双标题系统与 Bridge 同步机制。

Claude Code settings.json 详解(一):配置文件在哪里、谁说了算

全面介绍 Claude Code 的配置文件体系——五个配置来源的路径、优先级规则、数组合并与单值覆盖的区别、企业管理设置的多种下发方式。

Claude Code settings.json 详解(二):permissions 权限系统全解析

深入解析 Claude Code 的 permissions 配置——allow/deny/ask 三类规则、通配符语法、MCP 工具权限、defaultMode 各模式含义,以及 additionalDirectories 的作用。

Claude Code settings.json 详解(三):hooks 钩子全解析

深入解析 Claude Code 的 hooks 配置——四种钩子类型、核心事件(PreToolUse/PostToolUse/Stop/Notification)、stdin/stdout 协议、exit code 语义,以及实用配置示例。

Claude Code settings.json 详解(四):env、模型、认证与其他实用字段

全面介绍 Claude Code settings.json 中的 env 环境变量注入、模型配置、身份认证辅助、Git 提交署名、会话清理、语言与界面、思考深度、自动更新、记忆系统等实用字段。

Claude Code Agent Loop:拆解 AI 编程助手的心脏

Claude Code 是怎么一步步理解你的需求、调用工具、自我修复的?从源码角度拆解 Agent Loop 的核心架构——流式响应、并行工具执行、自动压缩、错误恢复,一次讲透。

© 2026 vincentqiao.com . 保留所有权利。