SuperAPI AI 工具集

tmux

部署与运维

查看项目

更新于 10-22 20:09

技能介绍

tmux 工作器(worker)用于从 iii 中查看和管理主机上的 tmux 会话与窗口。它驱动主机上的 tmux 二进制,读取与用户终端相同的 tmux 服务器,因此看到的是用户实际使用的会话。

用途

当用户询问哪些 Claude Code 或 Codex 会话正在运行、哪个正忙、哪个在等待回答或审批;询问 iii compose 是否启动、引擎监听哪个端口、http、ade 等 worker 使用哪些端口;询问某个端口上有什么在监听、哪个 tmux 窗口启动了服务器;或希望新建 tmux 会话或窗口(可选在指定目录运行命令)、重命名或关闭会话窗口时,可使用本工作器。

主要能力

工作器报告每个会话、窗口和窗格的前台命令、工作目录和标题,并额外提供 tmux 本身不知道的信息:在窗格进程树中匹配到的代理 CLI,结合窗格最后几行判断其工作、等待或空闲状态;窗格中运行的 iii compose 守护进程及其引擎 WebSocket 端口和各 worker 端口;当前用户进程监听的所有 TCP 端口,并追溯到启动它的窗格。

函数列表:

tmux::status 返回是否安装 tmux、版本与路径、服务器是否运行。 tmux::sessions::list 返回会话→窗口→窗格的命令、cwd、标题、尺寸、代理状态、会话标题、compose 守护进程与端口。 tmux::sessions::create 启动分离会话,可选名称、目录、首个窗口名和命令。 tmux::sessions::rename 与 tmux::sessions::kill 按 id(如 $5)或精确名称重命名或关闭会话。 tmux::windows::create 向会话添加窗口,可选名称、目录、命令和 select。 tmux::windows::select 将会话中的窗口设为当前(所有已附加客户端跟随)。 tmux::windows::rename 与 tmux::windows::kill 按 id(如 @3)或索引重命名或关闭窗口。 tmux::panes::select 将窗格(如 %5)设为活动;zoom: true 缩放该窗口,zoom: false 取消缩放(该窗口所有客户端跟随)。 tmux::panes::capture 返回窗格可见屏幕(含颜色转义)、尺寸、光标与备用屏标志。 tmux::ports::list 返回监听的 TCP 端口及其进程、iii 角色、worker、compose 命名空间和窗格,以及每个 iii compose 栈。

使用方式

修改操作遵循 tmux 自身语义:选择窗口会切换附加到该会话的所有客户端(包括用户终端);创建窗口默认设为当前,除非传入 select: false;关闭会话或窗口会终止其中的程序。panes::select 需审批,因为缩放会显示在所有查看该窗口的客户端上。panes::capture 返回屏幕内容,可能包含用户输入或程序输出,需审批,且除问题所需外不应重复其文本。工作器不会向窗格输入内容;tmux::terminal::* 是 Console 页面自带的终端,对代理拒绝访问。

响应式触发器

可绑定 tmux::changed 而非轮询 sessions::list:当代理完成一轮(working→idle)、开始等待用户、compose 栈启动、会话出现或消失时触发。绑定后先触发一次完整概览(会话与端口,形状与两个 list 函数相同),之后仅在有变化时触发;只有存在绑定时工作器才轮询 tmux。注册处理函数后以空配置绑定,示例代码:

iii.registerFunction('my-worker::on-tmux', async ({ sessions, ports }) => { // compare agent states with the previous overview }) iii.registerTrigger({ type: 'tmux::changed', function_id: 'my-worker::on-tmux', config: {} })

适用场景与限制

适用于查看代理 CLI 运行状态、排查端口监听与来源窗口、管理 tmux 会话窗口及响应 tmux 变化。限制包括:读取函数默认允许,创建、重命名、选择、关闭需审批,关闭会终止其中程序,请求前应说明将停止什么;panes::capture 含敏感屏幕内容需审批;代理状态是对屏幕的读取,waiting 表示出现需要用户的提示,并非代理进程阻塞,匹配模式位于工作器配置中可按代理调整;端口仅限当前用户进程的 TCP 监听,tmux 位置仅对在 tmux 内启动的进程存在;tmux 仅支持 Unix,主机无 tmux 时 status 返回 available: false,列表为空。