讨论

Herdr 多智能体:并行编码智能体工作流

来自 Wikiprompt,自由的提示词百科全书

ra
贡献者ra来源

2026年9月12日

Herdr 多智能体:并行编码智能体工作流 使用Herdr并行编排多个编码代理的综合技能/剧本,涵盖分解、工作树、简报、监控和合并。包括针对各种代理CLI的具体命令和标志。

提示词内容收藏

🌐
--- name: herdr-multiagent description: 在Herdr下并行运行多个编码代理:阶段分解、一个git worktree、隔离环境、每个代理的面板和文件简报、状态监控、审查、合并。子代理类型从`herdr pane current`(.result.pane.agent)读取,并与编排器(omp、opencode、claude、codex、kimi等)匹配。需要HERDR_ENV=1。 --- # 通过Herdr进行多代理工作 剧本:将项目任务分解为独立阶段,将每个阶段分配给一个单独的代理,该代理位于自己的git worktree和herdr面板中,提供文件简报,监控并接受结果。 技能与代理无关:子代理类型 = 编排器类型。从opencode启动技能 - 子代理将是opencode;从omp启动 - 将是omp;从claude启动 - 将是claude。切勿凭记忆替换编排器类型,也不要选择“流行”类型。 ## 0. 前置条件 ```bash test "${HERDR_ENV:-}" = 1 # 如果没有这个 - 停止,我们不在Herdr内部 ``` 如果检查失败 - 告诉用户会话不在Herdr下,并停止。不要从外部管理他人的Herdr。 面板/代理的基本命令 - 在标准Herdr技能中(`herdr --skill`)。已安装的二进制文件是语法权威;如有疑问,请阅读`herdr agent`、`herdr pane`、`herdr integration`,不要猜测。 ## 1. 确定自己的类型 - 在任何操作之前 ```bash herdr pane current --current ``` 字段`.result.pane.agent`就是编排器类型,也是子代理`--kind`的值: ```bash KIND=$(herdr pane current --current | jq -r '.result.pane.agent') # 没有jq: KIND=$(herdr pane current --current | sed -E 's/.*"agent":"([^"]+)".*/\1/' | head -1) echo "$KIND" ``` 为空或`unknown` - 询问用户以何种类型启动子代理。下文中的`$KIND`是获取到的值,不是字面量。 检查Herdr ↔ 该类型的集成(它提供`agent list/wait/prompt`): ```bash herdr integration status | grep -i "$KIND" ``` - `current` - 正常。 - `not installed` - `herdr integration install "$KIND"`。集成仅由**新**会话拾取,因此必须在启动子代理之前安装;编排器本身对`agent list`不可见 - 这是正常的,不需要监控它。 - 类型不在`herdr integration install`列表中(例如`amp`、`cline`、`kiro`、`maki`)- 将没有结构化监控,我们按§7回退方案工作(`pane read` + git)。这不是阻塞问题。 记录并向用户声明:“子代理类型 = $KIND”。 ## 2. 分解 - 关键步骤,不要着急 - 阅读项目计划/规格和当前状态(`git log`、测试、`git worktree list`)。 - 将剩余工作分解为具有**不重叠文件区域**的阶段。两个代理处理同一个包 - 只能是有意识地且具有明确顺序(先后,不并行)。 - 对公共文件(config、lock)的增量修改是允许的 - 在简报中写入“仅增量,不更改签名”;合并冲突由编排器解决。 - 记录“阶段 → 可以/不可以触碰的文件”矩阵。 启动前:所有已完成的工作都已提交到main,工作树干净。 ## 3. 每个代理的Worktree + 隔离环境 ```bash git worktree add ../<proj>-s<N> -b stage-<N>-<name> ``` Python项目的陷阱:共享venv会导入**他人**的代码(主仓库的editable install)。每个worktree都有自己的venv: ```bash cd ../<proj>-s<N> && python -m venv .venv \ && ./.venv/Scripts/python.exe -m pip install -q -e "./api[dev]" ``` 多个venv通过一个后台命令顺序安装(pip缓存共享)。JS栈:每个worktree有自己的`node_modules`(`npm ci`)。 如果编排器有命令包装钩子(rtk等):相对解释器路径(`../.venv/Scripts/python.exe`)在简报中通过此类钩子无法解析(“command not found”)。在简报和提示中 - 仅使用所需worktree的python/npm的**绝对**路径。 ## 4. 简报 - 用文件,不用命令行 `<repo>/.briefs/stage-<N>.md`(untracked)。简报结构: - **上下文**:先读什么(规格、契约、关键文件),已完成什么; - **任务**:具体需求,引用规格条款; - **边界**:可以/不可以触碰的文件,“不要离开worktree”,“不要push”; - **验收**:精确的测试/代码检查命令(使用worktree解释器的绝对路径),“旧测试保持绿色”,提交到自己的分支,最终报告。 简报不应假设特定的代理类型:不要写“运行omp/skill/...”,而是写目标、边界和验收命令。子代理将自行决定使用哪些工具。 给代理的提示要简短:“阅读文件<简报>并完整执行”。 ## 5. 面板:创建,立即命名 推荐布局 - main-left:编排器面板在左侧全高,所有子代理在右侧一列上下排列。如果用户安装了针对main-left的布局插件,任何其他方案都会破坏其视图。如果用户明确要求其他布局 - 按其要求执行。 第一个子代理 - `split --current --direction right`,其余 - `split --pane <前一个子代理> --direction down`在右列**内部**。不要拆分编排器面板,也不要向右拆分代理面板 - 只在右列中使用down链。 ```bash herdr pane split --current --direction right --cwd "<worktree1>" --no-focus herdr pane split --pane <agent1-pane> --direction down --cwd "<worktree2>" --no-focus ``` 新面板ID - 来自JSON `.result.pane.pane_id`。不要触碰用户焦点(`--no-focus`)。子代理名称在第6步通过`agent start`给出,另外为了清晰起见,使用`herdr pane rename <pane_id> "s<N>-<name>"`。 ## 6. 启动自己类型的子代理 标准路径 - `agent start`,它还会验证面板中确实启动了预期的代理: ```bash herdr agent start s1-<name> --kind "$KIND" --pane <pane_id> -- <自主性标志> ``` 名称必须匹配`[a-z][a-z0-9_-]{0,31}`并且在活动代理中唯一。 ### 自主性标志 子代理在无人情况下工作,否则会卡在审批上。标志取决于CLI,而不是Herdr。已确认的: | 类型 | 启动 | |---|---| | `omp` | `-- --yolo` | | `claude` | `-- --dangerously-skip-permissions`(或`--permission-mode bypassPermissions`) | | `opencode` | `-- --auto` | 对于任何其他类型(codex、gemini、kimi、cursor、copilot、droid、kilo、grok、hermes、qodercli、mastracode、pi等)- 不要编造标志。确定canonical可执行文件并阅读其帮助: ```bash herdr agent start --help # 在--kind描述中指定了canonical executable <executable> --help | grep -iE "permission|approve|yolo|auto|dangerous|allow" ``` 未找到标志 → 检查CLI配置中是否有自主模式(例如`~/.omp/agent/config.yml: tools.approvalMode: yolo`、`~/.claude/settings.json: permissions`、`opencode.json: permission`),并警告用户子代理可能会卡在审批上 - 它们会显示为`blocked`状态(§7)。 ### 如果`agent start`因超时失败 Windows PowerShell面板中的已知错误:`agent start`发送损坏的`Start-Process` → 超时。解决方法 - 直接在面板中启动CLI: ```bash herdr pane run <pane_id> "<executable> <自主性标志>" sleep 3 && herdr pane read <pane_id> --lines 15 # 预期CLI提示 herdr agent rename <pane_id> s1-<name> # 如果herdr识别了代理 ``` 如果之后`herdr agent explain <pane_id>`没有给出已识别的代理 - 该面板的结构化监控不可用,我们按§7回退方案工作。 ### 发放简报 不要通过`pane run`:当TUI渲染粘贴时,Enter会被吞掉。分两步并暂停: ```bash herdr pane send-text <pane_id> "阅读文件<简报的绝对路径> - 这是你的简报。完整执行到底(代码、测试、代码检查、提交到自己的分支),然后给出最终报告。" sleep 5 && herdr pane send-keys <pane_id> Enter ``` 标准替代方案,当集成已安装且`agent start`成功时: ```bash herdr agent prompt s1-<name> "阅读文件<简报>并完整执行" --wait --timeout 300000 ``` 通过`pane read`检查简报已**发送**:输入为空,代理正在工作。 ## 7. 监控 - 通过集成,不是cron ```bash herdr agent list # 所有子代理的状态 herdr agent wait s1-<name> --until idle --timeout 1800000 herdr agent prompt s1-<name> "<文本>" # 向工作中的代理补充指令 herdr agent read s1-<name> --lines 40 ``` 状态语义:`idle` - 准备好接收输入且其标签页已在UI中可见;`done` - 在不可见的后台工作后相同的idle(通过CLI读取不会将标签页标记为已见);`blocked` - herdr识别到审批/问题UI,子代理在**等待**人类;`unknown` - 代理存在但没有分类,这不是完成标志。 编排器循环:`agent wait`逐个或按事件 → 验收(§8)。`blocked` → `agent read`,理解问题,通过`agent prompt`回答或询问用户。可疑的静默 → `pane read <pane_id>`。 `wait`超时保持适中(约30分钟),触发后重新设置:非常大的值会进入“timed out”。 当`$KIND`的集成不可用或`agent explain`未识别子代理时的回退方案:定期`herdr pane read <pane_id> --lines 60` + worktree中的`git log/status`。Cron - 仅作为最后手段,完成后必须删除。 子代理会话中断:worktree中的工作会保留。重新启动 - 使用相同的CLI及其继续标志(在`--help`中检查):`omp --resume`、`claude --continue`、`opencode --continue`。然后提示:“会话已中断。检查git status,完成简报<文件>”。 ## 8. 验收和合并 - 每个分支:在其worktree中运行测试 + 代码检查,审查`git diff main...<branch> --stat`。 - 不要轻信子代理的最终报告 - 自己验证验收命令。 - 合并到main - 仅在用户确认后;手动解决增量冲突。 - 合并后:`git worktree remove`;分支 - 与用户协商。 - 释放子代理面板,不触碰编排器面板。

登录以查看完整提示词

继续使用:

登录即表示你同意我们的 使用条款 和 隐私政策

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| prompts.chat| herdr| multiagent

讨论