tmux 自动化操控:读取/广播/救援 session|window|pane,基于 oh-my-tmux 配置安全地让 AI 自控/互控终端。触发:需要 capture-pane/send-keys、批量巡检、蜂群 AI 协作、卡死救援或快速查看快捷键。
让 AI 像熟练运维一样操作 tmux:读取终端输出、发送按键、批量巡检、协作/救援其他终端,默认兼容 libs/external/.tmux(gpakosz/oh-my-tmux)。
触发条件(满足其一即可):
y、Enter、Ctrl+C、广播同一窗口)。libs/external/.tmux 配置并避免修改主配置。~/.tmux.conf / .tmux.conf(遵循 oh-my-tmux:修改请放到 .tmux.conf.local)。kill-server、rm -rf 等必须先 capture-pane 确认目标上下文。查看快捷键帮助(oh-my-tmux 双前缀:主 C-a,备用 C-b,前缀后按 ?)
[按] <prefix> ?
枚举拓扑(session/window/pane)
tmux list-sessions
tmux list-windows -a -F '#S:#I:#W#F'
tmux list-panes -a -F '#S:#I.#P #{pane_current_command} #{pane_title}'
读取指定 pane 最近 120 行
tmux capture-pane -t <session>:<window>.<pane> -p -S -120
向指定 pane 发送确认键
tmux send-keys -t <session>:<window>.<pane> "y" Enter
安全中断挂住任务
tmux send-keys -t <session>:<window>.<pane> C-c
开启/关闭窗口内广播(同步全部 pane)
tmux set-window-option synchronize-panes on
tmux set-window-option synchronize-panes off
一次扫描全部窗口并截取最近输出(蜂群巡检骨架)
for w in $(tmux list-windows -a -F '#S:#I'); do
tmux capture-pane -t "$w" -p -S -80 | sed "s/^/[$w] /";
done
远程救援:发现等待输入即发送 y
target="0:3.0" # 示例
tmux capture-pane -t "$target" -p -S -50 | grep -qi "(y/n)" && \
tmux send-keys -t "$target" "y" Enter
新建 AI 蜂群工作台(1 指挥 + 3 工人)
tmux new-session -d -s ai-hub -n commander 'bash'
tmux new-window -t ai-hub -n worker1 'kiro-cli chat'
tmux new-window -t ai-hub -n worker2 'kiro-cli chat'
tmux new-window -t ai-hub -n worker3 'kiro-cli chat'
tmux attach -t ai-hub
启用 oh-my-tmux 配置(仓库内版本)
ln -sfn /home/lenovo/zip/vibe-coding-cn/libs/external/.tmux/.tmux.conf ~/.tmux.conf
cp -n /home/lenovo/zip/vibe-coding-cn/libs/external/.tmux/.tmux.conf.local ~/.tmux.conf.local
记录 pane 输出到文件
tmux pipe-pane -t <session>:<window>.<pane> -o 'cat >> /tmp/tmux-<session>-<window>-<pane>.log'
capture-pane 复核目标上下文;按键操作必须带 <session>:<window>.<pane> 绝对定位。~/.tmux.conf.local。list-windows/list-panes 建立白名单,避免误控用户窗口。(y/n)、password),只对匹配目标发送。Escape;先 C-c 中断、C-u 清行,再用 send-keys -l 逐字发送完整命令。/exit 回到 shell 再执行命令。pipe-pane 记录审计;广播完成后立即 synchronize-panes off。Ctrl+C/Ctrl+D。Proceed? (y/n),位置在 0:3.0。tmux capture-pane -t 0:3.0 -p -S -50 | grep -qi "(y/n)" 确认等待输入。tmux send-keys -t 0:3.0 "y" Enter 发送确认。ai-hub 的多个窗口。"(y/n)" 的 pane 触发「远程救援」片段自动发 y。Traceback 或 ERROR 的 pane,先 capture-pane 记录再人工介入。C-a,状态栏正常;4 个窗口可互相捕获/发送按键。C-b 无反应?
C-a,C-b 仅作备用;确保无其他程序占用 C-a。set-window-option synchronize-panes on,使用完立即关闭。tmux display-message -pt <target> '#{pane_current_path}',必要时先 send-keys 'cd /path' Enter。no such session/window/pane → 检查目标名称,先 list-sessions/list-windows 校验再重试。~/.tmux.conf.local 是否改写前缀;可在其中设置 set -g prefix C-b #!important。tmux -f /dev/null -L test 排查;多半是终端宽字符/字体导致。tmux display-message -pt <target> '#{pane_in_mode}' 判断,再用 tmux send-keys -t <target> -X cancel 退出;避免用 Escape(会触发 Meta 前缀,可能吞掉首字符)。references/index.md: 导航与文件速览references/getting_started.md: 术语、oh-my-tmux 最小接入步骤references/api.md: tmux/oh-my-tmux 常用命令、选项与 gpakosz 特色键位references/examples.md: 蜂群协议脚本与长示例references/troubleshooting.md: 典型故障到修复路径libs/external/.tmux/README.md、蜂群实战提示词、Skill Seeker 生成的抓取材料(如需扩展自动化)。发布前自检(配合 skills-skills 校验脚本):
description 已含“capture-pane/send-keys/蜂群”等触发关键词。references/ 并可导航;无文档堆砌。skills/00-元技能/skills-skills/scripts/validate-skill.sh skills/04-开发工具/tmux-autopilot 通过。