用途:在打开 PR 后默认使用,或在已有 PR 需要跟进 CI、CodeRabbit、Codex、机器人及人工评审反馈时使用,目标是让 PR 达到可合并状态或报告具体阻塞原因。
主要能力:将被动监控委托给兼容的 guardian runner,需其 guardian capabilities --json 声明 schema 版本 1 并支持持久完成通知;通过 kaizen-loop guardian run <pr-number> --project <project-slug> --json 启动一次性任务。要求终端事件通过 scripts/validate_guardian_event.py 校验仓库、PR、任务、序列与 head,并确认运行器成功退出后才接受 merge_ready。
使用方式:先解析 GitHub CLI 为 GH_BIN,尝试 command -v gh、$HOME/.nix-profile/bin/gh、$HOME/.local/state/nix/profiles/profile/bin/gh、/run/current-system/sw/bin/gh 及平台回退路径;用绝对路径执行命令。解析目标 PR,读取本地说明(如 AGENTS.md)与 PR 元数据,再用 GraphQL 游标循环与 REST --paginate 命令拉取完整反馈清单,逐条分类为 fix、respond、ignore 或 blocked。修复项保持范围聚焦并补测试,在每个评审线程内先回复再解决(回复用首个评论 fullDatabaseId 的 REST 端点,解决用 GraphQL resolveReviewThread)。推送后只重新激活 runner 一次并结束推理轮次,默认每个 PR 最多 5 次修复推送,CI 与评审等待窗口默认 30 分钟。
合并门:要求非 draft、mergeable 为 MERGEABLE、mergeStateStatus 可合并、reviewDecision 非 CHANGES_REQUESTED、必要检查通过、预期机器人评审对当前 head SHA 有终态证据、稳定窗口内两次快照一致且无新活动、零未解决评审线程(含过时线程)。若缺少兼容 runner 或完成通知,报告 blocked: passive guardian runner unavailable。
限制:不使用代理工具调用复现等待循环;gh pr checks --watch 本身不满足评审线程监控;不把早期总结评论或首屏数据当作完整证据;速率限制、超时或缺少当前 head 终态评审均视为等待外部评审,不得报告为可合并。