Buckets:
| 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": false, | |
| "reserved": 10000 | |
| } | |
| } | |
| ``` | |
| - `auto` — автоматически сжимать сеанс при заполнении контекста (по умолчанию: `true`). | |
| - `prune` — удалить старые выходные данные инструмента для сохранения токенов (по умолчанию: `false`). | |
| - `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, в отдельных файлах. | |
| - Включая большие файлы инструкций, не загромождая вашу конфигурацию. | |
| - Совместное использование общих фрагментов конфигурации в нескольких файлах конфигурации. | |
Xet Storage Details
- Size:
- 28.7 kB
- Xet hash:
- 84b334d245ba65d6caba65d0bfc91c838e1d0c66b89dcb42d51af8a9603c3014
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.