作者:UncleSam
项目开源地址:github.com/unclesam-ly/git-air
01. 事情的起因:AI 写代码一时爽,Review 起来火葬场
现在的程序员,写代码基本上都离不开 AI 辅助了(Cursor、Copilot、各种大模型插件)。
几秒钟就能刷刷生成上百行代码,开发速度确实飞快。
但不知道你有没有发现一个越来越头疼的痛点:
- AI 写的代码“看起来太完美了”:排版整齐、注释漂亮、语法毫无毛病,让人很容易产生盲目信任;
- 自己问生成 AI“有没有 Bug”,它只会自卖自夸:在同一个对话上下文里,生成代码的那个 AI 往往有很强的“思维惯性”和“自恋幻觉”,你问它“这样写对吗”,它大概率自信满满地回复“代码完全正确,逻辑非常健壮!”;
- 人类的肉眼极难发现那些隐蔽暗坑:比如在某个隐蔽的
if err != nil提前return时漏了解锁(Mutex Leak)、协程内部缺少recover、循环体内频繁创建未关闭的连接……这些问题肉眼一扫极容易漏掉。
这就陷入了一个尴尬的死循环:AI 负责批量生产代码,人类程序员负责在半夜线上崩溃时擦屁股。
我就在想:能不能搞一个独立、冷酷、完全剥离聊天上下文的“第三方审查员”,在本地准备提交前,用放大镜给我严格挑刺?
于是我花了一下午时间,用 Go 写了这个轻量级的命令行小玩具——git-air。
02. 这小玩具是干嘛的?
简单来说,它就像一个坐在你工位旁边、嘴有点损但眼神极毒的资深架构师同事。
它完全不关心你之前是手写的还是 AI 生成的,也不受任何对话上下文的干扰。你在终端改完代码,直接在命令行敲一行:
bash
git air
它就会自动抓取你刚改动的代码差异(git diff),以最严厉的视角进行扫描,在终端逐字吐出审查意见:
text
[git-air] 代码评审中... (Engine: gemini / gemini-3.7-flash)
─────────────────────────────────────────────────────────────────
#### 变更概述
在用户登录接口中增加了 Redis 缓存逻辑。
#### 详细审查意见
- [BLOCKER] internal/service/user.go:45 - 致命缺陷:在循环中直接拼接 SQL 字符串,存在明显的 SQL 注入风险,且未做参数校验。
// 修复代码
db.Where("username = ?", inputName).First(&user)
- [WARNING] internal/service/user.go:82 - 潜在隐患:查询 Redis 失败后直接忽略了错误,当缓存击穿时会导致所有流量压向数据库。
- [WARNING] internal/service/user.go:103 - 资源泄漏:AI 生成的代码在 early return 分支中未调用 defer unlock(),存在并发死锁隐患。
#### 评审结论
- 结论: [REJECT]
- 评分: 60 / 100
─────────────────────────────────────────────────────────────────
没有虚伪的客套,不搞“整体写得真棒”那一套,有 Bug 说 Bug,并且直接给出修改前后的代码补丁。
用 AI 的放大镜,去审查 AI 生成的代码——这就叫**“用魔法打败魔法”**。
03. 它有什么好玩的特性?
虽然只是个几百行 Go 代码的小玩具,但麻雀虽小,五脏俱全:
1. 像空气一样轻(极速单二进制)
纯 Go 编写,没有复杂的后台守护进程,不用装 Docker。用 go install 安装完就是一个独立的小工具,敲命令就跟敲 git status 一样顺手。
2. 不浪费你的 Token(智能降噪)
平时 git diff 经常会带出一大堆恶心人的文件,比如几万行的 go.sum、package-lock.json、自动生成的 *.pb.go。
git-air 会自动把这些垃圾锁文件过滤掉,只把真正的手写核心代码发给 AI,省钱又省时间。
3. 市面上的大模型全都能用
你想用什么模型都行,它预置了国内外几乎所有大模型的官方地址,一行命令就能切:
- 想极速又便宜:用 Google Gemini;
- 想看深度逻辑推理:用 DeepSeek;
- 怕代码传到外网:用本地的 Ollama(100% 离线隐私审查,断网也能跑);
- 还有 Claude-3.7、Grok、通义千问 Qwen、智谱 GLM、Kimi、OpenAI,想用哪个用哪个。
4. 团队规则(.airules)
你在项目根目录扔一个叫 .airules 的文件,写上你们团队的铁律(比如:“禁止裸写 SQL”、“所有并发必须传 Context”)。
AI 在审查时就会拿你们的专属家规来卡代码,特别适合给团队统一代码风格。
04. 怎么玩起来?
只要你本地有 Go 环境,两步搞定:
步骤一:安装
bash
go install github.com/unclesam-ly/git-air@latest
步骤二:配个 Key
比如用 Gemini(推荐,速度飞快):
bash
git air config set --provider gemini --key "你的API_KEY"
或者用 DeepSeek:
bash
git air config set --provider deepseek --key "你的KEY" --model deepseek-chat
步骤三:直接跑!
随便进入你的任意 Git 项目目录:
bash
# 评审当前修改的代码
git air
# 或者评审刚刚提交的那一次 Commit
git air HEAD~1
# 或者只审查某个文件
git air internal/service/chat.go
甚至你敲一行 git air hook install,它就会自动变成 Git 的提交拦截门禁,提交有高危代码时直接在终端提醒你。
05. 结语
写这个东西不是为了搞什么宏大的“企业数字化革命”,纯粹是为了让自己在享受 AI 写代码的高效时,能多一个冷静客观的“把关人”,少写点低级 Bug、少加点无意义的班。
顺便还给它画了个挺萌的吉祥物 Logo:一只头戴飞行风镜、披着小斗篷、拿着放大镜找 Bug 的 Go 地鼠。
代码完全开源在 GitHub,一共就几百行 Go 代码,架构很干净。如果你平时也是命令行重度用户,欢迎拿去当个玩具把玩把玩,点个 Star 或者提个 PR 一起改着玩!
🔗 GitHub 仓库:https://github.com/unclesam-ly/git-air