SuperAPI AI 工具集

babysit

编程与开发

查看项目

更新于 10-16 09:13

技能介绍

用途 babysit 用于照看一个 GitHub PR,或等待其 CI 与审查检查完成。它的目标不是合并 PR,而是确认当前 PR head 上预期的检查已经完成,并对失败或缺失的检查做出说明。babysit 不授权合并、不授权绕过门禁,也不授权发布审查评论。

主要能力

  • 先检查 PR 的可合并性,再决定是否启动监视。
  • 使用 gh 命令监视 PR 检查,等待检查完成。
  • 处理无法完成的检查,例如缺失的检查、长时间无进展的检查、工作流无法运行等情况。
  • 在监视结束后重新核对 PR 状态、head SHA、base 分支与 SHA、可合并性,并做最终检查快照。
  • 对已知的 GitHub Actions run,可用其 run ID 单独监视。

使用方式 使用明确的 PR 编号和仓库进行检查: gh pr view <n> -R <owner/repo> --json state,url,headRefOid,baseRefName,baseRefOid,mergeable,mergeStateStatus,isDraft,reviewDecision

记录 head SHA、base 分支和 base SHA。如果 PR 已关闭或已合并,停止监视。在启动监视前先处理 mergeable 状态:

  • CONFLICTING:如果只是监控请求,报告冲突;如果修复已获授权,使用 resolve-pr-conflicts 针对该 PR 当前 base 解决冲突,推送后重复检查。
  • UNKNOWN:GitHub 尚未确定可合并性,稍后重试;如果仍未知,可在本地检查已获取的 head/base,或报告未解决状态。不要假设无冲突,也不要无限循环。
  • MERGEABLE:继续。其他合并门禁仍可能阻塞 PR;仅 mergeStateStatus: BLOCKED 并不代表存在文本冲突。

当存在合并冲突时,GitHub 不会运行由 pull_request 触发的工作流。先解决冲突可避免等待无法启动的检查。

让 gh 监视检查: gh pr checks <n> -R <owner/repo> --watch --interval 10

该命令默认每十秒刷新一次,并等待所报告的检查完成。当失败需要立即返回控制以进行修复时,使用 --fail-fast。仅当任务只关注必需检查时,才添加 --required;它可能排除审查机器人的可选检查。

将命令作为一次长时间运行的进程执行。使用执行工具的完成通知,或在同一会话中以较长的实际等待时间等待。不要用模型驱动的 sleep 交替发起新的 gh pr checks 调用,不要在每次工具让出时重启监视器,也不要叙述未变化的刷新。

这是 CLI 管理的轮询,不是服务器事件订阅。实现会在检查待定时刷新,并在没有检查剩余时退出。它不会为之后创建的检查或未来的审查评论保持订阅。

检查最终输出和退出状态。失败的检查返回非零;普通非 watch 输出对待定检查使用退出码 8。认证、API 和缺失检查错误也需要诊断。需要结构化细节时,使用单独的快照: gh pr checks <n> -R <owner/repo> --json name,bucket,state,workflow,link

不要将 --json 与 --watch 组合使用。JSON 是快照,其成功导出并不证明检查通过。检查 bucket 值;cancelled 或 skipped 的检查不能作为预期测试已运行的证据。

处理无法完成的检查 如果没有报告任何检查,监视器会以错误退出,而不是等待其创建。如果预期检查缺失,或待定检查超出正常运行时仍无进展,请检查工作流和运行详情。根据证据检查冲突、触发/路径过滤器、skip 注解、工作流审批和不可用的 runner。不要为无法运行的工作流反复重启监视器。阻塞解决后恢复;否则报告阻塞。

对于已知的 GitHub Actions run,使用其特定 ID: gh run watch <run-id> -R <owner/repo> --exit-status --compact --interval 10 gh run view <run-id> -R <owner/repo> --log-failed

run 监视器覆盖一个 Actions run,而不是所有 PR 检查。--exit-status 使 run 失败返回非零。它不支持细粒度 PAT 认证。需要时检查失败日志;在授权任务内修复并推送,然后从冲突检查重新开始。不要在没有诊断的情况下反复重跑失败。

发布检查的审查服务可以通过 gh pr checks 监视。仅发布评论或审查的服务不在这些监视器范围内。如果该服务有可用的完成机制,请使用它;否则报告该限制,而不是将绿色 CI 视为已完成的审查。

验证结果 监视器退出后,重新读取 PR 状态、head SHA、base 分支与 SHA、可合并性。做最终检查快照,确认预期检查已出现。如果 head 发生变化,对新 head 重复预检并监视检查。如果只有 base 变化,重新评估可合并性和仓库的新鲜度要求;不要仅因该变化重启已完成的检查。监视器退出本身并不证明可合并就绪或审查已批准。

报告 PR、已验证的 head SHA、检查结果以及任何审查或工作流阻塞。仅当用户任务授权时,才继续合并。

适用场景

  • 需要等待某个 GitHub PR 的 CI 或审查检查完成。
  • 需要诊断检查失败、缺失或无法启动的原因。
  • 需要先处理合并冲突,避免等待无法启动的工作流。

限制

  • babysit 不授权合并、绕过门禁或发布审查评论。
  • 它是 CLI 轮询,不是服务器事件订阅,不会为之后创建的检查或未来审查评论保持订阅。
  • 仅发布评论或审查的服务不在监视范围内。
  • 不支持细粒度 PAT 认证的 run 监视。
  • 资料未提供收费、价格、平台或效果信息。