Outils OpenCode

Les capacités essentielles d'OpenCode ne proviennent pas seulement du grand modèle lui-même, mais aussi desoutils qu'il peut invoquer。

L'essence des outils : faire passer le LLM de la capacité de parler à la capacité de faire des choses.

Outils = capacité d'exécution d'OpenCode, tandis que permissions = limites de sécurité.


1. Que sont les outils

Les outils sont les interfaces de capacité permettant au LLM d'effectuer des opérations dans un projet, par exemple :

  • Lire du code
  • Modifier des fichiers
  • Exécuter des commandes
  • Rechercher du code
  • Accéder au réseau

Sans outils : peut seulement générer du code

Avec les outils : peutmanipuler directement le projet


2. Contrôle des permissions des outils (Le plus important)

Par défaut :

  • Tous les outils sont activés
  • Et peuvent être exécutés sans confirmation

Les environnements de production doivent configurer les autorisations !

1. Configuration de base des autorisations

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}
Valeur d'autorisation Description
autoriser Autoriser l'exécution directe
refuser Complètement interdit
ask Nécessite une confirmation manuelle avant l'exécution

2. Contrôle des jokers

Vous pouvez contrôler les outils par lots :

{
  "permission": {
    "mymcp_*": "ask"
  }
}

Tous les outils provenant de MCP nécessitent une approbation


3. Outils intégrés expliqués

OpenCode est livré avec un ensemble complet d'outils de niveau ingénierie :

1. bash (Exécution de commandes)

{
  "permission": {
    "bash": "allow"
  }
}

Objectif :

  • Exécuter des commandes shell
  • Comme npm install, git status

Risque :Élevé (recommandé de définir sur ask)

2. edit (Outil principal)

{
  "permission": {
    "edit": "allow"
  }
}

Objectif :

  • Modifier les fichiers existants
  • Basé sur un remplacement précis de texte

Remarque :Il s'agit de la capacité essentielle permettant à l'IA de modifier du code

3. write (Création de fichiers)

Objectif :

  • Créer de nouveaux fichiers
  • Écraser les fichiers existants

Remarque :

write est contrôlé par l'autorisation d'édition

4. read (Lire le fichier)

{
  "permission": {
    "read": "allow"
  }
}

Objectif :

  • Lire les fichiers de code
  • Prend en charge la lecture ligne par ligne

Risque :Faible (recommandé de toujours autoriser)

5. grep (Recherche de contenu)

{
  "permission": {
    "grep": "allow"
  }
}

Objectif :

  • Rechercher dans le code avec des expressions régulières

6. glob (Correspondance de fichiers)

Objectif :

  • Trouver des chemins de fichiers (par ex., src/**/*.ts)

7. list (Navigation dans les répertoires)

Objectif :

  • Lister la structure des répertoires

8. patch (Application de correctif)

Objectif :

  • Appliquer les patchs de diff

Remarque :Contrôlé par la permission d'édition

9. lsp (Expérimental)

Objectif :

  • Analyse intelligente du code (aller à la définition, rechercher les références)

Comment l'activer :

OPENCODE_EXPERIMENTAL_LSP_TOOL=true

10. skill (Chargement des compétences)

Objectif :

  • Charger SKILL.md
  • Améliorer le comportement de l'IA

11. todowrite (Gestion des tâches)

Objectif :

  • Maintenir les listes de tâches
  • Suivre des flux de travail complexes

12. webfetch (Lecture de pages web)

Objectif :

  • Récupérer le contenu d'une URL spécifiée

13. websearch (Recherche en ligne)

Comment l'activer :

OPENCODE_ENABLE_EXA=1 opencode

Objectif :

  • Rechercher des informations sur Internet

Différence :

  • websearch : trouver des informations (découverte)
  • webfetch : lire le contenu (récupération)

14. question (Questionnement interactif)

Objectif :

  • Poser des questions à l'utilisateur
  • Recueillir les exigences

Adapté à :

  • Exigences peu claires
  • Lorsque des décisions de l'utilisateur sont nécessaires

4. Outils personnalisés

Vous pouvez définir vos propres outils pour permettre à l'IA d'exécuter une logique personnalisée.

Par exemple :

  • Appel d'API internes
  • Exploiter des bases de données
  • Exécuter la logique métier

Essence:Permettre au LLM d'appeler des fonctions


5. Serveurs MCP (capacités avancées)

MCP (Model Context Protocol) vous permet de connecter des systèmes externes :

  • Bases de données
  • API tierces
  • Services internes

Cela équivaut à connecter des "capacités externes" à l'IA


6. Mécanisme sous-jacent (important)

OpenCode utilise ripgrep comme moteur de recherche :

  • Respecte .gitignore
  • Ignore les répertoires comme node_modules par défaut

Comment remplacer les règles d’ignorance

Créez un fichier :

.ignore

Exemple :

!node_modules/
!dist/
!build/

Forcer l’inclusion de ces répertoires


7. Bonnes pratiques (vivement recommandées)

  • read / grep / glob → autoriser
  • edit → demander (phase de développement)
  • bash → demander (environnement de production)
  • webfetch → autoriser

Principes fondamentaux :

  • La lecture peut être ouverte
  • Les modifications doivent être contrôlées
  • Soyez prudent avec l'exécution des commandes
Autres extensions