--- title: Конфигурация description: Использование конфигурации opencode JSON. --- Вы можете настроить opencode, используя файл конфигурации JSON. --- ## Формат opencode поддерживает форматы **JSON** и **JSONC** (JSON с комментариями). ```jsonc title="opencode.jsonc" { "$schema": "https://opencode.ai/config.json", // Theme configuration "theme": "opencode", "model": "anthropic/claude-sonnet-4-5", "autoupdate": true, } ``` --- ## Расположение Вы можете разместить свою конфигурацию в нескольких разных местах, и у них есть разный порядок старшинства. :::note Файлы конфигурации **объединяются**, а не заменяются. ::: Файлы конфигурации объединяются, а не заменяются. Настройки из следующих мест конфигурации объединяются. Более поздние конфигурации переопределяют предыдущие только в случае конфликта ключей. Неконфликтные настройки из всех конфигов сохраняются. Например, если ваша глобальная конфигурация устанавливает `theme: "opencode"` и `autoupdate: true`, а конфигурация вашего проекта устанавливает `model: "anthropic/claude-sonnet-4-5"`, окончательная конфигурация будет включать все три параметра. --- ### Порядок приоритета Источники конфигурации загружаются в следующем порядке (более поздние источники переопределяют более ранние): 1. **Удаленная конфигурация** (от `.well-known/opencode`) – организационные настройки по умолчанию. 2. **Глобальная конфигурация** (`~/.config/opencode/opencode.json`) — настройки пользователя. 3. **Пользовательская конфигурация** (`OPENCODE_CONFIG` env var) – пользовательские переопределения 4. **Конфигурация проекта** (`opencode.json` в проекте) — настройки, специфичные для проекта. 5. **Каталоги `.opencode`** — агенты, команды, плагины 6. **Встроенная конфигурация** (`OPENCODE_CONFIG_CONTENT` env var) – переопределяет время выполнения Это означает, что конфигурации проекта могут переопределять глобальные настройки по умолчанию, а глобальные конфигурации могут переопределять настройки по умолчанию для удаленной организации. :::note В каталогах `.opencode` и `~/.config/opencode` для подкаталогов используются **множественные имена**: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` и `themes/`. Единственные имена (например, `agent/`) также поддерживаются для обратной совместимости. ::: --- ### Удаленная Организации могут предоставить конфигурацию по умолчанию через конечную точку `.well-known/opencode`. Он извлекается автоматически при аутентификации у провайдера, который его поддерживает. Удаленная конфигурация загружается первой и служит базовым слоем. Все остальные источники конфигурации (глобальные, проектные) могут переопределить эти значения по умолчанию. Например, если ваша организация предоставляет серверы MCP, которые по умолчанию отключены: ```json title="Remote config from .well-known/opencode" { "mcp": { "jira": { "type": "remote", "url": "https://jira.example.com/mcp", "enabled": false } } } ``` Вы можете включить определенные серверы в локальной конфигурации: ```json title="opencode.json" { "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` рядом с ним. :::tip Поместите конфигурацию конкретного проекта в корень вашего проекта. ::: Когда opencode запускается, он ищет файл конфигурации в текущем каталоге или переходит к ближайшему каталогу Git. Его также можно безопасно зарегистрировать в Git, и он использует ту же схему, что и глобальная. --- ### Пользовательский путь Укажите собственный путь к файлу конфигурации, используя переменную среды `OPENCODE_CONFIG`. ```bash export OPENCODE_CONFIG=/path/to/my/custom-config.json opencode run "Hello world" ``` Пользовательская конфигурация загружается между глобальными и проектными конфигурациями в порядке приоритета. --- ### Пользовательский каталог Укажите пользовательский каталог конфигурации, используя переменную среды `OPENCODE_CONFIG_DIR`. В этом каталоге будет выполняться поиск агентов, команд, режимов и плагинов (аналогично стандартному каталогу `.opencode`), и он должен иметь ту же структуру. ```bash export OPENCODE_CONFIG_DIR=/path/to/my/config-directory opencode run "Hello world" ``` Пользовательский каталог загружается после каталогов global config и `.opencode`, поэтому он **может переопределить** их настройки. --- ## Схема Файл конфигурации имеет схему, определенную в [**`opencode.ai/config.json`**](https://opencode.ai/config.json). Конфигурация TUI использует [**`opencode.ai/tui.json`**](https://opencode.ai/tui.json). Ваш редактор должен иметь возможность проверять и автозаполнять данные на основе схемы. --- ### TUI Используйте специальный файл `tui.json` (или `tui.jsonc`) для настроек, специфичных для TUI. ```json title="tui.json" { "$schema": "https://opencode.ai/tui.json", "scroll_speed": 3, "scroll_acceleration": { "enabled": true }, "diff_style": "auto" } ``` Используйте `OPENCODE_TUI_CONFIG`, чтобы указать на пользовательский файл конфигурации TUI. Устаревшие ключи `theme`, `keybinds` и `tui` в `opencode.json` устарели и автоматически переносятся, когда это возможно. [Подробнее об использовании TUI можно узнать здесь](/docs/tui#configure). --- ### Сервер Вы можете настроить параметры сервера для команд `opencode serve` и `opencode web` с помощью опции `server`. ```json title="opencode.json" { "$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`. [Подробнее о сервере можно узнать здесь](/docs/server). --- ### Инструменты Вы можете управлять инструментами, которые LLM может использовать, с помощью опции `tools`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "tools": { "write": false, "bash": false } } ``` [Подробнее об инструментах можно узнать здесь](/docs/tools). --- ### models Вы можете настроить поставщиков и модели, которые хотите использовать в своей конфигурации opencode, с помощью параметров `provider`, `model` и `small_model`. ```json title="opencode.json" { "$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`: ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "provider": { "anthropic": { "options": { "timeout": 600000, "setCacheKey": true } } } } ``` - `timeout` — таймаут запроса в миллисекундах (по умолчанию: 300000). Установите `false` для отключения. - `setCacheKey` — убедитесь, что ключ кэша всегда установлен для назначенного поставщика. Вы также можете настроить [локальные модели](/docs/models#local). [Подробнее ](/docs/models). --- #### Параметры, зависящие от поставщика Некоторые поставщики поддерживают дополнительные параметры конфигурации помимо общих настроек `timeout` и `apiKey`. ##### Amazon Amazon Bedrock поддерживает конфигурацию, специфичную для AWS: ```json title="opencode.json" { "$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` имеет приоритет. :::note Токены носителя (`AWS_BEARER_TOKEN_BEDROCK` или `/connect`) имеют приоритет над аутентификацией на основе профиля. Подробности см. в [приоритет аутентификации](/docs/providers#authentication-precedence). ::: [Подробнее о конфигурации Amazon Bedrock](/docs/providers#amazon-bedrock). --- ### theme Установите тему пользовательского интерфейса в `tui.json`. ```json title="tui.json" { "$schema": "https://opencode.ai/tui.json", "theme": "tokyonight" } ``` [Подробнее здесь](/docs/themes). --- ### agent Вы можете настроить специализированные агенты для конкретных задач с помощью опции `agent`. ```jsonc title="opencode.jsonc" { "$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/`. [Подробнее здесь](/docs/agents). --- ### default_agent Вы можете установить агента по умолчанию, используя опцию `default_agent`. Это определяет, какой агент используется, если ни один из них не указан явно. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "default_agent": "plan" } ``` Агент по умолчанию должен быть основным агентом (а не субагентом). Это может быть встроенный агент, например `"build"` или `"plan"`, или [пользовательский агент](/docs/agents), который вы определили. Если указанный агент не существует или является субагентом, opencode вернется к `"build"` с предупреждением. Этот параметр применяется ко всем интерфейсам: TUI, CLI (`opencode run`), настольному приложению и действию GitHub. --- ### share Функцию [share](/docs/share) можно настроить с помощью опции `share`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "share": "manual" } ``` Принимает значения: - `"manual"` — разрешить общий доступ вручную с помощью команд (по умолчанию). - `"auto"` — автоматически делиться новыми беседами. - `"disabled"` — полностью отключить общий доступ По умолчанию общий доступ установлен в ручной режим, в котором вам необходимо явно делиться разговорами с помощью команды `/share`. --- ### Команды Вы можете настроить собственные команды для повторяющихся задач с помощью опции `command`. ```jsonc title="opencode.jsonc" { "$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/`. [Подробнее здесь](/docs/commands). --- ### Сочетания клавиш Настройте привязки клавиш в `tui.json`. ```json title="tui.json" { "$schema": "https://opencode.ai/tui.json", "keybinds": {} } ``` [Подробнее здесь](/docs/keybinds). --- ### Автообновление opencode автоматически загрузит все новые обновления при запуске. Вы можете отключить это с помощью опции `autoupdate`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "autoupdate": false } ``` Если вы не хотите получать обновления, но хотите получать уведомления о появлении новой версии, установите для `autoupdate` значение `"notify"`. Обратите внимание, что это работает только в том случае, если оно было установлено без использования менеджера пакетов, такого как Homebrew. --- ### Форматтеры Вы можете настроить форматировщики кода с помощью опции `formatter`. ```json title="opencode.json" { "$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"] } } } ``` [Подробнее о форматтерах можно узнать здесь](/docs/formatters). --- ### permission По умолчанию opencode **разрешает все операции**, не требуя явного разрешения. Вы можете изменить это, используя опцию `permission`. Например, чтобы гарантировать, что инструменты `edit` и `bash` требуют одобрения пользователя: ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "permission": { "edit": "ask", "bash": "ask" } } ``` [Подробнее о разрешениях можно узнать здесь](/docs/permissions). --- ### compaction Вы можете управлять поведением сжатия контекста с помощью опции `compaction`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "compaction": { "auto": true, "prune": true, "reserved": 10000 } } ``` - `auto` — автоматически сжимать сеанс при заполнении контекста (по умолчанию: `true`). - `prune` — удалить старые выходные данные инструмента для сохранения токенов (по умолчанию: `true`). - `reserved` — Буфер токенов для сжатия. Оставляет достаточное окно, чтобы избежать переполнения во время сжатия. --- ### watcher Вы можете настроить шаблоны игнорирования средства отслеживания файлов с помощью опции `watcher`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "watcher": { "ignore": ["node_modules/**", "dist/**", ".git/**"] } } ``` Шаблоны соответствуют синтаксису glob. Используйте это, чтобы исключить зашумленные каталоги из просмотра файлов. --- ### mcp Вы можете настроить серверы MCP, которые хотите использовать, с помощью опции `mcp`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "mcp": {} } ``` [Подробнее здесь](/docs/mcp-servers). --- ### Плагины [Плагины](/docs/plugins) расширяют opencode с помощью пользовательских инструментов, перехватчиков и интеграций. Поместите файлы плагина в `.opencode/plugins/` или `~/.config/opencode/plugins/`. Вы также можете загружать плагины из npm с помощью опции `plugin`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"] } ``` [Подробнее здесь](/docs/plugins). --- ### instructions Вы можете настроить инструкции для используемой вами модели с помощью опции `instructions`. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"] } ``` Для этого требуется массив путей и шаблонов glob для файлов инструкций. [Подробнее о правилах читайте здесь](/docs/rules). --- ### disabled_providers Вы можете отключить поставщиков, которые загружаются автоматически, с помощью опции `disabled_providers`. Это полезно, если вы хотите запретить загрузку определенных поставщиков, даже если их учетные данные доступны. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "disabled_providers": ["openai", "gemini"] } ``` :::note `disabled_providers` имеет приоритет над `enabled_providers`. ::: Опция `disabled_providers` принимает массив идентификаторов поставщиков. Когда провайдер отключен: - Он не будет загружен, даже если установлены переменные среды. - Он не будет загружен, даже если ключи API настроены с помощью команды `/connect`. - Модели поставщика не появятся в списке выбора моделей. --- ### enabled_providers Вы можете указать белый список поставщиков с помощью опции `enabled_providers`. Если этот параметр установлен, будут включены только указанные поставщики, а все остальные будут игнорироваться. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "enabled_providers": ["anthropic", "openai"] } ``` Это полезно, если вы хотите ограничить opencode использованием только определенных поставщиков, а не отключать их по одному. :::note `disabled_providers` имеет приоритет над `enabled_providers`. ::: Если поставщик указан как в `enabled_providers`, так и в `disabled_providers`, `disabled_providers` имеет приоритет для обратной совместимости. --- ### Экспериментальные возможности Ключ `experimental` содержит параметры, находящиеся в активной разработке. ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "experimental": {} } ``` :::caution Экспериментальные варианты не стабильны. Они могут быть изменены или удалены без предварительного уведомления. ::: --- ## Переменные Вы можете использовать подстановку переменных в файлах конфигурации для ссылки на переменные среды и содержимое файлов. --- ### Переменные окружения Используйте `{env:VARIABLE_NAME}` для замены переменных среды: ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "model": "{env:OPENCODE_MODEL}", "provider": { "anthropic": { "models": {}, "options": { "apiKey": "{env:ANTHROPIC_API_KEY}" } } } } ``` Если переменная среды не установлена, она будет заменена пустой строкой. --- ### Файлы Используйте `{file:path/to/file}` для замены содержимого файла: ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", "instructions": ["./custom-instructions.md"], "provider": { "openai": { "options": { "apiKey": "{file:~/.secrets/openai-key}" } } } } ``` Пути к файлам могут быть: - Относительно каталога файла конфигурации - Или абсолютные пути, начинающиеся с `/` или `~`. Они полезны для: - Хранение конфиденциальных данных, таких как ключи API, в отдельных файлах. - Включая большие файлы инструкций, не загромождая вашу конфигурацию. - Совместное использование общих фрагментов конфигурации в нескольких файлах конфигурации.