Файл конфигурации OpenCode
OpenCode использует формат JSON для конфигурации.
Сначала можно посмотреть на глобальный файл конфигурации~/.config/opencode/opencode.json:
touch ~/.config/opencode/opencode.json

Содержит информацию о провайдере модели и конфигурации:
{
// JSON Schema(用于编辑器校验和自动补全)
"$schema": "https://opencode.ai/config.json",
"provider": {
// 自定义 Provider 名称(使用时:deepseek/xxx)
"deepseek": {
// 使用 OpenAI 兼容适配器(适用于 DeepSeek 这类兼容接口)
"npm": "@ai-sdk/openai-compatible",
"options": {
// API 基础地址(必须是 OpenAI 兼容格式)
"baseURL": "https://api.deepseek.com/v1",
// API Key
"apiKey": "sk-xxxx",
// 是否强制设置缓存 key(提升缓存命中率,降低成本)
"setCacheKey": true
},
"models": {
// 本地模型别名(CLI/TUI 中使用:deepseek/Deepseek-v4)
"Deepseek-v4": {
// 实际调用的模型名称(API 层)
"name": "deepseek-v4-pro"
}
}
}
}
}
Пример минимально жизнеспособной конфигурации
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
"theme": "default"
}Общие элементы глобальной конфигурации:
| Элемент конфигурации | Type | Описание |
|---|---|---|
model |
string | Основная модель по умолчанию |
small_model |
string | Лёгкая модель для задач (например, генерация заголовков) |
autoupdate |
boolean / "notify" | Политика автообновления |
theme |
string | Тема интерфейса |
provider |
объект | Конфигурация провайдера моделей |
Пример провайдера:
{
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
Понимание «механизма слияния» конфигурации
Конфигурация OpenCode не перезаписывается, а скорееПослойное слияние。
Порядок загрузки (от низкого к высокому)
| Порядок | Source | Описание |
|---|---|---|
| 1 | Удалённый репозиторий.well-known/opencode |
Конфигурация организации по умолчанию |
| 2 | Глобальная конфигурация | ~/.config/opencode/opencode.json |
| 3 | Пользовательский путь | OPENCODE_CONFIG |
| 4 | Конфигурация проекта | В проектеopencode.json |
| 5 | .opencode/Каталог |
Возможность расширения |
| 6 | Встроенная конфигурация | OPENCODE_CONFIG_CONTENT |
Правила слияния
- Не конфликтующие поля: все сохраняются
- Конфликтующие поля: последующее переопределяет предыдущее
Пример
Глобальная конфигурация:
{
"autoupdate": true
}
Конфигурация проекта:
{
"model": "anthropic/claude-sonnet-4-5"
}
Итоговый результат:
{
"autoupdate": true,
"model": "anthropic/claude-sonnet-4-5"
}
Конфигурация проекта
Создайте в корневом каталоге проекта:
opencode.json
Назначение:
- Определите поведение ИИ для конкретного проекта
- Можно закоммитить в Git
- Переопределение глобальной конфигурации
Пример: конфигурация на уровне проекта
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"tools": {
"write": true,
"bash": true
}
}
Подробное объяснение основных модулей конфигурации
{
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
Модели и провайдеры
{
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
| Поле | Описание |
|---|---|
model |
Модель основной задачи |
small_model |
Экономичная модель для задач |
Управление инструментами
{
"tools": {
"write": false,
"bash": false
}
}
| Инструмент | Назначение |
|---|---|
| write | Запись файла |
| bash | Выполнить команду |
Этопервый уровень контроля безопасности。
Управление разрешениями
{
"permission": {
"edit": "ask",
"bash": "ask"
}
}
| Значение | Значение |
|---|---|
| allow | Автоматическое выполнение |
| ask | Подтверждать каждый раз |
| deny | Запрещено |
Агент (основная возможность)
{
"agent": {
"code-reviewer": {
"description": "代码审查",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer",
"tools": {
"write": false
}
}
}
}
Суть:Определить роль + область возможностей для ИИ
Команда (автоматизированный промпт)
{
"command": {
"test": {
"template": "Run tests and fix failures",
"description": "运行测试"
}
}
}
Суть:Система шаблонов промптов
Конфигурация TUI
{
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
Конфигурация сервера (API / Web)
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true
}
}
Сжатие контекста (оптимизация токенов)
{
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
Система плагинов
{
"plugin": [
"opencode-helicone-session",
"@my-org/custom-plugin"
]
}
MCP (экосистема расширений)
{
"mcp": {}
}
Используется для интеграции внешних инструментов (таких как Jira, базы данных и т. д.)
Система инструкций (правила ИИ)
{
"instructions": [
"CONTRIBUTING.md",
"docs/*.md"
]
}
Управление провайдером
{
"enabled_providers": ["anthropic"],
"disabled_providers": ["openai"]
}
Приоритет:
disabled > enabled
Система переменных
Переменные окружения:
{
"model": "{env:OPENCODE_MODEL}"
}
Справочник по файлам
{
"apiKey": "{file:~/.secrets/key}"
}
Механизм расширения директорий
OpenCode — это не только конфигурация JSON, он также поддерживает расширения директорий:
.opencode/ ├── agents/ ├── commands/ ├── plugins/ ├── tools/ ├── themes/
Назначение:
- Определение агентов с помощью Markdown
- Команды уровня файла
- Расширения плагинов
Рекомендуемая конфигурация для начала работы
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5",
"autoupdate": "notify",
"tools": {
"write": true,
"bash": true
},
"permission": {
"bash": "ask"
},
"compaction": {
"auto": true,
"prune": true
}
}
Резюме (с точки зрения архитектуры)
Конфигурацию OpenCode можно представить как четырёхуровневую структуру:
配置层(多级 merge)
↓
能力层(agent / tools / mcp)
↓
执行层(model / provider)
↓
交互层(tui / server / web)
По сути, это не простой файл конфигурации, а:
Центр конфигурации программируемой операционной системы AI Agent
Другие расширения