跳到主要内容

Buddy检查点系统

基于 Rust 构建的强大检查点系统,自动跟踪和管理 AI 助理对文件的更改,让用户能够一键恢复代码库到之前的状态。这是一个企业级、生产就绪的解决方案,提供全面的文件版本控制、恢复和管理功能。

🎯 系统概述

🦀 核心架构 (Rust 引擎)

  • 高性能文件跟踪: 基于 SHA-256 的变更检测和智能过滤
  • SQLite 企业级数据库: WAL 模式、索引优化、事务支持的元数据存储
  • 压缩与去重: LZ4 压缩和基于内容的去重技术
  • 并发操作: 使用 parking_lot RwLocks 的线程安全操作
  • 性能监控: 内置指标收集和性能跟踪
  • 完善错误处理: 全面的错误类型和恢复策略

💾 存储系统 (生产就绪)

  • 多层存储架构: 数据库元数据 + 压缩文件内容存储
  • 去重引擎: 基于内容寻址的存储以最小化磁盘使用
  • 备份与导出: 支持多种压缩格式的完整备份创建
  • 存储限制: 可配置的大小限制和自动清理
  • 缓存管理: 具有 TTL 和 LRU 淘汰策略的智能缓存

🔄 恢复引擎 (企业级)

  • 冲突检测: 多种策略的高级冲突解决
  • 选择性恢复: 恢复特定文件或整个检查点
  • 备份创建: 恢复前自动创建安全备份
  • 权限处理: 跨平台文件权限恢复
  • 进度跟踪: 实时恢复进度和详细报告

🎨 VSCode 集成 (丰富 UI 体验)

  • 正确的存储路径: 生产环境使用 ~/.buddy,开发环境使用 ~/.buddy-debug
  • 增强命令: 8 个全面的命令和丰富的 UI 交互
  • 进度指示器: 所有操作的可视化反馈
  • 导出/导入: JSON 格式的完整数据可移植性
  • 统计仪表板: 全面的系统指标和健康监控
  • 自动清理: 可手动覆盖的可配置保留策略

🚀 功能特性

🔄 自动检查点创建

  • 助理响应后: AI 完成响应后自动创建检查点
  • 智能文件检测: 自动识别和跟踪相关的代码文件(支持 20+ 编程语言)
  • 工具调用跟踪: 监控修改文件的单个工具调用
  • 会话管理: 分离的聊天和手动检查点会话

📊 丰富的元数据

  • 描述性名称: 自动生成描述,如 "AI 响应 - 创建了 1 个文件,修改了 2 个文件"
  • 文件更改统计: 准确显示创建、修改、删除、重命名的文件数量
  • 更改类型: 详细跟踪文件的创建、修改、删除、重命名和移动
  • 时间戳: 包含精确时间信息的完整历史记录
  • 文件哈希: SHA-256 哈希用于内容验证和去重
  • 权限信息: 跨平台文件权限保存

🎯 可视化界面

  • 专用检查点标签页: 在历史页面中的完整检查点管理界面
  • 实时搜索: 使用 MiniSearch 的模糊搜索功能
  • 批量操作: 选择和删除多个检查点
  • 配置界面: 完整的检查点管理设置面板
  • 一键恢复: 单击即可恢复任何检查点
  • 进度指示器: 恢复操作的实时进度显示
  • 冲突解决: 交互式冲突解决界面

🛠 高级管理

  • 自动清理: 删除超过 7 天的检查点(可配置)
  • 存储管理: 可配置的磁盘用量(默认 1GB)和文件数量限制(默认 1000 个检查点)
  • 压缩: LZ4/Gzip/Zstd 压缩以节省磁盘空间
  • 文件类型过滤: 智能文件扩展名跟踪
  • 导出/导入: JSON 格式的完整数据备份和恢复

📦 安装与构建

自动安装

运行安装脚本以设置所有依赖项:

# 使脚本可执行并运行
chmod +x scripts/install-dependencies.sh
./scripts/install-dependencies.sh

手动构建

构建 Rust 核心

cd core/checkpoints

# 安装 Rust 依赖项并构建
cargo build --release

# 构建 Node.js 模块
npm run build

# 企业版构建(包含所有功能)
node build_enterprise.js --release --features=enterprise

构建 VSCode 扩展

cd extensions/vscode

# 构建检查点模块
npm run build:checkpoints

# 构建 VSCode 扩展(包含检查点模块)
npm run esbuild

⚙️ 配置

存储路径

  • 生产环境: ~/.buddy/checkpoints/
  • 自动检测: 基于环境自动确认

默认设置

interface CheckpointConfig {
maxCheckpoints: 1000, // 最大检查点数量
retentionDays: 7, // 保留天数
maxStorageBytes: 1_000_000_000, // 最大存储大小 (1GB)
maxFilesPerCheckpoint: 100, // 每个检查点最大文件数
enableCompression: true, // 启用压缩
trackedExtensions: [ // 跟踪的文件扩展名
'ts', 'tsx', 'js', 'jsx', 'py', 'java', 'cpp', 'c', 'cs',
'go', 'rs', 'php', 'rb', 'swift', 'kt', 'html', 'css',
'scss', 'json', 'yaml', 'yml', 'md', 'txt'
],
autoCleanup: true, // 自动清理
cleanupIntervalHours: 24 // 清理间隔(小时)
}

VSCode 设置

在您的 VSCode settings.json 中添加:

{
"buddy.checkpoints.maxCheckpoints": 1000,
"buddy.checkpoints.retentionDays": 7,
"buddy.checkpoints.maxStorageBytes": 1000000000,
"buddy.checkpoints.enableCompression": true,
"buddy.checkpoints.trackedExtensions": [
"ts", "tsx", "js", "jsx", "py", "rs", "go", "java"
]
}

🔧 使用方法

GUI 使用

通过 VSCode Buddy 扩展 GUI 访问检查点系统:

  1. 点击恢复检查点图标: 导航到扩展中的列表与配置页面
  2. 查看检查点: 查看从最新到最旧的所有检查点列表
  3. 搜索: 使用搜索栏查找特定检查点
  4. 恢复: 点击任何检查点上的恢复按钮来还原文件
  5. 配置: 使用配置面板调整设置
  6. 批量删除: 选择多个检查点并一次性删除

命令面板使用

使用以下 VSCode 命令:

  • Buddy: 创建检查点 - 创建手动检查点
  • Buddy: 显示检查点 - 显示检查点列表
  • Buddy: 恢复检查点 - 按 ID 恢复特定检查点
  • Buddy: 检查点统计 - 显示全面的统计信息(开发中...)
  • Buddy: 清理旧检查点 - 清理旧检查点(开发中...)
  • Buddy: 导出检查点 - 导出到备份文件(开发中...)
  • Buddy: 导入检查点 - 从备份文件导入(开发中...)

自动操作

检查点系统在 AI 交互期间自动工作:

  1. 用户: "创建一个 Rust 文件 test.rs,包含 hello world 代码"

    • 系统捕获当前文件状态
    • AI 创建文件
    • 检查点创建: "AI 响应 - 创建了 1 个文件 (test.rs)"
  2. 用户: "给它添加数组演示代码"

    • 系统在修改前捕获文件状态
    • AI 修改 test.rs
    • 检查点创建: "AI 响应 - 修改了 1 个文件 (test.rs)"
  3. 用户点击 GUI 中的恢复按钮

    • 文件恢复到之前的状态
    • 更改被还原
    • 用户看到确认信息

🏗️ 架构详解

核心组件

  1. CheckpointManager: 主要协调器,管理所有检查点操作
  2. FileTracker: 使用 SHA-256 哈希检测文件更改
  3. CheckpointStorage: 处理压缩文件内容存储
  4. CheckpointDatabase: 基于 SQLite 的元数据存储
  5. RestoreSystem: 处理检查点恢复和冲突解决
  6. EnterpriseFeatures: 企业级功能(审计、合规、监控)

数据库架构

-- 会话表
CREATE TABLE sessions (
id TEXT PRIMARY KEY,
created_at TEXT NOT NULL,
workspace_path TEXT NOT NULL,
metadata TEXT
);

-- 检查点表
CREATE TABLE checkpoints (
id TEXT PRIMARY KEY,
session_id TEXT NOT NULL,
description TEXT NOT NULL,
created_at TEXT NOT NULL,
files_affected INTEGER NOT NULL,
size_bytes INTEGER NOT NULL,
tags TEXT,
metadata TEXT,
FOREIGN KEY (session_id) REFERENCES sessions (id)
);

-- 文件更改表
CREATE TABLE file_changes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
checkpoint_id TEXT NOT NULL,
file_path TEXT NOT NULL,
change_type TEXT NOT NULL,
original_hash TEXT,
modified_hash TEXT,
original_size INTEGER,
modified_size INTEGER,
permissions INTEGER,
FOREIGN KEY (checkpoint_id) REFERENCES checkpoints (id)
);

-- 文件内容存储
CREATE TABLE file_content (
hash TEXT PRIMARY KEY,
content BLOB NOT NULL,
compressed BOOLEAN NOT NULL DEFAULT FALSE,
created_at TEXT NOT NULL
);

文件更改处理

创建

FileChange {
path: "test.rs",
change_type: ChangeType::Created,
original_content: None,
new_content: Some("fn main() { ... }"),
content_hash: "sha256_hash",
size_bytes: 123,
permissions: Some(0o644)
}

修改

FileChange {
path: "test.rs",
change_type: ChangeType::Modified,
original_content: Some("fn main() { ... }"),
new_content: Some("fn main() { ... array code ... }"),
content_hash: "new_sha256_hash",
size_bytes: 456,
permissions: Some(0o644)
}

删除

FileChange {
path: "old_file.rs",
change_type: ChangeType::Deleted,
original_content: Some("original content"),
new_content: None,
content_hash: "original_hash",
size_bytes: 789,
permissions: Some(0o644)
}

🚀 性能特征

优化

  • 延迟加载: 仅在需要时加载检查点
  • 文件限制: 每个检查点最多跟踪 100 个文件
  • 智能过滤: 仅跟踪相关的代码文件扩展名
  • 增量存储: 仅存储更改的文件
  • 自动清理: 防止存储膨胀
  • 压缩: 文件内容的 LZ4/Gzip/Zstd 压缩
  • 去重: 基于内容的去重以节省空间

基准测试(预估)

  • 检查点创建: 典型工作区 < 100ms
  • 文件扫描: 1000+ 文件/秒
  • 存储效率: 70%+ 压缩比
  • 去重: 30%+ 空间节省
  • 数据库操作: 1000+ 查询/秒
  • 内存使用: < 50MB 基线

🛡️ 错误处理

优雅降级

  • 存储故障: 记录但不中断主流程
  • 文件读取错误: 跳过的文件不会阻止检查点创建
  • 恢复错误: 继续处理其他文件,报告失败

恢复机制

  • 损坏的检查点: 加载时跳过
  • 缺失文件: 恢复期间优雅处理
  • 权限问题: 记录并提供有用的错误消息

🔮 未来增强

计划功能

  • 可视化差异查看器: 查看检查点之间的确切更改
  • 检查点分支: 从特定检查点创建分支
  • 检查点注释: 向检查点添加用户注释
  • 与 Git 集成: 与版本控制的智能交互
  • 增强的冲突解决: 更高级的合并策略

API 扩展

  • Webhook 支持: 通知外部系统检查点事件
  • 自定义存储: 可插拔的存储后端
  • 检查点策略: 可配置的保留和创建规则
  • 云同步: 检查点的云存储和同步

🐛 故障排除

常见问题

检查点未出现

  • 确保您处于助理模式(非聊天模式)
  • 检查文件更改是否实际发生
  • 验证检查点管理器是否已初始化

恢复不工作

  • 检查文件权限
  • 确保文件未被外部删除
  • 查找控制台中的错误消息

性能问题

  • 减少文件跟踪范围
  • 检查是否有非常大的文件被跟踪
  • 监控磁盘空间使用

🏢 企业部署

部署检查清单

  • 可扩展架构: 多线程、异步操作
  • 数据安全: ACID 事务、完整性检查
  • 安全性: 加密、访问控制、审计日志
  • 合规性: GDPR、SOX、HIPAA 支持
  • 监控: 健康检查、指标、告警
  • 备份与恢复: 多种备份策略
  • 文档: 完整的 API 文档和用户指南
  • 测试: 全面的测试覆盖
  • 性能: 针对企业工作负载优化
  • 支持: 企业级错误处理和日志记录

生产配置建议

  1. 存储配置:

    • 使用专用磁盘分区用于检查点存储
    • 配置适当的磁盘空间限制
    • 启用压缩以优化存储使用
  2. 性能调优:

    • 根据工作负载调整最大文件数限制
    • 配置适当的清理间隔
    • 监控内存使用和数据库性能
  3. 安全设置:

    • 启用内容加密(如果需要)
    • 配置访问控制策略
    • 设置审计日志保留期
  4. 监控与告警:

    • 设置存储使用告警
    • 监控检查点创建失败
    • 跟踪恢复操作性能