最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
tmux:远程 CLI 控制与智能体编排 - Openclaw Skills
时间:2026-08-18 14:42:01 编辑:袖梨 来源:一聚教程网
什么是 tmux?
tmux 技能为 Openclaw Skills 提供了一个强大的接口,通过持久、隔离的会话与基于终端的环境进行交互。与标准 shell 执行不同,此技能允许进行交互式 TTY 管理,使智能体能够发送特定按键、处理复杂的 REPL,并监控长时间运行过程的实时输出。
通过利用专用的 Unix 套接字,它确保自动化过程与用户的主终端环境保持隔离。这使其成为开发者构建复杂 Openclaw Skills 的必备工具,特别是那些需要多步终端交互或自主编码智能体并行执行的任务。
下载入口:https://github.com/openclaw/skills/tree/main/skills/steipete/tmux
安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install tmux
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
<project>/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 tmux。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
tmux 应用场景
- 运行非基本 shell 模式可能失败的交互式 Python REPL。
- 在不同的 git 工作树中并行编排多个编码智能体(如 Codex 或 Claude Code)。
- 抓取长时间运行后台任务的实时输出,以检测完成情况或错误。
- 管理需要在智能体进程重启后依然存在的持久终端会话。
- 初始化隔离的套接字目录,以防止与其他 Openclaw Skills 发生会话冲突。
- 使用特定的套接字和会话名称创建一个新的后台 tmux 会话。
- 向目标窗格发送原始按键或字面命令,以驱动交互式应用程序。
- 抓取窗格历史记录或使用轮询脚本等待特定的文本模式或提示符。
- 同时监控多个会话,以跟踪并行智能体的进度。
- 自动化任务完成后,终止会话或清理整个套接字服务器。
tmux 配置指南
确保您的主机(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 数据架构与分类体系
该技能通过 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"]}}}
tmux Skill (Clawdbot)
Use tmux only when you need an interactive TTY. Prefer bash background mode for long-running, non-interactive tasks.
Quickstart (isolated socket, bash tool)
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
Socket convention
- Use
CLAWDBOT_TMUX_SOCKET_DIR(default${TMPDIR:-/tmp}/clawdbot-tmux-sockets). - Default socket path:
"$CLAWDBOT_TMUX_SOCKET_DIR/clawdbot.sock".
Targeting panes and naming
- Target format:
session:window.pane(defaults to:0.0). - Keep names short; avoid spaces.
- Inspect:
tmux -S "$SOCKET" list-sessions,tmux -S "$SOCKET" list-panes -a.
Finding sessions
- List sessions on your socket:
{baseDir}/scripts/find-sessions.sh -S "$SOCKET". - Scan all sockets:
{baseDir}/scripts/find-sessions.sh --all(usesCLAWDBOT_TMUX_SOCKET_DIR).
Sending input safely
- Prefer literal sends:
tmux -S "$SOCKET" send-keys -t target -l -- "$cmd". - Control keys:
tmux -S "$SOCKET" send-keys -t target C-c.
Watching output
- Capture recent history:
tmux -S "$SOCKET" capture-pane -p -J -t target -S -200. - Wait for prompts:
{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'. - Attaching is OK; detach with
Ctrl+b d.
Spawning processes
- For python REPLs, set
PYTHON_BASIC_REPL=1(non-basic REPL breaks send-keys flows).
Windows / WSL
- tmux is supported on macOS/Linux. On Windows, use WSL and install tmux inside WSL.
- This skill is gated to
darwin/linuxand requirestmuxon PATH.
Orchestrating Coding Agents (Codex, Claude Code)
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:
- Use separate git worktrees for parallel fixes (no branch conflicts)
pnpm installfirst before running codex in fresh clones- Check for shell prompt (
?or$) to detect completion - Codex needs
--yoloor--full-autofor non-interactive fixes
Cleanup
- Kill a session:
tmux -S "$SOCKET" kill-session -t "$SESSION". - Kill all sessions on a socket:
tmux -S "$SOCKET" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S "$SOCKET" kill-session -t. - Remove everything on the private socket:
tmux -S "$SOCKET" kill-server.
Helper: wait-for-text.sh
{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/--targetpane target (required)-p/--patternregex to match (required); add-Ffor fixed string-Ttimeout seconds (integer, default 15)-ipoll interval seconds (default 0.5)-lhistory lines to search (integer, default 1000)
相关文章
- 《三国杀武将觉醒》左慈拉条队玩法攻略-阵容与技巧详细说明 08-18
- 《洛克王国世界》S2风雷吸能速切队攻略-阵容与玩法详细说明 08-18
- 回归童年!魔域口袋版六一童趣派对开启 08-18
- 《黎明杀机》新章节恐惧之根现已发售 杀手幸存者登场 08-18
- 小米路由器网络唤醒的设置方法及步骤(小米路由器网络唤醒的注意事项及常见问题解答) 08-18
- 《黎明杀机》新章节“恐惧之根”公布 6月上线 08-18