Skip to main content

检查点

检查点会在 Roo Code 任务期间自动对工作区文件进行版本控制,使您能够安全地探索 AI 建议,并轻松恢复不需要的更改。

检查点可以帮助您:

  • 安全地尝试 AI 建议的更改
  • 轻松从不需要的修改中恢复
  • 比较不同的实现方法
  • 在不丢失工作的情况下恢复到之前的项目状态
重要说明
  • 检查点默认启用。
  • 必须安装 Git 才能使用检查点功能 - 参见安装说明
  • 不需要 GitHub 账户或仓库
  • 不需要配置 Git 个人信息
  • 阴影 Git 仓库独立于您项目的现有 Git 配置运行

配置选项

在 Roo Code 设置的“检查点”部分中访问检查点设置:

  1. 点击齿轮图标 → 检查点 打开设置

  2. 配置检查点行为:

    • 勾选或取消勾选“启用自动检查点”复选框
    • 调整“检查点初始化超时”时间(10-60 秒,默认 30 秒)
    Roo Code 配置中的检查点设置

检查点初始化超时

控制系统在显示警告之前等待检查点初始化完成的时间。如果您的项目有很多文件或位于较慢的存储设备上,增加此超时时间可以防止过早出现警告。

  • 范围:10-60 秒
  • 默认值:30 秒
  • 何时增加:大型项目、慢速磁盘 I/O 或网络挂载目录
  • 位置:设置 → 检查点 → “检查点初始化超时”

检查点工作原理

Roo Code 使用独立于主版本控制系统的阴影 Git 仓库捕获项目状态的快照。这些快照称为检查点,在文件修改之前自动创建,确保您始终可以撤销不需要的更改。检查点在任务开始前和文件修改前记录,但不会在命令执行前自动创建。

检查点作为 Git 提交存储在阴影仓库中,捕获以下内容:

  • 文件内容更改
  • 添加的新文件
  • 已删除的文件
  • 重命名的文件
  • 二进制文件更改

使用检查点

检查点通过聊天界面直接集成到您的工作流中。

检查点直接显示在您的聊天历史记录中:

  • 任务检查点 标记您的起始项目状态

    聊天中的任务检查点指示器
  • 常规检查点 在文件修改之前创建,允许轻松撤销任何更改

    聊天中的常规检查点指示器

每个检查点都提供两种主要功能,这些功能在聊天历史记录和检查点菜单中始终可用:

查看差异

比较当前工作区与之前检查点的差异:

  1. 在聊天历史记录中找到检查点或打开检查点菜单

  2. 点击检查点的 View Differences 按钮

    查看差异按钮界面
  3. 在比较视图中查看差异:

    • 添加的行以绿色高亮显示
    • 删除的行以红色高亮显示
    • 修改的文件列出详细更改
    • 重命名可能不会总是被检测到;差异反映检查点之间的每文件更改
    • 新文件或已删除的文件被清楚标记
检查点的查看差异选项

恢复检查点

恢复选项始终在检查点按钮和对话框中可见,无论是否检测到更改。这确保您始终可以恢复到任何检查点状态。

将项目恢复到之前检查点状态:

  1. 在聊天历史记录或检查点菜单中找到检查点

  2. 点击检查点的 Restore Checkpoint 按钮(始终可见)

    恢复检查点按钮界面
  3. 选择以下恢复选项之一:

    恢复检查点选项
    • 仅恢复文件 - 仅将工作区文件恢复到检查点状态,不修改对话历史记录。适用于在保持聊天上下文的同时比较替代实现,允许您无缝切换不同的项目状态。此选项不需要确认,让您快速在不同实现之间切换。

    • 恢复文件和任务 - 同时恢复工作区文件并删除所有后续对话消息。当您希望完全将代码和对话重置回检查点时间点时使用。此选项需要在对话框中确认,且无法撤销。

      恢复检查点(文件和任务)的确认对话框

限制和注意事项

  • 范围:检查点仅捕获活跃 Roo Code 任务期间的更改
  • 外部更改:任务外部的修改(手动编辑、其他工具)不包括在内
  • 大文件:非常大的二进制文件可能影响性能
  • 未保存的工作:恢复将覆盖工作区中的任何未保存更改
  • 时机:检查点在更改应用之前创建,为所有修改提供安全网

技术实现

检查点架构

检查点系统包括:

  1. 阴影 Git 仓库:专门为检查点跟踪创建的独立 Git 仓库,作为检查点状态的持久存储机制。

  2. 检查点服务:通过以下方式处理 Git 操作和状态管理:

    • 仓库初始化
    • 检查点创建和存储
    • 差异计算
    • 状态恢复
  3. UI 组件:在聊天中显示的界面元素,支持与检查点交互。

恢复过程

当执行恢复时,Roo Code 会:

  • 执行硬重置到指定的检查点提交
  • 将所有文件从阴影仓库复制到工作区
  • 更新内部检查点跟踪状态

存储类型

检查点是任务范围的,意味着它们特定于单个任务。

差异计算

检查点比较使用 Git 的底层差异功能生成结构化文件差异:

  • 修改的文件显示逐行更改
  • 二进制文件被正确检测和处理
  • 重命名检测可能有限;差异专注于检查点之间的文件内容更改
  • 文件创建和删除被清楚识别

文件排除和忽略模式

检查点系统使用智能文件排除来仅跟踪相关文件:

内置排除

系统具有全面的内置排除模式,自动忽略:

  • 构建产物和依赖目录(node_modules/dist/build/
  • 媒体文件和二进制资源(图像、视频、音频)
  • 缓存和临时文件(.cache/.tmp/.bak
  • 包含敏感信息的配置文件(.env
  • 大型数据文件(归档、可执行文件、二进制文件)
  • 数据库文件和日志

这些模式在初始化期间写入阴影仓库的 .git/info/exclude 文件。

.gitignore 支持

检查点系统尊重工作区中 .gitignore 的模式:

  • .gitignore 排除的文件不会触发检查点创建
  • 排除的文件不会出现在检查点差异中
  • 标准 Git 忽略规则在暂存文件更改时适用

Git LFS 模式

工作区 .gitattributes 中为 Git LFS 定义的模式被读取并添加到检查点排除中。这有助于避免在阴影仓库中跟踪大型 LFS 管理资源。

.rooignore 行为

.rooignore 文件(控制 AI 访问文件)与检查点跟踪是分开的:

  • .rooignore 排除但未被 .gitignore 排除的文件仍会被检查点化
  • AI 无法访问的文件的更改仍可以通过检查点恢复

这种分离是有意的,因为 .rooignore 限制 AI 可以访问的文件,而不是应该跟踪版本历史的文件。

嵌套 Git 仓库

如果在工作区中检测到嵌套 Git 仓库,检查点将被禁用。当检查点初始化因嵌套仓库失败时,您会收到清晰的通知。移除或重新定位嵌套仓库以启用检查点。

并发控制

扩展防止在单个流式操作内重复检查点化。没有专用的 Git 操作队列。


Git 安装

检查点需要在您的系统上安装 Git。实现使用 simple-git 库,它依赖 Git 命令行工具来创建和管理阴影仓库。

macOS

  1. 使用 Homebrew 安装(推荐)

    brew install git
  2. 替代方案:使用 Xcode 命令行工具安装

    xcode-select --install
  3. 验证安装

    • 打开终端
    • 输入 git --version
    • 您应该看到类似 git version 2.40.0 的版本号

Windows

  1. 下载 Git for Windows

  2. 运行安装程序

    • 接受许可协议
    • 选择安装位置(推荐默认)
    • 选择组件(默认选项通常足够)
    • 选择默认编辑器
    • 选择如何从命令行使用 Git(推荐:从命令行和第三方软件使用 Git)
    • 配置行尾转换(推荐:检出 Windows 风格,提交 Unix 风格)
    • 完成安装
  3. 验证安装

    • 打开命令提示符或 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
  • 您应该看到版本号