re_gent 完全指南:为 AI Agent 做版本控制,每次代码变更都可追溯
AI Agent 帮你写了一堆代码,改了十几个文件,然后……它搞砸了。「刚才还能运行的,怎么不见了?」你翻看终端历史、搜索 Git 日志——但 Agent 的每一次编辑并没有留下独立记录。
re_gent(656⭐, Apache-2.0)正是为解决这个痛点而生。它是一个专为 AI Agent 设计的版本控制系统,自动记录 Agent 每次工具调用的操作、触发它的提示词、文件变更的上下文——不需要你手动提交,不需要改工作流。
为什么需要 re_gent?
Git 管理的是你「有意识」的提交:git commit -m "fix: 修复登录验证"。但 AI Agent 的工作方式是连续的、会话式的——它可能在一个会话中写 20 个文件,调用 5 次 Bash 命令,然后你突然发现某个文件被不该改的地方改了。
传统方法的局限:
| 场景 | Git | Claude Code 历史 | re_gent |
|---|---|---|---|
| 某行代码是谁让改的? | Git blame 看到的是你的提交 | 只能翻会话 | rgt blame 直接告诉你 |
| 回退到某次编辑前 | 需要 Agent 有意识提交 | /compact 可能清空 | rgt show 查看,手动恢复 |
| 同时运行多个 Agent | 冲突管理复杂 | 不支持 | rgt sessions 天然隔离 |
| 每步变更的对话上下文 | 不记录 | 会话内能查看 | rgt show 看到完整对话 |
re_gent 填补的是「AI Agent 每一步操作」这个 Git 不覆盖、会话历史不方便查的中间地带。
安装
推荐使用 Homebrew(macOS/Linux):
brew tap regent-vcs/tap brew install regent
或者用 Go 安装:
go install github.com/regent-vcs/regent/cmd/rgt@latest
安装后验证:
rgt version
三分钟上手
进入你的项目目录,初始化 re_gent:
cd your-project rgt init
这会创建一个 .regent/ 目录(就像 Git 的 .git/),用来存储 Agent 的活动记录。然后正常使用 Claude Code、Codex CLI 或 OpenCode——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
每一条 step 都对应 Agent 的一次工具调用——编辑、写入、Bash 命令等。
核心功能
1. rgt blame:哪条提示词写了这行代码?
定位到一行代码,想知道它是怎么来的?
rgt blame src/handler.go:42
Line 42: func handleRequest(w http.ResponseWriter, r *http.Request) {
Step: a1b2c3d4e5f6
Session: claude-20260502-143021
Tool: Edit
Prompt: "Add error handling to the request handler"
这比 Git blame 多了一层信息:触发这行代码的提示词是什么。当你 review Agent 生成的代码时,这个功能帮你快速理解「为什么这里会这样写」。
2. rgt show:查看每步的完整上下文
只看 diff 往往不够——你想知道 Agent 做出这个修改时考虑了哪些对话?
rgt show a1b2c3d
Step a1b2c3d4e5f6
Parent: d4e5f6g7h8i9
Session: claude-20260502-143021
Time: 2026-05-02 14:30:21
Tool: Edit
File: src/handler.go
Changes:
+ func handleRequest(w http.ResponseWriter, r *http.Request) {
+ if r.Method != "GET" {
+ http.Error(w, "Method not allowed", 405)
+ return
+ }
Conversation:
User: "Add error handling to reject non-GET requests"
Assistant: "I'll add method validation to the handler..."
Conversation 字段是关键——它记录了触发此次编辑的用户输入和 Agent 的思考过程,让你在被问「为什么改这里」时有据可查。
3. rgt sessions:多 Agent 会话隔离
如果你同时运行多个 Agent(比如 Claude Code 改前端,Codex 改后端),re_gent 会为每个 Agent 维护独立的会话记录:
rgt sessions Active Sessions: claude_code:claude-20260502-143021 | 3 steps | Last: 2 min ago codex_cli:codex-20260502-091534 | 7 steps | Last: 2 hours ago
查看特定会话的历史:
rgt log --session claude_code:claude-20260502-143021
这样你在排查问题时,不会把两个 Agent 的变更混在一起。
4. 无需手动提交
re_gent 与 Git 最本质的区别就是 Agent 每执行一次工具调用,自动产生一个 step。开发者不需要执行 rgt commit,不需要记住「哦对了我应该记录一下」。Agent 那边的每一次 Edit、Write、Bash 都会变成一条可追溯的记录。
re_gent 的架构
re_gent 将数据存储在项目根目录的 .regent/ 文件夹下:
.regent/ ├── objects/ # BLAKE3 内容寻址的对象存储 ├── refs/ # 每个 Agent 会话的指针 ├── index.db # SQLite 查询索引 └── config.toml
每个 step 是一个内容寻址的快照,包含父 hash、文件变更树、触发它的对话内容。这种设计与 Git 的 object store 类似,但针对 Agent 操作的工作流做了优化——不是按文件变更分组,而是按 Agent 的「一次思考 + 一次操作」分组。
与 Git 配合使用
re_gent 不是取代 Git,而是 Git 的上游补充:
- Agent 的工作被 re_gent 自动记录为 step
- 你 review 确认后,用
git add+git commit将成果提交到 Git - re_gent 的记录作为审计日志保留在
.regent/中,不上传到远程仓库
这种「Agent 步级追踪 + 开发者驱动的 Git 提交」的工作流,既保留了 Agent 操作的细粒度可见性,又不破坏 Git 的提交语义。
注意事项
- 不共享:
.regent/应加入.gitignore,它是本地审计日志,不是团队共享数据 - 存储空间:内容寻址的对象存储会随着 Agent 使用量增长,建议定期清理历史较长的会话
- 当前版本:re_gent 处于早期阶段(GitHub 656⭐,Apache-2.0),核心功能稳定但 API 可能变化
- 支持的工具:Claude Code、Codex CLI、OpenCode 都已兼容,MCP 工具的自动追踪正在开发中
总结
AI Agent 生成代码的速度已经远超人类的审查速度,但「追踪每一行代码的来源」这个问题仍然缺少好用的工具。re_gent 填补了这个空白——它不是 Git 的替代品,而是为 AI 编程时代写的「Agent 活动日志」。
在 Agent 产生越来越多的代码的今天,一个能回答「为什么这里会这样写」的工具,可能比你想象的更有价值。
– re_gent GitHub 仓库(656⭐ | Apache-2.0) – 安装:
brew tap regent-vcs/tap && brew install regent或go install github.com/regent-vcs/regent/cmd/rgt@latest