☰
Skills的shepherd技能实战:自动分诊评审评论、修复CI失败的AI PR/MR守护神
2026/10/15 12:19:50 网站建设 项目流程

【免费下载链接】skills

Skills for Kotlin, Jetpack Compose, and Android development

项目地址:https://gitcode.com/gh_mirrors/skills33/skills
点击查看免费下载

Skills 项目的 shepherd 技能是一位专为合并请求(PR/MR)打造的AI 守护神:自动轮询仓库状态、分诊评审评论、修复 CI 失败并批量推送,全程以证据驱动、绝不越权合并。下面用新手友好的方式讲清它的工作方式、安全边界与快速上手方法。

什么是 shepherd:PR/MR 的自动守护神

提过 PR 的开发者都熟悉这种煎熬:提了合并请求之后,要时刻盯着 CI 是否跑绿、评审人有没有新评论、自己修完推送后还要再等一轮验证……

shepherd(牧羊人)就是为了解决这个问题而生的工作流技能。它接管"盯着 PR"这件事,核心原则只有一句话:

用证据(而非噪音)推动一个已授权的 PR/MR:轮询新变化 → 处理可行动项 → 本地修复批量合并成一次推送 → 解决已处理的讨论线程。

它会自动完成这些"保姆"工作:

  • 📡轮询:通过gh(GitHub)或glab(GitLab)定期检查 PR/MR 状态
  • 🔍分诊:区分新评论和旧评论,只处理真正的新增反馈
  • 🔧修复:格式、lint、编译、测试等小问题直接修,架构类争议立即上报
  • 🧪验证:修复时跑受影响检查,合并前跑必要的全量检查,CI 只作最终确认
  • 🛑守边界:没有明确的合并授权,绝不 merge

完整流程定义在 skills/shepherd/SKILL.md,项目总览见 README.md。

它如何工作:8 步守护流程

shepherd 的流程设计得非常克制,按顺序执行 8 步(摘自 SKILL.md):

步骤做什么关键点
1识别平台用git remote get-url origin判断用gh还是glab,模糊就停下来问
2建立目标与快照记录已处理的评论/评审 ID,快照之外的才算"新反馈"
3启用只读助手有子代理时,派一个只读证据收集员,自己保留所有写操作
4轮询比对完整对比评论与 CI 状态,不重复处理旧反馈、不发"仅状态更新"
5先分诊后动手清晰的问题直接修,架构/矛盾类反馈升级给人类
6批量修复一次推每个目标独立 checkout,已知问题攒成一次推送,不逐条评论逐条推
7推送后复核 CI稳定期 2–5 分钟轮询,活跃修复期 30–60 秒,卡住则降频
8合并门禁需求、CI、冲突三项全绿且用户明确授权,才合并

两个细节特别值得新手学习:

  • 快照机制:每轮轮询后记录反馈 ID 和 CI 状态,因此重启会话也不会漏掉或重复处理已有评论。
  • CI 定位正确:CI 是"确认"而不是"迭代测试器"——本地验证先行,CI 兜底,避免把 CI 当试错沙箱。

GitHub 与 GitLab 通用:内置各平台命令

shepherd 内置了两大平台的只读检查命令(详见 provider-commands.md):

平台查看反馈查看检查与日志
GitHubgh pr view <number> --json comments,reviews,...gh pr checks <number>;gh run view <run-id> --log-failed
GitLabglab mr view <iid> --commentsglab ci list --mr <iid>;glab ci trace <job-id>

GitLab 还有一个贴心的小规则:疑似偶发(flaky)的 job 允许用glab ci retry <job-id>重试一次,第二次失败就如实报告,不无限重试。

免轮询新姿势:宿主监控模式

如果你的客户端本身会在 PR 事件发生时"唤醒"AI 会话(例如 Claude 桌面版的ccd_pr工具),shepherd 会自动切换到事件驱动模式:

  1. 不再自己开定时器或循环轮询
  2. 每次被唤醒时只完整读一次:评审线程、检查状态、失败日志
  3. 推送修复后报告 SHA,把"等 CI"交给宿主监控
  4. 结束时明确声明哪些事件不在监控范围内

这套行为有专门的评估用例校准,见 evals/cases/shepherd-host-monitor-direct/case.json。

安全边界:守护神绝不越权

这是 shepherd 最让人放心的一面——它把"守边界"写进了规范:

  • ⚠️绝不从"批准"推断合并授权,合并必须有用户的明确或长期授权
  • ⚠️ 一次性查看、无开放目标、或需要人类判断时,报告状态然后停止,不启动持久轮询
  • ⚠️ 修复三轮仍未解决的失败、评审方向矛盾、冲突无法解决时,立即升级给人类
  • ⚠️ 报告必须诚实:实际跑了哪些检查就说哪些,没跑就明说"none"

负向用例 shepherd-negative 就模拟了"CI 全绿但没给合并授权"的场景——正确行为是什么都不做,这个"克制"正是它和简单脚本的本质区别。

快速上手:三步开始使用

1. 安装 Skills 插件包(任选其一):

# skills CLI npx skills add chrisbanes/skills # 或作为 Claude Code 插件 /plugin marketplace add chrisbanes/skills /plugin install chrisbanes-skills@chrisbanes-skills # 或作为 Codex 插件 codex plugin marketplace add chrisbanes/skills --ref main codex plugin add chrisbanes-skills@chrisbanes-skills

2. 在 PR 所在仓库中唤起:直接用自然语言,例如"帮我盯一下这个 PR,处理评审评论和 CI 失败"。该技能默认不自动触发(见 skills/shepherd/agents/openai.yaml),需要你明确调用——这又是一道安全设计。

3. 看它汇报:每轮结束它会报告目标、当前 CI/评审状态、已执行的动作、实际运行的检查,以及下一个需要人类做的决定。

延伸阅读与配套资料

想深入源码级了解,推荐按此顺序阅读:

  • 📖 skills/shepherd/SKILL.md — 完整 8 步流程与升级条件
  • 📖 references/provider-commands.md — GitHub/GitLab 命令速查与宿主监控规则
  • 📖 references/behavioral-review.md — 行为评审与两轮收敛审计
  • 📖 references/subagent-selection.md — 只读子代理的选型与交接简报
  • 🧪 evals/cases/shepherd-direct/case.json — "CI 失败后规划本地验证" 的评估用例

shepherd 在官方评估套件中的得分高达100%(见 README.md 中的结果表),是目前仓库里最"稳"的工作流技能之一。如果你正在为 PR 合并流程里的琐碎盯梢工作头疼,这位 AI 牧羊人值得放进你的工具箱 🐑✨

【免费下载链接】skills

Skills for Kotlin, Jetpack Compose, and Android development

项目地址:https://gitcode.com/gh_mirrors/skills33/skills
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询