v2.1.0 · выпуск 2026-10-20

OpenCode 2.1: несовместимые изменения контрактов

На 2026-10-20 OpenCode v2.1.0 внёс намеренные изменения в публичный SDK, контракты HTTP message/event и плагинов. Тем, кто пишет плагины, использует SDK или подключается по HTTP, нужно перейти на новые поля. В официальном changelog сказано, что сохранённые сессии, учётные данные и импорт старых сессий остаются читаемыми, а миграция базы данных не требуется.

Обновлено 2026-10-20

Подключите этот инструмент к эндпоинту QCode — один ключ для Claude, GPT и китайских моделей.

#v2.1.0#Breaking changes#SDK / HTTP / плагины#Без миграции БД

Четыре изменения (одно из них — новая функция)

native

Новое имя полей replay

В официальном changelog сказано: раньше данные provider replay назывались по-разному в разных местах, теперь они читаются и записываются как native.

session.compacted

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

Переходное событие удалено; подписки на события и импорт schema переводятся на session.compaction.started и session.compaction.ended.

Credential.Key.configuration

Переходит в metadata

Публичная запись учётных данных должна передавать ответы setup-form в metadata; старый вариант с configuration принимается только для хранения и импорта.

x64 / ARM64

Постоянный PTY в Windows

В том же выпуске добавлен постоянный PTY для Windows x64 и ARM64; списки Todo в TUI появляются при включённом experimental.todo.

Что меняет v2.1.0

OpenCode v2.1.0 вышел 2026-10-20. Официальный changelog сообщает, что версия 2.1 намеренно меняет публичный SDK, контракты HTTP message/event и контракты плагинов, чтобы данные provider replay и compaction везде использовали одинаковые имена и структуру, а интеграции должны перейти на новые поля. Там же сказано, что сохранённые сессии, учётные данные и импорт старых сессий читаются через совместимые декодеры и миграция базы данных не нужна.

Главное из официального changelog

Несовместимые изменения сосредоточены в публичном SDK и контрактах HTTP message/event и плагинов; официальный changelog описывает изменения по группам: provider replay, настройка учётных данных, summary compaction, provider compaction и события. В том же выпуске появились постоянный PTY для Windows и списки Todo в TUI, а команды плагинов, вызовы shell и другие запросы TUI могут выполняться дольше пятиминутного лимита fetch в Bun, не теряя соединение.

Хронология

2026-10-20

Вышел OpenCode v2.1.0; официальный changelog относит изменения SDK, HTTP message/event и контрактов плагинов к Breaking changes.

2026-10-20

В том же выпуске добавлены постоянный PTY для Windows (x64 / ARM64) и списки Todo в TUI; для списков Todo нужен параметр experimental.todo.

2026-10-20

Страница OpenCode в документации QCode проверена 2026-10-20; в неё добавлен раздел об OpenCode 2.

Подтверждено vs не подтверждено

Подтверждено (можно проверить в официальном changelog)

Официальный changelog указывает: v2.1.0 вышел 2026-10-20; версия 2.1 намеренно меняет публичный SDK, контракты HTTP message/event и контракты плагинов, а интеграции должны перейти на новые поля.

Не подтверждено и официально не опубликовано

Официальный changelog не приводит график выпуска следующих версий 2.1 и не описывает, как это изменение контрактов повлияет на конкретные сторонние интеграции.

2.1.0 и 2.0

По сравнению с 2.0

По сравнению с 2.0, в 2.1.0 меняются имена полей и события публичных контрактов: данные replay становятся native, событие session.compacted удаляется, Credential.Key.configuration удаляется, а ответы переходят в metadata.

Для обычного использования CLI

Требование официального changelog адресовано интеграциям; затронуто ли обычное использование CLI, там отдельно не сказано.

Четыре места для изменений

① Читать и записывать данные replay через native вместо state, providerState и resultState (части текста и рассуждений, сообщения assistant и compaction, события жизненного цикла — по таблице changelog; состояние выполнения инструмента tool.state и метаданные UI не переименовываются). ② Убрать session.compacted из подписок на события и импорта schema, перейти на session.compaction.started и session.compaction.ended. ③ В публичной записи учётных данных передавать ответы setup-form в metadata и не отправлять configuration. ④ Проверить в плагинах и SDK чтение providerContext и recent: окно сообщений для provider compaction теперь в native.messages; summary compaction больше не отдаёт recent, новые записи ссылаются на первое дословно сохранённое сообщение через metadata.keepID, а сохранённый текст прежних compaction (до 2.1) и импортов V1 остаётся в metadata.recent.

OpenCode на QCode

Способ подключения OpenCode в документации QCode: файл ~/.config/opencode/opencode.json, Claude использует https://api.qcode.cc/claude/v1, GPT — провайдер openai, китайские модели — совместимый с OpenAI провайдер; baseURL у обоих https://api.qcode.cc/openai/v1. Ключ записывается через opencode auth login или /connect; в OpenCode 1 учётные данные хранятся в ~/.local/share/opencode/auth.json, в OpenCode 2 — в SQLite, а старый auth.json импортируется. Перед использованием включите разрешение API direct access; по умолчанию оно отключено; чтобы включить его для вашего ключа, свяжитесь с онлайн-поддержкой или напишите на hi@qcode.cc. Эта страница документации в последний раз проверена 2026-10-20; в ней сказано, что конфигурация в формате V1 по-прежнему поддерживается в OpenCode 2. Оплата по токенам, цены по моделям указаны на /models. Не хотите платить помесячно? «Разовые пакеты» — от $4: разовая квота, которую нужно израсходовать за 7–90 дней. Если у вас уже есть личный тариф и квоты не хватает, докупите бустер-пакет.

Частые вопросы

Кому нужно менять код из-за несовместимых изменений 2.1?

Официальный changelog требует, чтобы интеграции перешли на новые поля, и называет публичный SDK, контракты HTTP message/event и контракты плагинов. Тем, кто пишет плагины, использует SDK или принимает события по HTTP, нужно перейти на новые поля.

Что именно изменилось в данных replay?

Раньше в разных местах использовались разные имена: state, providerState, resultState; в 2.1 читается и записывается native. Состояние выполнения инструмента и метаданные UI не переименовываются.

Можно ли ещё использовать session.compacted?

Нет. Событие удалено из публичных событий; в подписках на события и импорте schema используйте session.compaction.started и session.compaction.ended.

Нужна ли миграция базы данных при переходе на 2.1?

Нет. Официальный changelog сообщает, что сохранённые сессии, учётные данные и импорт старых сессий читаются через совместимые декодеры, миграция базы данных не требуется.

Нужно ли что-то менять обычным пользователям CLI?

Требование официального changelog адресовано интеграциям и не разбито по типам пользователей. Перед обновлением проверьте свои плагины, использование SDK и подписки на события.

Что меняется при подключении OpenCode к QCode?

Следуйте документации QCode: в opencode.json укажите для Anthropic provider https://api.qcode.cc/claude/v1, для OpenAI provider — https://api.qcode.cc/openai/v1, а ключ запишите через opencode auth login или /connect. Страница OpenCode в документации QCode проверена 2026-10-20: конфигурация в формате V1 со страницы по-прежнему поддерживается в OpenCode 2, а документация приводит и нативную запись V2. Оплата по токенам, цены по моделям указаны на /models.

Источники

Официальный changelog OpenCode (получен 2026-10-20, запись v2.1.0); официальная документация CLI OpenCode (opencode auth login); страница OpenCode в документации QCode (получена 2026-10-20, последняя проверка 2026-10-20); страница «Разовые пакеты» QCode (получена 2026-10-20).

Изменения контрактов — по пунктам

Подключение OpenCode к QCode использует opencode.json и два baseURL; оплата по токенам, цены по моделям указаны на /models.

Не знаете, с чего начать?

Попробовать неделю

Пакет «Неделя» — $4: квота $30 на 7 дней

Работаете каждый день

«Стартовый» — $8.57 в месяц, за $1 квоты примерно вдвое дешевле пакета «Месяц» ($5 квоты в день)