https://github.com/joyehuang/skills/tree/master/personal/herdr-workflow 解读下这个skill
这个 skill 的核心,是把 Herdr 从“启动几个 coding agent 的工具”,组织成“主 Agent 派活、worker 执行、完成后自动回来验收”的工作流。最值得看的是第 5 节的阶段接力和第 6 节的后台任务协议。 先举个例子 假设你让主 Agent:“后台修好登录问题,补测试,做完告诉我。” 按这个 skill,流程不是开个窗口、丢一句需求就结束,而是: 主 Agent 先确定验收标准,比如“问题能复现、修复后测试通过、没有破坏已有登录流程”。 然后创建独立的 Git worktree,启动 worker,把完整任务交给它,同时登记任务、工作区、完成标记和验收标准。 worker 完成后,通知会回注主 Agent 会话;主 Agent 忙时先排队,闲时再补发。 主 Agent 收到通知,检查实际改动和测试结果。通过才向你汇报,不通过就发返工任务。返工最多两次,仍不通过就把问题交给你拍板。 这就是它要建立的闭环。 它分了哪几层 执行层:隔离工作,稳定派活 代码任务使用 Git worktree,避免不同 worker 直接在同一份工作目录里互相覆盖;只读调研则不必创建 worktree。 启动 Agent 时还处理了终端未就绪、名字冲突、信任确认等细节。提示词先写进文件再读取,减少中文引号、反引号和换行被 shell 转义弄坏的问题。 这些看着琐碎,却直接决定“任务到底有没有成功发出去”。 编排层:阶段之间真的能接上 比如“先改 UI,再接后端”,不能靠主 Agent 口头说“我会盯着”。 文档要求用实际的等待机制或接力脚本:上一阶段完成,才触发下一阶段。阶段耦合紧、不需要中途确认,也可以合并成一个完整任务。 这里特别强调:等待命令被超时截断,不等于 worker 停了。必须重新检查实际状态,不能凭一次工具调用的返回判断任务生死。 状态层:登记簿不是事实本身 登记簿记录任务和上次状态,但处理任务时必须重新对账:Agent 当前状态、完成标记、Git 提交、实际产物,才是证据。 这能避免“记录写着 running,其实早做完了”或者“记录写着完成,产物却不存在”。 更关键的是,它把完成拆开了: dispatched → running → done → verified → reported done 只是检测到完成标记;verified 才是按验收标准检查通过;reported 是已经向用户汇报。 也就是说,“worker 说做完了”和“主 Agent 确认做好了”,是两件事。 通知层:让后台结果回到主 Agent 上下文 它不是只弹个桌面通知让人自己去看,而是三层配合: 完成事件主动推送到主 Agent 会话,忙时入队、闲时补发。 主 Agent 处理任务时主动查实际状态。 watchdog 每 180 秒对账活跃任务,发现状态变化后更新记录并补充通知。 所以,闭环不仅有主 Agent → worker 的派活,也有 worker → 主 Agent 的反馈,以及验收后的再次调度。按这个工作流,它属于主从式多 Agent 编排,不只是多个终端并行运行。 交付层:统一产物形式 报告和其他适合展示的产物默认做成 HTML,通过可点击的 HTTPS 链接交付,并保留本地副本。 这解决的是“任务做了,但用户还得自己翻目录找结果”的最后一步。 读的时候要注意什么 第一,这是一份工作流协议,不是独立安装后就拥有全部能力的编排服务。完整运行依赖 Herdr,以及文档提到的接力脚本、通知扩展、watchdog 和发布工具。不能把“复制这个 skill”理解成“配套设施也自动齐了”。 第二,文档保留了演进痕迹。前面有手写轮询检测标记的方案,后面又明确优先使用 Herdr 内置等待。理解时应结合后面的修正和开头的官方文档兜底规则,而不是机械照抄每段示例。 第三,它偏向无人值守,权限配置比较宽松。这是便利性和安全性的取舍,不是通用最佳配置;Git worktree 能隔离代码改动,但不是安全沙箱。 第四,完成标记只是进入验收的信号,不是正确性证明。等待返回也需要区分完成、等待审批等状态,不能一律当成功。 我的评价 它最有价值的不是“能开多少 Agent”,而是把异步任务最容易掉链子的几个地方补上了:任务有登记、状态有证据、阶段能接力、完成能回注、质量要验收、失败有返工上限。 可以概括成一句话:把“派出去就不管了”,改造成“有反馈、有验收、有交付的后台委派”。