Skip to content

Instantly share code, notes, and snippets.

@fedir
Last active April 4, 2026 07:33
Show Gist options
  • Select an option

  • Save fedir/15d54f2c596e323ffb82a8883527b8cb to your computer and use it in GitHub Desktop.

Select an option

Save fedir/15d54f2c596e323ffb82a8883527b8cb to your computer and use it in GitHub Desktop.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-claude-auth"],
/* ─── Modèles ───────────────────────────────────────────────────────────────
model : modèle principal pour le codage et le refactoring
small_model : modèle léger pour les tâches automatiques (titres, résumés,
compaction) — OpenCode le choisit seul quand c'est suffisant */
"model": "anthropic/claude-sonnet-4-6",
"small_model": "anthropic/claude-haiku-4-5",
/* ─── Compaction du contexte ────────────────────────────────────────────────
auto : compacte quand le contexte approche la limite
prune : élague les anciens outputs d'outils AVANT la compaction complète
(seuil interne : >40k tokens d'outputs, minimum 20k purgés)
reserved : Grafana est un gros monorepo Go+TypeScript → les lectures de
fichiers et grep accumulent vite des outputs volumineux.
30 000 garantit qu'une réponse complète peut toujours sortir
même après une rafale d'appels d'outils en fin de session. */
"compaction": {
"auto": true,
"prune": true,
"reserved": 30000
},
/* ─── Permissions ────────────────────────────────────────────────────────────
"ask" sur bash et edit : évite les actions non voulues qui gaspillent
des tokens en correction. "allow" pour read-only (lecture gratuite). */
"permission": {
"edit": "ask",
"bash": "ask"
},
/* ─── Agents spécialisés ─────────────────────────────────────────────────────
title et summarize sont omis : small_model les gère automatiquement. */
"agent": {
/* Agent principal de codage → sessions longues sur Grafana,
maxSteps élevé car le refactoring multi-fichiers Go/TS enchaîne
beaucoup d'appels d'outils (lecture, grep, édition, tests) */
"build": {
"model": "anthropic/claude-sonnet-4-6",
"maxSteps": 60,
"temperature": 0
},
/* Agent exploration (read-only) → navigation dans le dépôt Grafana
sans risque de modification accidentelle, Haiku suffit pour lire/chercher */
"explore": {
"model": "anthropic/claude-haiku-4-5",
"maxSteps": 20,
"temperature": 0
},
/* Agent planification → analyse avant refactoring, Sonnet pour la qualité */
"plan": {
"model": "anthropic/claude-sonnet-4-6",
"maxSteps": 15,
"temperature": 0
}
},
/* ─── Providers actifs ───────────────────────────────────────────────────────
N'activer que ce dont vous avez besoin → évite les appels accidentels */
"enabled_providers": ["anthropic"],
/* ─── Options provider ───────────────────────────────────────────────────────*/
"provider": {
"anthropic": {
"options": {
/* Grafana = sessions longues avec beaucoup de fichiers lus →
600 000 ms (10 min) évite les timeouts sur les refactorings lents */
"timeout": 600000,
/* setCacheKey active le prompt caching d'Anthropic :
les parties stables du contexte (system prompt, fichiers déjà lus)
sont mises en cache côté serveur → jusqu'à 90% d'économie sur
les tokens d'entrée répétés entre les tours d'une même session */
"setCacheKey": true
},
"models": {
"claude-sonnet-4-6": {
"variants": {
"fast": { "temperature": 0 },
"think": {
"thinking": { "type": "enabled", "budgetTokens": 8000 }
}
}
},
"claude-haiku-4-5": {
"variants": {
"small": { "temperature": 0 }
}
}
}
}
},
/* ─── Watcher ────────────────────────────────────────────────────────────────
Grafana est un monorepo Go+TypeScript volumineux.
Exclure tout ce qui génère du bruit sans valeur pour l'agent. */
"watcher": {
"ignore": [
"node_modules/**",
".git/**",
"dist/**",
"build/**",
"public/build/**", /* bundles Webpack/Vite de Grafana */
".next/**",
"__pycache__/**",
"*.lock",
"coverage/**",
"vendor/**", /* dépendances Go vendorisées (énorme) */
"**/*.pb.go", /* fichiers protobuf générés */
"**/*_gen.go", /* fichiers Go auto-générés */
"data/**", /* données de session Grafana locale */
"tmp/**"
]
},
/* ─── Snapshots ──────────────────────────────────────────────────────────────
Désactivé : Grafana est un monorepo très volumineux, les snapshots
causent une indexation git interne lente et une consommation disque élevée.
Utiliser `git diff` / `git stash` pour annuler les changements à la place. */
"snapshot": false,
/* ─── Formatters ─────────────────────────────────────────────────────────────
Grafana utilise Go + TypeScript → activer gofmt et prettier */
"formatter": {
"prettier": {
"disabled": false /* TypeScript / CSS / JSON */
},
"gofmt": {
"disabled": false /* Go — natif dans le toolchain Go */
}
},
/* ─── Instructions ───────────────────────────────────────────────────────────
AGENTS.md est chargé automatiquement depuis la racine du projet.
Les fichiers ci-dessous sont combinés avec lui à chaque session.
Glob patterns supportés → charge les AGENTS.md de tous les sous-packages. */
"instructions": [
"AGENTS.md",
"packages/*/AGENTS.md", /* sous-packages Grafana si monorepo */
"docs/development.md" /* décommenter si ce fichier existe */
],
/* ─── MCP Servers ────────────────────────────────────────────────────────────
Ajouter uniquement les serveurs MCP réellement utilisés
(chaque serveur augmente la taille du contexte système) */
"mcp": {
/* Exemple filesystem — décommenter si nécessaire
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
} */
},
/* ─── Mise à jour automatique ────────────────────────────────────────────────
"notify" : signale les nouvelles versions sans bloquer le démarrage */
"autoupdate": "notify",
/* ─── UI ─────────────────────────────────────────────────────────────────────*/
"theme": "opencode"
}
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-claude-auth"],
// ─── Modèles ───────────────────────────────────────────────────────────────
// model : modèle principal pour le codage et le refactoring
// small_model : modèle léger pour les tâches automatiques (titres, résumés,
// compaction) — OpenCode le choisit seul quand c'est suffisant
"model": "anthropic/claude-sonnet-4-6",
"small_model": "anthropic/claude-haiku-4-5",
// ─── Compaction du contexte ────────────────────────────────────────────────
// auto : compacte quand le contexte approche la limite
// prune : élague les anciens outputs d'outils AVANT la compaction complète
// (seuil interne : >40k tokens d'outputs, minimum 20k purgés)
// reserved : Grafana est un gros monorepo Go+TypeScript → les lectures de
// fichiers et grep accumulent vite des outputs volumineux.
// 30 000 garantit qu'une réponse complète peut toujours sortir
// même après une rafale d'appels d'outils en fin de session.
"compaction": {
"auto": true,
"prune": true,
"reserved": 30000
},
// ─── Permissions ──────────────────────────────────────────────────────────
// "ask" sur bash et edit : évite les actions non voulues qui gaspillent
// des tokens en correction. "allow" pour read-only (lecture gratuite).
"permission": {
"edit": "ask",
"bash": "ask"
},
// ─── Agents spécialisés ────────────────────────────────────────────────────
// title et summarize sont omis : small_model les gère automatiquement.
"agent": {
// Agent principal de codage → sessions longues sur Grafana,
// maxSteps élevé car le refactoring multi-fichiers Go/TS enchaîne
// beaucoup d'appels d'outils (lecture, grep, édition, tests)
"build": {
"model": "anthropic/claude-sonnet-4-6",
"maxSteps": 60,
"temperature": 0
},
// Agent exploration (read-only) → navigation dans le dépôt Grafana
// sans risque de modification accidentelle, Haiku suffit pour lire/chercher
"explore": {
"model": "anthropic/claude-haiku-4-5",
"maxSteps": 20,
"temperature": 0
},
// Agent planification → analyse avant refactoring, Sonnet pour la qualité
"plan": {
"model": "anthropic/claude-sonnet-4-6",
"maxSteps": 15,
"temperature": 0
}
},
// ─── Providers actifs ─────────────────────────────────────────────────────
// N'activer que ce dont vous avez besoin → évite les appels accidentels
"enabled_providers": ["anthropic"],
// ─── Options provider ─────────────────────────────────────────────────────
"provider": {
"anthropic": {
"options": {
// Grafana = sessions longues avec beaucoup de fichiers lus →
// 600 000 ms (10 min) évite les timeouts sur les refactorings lents
"timeout": 600000,
// setCacheKey active le prompt caching d'Anthropic :
// les parties stables du contexte (system prompt, fichiers déjà lus)
// sont mises en cache côté serveur → jusqu'à 90% d'économie sur
// les tokens d'entrée répétés entre les tours d'une même session
"setCacheKey": true
},
"models": {
"claude-sonnet-4-6": {
"variants": {
"fast": { "temperature": 0 },
"think": {
"thinking": { "type": "enabled", "budgetTokens": 8000 }
}
}
},
"claude-haiku-4-5": {
"variants": {
"small": { "temperature": 0 }
}
}
}
}
},
// ─── Watcher ──────────────────────────────────────────────────────────────
// Grafana est un monorepo Go+TypeScript volumineux.
// Exclure tout ce qui génère du bruit sans valeur pour l'agent.
"watcher": {
"ignore": [
"node_modules/**",
".git/**",
"dist/**",
"build/**",
"public/build/**", // bundles Webpack/Vite de Grafana
".next/**",
"__pycache__/**",
"*.lock",
"coverage/**",
"vendor/**", // dépendances Go vendorisées (énorme)
"**/*.pb.go", // fichiers protobuf générés
"**/*_gen.go", // fichiers Go auto-générés
"data/**", // données de session Grafana locale
"tmp/**"
]
},
// ─── Snapshots ─────────────────────────────────────────────────────────────
// Désactivé : Grafana est un monorepo très volumineux, les snapshots
// causent une indexation git interne lente et une consommation disque élevée.
// Utiliser `git diff` / `git stash` pour annuler les changements à la place.
"snapshot": false,
// ─── Formatters ────────────────────────────────────────────────────────────
// Grafana utilise Go + TypeScript → activer gofmt et prettier
"formatter": {
"prettier": {
"disabled": false // TypeScript / CSS / JSON
},
"gofmt": {
"disabled": false // Go — natif dans le toolchain Go
}
},
// ─── Instructions ──────────────────────────────────────────────────────────
// AGENTS.md est chargé automatiquement depuis la racine du projet.
// Les fichiers ci-dessous sont combinés avec lui à chaque session.
// Glob patterns supportés → charge les AGENTS.md de tous les sous-packages.
"instructions": [
"AGENTS.md",
"packages/*/AGENTS.md", // sous-packages Grafana si monorepo
"docs/development.md" // décommenter si ce fichier existe
],
// ─── LSP ───────────────────────────────────────────────────────────────────
// OpenCode utilise les diagnostics LSP pour corriger les erreurs de type
// et d'import dans le même tour — sans aller-retour supplémentaire.
// Grafana = Go (backend) + TypeScript (frontend) → deux serveurs LSP.
"lsp": {
// gopls est intégré et démarre automatiquement sur les fichiers .go.
// On surcharge uniquement l'initialization pour activer staticcheck.
"go": {
"initialization": {
"analyses": {
"staticcheck": true
}
}
},
// typescript-language-server est intégré et démarre automatiquement
// quand typescript est détecté comme dépendance du projet.
// On surcharge uniquement la préférence d'import pour matcher Grafana.
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
},
// ─── MCP Servers ───────────────────────────────────────────────────────────
// Ajouter uniquement les serveurs MCP réellement utilisés
// (chaque serveur augmente la taille du contexte système)
"mcp": {
// Exemple filesystem — décommenter si nécessaire
// "filesystem": {
// "type": "stdio",
// "command": "npx",
// "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
// }
},
// ─── Mise à jour automatique ───────────────────────────────────────────────
"autoupdate": "notify", // notifie sans bloquer le démarrage
// ─── UI ────────────────────────────────────────────────────────────────────
"theme": "opencode"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment