公司动态

Herdr pane run 与 wait-output 完整指南:脚本等待终端输出的正确姿势

📅 2026/8/31 9:03:00
Herdr pane run 与 wait-output 完整指南:脚本等待终端输出的正确姿势
Herdr pane run 与 wait-output 完整指南脚本等待终端输出的正确姿势【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdrHerdr 是编码智能体运行的终端运行时它的pane run与pane wait-output命令对正是让脚本可靠地向终端发命令、等终端出结果的标准姿势。告别sleep盲等和脆弱的grep轮询两行命令就能完成发送 等待匹配输出的完整闭环。为什么需要 pane run wait-output脚本操作终端窗口时最常见的坑是命令发出去了但不知道它什么时候跑完。传统做法要么sleep 30盲等慢且不可靠要么反复读屏轮询代码啰嗦还容易漏输出。Herdr 把这件事拆成了两个原子操作命令职责pane run原子发送命令文本并自动按 Enter 提交pane wait-output阻塞等待终端输出中出现指定文本或正则命中即返回pane run的实现在 src/cli/pane.rs 中它把命令文本和Enter键合并为一次输入事件发送给目标窗格不会出现文本发了一半回车没跟上的竞态。第一步用 pane run 原子提交命令herdr pane run w1:p3 just test格式非常简单herdr pane run pane_id command。窗格 ID 形如w1:p3可用herdr pane list查询。命令文本会被完整拼接后一次性提交多词命令直接整体加引号即可。第二步用 wait-output 等待输出匹配herdr pane wait-output w1:p3 --match test result --timeout 120000wait-output的完整用法定义见 src/cli/pane.rsherdr pane wait-output pane_id (--match text | --regex pattern) \ [--source visible|recent|recent-unwrapped] [--lines N] [--timeout MS] [--raw]--match 与 --regex 怎么选--match text在单行内查找字面子串最简单直接适合等待done、BUILD SUCCESS这类固定文本。--regex pattern使用 Rust 正则语法同样逐行匹配适合通过或失败都算结束的场景例如--regex passed|failed。两者互斥必须提供其中之一。三个关键参数的含义--source默认recent即最近 80 个已渲染终端行的未折行输出也可选visible当前可见屏幕或recent-unwrapped。--lines N调整等待时检索的行数窗口默认 80 行。--timeout MS超时毫秒数。省略--timeout会无限等待自动化脚本强烈建议显式设置。服务端等待逻辑在 src/api/wait.rs它会立即检查一次当前快照所以输出已经存在时也能秒中随后按固定间隔轮询直到匹配或超时正则非法时返回invalid_regex错误而不是默默失败。用退出码写健壮的脚本判断wait-output的退出状态非常适合if判断退出码含义0匹配成功stdout 输出含.result.matched_line与快照的 JSON1超时或服务端错误stderr 输出 JSON 错误如timeout2命令行用法错误成功响应包含.result.pane_id、.result.matched_line和位于.result.read的匹配快照方便脚本二次解析。实战示例跑测试并等待结果完整的发送 等待 判断套路更多配方见 docs/next/website/src/content/docs/agent-automation.mdxherdr pane run w1:p3 just test --watch if herdr pane wait-output w1:p3 --regex passed|failed --timeout 120000; then echo 测试有结果了 else echo 测试超时 2 exit 1 fi如果窗口还没准备好也可以先拆分新窗格再操作pane split的返回值里直接包含新窗格 IDsplit$(herdr pane split --current --direction right --no-focus) pane_id$(printf %s\n $split | jq -r .result.pane.pane_id)常见误区pane wait-output vs agent wait⚠️ 这是新手最容易混淆的点普通命令、测试、服务器→ 用pane wait-output按文本/正则匹配不解释智能体生命周期。编码智能体Claude、Codex 等→ 用agent wait它按idle/done/blocked等生命周期状态等待而不是碰运气猜输出文本。官方文档 cli-reference.mdx 也明确建议普通流程用pane wait-output智能体流程用agent wait。完整的命令速查包括pane split、pane read、协作配方收录在 skills/herdr/SKILL.md 中。延伸阅读官方文档docs/next/website/src/content/docs/agent-automation.mdxCLI 参考docs/next/website/src/content/docs/cli-reference.mdx等待实现源码src/api/wait.rsAPI 模式定义docs/next/api/herdr-api.schema.json记住这个组合即可pane run发命令wait-output等结果用退出码做分支——这就是脚本驱动 Herdr 终端的完整姿势。【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考