ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PR Review Triage Skill 实战:用 pr-review-triage 打造 loop-engineering 的 PR 看护循环

PR Review Triage Skill 实战:用 pr-review-triage 打造 loop-engineering 的 PR 看护循环 人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务【免费下载链接】loop-engineeringPractical patterns, starters CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.项目地址https://gitcode.com/gh_mirrors/lo/loop-engineering点击查看免费下载导读pr-review-triage是 loop-engineering 仓库中 PR BabysitterPR 看护循环的核心技能它负责对每个受监控的 Pull Request 执行标准化分诊评估 CI 检查状态、评审意见、合并就绪度并输出可被下游 Agent 直接消费的结构化结论。读完本文你将掌握该 Skill 的完整输出契约与判定规则理解Ready to merge的严格成立条件并学会如何把它与minimal-fix、verifier 子代理、pr-babysitter-state.md状态文件组合成一条可运行、可审计、可安全升级到人类的自动化工作流。Skill 是什么一个面向 PR 看护循环的分诊代理pr-review-triage是一个以 SKILL.md 形式定义的 Agent 技能位于 starters/pr-babysitter/.codex/skills/pr-review-triage/SKILL.md。它的 YAML front matter 这样声明自身能力name: pr-review-triage description: Triage open pull requests for CI status, review comments, and merge readiness. Use in PR babysitter loops. Respects project review norms and required checks. user_invocable: true三个字段各有用意name技能唯一标识也是 Agent 路由与编排时引用的名称description声明分诊 CI 状态、评审意见、合并就绪度这一职责边界并明确尊重项目评审规范与必需检查——这意味着技能不产出通用结论而是要求 Agent 以仓库的实际政策为依据user_invocable: true允许用户/上层循环显式调用该技能。值得注意的是同一份技能在仓库中以多份等价副本分发给不同 Agent 工具链除.codex外还有 starters/pr-babysitter/.grok/skills/pr-review-triage/SKILL.md、starters/pr-babysitter/.claude/skills/pr-review-triage/SKILL.md以及针对 opencode 的变体 starters/pr-babysitter-opencode/skills/pr-review-triage/SKILL.md。这说明该技能是 PR Babysitter 模式跨工具分发的通用分诊引擎各版本保持相同输出契约仅在交互细节上略有差异例如 opencode 版会额外要求列出给人类的 Top 3 行动项、在 L1 模式下不改代码。Per-PR 输出契约一个可被机器消费的结构化报告技能的核心要求是对每个受监控的 PR必须输出一份字段齐全的结构化报告且字段取值只能来自固定的枚举集合。原始模板如下### PR #N — title - Checks: passing | failing | pending | absent/unknown — list names and conclusions - Required-check policy: known and satisfied | known and unsatisfied | unknown - Reviews: approved N | changes requested | review required | absent/unknown - Mergeability: clean | conflicts | unknown - Blocking comments: (list actionable ones) - Ready to merge: yes | no — reason - Suggested loop action: none | minimal-fix | rebase | escalate-human逐字段解读其语义边界字段取值枚举含义与判定要点Checkspassing / failing / pending / absent/unknownCI 状态总览需列出具体检查名与结论Required-check policyknown and satisfied / known and unsatisfied / unknown仓库必需检查政策是否已知且被满足Reviewsapproved N / changes requested / review required / absent/unknown评审审批状态Mergeabilityclean / conflicts / unknown仅指 Git 是否发现冲突不代表可合并Blocking comments可执行的评审意见列表只列出有行动价值的阻塞性意见Ready to mergeyes / no — reason综合判定见下文严格条件Suggested loop actionnone / minimal-fix / rebase / escalate-human给上层循环的行动建议这份模板同时出现在 state 文件中作为持久化格式见 starters/pr-babysitter/pr-babysitter-state.md.example说明它既是输出格式也是状态记录格式——每次运行把报告写回状态文件下一轮循环就能基于历史做增量判断!-- - #1234 (branch-name) Checks: passing | failing | pending | absent/unknown Required-check policy: known and satisfied | known and unsatisfied | unknown Reviews: approved 1 | changes requested | review required | absent/unknown Mergeability: clean | conflicts | unknown Ready to merge: yes | no — reason Attempts: 0/3 Last action: — Human decision: — --注意 state 示例中的Attempts: 0/3与Human decision: —两个额外字段前者对应 LOOP 配置里每 PR 最大修复尝试 3 次的限制后者用于记录人类对循环决策的覆盖——这正是 patterns/pr-babysitter.md 所强调的让人保持裁判席。八条判定规则如何避免把看起来绿误判为可以合并技能的精髓不在模板而在规则。SKILL.md 中全部规则原文如下Zero checks, or no check runs/status contexts returned, meansabsent/unknown, notpassing, unless the repository policy explicitly requires no checks.Separate functional CI from administrative statuses such as a CLA or labeler; list both, but do not use administrative success as evidence that tests passed.mergeableor a clean merge state only means Git found no conflict. It does not mean the PR is ready, reviewed, or verified.Ready to merge requires a known project policy, every required check satisfied, required approvals present, no changes requested, no blocking comments, and no merge conflict.If the required-check or review policy cannot be established, reportReady to merge: noand escalate to a human.Non-actionable nits → note but do not spawn fix.If PR idle 4 days → suggest human handoff.High-risk labels (security, breaking) → escalate-human always.把这几条规则翻译成可执行的工程语义零检查 ≠ 通过。没有返回任何 check run 或 status context 时必须如实记为absent/unknown唯一的例外是仓库政策明文规定不需要任何检查。这条规则直接针对 PR Babysitter 模式文档里列出的失败模式Missing checks look green——patterns/pr-babysitter.md 明确要求把零返回的检查表示为absent/unknown在仓库政策已知且所有检查/评审门禁满足之前一个 clean/mergeable 的 PR 不算就绪。区分功能性 CI 与管理性状态。CLA 签署、labeler 这类管理性状态即使通过也不能当作测试通过的证据两者都要列出但证据权重不可混用。mergeable只代表无冲突。Git 层面没冲突 ≠ 经过评审、验证、可以合入。这是防止 Agent 把GitHub 说可合并直接当该合并的关键护栏。Ready to merge: yes是且门AND已知的项目政策 每个必需检查均满足 必需的审批到位 无 changes requested 无阻塞性评论 无合并冲突六条全部成立才为 yes。任何一条不满足就应为 no 并写明原因。政策不可确立时默认拒绝合并。无论检查/评审政策哪一方无法确立都报告Ready to merge: no并升级给人类——宁可保守不可猜测。非行动性 nit 只记录不修复。防止 Agent 为一句风格建议而制造不必要 diff这与minimal-fix技能一个问题一次最小修复的哲学一致。闲置 4 天建议人工接手。避免循环在无人关注的 PR 上无限空转。高危标签永远升级人类。security、breaking 等标签触发escalate-human不经过 Agent 的自动修复通道。判定优先级速查当多个信号并存时按保守优先排序高危标签 政策未知 检查未满足 评审未通过 冲突 可合并。也就是说任何上层信号不满足都会让Ready to merge降级为 no并据此把Suggested loop action导向escalate-human、minimal-fix或rebase。在 PR Babysitter Loop 中落地启动、状态与行动分发pr-review-triage是 PR Babysitter 模式L2——带 verifier 的辅助修复三件套中的第一环另外两个是minimal-fix与rebase-and-clean见 patterns/pr-babysitter.md 的 Required Skills 一节。整个循环的典型周期是发现团队作者或打上loop-watch标签的开放 PR对每个 PR 运行pr-review-triage技能检查失败 → 派发带minimal-fix技能的子代理检查 pending → 等待absent/unknown→ 先确立仓库政策或升级而不是假设绿色有可行动评审意见 → 提出最小补丁满足全部就绪条件 → 打 ready to merge 标签或 ping 人类长期闲置的 PR → 建议关闭或交接歧义或高风险 → 带上下文升级给人类。快速启动按 starters/pr-babysitter/README.md 的指引把 starter 拷入目标仓库Grok 示例npx cobusgreyling/loop-init . --pattern pr-babysitter --tool grok # 或手动拷贝 cp -r starters/pr-babysitter/.grok/skills/* .grok/skills/ cp starters/pr-babysitter/pr-babysitter-state.md.example pr-babysitter-state.md cp starters/pr-babysitter/LOOP.md .随后用LOOP.md中的团队循环配置启动starters/pr-babysitter/LOOP.md注意其中定义的安全边界配置项值Cadence5m工作时间Max fix attempts per PR3Auto-merge禁用监控范围团队作者 PR /loop-watch标签人工门禁security / auth / payments / infrastructure循环修复涉及 10 文件的 PRGrok TUI 的典型启动命令README 原文/loop 5m Check open PRs. Update pr-babysitter-state.md. For CI failures or actionable review comments on allowlisted PRs: worktree minimal-fix loop-verifier. Run loop-context --check before each retry; run loop-gate check before commit. Never merge — propose only. Escalate after 3 attempts per PR.命令里包含三个关键约束全部与技能规则呼应worktree 隔离 minimal-fix loop-verifiermaker/checker 分离、每次重试前跑loop-context --check熔断器、永不合并只提议 3 次尝试后升级对应Attempts: 0/3与第 4、7 条规则。熔断器与成本控制PR Babysitter 是具备修复能力的 L2 模式loop-init会自动脚手架loop-guard技能与种子化的loop-ledger.json。按 patterns/pr-babysitter.md 的 Circuit Breaker 一节每次对受监控 PR 重试前运行npx cobusgreyling/loop-context --check --ledger loop-ledger.json \ --budget-from-pattern pr-babysitter --budget-level L2非零退出码意味着同一失败反复出现或尝试次数触顶——此时停止评论/重试并升级人类而不是继续在 PR 上打转。成本画像同一文档 Cost Profile也提醒无操作轮约 3k tokens、单次 triage 约 80k、单次 L2 修复约 250k建议日上限 2M tokens 且必须尽早退出空监控列表直接 return。底层实现佐证verifier 与 minimal-fix 如何兜底分诊结论pr-review-triage只负责判断不负责动手动手由minimal-fix承接验收由独立的 verifier 子代理把关。这正是模式文档里 maker/checker 分离的落地minimal-fixskills/minimal-fix/SKILL.md声明用最小 diff 修复一个具体问题绝不重构无关代码其输出必须包含Target / Diff summary / Verification run / Risks四要素并且不得标记自己的工作已完成——由 verifier 裁决。Codex 侧的 verifier 定义在 starters/pr-babysitter/.codex/agents/verifier.toml采用高 reasoning effort默认立场是REJECT until proven otherwise检查清单为范围仅相关文件、无 denylist 路径、意图针对声明目标、测试实际运行并报告结果、无作弊不禁用测试/跳过断言、风险中风险即使测试通过也建议人工评审。这五个维度与技能规则 1–4 形成闭环分诊说可修复minimal-fix 修verifier 独立验收后才允许循环把结论写回状态并同步到 PR。从源码结构可以推断出完整的数据流pr-review-triage产出Suggested loop action→ 循环据此派发minimal-fix或 rebase、或 escalate-human→ verifier 独立验收 → 结果写入pr-babysitter-state.md的对应 PR 条目含Attempts、Last action、Human decision→ 下一轮循环基于更新后的状态继续。判断与执行、执行与验收之间始终互相分离。安全与升级路径技能规则的最终目的是把人类仍在裁判席这一模式原则落实为可判定的输出无自动合并循环只提议propose由人类或显式的 auto-merge 白名单执行实际合并denylist 兜底auth、payments、secrets 等路径在 docs/safety.md 中列入 denylistminimal-fix碰到 denylist 路径时升级而非编辑明确的升级触发点高危重构、触及 security/payments/auth/核心基础设施、同一 PR 上循环提案超过 N 次无进展、状态文件中同一 PR 连续数天反复出现——这些情形下pr-review-triage的输出应稳定指向escalate-human且状态文件会在## Escalated (human required)分区集中呈现方便人类一次性处理。适用前提与限制本技能面向开放 PR 的 CI/评审/合并就绪度分诊需要 Agent 具备读取 PR 列表、check runs、status contexts、review 评论的通道如ghCLI 或 GitHub MCP见 starters/pr-babysitter-opencode/skills/pr-review-triage/SKILL.md 的 Inputs 一节项目评审规范与必需检查必须由使用方在部署 starter 时按 starters/pr-babysitter/README.md 第 2 步自定义技能本身不臆测政策技能是只读分诊器它不产生代码修改任何修复都经由minimal-fix verifier 通道并在 worktree 隔离下进行合并动作永远留给人类。综上pr-review-triage的价值在于用一套固定的字段枚举与八条保守规则把这个 PR 能不能合这个模糊问题变成可复现、可审计、可升级的机器决策并让每次决策都有迹可循地沉淀进状态文件——这正是 loop engineering 中人类保有最终判断权理念在 PR 场景下的具体实现。赞分享人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务【免费下载链接】loop-engineeringPractical patterns, starters CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.项目地址https://gitcode.com/gh_mirrors/lo/loop-engineering点击查看免费下载相关推荐Windsurf 上的 PR Babysitter用 Cascade Workflows 搭建可复制的 PR 看护 Looploop-engineering 实战Windsurf 上的 PR Babysitter用 Cascade Workflows 搭建可复制的 PR 看护 Looploop engineering人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务PR Review: {PR Title}PR Review: {PR Title} 需求理解 {第一阶段总结PR 的核心目的与改动范围} 逻辑验证 {列出提出的测例及推理结果标明是否通人工智能AI AgentRAG大模型工作流自动化后端前端Repo VERSION — PR TriageRepo VERSION — PR Triage Working doc for tracking which open PRs land in VERS人工智能语音音频桌面应用本地部署MCP 服务上一篇如何用Fan Control彻底解决Windows电脑风扇噪音和散热问题下一篇B站CC字幕一键提取3分钟掌握高效字幕下载与转换技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进