tmux终端会话管理器Skill tmux

tmux终端会话管理器是一个用于远程控制和自动化管理tmux会话的工具技能。它允许用户通过编程方式发送按键指令、抓取终端窗格输出、监控会话状态、导航窗口和窗格,特别适用于管理Claude Code等交互式AI开发会话。主要功能包括会话监控、输入自动化、输出抓取和会话管理,是开发运维和AI工作流自动化的重要工具。关键词:tmux控制,终端自动化,会话管理,远程控制,Claude Code,交互式CLI,开发运维,AI工作流。

DevOps 0 次安装 0 次浏览 更新于 2/24/2026

name: tmux description: 通过发送按键和抓取窗格输出来远程控制tmux会话,用于交互式CLI。 metadata: { “openclaw”: { “emoji”: “🧵”, “os”: [“darwin”, “linux”], “requires”: { “bins”: [“tmux”] } } }

tmux 会话控制

通过发送按键和读取输出来控制tmux会话。对于管理Claude Code会话至关重要。

何时使用

在以下情况使用此技能:

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

何时不使用

在以下情况不要使用此技能:

  • 运行一次性shell命令 → 直接使用exec工具
  • 启动新的后台进程 → 使用带background:trueexec
  • 非交互式脚本 → 使用exec工具
  • 进程不在tmux中
  • 需要创建新的tmux会话 → 使用带tmux new-sessionexec

示例会话

会话 用途
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

发送按键

# 发送文本(不按Enter键)
tmux send-keys -t shared "hello"

# 发送文本 + Enter
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 (挂起)

窗口/窗格导航

# 选择窗口
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 -- "请应用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'和Enter
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 "修复auth.js中的bug" Enter

注意事项

  • 使用capture-pane -p打印到stdout(脚本编写必不可少)
  • -S -捕获整个滚动缓冲区历史记录
  • 目标格式:session:window.pane(例如,shared:0.0
  • 会话在SSH断开连接后仍然存在