[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-61":3},{"id":4,"title":5,"title_en":6,"abstract":7,"abstract_en":8,"content":9,"content_en":9,"category":10,"banner_id":11,"banner_path":12,"tags":13,"is_recommend":15,"prev_article":16,"next_article":20,"created_at":24},61,"git-air 命令使用手册","git-air command manual","> 当前项目版本：`v1.0.6`  \n> 项目地址：\u003Chttps:\u002F\u002Fgithub.com\u002Func","> Current project version: `v1.0.6`  \n> Project address: \u003Chttps:\u002F\u002Fgithub.com\u002Func","> 当前项目版本：`v1.0.6`  \n> 项目地址：\u003Chttps:\u002F\u002Fgithub.com\u002Funclesam-ly\u002Fgit-air>\n\n`git-air` 是一个使用大模型审查 Git 代码变更的命令行工具，适合在提交前检查 Bug、安全问题、并发问题、资源泄漏和代码质量问题。\n\n## 一、安装\n\n### Go 安装\n\n```bash\ngo install github.com\u002Funclesam-ly\u002Fgit-air@latest\ngit-air version\n```\n\n### 从源码编译\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Funclesam-ly\u002Fgit-air.git\ncd git-air\ngo build -o git-air .\nsudo mv git-air \u002Fusr\u002Flocal\u002Fbin\u002F\n```\n\n## 二、命令总览\n\n| 命令 | 用途 |\n|---|---|\n| `git air` | 审查当前 Git 变更 |\n| `git air [diff 参数]` | 审查指定提交、分支差异或文件 |\n| `git air config set` | 设置全局配置 |\n| `git air config get` | 查看当前配置 |\n| `git air msg` | 生成 Conventional Commit Message |\n| `git air hook install` | 安装 pre-commit Hook |\n| `git air hook uninstall` | 卸载 pre-commit Hook |\n| `git air version` | 查看版本信息 |\n| `git air update` | 升级到最新版本 |\n| `git air upgrade` | `update` 的别名 |\n\n## 三、代码审查命令\n\n```bash\n# 审查当前暂存区\ngit add .\ngit air\n\n# 显式审查暂存区\ngit air --cached\ngit air --staged\n\n# 审查上一次提交\ngit air HEAD~1\n\n# 审查指定提交\ngit air abc1234\n\n# 审查两个分支之间的差异\ngit air main..feature-branch\n\n# 审查指定文件\ngit air internal\u002Fservice\u002Fuser.go\n```\n\n### 临时覆盖模型配置\n\n```bash\ngit air --provider deepseek --model deepseek-chat\ngit air --key \"YOUR_API_KEY\"\ngit air --prompt \"重点检查并发安全、错误处理和资源释放问题\"\n```\n\n### 阻断相关选项\n\n```bash\n# 严格模式：WARNING 也会阻断流程\ngit air --strict\n\n# 非阻断模式：只输出报告，不因问题返回非零状态\ngit air --no-block\n```\n\n普通模式下，发现 `[BLOCKER]`、`[CRITICAL]` 或 `[REJECT]` 时会阻断流程；严格模式下，`[WARNING]` 和 `[WARN]` 也会阻断流程。\n\n### 代码审查参数\n\n| 参数 | 简写 | 说明 |\n|---|---|---|\n| `--key` | `-k` | 临时指定 API Key |\n| `--model` | `-m` | 临时指定模型名称 |\n| `--provider` | `-p` | 临时指定模型提供商 |\n| `--prompt` | 无 | 临时指定 System Prompt |\n| `--cached` | 无 | 审查暂存区变更 |\n| `--staged` | 无 | `--cached` 的另一种写法 |\n| `--strict` | 无 | WARNING 也会阻断流程 |\n| `--no-block` | 无 | 不阻断流程 |\n\n## 四、配置命令\n\n### 设置和查看配置\n\n```bash\ngit air config set --provider gemini --key \"YOUR_API_KEY\"\ngit air config set --provider deepseek --key \"YOUR_KEY\" --model deepseek-chat\ngit air config get\n```\n\n### 支持的 Provider\n\n`gemini`、`claude`、`grok`、`deepseek`、`qwen`、`zhipu`、`moonshot`、`siliconflow`、`doubao`、`minimax`、`yi`、`groq`、`openrouter`、`ollama`、`openai`、`custom`。\n\n### 常用配置示例\n\n```bash\n# Gemini\ngit air config set --provider gemini --key \"YOUR_KEY\" --model gemini-3.7-flash\n\n# Claude\ngit air config set --provider claude --key \"YOUR_KEY\" --model anthropic\u002Fclaude-3.7-sonnet\n\n# DeepSeek\ngit air config set --provider deepseek --key \"YOUR_KEY\" --model deepseek-chat\n\n# Qwen\ngit air config set --provider qwen --key \"YOUR_KEY\" --model qwen-plus\n\n# OpenAI\ngit air config set --provider openai --key \"YOUR_KEY\" --model gpt-4o-mini\n\n# OpenRouter\ngit air config set --provider openrouter --key \"YOUR_KEY\"\n```\n\n### 使用 Ollama 本地模型\n\n```bash\nollama pull qwen2.5-coder\ngit air config set --provider ollama --model qwen2.5-coder\ngit air\n```\n\n### 自定义 OpenAI-compatible API\n\n```bash\ngit air config set \\\n  --provider custom \\\n  --base-url \"https:\u002F\u002Fyour-api.example.com\u002Fv1\" \\\n  --key \"YOUR_API_KEY\" \\\n  --model \"your-model\"\n```\n\n### 自定义 Token 价格\n\n单位为美元 \u002F 1M tokens：\n\n```bash\ngit air config set --price-input 0.75 --price-output 3.75\n```\n\n### 设置 Commit Message 语言\n\n```bash\ngit air config set --commit-lang en\ngit air config set --commit-lang zh\ngit air config set --commit-lang ja\ngit air config set --commit-lang ko\ngit air config set --commit-lang auto\n```\n\n### `config set` 参数\n\n| 参数 | 简写 | 说明 |\n|---|---|---|\n| `--provider` | `-p` | 模型提供商 |\n| `--key` | `-k` | API Key |\n| `--model` | `-m` | 模型名称 |\n| `--base-url` | `-u` | 自定义 API 地址 |\n| `--prompt` | 无 | 自定义基础 System Prompt |\n| `--price-input` | 无 | 输入 Token 价格 |\n| `--price-output` | 无 | 输出 Token 价格 |\n| `--commit-lang` | 无 | Commit Message 语言 |\n\n## 五、AI Commit Message\n\n```bash\n# 根据当前变更生成提交信息\ngit air msg\n\n# 指定语言\ngit air msg -l en\ngit air msg -l zh\ngit air msg -l ja\ngit air msg -l ko\n\n# 自动暂存所有修改（等价于 git add -A）\ngit air msg -a\n\n# 生成后直接执行 git commit\ngit air msg -c\n\n# 自动暂存、生成并直接提交\ngit air msg -a -c\n```\n\n`git air msg` 支持以下别名：\n\n```bash\ngit air commit-msg\ngit air commit\n```\n\n### `msg` 参数\n\n| 参数 | 简写 | 说明 |\n|---|---|---|\n| `--lang` | `-l` | `auto`、`zh`、`en`、`ja`、`ko` |\n| `--all` | `-a` | 自动执行 `git add -A` |\n| `--commit` | `-c` | 生成后直接执行 `git commit` |\n| `--key` | `-k` | 临时指定 API Key |\n| `--model` | `-m` | 临时指定模型 |\n| `--provider` | `-p` | 临时指定 Provider |\n\n## 六、Git Pre-commit Hook\n\n```bash\n# 在当前仓库安装\ngit air hook install\n\n# 卸载\ngit air hook uninstall\n```\n\n安装后，每次执行 `git commit` 都会自动审查暂存区代码。\n\n紧急跳过：\n\n```bash\ngit commit --no-verify\n```\n\n## 七、版本和升级\n\n```bash\n# 查看版本\ngit air version\n\n# 检查新版本\ngit air version --check\ngit air version -c\n\n# 升级\ngit air update\ngit air upgrade\n```\n\n升级命令底层使用 `go install github.com\u002Funclesam-ly\u002Fgit-air@latest`，需要本机安装 Go。\n\n## 八、项目规则：`.airules`\n\n在项目根目录创建 `.airules`，为 AI Review 增加团队规范：\n\n```markdown\n# Team Coding Guidelines\n\n1. 所有 SQL 操作必须位于 DAO 或 Repository 层；\n2. 共享变量必须使用 sync.RWMutex 或 sync\u002Fatomic；\n3. 打开的文件、数据库连接和 HTTP Body 必须及时关闭；\n4. 不允许静默忽略错误。\n```\n\n## 九、忽略文件：`.airignore`\n\n在项目根目录创建 `.airignore`，排除不希望提交给模型的文件：\n\n```gitignore\ndocs\u002F\n*.md\ntestdata\u002F\ntests\u002Fmock\u002F\n*.env\nsecrets.yaml\n```\n\n项目还会自动过滤部分锁文件、生成文件和二进制文件，以减少无意义的 Token 消耗。\n\n## 十、配置优先级\n\n从低到高大致为：\n\n1. 默认配置；\n2. 全局配置：`~\u002F.git-air\u002Fconfig.yaml`；\n3. 项目配置：`.git-air.yaml`、`.git-air.yml` 或 `git-air.yaml`；\n4. 环境变量；\n5. 命令行参数。\n\n常用环境变量：\n\n```bash\nexport GIT_AIR_API_KEY=\"YOUR_API_KEY\"\nexport GIT_AIR_PROVIDER=\"deepseek\"\nexport GIT_AIR_MODEL=\"deepseek-chat\"\nexport GIT_AIR_BASE_URL=\"https:\u002F\u002Fapi.example.com\u002Fv1\"\nexport GIT_AIR_COMMIT_LANG=\"en\"\n```\n\n查看最终生效配置：\n\n```bash\ngit air config get\n```\n\n## 十一、推荐工作流\n\n```bash\n# 修改代码后暂存\ngit add .\n\n# 提交前审查\ngit air\n\n# 修复问题后重新暂存\ngit add .\n\n# 生成规范提交信息并提交\ngit air msg -c\n```\n\n如果希望每次提交自动审查：\n\n```bash\ngit air hook install\n```\n\n## 十二、常见问题\n\n### 没有配置 API Key\n\n```bash\ngit air config set --provider deepseek --key \"YOUR_API_KEY\"\n```\n\n使用 Ollama 时不需要云端 API Key：\n\n```bash\ngit air config set --provider ollama --model qwen2.5-coder\n```\n\n### 没有检测到代码变更\n\n```bash\ngit status\ngit diff\ngit diff --cached\ngit add \u003C文件名>\ngit air --cached\n```\n\n### 临时切换模型\n\n```bash\ngit air --provider ollama --model qwen2.5-coder\n```\n\n该方式不会修改全局配置。\n\n## 十三、许可证\n\n项目采用 MIT License，欢迎提交 Issue、Pull Request 和改进建议。\n\n","AI",33,"https:\u002F\u002Fblog4-1316398321.cos.ap-nanjing.myqcloud.com\u002Fblog5\u002F20260621005326__NASA-地球-太空.png",[14,10],"GO",false,{"id":17,"title":18,"title_en":19},60,"写了个命令行小玩具：在终端敲一下 `git air`，让 AI 帮我挑刺","I wrote a little command-line toy: tap 'git air' on the terminal and ask AI to help me find fault",{"id":21,"title":22,"title_en":23},0,"已经是最后一篇了","It's already the last one","2026-08-22T23:08:09.929239+08:00"]