Конфигурация
Использование конфигурации opencode JSON.
Вы можете настроить opencode, используя файл конфигурации JSON.
Формат
opencode поддерживает форматы JSON и JSONC (JSON с комментариями).
{ "$schema": "https://opencode.ai/config.json", // Theme configuration "theme": "opencode", "model": "anthropic/claude-sonnet-4-5", "autoupdate": true,}Локации
Вы можете разместить свою конфигурацию в нескольких разных местах, и у них есть разный порядок старшинства.
Файлы конфигурации объединяются, а не заменяются. Настройки из следующих мест конфигурации объединяются. Более поздние конфигурации переопределяют предыдущие только в случае конфликта ключей. Неконфликтные настройки из всех конфигов сохраняются.
Например, если ваша глобальная конфигурация устанавливает theme: "opencode" и autoupdate: true, а конфигурация вашего проекта устанавливает model: "anthropic/claude-sonnet-4-5", окончательная конфигурация будет включать все три параметра.
Порядок приоритета
Источники конфигурации загружаются в следующем порядке (более поздние источники переопределяют более ранние):
- Удаленная конфигурация (от
.well-known/opencode) – организационные настройки по умолчанию. - Глобальная конфигурация (
~/.config/opencode/opencode.json) — настройки пользователя. - Пользовательская конфигурация (
OPENCODE_CONFIGenv var) – пользовательские переопределения - Конфигурация проекта (
opencode.jsonв проекте) — настройки, специфичные для проекта. - Каталоги
.opencode— агенты, команды, плагины - Встроенная конфигурация (
OPENCODE_CONFIG_CONTENTenv var) – переопределяет время выполнения
Это означает, что конфигурации проекта могут переопределять глобальные настройки по умолчанию, а глобальные конфигурации могут переопределять настройки по умолчанию для удаленной организации.
Удаленный
Организации могут предоставить конфигурацию по умолчанию через конечную точку .well-known/opencode. Он извлекается автоматически при аутентификации у провайдера, который его поддерживает.
Удаленная конфигурация загружается первой и служит базовым слоем. Все остальные источники конфигурации (глобальные, проектные) могут переопределить эти значения по умолчанию.
Например, если ваша организация предоставляет серверы MCP, которые по умолчанию отключены:
{ "mcp": { "jira": { "type": "remote", "url": "https://jira.example.com/mcp", "enabled": false } }}Вы можете включить определенные серверы в локальной конфигурации:
{ "mcp": { "jira": { "type": "remote", "url": "https://jira.example.com/mcp", "enabled": true } }}Глобальный
Поместите глобальную конфигурацию opencode в ~/.config/opencode/opencode.json. Используйте глобальную конфигурацию для общепользовательских настроек, таких как темы, поставщики или привязки клавиш.
Глобальная конфигурация переопределяет настройки по умолчанию для удаленной организации.
За проект
Добавьте opencode.json в корень вашего проекта. Конфигурация проекта имеет наивысший приоритет среди стандартных файлов конфигурации — она переопределяет как глобальные, так и удаленные конфигурации.
Когда opencode запускается, он ищет файл конфигурации в текущем каталоге или переходит к ближайшему каталогу Git.
Его также можно безопасно зарегистрировать в Git, и он использует ту же схему, что и глобальная.
Пользовательский путь
Укажите собственный путь к файлу конфигурации, используя переменную среды OPENCODE_CONFIG.
export OPENCODE_CONFIG=/path/to/my/custom-config.jsonopencode run "Hello world"Пользовательская конфигурация загружается между глобальными и проектными конфигурациями в порядке приоритета.
Пользовательский каталог
Укажите пользовательский каталог конфигурации, используя OPENCODE_CONFIG_DIR.
переменная среды. В этом каталоге будет осуществляться поиск агентов, команд,
режимы и плагины, такие как стандартный каталог .opencode, и должны
следовать той же структуре.
export OPENCODE_CONFIG_DIR=/path/to/my/config-directoryopencode run "Hello world"Пользовательский каталог загружается после каталогов global config и .opencode, поэтому он может переопределить их настройки.
Схема
Файл конфигурации имеет схему, определенную в opencode.ai/config.json.
Ваш редактор должен иметь возможность проверять и автозаполнять данные на основе схемы.
TUI
Вы можете настроить параметры TUI с помощью опции tui.
{ "$schema": "https://opencode.ai/config.json", "tui": { "scroll_speed": 3, "scroll_acceleration": { "enabled": true }, "diff_style": "auto" }}Доступные варианты:
scroll_acceleration.enabled— включить ускорение прокрутки в стиле MacOS. Имеет приоритет надscroll_speed.scroll_speed— пользовательский множитель скорости прокрутки (по умолчанию:3, минимум:1). Игнорируется, еслиscroll_acceleration.enabledравенtrue.diff_style— управление рендерингом различий."auto"адаптируется к ширине terminal,"stacked"всегда отображает один столбец.
Подробнее об использовании TUI можно узнать здесь.
server
Вы можете настроить параметры сервера для команд opencode serve и opencode web с помощью опции server.
{ "$schema": "https://opencode.ai/config.json", "server": { "port": 4096, "hostname": "0.0.0.0", "mdns": true, "mdnsDomain": "myproject.local", "cors": ["http://localhost:5173"] }}Доступные варианты:
port— порт для прослушивания.hostname— имя хоста для прослушивания. Еслиmdnsвключен и имя хоста не задано, по умолчанию используется0.0.0.0.mdns— включить обнаружение службы mDNS. Это позволит другим устройствам в сети обнаружить ваш сервер opencode.mdnsDomain— собственное доменное имя для службы mDNS. По умолчаниюopencode.local. Полезно для запуска нескольких экземпляров в одной сети.cors— дополнительные источники, позволяющие использовать CORS при использовании HTTP-сервера из браузерного клиента. Значения должны быть полными источниками (схема + хост + дополнительный порт), напримерhttps://app.example.com.
Подробнее о сервере можно узнать здесь.
tools
Вы можете управлять инструментами, которые LLM может использовать, с помощью опции tools.
{ "$schema": "https://opencode.ai/config.json", "tools": { "write": false, "bash": false }}Подробнее об инструментах можно узнать здесь.
Models
Вы можете настроить поставщиков и модели, которые хотите использовать в своей конфигурации opencode, с помощью параметров provider, model и small_model.
{ "$schema": "https://opencode.ai/config.json", "provider": {}, "model": "anthropic/claude-sonnet-4-5", "small_model": "anthropic/claude-haiku-4-5"}Опция small_model настраивает отдельную модель для облегченных задач, таких как создание заголовков. По умолчанию opencode пытается использовать более дешевую модель, если она доступна у вашего провайдера, в противном случае он возвращается к вашей основной модели.
Опции провайдера могут включать timeout и setCacheKey:
{ "$schema": "https://opencode.ai/config.json", "provider": { "anthropic": { "options": { "timeout": 600000, "setCacheKey": true } } }}timeout— таймаут запроса в миллисекундах (по умолчанию: 300000). Установитеfalseдля отключения.setCacheKey— убедитесь, что ключ кэша всегда установлен для назначенного поставщика.
Вы также можете настроить локальные модели. Подробнее .
Параметры, зависящие от поставщика
Некоторые поставщики поддерживают дополнительные параметры конфигурации помимо общих настроек timeout и apiKey.
Amazon
Amazon Bedrock поддерживает конфигурацию, специфичную для AWS:
{ "$schema": "https://opencode.ai/config.json", "provider": { "amazon-bedrock": { "options": { "region": "us-east-1", "profile": "my-aws-profile", "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com" } } }}region— регион AWS для Bedrock (по умолчанию переменная средыAWS_REGIONилиus-east-1)profile— именованный профиль AWS из~/.aws/credentials(по умолчанию переменная окруженияAWS_PROFILE)endpoint— URL-адрес пользовательской конечной точки для конечных точек VPC. Это псевдоним общего параметраbaseURL, использующий терминологию, специфичную для AWS. Если указаны оба параметра,endpointимеет приоритет.
Подробнее о конфигурации Amazon Bedrock.
theme
Вы можете настроить тему, которую хотите использовать, в конфигурации opencode с помощью опции theme.
{ "$schema": "https://opencode.ai/config.json", "theme": ""}agent
Вы можете настроить специализированные агенты для конкретных задач с помощью опции agent.
{ "$schema": "https://opencode.ai/config.json", "agent": { "code-reviewer": { "description": "Reviews code for best practices and potential issues", "model": "anthropic/claude-sonnet-4-5", "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.", "tools": { // Disable file modification tools for review-only agent "write": false, "edit": false, }, }, },}Вы также можете определить агентов, используя файлы Markdown в ~/.config/opencode/agents/ или .opencode/agents/. Подробнее здесь.
default_agent
Вы можете установить агента по умолчанию, используя опцию default_agent. Это определяет, какой агент используется, если ни один из них не указан явно.
{ "$schema": "https://opencode.ai/config.json", "default_agent": "plan"}Агент по умолчанию должен быть основным агентом (а не субагентом). Это может быть встроенный агент, например "build" или "plan", или пользовательский агент, который вы определили. Если указанный агент не существует или является субагентом, opencode вернется к "build" с предупреждением.
Этот параметр применяется ко всем интерфейсам: TUI, CLI (opencode run), настольному приложению и действию GitHub.
share
Функцию share можно настроить с помощью опции share.
{ "$schema": "https://opencode.ai/config.json", "share": "manual"}Это занимает:
"manual"— разрешить общий доступ вручную с помощью команд (по умолчанию)."auto"— автоматически делиться новыми беседами."disabled"— полностью отключить общий доступ
По умолчанию общий доступ установлен в ручной режим, в котором вам необходимо явно делиться разговорами с помощью команды /share.
command
Вы можете настроить собственные команды для повторяющихся задач с помощью опции command.
{ "$schema": "https://opencode.ai/config.json", "command": { "test": { "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", "description": "Run tests with coverage", "agent": "build", "model": "anthropic/claude-haiku-4-5", }, "component": { "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.", "description": "Create a new component", }, },}Вы также можете определять команды, используя файлы Markdown в ~/.config/opencode/commands/ или .opencode/commands/. Подробнее здесь.
keybinds
Вы можете настроить привязки клавиш с помощью опции keybinds.
{ "$schema": "https://opencode.ai/config.json", "keybinds": {}}autoupdate
opencode автоматически загрузит все новые обновления при запуске. Вы можете отключить это с помощью опции autoupdate.
{ "$schema": "https://opencode.ai/config.json", "autoupdate": false}Если вы не хотите получать обновления, но хотите получать уведомления о появлении новой версии, установите для autoupdate значение "notify".
Обратите внимание, что это работает только в том случае, если оно было установлено без использования менеджера пакетов, такого как Homebrew.
formatter
Вы можете настроить форматировщики кода с помощью опции formatter.
{ "$schema": "https://opencode.ai/config.json", "formatter": { "prettier": { "disabled": true }, "custom-prettier": { "command": ["npx", "prettier", "--write", "$FILE"], "environment": { "NODE_ENV": "development" }, "extensions": [".js", ".ts", ".jsx", ".tsx"] } }}Подробнее о форматтерах можно узнать здесь.
permission
По умолчанию opencode разрешает все операции, не требуя явного разрешения. Вы можете изменить это, используя опцию permission.
Например, чтобы гарантировать, что инструменты edit и bash требуют одобрения пользователя:
{ "$schema": "https://opencode.ai/config.json", "permission": { "edit": "ask", "bash": "ask" }}Подробнее о разрешениях можно узнать здесь.
compaction
Вы можете управлять поведением сжатия контекста с помощью опции compaction.
{ "$schema": "https://opencode.ai/config.json", "compaction": { "auto": true, "prune": true }}auto— автоматически сжимать сеанс при заполнении контекста (по умолчанию:true).prune— удалить старые выходные данные инструмента для сохранения токенов (по умолчанию:true).
watcher
Вы можете настроить шаблоны игнорирования средства отслеживания файлов с помощью опции watcher.
{ "$schema": "https://opencode.ai/config.json", "watcher": { "ignore": ["node_modules/**", "dist/**", ".git/**"] }}Шаблоны соответствуют синтаксису glob. Используйте это, чтобы исключить зашумленные каталоги из просмотра файлов.
mcp
Вы можете настроить серверы MCP, которые хотите использовать, с помощью опции mcp.
{ "$schema": "https://opencode.ai/config.json", "mcp": {}}plugin
Плагины расширяют opencode с помощью пользовательских инструментов, перехватчиков и интеграций.
Поместите файлы плагина в .opencode/plugins/ или ~/.config/opencode/plugins/. Вы также можете загружать плагины из npm с помощью опции plugin.
{ "$schema": "https://opencode.ai/config.json", "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]}instructions
Вы можете настроить инструкции для используемой вами модели с помощью опции instructions.
{ "$schema": "https://opencode.ai/config.json", "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]}Для этого требуется массив путей и шаблонов glob для файлов инструкций. Узнать больше о правилах здесь .
disabled_providers
Вы можете отключить поставщиков, которые загружаются автоматически, с помощью опции disabled_providers. Это полезно, если вы хотите запретить загрузку определенных поставщиков, даже если их учетные данные доступны.
{ "$schema": "https://opencode.ai/config.json", "disabled_providers": ["openai", "gemini"]}Опция disabled_providers принимает массив идентификаторов поставщиков. Когда провайдер отключен:
- Он не будет загружен, даже если установлены переменные среды.
- Он не будет загружен, даже если ключи API настроены с помощью команды
/connect. - Модели поставщика не появятся в списке выбора моделей.
enabled_providers
Вы можете указать белый список поставщиков с помощью опции enabled_providers. Если этот параметр установлен, будут включены только указанные поставщики, а все остальные будут игнорироваться.
{ "$schema": "https://opencode.ai/config.json", "enabled_providers": ["anthropic", "openai"]}Это полезно, если вы хотите ограничить opencode использованием только определенных поставщиков, а не отключать их по одному.
Если поставщик указан как в enabled_providers, так и в disabled_providers, disabled_providers имеет приоритет для обратной совместимости.
experimental
Ключ experimental содержит параметры, находящиеся в активной разработке.
{ "$schema": "https://opencode.ai/config.json", "experimental": {}}Переменные
Вы можете использовать подстановку переменных в файлах конфигурации для ссылки на переменные среды и содержимое файлов.
переменные окружения
Используйте {env:VARIABLE_NAME} для замены переменных среды:
{ "$schema": "https://opencode.ai/config.json", "model": "{env:OPENCODE_MODEL}", "provider": { "anthropic": { "models": {}, "options": { "apiKey": "{env:ANTHROPIC_API_KEY}" } } }}Если переменная среды не установлена, она будет заменена пустой строкой.
Файлы
Используйте {file:path/to/file} для замены содержимого файла:
{ "$schema": "https://opencode.ai/config.json", "instructions": ["./custom-instructions.md"], "provider": { "openai": { "options": { "apiKey": "{file:~/.secrets/openai-key}" } } }}Пути к файлам могут быть:
- Относительно каталога файла конфигурации
- Или абсолютные пути, начинающиеся с
/или~.
Они полезны для:
- Хранение конфиденциальных данных, таких как ключи API, в отдельных файлах.
- Включая большие файлы инструкций, не загромождая вашу конфигурацию.
- Совместное использование общих фрагментов конфигурации в нескольких файлах конфигурации.