用途:该技能通过 tmux 控制交互式 CLI,方式是向会话发送按键并抓取窗格输出。若任务不需要交互式 TTY,或属于长时间运行的非交互任务,应优先使用 exec 后台模式。该技能限定在 darwin/linux 平台,且要求 tmux 在 PATH 中;Windows 需在 WSL 内安装 tmux。
快速开始使用隔离 socket 与 exec 工具:先设置 SOCKET_DIR="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/moltbot-tmux-sockets}",用 mkdir -p "$SOCKET_DIR" 创建目录,再设 SOCKET="$SOCKET_DIR/moltbot.sock" 与 SESSION=moltbot-python,用 tmux -S "$SOCKET" new -d -s "$SESSION" -n shell 新建会话,用 send-keys 发送命令,用 capture-pane 抓取输出。启动会话后应打印监控命令:tmux -S "$SOCKET" attach -t "$SESSION" 和 tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200。
socket 约定:使用 CLAWDBOT_TMUX_SOCKET_DIR,默认 ${TMPDIR:-/tmp}/moltbot-tmux-sockets,默认 socket 路径为 "$CLAWDBOT_TMUX_SOCKET_DIR/moltbot.sock"。目标格式为 session:window.pane,默认 :0.0;名称应短且不含空格。可用 list-sessions、list-panes -a 检查。可用 {baseDir}/scripts/find-sessions.sh -S "$SOCKET" 查找会话,加 --all 扫描所有 socket。
安全发送输入:优先用 tmux -S "$SOCKET" send-keys -t target -l -- "$cmd" 做字面发送;控制键如 C-c 用 tmux -S "$SOCKET" send-keys -t target C-c。抓取近期历史用 capture-pane -p -J -t target -S -200;等待提示可用 {baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'。可 attach,按 Ctrl+b d 分离。python REPL 需设 PYTHON_BASIC_REPL=1,因为非 basic REPL 会破坏 send-keys 流程。
并行编排编码代理(Codex、Claude Code):可创建多个会话,用 send-keys 在不同工作目录启动代理,如 tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo 'Fix bug X'" Enter,并通过抓取窗格与匹配 shell 提示符(❯ 或 $)判断完成。建议为并行修复使用独立 git worktree、在新克隆中先执行 pnpm install,Codex 非交互修复需要 --yolo 或 --full-auto。
清理:tmux -S "$SOCKET" kill-session -t "$SESSION" 关闭单个会话;可列出会话名后逐个 kill-session;用 kill-server 清空私有 socket 上全部内容。wait-for-text.sh 支持 -t 目标、-p 模式(-F 表示固定字符串)、-T 超时秒数(默认 15)、-i 轮询间隔(默认 0.5)、-l 搜索历史行数(默认 1000)。