可合并 Bug 修复 PR 批量生产技能

354856 54833 更新时间: 2026-07-13 19:12:10

OpenClaw Landable Bug Sweep 是一个面向维护者的自动化批量 Bug 修复工作流技能,用于从 Issue/PR 列表中生成一批可直接合并(landable)的高质量 Bug 修复 PR。它通过严格的候选门槛(<500 LOC、无新依赖、无配置项变更、无插件 SDK 边界修改)、系统化的修复循环和 $autoreview 自动审查,确保每个输出的 PR URL 都已刷新到最新 main、通过本地测试、autoreview 清洁、推送并经过 GitHub CI 验证为绿色。该技能不产出分析笔记,只产出可合并的 PR。

安装
npx skills add https://github.com/openclaw/openclaw --skill openclaw-landable-bug-sweep
技能详情 readonly

一、技能概述

该技能用于处理用户请求的一批 OpenClaw 小 Bug 修复任务(默认 5 个,上限 20 个),并通过系统化工作流将它们转化为可直接合并的 PR

核心理念PR 优先,而非笔记。在向维护者展示一个 PR URL 之前,它必须已经过以下完整流程:

  • 刷新到当前 main 分支

  • 本地测试通过

  • $autoreview 自动审查清洁

  • 推送并验证 GitHub CI 为绿色

明确排除:插件 SDK/API 边界工作(src/plugin-sdk/**)、新功能、新配置项、安全/认证边界变更、UI/UX 需产品判断的改动等。


二、核心功能

1. 候选门槛(Candidate Bar)

一个候选必须同时满足以下所有条件才能被接受:

条件 说明
真实 Bug 是 Bug 或纸面缺陷,非功能/产品/支持/纯文档
根因可证明 在当前代码中可定位根因
依赖已核实 涉及依赖行为时,已通过上游文档/源码/类型核实
代码变更小 生产/运行时 diff 通常远小于 500 LOC,严格低于 500 LOC
测试可更大 测试代码可能更大,但必须聚焦
无新依赖 不引入新依赖
无新配置 不引入新配置选项
无破坏性变更 无向后不兼容行为
无安全/产品决策 无需安全/产品/负责人边界决策
无插件 SDK 变更 不涉及 src/plugin-sdk/** 边界
无重构异味 不是大规模重构
聚焦证明可行 聚焦的验证证明可行

好例子

  • Provider 参数不匹配(已针对依赖/API 契约证明)

  • CLI 命令偏离相邻命令行为

  • 窄运行时状态/序列化 Bug(附失败测试)

  • 当前 main 已修复的 Issue(带证明并关闭重复项)

拒绝

  • 功能请求、新开关、迁移、发布工作、工作流策略、支持

  • 插件 SDK/API 边界变更(含兼容性垫片、新 SDK 方法、SDK 导出、插件面向的 channel/provider seam)

  • 认证/安全边界变更(除非明确指派)

  • 需要不可用 live 凭证的 Bug

  • CI 红色的 PR(除非修复、rebase、推送并重新验证为绿色)

  • 仅本地审查但未刷新/推送/检查 live 的 PR

  • 最终 head 未通过 $autoreview 的 PR

  • 本质上是更大架构改动的修复

  • 无可复现/可证明原因的推测性报告

  • 需要产品判断的 UI/UX 变更

2. 批量大小与来源模式

参数 说明
batch_size 请求的可合并 PR 数量;默认 5,上限 20
source_mode discovery(默认)或 provided-prs
provided_prs 当 source_mode=provided-prs 时,显式 PR 引用列表

在 provided-prs 模式下,仅检查提供的 PR 及直接关联的重复/规范引用,除非需要更广泛的发现来证明最佳修复。

3. 配套技能

技能 用途
$gitcrawl 发现/聚类
$openclaw-pr-maintainer live GitHub 变更规则
$github-author-context 贡献者信任度评估
$openclaw-testing 证明方式选择
$autoreview 发布/合并前的自动审查
$crabbox 广泛/E2E/live 证明

4. Sweep 工作流(8 步循环)

Step 1:起始准备

  • git status -sb

  • git pull --ff-only

  • 确认分支符合预期(通常为 main

Step 2:构建候选聚类

  • 使用 gitcrawl 搜索开放的 Issue/PR、邻居和关键词

  • 使用 gh issue/pr view 获取 live 数据

  • 包含 Issue 中链接的 PR 和重复项

Step 3:逐个聚类评估

  • 阅读 Issue/PR 正文、评论、标签、链接引用、当前源码、相邻测试

  • 排除:由宽权限维护者(wide-access maintainers)创建且在 14 天内的 PR,除非是命名的 PR 或明确的维护者工作请求覆盖

  • 识别 opener/author 并保留贡献者署名

  • 决定:repair-existing-pr(修复现有 PR)、create-new-pr(创建新 PR)、close-fixed-on-main(关闭已在 main 修复的)、close-duplicate(关闭重复的)、或 reject(拒绝)

Step 4:修补前证明

  • 失败测试、聚焦复现、日志/源码证明或依赖契约证明

  • 如果已在 main 修复,用当前源码/测试/commit 证明并友善关闭

Step 5:修补

  • 优先使用现有 PR(如果质量好且可写)

  • 如果不可写或形状不对,创建自己的 PR 并保留有用的贡献者署名

  • 如果没有 PR,创建一个

  • 适当时添加回归测试

  • 在 PR body 或 commit message 中为面向用户的修复添加 release-note 上下文;标注已知的人类 reporter/contributor

Step 6:审查、刷新与发布

  • 将 PR 分支 rebase 或刷新到当前 origin/main

  • 解决漂移(含新暴露的 CI 失败),将 PR 计为 ready

  • 不在 sweep PR 中添加 CHANGELOG.md——release automation 从 PR 和 commits 生成

  • 使用最小的有意义的本地/Testbox/live 命令对 rebased head 进行左侧测试

  • 运行 $autoreview 直到没有已接受/可操作的发现,然后创建/更新/展示 PR URL

  • 创建/更新 PR,包含真实 body 和 proof 字段

  • 推送确切的已审查 head

  • 验证 live GitHub CI 为绿色——pending/red/dirty/conflicting/externally blocked 的 PR 不计入 batch

Step 7:卫生清理

  • 在 sweep 过程中一旦发现重复项或已在 main 修复的 Issue/PR,立即关闭并附证明

  • 单个聚类中不修改超过 5 个关联项,除非有明确的确认

  • 评论必须友善、具体,包含 proof/PR/commit 链接

Step 8:重复

  • 重复直到 batch_size 个可合并 PR URL 准备就绪,或合格队列耗尽

5. PR Body 证明格式

使用仓库 PR 模板,包含:

  • ## What Problem This Solves(解决什么问题)

  • ## Evidence(证据)

  • Body 聚焦于意图和最有用的验证证据

  • 在判断正确性前检查代码、测试和 CI

6. 现有 PR 处理规则

场景 处理方式
PR 质量好 rebase/刷新到当前 main,修复小问题,左侧测试,autoreview 清洁,推送,CI 绿色后再展示/计数
PR 质量不好但有价值想法 本地重创,必要时 co-author,友善关闭原 PR 并附感谢和说明
PR 是重复项或在 main 已修复 评论证明,关闭
维护者无法 push 到贡献者分支 创建自己的分支/PR,保留有用的 commits 或署名
CI 在本地证明后变红 视为正常工作:检查失败 job,修复或拒绝,rerun,仅在绿色后计数

三、主要用途

  1. 批量生产可合并的 Bug 修复 PR
    从 Issue/PR 列表中系统化地筛选、修复并输出一批经过完整验证的、可直接合并的 PR URL。

  2. 维护者分类(Triage)加速
    自动处理大量小 Bug 报告,将“可修复”与“需拒绝”清晰分离,减少维护者的手动审查负担。

  3. 发布前 Bug 清理
    在发布周期前集中清理一批已确认、可复现、修复路径清晰的小问题,确保发布质量。

  4. PR 质量升级
    对现有 PR 进行 rebase、修复、autoreview 和 CI 验证,将有价值的贡献者 PR 提升到可合并状态。

  5. 重复项与已修复项清理
    在 sweep 过程中自动识别并关闭重复的 Issue/PR 以及已在 main 修复的项。


四、输出格式

技能维护一个运行分类账(running ledger):

accepted:
  - PR URL:
    source refs:
    bug:
    root cause:
    fix:
    risk:
    rebase/head:
    left-test:
    autoreview:
    CI:
    credit/thanks:
    cleanup:
rejected:
  - ref:
    reason:
closed:
  - ref:
    reason:
    proof/comment:

五、重要原则

  1. PR 优先,而非笔记:不展示未经过完整验证流程的 PR URL

  2. 严格候选门槛:<500 LOC、无新依赖、无新配置、无插件 SDK 边界

  3. 排除宽权限维护者的近期 PR:14 天内创建的维护者 PR 自动跳过

  4. 不在 sweep PR 中添加 CHANGELOG.md:release automation 负责生成

  5. CI 绿色是硬性要求:pending/red 不计入 batch

  6. 每个聚类最多修改 5 个项:需明确确认才能超出

  7. 评论必须友善、具体:包含 proof/PR/commit 链接

  8. 不填充 batch:当合格队列耗尽时,返回少于 batch_size 的 PR,填充低质量 PR


六、总结

OpenClaw Landable Bug Sweep 是一个面向维护者的自动化批量 Bug 修复 PR 生产技能,通过严格的候选门槛、系统化的 8 步工作流和 $autoreview 自动审查,将 Issue/PR 列表转化为一批经过完整验证、可直接合并的高质量 PR。它不产出分析笔记,只产出可合并的 PR,且明确排除插件 SDK 边界、新功能、新配置、安全变更等高风险工作。该技能适用于 OpenClaw 项目维护者在发布前批量清理小 Bug、加速分类(triage)、升级现有 PR 质量的场景。