macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux 桌面前提和支持边界见 跨平台指南。
⭐ 如果这个项目对你有帮助,请给我们一个 Star! ⭐
Codex 原生 UI,连接多个原生 Coding Harness,并让任务在它们之间无缝接力。
当前注册的 Harness(18 个)
Antigravity |
Codex |
Claude Code |
Pi |
Oh My Pi |
DeepSeek |
OpenCode |
Grok |
OpenClaw |
Hermes |
Qoder |
CodeBuddy |
Kiro |
Cursor |
ZCode |
Trae |
Cline |
Kimi Code |
图标与 Harness 能力均来自项目自身的注册表;只有本机已安装且握手成功的 Harness 才会进入真实运行。
Harness Mix 是接入官方 Codex Desktop 原生界面的本地内核。默认官方 Codex 会话由 Desktop 直接连接官方 app-server;明确选择其他 Harness 或 Codex(协作) 时,独立的 Harness Mix Host 才处理对应任务。它把包括 Antigravity、Codex、Pi、Oh My Pi、Claude Code、DeepSeek Harness、OpenCode、Grok、OpenClaw、Hermes、Qoder、CodeBuddy、Kiro CLI、Cursor CLI、ZCode、Trae、Cline 和 Kimi Code 在内的原生 Coding Harness 接入同一套 UI——连它们各自在回合中派生的原生子代理(子智能体)也会以原生卡片直接出现在 Codex 内容流里,无需切回各家客户端。Host Runtime 与 Protocol Core 管理托管任务的映射、协作和事件投影;模型调用、工具执行、原生会话与凭据仍由各 Harness 自己管理。
预览来自当前 Codex Desktop 原生窗口:Harness Mix 作为原生扩展入口出现在桌面工具栏和 Composer 中,会话、模型、工具与权限仍由 Codex Desktop 及各 Harness 管理。
| 功能模块 | 核心能力 | 交互入口与特点 |
|---|---|---|
| 🔄 跨 Harness 任务接力 | 4 种接力模式(继续执行 / 执行计划 / 独立审查 / 重新分析)平滑交接 | 输入框接力角标 / /switch;持久化脱敏检查点与证据追溯 |
| 🎨 皮肤市场 | 内置 HeiGe、Codex Styler、Dream Skin 与经典编辑器配色主题,外加原创「复古 QQ · 千禧蓝」结构化皮肤,支持亮色 / 暗色、背景装饰和可读性保护 | 设置 → 皮肤;一键预览、应用和恢复原生外观 |
| 📚 历史会话导入与引用 | 一键导入 Pi / Claude / Codex / CodeBuddy 原生历史并可中断续跑;# 引用任意旧会话注入脱敏上下文 |
引用仅预取最近一页;MCP 只读工具 get_session_info / list_session_messages 供 Harness 按需翻页与读取分支 / 模型 / 用量元数据 |
| 🤝 多 Agent 协同编排 | 输入 # 唤起目标 Harness,胶囊标签直观管理,主控强约束派发;任意 Harness 都能担任 Agent Team Lead(团队长) |
输入框 # 菜单;支持循环审查验证、子任务级联取消与超时熔断 |
| 🔍 原生子代理面板 | 各 Harness 自行派生的原生子代理(子智能体)在 Codex 内联展示为子代理卡片,标题、任务、状态与产出实时投影 | 16/18 个 Harness 已接通(Trae、Kiro CLI 暂未接入);协议直读与会话文件扫描双通道 |
| 🧩 原生 Skills 管理 | 全量覆盖 18 个 Harness 原生技能目录,会话启动自动预建根目录 | 设置 → Skills;支持单个 SKILL.md 或完整文件夹直接拖拽安装 |
| 🛠️ 原生 MCP 扩展 | 支持本地 stdio 与远程 Streamable HTTP / SSE 协议 | 设置 → MCP;支持自定义 Header 传递,按 Harness 独立生效 |
| 📋 原生消息队列 | 完整接入 Codex 会话排队机制(增删改查、排序、插队抢占与自动排空) | 原生 Composer 队列;当前回合完成后自动顺序调度执行排队消息 |
| ✅ 可配置验证门禁 | 任务级 off / advisory / required 策略,内置一致性检查与自定义验证命令 | 命令面板 /gate、/verify;强制模式保护隔离分支合并与推送 |
| 💾 会话存储治理 | schema v3 分片惰性加载、无损紧凑存储、迁移备份与体积诊断 | 冷启动只读任务索引;打开任务时才恢复对应 Core checkpoint |
| 📊 用量中心 | 近 90 天跨 Harness 用量历史:按日/Harness/模型聚合 token、花费与上报次数 | 设置 → 用量;纯增量累计(基线去重),凭据与额度仍归各 Harness |
| 🩺 健康中心 | 宿主运行时状态、全部 Harness 握手结果与一键重探、崩溃报告列表 | 设置 → 健康;只读快照 + 手动刷新,不触碰任何凭据 |
| 🧑🤝🧑 团队模板 | 预置 Agent Team 成员编成:每个成员自定义 Harness 与角色职责,模板持久化;内置 6 套通用编成(缺陷评审 / 功能开发 / 代码评审 / 重构 / 测试加固 / 技术调研),Harness 留空待指定,可删除并随时恢复 | 设置 → 协作管理模板;输入框 # 菜单的「团队」页选模板,剩余文本即团队目标 |
| 🩹 失败分类与恢复 | 失败回合归类为连接 / 登录 / 额度 / 被拒 / 服务异常五类,分类来自原生结构化错误(Codex codexErrorInfo 透传)、状态码或消息特征,无法归类时诚实标注 unknown |
错误状态随任务投影;Renderer 可查 harnessmix/harness/turn-error 获取分类与动作(重试 / 去登录 / 新建会话),login 按钮按 Harness 真实登录能力出现 |
| 🌐 ChatGPT 侧边栏桥接 | 安全脱敏提取当前会话上下文并一键生成结构化草稿 | Web 快捷聊天面板;直通注入 ChatGPT,实现跨工具无缝协作 |
| 👤 账户与用量隔离 | Codex 多账户隔离与即时切换;实时追踪 Token / Credits 用量 | 原生侧边栏与设置面板;各 Harness 凭据、模型与审批原生自理 |
主题资源随项目发布,图片直接使用仓库内的授权素材;应用皮肤只改变视觉层,不改变 Codex 原生交互和 Harness 执行行为。
![]() 🎀 Miku |
![]() 🌌 Genshin Night |
![]() 🌠 Deepspace Star |
![]() 🌊 Wuthering Tide |
💡 设计原则:所有能力严格在 Adapter
manifest中诚实声明,界面按真实能力渲染,不依靠名称猜测。凭据、模型、工具与权限审批始终由原生 Harness 独立掌控。
| Harness | 原生接入协议 | 流式输出 | 思考推理 | 工具审批 | 用户提问 | 会话恢复/Fork | 图片附件 | 原生 Skills | MCP 扩展 | 原生子代理 |
|---|---|---|---|---|---|---|---|---|---|---|
| Antigravity | agy CLI (stream-json / Hook) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Codex | codex app-server --stdio |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Claude Code | @anthropic-ai/claude-agent-sdk |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Pi | pi --mode rpc |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ➖ | ✅ |
| Oh My Pi | omp --mode rpc (pi-family.js) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ➖ | ✅ |
| DeepSeek | 普通 Web Remote / 协作 ACP | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenCode | opencode serve (HTTP / SSE) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Grok | grok agent stdio (_x.ai/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenClaw | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Hermes | hermes acp |
✅ | ✅ | ✅ | ➖ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| CodeBuddy | codebuddy --acp (_codebuddy.ai/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Kiro CLI | kiro-cli acp (_kiro/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ➖ | ✅ | ✅ | ➖ |
| Cursor CLI | cursor-agent acp (cursor/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ➖ | ✅ | ✅ | ✅ |
| Qoder | qoder --acp |
✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| ZCode | zcode.cjs app-server --stdio(ZCode Protocol v1) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ➖ | ✅ |
| Trae | 兼容 ACP 桥接程序 | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ➖ | ✅ | ✅ | ➖ |
| Cline | cline --acp |
✅ | ✅ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Kimi Code | kimi acp |
🟡 | 🟡 | 🟡 | 🟡 | 🟡 / ➖ | 🟡 | ✅ | 🟡 | 🟡 |
注:✅ 为原生支持并已打通;🟡 为 Kimi ACP 已声明或适配但本机账号尚未登录,真实回合待验证;➖ 为上游协议当前未开放或未声明。Kimi Code 0.26.0 握手未声明 Fork。只有本机已安装且握手成功的 Harness 才会进入真实运行。「原生子代理」列指该 Harness 在自己回合里派生的原生子代理(子智能体)能否在 Codex 内以子代理卡片查看:16 个已接通,Trae 与 Kiro CLI 暂未接入;ZCode 需较新版本(旧版无 session/subagents 方法时自动降级为不可见,不影响回合)。详见 原生 ACP 深度适配 与 Harness 管理说明。
以下能力位同样来自各 Adapter manifest 的诚实声明(native-ACP 家族为基础声明叠加各家覆盖),界面按真实声明渲染:
| Harness | 计划模式 | 原生实时 Diff | 上下文压缩 | 用量上报 | 上下文余量 | 模型目录 | 思考档 | 权限档 | 消息级 Fork |
|---|---|---|---|---|---|---|---|---|---|
| Antigravity | ➖ | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Codex | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Claude Code | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pi | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Oh My Pi | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DeepSeek | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ |
| OpenCode | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Grok | ➖ | ➖ | ✅ | ✅ | ➖ | ✅ | ✅ | ➖ | ➖ |
| OpenClaw | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ➖ |
| Hermes | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ➖ | ➖ | ➖ |
| CodeBuddy | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ |
| Kiro CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ➖ |
| Cursor CLI | ✅ | ✅ | ➖ | ➖ | ➖ | ✅ | ➖ | ✅ | ➖ |
| Qoder | ✅ | ✅ | ➖ | ➖ | ➖ | ✅ | ✅ | ✅ | ➖ |
| ZCode | ✅ | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ |
| Trae | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ➖ | ✅ | ➖ |
| Cline | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ➖ | ✅ | ➖ |
| Kimi Code | 🟡 | 🟡 | 🟡 | ➖ | ➖ | 🟡 | 🟡 | 🟡 | ➖ |
注:计划模式(plan)为会话级计划档切换;原生实时 Diff(nativeDiff)为回合中的实时改动流,未声明者仍有 Host 统一的最终快照 Diff;上下文压缩(compaction)对应 /compact 类原生命令;用量上报(usage)决定进入「用量中心」90 天聚合,上下文余量(contextUsage)决定会话余量条;模型目录 / 思考档 / 权限档(models / thinkingLevels / permissionModes)支持运行中切换(setModel / setThinkingLevel / setPermissionMode);消息级 Fork(forkFromMessage)比主矩阵的会话级 Fork 粒度更细。Claude Code 的计划档包含在其原生权限档目录(plan 档)中,故未单列;DeepSeek 在协作 ACP 形态下降级,不提供 Fork、上下文压缩与权限档;Kimi Code 整行与其主矩阵一致,待真实回合验证。
一个 Harness 负责深入分析,另一个编写具体实现,再切回原 Harness 交叉复核——整个过程无缝保留在同一个 Codex Desktop 原生窗口中:
- 现场完整保留:保留对话历史、未提交代码改动、Git 状态与 Review 记录。
- 持久化检查点:创建带哈希的接力快照,自动脱敏测试证据与敏感密钥,支持随时暂停与恢复。
- 独立会话恢复:每个 Harness 的原生 Session 与参数独立保存,切回时调用其原生恢复机制(如 Pi
--session或 Clauderesume)。 - 四种接力方式:支持「继续执行」、「执行上一方案」、「独立审查」与「重新分析」。
- 触发符解耦:在原生输入框输入
#调出协同菜单(#pi、#claude、#codex、#dsh),完全保留官方@菜单给 Codex 原生功能。 - 标签可视化:已选协同 Agent 在输入框顶部呈现为胶囊标签,支持点击快速删除或 Backspace 撤销。
- 严谨编排约束:自动为主控 Coordinator 注入硬约束,严禁越界派发给未指定的 Harness;完善级联取消与子任务超时熔断机制。
- 真正的 Agent Team:一个 Lead 可组织最多六个并发的具名 Harness 成员;Team、职责、共享任务依赖图和成员邮箱均由 Host 持久化,teammate 可直接定向通信、交接和反馈,而不是只把并行结果返回 Lead。
- Agent Team Lead(任意 Harness 领队):领队不再要求 MCP 协作工具——受管技能
agentteam与协作 CLI 前端(collaboration-cli.cjs,长文本走 stdin)让任何能执行 shell 命令的 Harness 都能建队并管理 Agent Team(成员编成、共享任务图、成员邮箱、编排脚本);CLI 与 MCP 双前端长期共存,服务端白名单、配额与回合校验自动继承。见 CLI 协作前端设计。 - 独立开关:「设置 → 协作」中「多 Agent 协作」与「Agent Team」是两个独立开关(默认均开启);关闭协作即同时停用团队,关闭团队则保留一次性委派。
- 原生 Team Workbench:对话顶部团队驾驶舱点击「展开详情」后在 Codex 内容流内显示唯一主导者、各成员职责、独立任务列、进度、通信流和事件回放,不覆盖原生侧栏、消息或输入框;成员卡片可跳转其原生子任务。状态直接向 Host 实时刷新,各成员仍使用自己的原生 Harness Session、模型、工具、权限和账户。
- 统一 Workspace 能力:全部 Harness 由 Host 统一获得 Git 探测、Worktree 隔离和最终快照 Diff;原生实时 Diff 继续按各 Harness 实际协议叠加。显式隔离失败不会降级到共享目录。
一个 Lead 组织最多六个具名 Harness 成员组成长期团队:Team、角色职责、共享任务依赖图与成员邮箱全部由 Host 持久化,成员各自使用自己的原生会话、模型与权限工作,又能定向通信与交接。对话顶部的团队驾驶舱点击「展开详情」后,在 Codex 内容流内打开原生 Team Workbench:唯一 Lead、成员卡与任务泳道、团队动态、通信流和事件回放一屏尽览。看板是可操作的——任务卡支持「取消 / 重试 / 改派」,成员卡支持「追问」;「中断团队」级联取消成员回合并保留可恢复委派,有界收尾握手把成员自述的进度(已完成 / 进行中 / 阻塞 / 下一步)落进任务图与 Lead 邮箱,「继续协作」一键恢复。编队可来自团队模板(# 菜单「团队」页)或受管技能 agentteam,任意能执行 shell 命令的 Harness 都能当 Lead。
各 Harness 在自己回合里派生的原生子代理——如 Claude Code 的 Task 子代理、OpenCode 的 agent 会话、Kimi Code / CodeBuddy 的子智能体——会被投影成 Codex 内容流中的子代理卡片,标题、任务、运行状态与产出一目了然,无需切回各原生客户端。接通方式分两类:协议直读(Claude Code、Codex、OpenCode、ZCode、Pi / Oh My Pi、Hermes)与原生会话文件扫描(Kimi Code、CodeBuddy、Qoder、Cursor CLI、Cline、Grok、DeepSeek、Antigravity、OpenClaw);Trae 与 Kiro CLI 暂未接入,ZCode 需较新版本。子代理始终由各 Harness 原生派生和管理,Harness Mix 只做只读投影;官方 Codex 线程不经 Host,其子代理展示仍由 Codex 原生承担。
- 18 平台免配置预建:打开会话时自动预建全部 18 个 Harness 声明的原生 Skills 根目录,新安装 Harness 也能即开即用。
- 拖拽安装:在「设置 → Skills」中可将单个
SKILL.md或完整技能文件夹直接拖拽安装,自带安全路径校验。 - 作用域与安全停用:支持 Global(全局)与 Project(项目级)无缝切换;停用时安全移入保留目录,绝不损坏用户源文件。
- 远程 MCP 支持:支持配置带自定义 Headers 的 Streamable HTTP / SSE 远程服务。
- 主题预览与切换:设置 → 皮肤中可预览并应用内置主题,也可随时恢复原生 Codex 外观。
- 全界面覆盖:背景、侧边栏、消息卡片、输入框、按钮和文字颜色统一使用主题令牌。
- 暗色可读性:自动增加遮罩和对比度,避免侧边栏、任务列表和消息内容在深色背景上消失。
- 交互零侵入:不替换 Codex 控件,不修改模型、工具、权限、队列或原生会话。
开发环境需要 Windows、macOS 或 Linux,近期 Node.js LTS 和 npm。应用不会读取或保存 Harness 的账户密钥,请先在对应的原生 CLI 中完成安装与登录;平台前提和真机验收范围见 跨平台指南。
git clone https://github.com/emo-xiaoyu/harness-mix.git
cd harness-mix
npm installHarness Mix 发布为 @harness-mix/cli npm 包,命令名仍是 harness-mix。当前发布包包含本次构建平台的 native Shim;macOS/Linux 请在目标系统执行源码构建,完整说明见 跨平台指南。
npm install --global @harness-mix/cli
harness-mix升级到最新版本:
npm update --global @harness-mix/cli首次运行会重启已打开的 Codex Desktop。npm 包只分发 Harness Mix 本身;各 Harness 的 CLI、登录状态、模型额度和权限仍需按下表在本机单独安装和配置。
原生模式(默认):Desktop 使用官方 Codex CLI;Renderer 扩展把明确选择的其他 Harness 路由到独立 Host。首次启动会重启已打开的 Codex Desktop:
npm start运行期间 Desktop controller 和 Harness Mix sidecar Host 保持常驻。默认 Codex 使用 Desktop 自己的官方 app-server;只有查询官方账号或会话分组等 Host 内部信息时,sidecar 才临时启动另一官方 app-server,普通查询空闲约 15 秒后关闭。启动命令本身也会等待 controller 退出;进程总数还包括 Codex Desktop 自己的进程。
常用原生依赖:
- Codex:安装
@openai/codex,确保codex命令可用。 - Pi:确保
pi.cmd可用。 - Claude Code:SDK 已由 npm 依赖安装,认证仍由 Claude Code 环境管理。
- Antigravity:安装 Antigravity 桌面版并完成登录;内核探测其自带的
agyCLI(Windows 默认%LOCALAPPDATA%\agy\bin\agy.exe,加入 PATH 后任意位置可用)。 - OpenCode:安装
opencodeCLI 并完成登录;内核以opencode serve的原生 HTTP/SSE 接入。 - Grok:安装
grokCLI 并完成登录;内核以grok agent stdio接入,可用HARNESS_MIX_GROK_EXECUTABLE指定路径。 - OpenClaw:安装
openclaw并完成登录(配置位于~/.openclaw/openclaw.json);内核优先连接已运行的 Gateway(每机一个),未运行才拉起本地openclaw gateway。 - Hermes:安装
hermes(Windows 上为 uv/pip 生成的hermes.exe启动器);可用HARNESS_MIX_HERMES_EXECUTABLE覆盖路径,内核以hermes acp接入。 - DeepSeek Harness:使用本项目锁定的
@deepseek-ai/dsh@0.1.2-rc.1。可通过HARNESS_MIX_DSH_ROOT显式指定源码目录,但版本必须被内核支持。 - CodeBuddy:安装官方
codebuddyCLI 并完成登录;旧 WorkBuddy 安装也可通过兼容别名继续使用。 - Kiro CLI:安装
kiro-cli,启用acp子命令并完成 CLI 登录。 - Cursor CLI:安装
cursor-agent并完成 CLI 登录。 - Cline:安装
cline(npm i -g cline)并通过cline auth完成登录;Harness Mix 以官方cline --acp接入。 - Kimi Code:安装官方
kimiCLI,运行kimi login完成原生登录;Harness Mix 使用kimi acp,可用HARNESS_MIX_KIMI_EXECUTABLE指定 CLI 路径。 - Qoder:安装
qodercli(或qoder)并完成 CLI 登录;ACP 入口由本机版本决定。 - ZCode:安装 ZCode 桌面版并完成登录(自带无头
glm/zcode.cjs),内核直接以zcode.cjs app-server --stdio(ZCode Protocol v1)接入;共享凭据、模型目录与账号声明均由 ZCode 自治。可用HARNESS_MIX_ZCODE_EXECUTABLE覆盖 CLI 路径。多 Agent 协作中 ZCode 可作为派活目标、Agent Team 成员与/delegate对象;#主控角色通过协作 CLI 前端(collaboration-cli.cjs,长文本走 stdin)开放——任意能执行 shell 命令的 Harness 都能当 Lead,见 docs/cli-collaboration-design.md。 - Trae:只有在拥有已验证的 ACP 兼容桥接程序时才配置
HARNESS_MIX_TRAE_EXECUTABLE,项目不会猜测官方入口。
原生接入方式、数据目录和验证说明见 原生 Codex 接入。
npm run check
npm run test:core-all
npm run e2e:native
npm run smoke:native-ui涉及原生 Adapter 时,再执行对应的真实链路:
npm run e2e:pi
npm run e2e:dsh
npm run e2e:claude
npm run e2e:codex部分 E2E 会启动真实 Harness,可能需要本机安装、登录或模型额度。测试生成物写入 output/,不应提交到仓库。
Harness Mix 基于 Apache License 2.0 或 MIT 双许可证发布,可任选其一。第三方组件仍适用各自的许可证;归属信息见 NOTICE。
macOS/Linux source builds and launch adaptation are in place; full desktop acceptance on those systems still has to run on the respective machines. See the Cross-Platform Guide for install options, Linux desktop prerequisites and support boundaries.
⭐ If this project helps you, please give us a Star! ⭐
The Codex native UI, connecting multiple native coding Harnesses with seamless task handoff between them.
Currently registered Harnesses (18)
Antigravity |
Codex |
Claude Code |
Pi |
Oh My Pi |
DeepSeek |
OpenCode |
Grok |
OpenClaw |
Hermes |
Qoder |
CodeBuddy |
Kiro |
Cursor |
ZCode |
Trae |
Cline |
Kimi Code |
Icons and Harness capabilities come from the project's own registry; only Harnesses installed locally with a successful handshake enter real runs.
Harness Mix is a local kernel that plugs into the official Codex Desktop native UI. Default official Codex threads connect directly to the stock app-server. An independent Harness Mix Host handles only explicitly selected Harnesses and Codex (collaboration) threads — and the native subagents each Harness spawns mid-turn appear inline in the Codex content stream as subagent cards, with no need to switch back to each native client. The Host Runtime and Protocol Core manage task mapping, collaboration and event projection for those managed threads; model calls, tool execution, native sessions and credentials stay owned by each Harness itself.
The preview comes from the current Codex Desktop native window: Harness Mix appears as a native extension entry in the desktop toolbar and the Composer, while sessions, models, tools and permissions remain managed by Codex Desktop and each Harness.
| Module | Core capabilities | Entry points & notes |
|---|---|---|
| 🔄 Cross-Harness Task Handoff | 4 handoff modes (continue / run plan / independent review / re-analyze) with smooth transitions | Composer handoff badge / /switch; persisted redacted checkpoints with evidence traceability |
| 🎨 Skin Marketplace | Built-in HeiGe, Codex Styler, Dream Skin and classic editor-palette themes plus the original "Retro QQ · Millennium Blue" structural skin, with light / dark modes, background decorations and readability protection | Settings → Skins; one-click preview, apply and restore the stock look |
| 📚 History Import & Reference | One-click import of Pi / Claude / Codex / CodeBuddy native history with interruptible resume; # references any past session with redacted context injected |
References prefetch only the latest page; read-only MCP tools get_session_info / list_session_messages let Harnesses page through and read branch / model / usage metadata on demand |
| 🤝 Multi-Agent Orchestration | Type # to summon target Harnesses, manage them as capsule tags, dispatch under strong coordinator constraints; any Harness can serve as the Agent Team Lead |
Composer # menu; loop review and verification, cascading subtask cancellation and timeout circuit breaking |
| 🔍 Native Subagent Panel | Subagents (sub-agents) spawned by each Harness's own turn are rendered inline in Codex as subagent cards with live title, task, status and output | Wired for 16 of 18 Harnesses (Trae and Kiro CLI not yet); dual channels — protocol streaming and native session-file scanning |
| 🧩 Native Skills Management | Covers the native skill directories of all 18 Harnesses, with root directories pre-created at session start | Settings → Skills; drag-and-drop install of a single SKILL.md or a complete folder |
| 🛠️ Native MCP Extensions | Local stdio and remote Streamable HTTP / SSE transports | Settings → MCP; custom headers supported, applied per Harness |
| 📋 Native Message Queue | Full integration of the Codex session queue (add / remove / edit, reorder, preempt and auto-drain) | Native Composer queue; queued messages are scheduled sequentially once the current turn completes |
| ✅ Configurable Verification Gates | Per-task off / advisory / required policies, built-in consistency checks and custom verification commands | Command palette /gate, /verify; required mode protects isolated branch merges and pushes |
| 💾 Session Storage Governance | schema v3 sharded lazy loading, lossless compact storage, migration backups and size diagnostics | Cold start reads only the task index; a task's Core checkpoint is restored only when it is opened |
| 📊 Usage Center | Last-90-day cross-Harness usage history: tokens, spend and report counts aggregated per day/Harness/model | Settings → Usage; positive-delta accounting only, credentials and quotas stay with each Harness |
| 🩺 Health Center | Host runtime status, every Harness handshake result with one-click re-probe, and the latest crash reports | Settings → Health; read-only snapshot plus manual refresh, never touching credentials |
| 🧑🤝🧑 Team Templates | Persistent Agent Team rosters with a custom Harness and role per member | Settings → Collaboration manages templates; pick one from the # menu's Team tab, and the rest of the message becomes the goal |
| 🩹 Failure Classification & Recovery | Failed turns are classified as connection / login / quota / rejected / service fault, derived from native structured errors (Codex codexErrorInfo passthrough), status codes or message patterns, and honestly marked unknown when nothing matches |
Error state follows the task projection; the Renderer can query harnessmix/harness/turn-error for the classification and actions (retry / go sign in / new session), and the login button only appears when the Harness truly supports it |
| 🌐 ChatGPT Sidebar Bridge | Safely redacts and extracts the current session context and generates a structured draft in one click | Web quick-chat panel; injected straight into ChatGPT for seamless cross-tool collaboration |
| 👤 Account & Usage Isolation | Codex multi-account isolation with instant switching; real-time Token / Credits tracking | Native sidebar and settings panel; each Harness manages its own credentials, models and approvals |
Theme assets ship with the project and the images use licensed material from this repository; applying a skin only changes the visual layer, never Codex's native interactions or Harness execution behavior.
![]() 🎀 Miku |
![]() 🌌 Genshin Night |
![]() 🌠 Deepspace Star |
![]() 🌊 Wuthering Tide |
💡 Design principle: every capability is honestly declared in the Adapter
manifest, and the UI renders from real capabilities instead of guessing from names. Credentials, models, tools and permission approvals always remain under each native Harness's own control.
| Harness | Native protocol | Streaming | Reasoning | Tool approval | User questions | Resume / Fork | Image attachments | Native Skills | MCP | Native subagents |
|---|---|---|---|---|---|---|---|---|---|---|
| Antigravity | agy CLI (stream-json / Hook) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Codex | codex app-server --stdio |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Claude Code | @anthropic-ai/claude-agent-sdk |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Pi | pi --mode rpc |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ➖ | ✅ |
| Oh My Pi | omp --mode rpc (pi-family.js) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ➖ | ✅ |
| DeepSeek | Plain Web Remote / collaboration ACP | ✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenCode | opencode serve (HTTP / SSE) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| Grok | grok agent stdio (_x.ai/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenClaw | Gateway WebSocket Loopback | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Hermes | hermes acp |
✅ | ✅ | ✅ | ➖ | ✅ / ✅ | ✅ | ✅ | ✅ | ✅ |
| CodeBuddy | codebuddy --acp (_codebuddy.ai/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Kiro CLI | kiro-cli acp (_kiro/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ✅ | ➖ | ✅ | ✅ | ➖ |
| Cursor CLI | cursor-agent acp (cursor/*) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ➖ | ✅ | ✅ | ✅ |
| Qoder | qoder --acp |
✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| ZCode | zcode.cjs app-server --stdio (ZCode Protocol v1) |
✅ | ✅ | ✅ | ✅ | ✅ / ➖ | ✅ | ✅ | ➖ | ✅ |
| Trae | Compatible ACP bridge | ✅ | ➖ | ✅ | ➖ | ✅ / ➖ | ➖ | ✅ | ✅ | ➖ |
| Cline | cline --acp |
✅ | ✅ | ✅ | ➖ | ✅ / ➖ | ✅ | ✅ | ✅ | ✅ |
| Kimi Code | kimi acp |
🟡 | 🟡 | 🟡 | 🟡 | 🟡 / ➖ | 🟡 | ✅ | 🟡 | 🟡 |
Note: ✅ means natively supported and verified; 🟡 means the Kimi ACP capability is advertised or wired but a live turn awaits native login; ➖ means the upstream protocol does not expose or declare it. Kimi Code 0.26.0 does not advertise Fork. Only Harnesses installed locally with a successful handshake enter real runs. The "Native subagents" column marks whether subagents spawned inside a Harness's own turn are visible in Codex as subagent cards: 16 are wired, Trae and Kiro CLI are not yet; ZCode needs a recent build (older builds without the session/subagents method degrade silently without affecting the turn). See Native ACP Deep Integration and Harness Management for details.
The capability bits below are likewise honestly declared in each Adapter's manifest (the native-ACP family composes base declarations with per-vendor overrides), and the UI renders from the real declarations:
| Harness | Plan mode | Native live diff | Compaction | Usage reporting | Context bar | Model catalog | Thinking levels | Permission modes | Fork from message |
|---|---|---|---|---|---|---|---|---|---|
| Antigravity | ➖ | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Codex | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Claude Code | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pi | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Oh My Pi | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| DeepSeek | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ✅ |
| OpenCode | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Grok | ➖ | ➖ | ✅ | ✅ | ➖ | ✅ | ✅ | ➖ | ➖ |
| OpenClaw | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ➖ |
| Hermes | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ➖ | ➖ | ➖ |
| CodeBuddy | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ |
| Kiro CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | ➖ |
| Cursor CLI | ✅ | ✅ | ➖ | ➖ | ➖ | ✅ | ➖ | ✅ | ➖ |
| Qoder | ✅ | ✅ | ➖ | ➖ | ➖ | ✅ | ✅ | ✅ | ➖ |
| ZCode | ✅ | ➖ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ |
| Trae | ✅ | ✅ | ➖ | ✅ | ✅ | ✅ | ➖ | ✅ | ➖ |
| Cline | ➖ | ➖ | ➖ | ➖ | ➖ | ✅ | ➖ | ✅ | ➖ |
| Kimi Code | 🟡 | 🟡 | 🟡 | ➖ | ➖ | 🟡 | 🟡 | 🟡 | ➖ |
Note: plan mode is a session-level plan switch; native live diff streams changes during a turn (Harnesses without it still get the Host's uniform final snapshot diff); compaction maps to /compact-style native commands; usage reporting feeds the Usage Center's 90-day aggregation and context usage drives the session context bar; model catalog / thinking levels / permission modes support in-session switching (setModel / setThinkingLevel / setPermissionMode); fork-from-message is finer-grained than the session-level Fork in the main matrix. Claude Code's plan mode lives in its native permission-mode catalog (the plan mode), so it is not listed separately; DeepSeek degrades in its collaboration-ACP form (no Fork, compaction or permission modes); the Kimi Code row follows its main-matrix status, pending real-turn verification.
One Harness analyzes in depth, another writes the implementation, then you switch back to the original Harness for cross-review — all seamlessly within the same Codex Desktop native window:
- Context fully preserved: conversation history, uncommitted code changes, Git status and review records all carry over.
- Persisted checkpoints: hashed handoff snapshots with automatic redaction of test evidence and sensitive keys, pausable and resumable at any time.
- Independent session resume: each Harness's native session and parameters are stored separately, and switching back invokes its native resume mechanism (e.g. Pi
--sessionor Clauderesume). - Four handoff modes: "Continue", "Run the previous plan", "Independent review" and "Re-analyze".
- Decoupled trigger: type
#in the native composer to open the collaboration menu (#pi,#claude,#codex,#dsh); the official@menu stays fully reserved for Codex native features. - Tag visualization: selected collaborating Agents appear as capsule tags above the composer, with click-to-remove and Backspace-to-undo.
- Strict orchestration constraints: the coordinator is automatically injected with hard constraints that forbid dispatching to unspecified Harnesses; cascading cancellation and subtask timeout circuit breaking are built in.
- Real Agent Teams: one Lead can organize up to six concurrent named Harness members; the Team, roles, shared task dependency graph and member mailboxes are all persisted by the Host, so teammates communicate, hand off and report directly instead of only returning parallel results to the Lead.
- Agent Team Lead (any Harness can lead): leading no longer requires MCP collaboration tools — the managed
agentteamskill and the collaboration CLI frontend (collaboration-cli.cjs, long texts over stdin) let any Harness that can run a shell command create and manage an Agent Team (rosters, the shared task graph, member mailboxes, orchestration scripts); the CLI and MCP frontends coexist long-term, and server-side whitelist, quota and turn checks apply to both. See the CLI Collaboration Frontend design. - Independent switches: Settings → Collaboration offers separate toggles for Multi-Agent Collaboration and Agent Team (both on by default); disabling collaboration also disables teams, while disabling teams keeps one-shot delegation available.
- Native Team Workbench: expanding the details of the team cockpit at the top of a conversation shows the single lead, member roles, per-member task lanes, progress, message flow and event replay inside the Codex content stream — without covering the native sidebar, messages or composer. Member cards jump to their native subtasks. State refreshes live from the Host, and members keep using their own native Harness sessions, models, tools, permissions and accounts.
- Unified workspace capabilities: every Harness uniformly gets Host-owned Git detection, worktree isolation and a final snapshot diff; native live diffs continue to layer on top according to each Harness's real protocol. An explicit isolation failure never degrades to a shared directory.
One Lead organizes up to six named Harness members into a durable team: the Team, roles, shared task dependency graph and member mailboxes are all persisted by the Host, while members keep working in their own native sessions, models and permissions and still communicate and hand off directly. Expanding the team cockpit at the top of a conversation opens the native Team Workbench inside the Codex content stream: the single Lead, member cards with task lanes, team activity, message flow and event replay in one view. The board is actionable — task cards support cancel / retry / reassign, member cards support follow-up questions; "Interrupt team" cascades cancellation across member turns while keeping delegations resumable, a bounded wrap-up handshake files each member's self-reported progress (done / in progress / blocked / next) into the task graph and the Lead's mailbox, and "Continue collaboration" resumes in one click. Rosters come from team templates (the # menu's Team tab) or the managed agentteam skill, and any Harness that can run a shell command can lead.
Subagents spawned inside each Harness's own turn — Claude Code Task subagents, OpenCode agent sessions, Kimi Code / CodeBuddy subagents and the like — are projected into the Codex content stream as subagent cards showing title, task, live status and output, with no need to switch back to each native client. Two wiring channels are used: protocol streaming (Claude Code, Codex, OpenCode, ZCode, Pi / Oh My Pi, Hermes) and native session-file scanning (Kimi Code, CodeBuddy, Qoder, Cursor CLI, Cline, Grok, DeepSeek, Antigravity, OpenClaw); Trae and Kiro CLI are not wired yet, and ZCode needs a recent build. Subagents stay spawned and managed by each Harness natively — Harness Mix only projects them read-only. Official Codex threads never pass through the Host, so their subagent display remains fully native.
- Zero-config pre-creation across 18 platforms: opening a session pre-creates the native Skills root directories declared by all 18 Harnesses, so even newly installed Harnesses work out of the box.
- Drag-and-drop install: in Settings → Skills, drop a single
SKILL.mdor a complete skill folder to install it, with safe path validation built in. - Scoped and safe disabling: switch seamlessly between Global and Project scopes; disabling moves skills into a retention directory and never damages user source files.
- Remote MCP support: configure Streamable HTTP / SSE remote servers with custom headers.
- Theme preview and switching: preview and apply built-in themes in Settings → Skins, or restore the stock Codex look at any time.
- Full-UI coverage: background, sidebar, message cards, composer, buttons and text colors all follow theme tokens.
- Dark-mode readability: automatic overlays and contrast keep the sidebar, task lists and message content visible on dark backgrounds.
- Zero interaction intrusion: no Codex controls are replaced, and models, tools, permissions, queues and native sessions are never modified.
Development requires Windows, macOS or Linux, a recent Node.js LTS and npm. The app never reads or stores Harness account credentials — install and sign in with each native CLI first; see the Cross-Platform Guide for platform prerequisites and on-device acceptance scope.
git clone https://github.com/emo-xiaoyu/harness-mix.git
cd harness-mix
npm installHarness Mix is published as the @harness-mix/cli npm package, and the command is still harness-mix. The current release bundles the native Shim for the platform that built it; on macOS/Linux, build from source on the target system — full details are in the Cross-Platform Guide.
npm install --global @harness-mix/cli
harness-mixUpgrade to the latest version:
npm update --global @harness-mix/cliThe first run restarts an already-open Codex Desktop. The npm package distributes Harness Mix itself only; each Harness's CLI, login state, model quota and permissions still need to be installed and configured locally as listed below.
Prefer double-click setup? GitHub Releases carry per-platform installers (harness-mix-<version>-windows-x64.exe, harness-mix-<version>-macos-arm64.dmg, …). They bundle a private Node runtime — no Node.js or npm prerequisite — install per-user, and update by running the newer installer over the old one. See the Installer Guide for contents, signing caveats and local builds.
Native mode (default): Desktop uses the stock Codex CLI, while the Renderer extension routes explicitly selected Harnesses to a separate Host. The first launch restarts an already-open Codex Desktop:
npm startThe Desktop controller and Harness Mix sidecar Host remain running. Default Codex uses Desktop's own stock app-server. The sidecar starts another stock app-server only for internal queries such as official account or thread section data, then closes it about 15 seconds after an ordinary query becomes idle. The launch command also waits for the controller to exit; the total process count includes Codex Desktop's own processes.
Common native dependencies:
- Codex: install
@openai/codexand make sure thecodexcommand is available. - Pi: make sure
pi.cmdis available. - Claude Code: the SDK ships as an npm dependency; authentication stays managed by the Claude Code environment.
- Antigravity: install the Antigravity desktop app and sign in; the kernel probes its bundled
agyCLI (Windows default%LOCALAPPDATA%\agy\bin\agy.exe, usable anywhere once on PATH). - OpenCode: install the
opencodeCLI and sign in; the kernel connects throughopencode serveover native HTTP/SSE. - Grok: install the
grokCLI and sign in; the kernel connects throughgrok agent stdio, override the path withHARNESS_MIX_GROK_EXECUTABLE. - OpenClaw: install
openclawand sign in (config lives at~/.openclaw/openclaw.json); the kernel prefers an already-running Gateway (one per machine) and only spawns a localopenclaw gatewaywhen none exists. - Hermes: install
hermes(on Windows, the uv/pip-generatedhermes.exelauncher); override the path withHARNESS_MIX_HERMES_EXECUTABLE; the kernel connects throughhermes acp. - DeepSeek Harness: uses the
@deepseek-ai/dsh@0.1.2-rc.1version locked by this project.HARNESS_MIX_DSH_ROOTmay explicitly point at a source checkout, but the version must be supported by the kernel. - CodeBuddy: install the official
codebuddyCLI and sign in; old WorkBuddy installs keep working through a compatibility alias. - Kiro CLI: install
kiro-cli, enable theacpsubcommand and sign in. - Cursor CLI: install
cursor-agentand sign in. - Cline: install
cline(npm i -g cline) and sign in viacline auth; Harness Mix connects through the officialcline --acp. - Qoder: install
qodercli(orqoder) and sign in; the ACP entry depends on the installed version. - ZCode: install the ZCode desktop app and sign in (it bundles the headless
glm/zcode.cjs); Harness Mix connects viazcode.cjs app-server --stdio(ZCode Protocol v1) while credentials, models and account state stay ZCode-owned. Override the CLI path withHARNESS_MIX_ZCODE_EXECUTABLE. In multi-agent work ZCode serves as a dispatch target, Agent-Team member,/delegatepeer and a#lead via the collaboration CLI frontend (collaboration-cli.cjs, long texts over stdin) — any harness that can run a shell command can lead; see docs/cli-collaboration-design.md. - Trae: only set
HARNESS_MIX_TRAE_EXECUTABLEwhen you have a verified ACP-compatible bridge; the project never guesses official entry points.
See Native Codex Integration for wiring, data directories and verification notes.
npm run check
npm run test:core-all
npm run e2e:native
npm run smoke:native-uiWhen native Adapters are involved, also run the corresponding real chains:
npm run e2e:pi
npm run e2e:dsh
npm run e2e:claude
npm run e2e:codexSome E2E suites launch real Harnesses and may require local installs, sign-in or model quota. Test artifacts are written to output/ and should not be committed.
Harness Mix is dual-licensed under Apache License 2.0 or MIT, at your option. Third-party components remain subject to their own licenses; see NOTICE for attribution.







