code-review code-review

自动化代码审查技能,用于在代码提交和部署前强制执行代码质量、安全性和性能检查,支持多种AI审查引擎。

测试 0 次安装 0 次浏览 更新于 3/5/2026

代码审查技能

加载方式:base.md + [codex-review.md for OpenAI Codex] + [gemini-review.md for Google Gemini]

目的: 强制实施自动化代码审查作为每次提交和部署前的必经关卡。可以选择Claude、OpenAI Codex、Google Gemini或多个引擎进行全面分析。


审查引擎选择

当运行 /code-review 时,用户可以选择他们偏好的审查引擎:

┌─────────────────────────────────────────────────────────────────┐
│  代码审查 - 选择您的引擎                                    │
├─────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ○ Claude (默认)                                              │
│    内置,无需额外设置,完整的对话上下文                      │
│                                                                     │
│  ○ OpenAI Codex CLI                                            │
│    GPT-5.2-Codex 专门用于代码审查,88% 检出率                 │
│    需要:npm install -g @openai/codex                           │
│                                                                     │
│  ○ Google Gemini CLI                                            │
│    Gemini 2.5 Pro 带有 1M 令牌上下文,提供免费层              │
│    需要:npm install -g @google/gemini-cli                         │
│                                                                     │
│  ○ 双引擎(任意两个)                                          │
│    运行两个引擎,比较发现,捕获更多问题                       │
│                                                                     │
│  ○ 全部三个(最大覆盖)                                        │
│    运行 Claude + Codex + Gemini 针对关键/安全代码             │
│ └─────────────────────────────────────────────────────────────────┘

引擎比较

方面 Claude Codex Gemini 多引擎
设置 npm + OpenAI API npm + Google账户 所有设置
速度 2-3倍时间
上下文 对话 每次审查新 100万个标记 不适用
检出率 良好 88%(最佳) 63.8% SWE-Bench 合并
免费层 不适用 有限 每天1000次 不同
最佳用途 快速审查 高准确度 大型代码库 关键代码

设置默认引擎

# ~/.claude/settings.toml 或项目 CLAUDE.md
[code-review]
default_engine = "claude"  # 选项:claude, codex, gemini, dual, all

使用示例

# 使用默认引擎
/code-review

# 明确选择引擎
/code-review --engine claude
/code-review --engine codex
/code-review --engine gemini

# 双引擎(任选两个)
/code-review --engine claude,codex
/code-review --engine claude,gemini
/code-review --engine codex,gemini

# 全部三个引擎
/code-review --engine all

# 快速快捷方式
/code-review              # 使用默认
/code-review --codex      # 使用Codex
/code-review --gemini     # 使用Gemini
/code-review --all        # 全部三个引擎

多引擎输出

当使用多个引擎时,发现会被比较和去重:

双引擎示例

┌─────────────────────────────────────────────────────────────────┐
│  代码审查结果 - 双引擎(Claude + Codex)                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ✅ 一致(两者都发现):                                     │
│  🔴 SQL注入在auth.ts:45                                 │
│  🟡 在api.ts:112缺少错误处理                        │
│                                                                     │
│  🔷 仅Claude:                                                │
│  🟠 在worker.ts:89可能存在竞态条件                    │
│  🟢 考虑提取辅助函数                         │
│                                                                     │
│  🔶 仅Codex:                                                 │
│  🟠 内存泄漏 - 在upload.ts:34未关闭流               │
│  🟡 在orders.ts:156的N+1查询模式                          │
│ └─────────────────────────────────────────────────────────────────┘

三引擎示例(全部三个)

┌─────────────────────────────────────────────────────────────────┐
│  代码审查结果 - 三引擎                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ✅ 一致(全部三个发现):                                    │
│  🔴 SQL注入在auth.ts:45                                 │
│                                                                     │
│  ✅ 多数(3个中的2个发现):                                    │
│  🟠 内存泄漏 - 在upload.ts:34(Codex+Gemini)│
│  🟡 在api.ts:112缺少错误处理(Claude+Codex)         │
│                                                                     │
│  🔷 仅Claude:                                                │
│  🟠 在worker.ts:89可能存在竞态条件                    │
│                                                                     │
│  🔶 仅Codex:                                                 │
│  🟡 在orders.ts:156的N+1查询模式                          │
│                                                                     │
│  🟢 仅Gemini:                                                │
│  🟡 考虑使用批量API以获得更好的性能             │
│  🟢 在types.ts:23类型可以更具体                  │
│ └─────────────────────────────────────────────────────────────────┘

使用每种模式的时候

模式 使用场景
单个(Claude) 快速的流程审查,探索
单个(Codex) CI/CD自动化,需要高准确度
单个(Gemini) 大型代码库(100+文件),免费层
双引擎 重要的PR,预合并审查
三引擎(全部) 安全关键代码,支付系统,认证

核心理念

┌─────────────────────────────────────────────────────────────────┐
│  代码审查是不可协商的                                  │
│  ─────────────────────────────────────────────────────────────  │
│                                                                     │
│  每次提交都必须通过代码审查。                            │
│  每次PR都必须在合并前进行审查。                        │
│  每次部署都必须包含审查签名。                 │
│                                                                     │
│  AI能捕捉人类遗漏的东西。人类能捕捉AI遗漏的东西。      │
│  一起:更少的错误,更清洁的代码,更好的安全。           │
├─────────────────────────────────────────────────────────────────┤
│  调用:/code-review                                           │
│  插件:code-review@claude-plugins-official                    │
└─────────────────────────────────────────────────────────────────┘

何时运行代码审查

强制审查点

触发器 动作 命令
提交前 审查暂存的更改 /code-review
PR前 审查所有更改与基础对比 /code-review
合并前 PR的最终审查 /code-review
部署前 审查部署差异 /code-review

自动集成

在每次提交前自动运行代码审查:

┌─────────────────────────────────────────────────────────────────┐
│  COMMIT WORKFLOW                                                │
│  ─────────────────────────────────────────────────────────────  │
│                                                                     │
│  1. 编写代码                                                  │
│  2. 运行测试(TDD - 必须通过)                                 │
│  3. 运行 /code-review  ← 强制                                   │
│  4. 解决关键/高问题                                │
│  5. 提交                                                      │
│  6. 推送                                                        │
│                                                                     │
│  跳过步骤3?❌不允许提交                              │
└─────────────────────────────────────────────────────────────────┘

使用代码审查插件

基本使用

# 审查当前更改
/code-review

# 审查特定文件
/code-review src/auth/*.ts

# 审查PR
/code-review --pr 123

# 审查特定焦点
/code-review --focus security
/code-review --focus performance
/code-review --focus architecture

审查类别

代码审查插件分析:

类别 它检查什么
安全 漏洞,注入风险,认证问题,机密
性能 N+1查询,内存泄漏,低效算法
架构 设计模式,SOLID原则,耦合
代码质量 可读性,复杂性,重复
最佳实践 语言习惯用法,框架约定
测试 覆盖率差距,测试质量,边缘情况
文档 缺失文档,过时注释

严重性级别

级别 需要采取的行动 可以提交吗?
🔴 关键 必须立即修复 ❌ 不行
🟠 提交前应该修复 ❌ 不行
🟡 尽快修复,可以提交 ✅ 是
🟢 有则更好 ✅ 是
ℹ️ 信息 仅建议 ✅ 是

提交前钩子集成

安装提交前钩子

#!/bin/bash
# .git/hooks/pre-commit

echo "🔍 运行代码审查..."

# 在暂存文件上运行Claude代码审查
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(ts|tsx|js|jsx|py|go|rs)$')

if [ -n "$STAGED_FILES" ]; then
    # 调用代码审查(需要claude CLI)
    claude --print "/code-review $STAGED_FILES" > /tmp/code-review-result.txt 2>&1

    # 检查关键/高问题
    if grep -q "🔴\|关键\|🟠\|高" /tmp/code-review-result.txt; then
        echo "❌ 代码审查发现关键/高问题:"
        cat /tmp/code-review-result.txt
        echo ""
        echo "修复这些问题后再提交。"
        exit 1
    fi

    echo "✅ 代码审查通过"
fi

exit 0

使钩子可执行

chmod +x .git/hooks/pre-commit

Codex CLI 设置(用于Codex/双引擎模式)

如果你想使用Codex或双引擎模式,安装Codex CLI:

# 先决条件:Node.js 22+
node --version  # 必须是22+

# 安装Codex CLI
npm install -g @openai/codex

# 认证(选择一个):
# 选项1:ChatGPT订阅(Plus, Pro, Team, Enterprise)
codex  # 按照提示登录

# 选项2:API密钥
export OPENAI_API_KEY=sk-proj-...

验证安装

# 检查Codex是否安装
codex --version

# 测试审查
codex
> /review

查看 codex-review.md 技能以获取完整的Codex文档。


Gemini CLI 设置(用于Gemini/多引擎模式)

如果你想使用Gemini或多引擎模式,安装Gemini CLI:

# 先决条件:Node.js 20+
node --version  # 必须是20+

# 安装Gemini CLI
npm install -g @google/gemini-cli

# 或者通过Homebrew(macOS)
brew install gemini-cli

# 安装代码审查扩展
gemini extensions install https://github.com/gemini-cli-extensions/code-review

认证

# 选项1:Google账户(推荐,每天1000次请求免费)
gemini  # 按照浏览器登录提示

# 选项2:API密钥(每天100次请求免费)
export GEMINI_API_KEY="your-key-from-aistudio.google.com"

验证安装

# 检查Gemini是否安装
gemini --version

# 列出扩展
gemini extensions list

# 测试审查
gemini
> /code-review

查看 gemini-review.md 技能以获取完整的Gemini文档。


CI/CD集成

GitHub Actions - 仅Claude

# .github/workflows/code-review.yml
name: 代码审查

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  code-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 获取更改的文件
        id: changed-files
        run: |
          echo "files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | tr '
' ' ')" >> $GITHUB_OUTPUT

      - name: 运行Claude代码审查
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npx @anthropic-ai/claude-code --print "/code-review ${{ steps.changed-files.outputs.files }}" > review.md

      - name: 发布审查评论
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');

            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: `## 🔍 Claude代码审查

${review}`
            });

      - name: 检查关键问题
        run: |
          if grep -q "关键\|🔴" review.md; then
            echo "❌ 发现关键问题"
            exit 1
          fi

GitHub Actions - 仅Codex

# .github/workflows/codex-review.yml
name: Codex代码审查

on:
  pull_request:

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Codex审查
        uses: openai/codex-action@main
        with:
          openai_api_key: ${{ secrets.OPENAI_API_KEY }}
          model: gpt-5.2-codex
          safety_strategy: drop-sudo

GitHub Actions - 双引擎

# .github/workflows/dual-review.yml
name: 双引擎代码审查

on:
  pull_request:

jobs:
  claude-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Claude审查
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npx @anthropic-ai/claude-code --print "/code-review" > claude-review.md

      - uses: actions/upload-artifact@v4
        with:
          name: claude-review
          path: claude-review.md

  codex-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: 安装Codex
        run: npm install -g @openai/codex

      - name: Codex审查
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex exec --full-auto --sandbox read-only \
            --output-last-message codex-review.md \
            "审查这段代码,查找错误、安全问题和质量问题"

      - uses: actions/upload-artifact@v4
        with:
          name: codex-review
          path: codex-review.md

  combine-reviews:
    needs: [claude-review, codex-review]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4

      - name: 合并审查
        run: |
          echo "## 🔍 双引擎代码审查结果" > combined-review.md
          echo "" >> combined-review.md
          echo "### Claude发现" >> combined-review.md
          cat claude-review/claude-review.md >> combined-review.md
          echo "" >> combined-review.md
          echo "### Codex发现" >> combined-review.md
          cat codex-review/codex-review.md >> combined-review.md

      - name: 发布合并审查
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('combined-review.md', 'utf8');
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: review
            });

GitHub Actions - Gemini仅

# .github/workflows/gemini-review.yml
name: Gemini代码审查

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 设置Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: 安装Gemini CLI
        run: npm install -g @google/gemini-cli

      - name: 运行审查
        env:
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
        run: |
          # 获取差异
          git diff origin/${{ github.base_ref }}...HEAD > diff.txt

          # 运行Gemini审查
          gemini -p "审查这个PR差异,查找错误、安全问题和代码质量问题。

          $(cat diff.txt)" > review.md

      - name: 发布审查评论
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: `## 🤖 Gemini代码审查

${review}`
            });

      - name: 检查关键问题
        run: |
          if grep -qi "critical\|security vulnerability\|injection" review.md; then
            echo "❌ 发现关键问题"
            exit 1
          fi

GitHub Actions - 全部三个引擎

# .github/workflows/triple-review.yml
name: 三引擎代码审查

on:
  pull_request:

jobs:
  claude-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Claude审查
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npx @anthropic-ai/claude-code --print "/code-review" > claude-review.md

      - uses: actions/upload-artifact@v4
        with:
          name: claude-review
          path: claude-review.md

  codex-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: 安装Codex
        run: npm install -g @openai/codex

      - name: Codex审查
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex exec --full-auto --sandbox read-only \
            --output-last-message codex-review.md \
            "审查这段代码,查找错误、安全问题和质量问题"

      - uses: actions/upload-artifact@v4
        with:
          name: codex-review
          path: codex-review.md

  gemini-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: 安装Gemini CLI
        run: npm install -g @google/gemini-cli

      - name: Gemini审查
        env:
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
        run: |
          git diff origin/${{ github.base_ref }}...HEAD > diff.txt
          gemini -p "审查这段代码差异,查找错误、安全和质量问题:
          $(cat diff.txt)" > gemini-review.md

      - uses: actions/upload-artifact@v4
        with:
          name: gemini-review
          path: gemini-review.md

  combine-reviews:
    needs: [claude-review, codex-review, gemini-review]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4

      - name: 合并审查
        run: |
          echo "## 🔍 三引擎代码审查结果" > combined-review.md
          echo "" >> combined-review.md
          echo "### 🟣 Claude发现" >> combined-review.md
          cat claude-review/claude-review.md >> combined-review.md
          echo "" >> combined-review.md
          echo "---" >> combined-review.md
          echo "### 🟢 Codex发现" >> combined-review.md
          cat codex-review/codex-review.md >> combined-review.md
          echo "" >> combined-review.md
          echo "---" >> combined-review.md
          echo "### 🔵 Gemini发现" >> combined-review.md
          cat gemini-review/gemini-review.md >> combined-review.md

      - name: 发布合并审查
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('combined-review.md', 'utf8');
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: review
            });

      - name: 检查关键问题
        run: |
          # 如果任何引擎发现关键问题则失败
          if grep -qi "critical\|🔴" combined-review.md; then
            echo "❌ 至少有一个引擎发现了关键问题"
            exit 1
          fi

审查清单

提交前

  • [ ] 在暂存更改上运行 /code-review
  • [ ] 没有关键(🔴)问题
  • [ ] 没有高(🟠)问题
  • [ ] 解决安全问题
  • [ ] 考虑性能问题

PR前

  • [ ] 全部更改的完整代码审查
  • [ ] 解决所有关键/高问题
  • [ ] 为新功能添加测试
  • [ ] 如有需要更新文档

部署前

  • [ ] 审查部署差异
  • [ ] 安全扫描通过
  • [ ] 没有引入新漏洞
  • [ ] 文档化回滚计划

常见审查发现

安全问题(必须修复)

问题 示例 修复
SQL注入 query = f"SELECT * FROM users WHERE id = {id}" 使用参数化查询
XSS innerHTML = userInput 清理或使用textContent
代码中的机密 apiKey = "sk-xxx" 使用环境变量
缺少认证 未受保护的端点 添加认证中间件
不安全的加密 使用MD5/SHA1的密码 使用bcrypt/argon2

性能问题(应该修复)

问题 示例 修复
N+1查询 循环中的单独查询 使用批处理/预加载
内存泄漏 未关闭的连接 使用连接池
缺少索引 慢查询 添加数据库索引
大负载 获取未使用的字段 仅选择所需字段
无分页 加载所有记录 实施分页

代码质量(有则更好)

问题 示例 修复
长函数 100+行 拆分为更小的函数
深层嵌套 5+级别 提前返回,拆分方法
魔法数字 if (status === 3) 使用命名常量
重复代码 复制粘贴的块 提取共享函数
缺少类型 any无处不在 添加适当的TypeScript类型

与TDD工作流集成

┌─────────────────────────────────────────────────────────────────┐
│  TDD + 代码审查工作流                                     │
│  ─────────────────────────────────────────────────────────────  │
│                                                                     │
│  1. 红色:编写失败的测试                                    │
│  2. 绿色:编写通过测试的代码                             │
│  3. 重构:清理代码                                     │
│  4. 审查:运行 /code-review  ← 新步骤                        │
│  5. 修复:解决关键/高问题                           │
│  6. 验证:Lint + 类型检查 + 覆盖率                       │
│  7. 提交:仅在审查通过后                            │
│                                                                     │
│  审查捕捉测试遗漏的内容:                                │
│  - 安全漏洞                                             │
│  - 性能问题                                             │
│  - 架构问题                                             │
│  - 代码可维护性                                         │
└─────────────────────────────────────────────────────────────────┘

审查响应模板

当代码审查发现问题时,用以下方式回应:

## 代码审查结果

### 🔴 关键问题(必须修复)
1. **SQL注入在userController.ts:45**
   - 问题:用户输入直接插值到查询中
   - 修复:使用参数化查询
   - 代码:`db.query('SELECT * FROM users WHERE id = $1', [userId])`

### 🟠 高问题(应该修复)
1. **缺少对/api/admin端点的认证**
   - 问题:Admin路由无需认证即可访问
   - 修复:添加认证中间件

### 🟡 中问题(尽快修复)
1. **getOrders函数中的N+1查询**
   - 考虑预加载或批量查询

### 🟢 低问题(有则更好)
1. **考虑提取验证逻辑到单独文件**

### ✅ 优点
- 良好的测试覆盖率
- 清晰的函数名称
- 适当的错误处理

### 📊 总结
- 关键:1 | 高:1 | 中:1 | 低:1
- **状态:❌ 阻塞** - 提交前修复关键/高问题

Claude指令

何时调用代码审查

Claude应自动建议或运行代码审查:

  1. 完成功能后 → “让我们在提交前运行代码审查”
  2. 创建PR前 → “审查所有更改”
  3. 用户说“提交”时 → “首先,让我审查更改”
  4. 修复错误后 → “审查修复是否有任何问题”

审查重点领域

根据更改类型优先审查:

更改类型 重点领域
认证/安全代码 安全,输入验证,加密
数据库代码 SQL注入,N+1,事务
API端点 认证,速率限制,验证
前端代码 XSS,状态管理,性能
基础设施 机密,权限,日志记录

快速参考

命令

# 基本审查
/code-review

# 审查特定文件
/code-review src/auth.ts src/users.ts

# 审查重点
/code-review --focus security

# 审查PR
/code-review --pr 123

严重性行动

🔴 关键 → 停止。立即修复。不允许提交。
🟠 高     → 停止。立即修复。不允许提交。
🟡 中      → 记录。尽快修复。可以提交。
🟢 低      → 可选。有则更好。
ℹ️ 信息     → 仅供参考。

工作流

代码 → 测试 → 审查 → 修复 → 提交 → 推送 → PR → 审查 → 合并 → 部署
              ↑                              ↑                    ↑
           /code-review                /code-review          /code-review