Skip to main content

grok-pi-herdr-orchestration

使用 Herdr 和 shell 脚本创建、驱动、监控和停止 grok-pi 子代理,适合只读代码探索、仓库研究、资料整理和需要可见终端进度的长任务;当用户提到 grok-pi、Herdr、Grok 子代理、研究代理、后台代理或要求定期检查子代理进度时使用。

معلومات المصدر

المستودع
Dwsy/agent
آخر نشاط في المصدر
١٣ أغسطس ٢٠٢٦ في ١٠:١٥
لغة SKILL.md المكتشفة
الصينية
النجوم
٢٣
التفرعات
٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
grok-pi-herdr-orchestration
description
使用 Herdr 和 shell 脚本创建、驱动、监控和停止 grok-pi 子代理,适合只读代码探索、仓库研究、资料整理和需要可见终端进度的长任务;当用户提到 grok-pi、Herdr、Grok 子代理、研究代理、后台代理或要求定期检查子代理进度时使用。
compatibility
需要 macOS/Linux、Python 3、Herdr 0.7+ 和 grok-pi 0.0.13+;脚本依赖 Herdr 的运行中 server。
# Herdr + grok-pi 子代理编排 本技能把 `grok-pi` 放进一个由 Herdr 管理的新 tab/pane,并用 shell 脚本提交提示词、读取终端状态、等待完成和清理。它是“可见 PTY 编排”,不是把 TUI 当作普通 stdout 管道。 ## 关键约束 1. **禁止失联等待。** 创建子代理或提交 prompt 后,必须立即进入 `wait`/`run` 轮询。轮询间隔默认 5 秒,最大允许 60 秒,绝不使用超过 75 秒的单次 `sleep`。 2. **优先使用 `run`。** `run` 在同一个命令内完成创建、提交、轮询和输出,避免主代理创建后忘记跟踪。 3. **默认只读。** 脚本默认只开放 `read,grep,find,ls`。只有用户明确要求修改代码时,才通过 `--tools` 显式开放写入相关工具,并仍需定期检查。 4. **每个任务独立 tab。** 不要复用用户已有的 pane;脚本会创建自己的 tab,并把 `tab_id`、`pane_id` 和运行状态保存到 `~/.local/state/grok-pi-herdr/`(可用 `GROK_PI_HERDR_STATE_DIR` 覆盖)。 5. **完成判断要有证据。** `idle` 只能表示当前 pane 没有工作指示器;最终报告还应读取最近输出,确认有回答或明确错误。`blocked`、`exited` 和超时都不能报告为成功。 6. **不要把 `grok-pi` 当作普通 headless CLI。** `grok-pi --print-capabilities` 表明它内部使用 Pi JSONL RPC,但 `grok-pi` 自己负责 TUI/PTY;在 Herdr 中通过 `pane send-text` + `pane send-keys` 驱动最稳定。不要直接把用户 prompt 管道到 `grok-pi` 的 stdin。 ## 先做环境检查 ```bash herdr --version grok-pi --version herdr status --json herdr api snapshot ``` 必须确认 Herdr server 正在运行。需要了解协议边界时运行: ```bash grok-pi --print-capabilities # 注意:正确命令是 grok-pi,不是 grok ``` 输出应包含 `Pi JSONL RPC over stdio`、`bridge: pi-grok-adapter -> ACP` 和 `prompt`/`get_state` 等 RPC 命令。这个结果只用于研究,不改变编排方式:当前技能通过 Herdr PTY 读取可见进度。 ## 脚本位置 ```text ~/.pi/agent/skills/grok-pi-herdr-orchestration/scripts/herdr-grok-pi.sh ``` 为了便于复制,下面记为 `$RUNNER`: ```bash RUNNER="$HOME/.pi/agent/skills/grok-pi-herdr-orchestration/scripts/herdr-grok-pi.sh" ``` ## 推荐:一次性研究任务 把完整任务放在 `--` 后,脚本会在新 tab 启动只读 grok-pi,并持续轮询到结束: ```bash "$RUNNER" run \ --cwd "$PWD" \ --label "仓库结构研究" \ --model grok-4.3 \ --thinking high \ --timeout 1800 \ --output /tmp/grok-pi-research.txt \ -- \ '只读研究当前仓库:梳理模块、入口、调用关系和风险。不要修改文件。完成后给出有文件路径依据的结构化报告。' ``` `run` 的输出路径是实际从 Herdr pane 读取的终端文本,不是模型 API 的假定响应。成功条件是命令退出码为 0 且输出中有最终回答;超时退出码为 124,`blocked`/`exited` 为非零。 ## 分阶段控制 ### 1. 创建 ```bash run_id=$("$RUNNER" start \ --cwd "$PWD" \ --label "探索代理" \ --model grok-4.3 \ --thinking high) printf 'run_id=%s\n' "$run_id" ``` `start` 只负责启动并等待 TUI ready;它返回后不代表任务完成。返回后必须马上提交 prompt 并开始 `wait`,不可在两个命令之间长时间休眠或结束本轮工作。 ### 2. 提交任务并等待 ```bash "$RUNNER" prompt "$run_id" \ '只读阅读 README、入口文件和相关配置,输出研究结论及证据路径。不要写文件。' "$RUNNER" wait "$run_id" --timeout 1800 ``` `wait` 每次检查: - Herdr pane 的前台进程(`grok-pi`/`pi-rpc`)是否仍存在; - 最近 pane 输出是否显示 `Thinking`、`Waiting for response`、`Responding` 等工作指示器; - 是否出现用户选择/批准等阻塞提示; - 没有工作指示器时是否已经回到输入提示。 ### 3. 随时查看进度 ```bash "$RUNNER" status "$run_id" "$RUNNER" read "$run_id" 120 ``` `status` 输出 JSON,其中 `state` 为 `working`、`idle`、`blocked` 或 `exited`。主代理在长任务期间应不晚于 60 秒执行一次 `status` 或 `wait` 轮询;如果需要向用户汇报,读取 `recent_output`,不要仅凭进程存在判断进展。 ### 4. 停止和清理 ```bash "$RUNNER" stop "$run_id" ``` 脚本先发送 `ctrl+q`,再关闭它自己创建的 tab,并将状态文件标记为 `stopped`。不要关闭或接管其他 tab。 ## 编排选择 | 任务 | 方式 | 默认权限 | |---|---|---| | 仓库侦察、架构研究、只读审查 | `run` | `read,grep,find,ls` | | 多轮研究,需要追加问题 | `start` + `prompt` + `wait` | `read,grep,find,ls` | | 用户明确要求子代理修改代码 | `start --tools ...`,再分阶段 `prompt`/`wait` | 仅显式指定 | | 需要取消的长任务 | 保存 `run_id`,`status` 后 `stop` | 不扩大权限 | 若明确要让子代理写代码,使用最小工具集,例如: ```bash run_id=$("$RUNNER" start \ --cwd "$PWD" \ --label "实现代理" \ --tools read,grep,find,ls,bash,edit,write) "$RUNNER" prompt "$run_id" '先检查现状并提出计划;得到用户确认后再修改。' "$RUNNER" wait "$run_id" --timeout 1800 ``` 不要默认开放 `bash/edit/write`,也不要把 `--always-approve` 当作研究任务的必要条件。 ## 故障处理 - **`herdr status` 显示 server 未运行**:先启动 Herdr,确认 `herdr status --json` 的 `server.running` 为 `true`,再重试。 - **`grok-pi` 启动后立即退出**:运行 `grok-pi --version`、检查认证和 `herdr pane read <pane>`;不要重复创建大量 tab。 - **状态是 `blocked`**:读取 pane 输出,向用户说明需要什么批准/输入;不要无限轮询掩盖阻塞。 - **状态是 `exited`**:保留 state 文件和 pane 最后输出,报告退出原因;不能把“进程结束”当成“研究成功”。 - **只看到 TUI 没有 `agent` 记录**:这是可能的。若启动时禁用了扩展,Herdr 不会收到 Pi lifecycle hook;本技能仍可通过 pane process/output 监控。不要因此改用用户已有 agent pane。 - **输出不完整**:使用 `read RUN_ID 500` 或指定 `run --output PATH`,并在最终报告中保留输出文件路径。 ## 最终报告格式 完成后向用户报告: 1. `run_id`、cwd 和使用的模型/思考级别; 2. 最后一次观测到的状态及轮询是否遵守 <=60 秒约束; 3. 研究结论和关键证据路径; 4. 输出文件路径(如有); 5. 如果是 `blocked`、`exited`、超时或输出不完整,明确标注,不要包装成成功。
عرض على GitHub