Skip to content
kfumiPublic

About

一个把 Claude Code、Codex、OpenCode、pi 的 CLI 变成桌面工作台的本地优先应用。

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1,084 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CodeMUX Logo

CodeMUX

一个把 AI 编码 CLI 变成桌面工作台的本地优先应用

在一个界面里管理 Claude Code / Codex / OpenCode / pi、多 Provider、MCP、Skills、Git Review、内置终端与内置浏览器,并可把任务派给 Agent 看板执行、用定时任务按时自动开工。

Version License Platform Electron 33 React 18 Rust

截图 • 当前亮点 • 快速开始 • 架构概览


CodeMUX 是什么

CodeMUX 是一个本地优先的桌面应用,由 Electron 桌面壳 + 独立 Rust daemon + React 渲染层 + Node.js sidecar 组成,目标不是做一个“再包一层聊天窗口”,而是把真实的 AI 编码工作流搬到一个更顺手的 GUI 里。

如果你平时在 Claude Code、Codex、OpenCode 这类 CLI 智能体上工作,通常会遇到这些问题:

  • 对话、工具调用、文件改动、终端输出分散在不同地方
  • 多 provider、多模型、多项目切换成本高
  • MCP、Skills、权限模式、历史会话都缺少统一管理入口
  • 想做代码审查或开一个项目终端,还要在应用外反复切换

CodeMUX 的做法是把这些环节收拢到一个桌面工作台里:会话、项目、Provider、Agent、MCP、Skills、Review、Terminal、Browser 都放在同一个界面中完成,还能派发工作任务与定时任务,让 Agent 在隔离分支上把活干完。

当前真正可用的核心运行时:

  • Claude Code
  • Codex
  • OpenCode(基于官方 @opencode-ai/sdk,可在运行时设置中按版本安装)
  • pi(基于 pi RPC 的极简多供应商运行时,经临时扩展支持审批与提问)

Gemini CLI 已完成接入位与 MCP 适配位,运行时仍处于预留阶段。


当前亮点

多套 Agent 运行时完整可用

  • Claude Code:基于官方 @anthropic-ai/claude-agent-sdk,可在运行时设置中选择版本安装
  • Codex:基于官方 codex app-server 子进程(stdio JSON-RPC 长连接),支持工具审批、Plan Mode 闭环与原生上下文压缩;第三方供应商经本地代理做协议翻译
  • OpenCode:基于官方 @opencode-ai/sdk,运行时同时安装 opencode-ai CLI,支持会话持久化与恢复、原生权限桥接、Plan/Build 双 Agent 切换、图片附件输入
  • pi:基于 pi RPC 的极简多供应商运行时,支持会话恢复、工具审批、AskUserQuestion 问答与 steer
  • 各 Agent 共用统一事件模型、工具卡片、权限审批 UI 和会话管理

权威 daemon 与可替换的桌面壳

  • 业务权威是独立的 Rust 进程 codemux-daemon:拥有 SQLite、会话、Agent 编排、Sidecar、MCP、Skills与定时任务,壳崩溃不影响权威
  • Electron 壳只做窗口、托盘、单实例、通知、自动更新与 Browser Host,并作为 supervisor 拉起/守护 daemon(版本配对仲裁)
  • 桌面 UI、浏览器/手机网页端与 CLI 都是 Daemon Client,统一走回环 Companion REST/WS + CodeMUX Event 协议,本机连接使用 Local Daemon Token
  • 前端只有一套产物:npm run build:web 产出 dist-web/,由 daemon 直接服务;同机浏览器走简化配对(壳内确认一次),手机/远程浏览器扫码配对后即可查看与驱动桌面会话;apps/cli 提供本机命令行客户端

面向真实编码流程,而不是单纯聊天

  • 项目分组 + 多会话管理
  • 流式对话、Thinking、Todo、工具调用卡片
  • 整轮 AI 输出折叠为「已处理 + 时长 + 步骤数」,可展开查看思考、读取、搜索、终端与子智能体的完整过程
  • 子智能体有独立时间线与实时预览面板
  • 变更文件预览、Diff 展示
  • 会话归档、置顶、重命名、恢复
  • 任意用户消息上可「回退」(只回对话 / 同时回滚文件 / 两者),也可从任意回复「分叉」出新会话
  • AskUserQuestion 交互卡片,支持选项选择与自由文本回答
  • 图片附件输入与预览;模型无视觉能力时可用兜底视觉模型解析后注入上下文
  • 流式生成时显示实时输出速度(xx.x tok/s)
  • 实时上下文使用进度,展示当前 token 占用与上下文窗口占比
  • 可导入 Claude Code / Codex / OpenCode 的外部 CLI 会话历史并归入对应项目

把 AI 工作流放进同一个桌面壳里

  • 内置 Review 面板查看 staged / unstaged 改动与 Diff
  • 内置 Terminal 面板在项目目录直接开 PTY 终端
  • 内置 浏览器 面板:沙箱 webview(独立 partition,可配 CDP),Agent 可被授权操作网页、选取网页元素加入对话
  • Git 分支管理:分支切换、新建分支、AI 辅助生成 Commit Message、Commit / Push 与创建 Pull Request
  • 右侧 Side Panel 支持多标签切换
  • 输入、代码审查、文件变更、终端、网页不用再来回切应用

工作任务看板:把任务交给 Agent 去跑

  • 四列看板:待办 / 进行中 / 等你处理 / 完成
  • 任务 = 标题 + 指令 + 项目 + Agent 与模型;启动后由 daemon 按项目配额排队,创建真实会话执行
  • 默认在 git worktree 隔离分支里干活,不污染当前工作区
  • 跑完进入「等你处理」,查看 Diff 统计后三选一:合并(可自定义提交信息)/ 直接完成 / 重新开始
  • 支持按项目筛选、列表 / 看板视图切换、归档与一键归档全部已完成

定时任务:按时自动开会话

  • 支持一次性、每日、每周、间隔等时点,到点自动新建会话并执行指令
  • 可绑定项目与 Agent,支持建议模板(如「每日提交简报」「每周回顾」「跟进监控」)
  • 每个任务有独立启停开关、立即执行、运行历史回看与时区显示
  • 仅在 CodeMUX 运行时触发(含托盘隐藏),不会补跑错过的任务

自定义快捷键

  • 内置 13 条命令(后退 / 前进、新建会话、打开设置、搜索、折叠侧边栏 / 侧面板、放大 / 缩小 / 恢复界面缩放、切换思考级别、停止生成、聚焦输入框)
  • 点键位即进入录制,拒绝无修饰键与系统保留键位,并检测键位冲突
  • 支持单项禁用、单项恢复默认与一键恢复全部默认
  • 键位按物理键匹配,与键盘布局无关;绑定存于 daemon 配置,所有客户端一致

多 Provider 与多模型管理

  • 「设置 → 模型配置」用一份统一的供应商列表管理多家上游,按名称搜索、逐个启停
  • 每个供应商可配置 API 密钥、Anthropic / OpenAI 兼容 / OpenAI Responses 三类端点与模型列表
  • 支持测试连通性、从接口拉取模型列表、添加 / 删除模型与 Token 单价
  • 支持 Codex 需要兼容代理 路由开关与 1M context 标记
  • 「设置 → 智能体运行时」为 Claude Code / Codex / OpenCode / pi 分别指定默认智能体、新建会话默认模型与默认权限
  • OpenCode 支持 @ai-sdk/openai、@ai-sdk/anthropic、@ai-sdk/openai-compatible、@ai-sdk/google、@ai-sdk/amazon-bedrock 等多 adapter
  • 运行时安装与升级都在设置内完成,不依赖系统全局 CLI;另有只读的「外部 CLI 诊断」

本地代理兼容 Codex

  • 内置本地代理路由
  • 用于兼容非原生 OpenAI Responses API 上游(Responses ↔ Chat 协议翻译)
  • 设置页可直接启动 / 停止
  • 状态栏可观察运行状态

MCP 与 Skills 都能在应用内统一管理

  • MCP 支持 stdio、http、sse
  • 支持 JSON 编辑、配置向导、探测、从本机工具导入
  • 内置 codemux-control MCP 承载浏览器与桌面两类工具(共 27 个),随「设置 → 浏览器控制」「电脑控制」两个开关增减,设置页直接显示当前可用工具数
  • 每个 MCP 可单独启用到 Claude Code / Codex / OpenCode / pi
  • Skills 以 ~/.codemux/skills/ 为单一数据源,Windows 下按 symlink → junction → copy 回退链处理
  • Skills 支持内置同步、预览、启用 / 禁用、卸载
  • 启用的 Skills 会自动注册到斜杠命令系统,每个 Skill 维护 4 个独立的 per-agent 启用开关

权限模式和计划模式是第一类能力

  • Claude、Codex、OpenCode 各自拥有独立的权限配置模型
  • 会话级保存权限配置和 plan mode
  • Codex 支持 sandbox / approval / network access 组合配置
  • Claude 支持不同 permission mode
  • OpenCode 保留原生权限语义,CodeMUX 负责展示、审批与响应转发,支持 once / always / reject 三档响应

使用统计与用量洞察

  • 365 天活跃热力图,按 token 消耗着色,悬停查看当日会话数与 token 明细
  • 每日 token 柱状图,分输入 / 缓存 / 输出堆叠展示
  • 按 Agent / 模型分布统计,支持时间窗口与 Agent 类型筛选
  • 概览卡片:会话总数、累计 token、缓存命中率

系统通知与提示音

  • 任务完成、需要权限审批、需要用户回答时自动触发系统通知
  • 应用非活跃状态下点击通知可唤醒主窗口(Windows 通过 Electron AppUserModelID + 单实例拦截实现)
  • 内置多种提示音(bell / chime / ding / success / task-complete),支持预览与切换

自动更新

  • 内置 electron-updater,启动时自动检查 GitHub Releases 最新版本
  • 支持用户确认后下载、退出时自动安装并重启
  • 侧边栏更新入口展示版本信息与进度

截图

新建会话与项目入口

新对话

主对话面板

对话面板

AI 过程与工具卡片

整轮 AI 输出可折叠为「已处理 + 时长 + 步骤数」,展开后是完整的思考、读取、搜索、终端与子智能体过程。

AI 过程与工具卡片

文件改动与 Diff

Diff 视图

内置浏览器

右侧面板内嵌沙箱浏览器,Agent 可被授权直接操作网页。

内置浏览器

工作任务看板

工单看板

定时任务

定时任务

模型与供应商配置

模型配置

MCP 管理

MCP 设置

Skills 管理

Skills 设置

自定义快捷键

快捷键设置

外观自定义

外观设置

适合谁

  • 经常用 Claude Code、Codex 或 OpenCode 做工程任务的开发者
  • 希望把多 provider、多项目、多会话统一管理的人
  • 想要可视化工具调用、Diff、终端与 Review 面板的人
  • 希望把 MCP / Skills 当作长期工作流能力来管理的重度用户
  • 关注 token 用量、成本与活跃度,想要长期统计洞察的人
  • 想把任务直接派给 Agent 在隔离分支上跑完、再统一验收合并的人

快速开始

环境要求

  • Node.js >= 18
  • Rust stable(编译 daemon)

Windows 通常还需要:

  • Visual Studio C++ Build Tools(Rust 工具链)

安装依赖

npm ci

cd apps/sidecar
npm ci
npm run build
cd ../..

npm run build:daemon

开发模式

npm run dev:desktop

一键启动:等 Vite(端口 1420)就绪后拉起 Electron 壳,daemon 由壳内 supervisor 自动拉起,退出时统一清理子进程。

如果只开发前端:

npm run dev

也可以分别手动跑 npm run dev(渲染层)与 npm run dev:electron(壳,需渲染层已在 1420 就绪)。

生产构建

npm run build:electron-installer

产物(NSIS 安装包 + latest.yml)输出到 apps/desktop/release/,详见桌面端发版指南。

常用检查命令

# 前端测试
npx vitest run

# sidecar 测试
cd apps/sidecar
npx vitest run

# Electron 壳类型检查
cd apps/desktop
npm run typecheck

# Rust(daemon crate)检查
cd crates/daemon
cargo check --all-targets --all-features
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings

使用概览

1. 配置供应商

在「设置 → 模型配置」里维护一份统一的供应商列表,可新增、启停并搜索。每个供应商需要填写:

  • API 密钥
  • Anthropic / OpenAI 兼容 / OpenAI Responses 端点(按供应商实际协议填)
  • 模型列表(模型 ID 与显示名称,可从接口拉取)

如果目标上游不是原生 OpenAI Responses API,在该供应商上开启“Codex 需要兼容代理”。

2. 选择默认智能体

在「设置 → 智能体运行时」中为每个智能体选择默认模型与默认权限,并设定默认智能体。当前已可用运行时:

  • Claude Code
  • Codex
  • OpenCode
  • pi

同一页面还能安装 / 校验托管 Runtime、升级版本与回滚,并查看系统 PATH 上的外部 CLI 诊断。

2.1 启用内置浏览器(可选)

在「设置 → 浏览器控制」打开开关后,右侧面板会出现「浏览器」标签,同时内置的 codemux-control MCP 会注入浏览器类工具,会话即可直接操作网页。

3. 管理 MCP

在“MCP”设置中可以:

  • 新增 / 编辑 server
  • 使用向导生成配置
  • 对不同工具单独启用
  • 从本机已有工具配置导入
  • 执行连接探测

4. 管理 Skills

在“Skills”设置中可以:

  • 浏览并安装内置 Skills 与 GitHub Skills
  • 预览 Skill 内容
  • 为 Claude Code / Codex / OpenCode / pi 单独启用 / 禁用
  • 卸载已安装 Skills

Skills 以 ~/.codemux/skills/ 作为单一数据源;Windows 下按 symlink → junction → copy 回退链处理跨卷与权限问题。已启用的 Skills 会自动注册为斜杠命令。

5. 打开工作区侧边面板

进入项目会话后,可在右侧 Side Panel 打开:

  • 审查:查看并操作 Git 改动、切换分支、提交并推送,并可发起创建 Pull Request(GitHub / GitLab / Gitee)
  • 终端:在项目根目录打开内置终端
  • 浏览器:内嵌沙箱浏览器,可手动浏览,也可授权 Agent 接管操作网页

创建 Pull Request 的使用要求:

  • 当前分支必须是普通分支,并且相对 base 分支至少有一个已提交的 commit。
  • 工作区必须干净;未提交改动不会被自动 commit,需要先在审查面板提交。
  • GitHub 使用本机 gh 登录,GitLab 使用本机 glab 登录。
  • Gitee 需要在设置 → Git 中配置 Personal Access Token;Token 只保存到系统凭据存储。
  • 流程固定为检查、补全标题/正文、检查重复 PR、推送分支、创建 PR;推送或创建失败后可以安全重试。

6. 查看使用统计

在设置 → “使用统计”中可以:

  • 查看 365 天活跃热力图(按 token 消耗着色)
  • 切换时间窗口(7 / 30 / 90 / 365 天)与 Agent 类型筛选
  • 查看每日 token 堆叠柱状图与缓存命中率
  • 查看 Agent / 模型分布与累计会话数

7. 派发工作任务

在侧边栏的「工单」中新建任务,选择项目、Agent 与模型并写下指令即可启动。任务由 daemon 按项目配额排队,在隔离的 git worktree 分支里创建真实会话执行;完成后任务进入「等你处理」,可查看 Diff 统计并选择合并、标记完成或重新开始。

8. 配置定时任务

在侧边栏的「自动化」中按模板或从零创建定时任务,绑定项目与 Agent 后启用。到点会自动新建会话执行指令,并保留运行历史供回看。

9. 改键与外观

  • 「设置 → 快捷键」:点键位进入录制,可重绑、禁用或恢复默认
  • 「设置 → 外观」:主题、强调色、界面字体与字号、代码字号、圆角风格、幕布宽度、对比度

10. 从手机或另一台电脑继续

在同一局域网或远程环境下,用手机 / 浏览器扫码配对后即可查看并驱动桌面会话。配对使用 Pairing Token,业务权威始终在运行 CodeMUX 的那台机器上。

斜杠命令

所有会话都支持一组基础命令:

  • /new
  • /clear
  • /compact
  • /cost
  • /status

Claude 当前额外支持的常用命令包括:

  • /init
  • /review
  • /code-review
  • /security-review
  • /debug
  • /verify
  • /deep-research
  • /simplify
  • /batch
  • /loop
  • /run
  • /heapdump
  • /insights
  • /goal

Codex 当前额外支持:

  • /plan
  • /init
  • /review

OpenCode 通过 plan / build 双 Agent 切换支持计划模式,并在会话中复用上述通用命令与已注册 Skills 命令。

通用自定义命令:

  • /explain <文件路径>
  • /test
  • /fix [描述]
  • /refactor <目标>

已安装并启用的 Skills 也会注册为斜杠命令。


技术栈

层 技术
前端 React 18, TypeScript, Vite 6
UI Tailwind CSS v4, Radix UI, lucide-react, shadcn/ui
状态管理 Zustand
对话渲染 @assistant-ui/react, react-markdown, streamdown
代码 / Diff Monaco (@monaco-editor/react), diff, parse-diff, highlight.js
终端 @xterm/xterm, @xterm/addon-fit
桌面壳 Electron 33(窗口、托盘、单实例、通知、electron-updater、Browser Host)
后端 Rust 2021 daemon(codemux-daemon): Tokio, Reqwest, Rusqlite,内嵌 Companion Server(回环 REST/WS)
客户端协议 Companion REST/WS + CodeMUX Event(桌面渲染层 / 浏览器与手机网页端 / CLI 共用)
本地数据库 SQLite
Sidecar Node.js + TypeScript
Agent SDK 由 CodeMUX 使用本机 npm 安装到托管 Runtime 目录:@anthropic-ai/claude-agent-sdk、@openai/codex(CLI,供 app-server 使用)、@opencode-ai/sdk
OpenCode AI Adapter @ai-sdk/openai, @ai-sdk/anthropic, @ai-sdk/openai-compatible, @ai-sdk/google, @ai-sdk/amazon-bedrock

配置与数据

应用主要数据保存在本地:

  • 会话 / 项目 / MCP / Skills 元数据:SQLite
  • 提供商、主题、默认智能体等:config.json
  • Claude Code 配置:~/.claude/settings.json(默认供应商直接复用,切换时自动备份)
  • Codex 配置:~/.codex/(保留登录与 vendor 信息)
  • OpenCode 配置:~/.config/opencode/opencode.json(默认不覆盖用户配置)
  • Skills 单一数据源:~/.codemux/skills/
  • 本机守护凭证(Local Daemon Token)与 daemon 运行状态(daemon-run-state.json):应用数据目录(%APPDATA%/com.codemux.desktop 及平台等价目录)
  • Agent 原生历史:由各自运行时和 sidecar 管理

在设置 -> 常规中可以直接查看和打开配置目录。


架构概览

Rust daemon(codemux-daemon,权威进程)

  • 独立进程启动即监听回环,写 daemon-run-state.json(port / pid / version / managed_by)
  • 拥有 SQLite(会话 / 项目 / Timeline)、配置文件、Agent 编排、Sidecar 生命周期、MCP / Skills 适配、Provider Profile、Git、终端、文件系统与定时任务
  • 内嵌 Companion Server:回环 REST/WS + Local Daemon Token 鉴权,是唯一的客户端业务协议;局域网 / 中继暴露由用户显式开启
  • 广播 CodeMUX Event 与桌面 UI 事件(sessions-changed 等),并提供受控的浏览器自动化接缝

Electron 桌面壳(supervisor)

  • 承载窗口、托盘、单实例锁、原生对话框、通知(AppUserModelID)与 electron-updater
  • 按 supervisor 契约拉起 / 附着 / 重启 daemon(健康检查 + 版本配对仲裁),只管理自己拉起的 daemon
  • Browser Host:渲染层沙箱 <webview>(独立 partition,与应用 IPC 隔离),CDP 经 webContents.debugger 可用
  • 壳能力经 contextBridge(window.codemuxDesktop)暴露给渲染层;壳崩溃不影响 daemon

前端渲染层

  • React 渲染桌面 UI,Zustand 管理会话、设置、MCP、Skills、侧边面板等状态
  • 作为 Daemon Client 通过 Companion REST/WS 订阅 CodeMUX Event、驱动动作
  • @assistant-ui/react 作为对话运行时框架,自定义 Thread / Composer / Tool 卡片

Node.js sidecar

  • 封装 Claude Code、Codex、OpenCode 等 Agent 运行时
  • 处理会话启动、流式事件归一化、历史恢复、代理路由、权限桥接等逻辑
  • OpenCode 通过官方 SDK 启动独立 Server,建立 Client 与 Session,并通过 SSE 订阅事件

项目结构

codeMUX/
├─ src/                     # React 统一前端(桌面 UI、PC 浏览器、手机浏览器共用一套构建)
│  ├─ components/agent/     # 对话面板、工具卡片、权限卡片、上下文进度
│  ├─ components/settings/  # 设置页(Provider / MCP / Skills / 通知 / 使用统计 / 日志)
│  ├─ components/workspace/ # Review / Terminal / Browser 等侧边面板
│  ├─ components/automation/ # 定时任务面板与编辑器
│  ├─ components/worktask/  # 工作任务看板
│  ├─ stores/               # Zustand 状态(agent / session / mcp / skill 等)
│  └─ lib/                  # 工具函数(通知、权限、模型、上下文计算等)
├─ apps/
│  ├─ desktop/              # Electron 壳(main / preload / supervisor / Browser Host / updater)
│  ├─ sidecar/              # Node.js Agent Sidecar(Claude / Codex / OpenCode / pi 运行时)
│  └─ cli/                  # 本机命令行 Daemon Client
├─ crates/
│  └─ daemon/               # Rust daemon crate(Tauri 壳已移除,目录由 src-tauri/ 改名)
│     ├─ src/bin/           # codemux-daemon 入口
│     ├─ src/daemon/        # daemon 装配与生命周期
│     ├─ src/companion/     # Companion Server(REST/WS、鉴权、配对、浏览器自动化接缝)
│     ├─ src/agent/         # 会话生命周期、历史导入、Timeline 持久化
│     ├─ src/agent_runtime/ # Claude / Codex / OpenCode / pi 运行时抽象
│     ├─ src/mcp/ src/skills/  # MCP / Skills 各 Agent 适配器
│     ├─ src/model_providers/  # Model Provider 服务
│     └─ src/scheduled_tasks/  # 定时任务
├─ public/                  # 静态资源与截图
├─ scripts/                 # 开发 / 发布 / e2e / relay 脚本
├─ docs/                    # 设计文档、ADR 与实现说明
└─ README.md

更细的目录约定请参考 CONTRIBUTING.md 和仓库内的 AGENTS.md / 开发文档。


相关文档


当前状态

  • 架构:Electron 桌面壳 + 独立 Rust daemon(codemux-daemon),Tauri 壳已移除(daemon crate 位于 crates/daemon/,目录由 src-tauri/ 改名)
  • Claude Code:主力运行时,支持最完整
  • Codex:已集成并可用,包含本地代理兼容链路
  • OpenCode:已集成并可用,基于官方 @opencode-ai/sdk,从托管 Runtime 目录启动独立 Server
  • pi:已集成并可用,基于 pi RPC 的极简多供应商运行时
  • Gemini CLI:界面与适配位已预留,运行时待继续完善

许可证

本项目基于 MIT License 开源。


Made by kfumi

About

一个把 Claude Code、Codex、OpenCode、pi 的 CLI 变成桌面工作台的本地优先应用。

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages