Files
claude-howto/zh/08-checkpoints/README.md
Luong NGUYEN 89e89d4aa3 feat(zh): add Chinese translations in zh/ directory
Add Chinese (Simplified) translations for all documentation, organized
under a dedicated zh/ directory that mirrors the English folder structure.

Co-authored-by: tanqingkuang <tanqingkuang@users.noreply.github.com>

Translations originally contributed by @tanqingkuang in #45.
Restructured from *-CN.md suffix pattern into zh/ directory to prevent
the EPUB builder (scripts/build_epub.py collect_folder_files) from
picking up Chinese files via glob("*.md") inside module folders.
2026-04-06 23:08:54 +02:00

293 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="../resources/logos/claude-howto-logo-dark.svg">
<img alt="Claude How To" src="../resources/logos/claude-howto-logo.svg">
</picture>
# Checkpoints 与 Rewind
Checkpoints 可以让你保存对话状态,并在 Claude Code 会话中回退到之前的时间点。无论你是在探索不同方案、修复错误,还是比较多个实现路径,这个能力都非常有用。
## 概览
Checkpoints 会保存会话状态,让你可以安全地试验和探索多种方案。它们本质上是当前对话状态的快照,包含:
- 所有已交换的消息
- 已做出的文件修改
- 工具使用历史
- 当前会话上下文
当你在尝试不同实现方式、从错误中恢复,或比较替代方案时,这个功能尤其好用。
## 核心概念
| 概念 | 说明 |
|---------|-------------|
| **Checkpoint** | 保存消息、文件和上下文的对话快照 |
| **Rewind** | 回到之前的 checkpoint并丢弃之后的更改 |
| **Branch Point** | 从同一个 checkpoint 出发,探索多个方案 |
## 访问 Checkpoints
你可以通过两种主要方式访问和管理 checkpoints
### 使用键盘快捷键
按两次 `Esc``Esc` + `Esc`)打开 checkpoint 界面并浏览已保存的 checkpoints。
### 使用 Slash Command
使用 `/rewind` 命令(别名:`/checkpoint`)快速进入:
```bash
# 打开 rewind 界面
/rewind
# 或者使用别名
/checkpoint
```
## Rewind 选项
回退时,你会看到一个包含五个选项的菜单:
1. **恢复代码和对话** - 把文件和消息都恢复到那个 checkpoint
2. **恢复对话** - 只回退消息,保留当前代码不变
3. **恢复代码** - 只回退文件修改,保留完整对话历史
4. **从这里开始总结** - 把从这里往后的对话压缩成 AI 生成的摘要,而不是直接丢弃。原始消息仍会保留在记录中。你也可以额外指定摘要应聚焦哪些主题。
5. **算了** - 取消并返回当前状态
## 自动 Checkpoints
Claude Code 会自动为你创建 checkpoints
- **每次用户提示** - 每次用户输入都会创建一个新 checkpoint
- **持久保存** - checkpoints 会跨会话保留
- **自动清理** - 30 天后自动清理旧 checkpoints
这意味着你随时都可以回到之前的任意节点,从几分钟前到几天前都可以。
## 使用场景
| 场景 | 工作流 |
|----------|----------|
| **探索不同方案** | 保存 → 试方案 A → 保存 → Rewind → 试方案 B → 比较 |
| **安全重构** | 保存 → 重构 → 测试 → 如果失败Rewind |
| **A/B 测试** | 保存 → 设计 A → 保存 → Rewind → 设计 B → 比较 |
| **错误恢复** | 发现问题 → Rewind 到最后一个正常状态 |
## 如何使用 Checkpoints
### 查看和回退
按两次 `Esc`,或者使用 `/rewind` 打开 checkpoint 浏览器。你会看到一个带时间戳的可用 checkpoint 列表。选择任意一个 checkpoint即可回退到该状态。
### Checkpoint 详情
每个 checkpoint 会显示:
- 创建时间
- 被修改的文件
- 对话中的消息数量
- 使用过的工具
## 实战示例
更多可直接参考的中文示例见 [checkpoint-examples.md](checkpoint-examples.md)。
### 示例 1探索不同方案
```text
User: 我们给 API 加一个缓存层吧
Claude: 我会为你的 API 端点添加 Redis 缓存……
[在 checkpoint A 处做出修改]
User: 其实我们先试试内存缓存
Claude: 我会 rewind 回去,探索另一种方案……
[用户按下 Esc+Esc 并回退到 checkpoint A]
[在 checkpoint B 处实现内存缓存]
User: 现在我可以比较两种方案了
```
### 示例 2从错误中恢复
```text
User: 把认证模块重构成 JWT
Claude: 我会重构认证模块……
[做出大量修改]
User: 等等,这把 OAuth 集成弄坏了。我们回去。
Claude: 我来帮你回退到重构之前……
[用户按下 Esc+Esc并选择重构前的 checkpoint]
User: 这次我们试一个更保守的方案
```
### 示例 3安全试验
```text
User: 我们试着把它改写成函数式风格
[在实验前创建 checkpoint]
Claude: [执行实验性修改]
User: 测试失败了。我们回退吧。
[用户按下 Esc+Esc 并回退到 checkpoint]
Claude: 我已经回退这些更改了。我们试另一个方案。
```
### 示例 4分支式探索
```text
User: 我想比较两种数据库设计
[记下 checkpoint命名为 "Start"]
Claude: 我先实现第一种设计……
[实现 Schema A]
User: 现在让我回去试第二种方案
[用户按下 Esc+Esc 并回退到 "Start"]
Claude: 现在我实现 Schema B……
[实现 Schema B]
User: 太好了,我现在有两个 schema 可以选择
```
## Checkpoint 保留策略
Claude Code 会自动管理你的 checkpoints
- 每次用户输入都会自动创建 checkpoint
- 旧 checkpoint 最多保留 30 天
- 系统会自动清理,避免存储无限增长
## 工作流模式
### 探索时的分支策略
当你在探索多个方案时:
```text
1. 从初始实现开始 → Checkpoint A
2. 尝试方案 1 → Checkpoint B
3. 回退到 Checkpoint A
4. 尝试方案 2 → Checkpoint C
5. 比较 B 和 C 的结果
6. 选择最佳方案并继续
```
### 安全重构模式
当你在做大改动时:
```text
1. 当前状态 → Checkpoint自动
2. 开始重构
3. 运行测试
4. 如果测试通过 → 继续
5. 如果测试失败 → Rewind 并尝试别的方案
```
## 最佳实践
因为 checkpoints 是自动创建的,所以你可以专注于工作,而不用担心手动保存状态。不过,下面这些习惯仍然很重要:
### 如何高效使用 Checkpoints
**应该做:**
- 回退前先看清楚可用的 checkpoints
- 当你想尝试不同方向时使用 rewind
- 保留 checkpoints 方便比较不同方案
- 理解每个 rewind 选项的作用(恢复代码和对话、恢复对话、恢复代码、或总结)
**不要做:**
- 只依赖 checkpoints 来保存代码
- 指望 checkpoints 跟踪外部文件系统变化
- 把 checkpoints 当成 git commit 的替代品
## 配置
你可以在设置中开启或关闭自动 checkpoints
```json
{
"autoCheckpoint": true
}
```
- `autoCheckpoint`:是否在每次用户提示后自动创建 checkpoint默认`true`
## 局限性
Checkpoints 很适合会话级回退,但它不是版本控制系统。对于需要长期保存、可审计、可共享的改动,仍然应该使用 git。
## 故障排查
### 找不到 Checkpoints
- 检查你是否在支持该功能的 Claude Code 版本中
- 确认自动 checkpoint 没有被关闭
- 重新打开会话再试一次
### Rewind 失败
- 确认你选择了一个有效的 checkpoint
- 查看是否存在与文件系统或权限相关的限制
- 尝试先分别恢复代码或对话,再决定是否同时恢复两者
## 与 Git 的集成
Checkpoints 和 git 是互补关系:
- Checkpoints 用于会话内探索和安全试验
- Git 用于永久保存代码历史
- 你可以先用 checkpoints 快速试错,再把最终方案提交到 git
## 快速开始
### 基本工作流
```text
1. 开始修改前自动创建 checkpoint
2. 尝试某个方案
3. 如果结果不理想,按 Esc 两次
4. 选择合适的 rewind 选项
5. 继续探索或提交最终方案
```
### 键盘快捷键
- `Esc` + `Esc`:打开 checkpoint 浏览器
- `/rewind`:通过命令进入回退界面
- `/checkpoint``/rewind` 的别名
## 什么时候该 rewind上下文监控
如果你发现这些信号,通常就该回退了:
- 当前方案开始变复杂,而且你还没确定方向
- 测试刚失败,问题可能就是最近一两步引入的
- 你想比较两种实现方式
- 你想保留一个“干净起点”继续探索
## 相关概念
- **Memory**:跨会话的长期上下文,见 [02-memory/README.md](../02-memory/README.md)
- **Hooks**:事件驱动自动化,见 [06-hooks/README.md](../06-hooks/README.md)
- **Plugins**:打包功能集合,见 [07-plugins/README.md](../07-plugins/README.md)
- **Advanced Features**:包括 planning mode 和背景任务,见 [09-advanced-features/README.md](../09-advanced-features/README.md)
## 更多资源
- [根目录中文指南](../README.md)
- [Claude Code 官方检查点文档](https://code.claude.com/docs/en/checkpointing)
- [Claude Code 高级功能指南](../09-advanced-features/README.md)
## 总结
Checkpoints 的价值在于让你敢于试错。它让“先试再说”和“试错后立刻回退”变得安全,从而帮你更快找到正确方案。