Checkpointing
Gemini CLI 包含一个 Checkpointing 功能,该功能在 AI 驱动的工具进行任何文件修改之前自动保存项目状态的快照。这使您能够安全地实验和应用代码更改,因为您知道可以立即恢复到工具运行之前的状态。
工作原理
当您批准一个修改文件系统的工具(如 write_file
或 replace
)时,CLI 会自动创建一个"checkpoint"。这个 checkpoint 包括:
- Git 快照: 在位于您主目录的特殊影子 Git repository 中创建一个 commit(
~/.gemini/history/<project_hash>
)。此快照捕获您项目文件在那一刻的完整状态。它不会干扰您自己项目的 Git repository。 - 对话历史: 保存您与 agent 进行的整个对话。
- 工具调用: 即将执行的特定工具调用也会被存储。
如果您想撤消更改或简单地回退,可以使用 /restore
命令。恢复 checkpoint 将:
- 将项目中的所有文件恢复到快照中捕获的状态。
- 在 CLI 中恢复对话历史。
- 重新提出原始工具调用,允许您再次运行它、修改它或简单地忽略它。
所有 checkpoint 数据,包括 Git 快照和对话历史,都存储在您的本地机器上。Git 快照存储在影子 repository 中,而对话历史和工具调用保存在项目临时目录的 JSON 文件中,通常位于 ~/.gemini/tmp/<project_hash>/checkpoints
。
启用功能
Checkpointing 功能默认是禁用的。要启用它,您可以使用命令行标志或编辑您的 settings.json
文件。
使用命令行标志
您可以通过在启动 Gemini CLI 时使用 --checkpointing
标志来为当前会话启用 checkpointing:
gemini --checkpointing
使用 settings.json
文件
要为所有会话默认启用 checkpointing,您需要编辑您的 settings.json
文件。
将以下键添加到您的 settings.json
中:
{
"general": {
"checkpointing": {
"enabled": true
}
}
}
使用 /restore
命令
启用后,checkpoint 会自动创建。要管理它们,您使用 /restore
命令。
列出可用的 Checkpoint
要查看当前项目所有已保存 checkpoint 的列表,只需运行:
/restore
CLI 将显示可用 checkpoint 文件的列表。这些文件名通常由时间戳、被修改文件的名称和即将运行的工具名称组成(例如,2025-06-22T10-00-00_000Z-my-file.txt-write_file
)。
恢复特定的 Checkpoint
要将项目恢复到特定的 checkpoint,使用列表中的 checkpoint 文件:
/restore <checkpoint_file>
例如:
/restore 2025-06-22T10-00-00_000Z-my-file.txt-write_file
运行命令后,您的文件和对话将立即恢复到创建 checkpoint 时的状态,原始工具提示将重新出现。