用途
GitHub Comment Cleanup 是一个自动化插件,用于在 GitHub 仓库中按计划执行注释清理。它本身不包含清理规则,而是加载 comment-cleanup 技能,在有配置的每个仓库上开启一次清理会话,并最多为该仓库打开一个 Pull Request。默认按周运行。
主要能力
- 按 cron 计划(默认每周)对配置的仓库执行清理。
- 每次运行先记录上一轮会话的结果:若产生了 PR,则记录每个文件的原始与清理后指纹;若为 NO_CHANGES,记录原始指纹;若失败则不记录,相关文件会在后续运行中再次被处理。
- 当该仓库此前打开的 PR 仍处于打开状态,或上一轮会话仍在运行时,跳过该仓库。
- 对默认分支做浅克隆,按 git blob SHA 为候选文件建立指纹。已有记录且未变化的文件直接跳过,不读取内容;无注释的文件直接记录;有变化的文件优先于从未见过的文件排队,再按路径排序。
- 单次最多排队 50 个文件(max_files 可设 1–50,默认 50),并受 max_bytes 限制,超出部分留待后续运行。
- 启动一个会话,加载 comment-cleanup 技能并在首条消息中传入排队路径;代理负责编辑、运行 verify_comment_only.py、提交、推送并创建 PR。
使用方式
通过 plugin-spec 接口创建自动化。插件源为:
{
"source": "github:OpenHands/extensions",
"repo_path": "plugins/github-comment-cleanup",
"ref": "main"
}
ref 在插件未正式发布期间为 main;发布后可改用对应的 release tag,例如 v<extensions-version>。本地 Agent Canvas 开发可用本地路径作为 source。
请求模板示例包含 name、plugin、config 与 trigger 字段。config 可设置 repos、include、exclude、max_files、max_bytes、branch_prefix、pull_request_mode;trigger 使用 cron 类型,例如 "0 9 * * 1" 配合时区 UTC。创建前应先询问用户需要清理哪些仓库,以及是否需要包含或排除某些路径。include 与 exclude 为 fnmatch 通配符,其中 * 也会匹配 /。权威配置 schema 位于 plugins/github-comment-cleanup/.plugin/plugin.json 的 automation.config_schema,创建前应按其校验用户提供的值。
运行要求
- 需要一个具备 contents 和 pull requests 写权限的 GITHUB_PERSONAL_ACCESS_TOKEN 密钥;在 OpenHands Cloud 与 Enterprise 上,若缺少该密钥则使用已连接的 GitHub 集成。
- 在 OpenHands Cloud 与 Enterprise 上需要自动化 KV 存储;没有该存储的本地 Agent Canvas 改用文件保存状态。
- 入口为 scripts 中的
python3 plugin_runner.py main.py。 - 代理配置为 default,次级插件为空列表。清理会话从与插件相同的来源和已解析提交加载 skills/comment-cleanup,确保技能与脚本版本一致。
- 状态结构见 references/state-schema.md;删除某仓库的键可强制完整重新检查。
适用场景与限制
适用于希望定期、以低干扰方式清理代码注释并生成可审查 PR 的 GitHub 仓库,尤其适合需要控制单次处理规模和避免重复处理已检查文件的场景。限制包括:仅处理 GitHub 仓库;单次最多 50 个文件;同一仓库同时最多一个未关闭 PR;需要相应权限的令牌或集成;自动化调度与 KV 存储能力依赖所在平台。