Конфигурация
Настройки ZubrCode живут в opencode.json или opencode.jsonc — в проекте
или глобально. Указывайте только нужные ключи; файл можно переписать и
по-русски попросить агента — «добавь в opencode.json разрешение на git push».
{ "model": "zubriq/zubr-coder"}Поддерживаются JSON и JSONC: JSONC — когда нужны комментарии или висячие запятые.
Где лежат
Заголовок раздела «Где лежат»| Где | Файл |
|---|---|
| Глобально для пользователя | ~/.config/zubrcode/opencode.json(c) |
| В проекте | opencode.json(c) или .opencode/opencode.json(c) |
ZubrCode ищет конфигурацию от текущей папки вверх к корню файловой системы:
сначала сливаются прямые opencode.json(c) от дальнего каталога к ближнему,
затем файлы внутри .opencode в том же порядке. Поэтому любой найденный
.opencode/opencode.json перекрывает прямой opencode.json.
Например, ZubrCode запущен из /home/user/projects/acme/packages/web:
~/.config/zubrcode/opencode.json
/home/user/projects/acme/├── opencode.json└── packages/ └── web/ ├── opencode.json └── src/Файлы применяются от низшего приоритета к высшему: глобальный, конфиг
репозитория acme, конфиг пакета web. Настройки, которые
не конфликтуют, сохраняются. Политики из
глобальных и проектных файлов проверяются в обратном порядке.
Источники конфигурации покажет zubrcode debug config; файлы перечитываются
на лету, а zubrcode reload перечитывает их явно.
Основные ключи
Заголовок раздела «Основные ключи»| Ключ | Что делает |
|---|---|
shell |
оболочка для терминала и инструмента shell |
model |
модель по умолчанию (Модели) |
default_agent |
агент по умолчанию (Агенты) |
update |
проверки обновлений: "disable", "notify", "auto" (Обновление) |
username |
имя пользователя (принимается, но не показывается в переписке) |
permissions |
правила разрешений (Разрешения) |
policies |
жёсткие политики (Политики) |
agents |
агенты и их настройки (Агенты) |
snapshots |
снимки для /undo (Снимки и откат) |
watcher.ignore |
пути, которые не считаются изменениями файлов |
formatter |
форматирование после правок (Форматтеры) |
media.image |
обработка изображений (Вложения) |
tool_output.max_lines, tool_output.max_bytes |
сколько вывода инструментов сохранять |
mcp |
MCP-серверы (MCP) |
compaction |
сжатие контекста (Сжатие контекста) |
skills |
дополнительные источники навыков (Навыки) |
commands |
свои слеш-команды (Команды) |
instructions |
дополнительные инструкции (Инструкции) |
references |
именованные внешние каталоги (Ссылки) |
worktree.directory |
каталог для новых рабочих копий git |
plugins |
плагины — пакеты или локальные каталоги |
providers |
провайдеры, модели и их запросы |
Примеры ключей:
{ "shell": "/bin/zsh", "default_agent": "build", "snapshots": false, "watcher": { "ignore": ["dist/**", "coverage/**"] }, "formatter": true, "tool_output": { "max_lines": 2000, "max_bytes": 51200 }, "worktree": { "directory": "../worktrees" }}worktree.directory — родительский каталог для новых рабочих копий: к нему
добавляется имя копии, относительные пути считаются от канонической рабочей
копии проекта. Без настройки копии создаются в каталоге данных службы.
Подстановки
Заголовок раздела «Подстановки»В строках конфигурации можно подставлять переменные окружения и содержимое файлов:
{ "model": "{env:OPENCODE_MODEL}", "providers": { "acme": { "settings": { "apiKey": "{file:~/.secrets/acme-key}" } } }}{env:ИМЯ}— переменная окружения; если не задана, подставится пустая строка.{file:путь}— содержимое файла: относительный путь от файла конфигурации, абсолютный или~/…. Отсутствующий файл даёт пустую строку.
Это удобно для ключей в отдельных файлах и общих фрагментов конфигурации.
Экспериментальные настройки
Заголовок раздела «Экспериментальные настройки»Все они лежат под ключом experimental:
{ "experimental": { "todo": true, "subagent_depth": 2, "portable_shell_scanner": true, "location_idle_timeout": "4 hours" }}todo— инструментtodowriteдля ведения многошаговой работы (по умолчаниюfalse).subagent_depth— насколько глубоко субагенты могут запускать своих субагентов (по умолчанию1).portable_shell_scanner— портативный разборщик оболочки вместо tree-sitter в проверках разрешений.location_idle_timeout— как долго проект может жить без активности, прежде чем его службы выгрузятся (по умолчанию"60 minutes",false— никогда).