SuperAPI AI 工具集

tmux

智能体与模型

查看项目

更新于 10-16 04:16

技能介绍

用途

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} 约定以避免冲突。