ToseaAI/awesome-html-slide-skills 第一次筛选怎么不跑偏:看链接状态、输出目标和失败信号(skill首测版)
2026-08-11
2026-08-15 0
tmux 技能为 Openclaw Skills 提供了一个强大的接口,通过持久、隔离的会话与基于终端的环境进行交互。与标准 shell 执行不同,此技能允许进行交互式 TTY 管理,使智能体能够发送特定按键、处理复杂的 REPL,并监控长时间运行过程的实时输出。
通过利用专用的 Unix 套接字,它确保自动化过程与用户的主终端环境保持隔离。这使其成为开发者构建复杂 Openclaw Skills 的必备工具,特别是那些需要多步终端交互或自主编码智能体并行执行的任务。
下载入口:https://github.com/openclaw/skills/tree/main/skills/steipete/tmux
从源直接安装技能的最快方式。
npx clawhub@latest install tmux
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
/skills/
优先级:工作区 > 本地 > 内置
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 tmux。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
确保您的主机(macOS 或 Linux)上已安装 tmux。对于 Windows 用户,必须在 WSL 环境中安装 tmux。按如下方式设置套接字目录:
SOCKET_DIR="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/clawdbot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/clawdbot.sock"
SESSION=my-session-name
# 在后台启动新会话
tmux -S "$SOCKET" new -d -s "$SESSION"
该技能通过 tmux 套接字和内部缓冲区历史记录管理数据。以下是该技能使用的组织结构:
| 组件 | 类型 | 描述 |
|---|---|---|
| 套接字路径 | 文件 | 用于会话隔离和通信的 Unix 域套接字 |
| 会话 | 标识符 | 逻辑任务的命名分组(例如 agent-1, repl-test) |
| 目标窗格 | 标识符 | 格式为 session:window.pane 的精确坐标(默认 :0.0) |
| 历史缓冲区 | 文本 | 通过 capture-pane 捕获的回滚内容,用于分析 |
| 脚本助手 | 可执行文件 | 实用脚本,如 wait-for-text.sh,用于基于正则的监控 |
name: tmux
description: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
metadata: {"clawdbot":{"emoji":"??","os":["darwin","linux"],"requires":{"bins":["tmux"]}}}
Use tmux only when you need an interactive TTY. Prefer bash background mode for long-running, non-interactive tasks.
SOCKET_DIR="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/clawdbot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/clawdbot.sock"
SESSION=clawdbot-python
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
After starting a session, always print monitor commands:
To monitor:
tmux -S "$SOCKET" attach -t "$SESSION"
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
CLAWDBOT_TMUX_SOCKET_DIR (default ${TMPDIR:-/tmp}/clawdbot-tmux-sockets)."$CLAWDBOT_TMUX_SOCKET_DIR/clawdbot.sock".session:window.pane (defaults to :0.0).tmux -S "$SOCKET" list-sessions, tmux -S "$SOCKET" list-panes -a.{baseDir}/scripts/find-sessions.sh -S "$SOCKET".{baseDir}/scripts/find-sessions.sh --all (uses CLAWDBOT_TMUX_SOCKET_DIR).tmux -S "$SOCKET" send-keys -t target -l -- "$cmd".tmux -S "$SOCKET" send-keys -t target C-c.tmux -S "$SOCKET" capture-pane -p -J -t target -S -200.{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'.Ctrl+b d.PYTHON_BASIC_REPL=1 (non-basic REPL breaks send-keys flows).darwin/linux and requires tmux on PATH.tmux excels at running multiple coding agents in parallel:
SOCKET="${TMPDIR:-/tmp}/codex-army.sock"
# Create multiple sessions
for i in 1 2 3 4 5; do
tmux -S "$SOCKET" new-session -d -s "agent-$i"
done
# Launch agents in different workdirs
tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo 'Fix bug X'" Enter
tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/project2 && codex --yolo 'Fix bug Y'" Enter
# Poll for completion (check if prompt returned)
for sess in agent-1 agent-2; do
if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "?"; then
echo "$sess: DONE"
else
echo "$sess: Running..."
fi
done
# Get full output from completed session
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -500
Tips:
pnpm install first before running codex in fresh clones? or $) to detect completion--yolo or --full-auto for non-interactive fixestmux -S "$SOCKET" kill-session -t "$SESSION".tmux -S "$SOCKET" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S "$SOCKET" kill-session -t.tmux -S "$SOCKET" kill-server.{baseDir}/scripts/wait-for-text.sh polls a pane for a regex (or fixed string) with a timeout.
{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]
-t/--target pane target (required)-p/--pattern regex to match (required); add -F for fixed string-T timeout seconds (integer, default 15)-i poll interval seconds (default 0.5)-l history lines to search (integer, default 1000)