在现代软件开发团队中,代码审查(Code Review)是保证代码质量的关键环节。但传统审查流程有一个致命痛点:**审查 PR 会打断你当前的开发上下文**。

Claude Code Git 工作树与 PR Review — 隔离审查工作流全解

简介

在现代软件开发团队中,代码审查(Code Review)是保证代码质量的关键环节。但传统审查流程有一个致命痛点:审查 PR 会打断你当前的开发上下文

想象一下这个场景:你正在一个关键分支上调试一个复杂的 bug,修改了十几个文件,内存里装满了相关的上下文。这时同事发来一个 PR 需要你审查。按照传统流程,你需要:stash 当前更改 → 切换到 PR 分支 → 阅读代码 → 添加注释 → 切回原来的分支 → pop stash。这个过程不仅繁琐,而且一旦中断时间超过 15 分钟,你重新回到 bug 调试时就需要重新"加载"之前的上下文——这对大脑来说是非常昂贵的操作。

Claude Code 的 Git 工作树(Worktree) 功能完美地解决了这个问题。通过 -w 参数,你可以在一个完全隔离的 Git 工作树中审查 PR,主工作区不受任何影响。配合 --from-pr 自动获取 PR 代码、/review 交互式审查命令,以及批量化 review 能力,Claude Code 将代码审查从"打断工作流的麻烦事"变成了"无缝并行的自动化流程"。

本文将深入讲解四种核心功能的使用方法和工作原理,帮助你构建高效的代码审查工作流。

目录

一、Git 工作树基础概念

1.1 什么是 Git Worktree?

Git Worktree 是 Git 的高级功能,允许你在同一个仓库中创建多个独立的检出目录。每个工作树拥有:

  • 独立的 HEAD — 可以检出不同的分支
  • 独立的暂存区(Index) — 各自管理各自的暂存状态
  • 独立的工作目录 — 文件互不干扰
  • 共享的 .git 对象库 — 所有工作树共用同一个对象存储,节省磁盘空间
text
仓库结构示意:

my-project/                          ← 主仓库目录
├── .git/                            ← 共享的 Git 对象库
│   ├── objects/                     ← 所有 commit、tree、blob
│   ├── refs/                        ← 分支引用
│   └── worktrees/                   ← worktree 元数据
│       ├── pr-review-42/            ← PR #42 的 worktree 记录
│       └── pr-review-57/            ← PR #57 的 worktree 记录
├── src/                             ← 主工作树 (main 分支)
├── tests/
│
├── ../worktree-pr42/                ← 隔离工作树 1
│   ├── src/                         ← PR #42 的代码
│   └── tests/
│
└── ../worktree-pr57/                ← 隔离工作树 2
    ├── src/                         ← PR #57 的代码
    └── tests/

1.2 手动创建 Worktree vs Claude Code 自动管理

传统 Git 需要手动管理 worktree:

bash
# 手动创建
git worktree add ../review-pr42 refs/pull/42/head

# 手动删除
git worktree remove ../review-pr42

Claude Code 通过 -w 参数自动完成这些操作——创建、检出、清理全部自动化,你只需要关注代码审查本身。

1.3 Claude Code -w 的内部流程

text
claude -w /tmp/pr42 --from-pr 42
        │
        ▼
┌──────────────────────────────┐
│  Step 1: 解析仓库与 PR 信息   │
│  - 读取当前目录的 .git       │
│  - 通过 GitHub API 获取 PR   │
│    #42 的分支和 diff         │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│  Step 2: 创建隔离工作树       │
│  - git worktree add          │
│    /tmp/pr42 pr-branch       │
│  - 检出 PR 对应的分支         │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│  Step 3: 加载审查上下文       │
│  - 加载 .claude/ 配置        │
│  - 加载 CLAUDE.md 项目规则   │
│  - 预加载 PR 变更文件列表     │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│  Step 4: 启动 Claude Code    │
│  在隔离工作树中运行,          │
│  主工作区完全不受影响          │
└──────────────┬───────────────┘
               │
               ▼
         用户 /exit 退出
               │
               ▼
┌──────────────────────────────┐
│  Step 5: 自动清理            │
│  - git worktree remove       │
│  - 删除临时目录               │
│  - 主工作区恢复如初           │
└──────────────────────────────┘

二、-w 隔离工作树详解

2.1 基本用法

bash
# 最简用法:指定工作树路径
claude -w /tmp/claude-review-session

# 在隔离工作树中打开 PR
claude -w /tmp/pr42-review --from-pr 42

# 使用有意义的命名
claude -w ~/code/reviews/feat-auth-refactor --from-pr 42

2.2 -w 的关键特性

特性 说明
完全隔离 工作树中的文件修改、暂存、提交完全不影响主工作区
共享对象库 不复制 Git 对象,节省磁盘空间(通常只多占几 MB)
独立分支 可以在工作树中检出任意分支,与主工作树不同
自动清理 退出时 Claude Code 自动删除 worktree 和临时目录
并行运行 可以同时打开多个 -w 工作树,互不干扰

2.3 工作树生命周期管理

启动阶段

bash
# 1. 创建隔离工作树
claude -w /tmp/review-session-1

# Claude Code 输出类似:
# 🌿 创建隔离工作树: /tmp/review-session-1
# 📂 检出分支: feature/user-auth
# ✅ 工作树已就绪

# 2. 在隔离环境中工作
# 可以自由编辑、测试、提交
# 所有操作都在 /tmp/review-session-1 中

退出阶段

bash
# 输入 /exit 或 Ctrl+D
# Claude Code 输出类似:
# 🧹 正在清理工作树...
# 🌿 已删除 worktree: /tmp/review-session-1
# ✅ 清理完成

2.4 典型使用场景

场景 1:紧急 PR 审查

bash
# 你正在 main 分支上修改一个紧急 bug
# 突然需要审查 PR #128

# 方案 A(传统方式 - 痛苦):
# git stash
# git checkout pr-128
# ... 审查代码 ...
# git checkout main
# git stash pop
# ← 之前的开发上下文丢失

# 方案 B(使用 -w - 优雅):
claude -w /tmp/pr128 --from-pr 128
# 在隔离工作树中审查
# 退出后回到原来的工作,一切如初

场景 2:多 PR 并行审查

bash
# 终端 1:审查 PR #42
claude -w /tmp/pr42 --from-pr 42
# /review
# ... 审查中 ...

# 终端 2:审查 PR #43(同时进行)
claude -w /tmp/pr43 --from-pr 43
# /review
# ... 审查中 ...

# 终端 3:审查 PR #44(同时进行)
claude -w /tmp/pr44 --from-pr 44
# /review
# ... 审查中 ...

# 三个审查会话完全独立,互不影响

场景 3:实验性功能开发

bash
# 在不影响主开发分支的情况下试验新想法
claude -w /tmp/experiment-feature-x

# 在隔离环境中:
# - 尝试不同的实现方案
# - 运行测试验证
# - 如果方案可行,可以将代码应用到主分支
# - 如果不可行,直接丢弃工作树即可

三、--from-pr 审查流程

3.1 基本用法

--from-pr 参数让 Claude Code 自动获取指定 PR 的代码和上下文:

bash
# 方式 1:仅使用 PR 编号(需要在仓库目录下执行)
claude --from-pr 42

# 方式 2:使用完整 URL
claude --from-pr https://github.com/owner/repo/pull/42

# 方式 3:结合 -w 隔离工作树(推荐)
claude -w /tmp/pr42-review --from-pr 42

# 方式 4:指定远程仓库
claude --from-pr 42 --repo https://github.com/owner/repo

3.2 --from-pr 自动加载的上下文

当使用 --from-pr 启动时,Claude Code 会自动获取以下信息并加载到上下文中:

text
┌─────────────────────────────────────────────────┐
│                 PR 审查上下文                     │
├─────────────────────────────────────────────────┤
│                                                 │
│  📋 PR #42: 重构用户认证模块                     │
│  👤 作者: @developer                             │
│  🌿 分支: feat/auth-refactor → main             │
│  📅 创建时间: 2026-01-15                        │
│  📝 变更: 5 个文件, +186 -42 行                 │
│                                                 │
│  📄 变更文件清单:                                │
│  ┌─────────────────────────────┬───────┬───────┐ │
│  │ 文件                         │  新增  │ 删除  │ │
│  ├─────────────────────────────┼───────┼───────┤ │
│  │ src/auth/session.py         │  +67-15  │ │
│  │ src/auth/middleware.py      │  +45-12  │ │
│  │ src/auth/token.py           │  +38-10  │ │
│  │ tests/test_session.py       │  +26-5  │ │
│  │ tests/test_middleware.py    │  +10-0  │ │
│  └─────────────────────────────┴───────┴───────┘ │
│                                                 │
│  💬 PR 描述:                                    │
│  本次重构将认证逻辑从 monolithic 架构拆分为      │
│  独立的 session、middleware 和 token 模块,      │
│  提高了代码的可测试性和可维护性。                │
│                                                 │
│  🏷️  标签: enhancement, auth, refactoring       │
│                                                 │
└─────────────────────────────────────────────────┘

这些上下文信息会自动注入到 Claude Code 的对话中,使得你可以直接输入 /review 开始审查,无需手动获取 PR 信息。

3.3 内部流程详解

text
--from-pr 执行步骤:

1. PR 信息获取
   └─ 调用 GitHub/GitLab API
      ├─ GET /repos/{owner}/{repo}/pulls/{number}
      ├─ 提取: 标题、描述、作者、分支、标签
      └─ 获取: 变更文件列表和 diff

2. 分支获取
   └─ 添加 PR 分支引用
      ├─ git fetch origin refs/pull/42/head:pr-42
      └─ 如果权限允许,直接 checkout PR 分支

3. 工作树创建(如果配合 -w)
   └─ git worktree add /tmp/pr42 pr-42

4. 上下文初始化
   ├─ 加载 .claude/settings.json
   ├─ 加载 CLAUDE.md(如果存在)
   ├─ 加载项目特定的审查规则
   └─ 将 PR diff 注入对话上下文

3.4 支持的 PR 来源

平台 格式 示例
GitHub PR 编号 --from-pr 42
GitHub 完整 URL --from-pr https://github.com/owner/repo/pull/42
GitLab MR 编号 --from-pr 42
本地仓库 分支名 --from-pr feature/new-login

3.5 权限与认证

使用 --from-pr 需要配置相应的访问权限:

bash
# GitHub
# 方式 1:环境变量
export GITHUB_TOKEN=your_token_here

# 方式 2:gh CLI(推荐)
gh auth login

# GitLab
export GITLAB_TOKEN=your_token_here

四、/review 命令实战

4.1 基本用法

在 Claude Code 会话中输入 /review 即可启动交互式代码审查:

text
claude -w /tmp/pr42 --from-pr 42
> /review

4.2 审查流程

/review 命令引导 Claude Code 执行一个结构化的审查流程:

Step 1:理解变更意图

Claude 首先阅读 PR 标题、描述和整体 diff,理解变更的目的和范围:

text
📋 审查 PR #42: 重构用户认证模块

理解变更:
- 目的: 将认证逻辑拆分为独立模块
- 范围: 5 个文件, +186 -42 行
- 风险等级: 中等(涉及认证核心逻辑)

Step 2:逐文件深度审查

Claude 逐个审查变更文件,检查代码质量、潜在 bug、安全漏洞等:

text
🔍 逐文件审查:

src/auth/session.py (+67, -15)
  ✅ 正确实现了 session 超时检查逻辑
  ✅ 添加了详细的日志记录
  ⚠️ 建议: 会话超时时间应通过环境变量配置而非硬编码
  ❌ 问题: 第 42 行存在竞态条件,建议使用锁保护

src/auth/middleware.py (+45, -12)
  ✅ 中间件执行顺序正确
  ✅ 错误处理覆盖全面
  ⚠️ 建议: 考虑添加速率限制

src/auth/token.py (+38, -10)
  ✅ Token 刷新逻辑正确
  ⚠️ 建议: 添加 token 过期时间的安全边界检查
  ⚠️ 注意: 使用了 deprecated 的 API,建议升级

Step 3:生成结构化审查报告

text
📝 审查报告

## 总体评价: ✅ 通过(建议小修改后合并)

### 必须修改 🔴
- [ ] 修复 session.py 第 42 行的竞态条件
- [ ] 添加 token.py 中安全边界检查

### 建议修改 🟡
- [ ] 将会话超时时间改为可配置项
- [ ] 升级 token.py 中的 deprecated API
- [ ] 为 middleware 添加速率限制

### 代码质量 🟢
- 代码结构清晰,模块职责分明
- 测试覆盖了主要路径
- 注释和文档充分

### 安全评估 🟡
- 未发现严重安全漏洞
- 注意: token 过期处理需要加强

4.3 带参数的 /review

bash
# 审查特定文件
> /review src/auth/session.py

# 仅审查测试文件
> /review tests/

# 深度审查(包含安全分析、性能评估)
> /review --deep

# 快速审查(仅检查代码风格和明显问题)
> /review --quick

# 审查并生成建议修复代码
> /review --with-fixes

# 审查并直接评论到 PR(需要 GitHub 权限)
> /review --post-comments

# 使用自定义审查模板
> /review --template security

4.4 自定义审查模板

.claude/commands/review.md 中可以定义自定义的审查规则:

markdown
# 自定义审查命令: /review

## 审查标准

### 1. 代码正确性
- 逻辑是否正确
- 边界条件是否处理
- 异常是否捕获

### 2. 安全性
- 是否存在 SQL 注入风险
- 是否存在 XSS 漏洞
- 认证授权是否正确实现
- 敏感数据是否正确加密

### 3. 性能
- 是否有 N+1 查询
- 是否有不必要的循环
- 缓存策略是否合理

### 4. 可维护性
- 命名是否清晰
- 函数是否过长(> 50 行)
- 模块职责是否单一
- 是否有充分的注释

### 5. 测试
- 是否添加了新测试
- 测试是否覆盖了边界条件
- 测试命名是否清晰

## 输出格式
按照"必须修改 / 建议修改 / 代码质量 / 安全评估"四部分输出

五、批量化 Review

5.1 场景说明

在活跃的项目中,你可能同时面临多个待审查的 PR。逐一打开、逐一审查效率很低。Claude Code 支持批量化 Review,可以一次性对多个 PR 执行审查。

5.2 批量审查命令

bash
# 方式 1:指定多个 PR 编号
claude --batch-review 42 43 44

# 方式 2:审查所有 open 的 PR
claude --batch-review --all-open

# 方式 3:审查特定作者的所有 PR
claude --batch-review --author @developer

# 方式 4:审查特定标签的 PR
claude --batch-review --label "needs-review"

# 方式 5:结合 -w 在隔离工作树中批量审查
claude -w /tmp/batch-review --batch-review 42 43 44

5.3 批量审查输出

批量审查会为每个 PR 生成独立的审查报告,并汇总整体结果:

text
┌─────────────────────────────────────────────────┐
│               批量审查结果汇总                    │
├─────────────────────────────────────────────────┤
│                                                 │
│ PR #42: 重构用户认证模块                          │
│   状态: ✅ 通过(建议小修改)                     │
│   问题: 2 个必须修改, 3 个建议修改                │
│   文件: 5 个变更                                 │
│                                                 │
│ PR #43: 添加用户个人资料页面                       │
│   状态: ✅ 通过                                  │
│   问题: 0 个必须修改, 1 个建议修改                │
│   文件: 3 个变更                                 │
│                                                 │
│ PR #44: 修复登录页面样式问题                       │
│   状态: ❌ 需要修改                              │
│   问题: 3 个必须修改, 2 个建议修改                │
│   文件: 2 个变更                                 │
│                                                 │
│ 总计: 3 个 PR | 2 通过 | 1 需修改                 │
│ 总问题: 5 个必须修改, 6 个建议修改                 │
│                                                 │
└─────────────────────────────────────────────────┘

5.4 CI/CD 集成

批量 Review 可以集成到 CI/CD 流水线中:

bash
#!/bin/bash
# ci-batch-review.sh

# 获取所有待审查的 PR
OPEN_PRS=$(gh pr list --state open --json number -q '.[].number')

# 执行批量审查
echo "开始批量审查 ${OPEN_PRS[@]}..."
claude --batch-review ${OPEN_PRS[@]} --output-format json \
  > review-results-$(date +%Y%m%d).json

# 检查是否有需要修改的 PR
FAILED=$(jq '[.[] | select(.status == "needs-changes")] | length' \
  review-results-$(date +%Y%m%d).json)

if [ "$FAILED" -gt 0 ]; then
  echo "⚠️ $FAILED 个 PR 需要修改"
  exit 1
else
  echo "✅ 所有 PR 通过审查"
  exit 0
fi

5.5 GitHub Actions 集成

yaml
# .github/workflows/claude-review.yml
name: Claude Code Batch Review

on:
  pull_request:
    types: [opened, synchronize]
  schedule:
    - cron: '0 */4 * * *'  # 每 4 小时执行一次

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Claude Code
        run: |
          npm install -g @anthropic-ai/claude-code

      - name: Batch Review Open PRs
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude --batch-review --all-open \
            --output-format json \
            > review-results.json

      - name: Post Review Comments
        if: success()
        run: |
          python scripts/post-review-comments.py review-results.json

5.6 流式 JSON 输出

对于自动化场景,可以使用 --output-format json 获取结构化输出:

bash
claude --batch-review 42 43 44 --output-format json --stream-json

输出格式:

json
[
  {
    "pr_number": 42,
    "title": "重构用户认证模块",
    "status": "pass",
    "must_fix": 2,
    "suggestions": 3,
    "files_changed": 5,
    "report_url": "https://..."
  },
  {
    "pr_number": 43,
    "title": "添加用户个人资料页面",
    "status": "pass",
    "must_fix": 0,
    "suggestions": 1,
    "files_changed": 3,
    "report_url": "https://..."
  }
]

六、高级工作流组合

6.1 工作流 1:PR 审查标准流程

bash
# 1. 在隔离工作树中打开 PR
claude -w /tmp/pr42-review --from-pr 42

# 2. 启动审查
> /review

# 3. 如果有建议修复,生成修复代码
> /review --with-fixes

# 4. 在隔离工作树中运行测试验证修复
> 运行测试

# 5. 如果修复通过,将建议推送给 PR 作者
> git add -A
> git commit -m "suggested fixes for PR #42"
> git push origin review-suggestions-42

# 6. 退出,自动清理
> /exit

6.2 工作流 2:每日批量审查(自动化)

bash
#!/bin/bash
# daily-review.sh - 每日自动审查所有 open PR

REVIEW_DIR="/tmp/claude-daily-review-$(date +%Y%m%d)"
mkdir -p "$REVIEW_DIR"

# 获取所有 open PR
PR_NUMBERS=$(gh pr list --state open --json number -q '.[].number')

echo "🔍 开始每日批量审查..."
echo "📋 待审查 PR: $PR_NUMBERS"

# 逐个审查
for PR in $PR_NUMBERS; do
  echo ""
  echo "━━━ 审查 PR #$PR ━━━"
  claude -w "$REVIEW_DIR/pr-$PR" --from-pr "$PR" -p "/review" \
    > "$REVIEW_DIR/pr-$PR-report.md" 2>&1
done

# 汇总报告
echo ""
echo "📊 审查完成,报告保存在: $REVIEW_DIR"

6.3 工作流 3:审查 + 评论自动发布

bash
# 审查并自动将评论发布到 PR
claude -w /tmp/pr42-review --from-pr 42 -p "/review --post-comments"

# Claude Code 会:
# 1. 在隔离工作树中审查代码
# 2. 生成审查报告
# 3. 通过 GitHub API 将评论发布到 PR
# 4. 清理工作树

6.4 工作流 4:Git Alias 简化命令

bash
# 在 ~/.gitconfig 中添加:
[alias]
    review = "!f() { \
        claude -w /tmp/claude-pr-$1 --from-pr $1 -p '/review'; \
    }; f"

    review-batch = "!f() { \
        for pr in $@; do \
            claude -w /tmp/claude-pr-$pr --from-pr $pr -p '/review --quick' & \
        done; \
        wait; \
    }; f"

# 使用:
git review 42          # 审查 PR #42
git review-batch 42 43 44  # 并行审查多个 PR

七、常见问题排查

7.1 问题 1:工作树创建失败

text
错误: 'feature/new-login' is already checked out at '/path/to/worktree'

原因: 同一个分支已经在另一个工作树中被检出
解决:
  1. 查看现有工作树: git worktree list
  2. 删除冲突的工作树: git worktree remove /path/to/conflict
  3. 或使用不同的工作树路径重试

7.2 问题 2:PR 分支找不到

text
错误: Could not find branch for PR #42

排查步骤:
  1. 确认 PR 编号正确: gh pr view 42
  2. 确认仓库访问权限: gh auth status
  3. 确认 PR 尚未关闭或合并
  4. 如果是私有仓库,确认 GITHUB_TOKEN 有读取权限
  5. 尝试手动获取: git fetch origin refs/pull/42/head

7.3 问题 3:权限不足

text
错误: Permission denied (publickey)

解决:
  1. 检查 SSH 密钥: ssh -T git@github.com
  2. 确认 GitHub Token 有效: gh auth status
  3. 尝试使用 HTTPS: git remote set-url origin https://github.com/owner/repo.git
  4. 如果使用 gh CLI: gh auth login --scope repo

7.4 问题 4:工作树清理失败

text
错误: Worktree not removed

原因: 工作树中有未提交的更改
解决:
  1. 检查工作树状态: git -C /path/to/worktree status
  2. 强制删除: git worktree remove --force /path/to/worktree
  3. 或保留工作树供后续检查

7.5 问题 5:--from-pr 获取不到变更

text
错误: No changes found for PR #42

原因: PR 可能已被合并,或者 diff 为空
解决:
  1. 确认 PR 状态: gh pr view 42
  2. 检查是否有变更文件: gh pr diff 42 | head
  3. 如果是已合并的 PR,使用 --merged 参数

八、最佳实践

8.1 1. 始终使用 -w 隔离工作树

bash
# ✅ 推荐:隔离审查
claude -w /tmp/pr42 --from-pr 42

# ❌ 避免:直接切换分支
git checkout pr-42
claude

8.2 2. 为工作树使用有意义的命名

bash
# ✅ 好命名
claude -w ~/reviews/feat-auth-refactor --from-pr 42

# ❌ 无意义命名
claude -w /tmp/123 --from-pr 42

8.3 3. 利用并行审查提高效率

bash
# 并行打开多个审查会话
claude -w /tmp/pr42 --from-pr 42 &
claude -w /tmp/pr43 --from-pr 43 &
claude -w /tmp/pr44 --from-pr 44 &
wait

8.4 4. 配置自动清理

bash
# 创建 cron 任务,清理超过 24 小时的审查工作树
0 2 * * * find /tmp -maxdepth 1 -name "pr*-review" -type d -mtime +1 -exec rm -rf {} \;

8.5 5. 结合 CLAUDE.md 定义团队审查标准

在项目根目录创建 CLAUDE.md,定义团队特定的审查标准,Claude Code 在使用 --from-pr 时会自动加载这些规则。

九、总结

Claude Code 的 Git 工作树功能将代码审查从"打断开发流程的麻烦事"变成了"无缝并行的自动化操作"。通过四种核心功能的组合,你可以构建出高效、安全、可重复的代码审查工作流:

功能 核心价值
-w 隔离工作树 在不干扰主开发分支的前提下进行审查
--from-pr 自动获取 一键获取 PR 代码、diff 和上下文信息
/review 交互式审查 结构化的逐文件审查与报告生成
批量化 Review 一次审查多个 PR,支持 CI/CD 集成

关键要点:

  • 始终使用 -w 创建隔离工作树,保护主开发上下文
  • --from-pr 自动加载 PR 所有上下文,无需手动操作
  • /review 提供从理解变更到生成报告的完整审查流程
  • 批量 Review 支持 --all-open--author--label 等灵活过滤
  • 支持 --output-format json--stream-json 用于 CI/CD 集成
  • 可通过 Git Alias 和 shell 脚本进一步简化工作流
  • 自动清理机制确保临时工作树不会堆积

十、下篇预告

批量 PR Review 与 CI 集成 — 深入学习 --bare 无头模式、管道输入和 stream-json 流式输出,掌握如何在 CI/CD 流水线中自动化批量 PR 审查,实现无人值守的代码质量检查,让每个 PR 在合并前都经过 AI 的"第一道审查"。