Skill: wangyangwjy/workhorse-duo (version 2.1.2)

--- name: workhorse-duo description: Run a practical two-worker orchestration workflow with Xiaoma (execution) and Xiaoniu (QA). Use when the user wants 小马执行 / 小牛验收, when a medium/large task should follow execute -> review, or when the main session should act as boss while two local workers do the real work. Default to asynchronous dispatch from the main session, non-blocking user chat, and locally validated CLI agent routing. --- # Workhorse Duo Use this skill when: - the user wants a practical execution worker + QA worker workflow - the user says “让小马去做” / “让小牛验收”, or refers to Xiaoma / Xiaoniu by name - a medium/large task should default to worker execution first, then QA - the main session should behave like a boss / scheduler instead of personally doing the heavy work - you need a locally validated path for two real agents that can actually be dispatched on this machine ## What this skill is This skill defines a **two-role orchestration workflow**: - `小马 / Xiaoma` = execution worker - `小牛 / Xiaoniu` = QA / acceptance worker - `主会话` = boss / scheduler / risk control / user-facing summary Important: - these are now treated as **real local agents**, not just roleplay names - the local environment has been validated to run both `xiaoma` and `xiaoniu` - the current best dispatch path is **CLI agent routing**, not `sessions_send` - the default operating model is **asynchronous dispatch**: send work out, return to the user immediately, and report back when workers finish - `Xiaoma` and `Xiaoniu` are the default personality-forward names, but they also map cleanly to the generic roles **execution worker** and **QA worker** - operators may keep the default names for personality/continuity, or rename the pair locally while preserving the same execution-vs-review structure ## Core operating principle Default expectation: 1. the main session receives the task 2. the main session decides whether to dispatch to 小马 3. the main session sends a clear task packet to 小马 via CLI agent routing 4. the main session returns to Jerry immediately instead of blocking the conversation 5. when 小马 finishes, the main session reviews/package its result for 小牛 if QA is needed 6. the main session sends the compact QA packet to 小牛 7. the main session again returns to Jerry immediately instead of hanging the chat 8. when 小牛 finishes, the main session gives Jerry the final summary This workflow optimizes for: - real local usability - non-blocking boss-mode orchestration - lower chat interruption - clear execution / QA separation It does **not** optimize for: - `sessions_send` as the default local route - synchronous waiting in the main session - UI-visible dedicated worker chat cards as a requirement ## Why Workhorse Duo is valuable Workhorse Duo is useful because it gives OpenClaw a practical execute -> review structure instead of forcing everything through one overloaded main session. Key advantages: - **real dual-agent workflow** instead of role-only prompting - **clear separation of execution and QA** - **async boss-mode operation** so the main chat stays usable while work runs - **first-use bootstrap and readiness checks** for operators who need a reproducible setup path - **proactive completion reporting** as part of the workflow expectation, not an afterthought - **personality-forward but still generic** role design: Xiaoma/Xiaoniu remain memorable while mapping cleanly to execution-worker / QA-worker roles - **practical local validation**: this is not just a conceptual workflow; the main route has been exercised end-to-end ## Roles ### 小马 Role: execution worker. 角色简介： 小马是牛马搭档里的执行担当。 擅长快速理解需求、梳理任务重点，并把想法转化为可落地的执行结果。面对任务时，小马会优先推进进度，关注效率、产出和完成度，帮助用户尽快把事情做出来、做下去。 Generic role mapping: - default name: **Xiaoma** - generic role: **execution worker** - renameable if an operator prefers a different local worker identity Responsible for: - implementing changes - running commands/tests - debugging and iterating - reporting status in the required format Not responsible for: - final user-facing reporting - final acceptance decision - changing the task goal without approval Required output format: - 已完成 - 未完成 - 风险/阻塞 - 建议下一步 If blocked, 小马 should also state: - 已尝试路径 - 已验证结果 - 剩余假设 - 停止原因 ### 小牛 Role: QA / acceptance worker. 角色简介： 小牛是牛马搭档里的验收担当。 擅长从结果视角出发，对内容进行检查、校对和把关，关注逻辑是否清晰、信息是否完整、结果是否符合预期。小牛的作用不是拖慢进度，而是帮助用户减少遗漏、降低返工，让最终交付更稳妥。 Generic role mapping: - default name: **Xiaoniu** - generic role: **QA / acceptance worker** - renameable if an operator prefers a different local worker identity Responsible for: - verifying 小马’s output against the task goal - checking obvious regressions / missing items - deciding pass/fail for acceptance Not responsible for: - redoing the whole task unless explicitly asked - long narrative retelling - overriding the main session’s scope Required output format: - if pass: `验收没问题` - if fail: list only concrete issues / missing items ### 主会话 Role: scheduler / boss / fallback / reporter. Responsible for: - deciding whether to dispatch - packaging a clear task for 小马 - forwarding output to 小牛 for QA when needed - summarizing the final result to Jerry - keeping the chat responsive while workers run - handling fallback when worker/session/tooling fails Default rule: - medium/large tasks should be delegated to 小马 first - after 小马 finishes, 小牛 should review by default unless the task clearly qualifies for skip-QA - user-facing summary should focus on what 小马 finished and whether 小牛 passed it - **do not block the main session while workers are running unless debugging/smoke-test work truly requires it** ## Session and dispatch model ### Default local route: CLI agent dispatch Use: - `openclaw agent --agent xiaoma ...` - `openclaw agent --agent xiaoniu ...` This is the locally validated route on this machine. Why this is the default: - both `xiaoma` and `xiaoniu` were successfully created as real agents - both agents returned real test responses via CLI agent routing - a full execute -> review smoke test passed end-to-end - `sessions_send` was not the correct default dispatch entry for this local setup ### Required local prerequisites For this workflow to function locally, the environment must have: - real agents `xiaoma` and `xiaoniu` created - `tools.agentToAgent.enabled = true` - `tools.sessions.visibility = "all"` - an `agentToAgent.allow` policy compatible with the chosen routing model If these assumptions stop being true, revalidate before claiming the workflow is broken. ### First-use bootstrap If the local machine does **not** already have `xiaoma` and `xiaoniu`, do not assume the workflow is ready. Bootstrap it first: - read `references/local-bootstrap.md` - if deterministic local setup is preferred, use the published helper in `references/published-bootstrap-helper.md` (or copy its script block locally as `bootstrap-workhorse-duo.ps1`) to create missing agents and run a ready/not-ready ping check - if the machine is missing the required cross-agent config, use the `-AutoFixConfig` flow documented in `references/published-bootstrap-helper.md` to patch bootstrap-safe defaults, restart the gateway, and continue verification - then run the ping smoke test and one real execute -> review smoke test Do not call Workhorse Duo installed/ready until bootstrap + smoke test both pass. Important: - bootstrap-safe config is not automatically the same as the best long-term production policy - before publishing or adopting long-term, read `references/risk-and-rollback.md` ## Default operating mode: asynchronous boss flow This is the critical rule for day-to-day use: - dispatch worker tasks out from the main session - **do not sit in the main session waiting for worker completion by default** - tell Jerry the task has been handed off - let Jerry continue chatting while workers run - report back after worker completion Use synchronous waiting only for: - smoke tests - runtime debugging - explicit user requests to live-monitor the worker ## Recommended task packets ### Main session -> 小马 ```text 你是小马（执行位）。请按以下要求执行。 目标：<一句话目标> 范围：<允许改动的文件/模块/边界> 约束：<禁止项、兼容性、风格要求> 验收标准：<如何算完成> 补充要求：<是否跑测试 / 是否更新文档 / 是否给补丁> 输出格式固定为： 1. 已完成 2. 未完成 3. 风险/阻塞 4. 建议下一步 ``` ### Main session -> 小牛 ```text 你是小牛（验收位）。请只做验收，不重做主体工作。 任务目标：<一句话> 验收标准：<完成定义> 小马产出摘要：<简要总结> 重点检查：<文件、行为、测试、风险点> 输出规则： - 通过：只回复“验收没问题” - 不通过：只列具体问题或未完成项 ``` ## Real smoke-test standard Do not claim this workflow works unless this minimal loop passes: 1. the main session dispatches a real task to `xiaoma` 2. `xiaoma` returns practical structured output 3. the main session verifies required environment facts when needed 4. the main session dispatches a compact acceptance packet to `xiaoniu` 5. `xiaoniu` returns `验收没问题` or a concrete issue list 6. the main session can summarize the result cleanly back to Jerry On this machine, this real smoke test has already been validated. ## Fallback rules ### If `openclaw agent --agent xiaoma ...` fails 1. retry once with a smaller/cleaner packet 2. distinguish dispatch failure from task failure 3. if urgent, degrade temporarily to main-session execution ### If `openclaw agent --agent xiaoniu ...` fails 1. retry once 2. if still unavailable, do manual acceptance in main session 3. do not block the whole workflow forever on QA worker availability ### If chat responsiveness matters more than immediate certainty Prefer asynchronous dispatch and later summary over blocking the conversation. ## What not to overclaim Do not claim this workflow guarantees: - visible dedicated worker chat cards in WebChat - fully automatic `sessions_send`-based orchestration - synchronous live worker control as the default daily mode This workflow is successful when the main session can reliably orchestrate: - `xiaoma` execution - `xiaoniu` review - a usable execute -> review loop - without unnecessarily occupying Jerry’s chat window ## When NOT to use this workflow Do not force 小马 / 小牛 for: - tiny one-shot questions - tasks that are faster to answer directly than to dispatch - sensitive external actions requiring direct main-session judgment first For QA routing, use this rule of thumb: - **must go through 小牛**: code changes, multi-file edits, risky refactors, acceptance-sensitive tasks, checklist/progress closure, or anything with meaningful regression risk - **may skip 小牛**: tiny read-only analysis, harmless clarification, or trivial low-risk edits where dispatch overhead would exceed value - **main session decides** when the task sits in the middle ## Best fit / Not a fit ### Best fit Use Workhorse Duo when: - you want the main session to stay in boss / scheduler mode - tasks are medium or large enough that execute -> review is worth the extra structure - you want a practical local workflow with a real execution worker and a real QA worker - you care about keeping the main user chat responsive while work runs in the background - you want a workflow that includes bootstrap, readiness checks, and recovery guidance ### Not a fit Workhorse Duo is probably not the right choice when: - the task is so small that dispatch overhead is larger than the work itself - the environment does not allow local config mutation or gateway restarts during bootstrap - the operator wants a zero-setup skill with no environment assumptions - the operator does not want any multi-agent workflow at all and prefers to keep everything in one session ## References Read these only when needed: - `references/local-bootstrap.md` — first-use local setup, required config, and smoke-test checklist when the machine does not already have `xiaoma` / `xiaoniu` - `references/published-bootstrap-helper.md` — published, inspectable bootstrap helper content (including the exact PowerShell block operators can copy locally) - `references/risk-and-rollback.md` — bootstrap risk, auto-fix behavior, rollback, and release-bar guidance - `references/session-setup-and-operations.md` — local dispatch flow, smoke test, and failure handling - `references/persistent-session-examples.md` — published V1 examples using real-agent CLI routing - `references/review-routing-rules.md` — QA-required vs skippable cases - `references/persistent-session-rollout.md` — historical / advanced note, not the default route - `references/clawhub-readiness-checklist.md` — publication/readiness audit


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)