一天一个开源项目(第90篇):cmux - 为 AI Agent 时代设计的原生终端复用器
引言
“The best developers have always built their own tools.” — The cmux Zen
这是"一天一个开源项目"系列的第90篇文章。今天带你了解的项目是cmux。
如果说前几期介绍的pi-mono或Warp是在重新定义终端的交互逻辑,那么cmux则是在为 AI Agent 时代构建一个全新的“物理承载空间”。它不是一个简单的终端模拟器,而是一个高度可编程的命令行与浏览器复用器(Multiplexer)。它的目标是:当你的 AI 代理(如 Claude Code)在疯狂改代码时,你能在一个原生的、GPU 加速的窗口里,同时监控进程、查看浏览器预览、并实时干预。
你将学到什么
- 为什么 AI Agent 需要专门的复用器(Multiplexer)?
- cmux 如何实现终端与浏览器的无缝分屏协作。
- 利用 Unix Socket API 实现对开发环境的完全编程控制。
- 为什么“原生(Native)”对 AI 时代的开发者效率至关重要。
前置知识
- 了解
tmux或screen等传统终端复用器。 - 习惯于在命令行中调用 AI 模型或编程代理。
- 使用 macOS 操作系统。
项目背景
项目简介
cmux(可能源于 Command Multiplexer)是一个轻量级、高性能的 macOS 原生应用。它将终端(基于 Ghostty 核心)和网络浏览器整合到一个统一的工作区中。它采用了“Primitive-First(基元优先)”的设计哲学,不提供现成的重型解决方案,而是通过 CLI 和 Socket API 提供最基础的构建块,让开发者构建最适合自己的 Agent 协作流程。
作者/团队介绍
- 团队:Manaflow
- 核心理念:反对“黑盒”和过于主观的 AI 产品,倡导给开发者提供可编程的“基元(Primitives)”,回归“开发者自己造工具”的开源精神。
项目数据
- ⭐ GitHub Stars: 400+ (快速增长中)
- 📦 核心技术:Swift&libghostty
- 📄 License: MIT (待确认,遵循开源社区常规)
- 🌐 仓库: manaflow-ai/cmux
主要功能
核心作用
cmux 为 AI 代理提供了一个“可视化的家”。它允许外部程序(Agent)通过 Socket 连接,自主创建分屏、导航网页、甚至在侧边栏显示自定义的进度条和状态信息。
使用场景
- Agent 协同监控
- 左侧运行 AI 自动编程代理,右侧实时显示编译后的网页预览。
- 自动化开发环境配置
- 通过脚本一键启动项目:自动分屏(Api 层、前端层、数据库日志),且自动打开相关文档链接。
- 跨多浏览器会话
- 它可以导入 20 多种浏览器的 Cookie,让 AI 代理能直接方位需要认证的 Web 工具。
快速开始
目前 cmux 主要针对 macOS 用户。
# 访问 GitHub 下载最新 Release 的 .dmg 包# 或者通过命令行控制 cmux(假设应用已运行)cmux split-pane--horizontalcmux open-url https://google.com核心特性
- Bonsplit 布局系统
- 极其灵活的分屏与标签管理,支持终端与浏览器的混合排版。
- Agent 侧边栏 (Sidecar)
- 专门为 Agent 设计的 UI 面板,AI 代理可以通过 API 发送元数据、进度条、日志等,无需弄乱主终端输出。
- 完全可编程控制
- 提供 Unix Socket API (v1/v2),支持 line-based 和 JSON-RPC 协议,让任何程序都能接管 UI。
- GPU 加速渲染
- 基于强大的
libghostty引擎,渲染速度极快,延迟极低。
- 基于强大的
- 高度定制化
- 直接读取 Ghostty 的配置文件,完美支持现有的配色方案和字体设置。
项目优势
| 对比项 | cmux | tmux | Warp / Cursor |
|---|---|---|---|
| GUI 集成 | 完美集成(终端+浏览器) | 纯文本 | 深度定制但较封闭 |
| 可编程性 | 极强(Socket API) | 强 | 较弱 |
| 性能 | 原生 Swift + GPU | 极快(由于简单) | 中(Electron 居多) |
| Agent 友好度 | 满级(带状态侧边栏) | 低 | 高但非通用工具 |
项目详细剖析
1. 编程接口:让 Agent 指挥终端
cmux 最强大的地方在于它的/tmp/cmux.sock。
一个简单的 Python 脚本就可以控制它:
importsocketimportjson# 通过 JSON-RPC 创建一个新的浏览器分屏command={"jsonrpc":"2.0","method":"v2.workspace.open_url","params":{"url":"http://localhost:3000"},"id":1}# 发送到 cmux 即可通过脚本实现 UI 漂移2. 侧边栏 Primitives (Sidecars)
在 cmux 中,Agent 可以拥有自己的展示领地。通过侧边栏 API,Agent 可以展示:
- 实时生成的测试覆盖率图表。
- 任务执行的 Step-by-step 进度条。
- 发现的漏洞列表,点击即可在主窗口打开对应文件。
这种“信息解耦”极大地缓解了开发者监控 Agent 工作时的认知负担。
项目地址与资源
官方资源
- 🌟GitHub: https://github.com/manaflow-ai/cmux
- 📄文档: 查看仓库内的
README.md和docs/API.md
适用人群
- 正在构建自定义 AI Agent 的开发者。
- 喜欢在多屏幕、多窗口间频繁切换的高级玩家。
- 追求极致性能、讨厌 Electron 臃肿感的 macOS 原住民。
欢迎来我的个人主页找到更多有用的知识和有趣的产品
