Herdr agent attach 如何把当前终端直接接入单个代理并解决输入所有权冲突?
【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr
当你只想操作某一个正在运行的 coding agent,而不想打开整个 Herdr 工作区界面时,herdr agent attach可以把你的当前终端直接接到那个 agent 的终端上:屏幕直接渲染该 agent 的交互界面,键盘输入直达该终端。这篇文章说明如何找到目标、执行 attach,以及当另一个直接 attach 客户端已经持有输入时如何用--takeover解决所有权冲突。适用环境:本地 Herdr 会话已在运行,直接终端 attach 目前支持 Linux 和 macOS,原生 Windows 不支持(见 persistence-remote)。
前提条件
- Herdr 后台服务正在运行。CLI 通过本地 socket API 与正在运行的 server 通信,所以先在需要操作的会话中确保 server 已启动(例如运行过
herdr或herdr server)。 - 直接 attach 只在 Linux 和 macOS 客户端可用。
- 命令目标(target)只能是唯一的实时 agent 名称,或当前承载该 agent 的 pane ID。终端 ID 和单独的智能体 kind 标签不能作为目标。
找到可 attach 的 agent 目标
attach 需要一个能唯一定位 agent 的目标。两种来源:
- 通过
herdr agent start启动的 agent 带有名称,名称在实时 agent 中唯一,直接用名称即可。 - 手动启动的 agent 保持未命名状态,需要用它的 pane ID 寻址。
如果 pane ID 不方便记,可以先查再用agent rename起一个稳定名称:
herdr agent list herdr agent get w1:p2 herdr agent rename w1:p2 reviewerw1:p2是文档示例中的 pane ID 写法,替换为你agent list返回的实际值。重命名后,reviewer就可以作为 target 使用;名称跟随当前 pane 的 occupant,agent 退出、释放或被替换时会被清除。
执行直接 attach
herdr agent attach reviewer执行后当前终端会先接收该终端当前渲染状态的完整回放,然后持续接收 live ANSI 帧;你的键盘输入直达那个终端,也就是 agent 的交互界面本身。在 attach 界面内:
- 用鼠标滚轮或普通的 page up / page down 滚动;
- 任何正常输入都会让视图跳回底部;
- 用
ctrl+b q分离(detach); - 需要向 agent 发送字面的
ctrl+b时,按ctrl+b ctrl+b。
detach 只是断开你的这个客户端,server 上的 pane 和 agent 继续运行,之后重新运行herdr agent attach reviewer即可再接入同一个目标。
解决输入所有权冲突
关键限制:一个终端同时只有一个可写的直接 attach 客户端拥有输入和 resize 权限。如果另一个直接 attach 客户端(比如你在另一台机器或另一个窗口)已经接入了同一个 agent,新的 attach 客户端拿不到输入所有权。
此时用--takeover替换现有所有者:
herdr agent attach reviewer --takeover执行后输入和 resize 的所有权转移到当前客户端,原所有者被替换。使用前提只有一个:确认被替换的那个 attach 客户端不再需要操作该 agent,因为 takeover 会直接影响正在使用的另一方。
两个相关替代路径,按需选用:
- 目标不是 agent 而是普通终端时,用
herdr terminal attach <terminal_id>,拥有相同的直接 attach 行为; - 需要程序化桥接而不是交互式终端时,
herdr terminal session control <target> --takeover --cols 120 --rows 40打开可写的 live 终端流,同样遵循「一个 controller 拥有一次」的所有权规则,用--takeover替换现有 controller。
判断是否成功
- attach 成功:当前终端先显示该 agent 终端的当前画面,之后输入能直接落到 agent 的交互界面上(例如能看到 agent UI 对按键的响应)。
- 分离后:
ctrl+b q返回你原来的 shell,agent 进程不受影响,继续在原 pane 中运行。 - takeover 场景:执行
--takeover后输入落在当前终端,而之前的那个 attach 客户端不再收到输入所有权。
如果命令报 JSON 错误(超时或 server 错误会以 JSON 输出到 stderr 并以状态码 1 退出),先回到上面的目标规则核对 target:名称必须是唯一的实时 agent 名,或换成该 agent 所在的 pane ID 重试。
参考
- Agents 文档中的 Direct integrations 与 Attach 章节:attach 与 detach、
--takeover的原始说明。 - Persistence and remote access:直接终端 attach 的平台支持、流行为与所有权规则。
- CLI reference:
agent attach、terminal attach与terminal session control的完整参数。 - Agent automation:agent 目标解析规则及
agent start等配套操作。
【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考