用途 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 监视。
- 资料未提供收费、价格、平台或效果信息。