2026年7月10日 1 分钟阅读

R3 实战:用本地代码审查工具给你的 AI 编码 Agent 装上反馈闭环

tinyash 0 条评论

你和 AI 编码 Agent 的工作流是什么样的?Agent 写完代码,你扫一眼,发现有不对劲的地方,复制粘贴到聊天框里打字反馈,Agent 修改,你再扫一眼……如此循环。

这个模式有个隐藏问题:Chat 窗口是线性、无序的——你的反馈和 Agent 的修改混在对话历史里,你很快就不记得哪些意见已经处理了、哪些还在待办。审查长文档(设计文档、重构计划)时尤其痛苦,一个段落要来回引用好几次,最后一头雾水。

R3(Review. Revise. Resolve.) 就是为了填补这个空白而诞生的。它把代码审查的范式引入 Agent 协作:Agent 把变更提交到本地 Web 审查面板,你在上面留下锚定到具体行/段落的反馈,Agent 逐条回复,直到你批准或放弃。全本地运行,零配置。

一分钟上手

R3 的核心设计理念是”由 Agent 驱动”。你很少需要自己敲命令——把下面这段粘贴到你的 Agent 指令文件(CLAUDE.md / AGENTS.md / 或直接告诉 Agent)里:

This project uses r3 for review. Run it with:
`npx @hyperlogue/r3@latest`
`r3 guide` will show how to use it.

然后对 Agent 说一句:”把你的变更提交审查。” Agent 就会执行 npx @hyperlogue/r3@latest create,启动本地 Web 服务器(端口 8791),生成一个审查链接,把 URL 分享给你。

你也可以全局安装以便在任何目录下使用:

npm install -g @hyperlogue/r3

安装后 r3 命令全局可用,无需每次 npx

核心工作流:三轮对话替代十轮拉扯

R3 定义了一个紧凑的审查循环,整个流程只有 3 个核心命令:

1. Agent 提交审查

r3 create

这会打开一个新的审查会话,返回一个 URL。Agent 把这个 URL 给你——你在浏览器中打开,就能看到 Agent 提交的代码变更或文档草稿。

2. 你留下精准反馈

在 Web 面板里,你可以把反馈精确地锚定到某一行代码或某一段落上——不是凭记忆说”第三个函数那有个问题”,而是直接在那个函数旁边写下批注。

提交反馈后,等待中的 Agent 会立即在终端里看到你的意见。

3. Agent 逐条回复

r3 reply  -m "what I changed"

Agent 逐条处理你的批注,回复修改了什么、为什么没改。每一条回复都实时呈现在 Web 面板上,你可以一边看一边决定是否批准。

循环继续:Agent 再次 r3 watch,你继续提意见,直到你点击 Approve(批准)Abandon(放弃)

整个流程可以直观地用这样一张时序图来理解:

你                                 Agent
│                                   │
│      Agent 提交审查 (r3 create)      │
│  ←──────────── URL ────────────── │
│                                   │
│      Agent 等待反馈 (r3 watch)      │
│  ←────── 打开审查面板 ─────────── │
│  在具体行/段落上留下批注               │
│  ─────── 提交反馈 ──────────────→ │
│      Agent 逐条回复 (r3 reply)     │
│  ←──── Web UI 实时更新 ────────── │
│           (重复直到批准)              │
│                                   │
│           你点击 Approve              │
│  ──────── 审查完成 ──────────────→  │

关键是,你不需要在聊天框里复制粘贴引用。批注跟在代码行后面,不会因为上下文翻滚而丢失。

两种审查模式:实况文件和冻结差异

R3 支持两种审查类型,分别对应不同的场景:

文件审查(Files Review):实时查看文件的最新状态。Agent 一边修改你一边看,R3 会追踪文件变更并重新渲染。适合正在编写中的设计文档、或你想亲眼看着 Agent 逐行调整代码的场景。对 Agent 说一句”把设计文档开个审查,我要边看边改”,它就会用文件审查模式启动。

差异审查(Diff Review):冻结某个时刻的代码变更快照,生成一个不可变的差异记录。Agent 后续的修改会进入新的”轮次”,你可以对比不同轮次之间的变化。对 Agent 说”把工作区的变更提交审查”或”审查 main 和当前分支的差异”,Agent 会自动选择差异审查模式。

差异审查的好处是反馈不会漂移——你针对某一行代码的批注,不会因为 Agent 修改了别的部分而跑偏位置。反馈锚定在引用的文本段落上而非行号。

远程开发场景

如果你在远程开发服务器上工作,R3 默认只监听本地回环地址(127.0.0.1),你可以通过 SSH 隧道把 Web 面板带到本地:

ssh -L 8791:localhost:8791 devbox

然后在本地浏览器打开 http://127.0.0.1:8791/ 就能看到所有项目的审查面板。也支持 Tailscale Serve 或 Cloudflare Tunnel。

环境变量控制网络行为:

变量默认值说明
R3_PORT8791Web 服务端口
R3_BIND127.0.0.1绑定地址
R3_ALLOWED_HOSTS允许的 Host 头(逗号分隔,决不能用 *
R3_PUBLIC_URL对外公开 URL

安全提示:R3 没有内置认证。永远不要把它绑定到 0.0.0.0 或暴露在公网上。如果你需要通过公网访问,使用 SSH 隧道或 Tailscale Serve 这类安全通道。

无配置设计

R3 不需要任何配置文件。审查记录存储在 $XDG_STATE_HOME/r3/r3.sqlite 中(macOS 通常是 ~/.local/state/r3/),Web 服务器的守护进程信息写在 $XDG_RUNTIME_DIR/r3/daemon.json。所有命令通过 Git 仓库自动发现项目上下文——你从一个目录运行 r3 create,它就知道哪个项目要审查。

如果你需要手动管理服务器:

r3 start       # 启动
r3 stop        # 停止
r3 status      # 查看状态
r3 restart     # 重启

第一次调用 r3 create 时,服务器会自动启动,所以你通常不需要手动执行这些命令。

实战场景:审查 Agent 的设计文档

假设你的 Agent 写了一份 API 重构设计文档,你想在实施前仔细审查。传统方式是逐段复制粘贴到聊天框里,标记问题。用 R3:

  1. 你告诉 Agent:”把 design/api-refactor.md 开个审查,我要看一下”
  2. Agent 执行 r3 create(文件审查模式),生成审查 URL
  3. 你打开 URL,看到文档的实时版本
  4. 你在”数据库迁移方案”段落下批注:”这个方案在数据量超过 1TB 时回滚时间太长,考虑分片迁移”
  5. Agent 看到反馈,回复了一个分片迁移的方案并修改了文档
  6. 你看到 Web 面板实时更新,确认修改到位,点击 Approve

整个过程不用切出编辑器,不用复制粘贴,反馈与文档同行,不会遗漏。

小结

R3 解决的不是 Agent 能不能写代码的问题——现在的 Agent 已经写得很好了。它解决的是你如何高效地与 Agent 协作的问题:把无序的聊天反馈升级为结构化的审查流程。

  • 零配置安装,npx 即可使用
  • 两种审查模式覆盖实况编辑和变更快照
  • 反馈锚定到具体文本,随文档变化而追踪
  • Agent 驱动的设计让接入成本降到最低

如果你也在和编码 Agent 协作,R3 可能是那个让你的”审阅-修改”循环效率翻倍的工具。

相关链接:

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。