Skip to content

Latest commit

 

History

History
336 lines (236 loc) · 31 KB

File metadata and controls

336 lines (236 loc) · 31 KB

CodeMux

English | 简体中文 | 日本語 | 한국어 | Русский

Мульти-движковый AI-клиент для кодинга с полноценным удалённым доступом к агентам.

License: MIT

CodeMux

Мульти-движковый AI-клиент для кодинга — полная визуализация цепочки рассуждений агента и безопасный удалённый доступ без настройки. Это не очередная обёртка над чатом.

CodeMux — Мульти-движковый AI-интерфейс для кодинга

Почему CodeMux?

1. Мульти-движковый, а не мульти-модельный

Это не обёртка над чатом, которая подставляет разные API-ключи. CodeMux — это шлюз на уровне протоколов: каждый движок работает со своим рантаймом, сессиями, выполнением инструментов и полным набором возможностей.

Переключайтесь между движками из единого интерфейса. Каждый сохраняет всю свою мощь — редактирование файлов, доступ к терминалу, историю сессий, контекст проекта — CodeMux лишь предоставляет им общую входную точку.

Движок Протокол Статус
OpenCode HTTP REST + SSE ✅ Стабильный
GitHub Copilot CLI JSON-RPC/stdio ✅ Стабильный
Claude Code SDK (stdio) ✅ Стабильный
Codex JSON-RPC/stdio (app-server) ⚠️ Экспериментальный

💡 CodeMux — это также первый и на данный момент единственный GUI с открытым кодом для GitHub Copilot CLI, подключающийся на уровне протокола (JSON-RPC через stdio) для предоставления полноценного агентного опыта Copilot в визуальном интерфейсе.

⚠️ Поддержка Codex сейчас experimental/unstable. По мере развития upstream app-server protocol детали интеграции и поведение могут меняться.

2. Визуализация цепочки рассуждений агента

Каждое действие агента отображается как раскрываемый шаг — diff файлов, команды терминала, результаты поиска, вызовы инструментов — так что вы видите не только финальный ответ, но и что именно делает агент и почему.

CodeMux — Пошаговая визуализация агента

Это не ограничивается десктопным приложением. Полноценная визуализация цепочки рассуждений сохраняется при любом способе доступа — через браузер по LAN или публичному интернету, или через IM-бота на телефоне.

3. Настоящий удалённый опыт работы с агентом

Такие инструменты, как OpenClaw, популяризировали идею доступа к ИИ из мессенджеров — отправьте сообщение в WhatsApp или Telegram и получите текстовый ответ. Но для AI-разработки текстового ответа недостаточно. Нужно видеть, что агент думает, какие файлы редактирует, какие команды выполняет — в реальном времени.

CodeMux закрывает этот пробел. Независимо от того, заходите ли вы через браузер или IM-платформу, вы получаете полноценный агентный опыт со структурированным стримингом:

Возможность CodeMux Текстовые ассистенты
Потоковый вывод ✅ Стриминг в реальном времени на уровне токенов ⚠️ Полный ответ или разбитый на части текст
Шаги рассуждения ✅ Каждый вызов инструмента — раскрываемый шаг ❌ Только финальный ответ
Diff файлов ✅ Встроенный просмотрщик diff с подсветкой синтаксиса ❌ Простой текст или ничего
Команды терминала ✅ Команда + вывод рендерятся в реальном времени ❌ В лучшем случае текстовая сводка
Мульти-движки ✅ Переключение между OpenCode / Copilot / Claude Code / Codex ❌ Один модель / провайдер
Контекст кодинга ✅ Сессии с привязкой к проекту и полным доступом к инструментам ⚠️ Общий контекст ассистента
Ввод изображений ✅ Вставка/перетаскивание изображений для анализа всеми движками ❌ Только текстовый ввод

4. Мультимодальная поддержка

Текстовые инструменты для кодинга ограничены текстовым вводом. CodeMux преодолевает этот барьер — прикрепляйте изображения к промптам, и пусть ИИ видит то, что видите вы.

Вставьте скриншот, перетащите макет дизайна или загрузите изображение ошибки — все четыре движка анализируют изображения нативно. Каждый адаптер движка преобразует изображения в свой формат за кулисами, а вы получаете единый опыт:

  • Способы загрузки: Выбор файла, перетаскивание, вставка из буфера обмена
  • Поддерживаемые форматы: JPEG, PNG, GIF, WebP (до 4 изображений на сообщение, по 3 МБ)
  • Встроенный предпросмотр: Миниатюры перед отправкой, изображения в истории чата

Это работает при любом способе доступа — десктоп, удалённый браузер, IM-боты — где бы ни работал CodeMux, ввод изображений доступен.

5. Инструменты рабочего процесса разработки

CodeMux выходит за рамки чата — предоставляет интегрированные инструменты для управления рабочим процессом разработки прямо из интерфейса.

  • Запланированные задачи: Автоматизируйте регулярные задачи агентов — ежедневные обзоры кода, генерация отчётов по интервалу, еженедельная пакетная обработка задач. Поддерживаются ручной запуск, интервал (5 мин – 12 часов), ежедневное и еженедельное расписание с автоматическим выполнением пропущенных запусков при перезапуске приложения.

CodeMux - Запланированные задачи

  • Параллельные сессии Git Worktree: Работайте над несколькими ветками одновременно без git stash. Создавайте изолированные рабочие деревья прямо из боковой панели, каждое со своим каталогом, веткой и AI-сессиями. Слияние обратно с выбором стратегии: merge, squash или rebase — не покидая интерфейса.

  • Проводник файлов и мониторинг Git: Просматривайте файлы проекта в сворачиваемом дереве, предпросмотр кода с подсветкой синтаксиса и отслеживание изменений Git в реальном времени. Вкладка «Изменения» показывает модифицированные файлы с построчными счётчиками добавлений/удалений, а встроенный просмотрщик diff позволяет проверять каждое изменение, не покидая CodeMux.

CodeMux - Проводник файлов

  • Слеш-команды и навыки движков: Введите / в поле ввода для вызова нативных команд и навыков движков с автодополнением — /cancel, /status, /mode, /model и другие. Каждый движок предоставляет собственные команды; Copilot — навыки проекта и персональные, Claude Code — пользовательские навыки, OpenCode — команды SDK, а Codex — навыки app-server — всё через единый интерфейс автодополнения.

  • Встроенный терминал: Прямо под чатом располагается терминал в стиле VS Code — переключается по Ctrl+`. Открывайте несколько вкладок с настоящими шеллами (автоопределение PowerShell / pwsh / cmd / Git Bash / WSL в Windows; $SHELL и /etc/shells в Unix; плюс пользовательские профили), с оверлеем поиска (Ctrl+F), кликабельными путями к файлам (открываются во встроенной файловой панели CodeMux) и выбираемым GPU-рендерингом (WebGL → Canvas → DOM). Поскольку терминал передаётся через тот же Gateway WebSocket, он работает и удалённо — по локальной сети или через Cloudflare Tunnel — а не только на локальном рабочем столе.

CodeMux - Встроенный терминал

Дополнительные возможности

  • Переключение режимов агента: Переключайтесь между режимами Build / Plan / Autopilot для каждого движка — каждый со своим поведением и стилем промптов
  • Панель задач в реальном времени: Списки задач, сгенерированные агентом, отображаются над областью ввода с отслеживанием прогресса в реальном времени
  • Одобрение разрешений: Одобряйте или отклоняйте чувствительные операции (терминал, редактирование файлов) прямо в интерфейсе — с опцией «Всегда разрешать» для доверенных шаблонов
  • Интерактивные вопросы: Движки могут задавать вопросы с единичным/множественным выбором, описаниями и пользовательским вводом
  • Выбор модели для каждого движка: Выбирайте разные модели для каждого движка независимо; Claude Code и Codex поддерживают ввод произвольного ID модели
  • Отслеживание использования токенов: Мониторинг потребления входных, выходных и кеш-токенов с разбивкой затрат по движкам

Удалённый доступ через браузер

Получите доступ к своим агентам кодинга с любого устройства — телефона, планшета или другого компьютера — без единого изменения конфигурации.

  • LAN: Автоматически определённый IP + QR-код, готово за секунды
  • Публичный интернет: Одним кликом Cloudflare Tunnel — без проброса портов, VPN и изменений файрвола. Поддерживаются как быстрые туннели (случайный временный URL, без настройки), так и именованные туннели (постоянный пользовательский домен через учётные данные ~/.cloudflared/)
  • Встроенная безопасность: Авторизация устройств, JWT-токены, HTTPS через Cloudflare; URL быстрых туннелей меняются при пересоздании самого туннеля, а именованные туннели сохраняют ваш домен

Каналы IM-ботов

Используйте своих AI-агентов для кодинга прямо из любимых мессенджеров с потоковым выводом в реальном времени и структурированным rich-контентом — а не просто текстовыми ответами.

Поддерживаемые платформы
Платформа Получение событий Стриминг Создание групп Rich-контент
Feishu (Lark) WebSocket (длинное соединение) ✅ Редактирование на месте ✅ Автосоздание группы Интерактивные карточки
DingTalk Stream-режим (WS) ✅ AI-карточка ✅ Сценарные группы ActionCard / Markdown
Telegram Webhook / Long Polling ✅ sendMessageDraft ❌ Только P2P MarkdownV2 + InlineKeyboard
WeCom HTTP Callback (AES XML) ❌ Пакетный режим ✅ Групповой чат приложения Markdown / Шаблонная карточка
Microsoft Teams Bot Framework HTTP ✅ Редактирование на месте ❌ Только P2P Adaptive Cards v1.5
Общие возможности
  • P2P точка входа: Личный чат с ботом для выбора проектов и сессий
  • Slash-команды: /cancel, /status, /mode, /model, /history, /help
  • Потоковые ответы: Вывод ИИ в реальном времени с платформенно-оптимальной стратегией обновления
  • Сводка по инструментам: Сообщения о завершении включают счётчики действий (например, Shell(2), Edit(1))
  • Автоодобрение разрешений: Запросы разрешений движка одобряются автоматически
Модели сессий
  • Одна группа = одна сессия (Feishu, DingTalk, WeCom): Каждый групповой чат привязан к одной сессии CodeMux. В P2P выбираете проект → группа создаётся автоматически.
  • P2P напрямую (Telegram, Teams): Общайтесь напрямую в личном чате с временными сессиями (TTL 2 часа). В групповых чатах — через @упоминание бота.
Настройка

Для каждой платформы нужно создать бота/приложение на её портале разработчиков и настроить учётные данные в Настройках CodeMux → Каналы.

📖 Подробное руководство по настройке → — Пошаговые инструкции для каждой платформы, включая разрешения, настройку webhook и устранение неполадок.

Платформа Необходимые учётные данные Портал разработчиков
Feishu App ID, App Secret open.feishu.cn
DingTalk App Key, App Secret, Robot Code open.dingtalk.com
Telegram Bot Token (от @BotFather) core.telegram.org
WeCom Corp ID, Corp Secret, Agent ID, Callback Token, Encoding AES Key developer.work.weixin.qq.com
Teams Microsoft App ID, App Password, Tenant ID Azure Portal + Teams Dev Portal

Быстрый старт

Вариант 1: Десктопное приложение

macOS (рекомендуется — через Homebrew):

brew tap realDuang/codemux
brew install --cask codemux

Ручная загрузка:

  • macOS (Apple Silicon): CodeMux-x.x.x-arm64.dmg
  • macOS (Intel): CodeMux-x.x.x-x64.dmg
  • Windows: CodeMux-x.x.x-setup.exe

Десктопное приложение включает бинарник Cloudflare Tunnel и сервер шлюза. OpenCode, Copilot CLI, Claude Code и Codex необходимо устанавливать отдельно (см. ниже).

⚠️ Пользователи macOS (ручная загрузка): Приложение не имеет подписи кода. Если macOS показывает «Приложение повреждено», выполните:

xattr -cr /Applications/CodeMux.app

Вариант 2: Режим разработки

# Клонируйте репозиторий
git clone https://github.com/realDuang/codemux.git
cd codemux

# Установите зависимости
bun install

# Скачайте бинарник cloudflared (для удалённого доступа)
bun run update:cloudflared

# Запустите сервер разработки (Electron + Vite HMR)
bun run dev

Требования к движкам: Все движки — это внешние зависимости, которые нужно установить и добавить в PATH:

  • OpenCode: Установите с opencode.aicurl -fsSL https://opencode.ai/install.sh | bash (Unix) или irm https://opencode.ai/install.ps1 | iex (Windows)
  • Copilot CLI: Установите GitHub Copilot CLI отдельно
  • Claude Code: Установите через npm install -g @anthropic-ai/claude-code и задайте ANTHROPIC_API_KEY
  • Codex: Установите codex CLI отдельно и убедитесь, что codex доступен в PATH. CodeMux переиспользует уже настроенный вход OpenAI или API-ключ Codex. Сейчас это experimental/unstable интеграция.

CodeMux автоматически обнаруживает установленные движки при запуске.


Удалённый доступ и каналы

Способы подключения

Способ Настройка Подходит для
Браузер в LAN Откройте http://<ваш-ip>:8233, введите 6-значный код или отсканируйте QR Быстрый доступ с другого устройства в той же сети
Публичный интернет Включите «Публичный доступ» → поделитесь URL *.trycloudflare.com Доступ откуда угодно, без проброса портов
IM-бот Настройте учётные данные бота в Настройках → Каналы Взаимодействие из Feishu, DingTalk, Telegram, WeCom или Teams

Безопасность и управление устройствами

Уровень Защита
Авторизация устройств Новые устройства требуют одобрения с 6-значным кодом
JWT-токены Токены для каждого устройства хранятся безопасно
HTTPS Публичный туннель автоматически использует HTTPS через Cloudflare
Временные URL URL туннеля меняются при каждом перезапуске

Управляйте подключёнными устройствами на странице Устройства — просматривайте время последнего доступа, переименовывайте для идентификации или отзывайте доступ для каждого устройства.

CodeMux предназначен для личного использования. Отзывайте доступ неиспользуемых устройств и отключайте публичный туннель, когда он не нужен.


Архитектура

┌─────────────────────────────────────────────────────────────────┐
                       Уровень доступа                           
                                                                 
  ┌──────────┐  ┌───────────────┐  ┌──────────────────────────┐  
   Electron    Браузер (LAN/    IM-боты (Feishu/DingTalk   
     приложе-   Cloudflare)      /Telegram/WeCom/Teams)     
     ние                                                   
  └────┬─────┘  └──────┬────────┘  └────────────┬─────────────┘  
                                                              
       └───────────────┼────────────────────────┘                
                                                                
              WebSocket (JSON-RPC)                               
                                                                
              ┌────────┴────────┐                                
                Сервер шлюза                                   
               (Engine Manager)                                
              └──┬──────┬──────┬─────┬┘                            
                                                               
           ┌─────┘   ┌──┘   ┌──┘   └──┐                            
                                                               
     ┌─────┴─────┐ ┌─┴──────┐ ┌┴───────┐ ┌─────────┐               
      OpenCode   │Copilot   Claude    Codex                 
      Adapter    │Adapter  │Adapter   Adapter                
     (HTTP+SSE)  (stdio)   (SDK)    (stdio)                
     └───────────┘ └────────┘ └────────┘ └─────────┘               
                                                                 
  Унифицированная система типов: UnifiedPart, ToolPart, AgentMode│
└─────────────────────────────────────────────────────────────────┘

Все способы доступа — десктопное приложение, удалённый браузер и IM-боты — подключаются через один и тот же WebSocket-шлюз. Движки используют нормализованную систему типов, поэтому вызовы инструментов, diff файлов и потоковые сообщения отображаются идентично независимо от используемого движка или способа доступа.


Разработка

Команды

bun run dev              # Electron + Vite HMR
bun run build            # Продакшен-сборка
bun run dist:mac:arm64   # macOS Apple Silicon
bun run dist:mac:x64     # macOS Intel
bun run dist:win         # Windows NSIS-установщик
bun run typecheck        # Проверка типов
bun run update:cloudflared  # Обновить бинарник Cloudflare Tunnel

Структура проекта

codemux/
├── electron/
   ├── main/
      ├── engines/          # Адаптеры движков (OpenCode, Copilot, Claude Code, Codex)
      ├── gateway/          # WebSocket-сервер + маршрутизация движков
      ├── channels/         # Каналы IM-ботов (Feishu, DingTalk, Telegram, WeCom, Teams)
         └── streaming/    # Кросс-канальная стриминговая инфраструктура
      ├── services/         # Авторизация, хранилище устройств, туннель, сессии, файловый сервис, трей и др.
      └── utils/            # Общие утилиты (генерация ID и др.)
   └── preload/
├── src/                      # SolidJS рендерер
   ├── pages/                # Chat, Settings, Devices, Entry
   ├── components/           # UI-компоненты + рендереры контента
   ├── stores/               # Реактивное состояние (session, message, config)
   ├── lib/                  # Gateway-клиент, авторизация, i18n, тема
   ├── locales/              # Файлы переводов i18n (en, zh, ru)
   └── types/                # Унифицированная система типов + маппинг инструментов
├── shared/                   # Общие модули бэкенда (авторизация, JWT, базовое хранилище устройств)
├── tests/                    # Юнит-тесты, E2E-тесты (Playwright), бенчмарки
├── docs/                     # Руководства по настройке каналов + проектная документация
├── website/                  # Веб-сайт проекта (SolidJS + Vite)
├── scripts/                  # Настройка, обновление бинарников, CI-хелперы
├── homebrew/                 # Формула Homebrew для дистрибуции на macOS
├── electron.vite.config.ts
└── electron-builder.yml

Участие в проекте

Мы приветствуем вклад! Подробные рекомендации см. в CONTRIBUTING.md.

Стиль кода: TypeScript strict mode, реактивные паттерны SolidJS, Tailwind для стилизации

Соглашение о коммитах: feat: | fix: | docs: | refactor: | chore:

Добавление нового движка: Реализуйте EngineAdapter (см. electron/main/engines/engine-adapter.ts), добавьте маппинг имён инструментов в src/types/tool-mapping.ts и зарегистрируйте в electron/main/index.ts.


Лицензия

MIT


Ссылки