Config
Использование JSON-конфигурации OpenCode.
Вы можете настроить OpenCode с помощью JSON-файла конфигурации.
Формат
OpenCode поддерживает форматы JSON и JSONC (JSON с комментариями).
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
"server": {
"port": 4096,
},
}Расположение
Вы можете разместить вашу конфигурацию в нескольких разных местах, и они имеют разный порядок приоритета.
Примечание: Файлы конфигурации объединяются, а не заменяются.
Файлы конфигурации объединяются, а не заменяются. Настройки из следующих расположений конфигурации комбинируются. Более поздние конфигурации переопределяют более ранние только для конфликтующих ключей. Неконфликтующие настройки из всех конфигураций сохраняются.
Например, если ваша глобальная конфигурация устанавливает autoupdate: true, а конфигурация проекта устанавливает model: "anthropic/claude-sonnet-4-5", итоговая конфигурация будет включать обе настройки.
Порядок приоритета
Источники конфигурации загружаются в этом порядке (более поздние источники переопределяют более ранние):
- Удалённая конфигурация (из
.well-known/opencode) — организационные значения по умолчанию - Глобальная конфигурация (
~/.config/opencode/opencode.json) — пользовательские настройки - Пользовательская конфигурация (переменная окружения
OPENCODE_CONFIG) — пользовательские переопределения - Конфигурация проекта (
opencode.jsonв проекте) — настройки, специфичные для проекта - Каталоги
.opencode— агенты, команды, плагины - Встроенная конфигурация (переменная окружения
OPENCODE_CONFIG_CONTENT) — переопределения во время выполнения - Управляемые файлы конфигурации (
/Library/Application Support/opencode/на macOS) — контролируемые администратором - Управляемые настройки macOS (
.mobileconfigчерез MDM) — наивысший приоритет, не переопределяемый пользователем
Это означает, что конфигурации проекта могут переопределять глобальные значения по умолчанию, а глобальные конфигурации могут переопределять удалённые организационные значения по умолчанию. Управляемые настройки переопределяют всё.
Примечание: Каталоги
.opencodeи~/.config/opencodeиспользуют имена во множественном числе для подкаталогов:agents/,commands/,modes/,plugins/,skills/,tools/иthemes/. Имена в единственном числе (например,agent/) также поддерживаются для обратной совместимости.
Удалённая
Организации могут предоставлять конфигурацию по умолчанию через эндпоинт .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. Используйте глобальную конфигурацию для общих пользовательских настроек сервера/среды выполнения, таких как провайдеры, модели и разрешения.
Для настроек, специфичных для TUI, используйте ~/.config/opencode/tui.json.
Глобальная конфигурация переопределяет удалённые организационные значения по умолчанию.
По проекту
Добавьте opencode.json в корень вашего проекта. Конфигурация проекта имеет наивысший приоритет среди стандартных файлов конфигурации — она переопределяет как глобальную, так и удалённую конфигурации.
Для настроек TUI, специфичных для проекта, добавьте tui.json рядом.
Совет: Размещайте конфигурацию, специфичную для проекта, в корне вашего проекта.
При запуске OpenCode ищет файл конфигурации в текущем каталоге или поднимается вверх до ближайшего каталога Git.
Её также безопасно коммитить в Git, и она использует ту же схему, что и глобальная.
Пользовательский путь
Укажите пользовательский путь к файлу конфигурации с помощью переменной окружения OPENCODE_CONFIG.
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"Пользовательская конфигурация загружается между глобальной и проектной конфигурациями в порядке приоритета.
Пользовательский каталог
Укажите пользовательский каталог конфигурации с помощью переменной окружения OPENCODE_CONFIG_DIR. В этом каталоге будут искаться агенты, команды, режимы и плагины, как и в стандартном каталоге .opencode, и он должен следовать той же структуре.
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"Пользовательский каталог загружается после глобальной конфигурации и каталогов .opencode, поэтому он может переопределить их настройки.
Управляемые настройки
Организации могут принудительно применять конфигурацию, которую пользователи не могут переопределить. Управляемые настройки загружаются с наивысшим уровнем приоритета.
На основе файлов
Поместите файл opencode.json или opencode.jsonc в системный управляемый каталог конфигурации:
| Платформа | Путь |
|---|---|
| macOS | /Library/Application Support/opencode/ |
| Linux | /etc/opencode/ |
| Windows | %ProgramData%\opencode |
Для записи в эти каталоги требуется доступ администратора/root, поэтому пользователи не могут их изменять.
Управляемые настройки macOS
На macOS OpenCode читает управляемые настройки из домена настроек ai.opencode.managed. Разверните .mobileconfig через MDM (Jamf, Kandji, FleetDM), и настройки применяются автоматически.
OpenCode проверяет эти пути:
/Library/Managed Preferences/<user>/ai.opencode.managed.plist/Library/Managed Preferences/ai.opencode.managed.plist
Ключи plist напрямую сопоставляются с полями opencode.json. Ключи метаданных MDM (PayloadUUID, PayloadType и т. д.) удаляются автоматически.
Создание .mobileconfig
Используйте PayloadType ai.opencode.managed. Ключи конфигурации OpenCode помещаются прямо в словарь payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>ai.opencode.managed</string>
<key>PayloadIdentifier</key>
<string>com.example.opencode.config</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>share</key>
<string>disabled</string>
<key>server</key>
<dict>
<key>hostname</key>
<string>127.0.0.1</string>
</dict>
<key>permission</key>
<dict>
<key>*</key>
<string>ask</string>
<key>bash</key>
<dict>
<key>*</key>
<string>ask</string>
<key>rm -rf *</key>
<string>deny</string>
</dict>
</dict>
</dict>
</array>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadIdentifier</key>
<string>com.example.opencode</string>
<key>PayloadUUID</key>
<string>GENERATE-YOUR-OWN-UUID</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>Сгенерируйте уникальные UUID с помощью uuidgen. Настройте параметры в соответствии с требованиями вашей организации.
Развёртывание через MDM
- Jamf Pro: Computers > Configuration Profiles > Upload > область действия для целевых устройств или смарт-групп
- FleetDM: Добавьте
.mobileconfigв ваш gitops-репозиторий вmdm.macos_settings.custom_settingsи запуститеfleetctl apply
Проверка на устройстве
Дважды щёлкните .mobileconfig, чтобы установить локально для тестирования (отображается в System Settings > Privacy & Security > Profiles), затем запустите:
opencode debug configВсе ключи управляемых настроек появляются в разрешённой конфигурации и не могут быть переопределены пользовательской или проектной конфигурацией.
Схема
Схема конфигурации сервера/среды выполнения определена в opencode.ai/config.json (opens in a new tab).
Конфигурация TUI использует opencode.ai/tui.json (opens in a new tab).
Ваш редактор должен иметь возможность валидировать и автодополнять на основе схемы.
TUI
Используйте отдельный файл tui.json (или tui.jsonc) для настроек, специфичных для TUI.
{
"$schema": "https://opencode.ai/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto",
"mouse": true,
"attention": {
"enabled": true,
"notifications": true,
"sound": true,
"volume": 0.4
}
}Используйте OPENCODE_TUI_CONFIG, чтобы указать на пользовательский файл конфигурации TUI.
Установите attention.enabled, чтобы включить настольные уведомления и звуки TUI. Смотрите TUI attention.
Устаревшие ключи theme, keybinds и tui в opencode.json устарели и автоматически мигрируются, когда это возможно.
Сервер
Вы можете настроить параметры сервера для команд 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.
Оболочка
Вы можете настроить оболочку, используемую для интерактивного терминала, с помощью опции shell. Совместимые оболочки также используются для вызовов инструментов агента.
{
"$schema": "https://opencode.ai/config.json",
"shell": "pwsh"
}Если не указано, OpenCode автоматически обнаружит и использует разумное значение по умолчанию в зависимости от вашей операционной системы (например, pwsh или cmd.exe в Windows, /bin/zsh или /bin/bash на macOS/Linux). Вы можете предоставить абсолютный путь или короткое имя.
Инструменты
Вы можете управлять инструментами, которые может использовать LLM, с помощью опции tools.
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}Подробнее об инструментах здесь.
Модели
Вы можете настроить провайдеров и модели, которые хотите использовать, в вашей конфигурации 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, chunkTimeout и setCacheKey:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"chunkTimeout": 30000,
"setCacheKey": true
}
}
}
}timeout— таймаут запроса в миллисекундах (по умолчанию: 300000). Установитеfalse, чтобы отключить.chunkTimeout— таймаут в миллисекундах между потоковыми фрагментами ответа. Если фрагмент не приходит вовремя, запрос прерывается.setCacheKey— гарантировать, что ключ кэша всегда установлен для указанного провайдера.
Вы также можете настроить локальные модели. Подробнее.
Прикрепление изображений
OpenCode нормализует прикреплённые изображения перед отправкой их модели. По умолчанию изображения изменяются в размере, когда они превышают 2000x2000 пикселей или 5242880 base64-байт.
Настройте лимиты прикрепления изображений с помощью опции attachment.image:
{
"$schema": "https://opencode.ai/config.json",
"attachment": {
"image": {
"auto_resize": true,
"max_width": 2000,
"max_height": 2000,
"max_base64_bytes": 5242880
}
}
}auto_resize— изменять размер изображений, превышающих настроенные лимиты, перед запросами к провайдеру. Установитеfalse, чтобы вместо этого отклонять негабаритные изображения.max_width— максимальная ширина изображения в пикселях перед изменением размера или отклонением.max_height— максимальная высота изображения в пикселях перед изменением размера или отклонением.max_base64_bytes— максимальный размер закодированной полезной нагрузки изображения. Это размер полезной нагрузки base64, а не размер исходного файла.
Если изображение всё ещё не помещается после изменения размера, OpenCode пропускает негабаритные изображения результатов инструментов или завершает с ошибкой негабаритные изображения, предоставленные пользователем, с ошибкой размера изображения.
Опции, специфичные для провайдера
Некоторые провайдеры поддерживают дополнительные опции конфигурации помимо общих настроек timeout и apiKey.
Amazon Bedrock
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.
Примечание: Bearer-токены (
AWS_BEARER_TOKEN_BEDROCKили/connect) имеют приоритет над аутентификацией на основе профиля. Подробности смотрите в приоритете аутентификации.
Подробнее о конфигурации Amazon Bedrock.
Темы
Установите тему интерфейса в tui.json.
{
"$schema": "https://opencode.ai/tui.json",
"theme": "tokyonight"
}Агенты
Вы можете настроить специализированных агентов для конкретных задач с помощью опции 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": {
// Отключить инструменты модификации файлов для агента только для проверки
"write": false,
"edit": false,
},
},
},
}Вы также можете определять агентов с помощью markdown-файлов в ~/.config/opencode/agents/ или .opencode/agents/. Подробнее здесь.
Агент по умолчанию
Вы можете установить агента по умолчанию с помощью опции default_agent. Это определяет, какой агент используется, когда ни один не указан явно.
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}Агент по умолчанию должен быть основным агентом (не субагентом). Это может быть встроенный агент, такой как "build" или "plan", или пользовательский агент, который вы определили. Если указанный агент не существует или является субагентом, OpenCode откатится к "build" с предупреждением.
Эта настройка применяется ко всем интерфейсам: TUI, CLI (opencode run), десктопному приложению и GitHub Action.
Совместное использование
Вы можете настроить функцию совместного использования с помощью опции share.
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}Принимает:
"manual"— разрешить ручное совместное использование через команды (по умолчанию)"auto"— автоматически делиться новыми диалогами"disabled"— полностью отключить совместное использование
По умолчанию совместное использование установлено в ручной режим, где вам нужно явно делиться диалогами с помощью команды /share.
Команды
Вы можете настроить пользовательские команды для повторяющихся задач с помощью опции 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/. Подробнее здесь.
Горячие клавиши
Настройте сочетания клавиш TUI в tui.json с помощью keybinds.
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"command_list": "ctrl+p"
}
}keybinds объединяется со встроенными значениями по умолчанию, поэтому вам нужно настроить только те сочетания клавиш, которые вы хотите изменить.
Снимок
OpenCode использует снимки для отслеживания изменений файлов во время операций агента, позволяя вам отменять и откатывать изменения в рамках сессии. Снимки включены по умолчанию.
Для больших репозиториев или проектов с множеством подмодулей система снимков может вызывать медленную индексацию и значительное использование диска, так как она отслеживает все изменения с помощью внутреннего git-репозитория. Вы можете отключить снимки с помощью опции snapshot.
{
"$schema": "https://opencode.ai/config.json",
"snapshot": false
}Обратите внимание, что отключение снимков означает, что изменения, сделанные агентом, не могут быть откачены через интерфейс.
Автообновление
OpenCode будет автоматически загружать любые новые обновления при запуске. Вы можете отключить это с помощью опции autoupdate.
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}Если вы не хотите обновлений, но хотите получать уведомления о доступности новой версии, установите autoupdate в "notify". Обратите внимание, что это работает только в том случае, если установка не была выполнена с помощью менеджера пакетов, такого как Homebrew.
Форматтеры
Вы можете включать и настраивать форматтеры кода с помощью опции formatter. Опустите её, чтобы оставить форматтеры отключёнными.
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}Используйте объект, чтобы оставить встроенные форматтеры включёнными при настройке переопределений или пользовательских форматтеров.
{
"$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"]
}
}
}Подробнее о форматтерах здесь.
LSP серверы
Вы можете включать и настраивать LSP серверы с помощью опции lsp. Опустите её, чтобы оставить LSP отключённым.
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}Используйте объект, чтобы оставить встроенные серверы включёнными при настройке переопределений или пользовательских LSP серверов.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}Подробнее о LSP серверах здесь.
Разрешения
По умолчанию opencode разрешает все операции без необходимости явного одобрения. Вы можете изменить это с помощью опции permission.
Например, чтобы инструменты edit и bash требовали одобрения пользователя:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}Подробнее о разрешениях здесь.
Сжатие
Вы можете управлять поведением сжатия контекста с помощью опции compaction.
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}auto— автоматически сжимать сессию, когда контекст заполнен (по умолчанию:true).prune— удалять старые выводы инструментов для экономии токенов (по умолчанию:true).reserved— буфер токенов для сжатия. Оставляет достаточное окно, чтобы избежать переполнения во время сжатия.
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": {}
}Плагины
Плагины расширяют OpenCode пользовательскими инструментами, хуками и интеграциями.
Поместите файлы плагинов в .opencode/plugins/ или ~/.config/opencode/plugins/. Вы также можете загружать плагины из npm с помощью опции plugin.
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}Инструкции
Вы можете настроить инструкции для используемой модели с помощью опции instructions.
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}Принимает массив путей и glob-шаблонов к файлам инструкций. Подробнее о правилах здесь.
Отключённые провайдеры
Вы можете отключить провайдеров, которые загружаются автоматически, с помощью опции disabled_providers. Это полезно, когда вы хотите предотвратить загрузку определённых провайдеров, даже если их учётные данные доступны.
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}Примечание:
disabled_providersимеет приоритет надenabled_providers.
Опция disabled_providers принимает массив ID провайдеров. Когда провайдер отключён:
- Он не будет загружен, даже если установлены переменные окружения.
- Он не будет загружен, даже если API-ключи настроены через команду
/connect. - Модели провайдера не появятся в списке выбора моделей.
Включённые провайдеры
Вы можете указать список разрешённых провайдеров с помощью опции enabled_providers. Когда она установлена, будут включены только указанные провайдеры, а все остальные будут проигнорированы.
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}Это полезно, когда вы хотите ограничить OpenCode использованием только определённых провайдеров, а не отключать их по одному.
Примечание:
disabled_providersимеет приоритет надenabled_providers.
Если провайдер появляется как в enabled_providers, так и в disabled_providers, disabled_providers имеет приоритет для обратной совместимости.
Экспериментальные
Ключ 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-ключи, в отдельных файлах.
- Включения больших файлов инструкций без загромождения вашей конфигурации.
- Совместного использования общих фрагментов конфигурации в нескольких файлах конфигурации.