Skill: mkuiwu/smux (version 1.0.0)

--- name: smux description: Cross-pane messaging for tmux. Use `tmux-bridge` command to send messages between panes labeled p1, p2, p3... version: 1.0.0 metadata: { "openclaw": { "emoji": "🖥️", "os": ["darwin", "linux"], "requires": { "bins": ["tmux"] } } } --- # smux 多 pane 协作技能。通过 `p1`, `p2`, `p3` 标签与其他 pane 通信，无需记忆 pane ID。 ## 快速开始 ```bash # 从普通 shell 启动三 pane 工作台 tmux-bridge -l mysession # 查看当前 session 的 panes tmux-bridge list # 收到任务后，先判断当前消息是不是来自其他 agent tmux-bridge pending # 需要对方回传结果时显式声明 tmux-bridge send --expect-reply p1 '请分析 src/auth.ts' # 仅通知，不要求回复 tmux-bridge send --no-reply p1 '我先去跑测试' # 收到待回复任务后回传最终结论 tmux-bridge reply '分析完成：...' ``` ## 命令 | 命令 | 用途 | |---|---| | `launch` / `-l <session_name> [delay_secs]` | 从外层 shell 创建新的三 pane session，并自动 attach | | `kill-session` / `-k <session_name>` | 按 session 名快速关闭整个 tmux session | | `list` | 列出当前 session 的所有 pane 和标签 | | `send --expect-reply <target> <msg>` | 发送需要回传结果的消息 | | `send --no-reply <target> <msg>` | 发送不需要回传的消息 | | `pending` | 查看当前 pane 未处理的待回复消息，状态为 `waiting` 或 `overdue` | | `reply <msg>` | 回复当前 pane 最近一条待回复消息 | | `rename` | 将当前 session 所有 pane 重命名为 p1, p2, p3... | | `auto-label` | 输出自动命名配置脚本 | ## Agent 协作准则 1. 在生成最终回复前，先执行 `tmux-bridge pending` 判断当前 pane 是否有待回复消息。 2. 如果 `pending` 显示 `waiting` 或 `overdue`，说明当前任务来自其他 agent，最终结论必须用 `tmux-bridge reply '<结论>'` 回传。 3. 如果 `pending` 没有待回复项，视为普通用户输入，不需要调用 `reply`。 4. 给其他 agent 发任务时，默认使用显式模式： - 需要结果时用 `--expect-reply` - 只是通知时用 `--no-reply` 5. 禁止回传“收到”“正在处理”“谢谢”这类无效内容；即使没有发现，也要明确回复“无发现”。 6. 如果 `tmux-bridge reply` 报错 `no pending reply target for this pane`，说明当前没有可自动回复的对象，此时再手动使用 `tmux-bridge send --no-reply <target> '<结论>'`。 ## 自动命名（推荐） 开启后，新创建的 pane 自动获得 `p1`, `p2` 标签： ```bash # 添加配置到 tmux.conf tmux-bridge auto-label >> ~/.tmux.conf tmux source-file ~/.tmux.conf ``` ## 使用原则 - 外层创建/关闭 session 优先使用 `tmux-bridge -l` 和 `tmux-bridge -k` - `pending` 是判断消息来源的唯一依据，不要靠目测 pane 输出猜测 - 发 agent 消息时不要手搓 `send-keys` - 标签优先：用 `p1` 代替 `%42` - `reply` 只用于处理 `--expect-reply` 建立的待回复消息

path: references/tmux-bridge.md
content: ---
name: tmux-bridge
description: Cross-pane messaging for AI agents.
metadata:
  { "openclaw": { "emoji": "🌉", "os": ["darwin", "linux"], "requires": { "bins": ["tmux"] } } }
---

# tmux-bridge

Simple CLI for cross-pane messaging with explicit reply tracking.

## Commands

```bash
tmux-bridge -l <session_name> [delay_secs]               # Short alias for launch
tmux-bridge -k <session_name>                            # Short alias for kill-session
tmux-bridge launch <session_name> [delay_secs]          # Create 3-pane AI workspace and attach
tmux-bridge kill-session <session_name>                 # Kill a tmux session by name
tmux-bridge list                                         # List panes with labels p1, p2...
tmux-bridge pending                                      # Show unresolved incoming reply requests
tmux-bridge rename                                       # Auto-rename panes to p1, p2...
tmux-bridge send --expect-reply <target> <msg>          # Send message and require a reply
tmux-bridge send --no-reply <target> <msg>              # Send informational message without reply
tmux-bridge reply <msg>                                  # Reply to latest pending request in current pane
tmux-bridge auto-label                                   # Output auto-label config for tmux.conf
tmux-bridge help                                         # Show help
```

## Protocol

- `--expect-reply` creates a pending item for the target pane.
- `pending` is how an agent decides whether the current request came from another pane.
- `reply` consumes the latest pending item for the current pane.
- If there is no pending item, `reply` fails with `no pending reply target for this pane`.

## Examples

```bash
# Start a fresh AI workspace session from a normal shell
tmux-bridge -l mysession

# Close a session by name
tmux-bridge -k mysession

# Long form remains supported
tmux-bridge launch mysession

# Start with a custom rename delay
tmux-bridge launch mysession 10

# Close a session by name
tmux-bridge kill-session mysession

# Ask another agent to investigate and report back
tmux-bridge send --expect-reply p1 'Please review src/auth.ts'

# Broadcast a status update without requiring a response
tmux-bridge send --no-reply p1 'I am rebasing now'

# Before final answer, check whether current pane owes another agent a reply
tmux-bridge pending

# Return the conclusion
tmux-bridge reply 'Review done: no issues found'
```

## Target Format

- `%N` - pane ID (for example `%19`)
- `p1`, `p2`, ... - pane label in the current session
- `session:win.pane` - full pane reference


path: references/tmux.md
content: ***

name: tmux
description: Raw tmux commands for session, pane, and window control.
metadata:
{ "openclaw": { "emoji": "🧵", "os": \["darwin", "linux"], "requires": { "bins": \["tmux"] } } }
------------------------------------------------------------------------------------------------

# tmux

跨 pane 通信优先使用已安装的 `tmux-bridge` 命令。如果命令不存在，使用绝对路径调用 bridge 脚本，严禁使用相对路径。原生 `tmux` 只保留 3 类 fallback：目标确认、布局管理、排障。

## 目标确认

```bash
tmux list-panes -F '#S:#I.#P #{pane_id} #{pane_current_command} #{pane_title}'
tmux display-message -p '#S:#I.#P #{pane_id}'
```

## 布局管理

```bash
tmux split-window -h -t SESSION
tmux split-window -v -t SESSION
tmux select-layout -t SESSION tiled
```

## 排障

```bash
tmux capture-pane -t SESSION:WINDOW.PANE -p
```

## 使用原则

- 发 agent 消息时不要手搓 `send-keys`
- 确认目标时先看当前 session，再发消息
- 创建新 pane 时优先 `split-window`，然后 `select-layout tiled`



Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)