用途:shepherd 是 Forge 中的 PR 归属(ownership)工具,而非工作流阶段。它持续跟踪仓库内所有开放 PR,将其收敛到 merge-readiness,并输出裁决(verdict)供人阅读,仅在升级(escalation)时人工介入。
主要能力:两种模式共用 forge shepherd 动词。守护进程模式 forge shepherd daemon 是仓库级机器单例,约每 60 秒心跳并收敛整个 PR 世界:自动注册手工开启的 PR、重启被杀死的 watcher、回收已确认的孤儿、把 CI 检查状态收敛为内核裁决、退役已合并/关闭的 PR;当没有开放 PR 时自行退役(释放租约、结束子进程、退出)。一次性收敛模式 forge shepherd <pr> 执行本地评审预检、读取单个 PR 当前 head 状态、最多执行一次幂等的 Tier-A 动作、持久化有界增量与回执后退出。
使用方式:判断单个 PR 当前状态用 forge shepherd <pr> --pull;持续看护、多个 PR 或会话开始时已有开放 PR,则确保守护进程在运行。读取裁决常用命令:forge shepherd <pr> --pull --json(可操作载荷:为何阻塞及要修什么)、forge shepherd <pr> --bundle --json(完整只读 PR 状态包)、forge shepherd events <pr> --since <seq>(仅新增事件)。--pull 严格只读,不重跑、不 rebase、不合并、不解决线程。守护进程会在受支持会话成功启动、每次成功 push、每次成功非 dry-run ship 后自动唤醒;普通命令不会启动它。
裁决词汇:MERGE_READY(必需检查全绿且分支最新,交人工合并)、PENDING(已执行 Tier-A 动作或检查仍在跑)、INCOMPLETE(精确 head 本地评审或持久收敛证据不可用,失败关闭并待证据恢复后重试)、BLOCKED(存在可操作的合并阻塞,读 blockers[])、CI_DEAD_HEAD(head 无必需检查在跑,需维护者提供 FORGE_PR_TOKEN 重新触发)、ESCALATE(Tier-C 条件,如冲突、必需集不可读、持续失败、震荡、预算耗尽)、HARD_STOP(永久性认证/权限失败,需人工扩大 token 范围)。
限制与边界:永不合并,无服务端自动合并闩锁,止于 MERGE_READY 并交人工在 GitHub UI 合并;永不解决评审线程,只刷新单条 sticky 状态评论。动作阶梯:Tier-A 自主幂等(重跑 flaky 必需检查,受重跑预算限制;刷新单条 sticky 评论,为 upsert 而非追加);Tier-B 需显式开启、默认关闭(--auto-rebase 以 lease 强制推送,lease 被拒即硬停);Tier-C 一律升级。仅当分支保护必需集已知且全绿才判 MERGE_READY,保护不可读则升级而非猜测。任何变更动作前重读 head SHA,HEAD 变动即中止。关闭开关:FORGE_SHEPHERD_DISABLE=1 或 forge gate disable rail.auto_shepherd。在测试环境、dry-run、未初始化仓库及禁用路径下,自动守护进程触发会提前返回,但手动 forge shepherd 仍可用。相邻技能:修评审反馈用 review,开/推 PR 用 ship,合并后健康用 verify,定位用 status。其余细节(如 0.1 版租约权威、LeaseReceipt 等)资料未提供完整说明。