tmux 会话控制
通过发送按键和读取输出来控制 tmux 会话,是管理 Claude Code 会话的重要技能。
何时使用
✅ 在以下情况使用本技能:
监控 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 等),将文本和 Enter 拆分为两次发送,以避免粘贴/多行边界情况:
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 打印到标准输出(脚本编写必备)
-S - 抓取整个回滚历史
目标格式:session:window.pane(例如 shared:0.0)
会话在 SSH 断开后仍然保持
关于收费、价格、平台与效果等信息,资料暂未提供。