跳到正文
Hacker News· sailorganymede·· 5 天前AI 评分41

Show HN: Vibecheck——用 AI 检查你是否理解自己 AI 写的代码的合并门禁

Show HN: Vibecheck – merge gate that checks you understand your AI-written code

AI 导读

vibecheck 是一个自托管的 GitHub PR 合并门禁,PR 作者必须先答对关于自己代码改动的问题才能合并。它用 Anthropic Claude(BYOK)读取 diff 并生成问题,首个问题固定为“这个改动在高层如何工作”,每 15 行改动出一道题,答对达到 PASSINGMARKS 后提交 vibecheck/verdict 状态变绿。

正文 · AI 翻译

vibecheck - 检查开发者是否理解自己 PR 的 AI

demo.mp4

vibecheck 是一个用于 GitHub 拉取请求的自托管合并门禁。在 PR 可以合并之前,发起它的人必须证明自己理解自己的改动。

这是自托管的。你需要在自己的服务器或云账户上托管 Docker 容器以及一个 Postgres 数据库。它采用 BYOK(Anthropic Claude)

工作原理

你在自己的服务器上运行 vibecheck(它是自托管的,Docker 镜像在 ghcr.io/bhurghundii/vibecheck.dev 上),并向你的仓库添加一个工作流文件。

之后,当有人打开拉取请求时:

  1. vibecheck 读取代码改动并生成几个关于它的问题。然后它在 PR 上发表评论,附上问题的链接。
  2. 作者拿到链接并用通俗的英语回答这些问题。他们一次只会收到一个关于代码不同部分的问题。不过,第一个问题总是 “这个改动在高层面上是如何工作的?”
  3. AI 评分器会根据实际改动为每个答案打分。你可以在这里调整需要多少细节才算通过。
  4. 如果作者通过了测试,就证明他们对自己的工作有最基本的理解。检查变绿,PR 可以合并。如果没有通过,合并保持阻塞。

它是给谁用的,你能得到什么?

  • 审查者和维护者。厌倦了被那些连自己都解释不清的人用海量 PR 刷屏?有了这个,任何作者都会在你花一小时阅读之前先接受基础检查。
  • 工程团队和负责人。确信你的团队理解他们发布的每一项改动,即使大部分是 AI 写的。用 AI 来写以交付质量;vibecheck 让一个知道它在做什么的人留在流程中。
  • 开源项目。一个廉价的过滤器,用来筛掉那些没人真正读过的、顺手提交的 AI 生成拉取请求。
  • 作者。不确定你的 AI 到底为你做了什么?在别人检查你之前,先检查一下自己的理解。

这解决了什么问题?

多亏了 AI,生成人们根本不理解的代码变得容易得多。因此,理解的负担落到了审查者身上。当面对大量没人有精力仔细阅读的巨型 PR 时,结果就是倦怠和橡皮图章式批准:“LGTM,CI 是绿的。”然后你就在发布没人理解的代码。对于业务关键型软件来说,这简直不可接受。

需要说明的是,vibecheck 不会替你审查代码。**它只是检查作者是否理解代码。**

功能(目前)

  • 每个 PR 一份试卷。vibecheck 读取一次 diff 以形成自己的盲解读,然后写出一份简短的试卷:固定的高层问题加上有范围的问题,每个都锚定到 diff 的特定部分。作者每屏看到一个题目,旁边只显示它所涉及的那一小段 diff。
  • 按改动规模调整。每 15 行改动出一个有范围的问题,最多 EXAM_QUESTION_COUNT 个。一行改动的 PR 得到一个题目,1000 行的庞然大物会被逐段拆解,而且没人会被考 git 头部。
  • 提交时评分,宽松处理。Claude 根据盲解读为每个答案打分。简洁但正确的答案通过;与 diff 矛盾的答案不通过。错误答案可以重试,然后 vibecheck 会揭示答案并继续。“替我解释一下”会用通俗语言讲解某个部分,且不影响评分,而“跳过”则放弃一个题目。
  • 不理解?不合并。只要 PASSINGMARKS 的屏幕正确,会话就通过;一旦达不到就失败。vibecheck 会将其报告为 vibecheck/verdict 提交状态;在分支保护中要求它,作者未通过前 PR 就无法合并。
  • 良好开发实践检查。过大的 PR 和 diff 会在提出任何问题之前就被拒绝。更多内容即将推出。
  • 本地优先。仅限自托管:一条 Docker Compose 命令即可运行,并且适用于企业环境。当然支持 BYOK。
  • 没有 GitHub App,没有 OAuth,没有 webhooks。它是一个 FastAPI 服务,GitHub Action 通过 bearer token 与之通信。除了一个 workflow 文件外,无需在 GitHub 上安装任何东西。只需将 vibecheck token 设为 secret。
  • 讽刺模式。按上帝 intended 的方式使用 vibecheck:一位脾气暴躁的资深工程师会无情地撕碎你的理解。我以前有一位这样的 tech lead。我想念他们。

需要演示?

在真实 PR 上查看实际效果:

贡献

我很清楚用 vibe slop 来解决 vibe slop 问题有多讽刺。

我鼓励 AI 生成的 PR 胜过人类提交的。为什么?因为整个目的就是帮助开发者更安全地整合 vibe coding。

不过我仍然认为人类 > AI,任何时候都是。

如果你有任何问题,请联系我!

文档

完整文档位于 https://bhurghundii.com/vibecheck.dev/(源码在 docs/):

许可证

MIT

我听说你喜欢 vibe slop,所以我为你的 vibe slop 做了 vibe slop。献给你知道是谁。

来源:Hacker News · github.com