正在打开每日关注
正在打开每日关注
Pi 新版支持 Ghostty 作者提出的 OSC 7501 协议,让终端直接识别 Agent 的 working/blocked 等状态。
Pi在刚刚推出的1.1.0版本中,正式接入了 OSC 7501 状态协议,现在支持该协议的终端或看板可以直接识别working、blocked、done、error 和 idle
Ghostty 作者 Mitchell Hashimoto 提出了终端转义协议 OSC 7501(Program Status Protocol),直接把多 Agent 编排工具 Herdr 拿出来当例子:为了判断 Claude Code 是在运行还是等待输入,光是匹配窗口标题里的 spinner 字符,三个月就改了 10 次正则 现在做多 Agent 面板全卡在两难里。靠正则猜窗口标题极其脆弱,Claude Code 把盲文字符换成半圆,检测规则就得跟着发补丁;走本地 socket 自报虽然准,但跨 SSH 连不上,进 Docker 容器也需要额外端口转发或挂载 和我之前给 Herdr 写 pane-state 插件时踩过完全一样的坑,进程里起 socket 只要换到远程机器链路就断,读标题猜状态又会被 CLI 的每一次小改版背刺 OSC 7501 走的是天然穿透 SSH 和容器的 pty。程序直接往终端吐一条类似 `ESC ] 7501 ; state=blocked:kind=permission:msg=... ESC \` 的标准转义序列,必填字段只有 state(idle、working、done、blocked、error 五种枚举),POSIX sh 里用两行 printf 加 base64 就能接入 协议还支持层级任务树,主进程在 working 的同时子任务可以分别报进度或卡在权限等待。Mitchell 已经在 libghostty 和 Rex 做了实现,并在 Terraform、Claude Code、Codex、Homebrew 里写了原型,每个接入都在十几行代码以内 要是能在主流终端和 Agent CLI 里普及,多 Agent 编排工具就不用再去维护各家 CLI 的 TOML 规则库了
是什么
OSC 7501(Program Status Protocol)是 Ghostty 作者 Mitchell Hashimoto 提出的终端转义协议:程序向 pty 写入形如 ESC ] 7501 ; state=blocked:kind=permission:msg=... ESC \ 的标准序列,支持协议的终端或看板即可直接读取状态。Pi 在 1.1.0 版本正式接入。
核心设计
关键洞察 多 Agent 编排工具长期困于两难:读窗口标题猜状态,正则极脆弱——Herdr 为判断 Claude Code 是否运行,三个月改了 10 次正则,盲文字符一换就失效;走本地 socket 自报又跨不了 SSH 和容器。OSC 7501 用终端层标准协议一次性化解,Mitchell 已在 libghostty、Rex 实现,并在 Terraform、Claude Code、Codex、Homebrew 写了原型,每个接入均在十几行代码内。
边界与风险 协议价值取决于生态普及:需主流终端与 Agent CLI 双侧采纳,否则看板仍要回退到正则猜测;短期各工具支持程度不一,过渡期维护成本仍存。