检查点
检查点在 Roo Code 任务期间自动为您的工作区文件进行版本控制,从而能够无损地探索 AI 建议并轻松地从不需要的更改中恢复。
检查点让您能够:
- 安全地试验 AI 建议的更改
- 轻松地从不希望的修改中恢复
- 比较不同的实现方法
- 恢复到之前的项目状态而不会丢失工作
- 检查点功能需要安装 Git - 请 参阅安装说明
- 不需要 GitHub 帐户或存储库
- 不需要 Git 个人信息配置
- 影子 Git 存储库独立于您项目现有的 Git 配置运行
配置选项
在 Roo Code 设置的 “检查点” 部分访问检查点设置:
- 点击齿轮图标 → 检查点,打开 设置
- 选中或取消选中 “启用自动检查点” 复选框
检查点的工作原理
Roo Code 使用一个与您的主版本控制系统分离的影子 Git 存储库来捕获您项目的状态快照。这些被称为检查点的快照会在文件修改发生之前自动创建,确保您始终可以撤消不需要的更改。检查点在您的 AI 辅助工作流中被记录下来——当任务开始时、文件更改之前以及命令运行之前。
检查点以 Git 提交的形式存储在影子存储库中,捕获:
- 文件内容更改
- 添加的新文件
- 删除的文件
- 重命名的文件
- 二进制文件更改
使用检查点
检查点通过聊天界面直接集成到您的工作流中。
检查点直接出现在您的聊天历史记录中:
- 任务检查点 标记您的起始项目状态
- 常规检查点 在文件修改或命令执行之前创建,可以轻松撤消任何更改
每个检查点提供两个主要功能:
查看差异
要将您当前的工作区与以前的检查点进行比较:
- 在您的聊天历史记录中找到检查点
- 点击检查点的 “查看差异” 按钮
- 在比较视图中查看差异:
- 添加的行以绿色突出显示
- 删除的行以红色突出显示
- 修改的文件列出详细更改
- 重命名和移动的文件通过其路径更改进行跟踪
- 新建或删除的文件被清晰标记
恢复检查点
要将项目恢复到以前的检查点状态:
- 在您的聊天历史记录中找到检查点
- 点击检查点的 “恢复检查点” 按钮
- 选择以下恢复选项之一:
- 仅恢复文件 - 仅将工作区文件恢复到检查点状态,而不修改对话历史记录。这非常适合在保持聊天上下文的同时比较替代实现,让您可以在不同的项目状态之间无缝切换。此选项无需确认,可让您快速在不同的实现之间切换。
- 恢复文件和任务 - 恢复工作区文件 并 删除所有后续对话消息。当您想将代码和对话完全重置回检查点的时间点时使用。此选项需要在对话框中进行确认,因为它无法撤消。
限制和注意事项
- 范围:检查点仅捕获在活动 Roo Code 任务期间所做的更改
- 外部更改:在任务之外所做的修改(手动编辑、其他工具)不包括在内
- 大文件:非常大的二进制文件可能会影响性能
- 未保存的工作:恢复将覆盖您工作区中任何未保存的更改
- 时机:检查点在应用更改之前创建,为所有修改提供了一个安全网
技术实现
检查点架构
检查点系统由以下部分组成:
- 影子 Git 存储库:一个专门为检查点跟踪而创建的单独 Git 存储库,它作为检查点状态的持久化存储机制。
- 检查点服务:通过以下方式处理 Git 操作和状态管理:
- 存储库初始化
- 检查点创建和存储
- 差异计算
- 状态恢复
- UI 组件:在聊天中显示的界面元素,可启用与检查点的交互。
恢复过程
当执行恢复时,Roo Code:
- 执行硬重置到指定的检查点提交
- 将所有文件从影子存储库复制到您的工作区
- 更新内部检查点跟踪状态
存储类型
检查点是任务范围的,这意味着它们特定于单个任务。
差异计算
检查点比较使用 Git 的底层差异功能来生成结构化的文件差异:
- 修改的文件显示逐行更改
- 二进制文件被正确检测和处理
- 重命名和移动的文件被正确跟踪
- 文件创建和删除被清晰识别
文件排除和忽略模式
检查点系统使用智能文件排除来仅跟踪相关文件:
内置排除
系统具有全面的内置排除模式,可自动忽略:
- 构建工件和依赖项目录(
node_modules/、dist/、build/) - 媒体文件和二进制资产(图像、视频、音频)
- 缓存和临时文件(
.cache/、.tmp/、.bak) - 包含敏感信息的配置文件(
.env) - 大型数据文件(存档、可执行文件、二进制文件)
- 数据库文件和日志
这些模式在初始化期间被写入影子存储库的 .git/info/exclude 文件中。
.gitignore 支持
检查点系统尊重您工作区中的 .gitignore 模式:
- 被
.gitignore排除的文件不会触发检查点创建 - 被排除的文件不会出现在检查点差异中
- 在暂存文件更改时应用标准 Git 忽略规则
.rooignore 行为
.rooignore 文件(控制 AI 对文件的访问)与检查点跟踪是分开的:
- 被
.rooignore排除但未被.gitignore排除的文件仍将被检查点化 - 对 AI 不可访问文件的更改仍可通过检查点恢复
这种分离是故意的,因为 .rooignore 限制的是 AI 可以访问哪些文件,而不是哪些文件应该被跟踪以获取版本历史记录。
嵌套 Git 存储库
检查点系统包括对嵌套 Git 存储库的特殊处理:
- 在操作期间暂时将嵌套的
.git目录重命名为.git_disabled - 操作完成后将其恢复
- 允许正确跟踪嵌套存储库中的文件
- 确保嵌套存储库保持功能正常且不受影响
并发控制
操作被排队以防止并发的 Git 操作可能损坏存储库状态。这确保了即使在快速连续请求时,快速检查点操作也能安全完成。
Git 安装
检查点要求在您的系统上安装 Git。该实现使用 simple-git 库,该库依赖于 Git 命令行工具来创建和管理影子存储库。
macOS
- 使用 Homebrew 安装(推荐):
brew install git - 备选方案:使用 Xcode 命令行工具安装:
xcode-select --install - 验证安装:
- 打开终端
- 输入
git --version - 您应该看到版本号,例如
git version 2.40.0
Windows
- 下载 Git for Windows:
- 访问 https://git-scm.com/download/win
- 下载应自动开始
- 运行安装程序:
- 接受许可协议
- 选择安装位置(推荐默认值)
- 选择组件(默认选项通常足够)
- 选择默认编辑器
- 选择如何从命令行使用 Git(推荐:Git from the command line and also from 3rd-party software)
- 配置换行符转换(推荐:Checkout Windows-style, commit Unix-style)
- 完成安装
- 验证安装:
- 打开命令提示符或 PowerShell
- 输入
git --version - 您应该看到版本号,例如
git version 2.40.0.windows.1
Linux
Debian/Ubuntu:
sudo apt update
sudo apt install git
Fedora:
sudo dnf install git
Arch Linux:
sudo pacman -S git
验证安装:
- 打开终端
- 输入
git --version - 您应该看到版本号