新功能

隆重推出 PR 级别规则:
审查 PR,而不仅仅是代码

自动执行团队关于提交信息、PR 描述、破坏性变更等方面的约定

2025年12月22日
阅读时间 8 分钟

代码审查不仅仅是关于代码本身,更是关于上下文:为什么要做这个更改?PR 是否专注于一件事?破坏性变更是否有文档记录?直到现在,基于 AI 的代码审查工具一直忽略了这些。今天,这一切将改变。

我们很高兴推出 PR 级别规则 —— 一种新类别的规则,用于分析整个 Pull Request,而不仅仅是单个文件。通过两个新的特殊标签 pr-levelgit-history,您现在可以自动执行团队的 PR 规范约定。

新功能介绍

传统的 AI 代码审查逐个分析文件,检查 bug、安全问题和代码模式。但是,优秀 PR 中一些最重要的方面无法在任何单个文件中找到:

PR 描述质量

描述是否解释了"为什么"而不仅仅是"做了什么"?

提交信息

是否遵循 Conventional Commits 格式?

PR 范围

是否专注于单个逻辑变更?

破坏性变更

是否附带迁移指南?

现在 diffray 可以自动检查所有这些内容 —— 适用于每一个 PR。

两个新标签:pr-levelgit-history

我们添加了两个特殊标签,它们会改变 AI 代理处理规则的方式:

pr-level

用于分析整个 PR 的规则 —— 描述质量、变更范围、破坏性变更文档、新功能的测试覆盖率。

代理会查看整体情况:哪些文件被修改了?有多少个?整体意图是什么?

git-history

用于需要分析提交历史的规则 —— 消息格式、提交原子性、工单引用。

代理使用 git log 来检查提交信息和模式。

即用型规则示例

1. PR 描述应解释"为什么"

PR 最常见的问题是:它们列出了做了什么更改,但没有说明为什么。审查者可以看到 diff —— 他们需要的是上下文。

- id: pr_description_explain_why
  agent: general
  title: PR 描述应解释动机
  importance: 7
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - 检查 PR 描述是否解释了业务原因
    - 确保回答了"为什么需要这个更改?"
    - 寻找关于解决问题的上下文
  tags:
    - pr-level
    - quality

糟糕的 PR 描述

- 更新了 UserService.ts

- 为登录表单添加了验证

- 修复了支付 bug

优秀的 PR 描述

## 问题

用户在结账时购买 50+ 件商品会遇到超时,原因是 N+1 查询问题。

## 解决方案

使用 DataLoader 模式进行批量加载。

2. Conventional Commits 格式的提交信息

确保统一的提交格式,以便自动生成变更日志和语义化版本控制:

- id: commit_message_format
  agent: general
  title: 提交信息应遵循 Conventional Commits 格式
  importance: 5
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - 使用 git log --oneline 检查最近的提交
    - 确保提交遵循 type(scope): description 格式
    - 检查消息的清晰度(不要用 "fix stuff"、"WIP")
  examples:
    bad: |
      fix stuff
      WIP
      update code
    good: |
      feat(auth): add OAuth2 login with Google
      fix(api): handle null response from payment service
  tags:
    - git-history
    - automation

3. 破坏性变更必须有文档记录

没有什么比未记录的破坏性变更进入生产环境更快地破坏信任了:

- id: breaking_changes_documented
  agent: general
  title: 破坏性变更必须有明确文档
  importance: 9
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - 检查变更是否修改了公共 API 或删除了功能
    - 如果是破坏性变更,确保提交信息包含 BREAKING CHANGE
    - 检查 PR 描述中是否有迁移指南
  tags:
    - pr-level
    - git-history
    - breaking-changes

4. 单一职责的 PR

混合了新功能、bug 修复和重构的 PR 无法得到有效审查:

- id: pr_single_responsibility
  agent: general
  title: PR 混合了不相关的变更
  importance: 7
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - 检查已修改的文件以识别不同的变更区域
    - 确保变更不涉及多个不相关的功能
    - 如果 PR 同时涉及 auth、payments 和 styling,则进行报告
  tags:
    - pr-level
    - quality

5. 强制要求工单引用

为了可追溯性和发布说明,每个 PR 都应该关联一个任务:

- id: pr_ticket_reference
  agent: general
  title: PR 必须引用 issue 或工单
  importance: 5
  always_run: true
  match:
    file_glob: ['**/*']
  checklist:
    - 检查提交中是否有工单引用(PROJ-123、#123、ENG-456)
    - 在提交信息中查找任务 URL
    - 仅当没有任何提交包含工单引用时才报告
  tags:
    - pr-level
    - git-history
    - traceability

底层工作原理

general 代理已更新了处理这些标签的特殊指令:

标签代理行为
pr-level分析整体 PR 上下文 —— 已修改的文件、变更范围、描述质量
git-history使用 Bash 执行 git 命令:
git log --oneline -20 —— 最近的提交
git log --stat -5 —— 包含文件变更
git log --format="%s%n%b" -10 —— 完整消息

带有 always_run: true 的规则会对每个 PR 执行,无论修改了哪些文件。这使它们非常适合不依赖特定文件模式的 PR 级别检查。

快速开始

为您的项目添加 PR 级别规则非常简单:

1. 创建规则目录

mkdir -p .diffray/rules/pr-quality

2. 添加您的规则

创建带有 always_run: true 和相应标签的 YAML 文件

3. 打开一个 PR

diffray 将自动识别您的新规则

我们在 project-specific-rules 仓库 中发布了示例规则,您可以复制并根据需要进行自定义。

为什么这很重要

优秀的 PR 不仅仅是可运行的代码。它们是为未来开发者准备的文档,是合规审计的追踪记录,是"这里发生了什么?"和"哦,我明白了"之间的区别。

遵守 PR 标准的团队能交付更高质量的软件。 不是因为代码不同,而是因为上下文得到了保留。现在 diffray 可以帮助您自动维护这些标准。

PR 级别规则将团队的隐性知识转化为自动化检查。不再依赖于每个人都记得引用工单、记录破坏性变更和编写有意义的描述 —— 而是为每个 PR 获得一致的反馈。

立即尝试 PR 级别规则

现已面向所有 diffray 用户开放。将规则添加到您的仓库,在下一个 PR 中开始获得反馈。

相关文章