分享个我自用的小工具(自己做的)
ReviewGate是一个开源MIT的代码合并前过滤工具,从安全、性能、逻辑和AI Smell等角度筛出高风险问题,分block/warn,宁可不通过也不给假绿灯。支持--fix、CI集成、误报共享,默认只读。建议先观察再逐步启用。
用 Claude Code、Cursor 这些工具写代码,我最近老有个感觉:活是干快了,但心里没底。
它一次能吐几百行,我扫一眼,好像都对。可真让我一行行审,审到后面就飘了——注意力散掉,该看的地方看不进去,最后往往是“看着没问题”就合了。过两天线上冒出来的,常常就是那几行我当时没细看的。
问题不在 AI 写得差,在于它把代码的量顶上去了,却把审查这份累活全塞回给了我。我一个人的眼睛,跟不上它的手速。
所以我写了 ReviewGate,就干一件事:在代码合并之前,先替我过一遍。
我一开始就想清楚了一点——它不是来替我审代码的,我不信任何工具能替我拍板。它的活是过滤:把高风险的问题先捞出来推到我面前,把一堆低价值的唠叨压下去。我要的是省眼睛,不是多一个话痨。
它每次从几个角度同时看,安全、性能、逻辑这些常规的都在(见下图)。我真正上心的是特意加的一类——AI Smell,专抓 AI 爱犯的那几种:调了不存在的 API、想当然的假设、复制过来忘了改的旧代码。这类普通 linter 看不出来,偏偏是 AI 最容易翻的车。
看完它不会只甩给我一句“有问题”,而是分档:
- 高风险的直接标
block,把合并卡住; - 拿不太准的就折叠起来,我想看再点开。
这样我打开结果,最先撞见的一定是最该管的那条。
有个设计我自己最满意:它绝不会把没看完的当成通过。超时了、代码太多上下文塞不下、分析没跑完,它一律降成 WARN,宁可告诉我“这次没看全”,也不给我一个假的绿灯。我被虚假的“通过”坑过,所以这条是我给它定的死规矩。
用起来不复杂。先一行命令装上:
curl -fsSL https://raw.githubusercontent.com/dengmengmian/ReviewGate/main/install.sh | sh
装完一行命令就能跑:
reviewgate review
我自己平时最常用三种:
- 改完一版拿需求文档对一下有没有跑偏,用
--intent spec.md - 它挑出的问题想让它顺手改,用
--fix,每处改动都要我点头它才动 - 挂到 CI 上就加
--fail-on block,遇到高风险直接退出码 1,谁也别想把有问题的代码合进主分支
误报这块我也没偷懒。确认是误报的,它不是悄悄删掉,而是记进一个 ignore 文件、用指纹标住、团队之间共享。这样既不会同一条再烦我第二遍,又留了账,谁标的、为什么标,都查得到。
安全上我给它划了条线:默认只读代码,只有我明确加 --fix 它才动文件,而且路径锁死在仓库里,不许往外碰。底层用 tree‑sitter 解析,能接进 Claude Code、GitHub Actions、GitLab CI、pre‑commit 这些地方。
这些规则不是我拍脑袋定的。我拿真实 PR 一批批喂过它,覆盖 45 种语言,还专挑那些事后被打回(revert)的提交当靶子——看它能不能在合并前就把问题拦下来。跑过的评测数据都摊在仓库的 docs/evals/ 里,公开可查,不是我自说自话。
要说不满意的,现在它还是偏保守,宁可多报也不敢漏,有时候会啰嗦。落地我的建议也是慢慢来:先挂上只看不拦,观察一阵,再开告警,最后才上强制卡合并。别一上来就把团队卡死。
它不替代测试,也不替代人审,就是在我和主分支之间多设一道闸。开源的,MIT。
