Skip to main content
Glama


为什么选择 agentvc

Git 是为以人类节奏提交代码的人类而构建的。AI 代理正以机器速度改动你的工作区:每分钟几十个文件、走错的方向、半途而废的重构、你从未要求过的删除。等你意识到时,git stash 已经救不了你了。

agentvc 为每个代理会话都提供了一台时间机器。 它能在几毫秒内为整个工作区创建快照,将并行的尝试分叉到分支上,并瞬间恢复任意之前的状态——设计上零数据丢失。

Related MCP server: checkpointer

功能特性

⏱ 即时检查点

用一条命令或一次工具调用为每个文件创建快照。内容寻址、去重、毫秒级完成。

↩ 无损回滚

每次恢复都会先自动保存当前状态。回滚本身也是可逆的。

⑃ 并行尝试

分叉会话,尝试方案 B,对比后保留胜出者。

🤖 原生 MCP

提供 8 个工具,让 Claude Code、Cursor 和 Codex 能够自行创建检查点并恢复。

🔍 真实差异

精确查看代理在任意两个时间点之间改动了什么——可通过 avc diff -p 细化到行。

🔒 本地且私有

所有数据都存放在 .avc/ 中。无守护进程、无云端、无遥测。

为什么不直接用 git 呢?

git

agentvc

设计目标

人类提交

机器速度的代理步骤

暂存操作

需要 add / commit

一条命令捕获一切

回滚安全性

checkout 可能销毁未提交的工作

每次恢复前自动创建安全检查点

“尝试另一种方案”

分支操作笨重,容易纠缠

一次工具调用——代理们自己完成

代理接口

无

一流的 MCP 服务器 + TypeScript API

逐步元数据

手动记录

结构化 JSON(task、attempt、model、tokens)

agentvc 并不是要取代用于发布代码的 git。它位于代理循环的底层:廉价、可丢弃、可回退的历史记录,永远不会污染你的 git log。

环境要求

Node.js 20 或更高版本。没有其他运行时依赖。

安装

npm install -g agentvc

或者无需安装直接运行:

npx agentvc init

快速开始

mkdir demo && cd demo
avc init                              # initialise .avc/

echo "v1" > app.txt
avc save -m "known good state"        # checkpoint everything

echo "v2" > app.txt                   # ...agent goes wrong...
avc status                            # see what changed
avc diff -p                           # see exactly which lines changed
avc rollback HEAD                     # instant undo — nothing lost

avc branch plan-b && avc switch plan-b   # fork a parallel attempt
avc save -m "trying redis instead"
avc timeline                          # every attempt, side by side

给你的代理一台时间机器

只需注册一次随附的 MCP 服务器,你的代理就能自行创建检查点并恢复。

Claude Code

claude mcp add agentvc -- avc mcp

Cursor · Codex · 任何 MCP 客户端 — 添加到 .mcp.json(或参见 examples/mcp-config.json):

{
  "mcpServers": {
    "agentvc": { "command": "avc", "args": ["mcp"] }
  }
}

如果服务器不应使用其工作目录,请设置 AVC_ROOT=/path/to/project。

教它何时创建检查点

把下面这段放进你的 AGENTS.md / CLAUDE.md —— 它决定了一个趁手的工具和真正的安全网之间的差别:

## Session checkpoints (agentvc)

- Before any risky operation (refactors, deletions, dependency upgrades,
  schema changes), call `avc_save` with a short message.
- After reaching a working state, call `avc_save` again.
- If an approach fails twice, call `avc_rollback` to the last good checkpoint
  and try a different plan — optionally on a new branch via `avc_branch`.
- Never leave more than ~15 minutes of work uncheckpointed.

MCP 工具

工具

代理用它来做什么

avc_save

在冒险性工作之前或成功之后为工作区创建快照

avc_status

检查自上次检查点以来发生了什么变化

avc_log

查看当前分支上最近的检查点

avc_branch

分叉一个并行尝试而不丢失当前尝试

avc_switch

在尝试之间切换(会先自动保存未保存的工作)

avc_rollback

将所有文件恢复到已知良好的检查点

avc_diff

比较任意两个时间点,可选行级补丁(patch: true)

avc_timeline

查看所有分支上的每一次尝试

CLI 参考

命令

说明

avc init

在当前目录初始化仓库

avc save [-m msg] [--meta json]

为整个工作区创建检查点

avc status

显示自上次检查点以来未保存的更改

avc log [-n N]

列出当前分支上的检查点

avc branch [name] [start]

创建或列出分支

avc switch <branch>

切换分支并恢复文件

avc rollback [ref]

将文件恢复到某个检查点(默认 HEAD)

avc diff [from] [to]

比较引用,或将某个引用与工作区进行比较

avc diff -p [-U n] [from] [to]

同上,但以统一 diff 输出,带有 n 行上下文(默认 3)

avc timeline

所有分支上的每个检查点

avc mcp

启动 MCP stdio 服务器

Refs 接受 HEAD、分支名、完整检查点 ID 或任意唯一 ID 前缀。

avc diff -p 输出标准的统一 diff(--- a/path、+++ b/path、@@ hunks),因此 输出可以直接通过管道交给 patch -p1 或 git apply。二进制文件会被报告为 Binary files … differ;超过 2 MB / 50,000 行的文件只列出而不显示内容, 而对于无法进行精确行级 diff 的大规模重写,则显示为整个文件替换。

作为库使用

import { AgentVCS, formatPatch } from "agentvc";

const avc = new AgentVCS(projectRoot);
await avc.ensureInit();

const cp = await avc.save({
  message: "before db migration",
  meta: { task: "upgrade-postgres", attempt: 2 },
});

const { clean, modified } = await avc.status();
if (!clean) console.log("agent touched:", modified);

await avc.branch("plan-b");
await avc.checkout("plan-b");

await avc.rollback(cp.id);   // instant, lossless

for (const p of await avc.diffPatch(cp.id, "work")) {
  console.log(formatPatch(p));   // unified diff per file, with hunks available on p.hunks
}

完全类型化。导出了 AgentVCS、diffTrees、computePatch、formatPatch 以及所有结果类型。

工作原理

内容寻址存储——git 的好主意,却没有 git 的繁文缛节:

.avc/
├── objects/ab/c3ef…      blobs + trees, deduplicated by SHA-256
├── checkpoints/          parents, tree, message, structured meta
├── refs/heads/main       branch tips
└── index.json            id → summary, for fast prefix lookups
  • 无论跨多少个检查点和分支,相同的文件内容都只存储一次。

  • 未更改的文件在恢复时绝不会被重写。

  • 你现有的 .gitignore 会得到尊重;.git/ 和 node_modules/ 会被跳过。

  • 删掉 .avc/,你的工作区不会受到任何影响。

[!IMPORTANT] 安全保证。 每次 rollback 和 switch 都会在触碰任何文件之前,将你的未保存更改自动快照为一个 安全检查点。回滚是可逆的。agentvc 中没有任何代码路径会丢失你的工作。

路线图

  • 终端中的行级 diff(avc diff -p)

  • 分支合并(当前为快进合并,下一步为三方合并)

  • 自动保存钩子:基于文件监视器,或每个代理回合之后

  • 多代理协调——两个代理、一个仓库、各自独立的分支

  • 命名里程碑和会话标签

  • 与 MCP 功能对等的 Python SDK

  • 检查点存储的可选加密远程备份

欢迎提出想法和 PR——参见 CONTRIBUTING.md。

参与贡献

git clone https://github.com/nintechio/agentvc.git
cd agentvc && npm install
npm run typecheck && npm test && npm run build

欢迎提交 bug 报告、功能请求和拉取请求。请阅读 CONTRIBUTING.md 和我们的 行为准则。安全问题:请参见 SECURITY.md。

许可证

MIT © Nintech Ltd

由 Nintech 构建并维护

构建它的工程师也负责运营它。

应用型 AI · 韧性软件工程 · 托管服务 — 英国与欧盟

nintech.io · GitHub · X · YouTube · admin@nintech.io

Related MCP Connectors

Related MCP Servers