周一早上9点半,我的GitHub界面通常挂着15个未处理的PR。一半是缩进不对、变量名起得随意这类琐事,另一半才是真正需要动脑的架构问题。2026年3月之前,我像个带呼吸的Linter——拿着资深工程师的工资,干着语法检查器的活。
三个月后的现在,这个数字变成了6小时。不是我辞职了,是我造了一个本地AI代理,专门啃第一遍代码审查的硬骨头。它跑在我的Mac Studio M3 Ultra上,代码不出办公室,评论自动贴到PR里。
![]()
这篇写清楚我怎么搭的、哪里摔过跤、以及为什么你也该动手。
先算账:人审到底浪费在哪
2026年Q1,我们团队每周平均45个PR。我初审一个大概15分钟,算下来每周11.25小时纯审查时间。但这里有组数据很扎眼:40%的PR带着CI/CD漏掉的基础问题——未使用的import、不一致的错误处理、TypeScript里缺类型定义。
这些本该机器干。但我之前没有机器,只能人肉扫。
我需要的东西很明确:能读diff、理解整个代码库的上下文、在我打开PR之前就标出逻辑漏洞。Copilot Chat能用,但每次都要手动敲prompt,不够自动化。我要的是条件触发、自动评论、零人工干预。
技术栈:本地LLM+GitHub Actions
核心约束只有一个:代码不能出公司。2026年了,大多数企业仍禁止把核心逻辑丢给公有云LLM。我选了Ollama跑Llama 3.3 70B,塞进办公室那台Mac Studio M3 Ultra。推理速度够用,数据全在本地。
编排层用Python脚本,GitHub Actions触发。流程很直白:
1. PR创建或更新
2. Action触发脚本
3. 脚本拉取diff和相关文件上下文
4. 发给本地Ollama实例
5. LLM返回结构化JSON
6. 脚本把评论写回PR
最难的不是模型,是上下文管理
你不能把整个代码库塞进prompt。Token上限会炸,模型也会懵。我的策略是"变更文件+直接依赖"——比如auth.ts改了,就把user_model.ts也塞进上下文窗口。
Prompt结构我卡得很死,方便后端解析。系统角色设定成Senior Staff Engineer,目标明确:找逻辑错误、安全漏洞、性能瓶颈。风格问题一律不管,Linter会处理。
输出格式强制JSON,带severity字段(critical/warning/suggestion)和具体行号引用。这样脚本能直接映射到代码位置,不用正则瞎猜。
实际跑起来什么样
第一周就抓到个生产级bug。同事重构支付模块时,把异步验证改成了同步,但忘记处理超时。CI全绿,人工审查也很容易滑过去—— diff看起来就是几行await的增删。AI标出来了:timeout未处理,可能阻塞主线程。
这类问题占我现在的审查精力。语法、格式、拼写错误?AI批完我扫一眼,点approve。架构层面的耦合、边界情况遗漏、潜在竞态条件?这才是我花时间的地方。
踩过的坑
Token预算比想象中紧。Llama 3.3 70B的上下文窗口够大,但代码库的依赖图一展开,很容易超。我最后做了两层过滤:先按文件路径匹配找直接依赖,再用AST解析确认符号引用关系,没引用的不塞。
另一个坑是幻觉。模型偶尔会"建议"一个根本不存在的函数,或者把某行代码的错误安到另一行。我的解法是在prompt里加约束:每条批评必须引用具体代码片段,不能泛泛而谈。后端再校验行号是否真实存在。
还有延迟问题。大diff的推理能拖到90秒,GitHub Action默认超时是60秒。我改了workflow配置,也加了缓存——没变更的文件上下文直接复用,不重复生成embedding。
为什么本地而不是云端
除了隐私,成本也是因素。按我们团队的PR量,调OpenAI或Anthropic的API,每月大概烧掉400-600美元。Mac Studio是一次性投入,Ollama开源免费。三个月已经回本。
更重要的是可控。我可以换模型——试过Qwen 2.5 72B,中文代码库表现更好;可以调temperature,让输出更确定;可以改system prompt,适配我们团队的代码规范。云端API给不了这种粒度。
你现在就能动手
不需要等公司批准预算。一台M系列Mac、Ollama、几百行Python,周末就能搭出MVP。从单个仓库的自动评论开始,跑两周看假阳性率,再迭代prompt。
我的配置已经开源在GitHub,搜"local-pr-agent-ollama"能找到。但别直接复制——你们团队的代码结构、审查重点、接受的风险级别都不一样。拿它当骨架,自己长肉。
最后一点:这玩意不会取代人审。它把我从"检查变量名"解放到"思考架构合理性",审查质量反而上去了。每周省下的6小时,我拿来写设计文档、做技术调研、或者准点下班。都值。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.