Aller au contenu

OpenCode : un framework d’agents IA pour unifier et automatiser le développement

OpenCode s'inscrit dans la nouvelle génération d'outils d'agent GenIA pour le code. Plus qu'un simple agent, il se présente comme un véritable framework open-source, conçu pour unifier l'accès à n'importe quel LLM et offrir une expérience de développement profondément intégrée et personnalisable

Connaissez-vous OpenCode ?

Alors que les agents IA en ligne de commande se multiplient (GitHub Copilot CLI, Gemini CLI, Claude Code, ...), OpenCode se démarque par sa philosophie ouverte et son architecture flexible. Son approche agnostique des modèles, son système de sous-agents spécialisés et son intégration poussée avec l'écosystème de développement via les LSP (Language Server Protocol) en font un outil redoutable pour les développeurs qui cherchent à automatiser des tâches complexes de manière fiable et prédictible.

Un écosystème unifié et agnostique

Le point de départ d'OpenCode est une promesse simple mais puissante : offrir une interface unifiée pour interagir avec n'importe quel modèle d'IA. Là où la plupart des outils sont liés à un fournisseur unique, OpenCode est compatible avec une multitude de services.

  • Agnostique du modèle : Il prend en charge nativement des fournisseurs comme OpenAI, Anthropic (Claude, y compris avec l'abonnement Claude Pro), OpenRouter ou encore GitHub Copilot.
  • Open Source : Contrairement à plusieurs de ses concurrents, OpenCode est entièrement open-source.

Cette flexibilité permet aux développeurs de choisir le meilleur modèle pour chaque tâche sans jamais changer d'outil, créant un workflow cohérent et centralisé.

Au-delà d'un simple agent : des fonctionnalités avancées

OpenCode ne se contente pas d'exécuter des prompts. Il fournit une boîte à outils complète pour construire des automatisations complexes et fiables.

Une architecture à base de sous-agents

L'une des fonctionnalités les plus structurantes d'OpenCode est sa capacité à orchestrer des sous-agents. Un agent principal peut ainsi déléguer des tâches à des agents plus petits et spécialisés.

On peut par exemple imaginer la hiérarchie suivante :

  • Un agent principal qui analyse la demande globale de l'utilisateur.
  • Un sous-agent de code pour l'écriture et la modification de fichiers.
  • Un sous-agent de test pour la génération de tests unitaires.
  • Un sous-agent Git pour gérer le versioning.
  • Un sous-agent de documentation pour mettre à jour les fichiers README.md.

L'intérêt est double : chaque agent, ayant un périmètre d'action et des outils limités, devient beaucoup plus prédictible et efficace. Cela réduit le risque d'hallucination et permet de construire des chaînes de travail complexes avec une plus grande confiance.

Une configuration simple et puissante en Markdown

Pour rendre la création d'agents accessible, OpenCode adopte une approche "convention over configuration" basée sur des fichiers Markdown. La création d'un nouvel agent se fait simplement en ajoutant un fichier .md dans un répertoire dédié. Ce fichier définit tout son comportement :

  • Le prompt système qui définit sa personnalité et ses objectifs.
  • Les outils (tools et MCP) auxquels il a accès.
  • Ses permissions sur le système de fichiers.
  • Une description de ses capacités.
---
description: Create commits and manage git repository
permission:
  bash:
    "*": "deny"
    "git *": "allow"
    "gh *": "allow"
tools:
  "write": false
  "edit": false
  "bash": true
  "read": true
  "grep": true
  "glob": true
  "github_*": true
---


You are responsible for creating commits and pull requests. 
Always check for existing branch names and commits to find what conventions are in used.
If the repository is new, default to Gitmoji.

Generate meaningful branch names following the conventional commit pattern

## Branch Name

Conventional Branch is a standardized Git branch naming convention that improves code organization, team collaboration, and CI/CD integration.

<!-- ... -->

Exemple de définition d'agent

L'intelligence d'un IDE grâce au support des LSP

C'est peut-être la fonctionnalité la plus différenciante d'OpenCode : il intègre le Language Server Protocol (LSP). Le LSP est la technologie utilisée par des IDE comme VSCode, Intellij ou NeoVim pour comprendre la syntaxe du code, détecter les erreurs, et fournir l'autocomplétion.

En intégrant un LSP, OpenCode ne se contente pas de "voir" le code comme du texte, il le comprend. Concrètement, cela signifie que lorsqu'il génère du code :

  1. Il détecte les erreurs en temps réel : S'il essaie d'utiliser une fonction qui n'existe pas ou un type incorrect (y compris s'il vient d'un autre fichier), le LSP le lui signale immédiatement.
  2. Il évite les régressions : Si une librairie a été mise à jour avec des changements majeurs (breaking changes), l'agent ne pourra pas utiliser l'ancienne API, car le LSP l'invalidera. Il est forcé de se conformer à la version actuelle du code, même si ses données d'entraînement sont plus anciennes.

Cela résout l'un des problèmes majeurs des Agents IA pour le code, qui oublient souvent de créer une dépendance ou utilisent des API obsolètes voire inexistantes. OpenCode agit comme un IDE, garantissant une meilleure qualité de code.

Des outils et des plugins pour une intégration sur mesure

OpenCode est conçu pour être extensible. Son système de plugins permet de déclencher des actions à des moments clés du cycle de vie d'un agent (par exemple, à la fin d'une tâche). Cela peut être utile pour limiter l'utilisation de certains tools ou notifier qu'une tâche est terminée.

const path = require("path");
const fs = require("fs").promises;

export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
  const getRandomMp3 = async () => {
    //...
  };

  return {
    event: async ({ event }) => {
      // Send notification on session completion
      if (event.type === "session.idle") {
        const randomSound = await getRandomMp3();
        await $`afplay "${randomSound}"`;
        await $`osascript -e 'display notification "${directory}" with title "Opencode Session Complete"'`;
      }
    },
  }
}

Exemple de plugin pour envoyer une notification quand un agent a terminé son travail

De plus, il est possible de définir des outils personnalisés via une API typescript très simple à prendre en main. Cela permet de donner à l'agent des capacités spécifiques à votre projet, comme lancer un environnement de développement avec une commande complexe ou interagir avec des services internes.

Toutes ces configurations peuvent être créées pour un projet particulier, ce qui facilite leur partage au sein d’une équipe. Mais aussi être mises au global du système (dans le dossier ~/.config/opencode) pour une utilisation identique sur tous les projets. Cela comprend aussi bien les tools, les plugins mais aussi les Agent et tout ce qu'OpenCode permet de configurer.

Une expérience développeur pensée pour la productivité

Enfin, OpenCode est plein de fonctionnalités simplifiant le quotidien.

  • Commandes personnalisées : Fatigué de copier-coller des prompts récurrents ? Les commandes permettent de créer des alias. Par exemple, un simple /unittest peut correspondre à un prompt détaillé pour générer des tests. C'est aussi un excellent moyen de "scoper" le contexte d'un prompt, notamment dans des gros monorepos, en indiquant à l'agent sur quel projet il doit se concentrer.
---
description: Write unit tests
agent: build
model: anthropic/claude-4.5
---
  
Generate unit tests for the files modified since the last commit
- 100% code coverage
- Edge cases handling
- Mocking external dependencies
- Follow project best practices
- Iterate until the tests pass

Exemple de définition de commande

  • Architecture Client-Serveur : OpenCode peut tourner en mode serveur, ce qui ouvre la porte à des interfaces alternatives (une interface web est en développement) ou à l'exécution de tâches à distance dans un conteneur Docker.
  • Gestion multimédia : Il accepte du texte et des images en entrée et peut également lancer des commandes Bash (il est également possible de restreindre les commandes en question) ce qui lui donne une grande polyvalence pour différentes tâches.

Maintenance et communauté

OpenCode est maintenu par Anomaly, une entreprise dont l'activité principale est la création d'outil OpenSource. Ils offrent également un support en cas de besoin organisationnel spécifique. Cela assure un support solide et une feuille de route claire. La communauté est également très active, notamment sur Discord, offrant un support rapide et des discussions pertinentes.

OpenCode dans votre organisation

La totalité de la communication avec les providers de LLM se fait directement depuis le poste d’exécution sans passer par les serveurs des mainteneurs. Seuls des données analytiques sont envoyées sans les contexts et prompts. Comme OpenCode est agnostique du modèle, il s’intègre parfaitement dans des organisations disposant déjà d’un outil d’IA comme GitHub Copilot ou Claude Pro/Max sans frais supplémentaire.

Conclusion : un outil mature et indispensable

OpenCode n'est pas juste un agent IA de plus. C'est un framework complet, open-source et agnostique, qui place le développeur aux commandes. En combinant une architecture modulaire (sous-agents), une configuration intuitive (Markdown) et une véritable compréhension du code (LSP), il offre une plateforme robuste pour automatiser des workflows complexes.

Après plusieurs mois d'utilisation et en le comparant à de nombreuses alternatives, OpenCode s'impose par sa flexibilité, sa fiabilité et la richesse de son écosystème. Pour tout développeur cherchant à intégrer l'IA dans son travail de manière profonde et maîtrisée, il est aujourd'hui un choix incontournable.

Dernier