SuperAPI AI 工具集

tmux

部署与运维

查看项目

更新于 10-16 05:37

技能介绍

tmux 会话控制技能用于通过发送按键和读取输出来控制 tmux 会话,是管理 Claude Code 等交互式 CLI 会话的常用手段。

适用场景

  • 在 tmux 中监控 Claude/Codex 会话
  • 向交互式终端应用发送输入
  • 抓取 tmux 中长期运行进程的输出
  • 以编程方式在 tmux 窗格/窗口间导航
  • 检查已有会话中的后台工作

不适用场景

  • 运行一次性 shell 命令:应直接使用 exec 工具
  • 启动新的后台进程:应使用 exec 并设置 background:true
  • 非交互式脚本:应使用 exec 工具
  • 进程不在 tmux 中
  • 需要创建新的 tmux 会话:应使用 exec 配合 tmux new-session

示例会话

  • shared:主交互会话
  • worker-2 至 worker-8:并行工作会话

常用命令 列出会话: tmux list-sessions tmux ls

捕获输出:

窗格最后 20 行

tmux capture-pane -t shared -p | tail -20

完整回滚历史

tmux capture-pane -t shared -p -S -

窗口中指定窗格

tmux capture-pane -t shared:0.0 -p

发送按键:

发送文本(不按回车)

tmux send-keys -t shared "hello"

发送文本并回车

tmux send-keys -t shared "y" Enter

发送特殊按键

tmux send-keys -t shared Enter tmux send-keys -t shared Escape tmux send-keys -t shared C-c # Ctrl+C tmux send-keys -t shared C-d # Ctrl+D (EOF) tmux send-keys -t shared C-z # Ctrl+Z (suspend)

窗口/窗格导航:

选择窗口

tmux select-window -t shared:0

选择窗格

tmux select-pane -t shared:0.1

列出窗口

tmux list-windows -t shared

会话管理:

创建新会话

tmux new-session -d -s newsession

终止会话

tmux kill-session -t sessionname

重命名会话

tmux rename-session -t old new

安全发送输入 对于交互式 TUI(Claude Code、Codex 等),应将文本与回车拆分为两次发送,以避免粘贴/多行边界情况: tmux send-keys -t shared -l -- "Please apply the patch in src/foo.ts" sleep 0.1 tmux send-keys -t shared Enter

Claude Code 会话模式 检查会话是否需要输入:

查找提示符

tmux capture-pane -t worker-3 -p | tail -10 | grep -E "❯|Yes.*No|proceed|permission"

批准 Claude Code 提示:

发送 'y' 并回车

tmux send-keys -t worker-3 'y' Enter

或选择编号选项

tmux send-keys -t worker-3 '2' Enter

检查所有会话状态: for s in shared worker-2 worker-3 worker-4 worker-5 worker-6 worker-7 worker-8; do echo "=== $s ===" tmux capture-pane -t $s -p 2>/dev/null | tail -5 done

向会话发送任务: tmux send-keys -t worker-4 "Fix the bug in auth.js" Enter

注意事项

  • 使用 capture-pane -p 输出到 stdout(脚本化时必需)
  • -S - 捕获完整回滚历史
  • 目标格式:session:window.pane(例如 shared:0.0)
  • 会话在 SSH 断开后仍会保持