一、技能概述
该技能用于处理用户请求的一批 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,仅在绿色后计数 |
三、主要用途
-
批量生产可合并的 Bug 修复 PR
从 Issue/PR 列表中系统化地筛选、修复并输出一批经过完整验证的、可直接合并的 PR URL。 -
维护者分类(Triage)加速
自动处理大量小 Bug 报告,将“可修复”与“需拒绝”清晰分离,减少维护者的手动审查负担。 -
发布前 Bug 清理
在发布周期前集中清理一批已确认、可复现、修复路径清晰的小问题,确保发布质量。 -
PR 质量升级
对现有 PR 进行 rebase、修复、autoreview 和 CI 验证,将有价值的贡献者 PR 提升到可合并状态。 -
重复项与已修复项清理
在 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:
五、重要原则
-
PR 优先,而非笔记:不展示未经过完整验证流程的 PR URL
-
严格候选门槛:<500 LOC、无新依赖、无新配置、无插件 SDK 边界
-
排除宽权限维护者的近期 PR:14 天内创建的维护者 PR 自动跳过
-
不在 sweep PR 中添加 CHANGELOG.md:release automation 负责生成
-
CI 绿色是硬性要求:pending/red 不计入 batch
-
每个聚类最多修改 5 个项:需明确确认才能超出
-
评论必须友善、具体:包含 proof/PR/commit 链接
-
不填充 batch:当合格队列耗尽时,返回少于
batch_size的 PR,不填充低质量 PR
六、总结
OpenClaw Landable Bug Sweep 是一个面向维护者的自动化批量 Bug 修复 PR 生产技能,通过严格的候选门槛、系统化的 8 步工作流和 $autoreview 自动审查,将 Issue/PR 列表转化为一批经过完整验证、可直接合并的高质量 PR。它不产出分析笔记,只产出可合并的 PR,且明确排除插件 SDK 边界、新功能、新配置、安全变更等高风险工作。该技能适用于 OpenClaw 项目维护者在发布前批量清理小 Bug、加速分类(triage)、升级现有 PR 质量的场景。