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-sessions、tmux -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)
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~