Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

我做了一个简单的公关稿代理。别用它。

Posted on 2026-01-12

我的同事们非常喜欢人工智能代码审查工具,每次我在他们的代码仓库里提交 pull request 时,似乎都会发现又多了一个新的 AI 代码审查 SaaS 产品。鉴于这类产品如此之多,我决定尝试开发一个针对 GitHub 代码仓库的 AI 代码审查机器人。我只用了一个下午就用桌面上的模型完成了它的核心部分。最终,我得到了一个名为reviewbot 的小工具,它可以接收 GitHub pull request 的信息并提交相应的代码审查。

reviewbot 由DGX Spark 、 llama.cpp和 OpenAI 的GPT-OSS 120b驱动。该 AI 模型运行在我桌面上的机器上,其 AI 推理的功耗甚至低于我的游戏主机运行一些轻量级 3D 游戏时的功耗。测试表明,即使 DGX Spark 每秒仅生成 60 个 token,reviewbot 的几乎所有运行时间也都在两分钟以内。

reviewbot 是一个大约 350 行 Go 代码的程序,它只是将拉取请求信息输入到模型的上下文窗口中,并提供一些工具来执行诸如“留下拉取请求评论”和“读取文件内容”之类的操作。我正在考虑添加其他操作,例如“读取线程中的消息”或“读取问题内容”,但目前还没有用到它们。

为了方便起见,我将其分发为Docker 镜像,每当拉取审查评论包含神奇短语/reviewbot时,该镜像就会在 GitHub Actions 中运行。

我开发 reviewbot 的主要原因是,我找不到任何类似的工具可以让你指定以下组合:

  • 您自己的AI模型名称
  • 您自己的 AI 模型提供商 URL
  • 您自己的 AI 模型提供商 API 令牌

我相当肯定市面上有成千上万个类似的AI工具,但我找不到,因为谷歌是个坏掉的工具,不过这个是我的。

工作原理

当 reviewbot 审核拉取请求时,它会生成一个类似这样的 AI 模型提示:

 Pull request info:  
        <pr> <title>Pull request title</title> <author>GitHub username of pull request author</author> <body> Text body of the pull request </body> </pr>  
        Commits:  
        <commits> <commit> <author>Xe</author> <message> chore: minor formatting and cleanup fixes  
        - Format .mcp.json with prettier - Minor whitespace cleanup  
        Assisted-by: GLM 4.7 via Claude Code Reviewbot-request: yes Signed-off-by: Xe Iaso <[email protected]> </message> </commit> </commits>  
        Files changed:  
        <files> <file> <name>.mcp.json</name> <status>modified</status> <patch> @@ -3,11 +3,8 @@ "python": { "type": "stdio", "command": "go", - "args": [ - "run", - "./cmd/python-wasm-mcp" - ], + "args": ["run", "./cmd/python-wasm-mcp"], "env": {} } } -} \ No newline at end of file +} </patch> </file> </files>  
        Agent information:  
        <agentInfo> [contents of AGENTS.d in the repository] </agentInfo>该人工智能模型可以返回以下三种结果之一: Pull request info:  
        <pr> <title>Pull request title</title> <author>GitHub username of pull request author</author> <body> Text body of the pull request </body> </pr>  
        Commits:  
        <commits> <commit> <author>Xe</author> <message> chore: minor formatting and cleanup fixes  
        - Format .mcp.json with prettier - Minor whitespace cleanup  
        Assisted-by: GLM 4.7 via Claude Code Reviewbot-request: yes Signed-off-by: Xe Iaso <[email protected]> </message> </commit> </commits>  
        Files changed:  
        <files> <file> <name>.mcp.json</name> <status>modified</status> <patch> @@ -3,11 +3,8 @@ "python": { "type": "stdio", "command": "go", - "args": [ - "run", - "./cmd/python-wasm-mcp" - ], + "args": ["run", "./cmd/python-wasm-mcp"], "env": {} } } -} \ No newline at end of file +} </patch> </file> </files>  
        Agent information:  
        <agentInfo> [contents of AGENTS.d in the repository] </agentInfo>

  • 通过submit_review工具进行最终审批,该工具会批准更改并提供代码更改摘要。
  • 通过submit_review工具明确拒绝更改,该工具会拒绝更改并提供拒绝原因的摘要。
  • 不表示批准或拒绝代码的评论。

reviewbot 的核心是“AI 代理循环”,或者说是一个像这样工作的循环:

  • 收集信息以输入人工智能模型
  • 向人工智能模型提交信息
  • 如果 AI 模型运行submit_review工具,则发布结果并退出。
  • 如果 AI 模型运行任何其他工具,则收集它请求的信息,并将其添加到下一个循环中要提交给 AI 模型的列表中。
  • 如果 AI 模型在任何时候只是返回文本,请将其视为对更改的不置可否的评论。

不要使用评论机器人

reviewbot 对我来说是一个足够好用的临时解决方案。它有一些局限性,包括但不限于:

  • 由于gitfs库不支持克隆需要身份验证的闭源仓库,因此它无法与闭源仓库一起使用。如果报酬足够,我或许可以花点功夫解决这个问题。
  • 相当一部分测试调用中,代理程序依赖于 GitHub API 中未填充的字段,这导致了程序崩溃。我确信我还会发现更多类似的例子,并且需要为此提交补丁。
  • reviewbot 就像是用 Go 语言手工编写的 300 行代码,只花了一下午的时间。如果你真的需要类似的东西,自己写一个应该也不费吹灰之力。

常见问题解答

当像评论机器人这样的创新出现时,人们自然会产生疑问。为了给您提供最佳的阅读体验,我向我的朋友、赞助人和亲友征集了关于评论机器人的问题。以下是一些可能对您有所帮助的解答:

世界真的需要另一个人工智能代理吗?

大概不是!这只是我出于好奇做的,并不是真的想让你用。它比我想象的要容易得多,而且考虑到它所花费的精力,它的实用性也出奇地高。

您是否在寻找某个主题的常见问题解答?

不,一片混乱。就让一切以一种辉煌的方式发生吧。

我们死后会去哪里?

我他妈怎么会知道?我甚至都不知道椅子这玩意儿到底有没有存在过。

有没有人真的走得很远,甚至决定去那里,想让自己看起来更像?

至少有一半的时间我都想用 go wish 来实现这个功能。这其实就是常识而已。

如果你有一堆沙子,一次拿走一粒,那么什么时候它就不再是一堆沙子了?

当风能把所有的沙子都吹走的时候。

多久需要一次燕麦片?

每天三次,否则冥界巨兽就会出现,毁灭整个人类社会。我们可不想这种情况发生,所以我们确保每天给评论机器人喂燕麦粥。

铺一个狗窝需要多少张煎饼?

至少十二个。不太确定,因为我的煎饼吃完了。

这样就能击溃我的敌人,让他们臣服于我的脚下,夺走他们的马匹和货物吗?

只有通过拉取请求添加该功能,reviewbot 才能做到。只要代码经过扩展,reviewbot 就能完成任何操作。

我为什么要使用评论机器人?

坦白说,你不应该这样做。

原文: https://xeiaso.net/blog/2026/reviewbot/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Alin Panaitiu
  • Anil Dash
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Big Technology
  • Bits about Money
  • Brandon Skerritt
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • HeardThat Blog
  • Henrique Dias
  • Herman Martinus
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Li Haoyi
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Maggie Appleton
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mind Matters
  • Mostly metrics
  • Naval Ravikant
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • PostHog
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Slava Akhmechet
  • Small Good Things
  • Steph Ango
  • Stephen Wolfram
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2026 搞英语 → 看世界 | Design: Newspaperly WordPress Theme