O que tmux faz?
Usar para sessões interativas existentes do tmux. Para comandos únicos, use o shell normal. Para novos trabalhos em segundo plano não interativos, use execução em segundo plano.
Básico
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 -
Formato alvo: session:window.pane, ex.: shared:0.0.
Enviar entrada
Texto literal, depois Enter:
tmux send-keys -t shared:0.0 -l -- "Please continue"
tmux send-keys -t shared:0.0 Enter
Teclas especiais:
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
Use -l -- para texto arbitrário. Separe o texto e Enter para evitar surpresas com colagem/nova linha.
Sessões
tmux new-session -d -s worker
tmux rename-session -t old new
tmux kill-session -t worker
Verificações de prompt
tmux capture-pane -t worker-3 -p | tail -20
tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯"
Aprovar/selecionar apenas quando o prompt for compreendido:
tmux send-keys -t worker-3 -l -- "y"
tmux send-keys -t worker-3 Enter
Auxiliares
scripts/find-sessions.sh: descobrir sessões.scripts/wait-for-text.sh: aguardar até que o conteúdo do painel capturado contenha o texto.
wait-for-text.sh pesquisa entrada ecoada e histórico de rolagem, bem como a saída do processo. Para conclusão de comando, use um marcador único cujo texto completo é dividido entre argumentos no comando enviado ao 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
O comando ecoado nunca contém o marcador completo, e o nonce impede que uma linha de conclusão antiga corresponda.
Notas
capture-pane -pimprime na saída padrão para scripts.-S -captura todo o histórico de rolagem.- As sessões do tmux persistem mesmo após desconexões SSH.