网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Tmux

2026-03-24 新闻来源:网淘吧 围观:56
电脑广告
手机广告
购买adidas上京东官方旗舰店。

tmux 技能 (Clawdbot)

仅在需要交互式 TTY 时使用 tmux。对于长时间运行的非交互式任务,优先使用 bash 后台模式。

快速入门(独立套接字,bash 工具)

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

启动会话后,始终打印监控命令:

上网淘巴领天猫淘宝优惠券,一年省好几千。
监控方法:
  tmux -S "$SOCKET" attach -t "$SESSION"
  tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

套接字约定

  • 使用CLAWDBOT_TMUX_SOCKET_DIR(默认${TMPDIR:-/tmp}/clawdbot-tmux-sockets)。
  • 默认套接字路径:"$CLAWDBOT_TMUX_SOCKET_DIR/clawdbot.sock".

目标窗格与命名

  • 目标格式:会话:窗口.窗格(默认为:0.0)。
  • 名称应简短;避免使用空格。
  • 查看:tmux -S "$SOCKET" list-sessionstmux -S "$SOCKET" list-panes -a

查找会话

  • 列出您的Socket上的会话:{baseDir}/scripts/find-sessions.sh -S "$SOCKET".
  • 扫描所有Socket:{baseDir}/scripts/find-sessions.sh --all(使用CLAWDBOT_TMUX_SOCKET_DIR)。

安全发送输入

  • 首选字面量发送:tmux -S "$SOCKET" send-keys -t target -l -- "$cmd".
  • 控制键:tmux -S "$SOCKET" send-keys -t target C-c.

监视输出

  • 捕获最近的历史记录:tmux -S "$SOCKET" capture-pane -p -J -t target -S -200.
  • 等待提示符:{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'.
  • 附加是可以的;使用Ctrl+b d分离。

生成进程

  • 对于Python REPL,设置PYTHON_BASIC_REPL=1(非基础的REPL中断会破坏发送按键的流程)。

Windows / WSL

  • tmux在macOS/Linux上受支持。在Windows上,请使用WSL并在WSL内安装tmux。
  • 此技能仅限于darwin/linux并且要求tmux在PATH中。

编排编码代理(Codex, Claude Code)

tmux擅长并行运行多个编码代理:

SOCKET="${TMPDIR:-/tmp}/codex-army.sock"

# 创建多个会话
for i in 1 2 3 4 5; do
  tmux -S "$SOCKET" new-session -d -s "agent-$i"
done

# 在不同的工作目录中启动代理
tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo '修复bug X'" Enter
tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/project2 && codex --yolo '修复bug Y'" Enter

# 轮询完成情况(检查提示符是否返回)
for sess in agent-1 agent-2; do
  if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
    echo "$sess: 完成"
  else
    echo "$sess: 运行中..."
  fi
done

# 从已完成的会话获取完整输出
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -500

提示:

  • 为并行修复使用独立的git worktree(避免分支冲突)
  • pnpm install在全新克隆的仓库中运行codex之前先执行此命令
  • 检查shell提示符($)以检测是否完成
  • Codex需要--yolo--full-auto来进行非交互式修复

清理

  • 结束一个会话:tmux -S "$SOCKET" kill-session -t "$SESSION".
  • 结束一个套接字上的所有会话:tmux -S "$SOCKET" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S "$SOCKET" kill-session -t.
  • 清除私有套接字上的一切:tmux -S "$SOCKET" kill-server.

辅助工具:wait-for-text.sh

{baseDir}/scripts/wait-for-text.sh轮询一个窗格以查找正则表达式(或固定字符串),并设置超时。

{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]
  • -t/--target目标窗格(必需)
  • -p/--pattern要匹配的正则表达式(必需);添加-F用于固定字符串
  • -T超时秒数(整数,默认15)
  • -i轮询间隔秒数(默认0.5)
  • -l搜索的历史行数(整数,默认1000)
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
上网淘巴领天猫淘宝优惠券,一年省好几千。

文章底部电脑广告
手机广告位-内容正文底部

相关文章

上网淘巴领天猫淘宝优惠券,一年省好几千。

广告  ×

您是本站第227398名访客 今日有82篇新文章/评论