OpenCode против Codex CLI: сравнение терминальных ИИ-агентов для кода (2026)
OpenCode (190k звёзд, MIT, любая модель) против Codex CLI (Rust, Apache-2.0, GPT-5-Codex). Один модель-агностик, другой заточен под OpenAI.
Коротко: OpenCode и Codex CLI, это оба терминал-ориентированные агенты для кода, и они расходятся в одном вопросе, который определяет всё остальное: какие модели вам разрешено запускать. OpenCode, это модель-агностичная оболочка (любой из 75+ провайдеров, переключаемых прямо посреди сессии) с лицензией MIT и десктопным приложением в придачу. Codex CLI, это собственный агент OpenAI, написанный на Rust, по умолчанию привязанный к эндпоинту OpenAI, с самой сильной песочницей в этой категории и конфигурационным файлом, который открывает дверь к другим провайдерам, хотя эта дверь уже, чем была несколько релизов назад. Если ваш стек мультимодельный или вы не доверяете привязке к вендору, берите OpenCode. Если вы живёте внутри OpenAI и хотите максимально надёжную безопасность, берите Codex. Остальная часть статьи, про те грани, где этот выбор реально кусается, включая одну, которую мы нашли, прогнав оба через один и тот же шлюз.
Коротко: какой из них выбрать?
Пропустите текст, если вы уже знаете свои ограничения. Вот решение по сценариям.
| Сценарий | Выбор | Почему |
|---|---|---|
| Вы гоняете Claude, GPT и open-weight модели в зависимости от задачи | OpenCode | Модель-агностик по замыслу, переключение без перезапуска |
| Вы полностью в OpenAI и хотите встроенный GPT-5-Codex | Codex CLI | Настройки из коробки, шлюз не нужен |
| Вы автоматически одобряете shell-команды и вам нужна реальная изоляция | Codex CLI | Песочница уровня ОС закалена сильнее |
| Вам нужно десктопное приложение и расширение для IDE, а не только TUI | OpenCode | Есть TUI, десктоп и редакторные поверхности |
| Вы хотите один API-ключ для каждой модели | OpenCode | Codex нужен Responses API, который есть не у каждой проксируемой модели |
| Вам важно избегать привязки к одному вендору | OpenCode | Управляется сообществом, MIT, без вендора по умолчанию |
| Вы переходите с Claude Code и хотите путь импорта | Codex CLI | Встроенный импорт конфигов Claude Code и Cursor |
Оба бесплатны и с открытым исходным кодом. Оба работают в вашем терминале. Разделение в философии, а не в цене.
Сравнение за пять минут
Характеристики, которые меняют ощущение от работы с каждым изо дня в день, сверены с репозиторием и документацией каждого проекта на 2026-07-29.
| OpenCode | Codex CLI | |
|---|---|---|
| Сопровождающий | Anomaly (сообщество, ранее sst) | OpenAI (первая сторона) |
| Репозиторий | anomalyco/opencode (старые ссылки sst/opencode дают 301 сюда) | openai/codex |
| Язык | TypeScript | Rust |
| Лицензия | MIT | Apache-2.0 |
| Последний релиз | v1.18.9 (2026-07-28) | 0.146.0 (2026-07-29) |
| Звёзды на GitHub | ~190,800 | ~102,400 |
| Установка | npm i -g opencode-ai | npm i -g @openai/codex |
| Модель по умолчанию | Нет, вы выбираете | Семейство OpenAI GPT-5-Codex |
| Поддержка моделей | Любой из 75+ провайдеров через models.dev | OpenAI, плюс шлюзы, предоставляющие Responses API |
| Файл конфигурации | ~/.config/opencode/opencode.json | ~/.codex/config.toml |
| Инструкции проекта | AGENTS.md | AGENTS.md |
| Поверхности | TUI, десктопное приложение, расширение для IDE | TUI, неинтерактивный exec, мобильный удалённый доступ |
| Песочница | Запросы разрешений | Песочница ОС (seatbelt / Landlock) плюс подтверждения |
Две строки в этой таблице несут почти весь вес. “Модель по умолчанию: нет”, это вся идея OpenCode. “Модель по умолчанию: GPT-5-Codex”, это вся идея Codex. Всё остальное вытекает из этих двух фактов.
OpenCode: модель-агностичная оболочка
OpenCode относится к модели как к аргументу времени выполнения, а не как к продуктовому решению. Он поставляется без провайдера по умолчанию. При первом запуске вы подключаете один, и дальше модель, это то, что вы выбираете для каждой сессии или даже для каждого сообщения из списка 75+ провайдеров, подключённых через models.dev. Claude, GPT, Gemini, GLM, локальная сборка Ollama, все они, это просто записи в /models.
У такого дизайна есть несколько реальных последствий.
Вы не привязаны ни к чьей дорожной карте. Когда выходит новая модель и появляется в реестре models.dev, она появляется и в OpenCode без обновления клиента. Оболочке всё равно, кто сделал модель, в этом и суть.
Это полноценный агент, а не тонкая обёртка. OpenCode запускает агента планирования и агента сборки, переключаемых нажатием клавиши. Режим планирования только для чтения и предлагает подход, не трогая файлы; режим сборки выполняет. Он интегрирует серверы Language Server Protocol, поэтому для TypeScript, Python, Rust, Go и длинного хвоста других языков модель видит реальную информацию о типах и диагностику компилятора, а не догадывается по сырому тексту. Он понимает MCP, поддерживает пользовательские инструменты и запускает несколько сессий параллельно на одном проекте.
Это не только терминальный инструмент. Рядом с TUI есть десктопное приложение и расширение для IDE. Если вам нужен цикл агента, но не терминал, у OpenCode есть поверхность для вас. Codex сильнее опирается на терминал и exec-конвейер.
Где это кусается: модель-агностик означает, что решение о модели ваше, включая режимы отказа. Направьте OpenCode на слабого или неправильно настроенного провайдера, и вы получите слабый или неправильно настроенный вывод, и оболочка не спасёт вас от плохого выбора маршрутизации. Есть также известная шероховатость в реестре провайдеров. На совсем свежей установке только что добавленный провайдер может не появиться при самом первом вызове, потому что кеш реестра ещё не записан. Запустите команду models один раз, чтобы прогреть его, и всё разрешится. Стоит знать, прежде чем вы напишете скрипт настройки и будете считать первый вызов авторитетным.
OpenCode относится к модели как к аргументу времени выполнения, а не как к продуктовому решению. Именно этот выбор объясняет, почему он выигрывает в мультимодельном случае и проигрывает в случае “просто работает из коробки”.
Codex CLI: собственный агент OpenAI
Codex CLI пришёл из OpenAI, и это видно в каждом дизайнерском решении. Он написан на Rust, поэтому это быстрый одиночный бинарник, а не процесс Node. Он поставляется нацеленным на собственный эндпоинт OpenAI и модели GPT-5, заточенные под Codex, и для пользователя по умолчанию это означает нулевую конфигурацию: установите, авторизуйтесь через аккаунт ChatGPT или API-ключ и начинайте кодить.
Сильные стороны группируются вокруг доверия и безопасности.
Песочница, лучшая в этом сравнении. Codex изолирует выполнение команд с помощью примитивов уровня ОС, seatbelt на macOS, Landlock и seccomp на Linux, и добавляет поверх режимы подтверждения. Вы выбираете, сколько свободы получит агент: только предложения, автоправка внутри рабочего пространства или полный автомат внутри песочницы. Запущенный агентом rm ограничен по конструкции, а не потому, что модель решила вести себя хорошо. Если вы автоматически одобряете задачи или запускаете что-то, что писали не вы, эта изоляция и есть та функция, которую вы на самом деле покупаете.
Это полноправный гражданин стека OpenAI. Команда /review делает встроенный ревью кода, не трогая ваше рабочее дерево. Субагенты распараллеливают работу. Codex Remote позволяет управлять подключённым хостом на Mac или Windows из мобильного приложения ChatGPT. Команда /import переносит настройки Cursor и Claude Code, MCP-серверы, плагины и команды в Codex, что превращает миграцию в одну команду, а не в выходные.
Он не привязан к OpenAI, несмотря на настройки по умолчанию. Добавьте блок [model_providers.<id>] в ~/.codex/config.toml, указывающий на совместимый шлюз, и Codex будет вызывать всё, что этот шлюз обслуживает. Дверь есть. Просто её надо открыть вручную, и в этом честное отличие от OpenCode, где дверь открыта по умолчанию.
Загвоздка в том, какой протокол считается совместимым, и ответ изменился. Codex раньше принимал wire_api = "chat", то есть любой эндпоинт Chat Completions. Этого значения больше нет. В исходниках 0.146.0 у перечисления WireApi остался ровно один вариант, Responses, и передача chat не игнорируется, это жёсткая ошибка при запуске:
wire_api = "chat"is no longer supported. How to fix: setwire_api = "responses"in your provider config.
Это сообщение ссылается на обсуждение #7782, заведённое под заголовком “Deprecating chat/completions support in Codex”, что примерно настолько однозначно, насколько бывают устаревания. Chat Completions, это почти универсальный диалект. Responses API, нет. Каждое руководство, написанное до этого изменения, теперь даёт конфиг, который не загрузится, и каждый шлюз, проксирующий только Chat Completions, теперь недосягаем.
Где это кусается: настройки, заточенные под OpenAI, это комфорт, пока вы не захотите уйти. Свобода моделей в Codex, это задача конфигурации, а не меню, и граница протокола реальна и сместилась в пользу OpenAI. Вы не можете направить base_url на нативный API Anthropic и ожидать, что это заработает, потому что это не Responses API. Вы маршрутизируете не-OpenAI модели через шлюз, поддерживающий Responses, или не маршрутизируете вообще, и как показывает следующий раздел, “поддержка Responses” оказывается свойством конкретной модели, а не шлюза.
Лицом к лицу: различия, которые меняют ваш день
Шесть измерений и кто берёт каждое. “Победитель” здесь означает “лучше для большинства людей, оптимизирующих по этой оси”, а не универсальный вердикт.
| Измерение | OpenCode | Codex CLI | Победитель |
|---|---|---|---|
| Свобода моделей | Любой провайдер, переключение на лету | OpenAI по умолчанию, остальные только если обслуживаются через Responses | OpenCode |
| Песочница и безопасность | Запросы разрешений | Песочница уровня ОС плюс подтверждения | Codex CLI |
| Настройка из коробки | Сначала выбрать провайдера | Установил и поехал на OpenAI | Codex CLI |
| Поверхности | TUI, десктоп, IDE | TUI, exec, мобильный удалённый доступ | Ничья |
| Управление и привязка | Сообщество, MIT, без вендора | Первая сторона OpenAI | OpenCode |
| Миграция с Claude Code | Общее соглашение AGENTS.md | Встроенная команда импорта | Codex CLI |
Если пробежаться по этому столбцу, закономерность ясна. OpenCode выигрывает в свободе и независимости. Codex выигрывает в безопасности и в том, что он готов к работе внутри одного вендора. Нет ни одного измерения, где один был бы строго впереди по всему, и именно поэтому рекомендация условная, а не одно имя.
Настройка и повседневный рабочий процесс, измеренные
Забудьте про придуманные оценки качества. Честные, проверяемые различия в том, сколько шагов каждому инструменту нужно для одной и той же работы, и где сидит трение.
Первый ответ от модели не по умолчанию. В OpenCode вы экспортируете ключ провайдера, открываете TUI, запускаете /models и выбираете. Файл править не нужно. В Codex не-OpenAI модель означает, что сначала надо написать блок model_providers в config.toml, потом проверить, что нужная модель действительно обслуживается через Responses API, а затем выбрать её. OpenCode делает меньше шагов в мультимодельном случае по замыслу; Codex делает меньше шагов, если нужная модель от OpenAI, потому что тогда шагов ноль.
Переключение моделей посреди задачи. OpenCode меняет модель на лету через /models внутри работающей сессии. Codex меняет модель через --model при каждом вызове или загрузкой именованного профиля, что ближе к смене полосы, чем к подруливанию. Если ваш рабочий процесс, это “порассуждать с дорогой моделью, а потом дать дешёвой перемалывать правки”, OpenCode делает это переключением за две секунды.
Запуск shell-команды. OpenCode спрашивает разрешение. Codex запускает её внутри песочницы под тем режимом подтверждения, который вы задали, поэтому изоляция держится, даже когда вы говорите “да”. Тот же запрос на поверхности, совсем разный радиус поражения под ним.
Инструкции проекта. Оба читают AGENTS.md, то же соглашение, что переняли Cursor и другие, поэтому репозиторий, где он уже есть, работает в любом агенте без изменений. Это тихая победа прошлого года: инструкции агента для вашего проекта теперь переносимы между инструментами.
Первый запуск, бок о бок
Быстрее всего почувствовать разницу, установив оба и получив первый ответ. OpenCode, с моделью, которую вы предоставляете:
npm i -g opencode-ai
export OFOX_API_KEY=sk-your-key # any OpenAI-compatible provider works
cd your-project
opencode # /models to pick, Tab to toggle plan/build
Codex, на настройках OpenAI по умолчанию, это случай, под который он оптимизирован:
npm i -g @openai/codex
cd your-project
codex # authenticates with ChatGPT or OPENAI_API_KEY
Обратите внимание, что предполагает каждая команда. Счастливый путь OpenCode ожидает, что вы назовёте провайдера, и вознаграждает вас меню. Счастливый путь Codex ожидает, что вы пользователь OpenAI, и вознаграждает вас нулевой настройкой. Ни один не неправ. Они оптимизированы под разных первых пользователей, и опыт установки говорит вам, какого пользователя представляла каждая команда.
Расширяемость: MCP, навыки и субагенты
За пределами вопроса о моделях оба агента расширяемы схожими способами, но с разной зрелостью в каждом углу. Здесь “первая сторона” начинает проявляться как отполированность, а не как философия.
| Возможность | OpenCode | Codex CLI |
|---|---|---|
| MCP-серверы | Да | Да, регистрация с пространствами имён |
| Переиспользуемые промпты | Пользовательские инструменты и агенты | Навыки и slash-команды |
| Субагенты / параллелизм | Параллельные сессии | Субагенты (мультиагентность) |
| Анализ только для чтения | Агент планирования, переключение по Tab | /review, без правок рабочего дерева |
| Удалённый доступ / мобильный | Десктопное приложение, IDE, /share | Codex Remote из приложения ChatGPT |
| Темы оформления | Да | Ограниченно |
Оба понимают MCP, поэтому одни и те же контекстные серверы и интеграции инструментов подключаются к любому из них. Codex опирается на структурированную модель расширений, навыки, MCP с пространствами имён и slash-команды, которые ощущаются управляемыми командой, выпускающей продукт. OpenCode опирается на поверхности, давая вам того же агента в терминале, в десктопном окне и в вашем редакторе, плюс поток /share для передачи сессии коллеге. История режима только для чтения, это славное отражение их философий: OpenCode даёт выделенного агента планирования, в которого вы переключаетесь, тогда как Codex даёт команду /review, которая критикует, не трогая ваше дерево. Одна цель, две идиомы.
Одно практическое замечание о скорости. Codex, это бинарник на Rust, поэтому он быстро стартует и остаётся лёгким. OpenCode работает на Node, что не медленно ни в каком заметном смысле, пока модель думает, но это более тяжёлый процесс в покое. Для большинства людей задержка модели затмевает задержку инструмента, и это никогда не имеет значения. Если вы скриптуете флот headless-агентов, оно может иметь.
Один ключ, два очень разных меню моделей
Вот та часть, где две философии перестают быть абстрактными, и где мы перестали гадать и запустили эту штуку. Оба агента принимают базовый URL шлюза, поэтому один ключ может покрыть биллинг для Claude, GPT, Gemini и open-weight моделей. Чего один ключ не гарантирует, так это что оба агента смогут достучаться до всех из них. Мы настроили оба против ofox.ai на 2026-07-29, и результаты не были симметричными.
OpenCode: одна переменная окружения, нулевой конфиг-файл. Поскольку ofox, это встроенный провайдер в реестре models.dev, OpenCode обнаруживает его в тот момент, когда ключ на месте.
export OFOX_API_KEY=sk-your-key
opencode # /models now lists ofox/... entries, pick one
Это вся настройка. Ни файла, ни блока провайдера, и поскольку OpenCode работает через Chat Completions, всё, что обслуживает шлюз, есть в меню.
Codex CLI: один блок конфигурации и меню короче, чем вы ожидаете. Codex нужно объявить шлюз один раз в ~/.codex/config.toml.
model = "openai/gpt-5.5"
model_provider = "ofox"
[model_providers.ofox]
name = "ofox.ai"
base_url = "https://api.ofox.io/v1"
env_key = "OFOX_API_KEY"
wire_api = "responses"
requires_openai_auth = false
wire_api = "responses", это не предпочтение, это единственное значение, которое принимают текущие релизы Codex, поэтому ваш шлюз должен предоставлять эндпоинт, совместимый с Responses, а не только Chat Completions. requires_openai_auth = false, это значение по умолчанию, оно не даёт Codex показывать поток входа в ChatGPT, поэтому он читает ключ из env_key. Полный список ключей в справочнике по конфигурации Codex.
Что реально запустилось
Мы направили Codex 0.146.0 на этот конфиг и попросили каждую модель ответить одним словом, используя codex exec --sandbox read-only. Это результат, которого мы не ожидали, начиная.
| Модель | Codex CLI через шлюз | Что вернулось |
|---|---|---|
openai/gpt-5.5 | Работает | Нормальное завершение, за ход списано 12.7k токенов |
anthropic/claude-sonnet-5 | Падает | tools.0.custom.strict: Extra inputs are not permitted |
deepseek/deepseek-v4-pro | Падает | Encrypted content is not supported with this model. |
x-ai/grok-4.3 | Падает | Та же ошибка с зашифрованным содержимым |
z-ai/glm-5.2 | Падает | HTTP 503, No providers support endpoint 'responses' |
Обратите внимание на асимметрию, потому что это самая полезная вещь в статье. GLM, единственная из четырёх, которую каталог заранее пометил как неподдерживаемую. Claude, DeepSeek и Grok все перечислены под /v1/responses и всё равно упали. Список эндпоинтов, это предварительный фильтр, а не гарантия.
Три разных отказа, одна тема. GLM вообще не доходит до модели, потому что шлюз не проксирует её под /v1/responses. DeepSeek и Grok досягаемы, но отвергают поле reasoning.encrypted_content, которое Codex прикрепляет к каждому запросу, а это поле жёстко зашито в client.rs, а не вынесено в настройку, поэтому обходного пути через конфиг нет. Claude досягаем и принимает зашифрованное содержимое, но давится формой свободного инструмента apply_patch в Codex.
Затем мы прогнали идентичный запрос через OpenCode 1.18.9 на том же ключе, том же шлюзе, той же машине. Все четыре модели, до которых Codex не смог достучаться, ответили нормально, как и обычный вызов chat/completions из SDK. Вот в чём подсказка: это протокольный шов между Codex и уровнем шлюза, а не проблема модели и не упавший шлюз.
Как проверить, прежде чем закладываться. Список моделей шлюза сообщает, под какими эндпоинтами обслуживается каждая модель, поэтому можно отфильтровать заранее, а не отлаживать конфиг:
curl -s https://api.ofox.io/v1/models \
-H "Authorization: Bearer $OFOX_API_KEY" \
| jq -r '.data[] | select(.supported_endpoints | index("/v1/responses")) | .id'
На 2026-07-29 это вернуло 67 идентификаторов моделей. В каталоге 123 записи, но 18 из них, это модели изображений, видео, эмбеддингов и транскрипции, которые не предоставляют ни один текстовый эндпоинт, поэтому важный знаменатель, это 105 текстовых моделей: 102 обслуживаются через chat completions, 67 через Responses. Эти два множества перекрываются почти полностью без вложенности. 64 модели предлагают оба, и ровно три только Responses (openai/gpt-5.2-codex, openai/gpt-5.3-codex, openai/gpt-5.4-pro).
Посчитанные по семействам, текстовые модели Claude, GPT, DeepSeek, Doubao и Grok были покрыты от начала до конца. Qwen (10 из 21), MiniMax (7 из 9) и Kimi (2 из 5) были покрыты частично, поэтому проверка по каждой модели важна даже внутри семейства, которое вы считаете поддерживаемым. У Gemini и GLM не было записи Responses ни в одной версии, как и у Kimi K3. Считайте этот список внешней границей того, до чего смог достучаться Codex, а затем протестируйте конкретную модель, потому что, как показывает таблица выше, попадание в список необходимо, но недостаточно.
Ничего из этого не касается OpenCode, что и есть практический аргумент в его пользу, если ваша стратегия моделей действительно смешанная. Стоит также сказать прямо: это протокольное решение на стороне Codex, оно разом сломало каждый шлюз с одним лишь Chat Completions, и, видимо, всё утрясётся по мере того, как шлюзы будут строить более полные Responses-прослойки. Это правда о сегодняшнем дне, а не постоянный вердикт.
Тот же ключ работает и из кода, вот как можно провести A/B двух моделей на одной задаче без участия любого агента. Тот же базовый URL, поменять одну строку, никакого протокольного шва не о чем беспокоиться.
Python: запуск одной задачи на двух моделях
from openai import OpenAI
client = OpenAI(
api_key="sk-your-ofox-key",
base_url="https://api.ofox.io/v1",
)
task = "Refactor this function to remove the nested loop, keep behavior identical."
for model in ["anthropic/claude-sonnet-5", "z-ai/glm-5.2"]:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": task}],
)
print(f"\n=== {model} ===")
print(resp.choices[0].message.content)
Node: та же форма
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-your-ofox-key",
baseURL: "https://api.ofox.io/v1",
});
const task = "Write a Postgres migration to add a nullable created_by column.";
for (const model of ["anthropic/claude-sonnet-5", "openai/gpt-5.5"]) {
const resp = await client.chat.completions.create({
model,
messages: [{ role: "user", content: task }],
});
console.log(`\n=== ${model} ===`);
console.log(resp.choices[0].message.content);
}
Идентификаторы моделей буквальны. Это то, что вы вставляете в OpenCode, и то, что вставляете в Codex для того подмножества, до которого он сейчас может достучаться. Вот честная версия обещания переносимости: агент, это оболочка, а модель, это переменная, но лишь один из этих двух агентов позволяет вам сегодня менять эту переменную свободно.
Сколько это стоит
Цены шлюза на три модели, использованные выше, взяты со страниц моделей ofox на 2026-07-29. Это за миллион токенов.
| Модель | ID модели ofox | Ввод | Вывод |
|---|---|---|---|
| Claude Sonnet 5 | anthropic/claude-sonnet-5 | $2 / M | $10 / M |
| GLM-5.2 | z-ai/glm-5.2 | $1.4 / M | $4.4 / M |
| GPT-5.5 | openai/gpt-5.5 | $4 / M (прайс $5) | $24 / M (прайс $30) |
GPT-5.5 в день проверки шёл с промо-скидкой 20%, поэтому цифры $4 и $24, это то, что вам реально выставили бы, а зачёркнутые $5 и $30, это прайсовые цены. Промо истекают; читайте страницу модели, а не доверяйте этой таблице через полгода. У двух других скидки не было.
Смысл таблицы не в абсолютных числах, а в разбросе. GLM-5.2 стоит примерно пятую часть от GPT-5.5 на выводе по промо-цене, поэтому рабочий процесс “рассуждать с сильной моделью, перемалывать дешёвой”, это реальная разница в счёте, а не погрешность округления. OpenCode делает это переключение нажатием клавиши. Codex, по тесту выше, вообще не смог достучаться до двух из этих трёх моделей, и это то же открытие, приходящее строкой в счёте, а не строкой ошибки: рычаг стоимости существует только для того агента, который может его дёрнуть.
Если хотите выбор картинкой, а не абзацем, он сворачивается в два вопроса.
Когда выбирать OpenCode
Выбирайте OpenCode, если что-то из этого про вас. Вы распределяете работу между несколькими вендорами моделей и хотите, чтобы это было меню, а не миграция. Вы опасаетесь привязывать свой рабочий инструмент к цене и дорожной карте одной компании. Вы хотите агента и за пределами терминала, в десктопном приложении или в вашем редакторе. Вы цените, что проект под лицензией MIT и управляется сообществом, без вендора по умолчанию, собирающего пошлину. Модель-агностичный дизайн, это причина быть здесь, и если вы им не пользуетесь, вы платите за гибкость, которая вам не нужна.
Когда выбирать Codex CLI
Выбирайте Codex CLI, если вы уже внутри мира OpenAI и хотите, чтобы настройки просто работали, если вы автоматически одобряете или пакетно гоняете задачи и вам нужна песочница уровня ОС, которую Codex закалил сильнее всех в этой категории, или если вы уходите с Claude Code и хотите, чтобы команда импорта сделала скучную часть. Бинарник на Rust быстр, история безопасности здесь самая сильная, а первосторонняя интеграция с приложением ChatGPT и Codex Remote не имеет аналога на стороне OpenCode. Если вы редко выходите за пределы собственных моделей OpenAI, работа по конфигурации, которая открывает других провайдеров, это работа, которую вы никогда не сделаете, и это нормально. Если же вы рассчитываете выйти за их пределы, прочтите раздел про протокол выше, прежде чем строить на этом план, потому что сегодня эта дверь открывается в комнату меньше, чем подразумевает документация.
Когда ни один не подходит (и что использовать вместо)
Если вы едва покидаете свой редактор, терминальный агент, это налог на ваш рабочий процесс, и Cursor или Zed со встроенным ассистентом лягут вам в руки лучше. Если ваша работа, это фиксированный конвейер, сгенерировать это, отревьюить то, отгрузить по расписанию, вам вообще не нужен интерактивный агент, вам нужен скрипт, вызывающий API модели напрямую, и именно поэтому примеры кода выше вызывают шлюз без участия любого из CLI. А если вы сравниваете четыре агента, а не два, наше сравнение четырёх терминальных агентов охватывает Claude Code и DeepSeek TUI наряду с Codex, с разложенными углами про цену и повседневный инструмент.
Терминальный агент, это конкретный инструмент на конкретный вкус: вы хотите модель в вашем шелле, наблюдающую за вашими файлами, запускающую ваши команды. Если это не ваш вкус, ни один из этих двух не ваш ответ, и хвататься за неправильную форму инструмента, более частая ошибка, чем выбрать неправильный из двух.
FAQ
Вопросы и ответы смотрите выше в метаданных страницы; тот же набор отрисован здесь для читателей и поисковых систем. Если вы выбираете между этими двумя агентами, два факта, которые решают большинство вопросов: OpenCode модель-агностичен, а Codex CLI заточен под OpenAI, и у Codex более жёсткая песочница, тогда как у OpenCode более широкое меню моделей.
Ссылки
- github.com/anomalyco/opencode (прежний путь
sst/opencodeдаёт 301 сюда) - github.com/openai/codex
- codex-rs/model-provider-info/src/lib.rs на rust-v0.146.0
- обсуждение openai/codex #7782
- opencode.ai/docs
- Справочник по конфигурации Codex CLI
- models.dev
- страницы моделей ofox
Дополнительное чтение: руководство по настройке OpenCode, пользовательские провайдеры моделей Codex CLI, глубокое погружение в config.toml Codex и миграция с Claude Code на Codex.

