Fichier de configuration OpenCode
OpenCode utilise le format JSON pour la configuration.
Nous pouvons d'abord examiner le fichier de configuration global~/.config/opencode/opencode.json:
touch ~/.config/opencode/opencode.json

Contient les informations sur le fournisseur de modèle et la configuration :
{
// 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"
}
}
}
}
}
Un exemple de configuration minimale viable
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
"theme": "default"
}Éléments de configuration globale courants :
| Élément de configuration | Type | Description |
|---|---|---|
model |
string | Modèle principal par défaut |
small_model |
string | Modèle pour tâches légères (par ex., génération de titres) |
autoupdate |
booléen / "notify" | Politique de mise à jour automatique |
theme |
string | Thème de l'interface |
provider |
objet | Configuration du fournisseur de modèle |
Exemple de fournisseur :
{
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
Comprendre le « mécanisme de fusion » de la configuration
La configuration d'OpenCode n'est pas écrasée, mais plutôtFusion en couches。
Ordre de chargement (du plus faible au plus élevé)
| Ordre | Source | Description |
|---|---|---|
| 1 | Distant.well-known/opencode |
Configuration par défaut de l'organisation |
| 2 | Configuration globale | ~/.config/opencode/opencode.json |
| 3 | Chemin personnalisé | OPENCODE_CONFIG |
| 4 | Configuration du projet | Dans le projetopencode.json |
| 5 | .opencode/Répertoire |
Capacité d'extension |
| 6 | Configuration en ligne | OPENCODE_CONFIG_CONTENT |
Règles de fusion
- Champs non conflictuels : tous conservés
- Champs en conflit : le dernier remplace le premier
Exemple
Configuration globale :
{
"autoupdate": true
}
Configuration du projet :
{
"model": "anthropic/claude-sonnet-4-5"
}
Résultat final :
{
"autoupdate": true,
"model": "anthropic/claude-sonnet-4-5"
}
Configuration du projet
Créer dans le répertoire racine du projet :
opencode.json
Objectif :
- Définir le comportement de l'IA propre au projet
- Peut être commité dans Git
- Remplacer la configuration globale
Exemple : Configuration au niveau du projet
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-5",
"tools": {
"write": true,
"bash": true
}
}
Explication détaillée des modules de configuration principaux
{
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
Modèles et fournisseurs
{
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
| Champ | Description |
|---|---|
model |
Modèle de tâche principal |
small_model |
Modèle de tâche à faible coût |
Contrôle des outils
{
"tools": {
"write": false,
"bash": false
}
}
| Outil | Objectif |
|---|---|
| write | Écrire dans le fichier |
| bash | Exécuter la commande |
Ceci estLa première couche de contrôle de sécurité。
Contrôle des permissions
{
"permission": {
"edit": "ask",
"bash": "ask"
}
}
| Valeur | Signification |
|---|---|
| autoriser | Exécution automatique |
| ask | Confirmer à chaque fois |
| refuser | Interdit |
Agent (Capacité principale)
{
"agent": {
"code-reviewer": {
"description": "代码审查",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer",
"tools": {
"write": false
}
}
}
}
Essence :Définir le rôle + le périmètre de capacités pour l’IA
Commande (Prompt automatisé)
{
"command": {
"test": {
"template": "Run tests and fix failures",
"description": "运行测试"
}
}
}
Essence:Système de modèles de prompt
Configuration de l'interface TUI
{
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
Configuration du serveur (API / Web)
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true
}
}
Compression du contexte (Optimisation des tokens)
{
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}
Système de plugins
{
"plugin": [
"opencode-helicone-session",
"@my-org/custom-plugin"
]
}
MCP (Écosystème d’extensions)
{
"mcp": {}
}
Utilisé pour intégrer des outils externes (tels que Jira, bases de données, etc.)
Système d’instructions (Règles de l’IA)
{
"instructions": [
"CONTRIBUTING.md",
"docs/*.md"
]
}
Contrôle du fournisseur
{
"enabled_providers": ["anthropic"],
"disabled_providers": ["openai"]
}
Priorité :
disabled > enabled
Système de variables
Variables d'environnement :
{
"model": "{env:OPENCODE_MODEL}"
}
Référence de fichier
{
"apiKey": "{file:~/.secrets/key}"
}
Mécanisme d'extension de répertoire
OpenCode n'est pas seulement une configuration JSON, il prend également en charge les extensions de répertoire :
.opencode/ ├── agents/ ├── commands/ ├── plugins/ ├── tools/ ├── themes/
Objectif :
- Définir des agents avec Markdown
- Commandes au niveau du fichier
- Extensions de plugins
Configuration de démarrage recommandée
{
"$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
}
}
Résumé (perspective d'architecture)
La configuration d'OpenCode peut être comprise comme une structure à quatre couches :
配置层(多级 merge)
↓
能力层(agent / tools / mcp)
↓
执行层(model / provider)
↓
交互层(tui / server / web)
Essentiellement, il ne s'agit pas d'un simple fichier de configuration, mais d'un :
Centre de configuration d'un système d'exploitation programmable d'agent IA
Autres extensions