我写了一个 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 写的代码。

bash 复制代码
npx ai-review-pipeline

一行命令,Review → 测试用例 → HTML 报告,全自动。


它能做什么

默认模式:Review + 测试 + 报告(只读)

bash 复制代码
npx ai-rp --file src/views/Home.vue --full

执行流程:

scss 复制代码
① AI Code Review(评分 + 问题列表 + 修复建议)
       ↓
② AI 测试用例生成(功能 / 对抗 / 边界三类)
       ↓
③ HTML 可视化报告
       ↓
④ 有 🔴 问题 → exit(1) 阻断 CI;全绿 → exit(0) 放行

不改你一行代码,只审查、只报告。

终端实际运行效果:

--fix 模式:自动修复循环

bash 复制代码
npx ai-rp --fix --file src/views/Home.vue --full

执行流程:

css 复制代码
① Review → 发现 3 个 🔴 问题
       ↓
② AI 自动修复(只改质量问题,不碰业务逻辑)
       ↓
③ 再次 Review → 还剩 1 个 🔴
       ↓
④ 再修 → 再审 → 0 个 🔴 ✅
       ↓
⑤ 测试用例生成
       ↓
⑥ HTML 报告
       ↓
⑦ 自动 git commit

修到没问题为止,最多跑 N 轮(默认 5 轮)。如果 N 轮还没修完?也不会卡死------照样出测试和报告,然后 exit(1) 告诉 CI "还有问题"。

自动生成的 HTML 可视化报告:


30 秒上手

bash 复制代码
# 1. 配 Key(任选一个 AI 服务)
echo 'DEEPSEEK_API_KEY=sk-xxx' >> .env.local

# 2. 跑
npx ai-review-pipeline --file src/ --full

没了。不需要 npm install,不需要配置文件,不需要注册账号。


核心设计决策

为什么是统一流水线而不是分散命令?

v2 的时候我拆了三个命令:reviewfixtest。用了一段时间发现一个问题:

90% 的场景是 "帮我看一遍 + 出测试 + 出报告",每次要敲三遍命令太蠢了。

v3 改成了统一流水线:

操作 命令
默认(review + test + report) ai-rp
自动修复 ai-rp --fix
独立测试生成 ai-rp test --file xxx

一个命令解决 90% 的需求,--fix 是增强开关。reviewfix 保留为别名,向下兼容。

Exit Code 的设计

这个工具的核心场景是 Git Hook + CI 门禁,exit code 必须精确:

场景 Exit Code 含义
Review 通过 0 放行
有 🔴 问题 1 阻断提交/合并
--fix 修好了 0 放行 + auto commit
--fix 没修好 1 阻断,但报告照出

最后一个是关键:即使 --fix 失败,测试和报告也会生成。因为报告是给人看的,不是放行的理由。CI 里可以把报告作为 artifact 上传,方便排查。


6 大 AI 厂商,自动识别

bash 复制代码
# 设一个 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:

bash 复制代码
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)。


项目配置文件

bash 复制代码
npx ai-rp init

生成 .ai-pipeline.json,提交到 git,团队共享:

json 复制代码
{
  "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

yaml 复制代码
- name: AI Code Review
  run: npx ai-review-pipeline --json
  env:
    OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

Git Hook(lefthook)

yaml 复制代码
# 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。


技术实现

架构

bash 复制代码
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 格式。所以只需两个调用函数:

javascript 复制代码
// 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 "修"出一个删了大半代码的结果。

javascript 复制代码
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 行代码,跑一遍:

bash 复制代码
npx ai-rp --file src/ --full

3 分钟后得到 HTML 报告,告诉你哪里有隐患。

场景二:团队 Git Hook 门禁

lefthook.yml 里配一行,每次 push 前自动审查:

yaml 复制代码
pre-push:
  commands:
    ai-review:
      run: npx ai-rp

有 🔴 问题就阻断,团队代码质量有底线。

场景三:CI/CD 里的质量卡点

GitHub Actions 里加一个 step:

yaml 复制代码
- run: npx ai-review-pipeline --json
  env:
    DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}

PR 不过 review 就不能合并。

场景四:接手遗留代码

接了一个没文档的老项目,先扫一遍:

bash 复制代码
npx ai-rp --file src/ --full --no-test

快速了解有哪些坑。


常用命令速查

bash 复制代码
# 默认模式:审查 + 测试 + 报告(不改代码)
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

开源地址

bash 复制代码
npx ai-review-pipeline --file src/ --full

试试看,3 分钟给你的代码做一次体检。


如果对你有帮助,给个 ⭐ 或者掘金点个赞,是我继续迭代的动力。

有问题或建议欢迎提 issue 或评论区交流。

相关推荐
vipbic27 分钟前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy33 分钟前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志1 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
黑科技iOS上架2 小时前
AI不能成为碰触法律底线的牟利工具
经验分享·ai编程
invicinble2 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯3 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜4 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司4 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
努力搬砖的咸鱼4 小时前
如何开始使用agent
ai·agent·ai编程
江华森4 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http