> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 代码审查太慢了，我做了个AI工具
- URL: https://www.hubwiz.com/blog/code-reviews-are-too-slow-so-i-built-an-ai-tool/
- Published: 2026-05-19T14:29:17.000Z
- Updated: 2026-10-13T16:00:57.000Z
- Description: 构建一个与每个 AI 代理兼容的首席工程师
- Author: admin
- Tags: VIBE CODING, #Import 2026-10-14 14:41

![预览图](https://www.hubwiz.com/blog/content/images/2026/05/1-jgrGgsPelMHl1EKNv6lFkg.png)

当你让一个前沿模型审查代码时，会发生一种特殊的混乱。它不像编译器那样的错误。它更糟。它是自信地"乐于助人"。它是一份结构良好的审查，通常不引用任何证据，编造意图，忽略那个会在凌晨 2:07 页醒你的变更，然后礼貌地建议你添加更多注释。

我受够了这个。

所以我构建了一个工具，生成我一直希望模型本身就能拥有的东西：与高级工程师在开口之前在脑中构建的相同的上下文感知。然后我让它可以通过管道传递，因为我当然会这么做。

结果是一个我称之为 [**AI Code Review**](https://github.com/josh-english-2k18/ai-code-review?ref=hubwiz.com) 的开源工具。它不自己审查代码。它组装 ***审查数据包***：高保真、安全感知的提示词输入，让 Claude Code、Codex CLI 和 Gemini 在你不再让它们饿着肚子的情况下，做它们真正擅长的事，并给它们一个准确、一致的工作基础。

是的，有些代理（提示：Gemini CLI）可能过于字面化。所以我不再希望它能推断我的意思，而是开始编写建立明确契约的提示词，规定代理将如何执行。

## 1、问题

这里真正的问题不是让 AI 审查代码，问题是上下文崩溃。

大多数 AI 审查工作流要么是凭感觉，要么是复制粘贴一个通用的"审查"提示词。这通常会导致代理对代码变更进行 diff，然后分析它们。虽然 diff 是必要的，但它不够。diff 不携带不变量、模式、"*我们这样做是因为生产环境教会了我们痛苦*"、定义预期行为的测试、运行时约束、安全态势、部署形态，或者代码库中那些悄悄将你的变更变成分布式系统的部分。

一个好的审查者不只是阅读变更。他们加载心智模型。他们扫描爆炸半径。他们根据代码库对假设进行健全性检查。他们查找测试和配置。他们阅读周围的文件。他们证明，而不是猜测。

所以我构建了一个工具，强制代理做同样的事情。

## 2、审查数据包

核心思想很简单：如果你想要一个专业质量的代码审查，你需要给审查者专业质量的上下文。与其给代理准备一份小零食，我想给它一顿健康的正餐。

[AI Code Review](https://github.com/josh-english-2k18/ai-code-review?ref=hubwiz.com) 生成一个包含 diff 的数据包，同时以 token 高效的方式压缩结构。在 Python 中，它使用 AST 提取来捕获签名和文档字符串，而不需要为实现体付费。在 JS/TS 中，它使用启发式解析，当你想要更高保真度时，可选支持 tree-sitter。它标记敏感路径。在任何东西离开你的机器之前，它会脱敏密钥。它将大型变更集分块，这样你就不会得到一个"*我在 token 7,891 处停止阅读了*"的非审查。

然后它将所有这些包装在一个 SYSTEM 提示词中，这个提示词的行为像一个见过太多事后复盘、对幻觉产生了健康过敏的首席工程师。

## 3、证据门

模型会愉快地输出一份华丽的审查，但没有任何依据，除非你强迫它们付出代价。

所以 SYSTEM 提示词包含一个带有明确引用格式的证据要求。如果数据包提供了行注释，代理必须引用它们。如果没有，它必须引用 diff 块。如果它想引用数据包之外的任何内容，它必须实际打开仓库中的文件并引用那些读取结果。

最后一部分很重要。非常关键。

因为一旦你告诉代理"*你有完整的仓库访问权限，当数据包不够时你被要求使用它*"，你就不再得到推测性建议，而是开始得到那种会说：我检查了客户端中的生命周期，我检查了应用配置，我追踪了调用点，这是你的更新处理程序悄悄变成每次变更 *O(N)* 的确切行——的那种审查。

这恰恰是防止你的 UI 在房间变忙碌时变成频闪灯的那种反馈。

## 4、从字面化到致命精准

这是让我在终端前傻笑的那一刻。

我对一个真实的提交运行了 AI 代码审查，并通过管道直接传给了 [Gemini CLI](https://geminicli.com/?ref=hubwiz.com)。我不是在寻找优雅。我是在寻找代理确实会完成工作的证明：阅读上下文、引用证据、指出真正的风险。

它做到了。

它用一个具体的、引用了仓库代码的片段识别了一个性能瓶颈。它标记了复杂同步逻辑缺少测试的问题。它发现了一个涉及静态单例依赖的架构风险，这个风险会让隔离测试变得痛苦。它提出了关于序列化意图的正确问题。它甚至注释了推出风险和重新渲染循环监控。

这不是通常的"*看起来不错，考虑添加文档*"的废话。这是一份读起来像真正发布产品的人写的审查。

有趣的是，没有发生任何神奇的事情。模型没有变得更聪明。提示词变得*更严格*了，上下文变得*更丰富*了，*工作流*变得更接近真实工程师的推理方式了。

这就是代理工具化的全部论点，用一句话概括：智能不是瓶颈，集成才是。

## 5、审查编排器，而不是审查者

[AI Code Review](https://github.com/josh-english-2k18/ai-code-review?ref=hubwiz.com) 不是试图取代人类判断。它是试图标准化使判断成为可能的输入，无论审查者是人类还是硅基。

如果你曾经让一个新队友入职并看着他们做第一次审查，你会看到相同的模式。他们评论表面问题，因为他们还不知道什么重要。他们错过地雷，因为地雷存在于上下文中。他们无法引用真正的约束，因为他们还没有找到它们。

一个*审查数据包*就是入职培训的压缩版。

它给代理足够的架构意识来变得有用，足够的程序纪律来保证安全。

## 6、为什么开源？

因为这是生态系统需要的胶水代码。

我们现在都在使用多个代理构建。Claude Code 在某种推理上很出色。Codex CLI 在另一种推理上很出色。Gemini 有自己的优势和自己的字面化。赢面不是选择其中一个。赢面是拥有一个一致的、高质量的输入格式，你可以通过管道传给任何一个，并获得有依据、可辩护、可操作的审查输出。

另外，出于私心，我希望社区来破坏它。如果你能找到一种方法让模型在证据契约中偷渡一个幻觉，我想知道。这就是它如何从一个巧妙的演示变成一个真正的工具的方式。

该项目使用 MIT 许可证，因为摩擦是采用之敌。

## 7、试试看

如果你想立即感受到差异，对一个非平凡的提交运行它，并将提示词通过管道传给你已经使用的代理。

```
# 为最后一次提交生成审查提示词
ai_review prompt /path/to/repo -base HEAD~1 -head HEAD -max-diff-lines 2000 -read-only | gemini

# 工作树审查，即未提交的变更
ai_review prompt /path/to/repo -mode working -read-only | gemini

# 为 token 限制分块大型 diff
ai_review prompt /path/to/repo -base main -head feature-branch -chunked -read-only | gemini

```

如果你是那种把 README 文件当产品策略来读的人，这里是[仓库](https://github.com/josh-english-2k18/ai-code-review?ref=hubwiz.com)。

## 8、结束语

最好的 AI 代码审查不是拥有最花哨模型的那个。它是那个拒绝在没有证据的情况下说话、知道如何在缺少上下文时审问代码库、并将运行时现实视为一等输入的那个。

换句话说，它的行为像一个首席工程师。

所以我构建了一个你可以通过管道传到终端的工具。

---

原文链接：[AI Code Review](https://medium.com/@jengas/ai-code-review-de79a9a5e840?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处

> **这是「AI 编程 / Vibe Coding」专题的一部分。**完整地图见：[AI 编程 / Vibe Coding 完全指南](https://www.hubwiz.com/blog/vibe-coding-stack/)