Aller au contenu

Outils

Gerer les outils qu'un LLM peut utiliser.

Les outils permettent au LLM d’effectuer des actions dans votre base de code. OpenCode est fourni avec un ensemble d’outils integres, mais vous pouvez l’etendre avec des outils personnalises ou des serveurs MCP.

Par defaut, tous les outils sont actives et ne necessitent pas d’autorisation pour s’executer. Vous pouvez controler le comportement des outils via les autorisations.


Configurer

Utilisez le champ permission pour controler le comportement des outils. Vous pouvez autoriser, refuser ou exiger une approbation pour chaque outil.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}

Vous pouvez egalement utiliser des caracteres generiques pour controler plusieurs outils a la fois. Par exemple, pour exiger une approbation pour tous les outils d’un serveur MCP :

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}

En savoir plus sur la configuration des autorisations.


Integres

Voici tous les outils integres disponibles dans OpenCode.


bash

Executez des commandes shell dans votre environnement de projet.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}

Cet outil permet au LLM d’executer des commandes terminales comme npm install, git status ou toute autre commande shell.


edit

Modifiez les fichiers existants en utilisant des remplacements de chaines exactes.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Cet outil effectue des modifications precises sur les fichiers en remplaçant les correspondances de texte exactes. C’est la methode principale pour que le LLM modifie le code.


write

Crez de nouveaux fichiers ou ecrasez des fichiers existants.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Utilisez ceci pour autoriser le LLM a creer de nouveaux fichiers. Il ecrasera les fichiers existants s’ils existent deja.


read

Lisez le contenu des fichiers de votre base de code.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}

Cet outil lit les fichiers et renvoie leur contenu. Il prend en charge la lecture de plages de lignes specifiques pour les fichiers volumineux.


grep

Recherchez le contenu des fichiers en utilisant des expressions regulieres.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}

Recherche rapide de contenu dans votre base de code. Prend en charge la syntaxe regex complete et le filtrage par modele de fichiers.


glob

Trouvez des fichiers par correspondance de modele.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}

Recherchez des fichiers en utilisant des modeles glob comme **/*.js ou src/**/*.ts. Renvoie les chemins de fichiers correspondants tries par date de modification.


list

Listez les fichiers et repertoires dans un chemin donne.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}

Cet outil liste le contenu des repertoires. Il accepte des modeles glob pour filtrer les resultats.


lsp (experimental)

Interagissez avec vos serveurs LSP configures pour obtenir des fonctionnalites d’intelligence du code comme les definitions, les references, les informations de survol et la hierarchie des appels.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}

Les operations prises en charge incluent goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls et outgoingCalls.

Pour configurer les serveurs LSP disponibles pour votre projet, consultez Serveurs LSP.


patch

Appliquez des correctifs aux fichiers.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}

Cet outil applique des fichiers de correctif a votre base de code. Utile pour appliquer des diffs et des correctifs provenant de diverses sources.


skill

Chargez une competence (un fichier SKILL.md) et renvoyez son contenu dans la conversation.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}

todowrite

Gerez les listes de taches pendant les sessions de codage.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}

Cree et met a jour des listes de taches pour suivre la progression pendant les operations complexes. Le LLM utilise ceci pour organiser les tapes multiples.


todoread

Lisez les listes de taches existantes.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}

Lit l’etat actuel de la liste de taches. Utilise par le LLM pour suivre les taches en attente ou terminees.


webfetch

Recuperez du contenu web.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}

Permet au LLM de recuperer et lire des pages web. Utile pour rechercher de la documentation ou des ressources en ligne.


question

Posez des questions a l’utilisateur pendant l’execution.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}

Cet outil permet au LLM de poser des questions a l’utilisateur pendant une tache. Il est utile pour :

  • Recueillir les preferences ou exigences de l’utilisateur
  • Clarifier les instructions ambigues
  • Obtenir des decisions sur les choix d’implementation
  • Offrir des choix sur la direction a prendre

Chaque question comprend un en-tete, le texte de la question et une liste d’options. Les utilisateurs peuvent selectionner parmi les options fournies ou taper une reponse personnalisee. Lorsqu’il y a plusieurs questions, les utilisateurs peuvent naviguer entre elles avant de soumettre toutes les reponses.


Outils personnalises

Les outils personnalises vous permettent de definir vos propres fonctions que le LLM peut appeler. Ceux-ci sont definis dans votre fichier de configuration et peuvent executer du code arbitraire.

En savoir plus sur la creation d’outils personnalises.


Serveurs MCP

Les serveurs MCP (Model Context Protocol) vous permettent d’integrer des outils et services externes. Cela inclut l’acces aux bases de donnees, les integrations API et les services tiers.

En savoir plus sur la configuration des serveurs MCP.


Fonctionnement interne

En interne, les outils comme grep, glob et list utilisent ripgrep. Par defaut, ripgrep respecte les modeles .gitignore, ce qui signifie que les fichiers et repertoires listes dans votre .gitignore seront exclus des recherches et listages.


Modeles d’ignor

Pour inclure des fichiers qui seraient normalement ignores, creez un fichier .ignore a la racine de votre projet. Ce fichier peut explicitement autoriser certains chemins.

.ignore
!node_modules/
!dist/
!build/

Par exemple, ce fichier .ignore permet a ripgrep de rechercher dans les repertoires node_modules/, dist/ et build/ meme s’ils sont listes dans .gitignore.