mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-28 20:49:55 +00:00
379 lines
10 KiB
Text
379 lines
10 KiB
Text
---
|
||
title: Outils
|
||
description: Gérez les outils qu'un LLM peut utiliser.
|
||
---
|
||
|
||
Les outils permettent au LLM d'effectuer des actions dans votre base de code. OpenCode est livré avec un ensemble d'outils intégrés, mais vous pouvez l'étendre avec [outils personnalisés](/docs/custom-tools) ou [serveurs MCP](/docs/mcp-servers).
|
||
|
||
Par défaut, tous les outils sont **activés** et n'ont pas besoin d'autorisation pour s'exécuter. Vous pouvez contrôler le comportement de l'outil via [permissions](/docs/permissions).
|
||
|
||
---
|
||
|
||
## Configurer
|
||
|
||
Utilisez le champ `permission` pour contrôler le comportement de l'outil. Vous pouvez autoriser, refuser ou exiger une approbation pour chaque outil.
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"edit": "deny",
|
||
"bash": "ask",
|
||
"webfetch": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Vous pouvez également utiliser des caractères génériques pour contrôler plusieurs outils à la fois. Par exemple, pour exiger l'approbation de tous les outils d'un serveur MCP :
|
||
|
||
```json title="opencode.json"
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"mymcp_*": "ask"
|
||
}
|
||
}
|
||
```
|
||
|
||
[En savoir plus](/docs/permissions) sur la configuration des autorisations.
|
||
|
||
---
|
||
|
||
## Intégré
|
||
|
||
Voici tous les outils intégrés disponibles dans OpenCode.
|
||
|
||
---
|
||
|
||
### frapper
|
||
|
||
Exécutez des commandes shell dans votre environnement de projet.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"bash": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Cet outil permet au LLM d'exécuter des commandes de terminal telles que `npm install`, `git status` ou toute autre commande shell.
|
||
|
||
---
|
||
|
||
### modifier
|
||
|
||
Modifiez les fichiers existants en utilisant des remplacements de chaînes exacts.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"edit": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Cet outil effectue des modifications précises des fichiers en remplaçant les correspondances de texte exactes. C'est la principale façon dont LLM modifie le code.
|
||
|
||
---
|
||
|
||
### écrire
|
||
|
||
Créez de nouveaux fichiers ou écrasez ceux existants.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"edit": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Utilisez-le pour permettre au LLM de créer de nouveaux fichiers. Il écrasera les fichiers existants s'ils existent déjà.
|
||
|
||
:::note
|
||
L'outil `write` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`, `multiedit`).
|
||
:::
|
||
|
||
---
|
||
|
||
### lire
|
||
|
||
Lisez le contenu du fichier à partir de votre base de code.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$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 spécifiques pour les fichiers volumineux.
|
||
|
||
---
|
||
|
||
### grep
|
||
|
||
Recherchez le contenu du fichier à l’aide d’expressions régulières.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"grep": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Recherche rapide de contenu dans votre base de code. Prend en charge la syntaxe regex complète et le filtrage des modèles de fichiers.
|
||
|
||
---
|
||
|
||
### globe
|
||
|
||
Recherchez des fichiers par correspondance de modèles.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"glob": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Recherchez des fichiers à l'aide de modèles globaux tels que `**/*.js` ou `src/**/*.ts`. Renvoie les chemins de fichiers correspondants triés par heure de modification.
|
||
|
||
---
|
||
|
||
### liste
|
||
|
||
Répertoriez les fichiers et les répertoires dans un chemin donné.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"list": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Cet outil répertorie le contenu du répertoire. Il accepte les modèles globaux pour filtrer les résultats.
|
||
|
||
---
|
||
|
||
### lsp (expérimental)
|
||
|
||
Interagissez avec vos serveurs LSP configurés pour obtenir des fonctionnalités d'intelligence du code telles que des définitions, des références, des informations de survol et une hiérarchie d'appels.
|
||
|
||
:::note
|
||
Cet outil n'est disponible que lorsque `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (ou `OPENCODE_EXPERIMENTAL=true`).
|
||
:::
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"lsp": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Les opérations prises en charge incluent `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` et `outgoingCalls`.
|
||
|
||
Pour configurer les serveurs LSP disponibles pour votre projet, consultez [LSP Servers](/docs/lsp).
|
||
|
||
---
|
||
|
||
### correctif
|
||
|
||
Appliquez des correctifs aux fichiers.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"edit": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Cet outil applique les fichiers de correctifs à votre base de code. Utile pour appliquer des différences et des correctifs provenant de diverses sources.
|
||
|
||
:::note
|
||
L'outil `patch` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`, `multiedit`).
|
||
:::
|
||
|
||
---
|
||
|
||
### compétence
|
||
|
||
Chargez une [skill](/docs/skills) (un fichier `SKILL.md`) et renvoyez son contenu dans la conversation.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"skill": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### à écrire
|
||
|
||
Gérez les listes de tâches pendant les sessions de codage.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"todowrite": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Crée et met à jour des listes de tâches pour suivre la progression lors d'opérations complexes. Le LLM l'utilise pour organiser des tâches en plusieurs étapes.
|
||
|
||
:::note
|
||
Cet outil est désactivé par défaut pour les sous-agents, mais vous pouvez l'activer manuellement. [En savoir plus](/docs/agents/#permissions)
|
||
:::
|
||
|
||
---
|
||
|
||
### todore
|
||
|
||
Lisez les listes de tâches existantes.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"todoread": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Lit l'état actuel de la liste de tâches. Utilisé par le LLM pour suivre les tâches en attente ou terminées.
|
||
|
||
:::note
|
||
Cet outil est désactivé par défaut pour les sous-agents, mais vous pouvez l'activer manuellement. [En savoir plus](/docs/agents/#permissions)
|
||
:::
|
||
|
||
---
|
||
|
||
### récupération sur le Web
|
||
|
||
Récupérer du contenu Web.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"webfetch": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Permet au LLM de récupérer et de lire des pages Web. Utile pour rechercher de la documentation ou rechercher des ressources en ligne.
|
||
|
||
---
|
||
|
||
### recherche sur le Web
|
||
|
||
Recherchez des informations sur le Web.
|
||
|
||
:::note
|
||
Cet outil n'est disponible que lors de l'utilisation du fournisseur OpenCode ou lorsque la variable d'environnement `OPENCODE_ENABLE_EXA` est définie sur une valeur véridique (par exemple, `true` ou `1`).
|
||
|
||
À activer lors du lancement de OpenCode :
|
||
|
||
```bash
|
||
OPENCODE_ENABLE_EXA=1 opencode
|
||
```
|
||
|
||
:::
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"websearch": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Effectue des recherches sur le Web à l'aide d'Exa AI pour trouver des informations pertinentes en ligne. Utile pour rechercher des sujets, trouver des événements actuels ou collecter des informations au-delà de la limite des données de formation.
|
||
|
||
Aucune clé API n'est requise : l'outil se connecte directement au service MCP hébergé d'Exa AI sans authentification.
|
||
|
||
:::tip
|
||
Utilisez `websearch` lorsque vous avez besoin de rechercher des informations (découverte) et `webfetch` lorsque vous devez récupérer le contenu d'un URL spécifique (récupération).
|
||
:::
|
||
|
||
---
|
||
|
||
### question
|
||
|
||
Posez des questions à l'utilisateur pendant l'exécution.
|
||
|
||
```json title="opencode.json" {4}
|
||
{
|
||
"$schema": "https://opencode.ai/config.json",
|
||
"permission": {
|
||
"question": "allow"
|
||
}
|
||
}
|
||
```
|
||
|
||
Cet outil permet au LLM de poser des questions à l'utilisateur lors d'une tâche. C'est utile pour :
|
||
|
||
- Recueillir les préférences ou les exigences des utilisateurs
|
||
- Clarifier les instructions ambiguës
|
||
- Obtenir des décisions sur les choix de mise en œuvre
|
||
- Offrir des choix sur la direction à prendre
|
||
|
||
Chaque question comprend un en-tête, le texte de la question et une liste d'options. Les utilisateurs peuvent choisir parmi les options proposées ou saisir une réponse personnalisée. Lorsqu'il y a plusieurs questions, les utilisateurs peuvent naviguer entre elles avant de soumettre toutes les réponses.
|
||
|
||
---
|
||
|
||
## Outils personnalisés
|
||
|
||
Les outils personnalisés vous permettent de définir vos propres fonctions que le LLM peut appeler. Ceux-ci sont définis dans votre fichier de configuration et peuvent exécuter du code arbitraire.
|
||
|
||
[En savoir plus](/docs/custom-tools) sur la création d'outils personnalisés.
|
||
|
||
---
|
||
|
||
## Serveurs MCP
|
||
|
||
Les serveurs MCP (Model Context Protocol) vous permettent d'intégrer des outils et services externes. Cela inclut l'accès à la base de données, les intégrations API et les services tiers.
|
||
|
||
[En savoir plus](/docs/mcp-servers) sur la configuration des serveurs MCP.
|
||
|
||
---
|
||
|
||
## Internes
|
||
|
||
En interne, des outils comme `grep`, `glob` et `list` utilisent [ripgrep](https://github.com/BurntSushi/ripgrep) sous le capot. Par défaut, ripgrep respecte les modèles `.gitignore`, ce qui signifie que les fichiers et répertoires répertoriés dans votre `.gitignore` seront exclus des recherches et des listes.
|
||
|
||
---
|
||
|
||
### Ignorer les modèles
|
||
|
||
Pour inclure des fichiers qui seraient normalement ignorés, créez un fichier `.ignore` à la racine de votre projet. Ce fichier peut autoriser explicitement certains chemins.
|
||
|
||
```text title=".ignore"
|
||
!node_modules/
|
||
!dist/
|
||
!build/
|
||
```
|
||
|
||
Par exemple, ce fichier `.ignore` permet à ripgrep de rechercher dans les répertoires `node_modules/`, `dist/` et `build/` même s'ils sont répertoriés dans `.gitignore`.
|