Herdr agent attach 如何把当前终端直接接入单个代理并解决输入所有权冲突?
2026/9/12 18:02:39 网站建设 项目流程

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 已启动(例如运行过herdrherdr server)。
  • 直接 attach 只在 Linux 和 macOS 客户端可用。
  • 命令目标(target)只能是唯一的实时 agent 名称,或当前承载该 agent 的 pane ID。终端 ID 和单独的智能体 kind 标签不能作为目标。

找到可 attach 的 agent 目标

attach 需要一个能唯一定位 agent 的目标。两种来源:

  1. 通过herdr agent start启动的 agent 带有名称,名称在实时 agent 中唯一,直接用名称即可。
  2. 手动启动的 agent 保持未命名状态,需要用它的 pane ID 寻址。

如果 pane ID 不方便记,可以先查再用agent rename起一个稳定名称:

herdr agent list herdr agent get w1:p2 herdr agent rename w1:p2 reviewer

w1: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 attachterminal attachterminal session control的完整参数。
  • Agent automation:agent 目标解析规则及agent start等配套操作。

【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询