ClawSweeper 是做什么的?
ClawSweeper 位于 ~/Projects/clawsweeper。它是 OpenClaw 的唯一维护机器人,用于扫描、修复任务和受保护的修复 PR。当被问及报告、发现、调度健康、修复/云端 PR 创建、评论命令、自动合并、权限或门控时,请使用此技能。
开始
在 ClawSweeper 检出目录中检查 git status --short --branch。状态和报告请求保持只读:当需要时效性时,使用当前报告和实时读取 API,无需拉取或构建即可检查。
对于授权的实现或执行,更新一个干净的任务专属检出,并在所选命令需要时才构建。保留不相关的编辑和其他操作者的活动工作流。
一个机器人,一个应用
使用 ClawSweeper 仓库和 clawsweeper GitHub 应用。仅使用 CLAWSWEEPER_* 配置进行此自动化。不要使用旧版应用、变量、标签或技能。
所需应用设置:
CLAWSWEEPER_APP_CLIENT_ID:clawsweeper的公共应用客户端 ID。CLAWSWEEPER_APP_PRIVATE_KEY:仅在actions/create-github-app-token步骤中使用的私钥。- 目标应用权限:读取目标扫描上下文;写入议题和拉取请求;内容写入报告提交、修复分支和工作流输入;Actions 写入
openclaw/clawsweeper以进行评论路由器重新审核调度、工作流调度、运行取消和自愈。
令牌边界:
- Codex 工作人员不会获得变更凭据。
- 审核工作人员在剥离了秘密/令牌环境变量后运行。
- 确定性脚本通过短生命周期的 GitHub App 令牌拥有注释、标签、分支推送、PR 创建、关闭和合并的所有权。
- 合并和写入门控默认为关闭。
托管提交审核
托管的每次提交报告和提交检查运行已退役。对于保留的离线审核已提交分支,请使用 pnpm local-review -- --base main。$autoreview --mode commit --commit <sha> 仍然是一个独立的通用审核路径。
扫描报告
议题/PR 报告位于:
records/<repo-slug>/items/<number>.md
records/<repo-slug>/closed/<number>.md
以计数、具体发现和报告链接开头。不要在报告读取工作中发布未经请求的 GitHub 评论。公开表面是 markdown 报告、持久的 ClawSweeper 审核评论和可选的检查。
PR 报告包含类似 Codex /review 风格的 reviewFindings,包含优先级、置信度、仓库相对文件路径和行范围。当存在发现时,公开的 PR 评论会显示简短的 Review findings: 列表;完整的审核评论、证据链接、可能的拥有者和运行时详情则隐藏在折叠的 Review details 块内。
对于简单的状态请求,读取现有报告和有限的活动工作流状态。仅在被请求完整审核时才使用 pnpm run audit。
对账是一个独立的授权变更操作:pnpm run reconcile 会移动/删除报告和工作计划文件。仅当请求该维护任务时才检查其 dry-run;不要在状态/报告读取期间运行对账。同样,apply-decisions 属于明确授权的应用工作流,首先运行其 dry-run。
创建一个修复任务
从议题/PR 引用和维护者提示创建任务:
pnpm run repair:create-job -- \
--repo openclaw/openclaw \
--refs 123,456 \
--prompt-file /tmp/clawsweeper-prompt.md
从现有的 ClawSweeper 报告创建:
pnpm run repair:create-job -- \
--from-report ../clawsweeper/records/openclaw-openclaw/items/123.md
任务创建器会检查是否已存在开放的 PR、正文匹配或远程 clawsweeper/<cluster-id> 分支,然后才写入另一个任务。使用 --dry-run 进行检查。仅当判断重复保护已过时时才使用 --force。
验证、提交,然后派发:
pnpm run repair:validate-job -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md
pnpm run repair:dispatch -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md \
--mode autonomous \
--runner blacksmith-4vcpu-ubuntu-2404 \
--execution-runner blacksmith-16vcpu-ubuntu-2404 \
--model gpt-6-astra
在任务文件提交并推送之前,不要派发刚创建的任务;工作流从 GitHub 读取任务路径。
替换 PR
对于有用但不可编辑/过时/不安全的源 PR,让维护者提示明确:
将 #123 视为有用的源工作。如果源分支无法安全更新(因为不可编辑、过时、仅草稿、不可合并或不安全),则创建一个窄范围的 ClawSweeper 替换 PR 而不是等待。保留源 PR 作者作为共同作者,在替换 PR 正文中注明源 PR,并且仅在替换 PR 打开后才关闭该源 PR。
工作者应输出 repair_strategy=replace_uneditable_branch 并在 source_prs 中列出源 PR URL。确定性执行器会打开或更新 clawsweeper/<cluster-id>,添加非机器人源作者作为 Co-authored-by 尾注,并仅在替换 PR 存在后才关闭被取代的源 PR。
门控
仅在明确授权的时间窗口内更改执行门控。在更改前记录原始状态和任何约定的恢复:
gh variable set CLAWSWEEPER_ALLOW_EXECUTE --repo openclaw/clawsweeper --body 1
gh variable set CLAWSWEEPER_ALLOW_FIX_PR --repo openclaw/clawsweeper --body 1
gh variable set CLAWSWEEPER_ALLOW_MERGE --repo openclaw/clawsweeper --body 1
gh variable set CLAWSWEEPER_ALLOW_AUTOMERGE --repo openclaw/clawsweeper --body 1
仅当授权窗口包含该恢复且其所有权/状态仍匹配时,才恢复门控。否则保持原样;另一个活动的维护者窗口可能有意将其保持为 1。切勿将所有门控重置作为通用清理。
重要门控:
CLAWSWEEPER_ALLOW_EXECUTE:允许确定性写入通道。CLAWSWEEPER_ALLOW_FIX_PR:允许分支修复/替换 PR。CLAWSWEEPER_ALLOW_MERGE:允许具有合并能力的应用器。CLAWSWEEPER_ALLOW_AUTOMERGE:允许评论路由器自动合并。CLAWSWEEPER_COMMENT_ROUTER_EXECUTE:允许计划的评论路由发布回复并派发修复。
维护者提及
对于所有面向维护者的控制,优先使用 @clawsweeper 评论。斜杠命令仍然作为兼容性别名被解析,但示例和实时指导应使用提及。
@clawsweeper status
@clawsweeper re-review
@clawsweeper review
@clawsweeper fix ci
@clawsweeper address review
@clawsweeper rebase
@clawsweeper autofix
@clawsweeper automerge
@clawsweeper approve
@clawsweeper explain
@clawsweeper stop
@clawsweeper <question or safe action request>
@clawsweeper[bot] re-review
@openclaw-clawsweeper fix ci
@openclaw-clawsweeper[bot] fix ci
接受的别名:review、re-review、rereview、review again、rerun review 和 run review。review 和 re-review 会派发一次新的 ClawSweeper 议题/PR 审核,而不启动修复。fix ci、address review 和 rebase 仅对 ClawSweeper PR 或选择了 clawsweeper:autofix 或 clawsweeper:automerge 的 PR 派发修复工作者。autofix 运行有限的审核/修复循环而不合并。automerge 运行有限的审核/修复/合并循环,但草稿 PR 保持仅修复状态,直到 GitHub 将其标记为准备就绪以供审核。
自由格式的维护者提及,例如 @clawsweeper why did automerge stop? 或 @clawsweeper:can you explain this failure?,会派发一个只读辅助审核,以提及文本作为一次性指令。答案会出现在下一个公开的 ClawSweeper 审核评论中。看起来像操作的散文不会直接变更 GitHub;它必须映射到现有的结构化建议并通过正常的确定性门控。
默认接受的维护者:OWNER、MEMBER、COLLABORATOR;后备仓库权限接受 admin、maintain 或 write。贡献者的评论将被忽略且不回复。
手动运行路由器:
pnpm run repair:comment-router -- --repo openclaw/openclaw --lookback-minutes 180
pnpm run repair:comment-router -- --repo openclaw/openclaw --execute --wait-for-capacity
计划的路由保持 dry 状态,除非 CLAWSWEEPER_COMMENT_ROUTER_EXECUTE=1。
受信任的自动修复和自动合并
@clawsweeper autofix 将现有 PR 选择加入有限的审核/修复循环。@clawsweeper automerge 将现有 PR 选择加入有限的审核/修复/合并循环。路由器会:
- 验证维护者授权;
- 给 PR 打上
clawsweeper:autofix或clawsweeper:automerge标签; - 为当前头部 SHA 派发 ClawSweeper 审核;
- 创建或重用持久的采用任务;
- 最多修复配置的上限次数;
- 永不合并自动修复 PR 或草稿 PR;
- 仅当 ClawSweeper 通过了确切的当前头部、检查为绿色、GitHub 表示可合并、没有人工审核标签存在、PR 不是草稿且两个合并门控都打开时,才合并自动合并 PR。
缺少变更日志永远不会成为审核发现或合并阻塞项。CHANGELOG.md 仅用于发布;在 PR 正文或压缩提交消息中记录面向用户的发布说明上下文,切勿为普通修复编辑变更日志。
如果当合并门控关闭时 ClawSweeper 通过了,它会打上 clawsweeper:merge-ready 标签并评论而非合并。@clawsweeper stop 会添加 clawsweeper:human-review。
当被要求创建 PR 并启用 ClawSweeper 自动合并时,不要将本地 OpenClaw 检出留在 PR 分支上。在 PR 被创建、推送并且 @clawsweeper automerge 请求被发布或以其他方式确认后,将本地检出返回到 main 并在工作树干净时快进它:
git switch main
git pull --ff-only
如果不相关的本地编辑或正在进行的中止阻止切换,则报告阻塞原因,而不是 stash、删除或覆盖工作。
修复上限:
CLAWSWEEPER_MAX_REPAIRS_PER_PR=10
CLAWSWEEPER_MAX_REPAIRS_PER_HEAD=1
安全边界
不要为 ClawSweeper 修复暂存未经批准的安全敏感工作。将漏洞报告、CVE/GHSA/安全公告工作、泄露的秘密/令牌/密钥、明文密钥存储、SSRF、XSS、CSRF、RCE、认证绕过、权限提升和敏感数据暴露路由到 OpenClaw 中央安全处理。
对于明确选择了 clawsweeper:autofix 或 clawsweeper:automerge 的 PR,安全敏感的审核发现可能会派发有限修复,但合并保持阻塞,直到后续的精确头部审核干净且正常的合并门控通过。信任确定性的 ClawSweeper 安全标记、标签和任务前言;不要从模糊的文本推断安全处理。
监控
接收者工作流:
gh run list --repo openclaw/clawsweeper --workflow sweep.yml \
--limit 12 --json databaseId,displayTitle,event,status,conclusion,createdAt,updatedAt,url
gh run list --repo openclaw/clawsweeper --workflow repair-cluster-worker.yml \
--limit 12 --json databaseId,displayTitle,event,status,conclusion,createdAt,updatedAt,url
gh run list --repo openclaw/clawsweeper --workflow repair-comment-router.yml \
--limit 12 --json databaseId,displayTitle,event,status,conclusion,createdAt,updatedAt,url
gh run list --repo openclaw/clawsweeper --workflow github-activity.yml \
--limit 12 --json databaseId,displayTitle,event,status,conclusion,createdAt,updatedAt,url
目标派发器:
gh run list --repo openclaw/openclaw --workflow "ClawSweeper Dispatch" \
--limit 8 --json databaseId,displayTitle,event,status,conclusion,headSha,url
读取输出
对于发现或失败,总结:
- 目标仓库、项目/PR、运行、报告路径
- 结果、置信度、严重性和确切的阻塞项
- 受影响的文件或集群引用
- 验证命令及其是否通过
- 变更门控是打开还是关闭
- 下一个确定性操作
保持扫帚小巧:一个集群、一个分支、一个 PR、窄范围的证明、清晰的拥有者可见证据。