我写了一个 AI 代码质量流水线,一行命令搞定 Review + 修复 + 测试 + 报告
我写了一个 AI 代码质量流水线,一行命令搞定 Review + 修复 + 测试 + 报告
零依赖、支持 6 大 AI 厂商、
npx即跑,让 Vibe Coding 不再裸奔。
背景:Vibe Coding 时代的质量焦虑
2025-2026 年,AI 辅助编码(Cursor、Copilot、Windsurf……)让开发效率翻了几倍,但也带来了一个新问题:
AI 写得快,但谁来保证质量?
你让 Cursor 帮你写了一个 Vue 组件,它跑起来了,但——
- 有没有 XSS 风险?
- 边界值处理了吗?空值呢?
- 类型是不是全用的
any? - 错误处理有没有吞掉异常?
人工 Review?一个人的项目、外包团队、或者 996 的你,根本没时间。
所以我做了这个工具:ai-review-pipeline —— 让 AI 审查 AI 写的代码。
npx ai-review-pipeline
一行命令,Review → 测试用例 → HTML 报告,全自动。
它能做什么
默认模式:Review + 测试 + 报告(只读)
npx ai-rp --file src/views/Home.vue --full
执行流程:
① AI Code Review(评分 + 问题列表 + 修复建议)
↓
② AI 测试用例生成(功能 / 对抗 / 边界三类)
↓
③ HTML 可视化报告
↓
④ 有 🔴 问题 → exit(1) 阻断 CI;全绿 → exit(0) 放行
不改你一行代码,只审查、只报告。
终端实际运行效果:
![]()
--fix 模式:自动修复循环
npx ai-rp --fix --file src/views/Home.vue --full
执行流程:
① Review → 发现 3 个 🔴 问题
↓
② AI 自动修复(只改质量问题,不碰业务逻辑)
↓
③ 再次 Review → 还剩 1 个 🔴
↓
④ 再修 → 再审 → 0 个 🔴 ✅
↓
⑤ 测试用例生成
↓
⑥ HTML 报告
↓
⑦ 自动 git commit
修到没问题为止,最多跑 N 轮(默认 5 轮)。如果 N 轮还没修完?也不会卡死——照样出测试和报告,然后 exit(1) 告诉 CI "还有问题"。
自动生成的 HTML 可视化报告:
![]()
30 秒上手
# 1. 配 Key(任选一个 AI 服务)
echo 'DEEPSEEK_API_KEY=sk-xxx' >> .env.local
# 2. 跑
npx ai-review-pipeline --file src/ --full
没了。不需要 npm install,不需要配置文件,不需要注册账号。
核心设计决策
为什么是统一流水线而不是分散命令?
v2 的时候我拆了三个命令:review、fix、test。用了一段时间发现一个问题:
90% 的场景是 "帮我看一遍 + 出测试 + 出报告",每次要敲三遍命令太蠢了。
v3 改成了统一流水线:
| 操作 | 命令 |
|---|---|
| 默认(review + test + report) | ai-rp |
| 自动修复 | ai-rp --fix |
| 独立测试生成 | ai-rp test --file xxx |
一个命令解决 90% 的需求,--fix 是增强开关。review 和 fix 保留为别名,向下兼容。
Exit Code 的设计
这个工具的核心场景是 Git Hook + CI 门禁,exit code 必须精确:
| 场景 | Exit Code | 含义 |
|---|---|---|
| Review 通过 | 0 |
放行 |
| 有 🔴 问题 | 1 |
阻断提交/合并 |
--fix 修好了 |
0 |
放行 + auto commit |
--fix 没修好 |
1 |
阻断,但报告照出 |
最后一个是关键:即使 --fix 失败,测试和报告也会生成。因为报告是给人看的,不是放行的理由。CI 里可以把报告作为 artifact 上传,方便排查。
6 大 AI 厂商,自动识别
# 设一个 Key 就行,工具自动识别你用的哪家
OPENAI_API_KEY=sk-xxx # → OpenAI
DEEPSEEK_API_KEY=sk-xxx # → DeepSeek(国内推荐)
ANTHROPIC_API_KEY=sk-ant-xxx # → Claude
DASHSCOPE_API_KEY=sk-xxx # → 通义千问
GEMINI_API_KEY=xxx # → Google Gemini
AI_REVIEW_PROVIDER=ollama # → 本地 Ollama(免费)
| Provider | 默认模型 | 特点 |
|---|---|---|
| OpenAI | gpt-4o-mini | 稳定,生态好 |
| DeepSeek | deepseek-chat | 便宜,国内快,推荐 |
| Claude | claude-sonnet-4 | 代码理解力强 |
| 通义千问 | qwen-plus | 阿里云,国内合规 |
| Gemini | gemini-2.0-flash | Google,免费额度多 |
| Ollama | qwen2.5-coder | 完全本地,零成本,隐私安全 |
不想把代码传到云端?用 Ollama:
ollama pull qwen2.5-coder
echo 'AI_REVIEW_PROVIDER=ollama' >> .env.local
npx ai-rp --file src/ --full
审查维度
不是随便跑一遍就完事。Review prompt 按严重程度分了三级:
🔴 必修(阻塞合并)
逻辑错误、安全漏洞(XSS / 注入 / 敏感信息泄露)、数据风险(并发 / 金额精度 / 状态流转错误)
🟡 建议(应该修复)
边界未处理(空值 / undefined / 超时 / 重复提交)、类型问题(any / as 断言)、错误处理缺失
🟢 优化(后续改进)
代码重复、命名不清、性能隐患
最终输出结构化 JSON + Markdown,机器和人都能消费。
测试用例生成
不只是 review,还会自动生成三类测试用例:
| 类型 | 覆盖什么 |
|---|---|
| ✅ 功能用例 | CRUD、状态流转、组件渲染、API 调用 |
| ⚔️ 对抗用例 | XSS 注入、SQL 注入、超长字符串、越权 |
| 🔲 边界用例 | 空值、0、负数、MAX_SAFE_INTEGER、超时 |
输出包含用例描述 + 可运行的测试代码(自动检测技术栈:Vitest / Jest / pytest / Go testing)。
项目配置文件
npx ai-rp init
生成 .ai-pipeline.json,提交到 git,团队共享:
{
"review": {
"threshold": 95,
"maxRounds": 5,
"customRules": [
"禁止使用 any 类型",
"API Key / Secret 不得硬编码",
"所有 API 请求必须有错误处理"
]
},
"test": {
"stack": "auto",
"maxCases": 8
},
"report": {
"outputDir": ".ai-reports",
"open": true
}
}
customRules 是亮点——你可以写团队自己的规范,AI 会在每次 review 时强制检查。
CI/CD 集成
GitHub Actions
- name: AI Code Review
run: npx ai-review-pipeline --json
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Git Hook(lefthook)
# lefthook.yml
pre-push:
commands:
ai-review:
run: npx ai-rp --fix --max-rounds 3
push 之前自动审查 + 修复,没过就阻断。
和同类工具的对比
| 维度 | ai-review-pipeline | CodeRabbit | SonarQube |
|---|---|---|---|
| 部署 |
npx 即跑,零配置 |
SaaS,需注册 | 需部署服务器 |
| 依赖 | 零 dependencies | — | Java 运行时 |
| 自动修复 | ✅ 多轮迭代 | ❌ | ❌ |
| 测试生成 | ✅ 三类用例 | ❌ | ❌ |
| AI 模型 | 6 家可选 + 本地 | 固定 | 规则引擎(非 AI) |
| 数据隐私 | Ollama 完全本地 | 代码上传云端 | 自建可控 |
| 价格 | 按 token 付费(DeepSeek 几毛钱) | $15/月起 | 社区版免费 |
核心差异:这不是一个 SaaS 产品,是一个 CLI 工具。你的代码不经过任何中间服务器,直接调 AI API。
技术实现
架构
bin/cli.mjs # CLI 入口,命令路由
src/commands/
pipeline.mjs # 统一流水线(review + fix + test + report)
review.mjs # review prompt 构建 + 结果解析
test.mjs # 独立测试生成
init.mjs # 配置初始化
src/core/
ai-client.mjs # 多 Provider 统一调用层
config.mjs # 配置加载与合并
diff.mjs # git diff / 文件读取
env.mjs # .env.local 加载
report.mjs # HTML 报告生成
logger.mjs # 日志 + i18n
src/i18n/
zh.mjs / en.mjs # 中英文消息
几个实现细节
1. 多 Provider 统一调用
除了 Claude(Anthropic 用自己的 Messages API),其他厂商都兼容 OpenAI 格式。所以只需两个调用函数:
// OpenAI / DeepSeek / Qwen / Gemini / Ollama → 统一格式
callOpenAICompatible({ baseUrl, apiKey, model, prompt })
// Claude → 独立处理(不同的 header 和 response 格式)
callClaude({ baseUrl, apiKey, model, prompt })
Provider 自动识别基于 Key 前缀(sk-ant- → Claude)和 Base URL 模式匹配。
2. 安全修复机制
自动修复有一个安全阀:修复后的文件不能低于原文件的 50%。防止 AI "修"出一个删了大半代码的结果。
if (fixed.trim().length < source.trim().length * safetyMinRatio) {
// 跳过这次修复
}
3. 零依赖
整个工具 0 个 required dependency。Node.js 18+ 的 fetch 直接调 API,child_process 跑 git 命令,fs 读写文件。唯一的 optional peer dependency 是 https-proxy-agent(代理场景)。
真实使用场景
场景一:个人项目的质量兜底
你用 Cursor 一口气写了 2000 行代码,跑一遍:
npx ai-rp --file src/ --full
3 分钟后得到 HTML 报告,告诉你哪里有隐患。
场景二:团队 Git Hook 门禁
在 lefthook.yml 里配一行,每次 push 前自动审查:
pre-push:
commands:
ai-review:
run: npx ai-rp
有 🔴 问题就阻断,团队代码质量有底线。
场景三:CI/CD 里的质量卡点
GitHub Actions 里加一个 step:
- run: npx ai-review-pipeline --json
env:
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
PR 不过 review 就不能合并。
场景四:接手遗留代码
接了一个没文档的老项目,先扫一遍:
npx ai-rp --file src/ --full --no-test
快速了解有哪些坑。
常用命令速查
# 默认模式:审查 + 测试 + 报告(不改代码)
ai-rp
ai-rp --file src/views/Home.vue --full
ai-rp --file src/ --full
# 修复模式:审查 + 自动修复 + 测试 + 报告
ai-rp --fix
ai-rp --fix --file src/a.vue --full --max-rounds 3
# 独立测试
ai-rp test --file src/utils.ts
# 初始化配置
ai-rp init
开源地址
- npm: ai-review-pipeline
- GitHub: hyxnj666-creator/ai-review-pipeline
- License: MIT
npx ai-review-pipeline --file src/ --full
试试看,3 分钟给你的代码做一次体检。
如果对你有帮助,给个 ⭐ 或者掘金点个赞,是我继续迭代的动力。
有问题或建议欢迎提 issue 或评论区交流。