loading

Loading

请输入关键字开始搜索
    首页 技术实践随笔技术

    tmux安装与claude监控安装

    分类:随笔技术
    字数: (6654)
    阅读: (509)
    0

    用 tmux + claude-tmux + claude-tui 管理多个 Claude Code 终端任务

    tmux        负责多终端会话持久化
    claude-tmux 负责查看多个 Claude Code 会话状态
    claude-tui  负责查看上下文、成本、工具调用、session 统计

    一、环境说明

    本文以 Ubuntu / Debian / WSL / SSH 终端环境为主。
    先确认 Claude Code 已经能用:

    claude --version

    如果这里都不能运行,先把 Claude Code 装好,再继续后面的步骤。

    二、安装 tmux

    Ubuntu / Debian

    sudo apt update
    sudo apt install -y tmux curl git build-essential

    macOS

    brew install tmux

    验证:

    tmux -V

    三、安装 Rust / Cargo

    claude-tmux 推荐通过 Cargo 安装,所以需要 Rust 工具链。
    先检查:

    cargo --version

    如果没有 Cargo,安装 Rust,如果没有魔法可能安装失败,可以部分用国内安装:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
    env RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup \
        RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup \
        sh -s -- -y --profile minimal
    
    source "$HOME/.cargo/env"

    验证:

    cargo --version

    四、安装 claude-tmux

    执行:

    cargo install claude-tmux

    确认二进制文件存在:

    which claude-tmux
    ls -lh ~/.cargo/bin/claude-tmux

    正常路径一般是:

    /home/你的用户名/.cargo/bin/claude-tmux

    五、配置 tmux 快捷键打开 claude-tmux

    编辑 tmux 配置:

    vim ~/.tmux.conf

    加入这一行:

    bind-key C-c display-popup -E -w 80 -h 30 "~/.cargo/bin/claude-tmux"

    重载配置:

    tmux source-file ~/.tmux.conf

    进入 tmux:

    tmux

    然后按:

    Ctrl-b  Ctrl-c

    就会弹出 claude-tmux 面板。
    claude-tmux 常见状态:

    ● Working           Claude 正在工作
    ○ Idle              Claude 空闲,等你输入
    ◐ Waiting for input 等待权限确认,例如 [y/n]
    ? Unknown           不是 Claude 会话,或者状态无法判断

    六、安装 claude-tui

    claude-tui 的坑比较多,核心要求是:

    Python 3.13+

    先检查当前 Python:

    python3 --version

    如果输出是 Python 3.13.x,可以直接安装:

    curl -sSL https://raw.githubusercontent.com/slima4/claude-tui/main/install.sh | bash

    安装后执行:

    claudetui setup
    claudetui mode full

    验证:

    which claudetui
    claudetui --help

    七、如果 Python 版本不是 3.13+

    很多 Ubuntu 机器默认是 Python 3.10 或 3.12。不要直接替换系统的 /usr/bin/python3,否则可能影响 apt 和系统脚本。
    推荐做法:只在当前用户环境里使用 Python 3.13。
    先检查:

    python3.13 --version
    which python3.13

    如果能看到 Python 3.13,执行:

    mkdir -p ~/.local/bin
    ln -sf "$(command -v python3.13)" ~/.local/bin/python3
    grep -q 'export PATH="$HOME/.local/bin:$PATH"' ~/.bashrc || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
    source ~/.bashrc
    hash -r

    验证:

    which python3
    python3 --version

    你应该看到类似:

    /home/你的用户名/.local/bin/python3
    Python 3.13.x

    然后重新安装 claude-tui

    curl -sSL https://raw.githubusercontent.com/slima4/claude-tui/main/install.sh | bash
    claudetui setup
    claudetui mode full

    八、常见坑

    1:代理环境变量导致 curl 失败

    如果你看到类似错误:

    curl: (97) Can't complete SOCKS5 connection

    或者明明没有主动加代理,但 curl 自动走了 socks/http 代理,先检查环境变量:

    env | grep -i proxy

    也可以逐个 echo:

    echo "http_proxy=$http_proxy"
    echo "https_proxy=$https_proxy"
    echo "all_proxy=$all_proxy"
    echo "HTTP_PROXY=$HTTP_PROXY"
    echo "HTTPS_PROXY=$HTTPS_PROXY"
    echo "ALL_PROXY=$ALL_PROXY"

    临时清掉当前终端代理:

    unset http_proxy
    unset https_proxy
    unset all_proxy
    unset HTTP_PROXY
    unset HTTPS_PROXY
    unset ALL_PROXY

    再次确认:

    env | grep -i proxy

    如果没有输出,说明当前 shell 的代理已经清掉。
    重新测试:

    curl -I --max-time 10 https://astral.sh
    curl -I --max-time 10 https://raw.githubusercontent.com

    如果你想查代理从哪里自动注入:

    grep -nEi 'proxy|1080|8080|7890|socks' ~/.bashrc ~/.profile ~/.bash_profile ~/.zshrc 2>/dev/null

    2:apt 代理配置导致 502 Bad Gateway

    如果你给 apt 配过代理,比如:

    Acquire::http::Proxy "http://127.0.0.1:8080/";
    Acquire::https::Proxy "http://127.0.0.1:8080/";

    然后出现:

    502 Bad Gateway [IP: 127.0.0.1 8080]
    仓库 InRelease 的签名不再生效

    这通常不是 Ubuntu 源坏了,而是 apt 拿到的是代理返回的 502 页面,不是真正的 InRelease 文件。
    先删掉 apt 代理:

    sudo rm -f /etc/apt/apt.conf.d/99proxy
    sudo apt clean

    确认没有残留:

    ls /etc/apt/apt.conf.d/*proxy* 2>/dev/null
    cat /etc/apt/apt.conf.d/*proxy* 2>/dev/null

    然后重新测试:

    sudo apt update

    如果你的网络必须走代理,先确认代理端口真的可用。
    测试 HTTP 代理:

    curl -v --max-time 10 -x http://127.0.0.1:8080 https://www.cloudflare.com/cdn-cgi/trace

    测试 SOCKS5 代理:

    curl -v --max-time 10 --socks5-hostname 127.0.0.1:1080 https://www.cloudflare.com/cdn-cgi/trace

    如果 8080 返回 502,说明这个 HTTP 代理出口不可用,不要给 apt 配 8080。
    如果 1080 可用,可以尝试 apt 使用 socks5h:

    sudo tee /etc/apt/apt.conf.d/99proxy <<'EOF'
    Acquire::ForceIPv4 "true";
    Acquire::http::Proxy "socks5h://127.0.0.1:1080/";
    Acquire::https::Proxy "socks5h://127.0.0.1:1080/";
    EOF

    然后:

    sudo apt clean
    sudo apt update

    不用代理时,删除它:

    sudo rm -f /etc/apt/apt.conf.d/99proxy
    sudo apt clean

    3:deadsnakes PPA 连接超时

    如果你用 deadsnakes PPA 安装 Python 3.13,可能遇到:

    连接超时
    无法连接 ppa.launchpadcontent.net
    IPv6 网络不可达

    这时有三个选择:

    选择 1:优先用 uv,绕开 apt PPA

    curl -LsSf https://astral.sh/uv/install.sh | sh
    source "$HOME/.local/bin/env" 2>/dev/null || export PATH="$HOME/.local/bin:$PATH"
    uv python install 3.13

    选择 2:修好代理后再 apt install

    确认代理可用后再执行:

    sudo apt update
    sudo apt install -y python3.13 python3.13-venv libpython3.13-stdlib

    选择 3:不用 claude-tui,先只用 tmux + claude-tmux

    如果网络暂时修不好,claude-tmux 已经足够看多个 Claude 是否 working、idle、waiting。

    九、推荐的 tmux 工作流

    创建多个 Claude 任务 session:

    tmux new -s claude-api
    tmux new -s claude-web
    tmux new -s claude-test
    tmux new -s claude-monitor

    在前三个 session 里启动 Claude:

    claude

    在 monitor session 里启动 claude-tui:

    claudetui monitor

    最终结构类似:

    tmux
    ├── claude-api      # Claude 任务 1
    ├── claude-web      # Claude 任务 2
    ├── claude-test     # Claude 任务 3
    └── claude-monitor  # claudetui monitor

    日常命令:

    tmux ls
    tmux attach -t claude-api
    tmux attach -t claude-web
    tmux attach -t claude-test

    在任意 tmux session 里打开 claude-tmux

    Ctrl-b  Ctrl-c

    打开 claude-tui 实时监控:

    claudetui monitor

    查看历史统计:

    claudetui stats

    查看 session 列表:

    claudetui sessions list

    十、最终配置

    我的推荐组合是:

    vim ~/.tmux.conf

    配置:

    # Ctrl+a c      新建 window
    # Ctrl+a d      detach
    # Ctrl+a |      左右分屏
    # Ctrl+a -      上下分屏
    # Alt+h/j/k/l   直接切 pane
    # 鼠标点击       选择 pane
    # 鼠标拖边框     调整 pane 大小
    # 把 prefix 从 Ctrl+b 改成 Ctrl+a
    
    unbind C-b
    set -g prefix C-a
    bind C-a send-prefix
    
    # 开启鼠标
    set -g mouse on
    setw -g mode-keys vi
    # 鼠标左键拖选:自动进入 copy-mode,并限定在当前 pane
    bind-key -T root MouseDrag1Pane if-shell -F "#{pane_in_mode}" "send-keys -M" "copy-mode -M"
    
    # 鼠标松开:复制并退出 copy-mode
    bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-selection-and-cancel
    
    bind-key -T copy-mode-vi v send -X begin-selection
    bind-key -T copy-mode-vi y send -X copy-selection-and-cancel
    bind-key -T copy-mode-vi Enter send -X copy-selection-and-cancel
    
    set -g set-clipboard on
    
    # 按 r 重新加载配置
    bind r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
    
    # 更容易记的分屏
    bind h split-window -h
    bind v split-window -v
    
    # Alt + hjkl 直接切换 pane,不需要先按 prefix
    bind -n M-h select-pane -L
    bind -n M-j select-pane -D
    bind -n M-k select-pane -U
    bind -n M-l select-pane -R
    
    # Alt + 方向键也可以切换 pane
    bind -n M-Left select-pane -L
    bind -n M-Down select-pane -D
    bind -n M-Up select-pane -U
    bind -n M-Right select-pane -R
    
    # Alt + 数字切 window
    bind -n M-1 select-window -t 1
    bind -n M-2 select-window -t 2
    bind -n M-3 select-window -t 3
    bind -n M-4 select-window -t 4
    bind -n M-5 select-window -t 5
    
    # 绑定claude-tmux
    bind-key C-c display-popup -E -w 80 -h 30 "~/.cargo/bin/claude-tmux"
    
    文章出处: 求索空间
    文章链接: https://blog.askerlab.com/tmux_cluade_tmux
    评论列表:
    empty

    暂无评论