Актуально
Архитектура

Два движка.
Один бот.

Claude Code и Codex работают как сменные силовые установки внутри общего контура CCB. Бот отвечает за права, память и доставку, а движок — за рассуждение и выполнение задачи.

01

Общая схема

Бот оркестрирует.
Движок исполняет.

Ветвление происходит в одной точке. Всё до и после неё остаётся общим, поэтому Telegram, права, интеграции и доставка файлов не зависят от выбранной модели.

01 · Вход

Сообщениетекст · голос · фото
@
Контекстпользователь · диалог

02 · Оркестратор CCB

Выбор маршрутаодна точка ветвления
Новый диалог?Берём выбор пользователяusers.engine
Продолжение?Берём движок диалогаsessions.engine
AДвижок A

Claude Code

Нативный поток уже говорит на внутреннем языке бота.

  • Запускclaude -p
  • Память--resume
  • ИнструкцииCLAUDE.md
  • Интеграции--mcp-config
stream-json без перевода
Движок B

Codex

Его события переводятся адаптером в общий формат CCB.

  • Запускcodex exec
  • Памятьexec resume
  • ИнструкцииAGENTS.md
  • Интеграцииconfig.toml
JSON → единый поток CCB

04 · Единый выход

Прогрессодинаковый стрим
ПамятьSQLite + thread id
Результаттекст и файлы в чат
02

Переключение

Выбор меняет будущее,
но не переписывает прошлое.

Переключатель доступен командой /engine в Telegram и в настройках панели. Он влияет только на новые диалоги.

Интерактивный сценарий 1. Работаем в Claude
Выбор для новых диалогов
AClaude Code
Codex
Настройка хранится у пользователя
Диалог AA · Claude
Навсегда закреплён за Claude
Диалог B⌁ · Codex
Навсегда закреплён за Codex
01

Пользователь выбрал Claude Code. Новый диалог A создаётся с отметкой engine = claude.

01Переключение

Меняет users.engine — предпочтение для следующего чистого старта.

02Создание

Новый диалог копирует выбор в собственное поле sessions.engine.

03Продолжение

Reply или возврат в старый диалог запускает именно его родной движок.

03

Как они дружат

Разные внутри.
Равные снаружи.

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

Единый контрактCCBEngine interface
01
Права и изоляцияОдна политика ролей и один bwrap-контур
02
ИнтеграцииОдин список доступных MCP, два формата конфига
03
Рабочая папкаТе же проекты, гранты и пользовательский cwd
04
Стиль и контекстОбщие подсказки и единый канон инструкций
05
Файлы и ответыОдна доставка результата обратно в чат
06
Effort и моделиОбщий UI, значения адаптируются под движок
Безопасный дефолтНе настроен — не включаем

Codex появляется в выборе только при наличии CLI и подписочного входа. Недоступный вариант не сохраняется; неизвестный или небезопасный движок для сотрудника закрывается с возвратом на Claude.

04

Техническая карта

Одинаковая роль,
разные адаптеры.

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

Контракт
AClaude Code
Codex
Команда
claude -p
codex exec --json
Продолжение
--resume <id>
exec resume <thread>
Поток событий
Уже в общем формате
Проходит через адаптер
Инструкции
CLAUDE.md
AGENTS.md из того же канона
Интеграции
Временный JSON-конфиг
Временный config.toml
Модели
Sonnet · Opus · Haiku
Каталог самого Codex