大家好,我是何三,独立开发者

这玩意儿有多离谱呢——你用 Claude Code、Cursor 之类的 AI Agent 写代码,每次 Agent 执行一个操作,re_gent 都会自动记录下来,生成一条不可篡改的步骤记录。等你想知道"那行代码是哪个 prompt 写的"的时候,rgt blame 一下,Prompt 原文都给你翻出来

我第一次看到这个项目的时候,第一反应是:Git 怎么还没做这个?

为什么需要给 AI Agent 上版本控制?

用过 AI Agent 写代码的应该都懂那种心塞感。

Agent 跑了几分钟,改了一堆文件,然后突然——挂了。某个地方改坏了,但你不确定是哪个步骤导致的。想回退?传统 Git commit 要么没有(因为 Agent 不会帮你 commit),要么是一个巨型 commit,里面混杂了十几次修改。

更糟的是,你跟 Agent 聊到深处,/compact 了一下,之前的对话记录全没了。Agent 自己都不知道自己之前干了什么。

说白了,现在 AI Agent 写代码的方式,就像让一个实习生直接往生产环境 push——没有任何中间记录,没有任何审计追踪。

re_gent 干的事,就是给 AI Agent 装了个行车记录仪。

拆解一下:re_gent 到底怎么工作的

原理其实不难懂。

re_gent 工作原理架构图

你看,Git 记录的是"人类做了什么操作"——你改了哪些文件,commit message 写了啥。但 Git 不知道你为什么改,哪个 prompt 触发了这次修改。

re_gent 换个思路——它不追踪人类,追踪 Agent

它会在你的项目里创建一个 .regent/ 目录(就像 .git/ 一样)。每次 Agent 调用一个工具——不管是编辑文件、执行命令、还是搜索代码——都会自动生成一个 Step(步骤)。

每个 Step 包含: - 这次改动了哪些文件(文件快照) - 触发这个操作的 Prompt 原文 - 这次操作属于哪个 Session(会话) - 时间戳和父子关系

然后这些 Step 会形成一个 DAG(有向无环图)。每个 Agent 会话有自己的分支,互相不干扰。

大白话翻译:相当于给每个 Agent 操作拍了一张拍立得,还标记了"是谁让你这么干的"。

说实话,这个存储结构的设计挺有意思的。他们用的是 BLAKE3 内容寻址 + SQLite 索引,查询速度 sub-10ms。

说到 BLAKE3——我之前写过一篇讲哈希函数的文章,里面吐槽过 SHA-256 又慢又老。BLAKE3 在多线程场景下能跑到 SHA-256 的 10 倍以上速度。re_gent 选它做底层存储显然是深思熟虑过的。不过这个跑题了,我们继续。

上手体验:5 分钟跑起来

安装很简单,一行命令的事:

# macOS / Linux
brew tap regent-vcs/tap
brew install regent

或者用 Go 装也行:

go install github.com/regent-vcs/regent/cmd/rgt@latest

在你的项目里初始化:

cd my-project
rgt init

然后正常用 Claude Code 写代码——不需要手动 commit,不需要任何额外操作。re_gent 会自动捕获每一个工具调用。

想知道 Agent 刚才干了什么?直接看日志:

$ rgt log

Step a1b2c3d  |  2 min ago  |  Tool: Edit
│ File: src/handler.go
│ Added error handling to request handler
│ + 5 lines, - 2 lines

Step d4e5f6g  |  5 min ago  |  Tool: Write
│ File: tests/handler_test.go
│ Created unit tests for handler
│ + 23 lines

想查某一行代码是哪个 prompt 改的?一行 rgt blame 直接翻旧账:

rgt blame 命令演示

看到没?连 Prompt 原文都记下来了。

为什么这么设计?别问我,问作者去。不过我觉得这玩意儿对于排查问题简直就是救命级的——以前你得靠记忆回想"我刚才到底让 Agent 改了什么",现在一行命令直接翻旧账。

re_gent vs Git:不是替代,是互补

有人可能会问:有 Git 了还要这玩意儿干嘛?

这个问题我一开始也有。但仔细想想,两者的定位完全不一样:

场景 Git re_gent
追踪代码变更
追踪 Agent 干了什么
查到哪行代码是哪个 Prompt 写的
保留对话历史
多个 Agent 同时工作 ⚠️ 冲突 ✅ 独立分支

re_gent 不是要替代 Git,它是补上了 Git 从来没想过要管的那一块。

re_gent vs Git 对比图

打个比方:Git 是会计,管的是账本。re_gent 是监控摄像头,管的是"谁在什么时候做了什么操作"。两个都用,才叫完整的审计。

如果你对 AI Agent 的工具链感兴趣,还可以看看这些:

  • Tilde.run:同样是 HN 热榜上的项目,Agent 沙箱 + 事务性版本化文件系统,199 points 的热度。思路和 re_gent 互补——一个管 Agent 行为记录,一个管 Agent 运行环境。
  • Claude Code 自带的会话管理:如果你是 Claude Code 的用户,可以关注一下它的会话管理功能。当然,跟 re_gent 比,粒度粗了不少。

项目地址

GitHub: https://github.com/regent-vcs/re_gent

目前还处于 Active Development 阶段,核心功能已经可用(init、log、sessions、status、show、blame),7.8k 行 Go 代码。rewind(回退)和 fork(分支)功能正在开发中。

写到这,我突然想到一个问题——以后要是 Agent 自己也会写代码了,那 rgt blame 查出来的是另一个 Agent 写的,这事儿是不是就闭环了?

算了不想了,先把这工具装上吧。

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用