ai-pre-commit-reviewer
ispuppy/ai-pre-commit-reviewer加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有过这样的经历——辛辛苦苦写完代码,git commit && git push 一气呵成,结果 Code Review 阶段被同事指出一个 XSS 漏洞,或者一个未处理的边界条件导致线上 Bug?
传统的代码审查依赖人工,效率低、覆盖不全,尤其在 CI/CD 流水线中往往因为时间紧迫而被简化处理。ai-pre-commit-reviewer 正是为解决这一痛点而生——它将 AI 代码审查"下沉"到每一次 git commit 的前一刻,在代码进入版本控制系统之前就完成质量把控。
该工具通过 git diff -U0 解析当前提交的变更内容,将增量代码发送给 AI 模型,从以下四个维度进行审查:
| 审查维度 | 检查内容 | 严重性级别 |
|---|---|---|
| 常规质量 | 潜在 bug、代码异味、可读性、改进建议 | 高/中/低 |
| 安全漏洞 | XSS、CSRF、CORS、第三方脚本安全 | 高/中 |
| 性能问题 | 算法影响、内存使用、I/O 操作、并发问题 | 高/中 |
| 代码风格 | 命名一致性、代码组织、文档更新 | 低 |
审查结果通过颜色高亮输出(绿色=通过,红色=拒绝),若发现高严重性问题则阻止 commit 提交,帮助开发者在代码进入仓库前就修复问题。
该项目采用 Provider-Adapter 模式设计,通过适配器层封装不同 AI 厂商的 API 调用细节:
开发者只需在 package.json 中配置 providerType 和 apiKey,即可切换不同后端:
"aiCheckConfig": {
"providerType": "DEEPSEEK",
"apiKey": "sk-xxx",
"model": "deepseek-coder",
"baseURL": "https://api.deepseek.com"
}
对于安全敏感项目(如金融、医疗),Ollama/LM Studio 的本地部署方案可以在完全不依赖外部网络的前提下完成 AI 审查。
src/
├── ai-review.js # CLI 入口,解析参数、加载配置
├── cli.js # git pre-commit hook 安装脚本
├── core.js # 核心 CodeReviewer 类,分块处理 diff
├── prompts.js # AI 审查规则配置(system prompt + 维度规则)
├── AIError.js # 自定义错误类
└── providers/
├── index.js # 适配器注册中心(Factory 模式)
├── base.js # 抽象基类
└── adapters/
├── openai.js # OpenAI/Deepseek 适配器
└── ollama.js # Ollama 本地适配器
核心审查流程:core.js 中的 CodeReviewer 类负责将超长 diff 拆分为多个 chunk(默认每块 12000 tokens),分批发送给 LLM 并合并结果。这种设计有效规避了单次请求的 token 上限问题。
安装(NPM):
npm install --save-dev ai-pre-commit-reviewer
npx add-ai-review # 一键配置 pre-commit hook
配置(package.json):
"aiCheckConfig": {
"providerType": "OPENAI",
"apiKey": "sk-your-key",
"model": "gpt-4"
}
已有 husky 项目的用户只需在 husky hooks 中调用 npx ai-code-review-run 即可。
ai-pre-commit-reviewer 代表了 AI 辅助开发工具的一个重要方向——将 AI 能力嵌入开发工作流的最小单元(一次 commit)。相比 Copilot 的"实时补全",它的定位更偏向"提交前的最后一道关卡"。这种"左移"(Shift-Left)思维在 DevSecOps 实践中具有重要价值,未来有望与 SAST、依赖检查等工具深度整合,构建更完整的代码质量防线。