返回资讯中心
外部精选
软件工程
#开发者实时流

Revu 推出开源代码审查工具,可审查 AI 生成的代码库

来源标题:Revu – Code review in times of AI

Revu 发布免费开源的代码审查工具,专门用于审查 AI 代理编写的代码库。该工具首次扫描自身代码时即发现一个真实缺陷,被标记为必须修复。Revu 面向 Vibe 编程和 AI 生成代码带来的安全审查难题,输出审查报告及配套工具。

Hacker News 最新blambeau2026/11/11 · 今天16 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Revu 读 Revu —— 左侧是范围,中间是源码,右侧是批注。标注为 must-fix 的那条,是它第一遍读自己时发现的一个真实缺陷。

想要一次代码审查?我们以阅读 agent 编写和 vibe-coded 的代码库为生,最终交给你的不只是报告,还有那套 harness。Revu 就是我们用来做这件事的工具——免费、开源、属于你。

一年前,这项工作还是写软件。今天,其中越来越大的一部分,是在回答一个关于别人家 agent 已经写好的软件的更难问题:这东西跑起来安全吗?

送到我们手上的项目有一个共同的样子。一位没有工程背景的创始人用 vibe-coding 做出了一个演示效果很漂亮的产品,如今里面装着真实的客户数据。一个团队三周上线了原本要花六个月的东西,却说不清哪些部分是承重的。一个代码库有一百个绿色测试,可你故意破坏业务规则时,没有一个会失败。每一次,我们拿到的都是一个我们这边没人写过的仓库,一个从没有哪个人完整装在脑子里的仓库。

这就是新工作,而且它不会消失:阅读你没写过、也没看着它被写出来的代码,读到足以把自己的名字签上去——然后留下一套 harness,让接下来一千行 agent 写的代码无法悄悄弄坏要紧的东西。

实践了十五年的代码审查建立在三个假设之上:改动很小,作者是能解释自己思路的同事,而且你们双方都了解基线。这三个假设如今全都不成立了。

诱人的答案是拿第二个 agent 去盯第一个 agent 的输出。我们试过,反复试过。它失败的原因,跟模型变得多好毫无关系。

所以,人还是得看代码。悬而未决的问题是:用什么来看——而我们诚实的答案是:没有任何工具是为这件事造的。我们曾在编辑器里阅读 agent 写的仓库,把地图记在脑子里,把反馈写进一个聊天窗口,到第二天早上就丢了。

Agent 在它们真正擅长的那部分依然出色:指路。跑 linter、跑类型检查器、用 grep 找你的项目定下的某条规则。它们是指针,不是法官——Revu 正是这样使用它们的。

一个为你没写过的代码准备的阅读界面。把它指向一个仓库,在浏览器里读,针对具体行发表意见,最后为下一个写改动的人——同事,或者 agent——生成一份 markdown 文本。

一棵六百个文件的树,不是任何人会问的问题。左侧面板是一串范围:共享某个属性的文件集合,一次进入一个,边走边叠加。选一个,读里面的内容,对值得说的行发表意见。

每一个都是廉价而诚实的信号。它们都不声称发现了缺陷;它们只声称指出了一个值得看的地方。你的项目提供哪些范围、按什么数值,由你在一个小小的 .revu.yml 里声明——多大的文件算大,是关于你的项目的问题,不是关于我们工具的问题。而任何能打印出位置的命令,都会成为它自己的范围:

scopes:
  - use: largest
    min: 400 # your call, not ours
  - title: Lint
    run: npm run --silent lint -- --format=compact || true
  - title: Says deploy, not publish
    run: git grep -n -i deploy -- '*.md'

输出按每个工具本来就会说的格式读取:path:line: message、tsc 的 path(line,col): message,或者单独的路径。指向项目里不存在的文件的行会被丢弃,所以横幅和堆栈帧自己就消失了。

用哪个 linter、哪份覆盖率报告、哪些阈值——这是阅读的活儿,交给它。revu --skill 会打印出指令:去找 harness 而不是猜,优先用项目自己的任务名,每条命令写下来之前先跑一遍,数值取自这个代码库自己的文件长度分布,并报告哪些被跳过、为什么。

$ mkdir -p .claude/skills/revu-setup
$ revu --skill > .claude/skills/revu-setup/SKILL.md

会作为需求返回的批注

点一个行号,按 c,说出应该改什么。每条批注都锚定在对应的行上,引用这些行,并带一个标签——must-fix、question、scope。导出是一份 markdown 文档,写给下一个写改动的人,开头是唯一要紧的那条指令:把批注当作需求,而不是可以转述回去的建议。

它从不写入被审查的项目——批注存放在项目之外,所以一次审查可以跨越数天而不碰任何分支。而且 Revu 内部刻意没有 AI。判断才是产品;工具的工作是让阅读足够廉价,让判断真正发生。

大约两千行,三个依赖,没有构建步骤。是一个工具,不是一个平台。

我们每天都在和 agent 一起构建,身上有伤疤。o=f(i)——把公式作为服务,一个小程序在某个 URL 上作答——基本上就是 agent 写的,规范先行,而审查它正是让那道鸿沟变得明显的原因。Klaro Cards,我们的项目管理产品,则是同样的实践遇上多年历史和真实客户的地方。Revu 就是在那种挫败感中一天之内做出来的,而我们做的第一件事就是把它指向它自己——截图里的那条批注就是这样写下的。

软件工程,由 agent 完成,由人签署。

管理项目,读起来像一副卡牌,而不是一张电子表格。

公式作为服务。你发布一个计算;它在某个 URL 上作答。

Revu 是 MIT 许可证下的开源软件。它在本地运行,绑定到 127.0.0.1,不向任何地方发送任何东西。

$ npm install -g @enspirit/revu
$ revu ~/code/the-project-you-inherited

安装就这些。它会在浏览器中打开于 127.0.0.1:7777;不带路径时,它读取你当前所在的目录。

这就是我们的日常工作。我们在 vibe-coded 产品与真实用户见面之前审查它们,为 agent 构建的代码库套上测试和部署 harness,并把 harness 连同报告一起交回——而不只是一个意见。告诉我们你继承了什么。

如果 Revu 对你有用,你希望这项开源工作继续下去,你可以

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →