跳到正文
cccskills
免费在 GitHub 公开

tmux

Control interactive command-line tools through tmux by sending keystrokes, capturing terminal output, and waiting for prompts. Supports session management and running multiple coding agents in parallel, with helper scripts for finding sessions and detecting text.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.

查看安装方法

适用场景

  • Operating an interactive Python session
  • Waiting for prompts and reading terminal output
  • Running Codex or Claude Code sessions in parallel
  • Finding and cleaning up terminal sessions

包含的文件(3)

  • SKILL.md4.0 KB
  • scripts/find-sessions.sh2.9 KB
  • scripts/wait-for-text.sh2.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

tmux Skill

Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.

Quickstart (isolated socket, exec tool)

SOCKET_DIR="${NANOBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/vikingbot-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/vikingbot.sock"
SESSION=vikingbot-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 NANOBOT_TMUX_SOCKET_DIR environment variable.
  • Default socket path: "$NANOBOT_TMUX_SOCKET_DIR/vikingbot.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 (uses NANOBOT_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/linux and requires tmux on 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 install first before running codex in fresh clones
  • Check for shell prompt (❯ or $) to detect completion
  • Codex needs --yolo or --full-auto for 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/--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)

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

cron

免费

Schedule reminders and recurring work with the cron tool. Send fixed messages, have an agent execute tasks and report results, or arrange a one-time action at a specified time. List and remove scheduled jobs as needed.

中文简介正在准备中。当前显示英语简介。

  • Schedule regular break reminders
  • Set a one-time meeting reminder
  • Run recurring checks and receive results
volcengine/OpenViking4万2026年10月20日 更新

Turn conversation logs, meeting notes, task records, and other OpenViking materials into daily Markdown reports. The skill separates confirmed outcomes from plans, consolidates repeated evidence, and links reported progress, decisions, blockers, and commitments to their sources.

中文简介正在准备中。当前显示英语简介。

  • Preparing an end-of-day work report from scattered records
  • Combining meeting notes and chat logs into a daily summary
  • Separating confirmed results from agent plans and suggestions
volcengine/OpenViking4万2026年10月20日 更新

Find relevant past execution experience in OpenViking before starting a task. Check when each experience applies and when it does not, then load suitable guidance while giving current facts, policies, and tool results priority.

中文简介正在准备中。当前显示英语简介。

  • Find past experience relevant to a new task
  • Exclude guidance that does not fit current conditions
  • Recheck past guidance against current tool results
volcengine/OpenViking4万2026年10月20日 更新

github

免费

Work with GitHub issues, pull requests, and automated checks through the gh command-line tool. Inspect failed workflow steps and their logs, retrieve selected fields, and query the GitHub API for data beyond standard commands.

中文简介正在准备中。当前显示英语简介。

  • Check automated test results on a pull request
  • Inspect failed workflow steps and logs
  • List issue numbers and titles
volcengine/OpenViking4万2026年10月20日 更新

Convert GitHub resource links into proxy URLs for cloning repositories and downloading files when access is slow. Covers release attachments, raw files, repository archives, and Gist files, with a Python helper for URL conversion.

中文简介正在准备中。当前显示英语简介。

  • Cloning a repository when GitHub access is slow
  • Downloading release attachments through a proxy
  • Fetching raw files or repository archives
volcengine/OpenViking4万2026年10月20日 更新

Set up the OpenViking long-term memory plugin for OpenClaw through conversation. The skill handles installation, configuration, and verification so chat facts can be saved and relevant memories recalled across sessions, using an existing OpenViking server.

中文简介正在准备中。当前显示英语简介。

  • Add long-term memory to OpenClaw
  • Recall saved facts across chat sessions
  • Separate memories by assistant or sender
volcengine/OpenViking4万2026年10月20日 更新

查看 volcengine 的全部技能

报告此技能的问题