Перейти к содержимому

Переход с 1.x

ZubrCode 1.x и 2.x ставятся одинаково и используют один бинарь zubrcode — установка 2.x заменяет его (установка). Сервер, чат и облачные раннеры принимают только 2.x. Переносить всё руками не нужно: поддерживаемые настройки 1.x продолжают работать.

  • Вход. Ключ из auth.json 1.x переносится в хранилище ядра (SQLite) сам — входить заново не нужно. Проверить: zubrcode auth list.
  • Конфигурация. Те же каталоги (~/.config/zubrcode, opencode.json, opencode.jsonc, .opencode/). 2.x читает поля 1.x как есть и нормализует их в памяти — файлы переписывать необязательно.
  • Файлы определений. Агенты, команды, навыки, AGENTS.md и MCP-серверы остаются на месте. Старые каталоги agent/, agents/, mode/, modes/, command/, skill/ по-прежнему обнаруживаются; для новых файлов предпочтительны .opencode/agents/, .opencode/commands/, .opencode/skills/.
  • Конфигурация TUI. Слои tui.json/tui.jsonc заменены одним глобальным ~/.config/zubrcode/cli.json: при первом запуске 2.x поддерживаемые настройки переносятся туда сами, файлы 1.x остаются нетронутыми.

Старый синтаксис продолжает работать, но у 2.x есть нативный формат — он явнее и удобнее. Главные переименования:

1.x 2.x
permission (по инструментам) permissions — упорядоченный массив правил
bash, task, write, patch shell, subagent, edit
agent, mode agents
prompt, disable, variant у агента system, disabled, вариант в модели через #
snapshot snapshots
attachment media
mcp.<имя>, enabled mcp.servers.<имя>, disabled
compaction.preserve_recent_tokens, compaction.reserved compaction.keep.tokens, compaction.buffer
skills.paths, skills.urls один массив skills
command, subtask commands, subagent
reference references

Например, разрешения:

1.x
{ "permission": { "bash": { "git push *": "ask" }, "edit": "allow" } }
// 2.x
{
"permissions": [
{ "action": "shell", "resource": "git push *", "effect": "ask" },
{ "action": "edit", "resource": "*", "effect": "allow" }
]
}

Ещё несколько изменений, которые заметны на практике:

  • Пути вне проекта. 1.x спрашивал перед обращением к каталогам вне проекта, 2.x разрешает их по умолчанию. Чтобы вернуть прежнее поведение, добавьте { "action": "external_directory", "resource": "*", "effect": "ask" }.
  • Сжатие контекста. compaction.tail_turns и compaction.prune в 2.x нет: поля игнорируются с предупреждением, свежий контекст хранится по бюджету токенов (Сжатие контекста).
  • Игнорируемые поля. Часть полей схемы 1.x не имела смысла в 2.x — они игнорируются с предупреждением в логе (logLevel, server и другие). Это не потеря функциональности.
  • Плагины. Плагины, написанные под API 1.x, в 2.x не запускаются: переносить их нужно на новый API плагинов.
  • LSP. Конфигурация lsp читается, но языковые серверы не запускаются. Проверки делайте командами lint, typecheck или сборки.

Конвертировать конфигурацию в нативный формат 2.x необязательно — можно попросить агента сделать это за вас:

Перепиши мою конфигурацию ZubrCode из формата 1.x в формат 2.x,
сохранив поведение и все посторонние настройки.

Поля обоих форматов могут сосуществовать в одном файле; каждую вложенную запись (агент, команда, провайдер) держите в одном формате. После конвертации не запускайте 1.x на этих же файлах — сохраните копию настроек, пока проверяете 2.x.

Чат «Кода» и облачные сессии работают только с 2.x: раннер на ZubrCode 1.x они не примут и попросят обновиться. Обновите машину и перезапустите раннер:

Окно терминала
zubrcode upgrade
zubrcode remote

То же относится к своему раннеру и к сессиям кода в чате.

  1. zubrcode --version — стоит 2.x.
  2. В проекте: модель, вход, агенты, разрешения и MCP-серверы.
  3. Если поддерживаемая возможность 1.x перестала работать в 2.x — это баг совместимости: напишите в поддержку (zubriq.by/chat), приложив вывод zubrcode --version и фрагмент конфигурации без ключей.