用途
tmux 技能用于远程控制 tmux 会话,通过发送按键和抓取窗格输出来操作交互式 CLI。它仅在需要交互式 TTY 时使用;对于长时间运行、非交互式的任务,应优先使用 exec 后台模式。
主要能力
- 创建后台 tmux 会话并指定工作目录。
- 向指定会话、窗口或窗格发送字面文本和控制键。
- 抓取窗格最近的历史输出,用于监视运行状态。
- 并行编排多个编码智能体(如 Codex、Claude Code)。
- 清理会话,包括终止单个会话或所有 OpenClaw 管理的会话。
使用方式
默认服务器
始终使用默认 tmux 服务器。不要使用 -S 自定义套接字。用户需要能够轻松地 tmux attach,而无需知道晦涩的套接字路径。
会话命名
约定:oc-${project}-${feature}(例如 oc-knowhere-date-range-picker、oc-deck-auth-flow)。
- oc- 前缀表示由 OpenClaw 管理,避免与用户会话冲突。
- 便于查找:tmux ls | grep oc-
快速启动
SESSION=oc-myproject-feature
tmux new-session -d -s "$SESSION" -c ~/projects/myproject
tmux send-keys -t "$SESSION" 'claude --dangerously-skip-permissions' Enter
tmux capture-pane -p -J -t "$SESSION" -S -200
启动会话后,告知用户:
要监视:tmux attach -t $SESSION
目标定位与命名
- 目标格式:session:window.pane(默认为 :0.0)。
- 保持名称简短;避免空格。
- 检查:tmux list-sessions、tmux list-panes -a。
安全发送输入
- 优先使用字面发送:tmux send-keys -t target -l -- "$cmd"。
- 控制键:tmux send-keys -t target C-c。
- 对于 Claude Code/Codex 等交互式 TUI 应用,不要在同一条 send-keys 中附加 Enter。这些应用可能将快速的文本+Enter 序列视为粘贴/多行输入而不提交。应将文本和 Enter 作为单独命令发送,并加入小延迟:
tmux send-keys -t target -l -- "$cmd" && sleep 0.1 && tmux send-keys -t target Enter
监视输出
- 抓取最近历史:tmux capture-pane -p -J -t target -S -200。
- 可以附加;使用 Ctrl+b d 分离。
生成进程
- 对于 Python REPL,设置 PYTHON_BASIC_REPL=1(非 basic REPL 会破坏 send-keys 流程)。
编排编码智能体(Codex、Claude Code)
tmux 擅长并行运行多个编码智能体:
# 在不同工作树中创建会话
tmux new-session -d -s oc-project-fix1 -c ~/projects/project-fix1
tmux new-session -d -s oc-project-fix2 -c ~/projects/project-fix2
# 启动智能体
tmux send-keys -t oc-project-fix1 'claude --dangerously-skip-permissions' Enter
tmux send-keys -t oc-project-fix2 'codex --full-auto' Enter
# 发送提示(文本与 Enter 分开并加延迟)
tmux send-keys -t oc-project-fix1 -l -- "Fix the date picker styling." && sleep 0.1 && tmux send-keys -t oc-project-fix1 Enter
# 轮询完成状态(检查 shell 提示符是否返回)
for sess in oc-project-fix1 oc-project-fix2; do
if tmux capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
echo "$sess: DONE"
else
echo "$sess: Running..."
fi
done
# 获取完整输出
tmux capture-pane -p -t oc-project-fix1 -S -500
提示:
- 使用单独的 git 工作树进行并行修复(避免分支冲突)。
- 在全新克隆中运行智能体前,先执行 bun install / pnpm install。
- 检查 shell 提示符(❯ 或 $)以检测完成。
- Codex 需要 --yolo 或 --full-auto 才能进行非交互式修复。
清理
- 终止会话:tmux kill-session -t "$SESSION"。
- 终止所有 OpenClaw 会话:tmux ls -F '#{session_name}' | grep '^oc-' | xargs -n1 tmux kill-session -t。
适用场景
- 需要交互式 TTY 的 CLI 操作。
- 并行运行多个编码智能体(如 Codex、Claude Code)。
- 运行 Python REPL 等交互式程序。
- 需要远程监视和抓取交互式会话输出的场景。
限制
- 仅应在需要交互式 TTY 时使用;长时非交互任务优先使用 exec 后台模式。
- 必须使用默认 tmux 服务器,不使用 -S 自定义套接字。
- 对 Claude Code/Codex 等 TUI 应用,发送文本与 Enter 需分开并加延迟。
- Python REPL 需设置 PYTHON_BASIC_REPL=1。
- 会话命名需遵循 oc-${project}-${feature} 约定以避免冲突。