标题:AI 代码审查报价 100 万美元,我自己免费搭了一个。
被报价 100 万美元做 AI 代码审查,我干脆自己动手,一分钱没花就搭出来了。
$1M 的 AI 代码审查报价,我花 $300 自己搭了
我想在 Postman 的 PR 上挂一个 AI 审查员:挡掉那些低级错误,架构的事还是交给人类。找供应商询价,一年报价大概 100 万美元。为什么这么贵?因为我们需要 Soc2 或者 SSO 支持。可这东西本质不就是拿 diff、塞进 prompt、然后回条评论吗?于是我干脆自己写了一个,叫 Nitpicker。上个月账单:300 美元。开源。
它真的有用吗?有用。但跟销售宣传的方式不一样。它不会取代你的资深工程师,而是省下他们打开代码前的四十分钟。你的分支在那儿晾着,而负责人还在三个时区外的会议上。机器人大概 30 秒就能评论,趁代码还在你脑子里的时候就能修掉。
而且它比人更擅长发现那些无趣的故障模式:被吞掉的异常、400 行 diff 里的差一错误、新接口没做鉴权——因为旁边那个文件也没做。你一天里第八个 PR 的第 340 行,你的眼睛早就扫不动了。但模型不会无聊。这个产品卖点就这么多。
还有,凡是被某个资深工程师记在脑子里的约定——handler 里不许调数据库、每次迁移必须有回滚、日志里不许出现用户 ID——都可以写下来一次,然后从此在每个 PR 上强制执行,包括凌晨两点的那个。这是不休年假的组织记忆。
按人头收费就是坑。这类工具全都按席位(per-seat)收费。按席位。可它的真实成本是 token。你的账单跟着人头走,他们的成本跟着 diff 量走。这两条线之间的差距就是整个商业模式,几百个工程师的时候,这个差距里有六个零。
SaaS 正在亲手给自己办葬礼。如果你的定价和实际成本结构脱节——尤其是按人头收按用量干的活儿——你不是在建护城河,而是在给那个取代你的人写案例。AI 已经把「接收输入、调用模型、返回输出」的成本降到几乎为零。一半的 SaaS 说白了就是这个东西,只是外面套了张定价页面。那些还按 2019 年的价格收费的,距离被一个周末项目淘汰只差一口气。客户已经闻出味了,那个报价单就是明证。
自己掌控模型选择,成本曲线就翻过来了:第一遍用便宜模型,只有它确实值得时才启用贵的。供应商涨价?改一行代码的事。
Token 价格每年都在降——配置握在你自己手里,省下来的就是你的;签了按席位付费的合同,省下来的就是供应商的。按席位计费是棘轮,只会越转越紧。Token 是商品,买商品就好。把 diff 扔过去,完事。
这一行里一半的产品想给你的 monorepo 建索引、伺候一个向量库,然后为一个 typo 修复砸进 20 万 token。演示效果极佳,但慢、贵,对大约 95% 的 PR 来说毫无必要。Nitpicker 的默认路径:拿 diff,一次模型调用,结构化输出,发评论,收工。几秒钟,几千 token,零点几分钱。只有值得时才升级——大 diff、敏感路径、diff 窗口之外的发现。否则就保持便宜。大量廉价的评审养着少数几次彻底的审查。人做 code review 本来就是这么干的。
我们跑约 100 个仓库。最忙的一个一天几千个 PR。如果全部做全量仓库索引,账单就会回到我逃掉的那个报价水平。速度没有商量余地。四分钟没动静的评论会被静音。比切标签页还快的反馈才会被读。
账单
监控的仓库:约 100 个
PR 量(最忙的仓库):每天几千个
每月成本:约 300 美元
——几乎全是模型 token
——计算部分约等于零
跑在 Lambda 上。没有需要保温的东西——没有索引、没有向量库、没有控制面。醒来,一次 300ms 的网络调用,然后消失。Lambda 对这件事的定价约等于零。成本就是 token。Token 便宜因为 diff 小。每一个设计决策都是为了得到这张表。
定价页上看不到的东西
没有席位。雇五十个工程师,账单毫无反应。
没有第三方持有你的源码。离开你系统的只有你配置好的模型调用,发给一个你本来就在用的供应商。
没有 SOC 2 那套折腾。要让供应商审批读你的源码树:安全问卷、DPA、法务、采购,续约的时候再演一遍。每年先烧掉某个人几周的生命,然后才轮到一行代码被审。自托管,这条工作流原地消失。
没有锁定。开源。不喜欢某个决定?fork 它。项目死了?你手上还有一个一直在工作的 reviewer。
想跑哪就跑哪
GitHub Action。Lambda。Cloudflare Workers。任何服务器、容器,或者任何你能挂 webhook 的落魄 VM。Webhook 处理器 + 模型调用。它就应该能跑在任何地方。事实如此。
与它争辩
从不回应的机器人,只是瞄不准的 linter。问它为什么,告诉它哪里错了,让它修复,让它别再继续这条对话。它会认真跟进。误报变得廉价——回一句话就行,而不是暗生不满最后删掉工作流文件。而且每次你解释它错在哪里,你其实就说出了一条该记下来的规则。那就记下来。
把你的规矩教给它
泛泛的提示词只会换来泛泛的反馈。按仓库写规则,并提交进仓库。你的支付服务和营销网站不应该共用同一本规则手册。系统提示词就是一个文件,不是什么“严格度”滑杆。去编辑它。让它简洁,让它耐心,让它对安全疑神疑鬼。给它一个声音——工程师会读有个性的家伙的评论,而对 automated-review-bot[bot] 视而不见。我们的这个是个吹毛求疵的人设,很符合品牌调性。
猫腻?没有
免费、开源。你只需要为模型提供商的 token 付费,其他什么都不用付。想要零成本?把它指向你自己硬件上的 Ollama。质量会下降,但用来做内部第一遍筛选没问题,而且你的代码永远不会离开你手里。
nitpicker.dev
在安装任何东西之前:把你收到的报价除以你每月实际的 diff 量。你可能根本不需要我。