cmux 使用教程:专为 AI Coding 打造的终端工作流引擎

cmux 使用教程:专为 AI Coding 打造的终端工作流引擎

如果你还在用 iTerm2 或 Ghostty 跑 Claude Code,可能已经错过了 2026 年最好的终端体验。


前言

2026 年,AI Coding Agent 已经成为开发者的日常。Claude Code、Codex、OpenCode、Gemini CLI... 我们同时跑着多个 Agent,处理不同的任务。

但你的终端,还是为"命令行时代"设计的吗?

cmux 是一款专为 AI Coding 设计的 macOS 原生终端,它不是另一个"好看的终端",而是一个工作流引擎


一、cmux 是什么?

快速了解

特性 说明
定位 专为多任务和 AI Coding Agent 设计的 macOS 终端
技术栈 Swift + AppKit 原生开发,基于 libghostty 渲染
平台 macOS 14.0+(Apple Silicon / Intel)
价格 免费开源
不是 Ghostty 的 fork(是使用其渲染库的独立应用)

解决什么问题?

如果你同时使用多个 AI Coding Agent,这些痛点你一定懂:

  1. 标签页管理混乱 --- iTerm2 的水平标签在打开 10+ 个会话时难以定位
  2. 通知感知弱 --- Agent 完成任务后没有醒目提醒,容易错过
  3. 缺少 Agent 集成 --- 需要手动配置 hooks 和通知
  4. 复用器配置复杂 --- tmux 需要配置文件和前缀键,学习成本高

cmux 的答案:

功能 说明
垂直标签页 左侧边栏显示所有工作区和会话,一目了然
分屏面板 内置分屏功能,无需 tmux
通知系统 OSC 9/99/777 标准 + macOS 桌面通知 + 侧边栏未读标记
内置浏览器 查文档不用切出终端
Socket API 外部工具可控制 cmux(自动化脚本友好)
零配置 无需配置文件,开箱即用

二、核心理念:三个思维转变

1. 从"标签页"到"工作区"

传统终端思维:打开 10 个标签页 → 用颜色/名字区分 → 在水平标签栏里找

cmux 思维

  • 每个工作区 = 一个任务上下文
  • 工作区之间物理隔离,不会混淆
  • 垂直侧边栏 + 未读标记,一眼定位
css 复制代码
侧边栏结构:
├─ 🔴 项目 A - Claude Code (有未读通知)
├─ 🟢 项目 B - Codex
├─ 🔵 调试 - 日志监控
└─ 🟡 学习 - 文档阅读

精髓:用工作区隔离不同任务,而不是把所有会话塞进一个窗口。


2. 从"被动等待"到"通知驱动"

传统终端:Agent 跑完了?你得自己回去看。

cmux

  • Agent 完成任务 → 自动通知
  • 通知面板 → 一键跳转
  • 桌面提醒 → 离开终端也能收到

精髓:让 Agent 主动找你,而不是你盯着终端等结果。


3. 从"配置驱动"到"开箱即用"

tmux 思维:先写 200 行配置文件,再学前缀键组合。

cmux 思维

  • 默认快捷键已经够用
  • 需要改?设置里点几下
  • 想版本控制?编辑 ~/.config/cmux/settings.json

精髓:工具应该服务于工作,而不是让你服务于工具。


三、核心工作流:AI Agent 多任务管理

场景:同时跑 3 个 Agent

bash 复制代码
# 工作区 1: Claude Code - 主开发
claude

# 工作区 2: Codex - 代码审查
codex review --pr 123

# 工作区 3: 监控 - 日志/构建
tail -f logs/build.log

传统做法:3 个 iTerm2 窗口,Alt+Tab 切换,容易迷路。

cmux 做法

  1. Ctrl+B, C 新建工作区
  2. 每个工作区跑一个 Agent
  3. 侧边栏看状态,通知跳转

通知集成:让 Agent"会说话"

方式一:CLI(最简单)

在 Agent 的 hook 脚本中:

bash 复制代码
#!/bin/bash
cmux notify --title "Claude Code" --body "任务完成"
方式二:OSC 777(通用)

任何终端脚本都能用:

bash 复制代码
printf '\e]777;notify;构建完成;所有测试通过\a'

封装成函数:

bash 复制代码
notify_osc777() {
  local title="$1"
  local body="$2"
  printf '\e]777;notify;%s;%s\a' "$title" "$body"
}

notify_osc777 "Build Complete" "All tests passed"
方式三:Claude Code Hooks(推荐)

创建 Hook 脚本 ~/.claude/hooks/cmux-notify.sh

bash 复制代码
#!/bin/bash
[ -S /tmp/cmux.sock ] || exit 0  # 只在 cmux 中生效

EVENT=$(cat)
EVENT_TYPE=$(echo "$EVENT" | jq -r '.hook_event_name')

case "$EVENT_TYPE" in
  "Stop")
    cmux notify --title "Claude Code" --body "会话完成"
    ;;
  "PostToolUse")
    [ "$(echo "$EVENT" | jq -r '.tool_name')" = "Task" ] && \
    cmux notify --title "Claude Code" --body "Agent 完成"
    ;;
esac

配置 Claude Code ~/.claude/settings.json

json 复制代码
{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/cmux-notify.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Task",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/cmux-notify.sh"
          }
        ]
      }
    ]
  }
}

精髓:通知不是炫技,是减少上下文切换的成本。


四、快捷键哲学:两层设计

第一层:一键直达(高频操作)

快捷键 功能
Cmd+B 切换侧边栏
Cmd+Shift+I 打开通知面板
Cmd+Shift+U 跳转到最新未读通知
Cmd+T 新建表面(tab)

第二层:前缀键组合(低频操作)

cmux 支持两步和弦(类似 tmux):

json 复制代码
// ~/.config/cmux/settings.json
{
  "shortcuts": {
    "bindings": {
      "newSurface": ["ctrl+b", "c"],
      "showNotifications": ["ctrl+b", "i"],
      "toggleSidebar": "cmd+b"
    }
  }
}
  • 使用 plain string 表示一键操作
  • 使用两元素数组表示和弦(前缀 + 后续键)

精髓:高频操作一键直达,低频操作不怕复杂。


五、配置最佳实践

1. 终端配置(Ghostty 兼容)

~/.config/ghostty/config

ini 复制代码
# 字体
font-family = SF Mono
font-size = 13

# 主题
theme = One Dark

# 回滚行数
scrollback-limit = 50000

# 工作目录
working-directory = ~/code

# 分屏分隔线
split-divider-color = #3e4451

2. cmux 专属配置

~/.config/cmux/settings.json

json 复制代码
{
  "$schema": "https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux-settings.schema.json",
  "schemaVersion": 1,
  
  // 外观
  "app": {
    "appearance": "dark",
    "newWorkspacePlacement": "afterCurrent"
  },
  
  // 浏览器
  "browser": {
    "openTerminalLinksInCmuxBrowser": true,
    "hostsToOpenInEmbeddedBrowser": ["localhost", "*.internal"]
  },
  
  // 快捷键
  "shortcuts": {
    "bindings": {
      "toggleSidebar": "cmd+b",
      "newSurface": ["ctrl+b", "c"]
    }
  },
  
  // 通知命令(每次通知时执行)
  "notifications": {
    "command": "say \"$CMUX_NOTIFICATION_TITLE\""
  }
}

3. 热重载配置

修改配置后不需要重启:

bash 复制代码
# 方式一:快捷键
Cmd+Shift+,

# 方式二:CLI
cmux reload-config

精髓:配置应该可版本控制、可热重载、可增量修改。


六、高级技巧

1. 通知 + TTS 语音提醒

配置自定义通知命令:

json 复制代码
{
  "notifications": {
    "command": "say \"$CMUX_NOTIFICATION_TITLE: $CMUX_NOTIFICATION_BODY\""
  }
}

效果:Agent 完成任务后,Mac 会语音播报"Claude Code: 会话完成"。

环境变量可用:

  • CMUX_NOTIFICATION_TITLE - 通知标题
  • CMUX_NOTIFICATION_SUBTITLE - 副标题
  • CMUX_NOTIFICATION_BODY - 正文

2. 内置浏览器自动打开本地链接

json 复制代码
{
  "browser": {
    "openTerminalLinksInCmuxBrowser": true,
    "hostsToOpenInEmbeddedBrowser": ["localhost", "127.0.0.1", "*.internal"]
  }
}

效果:终端里的 http://localhost:3000 链接直接在内置浏览器打开,不用切出。

3. Socket API 自动化

cmux 暴露 socket API,外部脚本可控制:

bash 复制代码
# 列出所有工作区
cmux list-workspaces

# 设置状态(可在状态栏显示)
cmux set-status claude_code "Running"

# 发送通知
cmux notify --title "构建完成" --body "无错误"

用途

  • CI/CD 完成后通知
  • 脚本执行进度提醒
  • 多 Agent 状态同步

4. 工作区颜色编码

json 复制代码
{
  "workspaceColors": {
    "colors": {
      "Red": "#C0392B",
      "Blue": "#1565C0",
      "Neon Mint": "#00F5D4"
    }
  }
}

效果:不同工作区用不同颜色标记,视觉上快速区分。


七、常见场景模板

场景 1:前端开发

yaml 复制代码
工作区 1: Claude Code - 主开发
  └─ pane 1: claude (写代码)
  └─ pane 2: yarn dev (开发服务器)

工作区 2: 测试
  └─ pane 1: yarn test --watch
  └─ pane 2: 内置浏览器打开 localhost:3000

工作区 3: 文档
  └─ pane 1: 内置浏览器看文档
  └─ pane 2: 笔记

场景 2:多项目并行

less 复制代码
工作区 1: 项目 A (红色标记)
  └─ claude --project A

工作区 2: 项目 B (蓝色标记)
  └─ claude --project B

工作区 3: 项目 C (绿色标记)
  └─ claude --project C

通知配置:每个项目完成时语音播报项目名称。

场景 3:监控 + 开发

yaml 复制代码
工作区 1: 开发
  └─ claude

工作区 2: 监控
  └─ pane 1: tail -f logs/app.log
  └─ pane 2: top / htop
  └─ pane 3: 网络监控

通知:日志中出现 ERROR 时触发通知

八、与 tmux 对比:何时用哪个?

场景 推荐 理由
本地 macOS + AI Agent cmux 通知、浏览器、零配置
远程服务器 tmux 会话保持、SSH 友好
多窗口复杂布局 tmux 更灵活的分屏
快速上手 cmux 开箱即用
版本控制配置 两者 都支持配置文件

我的建议:本地开发用 cmux,远程 SSH 用 tmux,两者可以共存(在 cmux 里跑 tmux 也行)。


九、避坑指南

坑 1:会话不恢复

问题:重启 cmux 后,Claude Code 会话没了。

原因:cmux 只恢复布局和元数据,不恢复进程状态。

解决

  • 重要工作用 tmux(在 cmux 里跑 tmux)
  • 或者接受每次重启后重新连接

坑 2:快捷键冲突

问题Cmd+B 和浏览器冲突。

解决 :在 settings.json 中自定义:

json 复制代码
{
  "shortcuts": {
    "bindings": {
      "toggleSidebar": "ctrl+`"
    }
  }
}

坑 3:通知太多

问题:每个 Agent 输出都触发通知,烦。

解决

  • 只在关键节点通知(Stop、Task 完成)
  • 使用 matcher 过滤特定事件

十、安装与快速开始

安装方式

方式一:DMG(推荐)

  1. 从官网下载 .dmg
  2. 拖入 Applications 文件夹
  3. 自动通过 Sparkle 更新

方式二:Homebrew

bash 复制代码
brew tap manaflow-ai/cmux
brew install --cask cmux

# 更新
brew upgrade --cask cmux

CLI 配置

在 cmux 外部使用 CLI 需要创建 symlink:

bash 复制代码
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux

验证安装

打开 cmux,你应该看到:

  • 左侧垂直标签页侧边栏
  • 一个初始工作区
  • Ghostty 驱动的终端就绪

总结

一句话

cmux 是为 AI Coding 设计的终端工作流引擎,核心是"通知驱动 + 工作区隔离"。

三个关键点

  1. 工作区隔离 --- 一个任务一个工作区,不混淆
  2. 通知驱动 --- Agent 主动找你,减少等待成本
  3. 开箱即用 --- 默认够用,配置可选

适合谁

推荐

  • 同时跑多个 AI Agent
  • 需要频繁切换任务
  • 不想折腾配置

不推荐

  • 只用一个 Agent
  • 重度 tmux 用户(会话恢复刚需)
  • Windows/Linux 用户(仅支持 macOS)

最后

cmux 最大的价值不是功能多,而是减少上下文切换。如果你发现自己整天在 iTerm2 标签页里迷路,或者等 Agent 跑完不知道,cmux 值得试试。

2026 年是"终端复兴"的一年,cmux 代表了 AI First 终端的新方向。它没有重新发明终端,而是针对 AI Coding 场景做了精准的优化。

慢工出细活,选对工具更重要。 🐌


参考链接


如果你觉得这篇文章有帮助,欢迎点赞、收藏、关注~

相关推荐
skywalk81632 小时前
Windows下安装编译安装Whisper-CPP:一个语音实现框架集和高性能推理模型
人工智能·windows·whisper
Spliceㅤ2 小时前
Product-classify-bert项目
人工智能·深度学习·bert
Old Uncle Tom2 小时前
Claude Code 上下文压缩分析
人工智能·ai·agent
Apache IoTDB2 小时前
【应用案例】电价“先知”!IoTDB 结合 AI 能力,实现电价精准预测
人工智能·iotdb
weixin_416660072 小时前
2026 年 AI 对话转 Word 工具分析:Pandoc、Typora、aitoword 怎么选
人工智能·word
前端不太难2 小时前
深度解析:OpenClaw 多智能体系统四大支柱
人工智能·状态模式·openclaw
newbe365242 小时前
Design.md:让 AI 一致性进行前端 UI 设计的解决方案
前端·人工智能·ui
摇滚侠2 小时前
从 Vibe Coding 到 Spec Coding:研发范式演进与高质量交付
java·人工智能·ai编程
无限大.2 小时前
数字生存05:在AI时代,如何保持学习能力,不断成长
人工智能·学习