---
title: 评审与合入
description: 找到 agent 开的 PR，看懂状态行，批准、合入，并了解自动合入和合入队列什么时候接手。
llms_section: "日常使用"
llms_order: 1040
llms_summary: "人评审、批准或合入 agent 经 Stamp 开的 PR 时，看这里。"
---

# 评审与合入

PR 由 agent 来开。你在 Stamp 里评审、批准，只合入评审和检查都通过的。

::: tip 提示
批准和合入之前，要先连接你的 GitHub 账号（在 **设置** 里点「**连接 GitHub**」，见 [管理员上手](/zh-cn/get-started/)）。你的批准和合入都会以你本人的名义记在 GitHub 上。
:::

## PR 在哪里看

Stamp 首页（**收件箱**）就是「**本 Server 的 Pull Request**」：本 Raft server 里所有 agent 通过 Stamp 开的 PR，按你和它的评审关系分组。

分组有：

- 「**待你评审**」
- 「**等待评审者**」
- 「**已批准**」
- 「**已要求修改**」
- 「**草稿**」
- 「**合入中及最近已合入**」
- 「**已关闭及其他**」
- 「**状态不可用**」

左侧可以看「**全部**」或只看某一组，也可以在「**收件箱仓库**」下只看某个仓库。列表上方能按标题、仓库或编号搜索已加载的行，还能切换「**排序**」（「**默认顺序**」「**最近更新**」「**按标题**」）。

每一行显示：标题、仓库和编号、开 PR 的 agent、最近更新时间、增删行数、状态、CI 结果（点它直接打开检查），以及去 GitHub 的链接。

每个仓库自己的页面也有一个「**PR**」标签页。

## PR 页面

页面有三个标签页：

- 「**讨论**」：左边是描述和评论，右边是 PR 的状态（「**状态**」「**检查**」、评审人等）。
- 「**检查**」：当前 head 上的每一项检查，哪些是必需检查（required），以及各自的日志。
- 「**文件改动**」：代码 diff。

### 状态行

标题下面有一行，回答「现在能不能合入？不能的话为什么？」。agent 看到的也是同一个结论。常见的几种：

| 状态行写的 | 意思 |
| --- | --- |
| 需要非作者在这个 head 上批准 | 需要作者以外的人批准当前这版代码。 |
| 现有批准针对的是别的 head 或 base | 之前批准过，但之后又有了新提交，要重新批准。 |
| required 检查仍在运行 | CI 还没跑完。 |
| 有 required 检查失败 | CI 挂了，打开 **检查** 看是哪一项。 |
| 与 base 有冲突 | 分支和目标分支有冲突，需要 agent 去解决。 |
| 落后于 base | 目标分支有了新提交。点「**更新分支**」把它们合进来。 |
| 有人要求修改 | 有评审人要求修改。 |
| GitHub 暂时不让合入 | 还有 GitHub 分支规则没满足。GitHub 说明了在等什么时，状态行会列出来；旁边还有「**在 GitHub 上看原因**」。 |
| 已批准，通过合入队列合入 | 已批准，会通过合入队列合入，不会直接合。 |
| 现在可以合入 | 好了，可以合入。 |
| 已合入 | 已经完成。 |

这一行还会写出「**批准人**」，以及这个结论对应的 head 和 base 提交。

## 批准

「**批准**」按钮在状态行下面那排按钮里。

- 它以**你本人**的名义在 GitHub 上记一条批准，针对的是页面上显示的这个 head。
- 如果你打开页面之后又有新提交，这次不会批准。刷新页面再看一遍。
- 之后再有新的推送，就要重新批准：旧的批准只算旧的 head。

### 一个文件一个文件地看

在「**文件改动**」里：

- 给文件勾上「**已看**」，它就会折叠起来，顶部计数显示已看了几个。这些标记存在你的浏览器里；文件之后如果有新改动，会自动恢复为未看状态。
- 可以针对某一行写评论。点「**评论**」立刻发出；点「**加入评审**」先攒着，和其他待提交的评论放在一起。
- 看完后点「**完成评审**」，选「**评论**」「**批准**」或「**要求修改**」，再点「**提交评审**」。这里的批准和顶部的按钮效果一样。「**要求修改**」之后，作者改完之前不能合入。

## 合入

选好合入方式，点「**合入**」：

- 「**Squash 合入**」
- 「**创建 merge 提交**」
- 「**Rebase 合入**」

只有状态行写着「现在可以合入」时，这个按钮才会高亮。别的时候也能点，GitHub 会告诉你为什么合不了，比如「现在还不能合入：必需检查还在运行」。如果仓库不允许你选的方式，换一种再合入。

合入用的是你的 GitHub 账号，合入的就是你看到的那个 head。

## 自动合入

自动合入由 agent 设置，不在这个页面上点。通常是开 PR 的 agent 自己设。

设好之后，状态行下面会多一行，写明是谁设的、在等什么。比如开 PR 的 agent 设的：之后的新推送也跟着走，检查通过、当前 head 有别人批准后就合入。所以自动合入开着的时候，你点一下「**批准**」就够了，不用再点别的。

需要知道的：

- 每次有新推送，都要重新批准才会合入。
- 超过 14 天会过期，状态行会写明，需要 agent 重新设置。
- 默认只有开 PR 的 agent 能设。仓库也可以允许批准了这个 PR 的 agent 来设：**设置** →「**审批**」→「**自动合入**」，打开「**允许已批准这个 PR 的 agent 把它设为自动合入**」（默认关闭）。

## 附审查证据的自批准

开 PR 的 agent 可以自己批准自己的 PR，前提是批准附上它的审查证据。这个默认是开着的。

在 PR 页面上你会看到：

- 一行说明开 PR 的 agent 能不能自批准当前 head。
- 在「**批准人**」里，自批准会标成「**自批准** · **附审查证据**」，旁边有「**审查证据**」链接。

证据里写着：谁审查的、针对哪个 head 和 base、「**发现的问题**」以及每条怎么处理的、跑过的「**检查**」、「**反向验证**」（把某个保护去掉后，哪个测试变红了）、「**其他关卡**」，以及完整的「**报告**」。更早的证据，包括已经「**不再计入**」的批准，放在「**审查证据记录**」里。

和其他批准一样，它只算这一个 head：有新推送就要重新批准。

### 关闭或限制自批准

在仓库页面打开 **设置** →「**审批**」→「**自批准**」：

- 「**允许附审查证据自批准**」：关掉后，就必须由别人批准。
- 「**排除的路径**」：每行一个模式。改动了匹配路径的 PR 需要其他人批准。
- 「**允许的 agent**」：「**本 server 的所有 agent（默认）**」，或「**只允许选定的 agent**」。

只有你们 server 的 owner 或 admin 能查看和修改这些设置。

## 合入队列

仓库可以把已批准的 PR 放在一起测试，再整批合入。在仓库页面的 **设置** →「**合入队列**」里配置。

仓库用上合入队列后：

- PR 准备好时，状态行写「已批准，通过合入队列合入」。
- PR 页面有一块合入队列区域，带一个到仓库「**合入队列**」页面的链接。队列开着、并且你对这个仓库有推送权限时，还有「**加入合入队列**」按钮。
- 自动合入会把 PR 放进队列，而不是直接合入。
- 队列合入的 PR，GitHub 上可能显示为已关闭。Stamp 会显示为已合入，并写出它落地成的那个提交。

## 下一步

- agent 申请以你的身份操作，或申请运行 workflow：[权限申请](/zh-cn/requests/)。
