Configuration prête à l'emploi pour piloter, depuis OpenCode, des projets de data science et MLOps en R et Python dans l'environnement Onyxia / SSP Cloud, en s'appuyant sur les modèles auto-hébergés de la plateforme (les données envoyées aux agents restent donc dans le périmètre Insee).
opencode-onyxia/
├── opencode.jsonc # config principale : fournisseur, modèles, agents, permissions, MCP
├── AGENTS.md # contexte Onyxia partagé par TOUS les agents (chargé automatiquement)
├── install.sh # installation GLOBALE dans ~/.config/opencode (tous projets)
├── INSTALL.md # guide d'installation détaillé
├── prompts/ # prompt système de chaque agent
│ ├── build.md plan.md python-ds.md r-ds.md mlops.md reviewer.md dataviz-vision.md
└── .opencode/skills/ # savoir-faire chargés à la demande (1 dossier = 1 skill)
├── onyxia-storage-s3/SKILL.md
├── mlflow-tracking/SKILL.md
├── argo-mlops/SKILL.md
├── python-datascience/SKILL.md
├── r-datascience/SKILL.md
├── reproductibilite-onyxia/SKILL.md
├── quarto-publication/SKILL.md
├── vault-secrets-onyxia/SKILL.md
└── git-workflow-ds/SKILL.md
- Installer OpenCode dans le service (VSCode/Jupyter) :
curl -fsSL https://opencode.ai/install | bash - Installer la config en global (valable pour tous les projets) — script fourni :
Il copie la config,
cd opencode-onyxia && ./install.sh
AGENTS.md, les prompts et les skills dans~/.config/opencode/. Détails et alternatives (manuel, suivi Git, surcharge par projet) dansINSTALL.md. - Récupérer une clé d'API sur la passerelle Open WebUI
https://llm.lab.sspcloud.fr(Settings → Account → API Keys), puis renseigner les deux variables d'environnement :(Idéalement stockées dans Vault et injectées par le service.)export OPENAI_BASE_URL="https://llm.lab.sspcloud.fr/v1" export OPENAI_API_KEY="sk-……"
- Vérifier l'endpoint (Open WebUI expose
/v1et/api) :Réponsecurl -s "$OPENAI_BASE_URL/chat/completions" \ -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" \ -d '{"model":"qwen3-6-35b-moe","messages":[{"role":"user","content":"ping"}],"max_tokens":5}'
chat.completion→/v1est correct ;404→ utiliser…/api. Les identifiants de modèles (qwen3-6-35b-moe,gemma4-26b-moe,qwen3-vl) sont déjà confirmés et présents dans la config. - Lancer :
opencodepuis/modelspour confirmer la présence des modèles.
- Basculer entre agents principaux (
build⇄plan) : touche Tab. - Déléguer : les sous-agents (
python-ds,r-ds,mlops,reviewer,dataviz-vision) sont appelés automatiquement selon le besoin, ou explicitement via@nom(ex.@reviewer relis le diff,@mlops déploie ce modèle). - Skills : chargées automatiquement quand la tâche correspond à leur description ; on peut aussi y faire référence dans le prompt.
| Modèle | Rôle dans la config |
|---|---|
qwen3-6-35b-moe |
modèle par défaut — code, raisonnement, agents build/python-ds/r-ds/mlops |
gemma4-26b-moe |
small_model (titres, résumés) + agents plan et reviewer (diversité de point de vue) |
qwen3-vl |
agent dataviz-vision — lecture de graphiques, schémas, captures |
Deux serveurs remote sont pré-déclarés dans opencode.jsonc avec
"enabled": false : excalidraw (diagrammes, nécessite EXCALIDRAW_API_KEY)
et datagouv (données publiques data.gouv.fr). Activation et précautions de
confidentialité : voir INSTALL.md.
- OpenCode n'est pas sandboxé : les commandes
bashs'exécutent réellement sur le pod. Les permissions deopencode.jsoncautorisent l'outillage data science usuel et demandent confirmation pour le réseau, Kubernetes et les suppressions. - MCP désactivé par défaut (un MCP « remote » enverrait du contexte hors plateforme).
- Sur l'instance publique, ne traiter que des données publiques / non sensibles.
- Ajouter un agent : nouveau bloc sous
agent+ un prompt dansprompts/. - Ajouter un savoir-faire : nouveau dossier
.opencode/skills/<nom>/SKILL.md(en-tête YAMLname+descriptionobligatoires). - Les skills suivent le standard Agent Skills : celles écrites pour Claude Code fonctionnent telles quelles.