Claude Code + Tmux:AI 编程的终极终端工作流
Claude Code + Tmux:AI 编程的终极终端工作流
当 AI 编程助手遇上终端复用器,你的开发效率将迎来质的飞跃。本文详解如何将 Claude Code CLI 与 tmux 深度结合,打造持久化、多代理、可恢复的 AI 开发工作流。
为什么 Claude Code 需要 tmux?
Claude Code 是 Anthropic 官方推出的 CLI 编程助手,直接在终端中与你协作编写代码。而 tmux 作为终端复用器,完美解决了 Claude Code 在实际使用中的几个痛点:
| 痛点 | 裸终端 | tmux 加持 |
|---|---|---|
| SSH 断开 | Claude Code 会话丢失,对话历史消失 | 会话持久化,重连即恢复 |
| 长时间任务 | 必须盯着终端不能动 | 后台运行,随时查看 |
| 多任务并行 | 多开终端窗口,混乱 | 分屏管理,一目了然 |
| 多代理协作 | 无法可视化 | 每个代理一个面板,实时监控 |
| 远程开发 | 依赖网络稳定性 | 断线不丢,任何设备接入 |
快速开始
前提条件
# 安装 tmux
brew install tmux # macOS
sudo apt install tmux # Ubuntu
# 确认 Claude Code 已安装
claude --version
第一个 Claude Code + tmux 会话
# 1. 创建命名会话
tmux new -s claude-dev
# 2. 在会话中启动 Claude Code
claude
# 3. 需要离开?按 Ctrl+b d 断开
# (会话在后台继续运行)
# 4. 回来后重新接入
tmux attach -t claude-dev
# Claude Code 还在等你,对话完整保留!
实用工作流布局
工作流一:经典开发分屏
左边写代码,右边看效果——最基本也最实用的布局。
┌──────────────────┬──────────────────┐
│ │ │
│ Claude Code │ dev server / │
│ (编码助手) │ test runner │
│ │ │
├──────────────────┴──────────────────┤
│ git log / file watcher │
└─────────────────────────────────────┘
操作步骤:
# 创建会话
tmux new -s dev
# 垂直分屏(左右)
# Ctrl+b %
# 右侧面板运行 dev server
npm run dev
# 切回左侧(Ctrl+b ←)启动 Claude Code
claude
# 再水平分一个底栏(Ctrl+b ")用于 git/监控
工作流二:多项目并行
为不同项目创建独立会话,每个会话有自己的 Claude Code 实例。
# 前端项目
tmux new -s frontend -c ~/projects/frontend
claude
# 断开后创建后端项目会话
# Ctrl+b d
tmux new -s backend -c ~/projects/backend
claude
# 在会话间快速切换
# Ctrl+b s → 选择会话列表
# Ctrl+b ( → 上一个会话
# Ctrl+b ) → 下一个会话
工作流三:代码审查面板
┌──────────────────┬──────────────────┐
│ │ │
│ Claude Code │ git diff / │
│ /review │ changed files │
│ │ │
├──────────────────┼──────────────────┤
│ │ │
│ test output │ PR comments │
│ │ │
└──────────────────┴──────────────────┘
tmux new -s review
# 创建 2x2 网格
# Ctrl+b % (垂直分)
# Ctrl+b " (水平分左侧)
# Ctrl+b → (切到右侧)
# Ctrl+b " (水平分右侧)
# 左上:claude(使用 /review 命令)
# 右上:git diff HEAD~3
# 左下:npm test --watch
# 右下:gh pr view
多代理协作(Agent Teams)
这是 Claude Code + tmux 最强大的用法:多个 Claude Code 实例并行工作,一个主代理(Lead)协调多个子代理(Teammates)。
基本原理
┌─ Lead Agent (你交互的窗口) ────────────────────┐
│ "请重构这个项目的认证系统" │
│ │
│ → 分配任务给 3 个 Teammate │
├────────────────┬───────────────┬────────────────┤
│ Teammate 1 │ Teammate 2 │ Teammate 3 │
│ 重写 auth │ 更新 API │ 编写测试 │
│ middleware │ endpoints │ cases │
└────────────────┴───────────────┴────────────────┘
使用方式
Claude Code 的 Agent Teams 功能会自动利用 tmux 来管理子代理面板。
# 方式一:确保在 tmux 中启动 Claude Code
tmux new -s agent-team
claude
# 然后在对话中让 Claude 使用 Agent Teams
# Claude 会自动在 tmux 面板中创建子代理
# 方式二:通过环境变量指定后端
CLAUDE_CODE_SPAWN_BACKEND=tmux claude
iTerm2 用户的进阶技巧
# 使用 tmux -CC 控制模式
# iTerm2 会将 tmux 面板映射为原生标签页
tmux -CC new -s agent-team
claude
# 每个子代理自动变成 iTerm2 的独立标签
# 比传统 tmux 面板更清晰、更好交互
多代理最佳实践
| 建议 | 说明 |
|---|---|
| 代理数量 3-5 个 | 太多代理反而增加协调开销,收益递减 |
| 任务要明确 | 给每个代理分配清晰、独立的子任务 |
| 注意 Token 消耗 | 每个代理有独立上下文窗口,Token 成本线性增长 |
| 定期检查进度 | 当前没有自动通知,需要手动切换面板查看 |
Tmux Popup 方案
侧边面板太窄,看不清 Claude Code 的输出?试试 Popup 弹窗方案——全屏覆盖式的 Claude Code 窗口。
配置方法
在 ~/.tmux.conf 中添加:
# 按 Ctrl+a C-g 弹出/关闭 Claude Code 面板
# 弹窗占据 80% 的终端面积
bind C-g display-popup -d "#{pane_current_path}" -xC -yC -w 80% -h 80% \
-E 'tmux attach -t claude-popup 2>/dev/null || tmux new -s claude-popup "claude"'
效果:
- 按
Prefix + Ctrl+g弹出全屏 Claude Code - 用完后按
Ctrl+b d或Esc关闭弹窗 - 会话持久化,下次弹出时上下文完整保留
- 不占用你的工作面板空间
远程服务器开发
这是 tmux + Claude Code 最经典的场景:在远程服务器上开发,不怕断线。
# 本地 SSH 到服务器
ssh dev-server
# 创建持久会话
tmux new -s project-x
# 启动 Claude Code
claude
# 开始工作...让 Claude 帮你重构代码、跑测试
# 突然 WiFi 断了?没关系!
# 重新连接
ssh dev-server
tmux attach -t project-x
# 一切都在,Claude 的对话也在
长时间任务后台运行
# 让 Claude 跑一个大型迁移任务
# Ctrl+b d 断开去吃饭
# 用手机 SSH 回来看进度
ssh dev-server
tmux attach -t project-x
# Claude 已经帮你完成了 80% 的工作
实用脚本
一键创建 Claude 开发环境
把这个脚本保存为 ~/bin/claude-workspace:
#!/bin/bash
# claude-workspace:一键创建 Claude Code 开发环境
# 用法:claude-workspace [session-name] [project-path]
SESSION=${1:-claude-dev}
PROJECT=${2:-$(pwd)}
# 检查会话是否已存在
tmux has-session -t "$SESSION" 2>/dev/null
if [ $? -eq 0 ]; then
echo "会话 '$SESSION' 已存在,正在接入..."
tmux attach -t "$SESSION"
exit 0
fi
# 创建新会话
tmux new-session -d -s "$SESSION" -c "$PROJECT"
# 主面板:Claude Code
tmux send-keys -t "$SESSION" "claude" C-m
# 右侧面板:文件浏览 / 终端
tmux split-window -h -t "$SESSION" -c "$PROJECT"
tmux send-keys -t "$SESSION" "git status" C-m
# 底部面板:dev server
tmux split-window -v -t "$SESSION" -c "$PROJECT"
# 调整面板大小(左侧 Claude 占 60%)
tmux select-pane -t "$SESSION:1.1"
tmux resize-pane -R 20
# 接入会话
tmux attach -t "$SESSION"
# 使用
chmod +x ~/bin/claude-workspace
claude-workspace myproject ~/projects/myproject
多代理派发脚本
#!/bin/bash
# spawn-agents:在 tmux 中并行启动多个 Claude Code 实例
# 用法:spawn-agents <project-path> <agent-count>
PROJECT=${1:-.}
COUNT=${2:-3}
SESSION="claude-agents"
tmux new-session -d -s "$SESSION" -c "$PROJECT"
for i in $(seq 1 $COUNT); do
if [ $i -gt 1 ]; then
tmux split-window -h -t "$SESSION" -c "$PROJECT"
tmux select-layout -t "$SESSION" tiled
fi
tmux send-keys -t "$SESSION" "claude" C-m
done
tmux attach -t "$SESSION"
推荐 tmux 配置(Claude Code 优化版)
以下配置针对 Claude Code 使用场景做了优化:
# ---------- Claude Code 优化配置 ----------
# 大缓冲区(Claude 输出通常很长)
set -g history-limit 100000
# 鼠标支持(方便滚动查看 Claude 的长输出)
set -g mouse on
# 减少 Escape 延迟
set -sg escape-time 0
# 真彩色(让代码高亮正确显示)
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
# 自动重命名窗口
setw -g automatic-rename on
# 活动窗口通知(子代理完成时提醒)
setw -g monitor-activity on
set -g visual-activity on
# Claude Code Popup 快捷键
bind C-g display-popup -d "#{pane_current_path}" -xC -yC -w 80% -h 80% \
-E 'tmux attach -t claude-popup 2>/dev/null || tmux new -s claude-popup "claude"'
# 快速创建 Claude 面板
bind C-c split-window -h -c "#{pane_current_path}" "claude"
常用快捷键速查
| 场景 | 操作 | 快捷键 |
|---|---|---|
| 断开会话 | 去开会,Claude 继续工作 | Ctrl+b d |
| 重新接入 | 回来继续 | tmux a -t name |
| 列出会话 | 查看所有运行中的 Claude 实例 | tmux ls |
| 切换会话 | 在多个 Claude 项目间切换 | Ctrl+b s |
| 垂直分屏 | 新开一个面板 | Ctrl+b % |
| 水平分屏 | 上下分 | Ctrl+b " |
| 面板最大化 | 全屏看 Claude 输出 | Ctrl+b z |
| 滚动查看 | 翻看 Claude 的历史输出 | Ctrl+b [ |
| 关闭面板 | 清理不需要的面板 | Ctrl+b x |
| 弹出 Claude | Popup 方案 | Ctrl+a Ctrl+g |
常见问题
Q: Claude Code 在 tmux 中显示异常?
确保 tmux 配置了真彩色支持:
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
Q: 多代理的 Agent Teams 不显示面板?
Agent Teams 的分屏模式需要在 tmux 中运行。VS Code 内置终端、Windows Terminal、Ghostty 不支持分屏模式。可以通过环境变量强制:
CLAUDE_CODE_SPAWN_BACKEND=tmux claude
Q: 断开后 Claude Code 的对话还在吗?
tmux 保证终端会话持久化,Claude Code 的进程不会中断。但如果 Claude Code 进程本身结束了(比如你输入了 /exit),需要重新启动并用 /resume 恢复。
Q: Token 消耗怎么控制?
每个 Claude Code 实例有独立的上下文窗口。多代理场景下 Token 线性增长。建议:
- 控制代理数量在 3-5 个
- 给每个代理明确的、范围小的任务
- 任务完成后及时关闭不需要的代理
Q: 可以在手机上接入 tmux 会话吗?
可以。通过任何 SSH 客户端(iOS 上的 Termius、Blink Shell 等)连接到服务器后 tmux attach 即可,Claude Code 的完整对话都在。
总结
tmux + Claude Code 的组合不只是 "好用",而是彻底改变了 AI 辅助编程的工作方式:
- 不怕断线:会话持久化,网络抖动不影响工作
- 并行加速:多代理分工协作,大任务拆成小任务并行执行
- 随处接入:服务器上的开发环境,任何设备都能访问
- 专注高效:分屏布局让代码、测试、日志一目了然
如果你每天使用 Claude Code 超过 1 小时,tmux 是你应该掌握的第一个配套工具。