tmux について
tmuxは、既存の対話型tmuxセッションを操作するスキルです。ペインの確認、入力送信、セッション管理、プロンプトの確認に加え、曖昧さを避けたコマンド完了判定の方法も扱います。
主な機能
- 01セッション、ウィンドウ、ペインの一覧表示
- 02ペイン出力とスクロールバックの取得
- 03テキストと特殊キーの送信
- 04セッションの作成、名前変更、終了
- 05ヘルパースクリプトでのテキスト待機
活用シーン
- 01対話型プロセスの確認
- 02実行中のセッションへの入力
- 03応答前のエージェントプロンプト確認
- 04コマンド完了マーカーの待機
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openclaw/ openclaw --skill tmuxインストール後、Claude Code で/tmuxを入力して読み込まれたか確認します。
同梱ファイルscripts/find-sessions.shscripts/wait-for-text.sh
詳細
tmux
既存の対話的な tmux セッションに使用します。単発のコマンドには通常のシェルを使用してください。新規の非対話的なバックグラウンドジョブにはバックグラウンド実行を使用します。
基本
tmux ls
tmux list-windows -t shared
tmux list-panes -t shared:0
tmux capture-pane -t shared:0.0 -p
tmux capture-pane -t shared:0.0 -p -S -
ターゲットの形式: session:window.pane、例: shared:0.0。
入力の送信
リテラルテキストを送信し、その後 Enter:
tmux send-keys -t shared:0.0 -l -- "Please continue"
tmux send-keys -t shared:0.0 Enter
特殊キー:
tmux send-keys -t shared:0.0 C-c
tmux send-keys -t shared:0.0 C-d
tmux send-keys -t shared:0.0 Escape
任意のテキストには -l -- を使用します。ペーストや改行による予期しない動作を避けるため、テキストと Enter を分割してください。
セッション
tmux new-session -d -s worker
tmux rename-session -t old new
tmux kill-session -t worker
プロンプトの確認
tmux capture-pane -t worker-3 -p | tail -20
tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯"
プロンプトを理解した場合にのみ承認または選択を行います:
tmux send-keys -t worker-3 -l -- "y"
tmux send-keys -t worker-3 Enter
ヘルパー
scripts/find-sessions.sh: セッションを検出します。scripts/wait-for-text.sh: キャプチャしたペインの内容にテキストが含まれるまで待機します。
wait-for-text.sh は、プロセスの出力だけでなく、エコーされた入力やスクロールバックも検索します。コマンドの完了を検出するには、tmux に送信するコマンド内で完全なテキストが引数をまたいで分割される一意のマーカーを使用します:
nonce="$(od -An -N8 -tx1 /dev/urandom | tr -d ' \n')"
marker="OPENCLAW_DONE_${nonce}"
tmux send-keys -t shared:0.0 -l -- "sleep 4; printf '%s%s\n' 'OPENCLAW_DONE_' '$nonce'"
tmux send-keys -t shared:0.0 Enter
scripts/wait-for-text.sh -t shared:0.0 -p "$marker" -F -T 30
エコーされたコマンドに完全なマーカーが含まれることはなく、nonce によって古い完了行がマッチすることを防ぎます。
注意
capture-pane -pはスクリプト用に標準出力へ出力します。-S -はスクロールバック全体をキャプチャします。- tmux セッションは SSH の切断後も維持されます。
コメント
Markdown 対応