Rejudge 用 3 个独立模型加 1 个裁判替代 AI 代码自审
Rejudge Replaces Self-Review With 3 Independent Models and a Judge
Rejudge 是一个代码评审 CLI 工具,把同一评审请求发给 3 个上下文隔离的 reviewer,再由无工作区访问权限的 judge 比对报告、在分歧时通过 ask_panel 追问并输出最终结论。
作者实测了用三个隔离模型加一个裁判替代单模型自审的代码评审流程,并给出隐私边界和成本权衡的具体提醒。
我很难信任一个 AI 编码代理去审查它自己刚写出的代码。
模型已经做出了判断,认为这个实现足够好,可以产出。
然后我们又让它用许多相同的习得习惯和假设去检查同一个实现。
有时它能发现错误。有时它只是重新确认了这些错误。换一个全新的会话会有帮助。换一个不同的模型帮助更大。
但一旦不同的模型出现分歧,总得有人来决定该信任哪一份审查。
Rejudge 把这个解决分歧的步骤显式化了。
架构
同一个审查请求会发给三个审查者:
reviewer A
reviewer B
reviewer C
每个审查者都在隔离的上下文中工作。它们看不到彼此的推理、工具或结论。三者都完成后,一个独立的裁判会收到它们的报告。当评审团出现分歧时,裁判可以提出追问。然后它写出一个最终答案。
same question
|
+--> reviewer A
+--> reviewer B
+--> reviewer C
|
judge
|
final answer
独立性发生在协作之前。
审查者如何检查代码
默认情况下,审查者工具包括:
read
grep
find
ls
git_diff
web_search (if the host provides one)
普通审查者不会获得:
edit
write
bash
对于代码审查来说,这是一个合理的默认设置。🔒
裁判如何做出决定
裁判没有工作区访问权限。它只能看到三份报告。
如果这些报告相互冲突,它可以调用 ask_panel 并请求澄清。
这意味着裁判并不是隐藏的第四个审查者。它的角色是:
compare
challenge
adjudicate
synthesize
实际使用
安装(需要 Node.js 22.19.0 或更新版本):
npm install -g rejudge
审查一个 diff:
git diff | rejudge "review this change"
提出一个针对性的问题:
rejudge "does this migration need a lock?"
稍后恢复:
rejudge --resume <run-id> "what about the rollback path?"
答案会输出到 stdout,而进度、正在使用的配置和运行 ID 会输出到 stderr,因此把 stdout 重定向到文件后只会留下答案。恢复运行时,会重新打开相同的会话,新问题会先发给裁判。只有当裁判调用 ask_panel 时,审查者才会听到这个问题。
编码代理集成
Rejudge 支持:
- CLI
- 原生 Pi 工具
- 用于 Pi 之外编码代理的 Agent Skill
Agent Skill 安装:
npx skills add syabro/rejudge -g -y
这些 skill 是单独的副本,所以 README 建议在每次 Rejudge 发布后用 npx skills update -g -y 刷新它们。在 Pi 内部,该扩展只需再加一行:
pi install "$(npm root -g)/rejudge"
Rejudge 运行在 Pi 上并读取其提供商设置,因此 Pi 已经接受的密钥在这里也能用。
模型是可配置的
Rejudge 并不绑定于某个固定的提供商组合。配置中有一个审查者列表和一个单独的裁判模型,最少需要两个审查者。每个模型还会获得一个推理级别,可选值来自:
minimal
low
medium
high
xhigh
全局文件位于 ~/.config/rejudge/config.json,而项目中的 .rejudge/config.json 会覆盖它。这使得构建一个真正混合的评审团成为可能。
有一个不安全模式
--unsafe / --full 会给审查者:
edit
write
bash
文档明确说明这不是沙箱。裁判仍然只能获得 ask_panel。对于仅审查的工作,我会保持只读。
多个提供商意味着多个隐私边界
每个审查者模型都会看到请求。审查者读取的任何内容都会成为该提供商会话的一部分。
裁判不会直接检查工作区,但审查者的报告可能会引用代码。
只读工具能阻止本地更改。它们并不能让文件内容保持私密,而且 README 警告说,隐藏在请求中或审查者打开的文件中的指令,可能会操纵它读取和报告的内容。
运行还会留下记录。运行执行期间,会话会写入 ${TMPDIR}/rejudge/runs/<run-id>/,大约 24 小时后的清理是尽力而为的。debugLog 选项默认关闭,开启后会把完整的模型思考写入 .rejudge/logs/。
对于专有代码仓库,在运行评审团之前,这一点必须是可以接受的。
成本
一次全新的审查开始时会有:
3 reviewer calls
+ 1 judge call
然后加入工具循环、重试、恢复和评判跟进。Rejudge 本身没有支出上限。这不是免费的准确率倍增器。这是一种计算权衡。💸
我会在哪里使用它
我会把它留给错误代价高昂的变更:
database migrations
locking/concurrency
authentication
authorization
permissions
security-sensitive code
data deletion
rollback logic
complex refactors
Rejudge 是一种结构化的独立第二意见。对于关键代码,这可能值得额外成本。
参考资料
- GitHub 上的 Rejudge:README、安装、配置以及隐私和成本说明
- Rejudge 网站:概览和演示
关注我,了解更多 AI 和软件开发内容:
khasky — LinkedIn / Patreon / GitHub / Bluesky / Mastodon
khaskydev — X / Threads / Instagram / Pinterest / Facebook
来源:Google AI:DEV 作者专属(RSS) · dev.to