mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-10 02:39:56 +00:00
wip(docs): i18n (#12681)
This commit is contained in:
67
packages/web/src/content/docs/fr/1-0.mdx
Normal file
67
packages/web/src/content/docs/fr/1-0.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: Migration vers 1.0
|
||||
description: Quoi de neuf dans OpenCode 1.0.
|
||||
---
|
||||
|
||||
OpenCode 1.0 est une réécriture complète de TUI.
|
||||
|
||||
Nous sommes passés du TUI basé sur go+bubbletea qui présentait des problèmes de performances et de capacités à un framework interne (OpenTUI) écrit en zig+solidjs.
|
||||
|
||||
Le nouveau TUI fonctionne comme l'ancien puisqu'il se connecte au même serveur opencode.
|
||||
|
||||
---
|
||||
|
||||
## Mise à niveau
|
||||
|
||||
Vous ne devriez pas être automatiquement mis à niveau vers la version 1.0 si vous utilisez actuellement une version précédente
|
||||
version. Cependant, certaines anciennes versions de OpenCode récupèrent toujours la dernière version.
|
||||
|
||||
Pour mettre à niveau manuellement, exécutez
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 1.0.0
|
||||
```
|
||||
|
||||
Pour revenir à 0.x, exécutez
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 0.15.31
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Changements UX
|
||||
|
||||
L'historique de la session est plus compressé, affichant uniquement tous les détails de l'outil d'édition et de bash.
|
||||
|
||||
Nous avons ajouté une barre de commandes par laquelle presque tout passe. Appuyez sur ctrl+p pour l'afficher dans n'importe quel contexte et voir tout ce que vous pouvez faire.
|
||||
|
||||
Ajout d'une barre latérale de session (peut être basculée) avec des informations utiles.
|
||||
|
||||
Nous avons supprimé certaines fonctionnalités que nous n'étions pas sûrs que quiconque utilisait réellement. S'il manque quelque chose d'important, veuillez ouvrir un problème et nous le rajouterons rapidement.
|
||||
|
||||
---
|
||||
|
||||
## Modifications radicales
|
||||
|
||||
### Raccourcis clavier renommés
|
||||
|
||||
- messages_revert -> messages_undo
|
||||
- switch_agent -> agent_cycle
|
||||
- switch_agent_reverse -> agent_cycle_reverse
|
||||
- switch_mode -> agent_cycle
|
||||
- switch_mode_reverse -> agent_cycle_reverse
|
||||
|
||||
### Raccourcis clavier supprimés
|
||||
|
||||
- messages_layout_toggle
|
||||
- messages_suivant
|
||||
- messages_précédent
|
||||
- fichier_diff_toggle
|
||||
- recherche_fichier
|
||||
- fichier_fermer
|
||||
- liste_fichiers
|
||||
- app_help
|
||||
- projet_init
|
||||
- outil_détails
|
||||
- blocs_de_pensée
|
||||
156
packages/web/src/content/docs/fr/acp.mdx
Normal file
156
packages/web/src/content/docs/fr/acp.mdx
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: ACP Assistance
|
||||
description: Utilisez OpenCode dans n’importe quel éditeur compatible ACP.
|
||||
---
|
||||
|
||||
OpenCode prend en charge le [Agent Client Protocol](https://agentclientprotocol.com) ou (ACP), vous permettant de l'utiliser directement dans les éditeurs et IDE compatibles.
|
||||
|
||||
:::tip
|
||||
Pour obtenir une liste des éditeurs et des outils prenant en charge ACP, consultez le [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP est un protocole ouvert qui standardise la communication entre les éditeurs de code et les agents de codage IA.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Pour utiliser OpenCode via ACP, configurez votre éditeur pour exécuter la commande `opencode acp`.
|
||||
|
||||
La commande démarre OpenCode en tant que sous-processus compatible ACP qui communique avec votre éditeur via JSON-RPC via stdio.
|
||||
|
||||
Vous trouverez ci-dessous des exemples d'éditeurs populaires prenant en charge ACP.
|
||||
|
||||
---
|
||||
|
||||
### Zed
|
||||
|
||||
Ajoutez à votre configuration [Zed](https://zed.dev) (`~/.config/zed/settings.json`) :
|
||||
|
||||
```json title="~/.config/zed/settings.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Pour l'ouvrir, utilisez l'action `agent: new thread` dans la **Palette de commandes**.
|
||||
|
||||
Vous pouvez également associer un raccourci clavier en modifiant votre `keymap.json` :
|
||||
|
||||
```json title="keymap.json"
|
||||
[
|
||||
{
|
||||
"bindings": {
|
||||
"cmd-alt-o": [
|
||||
"agent::NewExternalAgentThread",
|
||||
{
|
||||
"agent": {
|
||||
"custom": {
|
||||
"name": "OpenCode",
|
||||
"command": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### IDE JetBrains
|
||||
|
||||
Ajoutez à votre [JetBrains IDE](https://www.jetbrains.com/) acp.json conformément à la [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html) :
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "/absolute/path/bin/opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Pour l'ouvrir, utilisez le nouvel agent « OpenCode » dans le sélecteur d'agent AI Chat.
|
||||
|
||||
---
|
||||
|
||||
### Avante.nvim
|
||||
|
||||
Ajoutez à votre configuration [Avante.nvim](https://github.com/yetone/avante.nvim) :
|
||||
|
||||
```lua
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si vous devez transmettre des variables d'environnement :
|
||||
|
||||
```lua {6-8}
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" },
|
||||
env = {
|
||||
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### CodeCompanion.nvim
|
||||
|
||||
Pour utiliser OpenCode comme agent ACP dans [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), ajoutez ce qui suit à votre configuration Neovim :
|
||||
|
||||
```lua
|
||||
require("codecompanion").setup({
|
||||
interactions = {
|
||||
chat = {
|
||||
adapter = {
|
||||
name = "opencode",
|
||||
model = "claude-sonnet-4",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Cette configuration configure CodeCompanion pour utiliser OpenCode comme agent ACP pour le chat.
|
||||
|
||||
Si vous devez transmettre des variables d'environnement (comme `OPENCODE_API_KEY`), reportez-vous à [Configuration des adaptateurs : variables d'environnement ](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) dans la documentation CodeCompanion.nvim pour plus de détails.
|
||||
|
||||
## Soutien
|
||||
|
||||
OpenCode fonctionne de la même manière via ACP que dans le terminal. Toutes les fonctionnalités sont prises en charge :
|
||||
|
||||
:::note
|
||||
Certaines commandes slash intégrées telles que `/undo` et `/redo` ne sont actuellement pas prises en charge.
|
||||
:::
|
||||
|
||||
- Outils intégrés (opérations sur les fichiers, commandes de terminal, etc.)
|
||||
- Outils personnalisés et commandes slash
|
||||
- Serveurs MCP configurés dans votre configuration OpenCode
|
||||
- Règles spécifiques au projet à partir de `AGENTS.md`
|
||||
- Formateurs et linters personnalisés
|
||||
- Système d'agents et d'autorisations
|
||||
747
packages/web/src/content/docs/fr/agents.mdx
Normal file
747
packages/web/src/content/docs/fr/agents.mdx
Normal file
@@ -0,0 +1,747 @@
|
||||
---
|
||||
title: Agents
|
||||
description: Configurez et utilisez des agents spécialisés.
|
||||
---
|
||||
|
||||
Les agents sont des assistants IA spécialisés qui peuvent être configurés pour des tâches et des flux de travail spécifiques. Ils vous permettent de créer des outils ciblés avec des invites, des modèles et un accès aux outils personnalisés.
|
||||
|
||||
:::tip
|
||||
Utilisez l'agent de plan pour analyser le code et examiner les suggestions sans apporter de modifications au code.
|
||||
:::
|
||||
|
||||
Vous pouvez basculer entre les agents au cours d'une session ou les appeler avec la mention `@`.
|
||||
|
||||
---
|
||||
|
||||
## Espèces
|
||||
|
||||
Il existe deux types d'agents dans OpenCode ; agents primaires et sous-agents.
|
||||
|
||||
---
|
||||
|
||||
### Agents primaires
|
||||
|
||||
Les agents principaux sont les principaux assistants avec lesquels vous interagissez directement. Vous pouvez les parcourir à l'aide de la touche **Tab** ou de votre combinaison de touches `switch_agent` configurée. Ces agents gèrent votre conversation principale. L'accès aux outils est configuré via les autorisations : par exemple, Build a tous les outils activés tandis que Plan est restreint.
|
||||
|
||||
:::tip
|
||||
Vous pouvez utiliser la touche **Tab** pour basculer entre les agents principaux au cours d'une session.
|
||||
:::
|
||||
|
||||
OpenCode est livré avec deux agents principaux intégrés, **Build** et **Plan**. Bien
|
||||
regardez-les ci-dessous.
|
||||
|
||||
---
|
||||
|
||||
### Sous-agents
|
||||
|
||||
Les sous-agents sont des assistants spécialisés que les agents principaux peuvent appeler pour des tâches spécifiques. Vous pouvez également les invoquer manuellement en **@ les mentionnant** dans vos messages.
|
||||
|
||||
OpenCode est livré avec deux sous-agents intégrés, **Général** et **Explore**. Nous verrons cela ci-dessous.
|
||||
|
||||
---
|
||||
|
||||
## Intégré
|
||||
|
||||
OpenCode est livré avec deux agents principaux intégrés et deux sous-agents intégrés.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser la construction
|
||||
|
||||
_Mode_ : `primary`
|
||||
|
||||
Build est l'agent principal **par défaut** avec tous les outils activés. Il s'agit de l'agent standard pour les travaux de développement où vous avez besoin d'un accès complet aux opérations sur les fichiers et aux commandes système.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser le forfait
|
||||
|
||||
_Mode_ : `primary`
|
||||
|
||||
Un agent restreint conçu pour la planification et l'analyse. Nous utilisons un système d'autorisation pour vous donner plus de contrôle et empêcher toute modification involontaire.
|
||||
Par défaut, tous les éléments suivants sont définis sur `ask` :
|
||||
|
||||
- `file edits` : toutes les écritures, correctifs et modifications
|
||||
- `bash` : toutes les commandes bash
|
||||
|
||||
Cet agent est utile lorsque vous souhaitez que LLM analyse le code, suggère des modifications ou crée des plans sans apporter de modifications réelles à votre base de code.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser général
|
||||
|
||||
_Mode_ : `subagent`
|
||||
|
||||
Un agent polyvalent pour rechercher des questions complexes et exécuter des tâches en plusieurs étapes. Dispose d'un accès complet aux outils (sauf todo), il peut donc apporter des modifications aux fichiers en cas de besoin. Utilisez-le pour exécuter plusieurs unités de travail en parallèle.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser explorer
|
||||
|
||||
_Mode_ : `subagent`
|
||||
|
||||
Un agent rapide en lecture seule pour explorer les bases de code. Impossible de modifier les fichiers. Utilisez-le lorsque vous avez besoin de rechercher rapidement des fichiers par modèles, de rechercher du code par mots-clés ou de répondre à des questions sur la base de code.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser le compactage
|
||||
|
||||
_Mode_ : `primary`
|
||||
|
||||
Agent système caché qui compacte un contexte long en un résumé plus petit. Il s'exécute automatiquement en cas de besoin et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser le titre
|
||||
|
||||
_Mode_ : `primary`
|
||||
|
||||
Agent système caché qui génère des titres de session courts. Il s'exécute automatiquement et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser le résumé
|
||||
|
||||
_Mode_ : `primary`
|
||||
|
||||
Agent système caché qui crée des résumés de session. Il s'exécute automatiquement et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
1. Pour les agents principaux, utilisez la touche **Tab** pour les parcourir au cours d'une session. Vous pouvez également utiliser votre raccourci clavier `switch_agent` configuré.
|
||||
|
||||
2. Les sous-agents peuvent être invoqués :
|
||||
- **Automatiquement** par les agents principaux pour des tâches spécialisées en fonction de leurs descriptions.
|
||||
- Manuellement en **@ mentionnant** un sous-agent dans votre message. Par exemple.
|
||||
|
||||
```txt frame="none"
|
||||
@general help me search for this function
|
||||
```
|
||||
|
||||
3. **Navigation entre les sessions** : lorsque les sous-agents créent leurs propres sessions enfants, vous pouvez naviguer entre la session parent et toutes les sessions enfants en utilisant :
|
||||
- **\<Leader>+Right** (ou votre combinaison de touches `session_child_cycle` configurée) pour avancer via parent → enfant1 → enfant2 → ... → parent
|
||||
- **\<Leader>+Left** (ou votre combinaison de touches `session_child_cycle_reverse` configurée) pour revenir en arrière dans parent ← enfant1 ← enfant2 ← ... ← parent
|
||||
|
||||
Cela vous permet de basculer en toute transparence entre la conversation principale et le travail spécialisé des sous-agents.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez personnaliser les agents intégrés ou créer les vôtres via la configuration. Les agents peuvent être configurés de deux manières :
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Configurez les agents dans votre fichier de configuration `opencode.json` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
},
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"mode": "subagent",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Réduction
|
||||
|
||||
Vous pouvez également définir des agents à l'aide de fichiers markdown. Placez-les dans :
|
||||
|
||||
- Mondial : `~/.config/opencode/agents/`
|
||||
- Par projet : `.opencode/agents/`
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Reviews code for quality and best practices
|
||||
mode: subagent
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
Le nom du fichier de démarque devient le nom de l'agent. Par exemple, `review.md` crée un agent `review`.
|
||||
|
||||
---
|
||||
|
||||
## Possibilités
|
||||
|
||||
Examinons ces options de configuration en détail.
|
||||
|
||||
---
|
||||
|
||||
### Description
|
||||
|
||||
Utilisez l'option `description` pour fournir une brève description de ce que fait l'agent et quand l'utiliser.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"description": "Reviews code for best practices and potential issues"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Il s'agit d'une option de configuration **obligatoire**.
|
||||
|
||||
---
|
||||
|
||||
### Température
|
||||
|
||||
Contrôlez le caractère aléatoire et la créativité des réponses du LLM avec la configuration `temperature`.
|
||||
|
||||
Des valeurs faibles rendent les réponses plus ciblées et déterministes, tandis que des valeurs plus élevées augmentent la créativité et la variabilité.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les valeurs de température varient généralement de 0,0 à 1,0 :
|
||||
|
||||
- **0,0-0,2** : réponses très ciblées et déterministes, idéales pour l'analyse et la planification du code
|
||||
- **0,3-0,5** : réponses équilibrées avec une certaine créativité, idéales pour les tâches de développement générales
|
||||
- **0,6-1,0** : réponses plus créatives et variées, utiles pour le brainstorming et l'exploration
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si aucune température n'est spécifiée, OpenCode utilise les valeurs par défaut spécifiques au modèle ; généralement 0 pour la plupart des modèles, 0,55 pour les modèles Qwen.
|
||||
|
||||
---
|
||||
|
||||
### Pas maximum
|
||||
|
||||
Contrôlez le nombre maximum d'itérations agents qu'un agent peut effectuer avant d'être obligé de répondre avec du texte uniquement. Cela permet aux utilisateurs qui souhaitent contrôler les coûts de fixer une limite aux actions agents.
|
||||
|
||||
Si cela n'est pas défini, l'agent continuera à itérer jusqu'à ce que le modèle choisisse de s'arrêter ou que l'utilisateur interrompe la session.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"quick-thinker": {
|
||||
"description": "Fast reasoning with limited iterations",
|
||||
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
|
||||
"steps": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Lorsque la limite est atteinte, l'agent reçoit une invite système spéciale lui demandant de répondre avec un résumé de son travail et des tâches restantes recommandées.
|
||||
|
||||
:::caution
|
||||
L’ancien champ `maxSteps` est obsolète. Utilisez plutôt `steps`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Désactiver
|
||||
|
||||
Définissez sur `true` pour désactiver l'agent.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"disable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Rapide
|
||||
|
||||
Spécifiez un fichier d'invite système personnalisé pour cet agent avec la configuration `prompt`. Le fichier d'invite doit contenir des instructions spécifiques à l'objectif de l'agent.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ce chemin est relatif à l'emplacement du fichier de configuration. Cela fonctionne donc à la fois pour la configuration globale OpenCode et pour la configuration spécifique au projet.
|
||||
|
||||
---
|
||||
|
||||
### Modèle
|
||||
|
||||
Utilisez la configuration `model` pour remplacer le modèle de cet agent. Utile pour utiliser différents modèles optimisés pour différentes tâches. Par exemple, un modèle de planification plus rapide, un modèle de mise en œuvre plus performant.
|
||||
|
||||
:::tip
|
||||
Si vous ne spécifiez pas de modèle, les agents principaux utilisent le [modèle globalement configuré](/docs/config#models) tandis que les sous-agents utiliseront le modèle de l'agent principal qui a appelé le sous-agent.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
L'ID de modèle dans votre configuration OpenCode utilise le format `provider/model-id`. Par exemple, si vous utilisez [OpenCode Zen](/docs/zen), vous utiliserez `opencode/gpt-5.1-codex` pour GPT 5.1 Codex.
|
||||
|
||||
---
|
||||
|
||||
### Outils
|
||||
|
||||
Contrôlez quels outils sont disponibles dans cet agent avec la configuration `tools`. Vous pouvez activer ou désactiver des outils spécifiques en les définissant sur `true` ou `false`.
|
||||
|
||||
```json title="opencode.json" {3-6,9-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"bash": true
|
||||
},
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
La configuration spécifique à l'agent remplace la configuration globale.
|
||||
:::
|
||||
|
||||
Vous pouvez également utiliser des caractères génériques pour contrôler plusieurs outils à la fois. Par exemple, pour désactiver tous les outils d'un serveur MCP :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"mymcp_*": false,
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur les outils](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Autorisations
|
||||
|
||||
Vous pouvez configurer des autorisations pour gérer les actions qu'un agent peut effectuer. Actuellement, les autorisations pour les outils `edit`, `bash` et `webfetch` peuvent être configurées pour :
|
||||
|
||||
- `"ask"` — Demander l'approbation avant d'exécuter l'outil
|
||||
- `"allow"` — Autoriser toutes les opérations sans approbation
|
||||
- `"deny"` – Désactiver l'outil
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez remplacer ces autorisations par agent.
|
||||
|
||||
```json title="opencode.json" {3-5,8-10}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"edit": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également définir des autorisations dans les agents Markdown.
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash:
|
||||
"*": ask
|
||||
"git diff": allow
|
||||
"git log*": allow
|
||||
"grep *": allow
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
Vous pouvez définir des autorisations pour des commandes bash spécifiques.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git push": "ask",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Cela peut prendre un modèle global.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git *": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Et vous pouvez également utiliser le caractère générique `*` pour gérer les autorisations pour toutes les commandes.
|
||||
Puisque la dernière règle correspondante est prioritaire, placez le caractère générique `*` en premier et les règles spécifiques après.
|
||||
|
||||
```json title="opencode.json" {8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git status *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur les autorisations](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Mode
|
||||
|
||||
Contrôlez le mode de l'agent avec la configuration `mode`. L'option `mode` est utilisée pour déterminer comment l'agent peut être utilisé.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"mode": "subagent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
L'option `mode` peut être définie sur `primary`, `subagent` ou `all`. Si aucun `mode` n’est spécifié, la valeur par défaut est `all`.
|
||||
|
||||
---
|
||||
|
||||
### Caché
|
||||
|
||||
Masquez un sous-agent du menu de saisie semi-automatique `@` avec `hidden: true`. Utile pour les sous-agents internes qui ne doivent être invoqués que par programme par d'autres agents via l'outil Tâche.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"internal-helper": {
|
||||
"mode": "subagent",
|
||||
"hidden": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Cela affecte uniquement la visibilité de l'utilisateur dans le menu de saisie semi-automatique. Les agents masqués peuvent toujours être invoqués par le modèle via l'outil Tâche si les autorisations le permettent.
|
||||
|
||||
:::note
|
||||
S'applique uniquement aux agents `mode: subagent`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Autorisations de tâches
|
||||
|
||||
Contrôlez quels sous-agents un agent peut appeler via l'outil Tâche avec `permission.task`. Utilise des modèles globaux pour une correspondance flexible.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"orchestrator": {
|
||||
"mode": "primary",
|
||||
"permission": {
|
||||
"task": {
|
||||
"*": "deny",
|
||||
"orchestrator-*": "allow",
|
||||
"code-reviewer": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Lorsqu'il est défini sur `deny`, le sous-agent est entièrement supprimé de la description de l'outil Tâche, de sorte que le modèle ne tentera pas de l'invoquer.
|
||||
|
||||
:::tip
|
||||
Les règles sont évaluées dans l'ordre et la **dernière règle correspondante l'emporte**. Dans l'exemple ci-dessus, `orchestrator-planner` correspond à la fois à `*` (refuser) et à `orchestrator-*` (autoriser), mais comme `orchestrator-*` vient après `*`, le résultat est `allow`.
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Les utilisateurs peuvent toujours appeler n'importe quel sous-agent directement via le menu de saisie semi-automatique `@`, même si les autorisations de tâche de l'agent le refuseraient.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Couleur
|
||||
|
||||
Personnalisez l'apparence visuelle de l'agent dans l'interface utilisateur avec l'option `color`. Cela affecte la façon dont l'agent apparaît dans l'interface.
|
||||
|
||||
Utilisez une couleur hexadécimale valide (par exemple, `#FF5733`) ou une couleur de thème : `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"creative": {
|
||||
"color": "#ff6b6b"
|
||||
},
|
||||
"code-reviewer": {
|
||||
"color": "accent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Haut P
|
||||
|
||||
Contrôlez la diversité des réponses avec l’option `top_p`. Alternative à la température pour contrôler le caractère aléatoire.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"brainstorm": {
|
||||
"top_p": 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les valeurs vont de 0,0 à 1,0. Les valeurs inférieures sont plus ciblées, les valeurs élevées plus diversifiées.
|
||||
|
||||
---
|
||||
|
||||
### Supplémentaire
|
||||
|
||||
Toutes les autres options que vous spécifiez dans la configuration de votre agent seront **transmises directement** au fournisseur en tant qu'options de modèle. Cela vous permet d'utiliser des fonctionnalités et des paramètres spécifiques au fournisseur.
|
||||
|
||||
Par exemple, avec les modèles de raisonnement de OpenAI, vous pouvez contrôler l'effort de raisonnement :
|
||||
|
||||
```json title="opencode.json" {6,7}
|
||||
{
|
||||
"agent": {
|
||||
"deep-thinker": {
|
||||
"description": "Agent that uses high reasoning effort for complex problems",
|
||||
"model": "openai/gpt-5",
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ces options supplémentaires sont spécifiques au modèle et au fournisseur. Consultez la documentation de votre fournisseur pour connaître les paramètres disponibles.
|
||||
|
||||
:::tip
|
||||
Exécutez `opencode models` pour voir une liste des modèles disponibles.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Créer des agents
|
||||
|
||||
Vous pouvez créer de nouveaux agents à l'aide de la commande suivante :
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Cette commande interactive va :
|
||||
|
||||
1. Demandez où enregistrer l'agent ; global ou spécifique à un projet.
|
||||
2. Description de ce que l'agent doit faire.
|
||||
3. Générez une invite système et un identifiant appropriés.
|
||||
4. Vous permet de sélectionner les outils auxquels l'agent peut accéder.
|
||||
5. Enfin, créez un fichier markdown avec la configuration de l'agent.
|
||||
|
||||
---
|
||||
|
||||
## Cas d'utilisation
|
||||
|
||||
Voici quelques cas d’utilisation courants pour différents agents.
|
||||
|
||||
- **Agent de build** : travail de développement complet avec tous les outils activés
|
||||
- **Agent de plan** : analyse et planification sans apporter de modifications
|
||||
- **Agent de révision** : révision de code avec accès en lecture seule et outils de documentation
|
||||
- **Agent de débogage** : axé sur l'investigation avec les outils bash et read activés
|
||||
- **Agent Docs** : écriture de documentation avec des opérations sur les fichiers mais pas de commandes système
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
Voici quelques exemples d’agents qui pourraient vous être utiles.
|
||||
|
||||
:::tip
|
||||
Avez-vous un agent que vous aimeriez partager ? [Soumettez un PR](https://github.com/anomalyco/opencode).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Agent de documentation
|
||||
|
||||
```markdown title="~/.config/opencode/agents/docs-writer.md"
|
||||
---
|
||||
description: Writes and maintains project documentation
|
||||
mode: subagent
|
||||
tools:
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are a technical writer. Create clear, comprehensive documentation.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Clear explanations
|
||||
- Proper structure
|
||||
- Code examples
|
||||
- User-friendly language
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Auditeur de sécurité
|
||||
|
||||
```markdown title="~/.config/opencode/agents/security-auditor.md"
|
||||
---
|
||||
description: Performs security audits and identifies vulnerabilities
|
||||
mode: subagent
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are a security expert. Focus on identifying potential security issues.
|
||||
|
||||
Look for:
|
||||
|
||||
- Input validation vulnerabilities
|
||||
- Authentication and authorization flaws
|
||||
- Data exposure risks
|
||||
- Dependency vulnerabilities
|
||||
- Configuration security issues
|
||||
```
|
||||
601
packages/web/src/content/docs/fr/cli.mdx
Normal file
601
packages/web/src/content/docs/fr/cli.mdx
Normal file
@@ -0,0 +1,601 @@
|
||||
---
|
||||
title: CLI
|
||||
description: Options et commandes CLI OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
La CLI OpenCode démarre par défaut le [TUI](/docs/tui) lorsqu'il est exécuté sans aucun argument.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Mais il accepte également les commandes documentées sur cette page. Cela vous permet d'interagir avec OpenCode par programme.
|
||||
|
||||
```bash
|
||||
opencode run "Explain how closures work in JavaScript"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### tui
|
||||
|
||||
Démarrez l’interface utilisateur du terminal OpenCode.
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ------------ | ----- | ------------------------------------------ |
|
||||
| `--continue` | `-c` | Continuer la dernière séance |
|
||||
| `--session` | `-s` | ID de session pour continuer |
|
||||
| `--prompt` | | Invite à utiliser |
|
||||
| `--model` | `-m` | Modèle à utiliser sous forme de fournisseur/modèle |
|
||||
| `--agent` | | Agent à utiliser |
|
||||
| `--port` | | Port à écouter sur |
|
||||
| `--hostname` | | Nom d'hôte sur lequel écouter |
|
||||
|
||||
---
|
||||
|
||||
## Commandes
|
||||
|
||||
La CLI OpenCode dispose également des commandes suivantes.
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
|
||||
Gérer les agents pour OpenCode.
|
||||
|
||||
```bash
|
||||
opencode agent [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### attacher
|
||||
|
||||
Attachez un terminal à un serveur backend OpenCode déjà en cours d'exécution démarré via les commandes `serve` ou `web`.
|
||||
|
||||
```bash
|
||||
opencode attach [url]
|
||||
```
|
||||
|
||||
Cela permet d'utiliser le TUI avec un backend OpenCode distant. Par exemple:
|
||||
|
||||
```bash
|
||||
# Start the backend server for web/mobile access
|
||||
opencode web --port 4096 --hostname 0.0.0.0
|
||||
|
||||
# In another terminal, attach the TUI to the running backend
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ----------- | ----- | --------------------------------- |
|
||||
| `--dir` | | Répertoire de travail dans lequel démarrer TUI |
|
||||
| `--session` | `-s` | ID de session pour continuer |
|
||||
|
||||
---
|
||||
|
||||
#### créer
|
||||
|
||||
Créez un nouvel agent avec une configuration personnalisée.
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Cette commande vous guidera dans la création d'un nouvel agent avec une invite système personnalisée et une configuration d'outil.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Répertoriez tous les agents disponibles.
|
||||
|
||||
```bash
|
||||
opencode agent list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### authentification
|
||||
|
||||
Commande pour gérer les informations d’identification et la connexion des fournisseurs.
|
||||
|
||||
```bash
|
||||
opencode auth [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### se connecter
|
||||
|
||||
OpenCode est alimenté par la liste des fournisseurs sur [Models.dev](https://models.dev), vous pouvez donc utiliser `opencode auth login` pour configurer les clés API pour tout fournisseur que vous souhaitez utiliser. Ceci est stocké dans `~/.local/share/opencode/auth.json`.
|
||||
|
||||
```bash
|
||||
opencode auth login
|
||||
```
|
||||
|
||||
Lorsque OpenCode démarre, il charge les fournisseurs à partir du fichier d'informations d'identification. Et s'il y a des clés définies dans vos environnements ou un fichier `.env` dans votre projet.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Répertorie tous les fournisseurs authentifiés tels qu'ils sont stockés dans le fichier d'informations d'identification.
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
```
|
||||
|
||||
Ou la version courte.
|
||||
|
||||
```bash
|
||||
opencode auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### déconnexion
|
||||
|
||||
Vous déconnecte d'un fournisseur en l'effaçant du fichier d'informations d'identification.
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### github
|
||||
|
||||
Gérez l'agent GitHub pour l'automatisation du référentiel.
|
||||
|
||||
```bash
|
||||
opencode github [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### installer
|
||||
|
||||
Installez l'agent GitHub dans votre référentiel.
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Cela configure le flux de travail GitHub Actions nécessaire et vous guide tout au long du processus de configuration. [En savoir plus](/docs/github).
|
||||
|
||||
---
|
||||
|
||||
#### courir
|
||||
|
||||
Exécutez l'agent GitHub. Ceci est généralement utilisé dans les actions GitHub.
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| --------- | -------------------------------------- |
|
||||
| `--event` | Événement simulé GitHub pour lequel exécuter l'agent |
|
||||
| `--token` | Jeton d'accès personnel GitHub |
|
||||
|
||||
---
|
||||
|
||||
### MCP
|
||||
|
||||
Gérer les serveurs Model Context Protocol.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### ajouter
|
||||
|
||||
Ajoutez un serveur MCP à votre configuration.
|
||||
|
||||
```bash
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
Cette commande vous guidera dans l’ajout d’un serveur MCP local ou distant.
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Répertoriez tous les serveurs MCP configurés et leur état de connexion.
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Ou utilisez la version courte.
|
||||
|
||||
```bash
|
||||
opencode mcp ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### authentification
|
||||
|
||||
Authentifiez-vous auprès d'un serveur MCP compatible OAuth.
|
||||
|
||||
```bash
|
||||
opencode mcp auth [name]
|
||||
```
|
||||
|
||||
Si vous ne fournissez pas de nom de serveur, vous serez invité à sélectionner parmi les serveurs compatibles OAuth disponibles.
|
||||
|
||||
Vous pouvez également répertorier les serveurs compatibles OAuth et leur statut d'authentification.
|
||||
|
||||
```bash
|
||||
opencode mcp auth list
|
||||
```
|
||||
|
||||
Ou utilisez la version courte.
|
||||
|
||||
```bash
|
||||
opencode mcp auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### déconnexion
|
||||
|
||||
Supprimez les informations d'identification OAuth pour un serveur MCP.
|
||||
|
||||
```bash
|
||||
opencode mcp logout [name]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### déboguer
|
||||
|
||||
Déboguer les problèmes de connexion OAuth pour un serveur MCP.
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### modèles
|
||||
|
||||
Répertoriez tous les modèles disponibles auprès des fournisseurs configurés.
|
||||
|
||||
```bash
|
||||
opencode models [provider]
|
||||
```
|
||||
|
||||
Cette commande affiche tous les modèles disponibles parmi vos fournisseurs configurés au format `provider/model`.
|
||||
|
||||
Ceci est utile pour déterminer le nom exact du modèle à utiliser dans [votre config](/docs/config/).
|
||||
|
||||
Vous pouvez éventuellement transmettre un ID de fournisseur pour filtrer les modèles en fonction de ce fournisseur.
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| ----------- | ------------------------------------------------------------ |
|
||||
| `--refresh` | Actualisez le cache des modèles à partir de models.dev |
|
||||
| `--verbose` | Utiliser une sortie de modèle plus détaillée (inclut des métadonnées telles que les coûts) |
|
||||
|
||||
Utilisez l'indicateur `--refresh` pour mettre à jour la liste des modèles mis en cache. Ceci est utile lorsque de nouveaux modèles ont été ajoutés à un fournisseur et que vous souhaitez les voir dans OpenCode.
|
||||
|
||||
```bash
|
||||
opencode models --refresh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### courir
|
||||
|
||||
Exécutez opencode en mode non interactif en transmettant directement une invite.
|
||||
|
||||
```bash
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
Ceci est utile pour les scripts, l'automatisation ou lorsque vous souhaitez une réponse rapide sans lancer le TUI complet. Par exemple.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
```
|
||||
|
||||
Vous pouvez également vous connecter à une instance `opencode serve` en cours d'exécution pour éviter les temps de démarrage à froid du serveur MCP à chaque exécution :
|
||||
|
||||
```bash
|
||||
# Start a headless server in one terminal
|
||||
opencode serve
|
||||
|
||||
# In another terminal, run commands that attach to it
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ------------ | ----- | ------------------------------------------------------------------ |
|
||||
| `--command` | | La commande à exécuter, utilisez message pour args |
|
||||
| `--continue` | `-c` | Continuer la dernière séance |
|
||||
| `--session` | `-s` | ID de session pour continuer |
|
||||
| `--share` | | Partager la séance |
|
||||
| `--model` | `-m` | Modèle à utiliser sous forme de fournisseur/modèle |
|
||||
| `--agent` | | Agent à utiliser |
|
||||
| `--file` | `-f` | Fichier(s) à joindre au message |
|
||||
| `--format` | | Format : par défaut (formaté) ou json (événements JSON bruts) |
|
||||
| `--title` | | Titre de la session (utilise une invite tronquée si aucune valeur n'est fournie) |
|
||||
| `--attach` | | Connectez-vous à un serveur opencode en cours d'exécution (par exemple, http://localhost:4096) |
|
||||
| `--port` | | Port du serveur local (port aléatoire par défaut) |
|
||||
|
||||
---
|
||||
|
||||
### servir
|
||||
|
||||
Démarrez un serveur OpenCode sans tête pour un accès API. Consultez le [serveur docs](/docs/server) pour l'interface complète HTTP.
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
```
|
||||
|
||||
Cela démarre un serveur HTTP qui fournit à API un accès à la fonctionnalité opencode sans l'interface TUI. Définissez `OPENCODE_SERVER_PASSWORD` pour activer l'authentification de base HTTP (le nom d'utilisateur par défaut est `opencode`).
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | Port à écouter sur |
|
||||
| `--hostname` | Nom d'hôte sur lequel écouter |
|
||||
| `--mdns` | Activer la découverte mDNS |
|
||||
| `--cors` | Origines de navigateur supplémentaires pour autoriser CORS |
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
|
||||
Gérer les sessions OpenCode.
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### liste
|
||||
|
||||
Répertoriez toutes les sessions OpenCode.
|
||||
|
||||
```bash
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ------------- | ----- | ------------------------------------ |
|
||||
| `--max-count` | `-n` | Limiter aux N sessions les plus récentes |
|
||||
| `--format` | | Format de sortie : tableau ou json (tableau) |
|
||||
|
||||
---
|
||||
|
||||
### statistiques
|
||||
|
||||
Affichez les statistiques d'utilisation et de coût des jetons pour vos sessions OpenCode.
|
||||
|
||||
```bash
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
| `--days` | Afficher les statistiques des N derniers jours (tous les temps) |
|
||||
| `--tools` | Nombre d'outils à afficher (tous) |
|
||||
| `--models` | Afficher la répartition de l'utilisation du modèle (masqué par défaut). Passez un numéro pour afficher le premier N |
|
||||
| `--project` | Filtrer par projet (tous les projets, chaîne vide : projet en cours) |
|
||||
|
||||
---
|
||||
|
||||
### exporter
|
||||
|
||||
Exportez les données de session sous JSON.
|
||||
|
||||
```bash
|
||||
opencode export [sessionID]
|
||||
```
|
||||
|
||||
Si vous ne fournissez pas d'ID de session, vous serez invité à sélectionner parmi les sessions disponibles.
|
||||
|
||||
---
|
||||
|
||||
### importer
|
||||
|
||||
Importez les données de session à partir d'un fichier JSON ou d'un partage OpenCode URL.
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
```
|
||||
|
||||
Vous pouvez importer à partir d'un fichier local ou d'un partage OpenCode URL.
|
||||
|
||||
```bash
|
||||
opencode import session.json
|
||||
opencode import https://opncd.ai/s/abc123
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### la toile
|
||||
|
||||
Démarrez un serveur OpenCode sans tête avec une interface Web.
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Cela démarre un serveur HTTP et ouvre un navigateur Web pour accéder à OpenCode via une interface Web. Définissez `OPENCODE_SERVER_PASSWORD` pour activer l'authentification de base HTTP (le nom d'utilisateur par défaut est `opencode`).
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | Port à écouter sur |
|
||||
| `--hostname` | Nom d'hôte sur lequel écouter |
|
||||
| `--mdns` | Activer la découverte mDNS |
|
||||
| `--cors` | Origines de navigateur supplémentaires pour autoriser CORS |
|
||||
|
||||
---
|
||||
|
||||
### acp
|
||||
|
||||
Démarrez un serveur ACP (Agent Client Protocol).
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
```
|
||||
|
||||
Cette commande démarre un serveur ACP qui communique via stdin/stdout en utilisant nd-JSON.
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Descriptif |
|
||||
| ------------ | --------------------- |
|
||||
| `--cwd` | Répertoire de travail |
|
||||
| `--port` | Port à écouter sur |
|
||||
| `--hostname` | Nom d'hôte sur lequel écouter |
|
||||
|
||||
---
|
||||
|
||||
### désinstaller
|
||||
|
||||
Désinstallez OpenCode et supprimez tous les fichiers associés.
|
||||
|
||||
```bash
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| --------------- | ----- | ------------------------------------------- |
|
||||
| `--keep-config` | `-c` | Conserver les fichiers de configuration |
|
||||
| `--keep-data` | `-d` | Conserver les données de session et les instantanés |
|
||||
| `--dry-run` | | Afficher ce qui serait supprimé sans supprimer |
|
||||
| `--force` | `-f` | Ignorer les invites de confirmation |
|
||||
|
||||
---
|
||||
|
||||
### mise à niveau
|
||||
|
||||
Met à jour opencode vers la dernière version ou une version spécifique.
|
||||
|
||||
```bash
|
||||
opencode upgrade [target]
|
||||
```
|
||||
|
||||
Pour mettre à niveau vers la dernière version.
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
```
|
||||
|
||||
Pour passer à une version spécifique.
|
||||
|
||||
```bash
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ---------- | ----- | ----------------------------------------------------------------- |
|
||||
| `--method` | `-m` | La méthode d'installation utilisée ; curl, npm, pnpm, chignon, infusion |
|
||||
|
||||
---
|
||||
|
||||
## Drapeaux mondiaux
|
||||
|
||||
La CLI opencode prend les indicateurs globaux suivants.
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| -------------- | ----- | ------------------------------------ |
|
||||
| `--help` | `-h` | Afficher l'aide |
|
||||
| `--version` | `-v` | Imprimer le numéro de version |
|
||||
| `--print-logs` | | Imprimer les journaux sur stderr |
|
||||
| `--log-level` | | Niveau de journalisation (DEBUG, INFO, WARN, ERROR) |
|
||||
|
||||
---
|
||||
|
||||
## Variables d'environnement
|
||||
|
||||
OpenCode peut être configuré à l'aide de variables d'environnement.
|
||||
|
||||
| Variables | Tapez | Descriptif |
|
||||
| ------------------------------------- | ------- | ------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | booléen | Partager automatiquement des sessions |
|
||||
| `OPENCODE_GIT_BASH_PATH` | chaîne | Chemin vers l'exécutable Git Bash sur Windows |
|
||||
| `OPENCODE_CONFIG` | chaîne | Chemin d'accès au fichier de configuration |
|
||||
| `OPENCODE_CONFIG_DIR` | chaîne | Chemin d'accès au répertoire de configuration |
|
||||
| `OPENCODE_CONFIG_CONTENT` | chaîne | Contenu de configuration JSON en ligne |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | booléen | Désactiver les vérifications automatiques des mises à jour |
|
||||
| `OPENCODE_DISABLE_PRUNE` | booléen | Désactiver l'élagage des anciennes données |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | booléen | Désactiver les mises à jour automatiques des titres du terminal |
|
||||
| `OPENCODE_PERMISSION` | chaîne | Configuration des autorisations JSON intégrées |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | booléen | Désactiver les plugins par défaut |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | booléen | Désactiver les téléchargements automatiques du serveur LSP |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | booléen | Activer les modèles expérimentaux |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | booléen | Désactiver le compactage automatique du contexte |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | booléen | Désactiver la lecture de `.claude` (invite + compétences) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | booléen | Désactiver la lecture `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | booléen | Désactiver le chargement de `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | booléen | Désactiver la récupération de modèles à partir de sources distantes |
|
||||
| `OPENCODE_FAKE_VCS` | chaîne | Faux fournisseur VCS à des fins de test |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | booléen | Désactiver la vérification de l'heure des fichiers pour l'optimisation |
|
||||
| `OPENCODE_CLIENT` | chaîne | Identifiant du client (par défaut `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | booléen | Activer les outils de recherche Web Exa |
|
||||
| `OPENCODE_SERVER_PASSWORD` | chaîne | Activer l'authentification de base pour `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | chaîne | Remplacer le nom d'utilisateur d'authentification de base (par défaut `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | chaîne | URL personnalisé pour récupérer la configuration des modèles |
|
||||
|
||||
---
|
||||
|
||||
### Expérimental
|
||||
|
||||
Ces variables d'environnement activent des fonctionnalités expérimentales qui peuvent être modifiées ou supprimées.
|
||||
|
||||
| Variables | Tapez | Descriptif |
|
||||
| ----------------------------------------------- | ------- | --------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | booléen | Activer toutes les fonctionnalités expérimentales |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | booléen | Activer la découverte d'icônes |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | booléen | Désactiver la copie lors de la sélection dans TUI |
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | numéro | Délai d'expiration par défaut pour les commandes bash dans ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | numéro | Nombre maximum de jetons de sortie pour les réponses LLM |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | booléen | Activer l'observateur de fichiers pour l'ensemble du répertoire |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | booléen | Activer le formateur oxfmt |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | booléen | Activer l'outil expérimental LSP |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | booléen | Désactiver l'observateur de fichiers |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | booléen | Activer les fonctionnalités Exa expérimentales |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | booléen | Activer la vérification expérimentale du type LSP |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | booléen | Activer les fonctionnalités de démarque expérimentales |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | booléen | Activer le mode plan |
|
||||
323
packages/web/src/content/docs/fr/commands.mdx
Normal file
323
packages/web/src/content/docs/fr/commands.mdx
Normal file
@@ -0,0 +1,323 @@
|
||||
---
|
||||
title: Commandes
|
||||
description: Créez des commandes personnalisées pour les tâches répétitives.
|
||||
---
|
||||
|
||||
Les commandes personnalisées vous permettent de spécifier une invite que vous souhaitez exécuter lorsque cette commande est exécutée dans TUI.
|
||||
|
||||
```bash frame="none"
|
||||
/my-command
|
||||
```
|
||||
|
||||
Les commandes personnalisées s'ajoutent aux commandes intégrées telles que `/init`, `/undo`, `/redo`, `/share`, `/help`. [En savoir plus](/docs/tui#commands).
|
||||
|
||||
---
|
||||
|
||||
## Créer des fichiers de commandes
|
||||
|
||||
Créez des fichiers markdown dans le répertoire `commands/` pour définir des commandes personnalisées.
|
||||
|
||||
Créez `.opencode/commands/test.md` :
|
||||
|
||||
```md title=".opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
Le frontmatter définit les propriétés de la commande. Le contenu devient le modèle.
|
||||
|
||||
Utilisez la commande en tapant `/` suivi du nom de la commande.
|
||||
|
||||
```bash frame="none"
|
||||
"/test"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez ajouter des commandes personnalisées via la configuration OpenCode ou en créant des fichiers markdown dans le répertoire `commands/`.
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
Utilisez l'option `command` dans votre OpenCode [config](/docs/config) :
|
||||
|
||||
```json title="opencode.jsonc" {4-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
// This becomes the name of the command
|
||||
"test": {
|
||||
// This is the prompt that will be sent to the LLM
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
// This is shown as the description in the TUI
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez maintenant exécuter cette commande dans TUI :
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Réduction
|
||||
|
||||
Vous pouvez également définir des commandes à l'aide de fichiers markdown. Placez-les dans :
|
||||
|
||||
- Mondial : `~/.config/opencode/commands/`
|
||||
- Par projet : `.opencode/commands/`
|
||||
|
||||
```markdown title="~/.config/opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
Le nom du fichier markdown devient le nom de la commande. Par exemple, `test.md` permet
|
||||
tu cours :
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configuration rapide
|
||||
|
||||
Les invites pour les commandes personnalisées prennent en charge plusieurs espaces réservés et syntaxes spéciaux.
|
||||
|
||||
---
|
||||
|
||||
### Arguments
|
||||
|
||||
Transmettez les arguments aux commandes à l’aide de l’espace réservé `$ARGUMENTS`.
|
||||
|
||||
```md title=".opencode/commands/component.md"
|
||||
---
|
||||
description: Create a new component
|
||||
---
|
||||
|
||||
Create a new React component named $ARGUMENTS with TypeScript support.
|
||||
Include proper typing and basic structure.
|
||||
```
|
||||
|
||||
Exécutez la commande avec des arguments :
|
||||
|
||||
```bash frame="none"
|
||||
/component Button
|
||||
```
|
||||
|
||||
Et `$ARGUMENTS` sera remplacé par `Button`.
|
||||
|
||||
Vous pouvez également accéder à des arguments individuels à l'aide de paramètres de position :
|
||||
|
||||
- `$1` - Premier argument
|
||||
- `$2` - Deuxième argument
|
||||
- `$3` - Troisième argument
|
||||
- Et ainsi de suite...
|
||||
|
||||
Par exemple:
|
||||
|
||||
```md title=".opencode/commands/create-file.md"
|
||||
---
|
||||
description: Create a new file with content
|
||||
---
|
||||
|
||||
Create a file named $1 in the directory $2
|
||||
with the following content: $3
|
||||
```
|
||||
|
||||
Exécutez la commande :
|
||||
|
||||
```bash frame="none"
|
||||
/create-file config.json src "{ \"key\": \"value\" }"
|
||||
```
|
||||
|
||||
Celui-ci remplace :
|
||||
|
||||
- `$1` avec `config.json`
|
||||
- `$2` avec `src`
|
||||
- `$3` avec `{ "key": "value" }`
|
||||
|
||||
---
|
||||
|
||||
### Sortie du shell
|
||||
|
||||
Utilisez _!`command`_ pour injecter la sortie [bash command](/docs/tui#bash-commands) dans votre invite.
|
||||
|
||||
Par exemple, pour créer une commande personnalisée qui analyse la couverture des tests :
|
||||
|
||||
```md title=".opencode/commands/analyze-coverage.md"
|
||||
---
|
||||
description: Analyze test coverage
|
||||
---
|
||||
|
||||
Here are the current test results:
|
||||
!`npm test`
|
||||
|
||||
Based on these results, suggest improvements to increase coverage.
|
||||
```
|
||||
|
||||
Ou pour consulter les modifications récentes :
|
||||
|
||||
```md title=".opencode/commands/review-changes.md"
|
||||
---
|
||||
description: Review recent changes
|
||||
---
|
||||
|
||||
Recent git commits:
|
||||
!`git log --oneline -10`
|
||||
|
||||
Review these changes and suggest any improvements.
|
||||
```
|
||||
|
||||
Les commandes s'exécutent dans le répertoire racine de votre projet et leur sortie fait partie de l'invite.
|
||||
|
||||
---
|
||||
|
||||
### Références de fichiers
|
||||
|
||||
Incluez les fichiers dans votre commande en utilisant `@` suivi du nom du fichier.
|
||||
|
||||
```md title=".opencode/commands/review-component.md"
|
||||
---
|
||||
description: Review component
|
||||
---
|
||||
|
||||
Review the component in @src/components/Button.tsx.
|
||||
Check for performance issues and suggest improvements.
|
||||
```
|
||||
|
||||
Le contenu du fichier est automatiquement inclus dans l’invite.
|
||||
|
||||
---
|
||||
|
||||
## Possibilités
|
||||
|
||||
Examinons les options de configuration en détail.
|
||||
|
||||
---
|
||||
|
||||
### Modèle
|
||||
|
||||
L'option `template` définit l'invite qui sera envoyée au LLM lors de l'exécution de la commande.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Il s'agit d'une option de configuration **obligatoire**.
|
||||
|
||||
---
|
||||
|
||||
### Description
|
||||
|
||||
Utilisez l'option `description` pour fournir une brève description de ce que fait la commande.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"description": "Run tests with coverage"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ceci est affiché comme description dans le TUI lorsque vous tapez la commande.
|
||||
|
||||
---
|
||||
|
||||
### Agent
|
||||
|
||||
Utilisez la configuration `agent` pour spécifier éventuellement quel [agent](/docs/agents) doit exécuter cette commande.
|
||||
S'il s'agit d'un [subagent](/docs/agents/#subagents), la commande déclenchera un appel de sous-agent par défaut.
|
||||
Pour désactiver ce comportement, définissez `subtask` sur `false`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"review": {
|
||||
"agent": "plan"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Il s'agit d'une option de configuration **facultative**. S’il n’est pas spécifié, la valeur par défaut est votre agent actuel.
|
||||
|
||||
---
|
||||
|
||||
### Sous-tâche
|
||||
|
||||
Utilisez le booléen `subtask` pour forcer la commande à déclencher un invocation de [subagent](/docs/agents/#subagents).
|
||||
Ceci est utile si vous souhaitez que la commande ne pollue pas votre contexte principal et **force** l'agent à agir en tant que sous-agent,
|
||||
même si `mode` est défini sur `primary` dans la configuration [agent](/docs/agents).
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"subtask": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Il s'agit d'une option de configuration **facultative**.
|
||||
|
||||
---
|
||||
|
||||
### Modèle
|
||||
|
||||
Utilisez la configuration `model` pour remplacer le modèle par défaut pour cette commande.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Il s'agit d'une option de configuration **facultative**.
|
||||
|
||||
---
|
||||
|
||||
## Intégré
|
||||
|
||||
opencode comprend plusieurs commandes intégrées comme `/init`, `/undo`, `/redo`, `/share`, `/help` ; [en savoir plus](/docs/tui#commands).
|
||||
|
||||
:::note
|
||||
Les commandes personnalisées peuvent remplacer les commandes intégrées.
|
||||
:::
|
||||
|
||||
Si vous définissez une commande personnalisée portant le même nom, elle remplacera la commande intégrée.
|
||||
685
packages/web/src/content/docs/fr/config.mdx
Normal file
685
packages/web/src/content/docs/fr/config.mdx
Normal file
@@ -0,0 +1,685 @@
|
||||
---
|
||||
title: Configuration
|
||||
description: En utilisant la configuration OpenCode JSON.
|
||||
---
|
||||
|
||||
Vous pouvez configurer OpenCode à l'aide d'un fichier de configuration JSON.
|
||||
|
||||
---
|
||||
|
||||
## Format
|
||||
|
||||
OpenCode prend en charge les formats **JSON** et **JSONC** (JSON avec commentaires).
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Emplacements
|
||||
|
||||
Vous pouvez placer votre configuration à plusieurs emplacements différents et ils ont un
|
||||
ordre de priorité différent.
|
||||
|
||||
:::note
|
||||
Les fichiers de configuration sont **fusionnés**, pas remplacés.
|
||||
:::
|
||||
|
||||
Les fichiers de configuration sont fusionnés et non remplacés. Les paramètres des emplacements de configuration suivants sont combinés. Les configurations ultérieures remplacent les précédentes uniquement en cas de clés en conflit. Les paramètres non conflictuels de toutes les configurations sont conservés.
|
||||
|
||||
Par exemple, si votre configuration globale définit `theme: "opencode"` et `autoupdate: true` et que la configuration de votre projet définit `model: "anthropic/claude-sonnet-4-5"`, la configuration finale inclura les trois paramètres.
|
||||
|
||||
---
|
||||
|
||||
### Ordre de priorité
|
||||
|
||||
Les sources de configuration sont chargées dans cet ordre (les sources ultérieures remplacent les précédentes) :
|
||||
|
||||
1. **Configuration à distance** (à partir de `.well-known/opencode`) - paramètres par défaut de l'organisation
|
||||
2. **Configuration globale** (`~/.config/opencode/opencode.json`) - préférences utilisateur
|
||||
3. **Configuration personnalisée** (`OPENCODE_CONFIG` env var) - remplacements personnalisés
|
||||
4. **Configuration du projet** (`opencode.json` dans le projet) - paramètres spécifiques au projet
|
||||
5. **`.opencode` répertoires** - agents, commandes, plugins
|
||||
6. **Configuration en ligne** (`OPENCODE_CONFIG_CONTENT` env var) - remplacements d'exécution
|
||||
|
||||
Cela signifie que les configurations de projet peuvent remplacer les valeurs par défaut globales, et que les configurations globales peuvent remplacer les valeurs par défaut de l'organisation distante.
|
||||
|
||||
:::note
|
||||
Les répertoires `.opencode` et `~/.config/opencode` utilisent des **noms au pluriel** pour les sous-répertoires : `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` et `themes/`. Les noms singuliers (par exemple, `agent/`) sont également pris en charge pour une compatibilité ascendante.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Télécommande
|
||||
|
||||
Les organisations peuvent fournir une configuration par défaut via le point de terminaison `.well-known/opencode`. Ceci est récupéré automatiquement lorsque vous vous authentifiez auprès d’un fournisseur qui le prend en charge.
|
||||
|
||||
La configuration distante est chargée en premier, servant de couche de base. Toutes les autres sources de configuration (globales, projet) peuvent remplacer ces valeurs par défaut.
|
||||
|
||||
Par exemple, si votre organisation fournit des serveurs MCP qui sont désactivés par défaut :
|
||||
|
||||
```json title="Remote config from .well-known/opencode"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez activer des serveurs spécifiques dans votre configuration locale :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Mondial
|
||||
|
||||
Placez votre configuration globale OpenCode dans `~/.config/opencode/opencode.json`. Utilisez la configuration globale pour les préférences de l'utilisateur telles que les thèmes, les fournisseurs ou les raccourcis clavier.
|
||||
|
||||
La configuration globale remplace les paramètres par défaut de l'organisation distante.
|
||||
|
||||
---
|
||||
|
||||
### Par projet
|
||||
|
||||
Ajoutez `opencode.json` à la racine de votre projet. La configuration du projet a la priorité la plus élevée parmi les fichiers de configuration standard : elle remplace les configurations globales et distantes.
|
||||
|
||||
:::tip
|
||||
Placez la configuration spécifique au projet à la racine de votre projet.
|
||||
:::
|
||||
|
||||
Lorsque OpenCode démarre, il recherche un fichier de configuration dans le répertoire actuel ou remonte jusqu'au répertoire Git le plus proche.
|
||||
|
||||
Il peut également être archivé en toute sécurité dans Git et utilise le même schéma que le schéma global.
|
||||
|
||||
---
|
||||
|
||||
### Chemin personnalisé
|
||||
|
||||
Spécifiez un chemin de fichier de configuration personnalisé à l'aide de la variable d'environnement `OPENCODE_CONFIG`.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG=/path/to/my/custom-config.json
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
La configuration personnalisée est chargée entre les configurations globales et celles du projet dans l'ordre de priorité.
|
||||
|
||||
---
|
||||
|
||||
### Répertoire personnalisé
|
||||
|
||||
Spécifiez un répertoire de configuration personnalisé à l'aide de `OPENCODE_CONFIG_DIR`
|
||||
variable d'environnement. Ce répertoire sera recherché pour les agents, les commandes,
|
||||
modes et plugins tout comme le répertoire standard `.opencode`, et devrait
|
||||
suivent la même structure.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Le répertoire personnalisé est chargé après les répertoires de configuration globale et `.opencode`, il **peut donc remplacer** leurs paramètres.
|
||||
|
||||
---
|
||||
|
||||
## Schéma
|
||||
|
||||
Le fichier de configuration a un schéma défini dans [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
|
||||
|
||||
Votre éditeur doit être capable de valider et de compléter automatiquement en fonction du schéma.
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
Vous pouvez configurer les paramètres spécifiques à TUI via l'option `tui`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Options disponibles :
|
||||
|
||||
- `scroll_acceleration.enabled` - Active l'accélération de défilement de style macOS. **A priorité sur `scroll_speed`.**
|
||||
- `scroll_speed` - Multiplicateur de vitesse de défilement personnalisé (par défaut : `3`, minimum : `1`). Ignoré si `scroll_acceleration.enabled` est `true`.
|
||||
- `diff_style` - Contrôle le rendu différentiel. `"auto"` s'adapte à la largeur du terminal, `"stacked"` affiche toujours une seule colonne.
|
||||
|
||||
[En savoir plus sur l'utilisation du TUI ici](/docs/tui).
|
||||
|
||||
---
|
||||
|
||||
### Serveur
|
||||
|
||||
Vous pouvez configurer les paramètres du serveur pour les commandes `opencode serve` et `opencode web` via l'option `server`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"mdnsDomain": "myproject.local",
|
||||
"cors": ["http://localhost:5173"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Options disponibles :
|
||||
|
||||
- `port` - Port sur lequel écouter.
|
||||
- `hostname` - Nom d'hôte sur lequel écouter. Lorsque `mdns` est activé et qu'aucun nom d'hôte n'est défini, la valeur par défaut est `0.0.0.0`.
|
||||
- `mdns` - Activer la découverte du service mDNS. Cela permet à d'autres appareils du réseau de découvrir votre serveur OpenCode.
|
||||
- `mdnsDomain` - Nom de domaine personnalisé pour le service mDNS. La valeur par défaut est `opencode.local`. Utile pour exécuter plusieurs instances sur le même réseau.
|
||||
- `cors` - Origines supplémentaires pour autoriser CORS lors de l'utilisation du serveur HTTP à partir d'un client basé sur un navigateur. Les valeurs doivent être des origines complètes (schéma + hôte + port facultatif), par exemple `https://app.example.com`.
|
||||
|
||||
[En savoir plus sur le serveur ici](/docs/server).
|
||||
|
||||
---
|
||||
|
||||
### Outils
|
||||
|
||||
Vous pouvez gérer les outils qu'un LLM peut utiliser via l'option `tools`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur les outils ici](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Modèles
|
||||
|
||||
Vous pouvez configurer les fournisseurs et les modèles que vous souhaitez utiliser dans votre configuration OpenCode via les options `provider`, `model` et `small_model`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {},
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
L'option `small_model` configure un modèle distinct pour les tâches légères comme la génération de titres. Par défaut, OpenCode essaie d'utiliser un modèle moins cher s'il est disponible auprès de votre fournisseur, sinon il revient à votre modèle principal.
|
||||
|
||||
Les options du fournisseur peuvent inclure `timeout` et `setCacheKey` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"options": {
|
||||
"timeout": 600000,
|
||||
"setCacheKey": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `timeout` - Délai d'expiration de la demande en millisecondes (par défaut : 300 000). Réglez sur `false` pour désactiver.
|
||||
- `setCacheKey` - Assurez-vous qu'une clé de cache est toujours définie pour le fournisseur désigné.
|
||||
|
||||
Vous pouvez également configurer [modèles locaux](/docs/models#local). [En savoir plus](/docs/models).
|
||||
|
||||
---
|
||||
|
||||
#### Options spécifiques au fournisseur
|
||||
|
||||
Certains fournisseurs prennent en charge des options de configuration supplémentaires au-delà des paramètres génériques `timeout` et `apiKey`.
|
||||
|
||||
##### Socle amazonien
|
||||
|
||||
Amazon Bedrock prend en charge la configuration spécifique à AWS :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"amazon-bedrock": {
|
||||
"options": {
|
||||
"region": "us-east-1",
|
||||
"profile": "my-aws-profile",
|
||||
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `region` - Région AWS pour Bedrock (par défaut : `AWS_REGION` env var ou `us-east-1`)
|
||||
- `profile` - Profil nommé AWS de `~/.aws/credentials` (par défaut : `AWS_PROFILE` env var)
|
||||
- `endpoint` - Point de terminaison personnalisé URL pour les points de terminaison d'un VPC. Il s'agit d'un alias pour l'option générique `baseURL` utilisant la terminologie spécifique à AWS. Si les deux sont spécifiés, `endpoint` est prioritaire.
|
||||
|
||||
:::note
|
||||
Les jetons du porteur (`AWS_BEARER_TOKEN_BEDROCK` ou `/connect`) ont priorité sur l'authentification basée sur le profil. Voir [précédence d'authentification](/docs/providers#authentication-precedence) pour plus de détails.
|
||||
:::
|
||||
|
||||
[En savoir plus sur la configuration d'Amazon Bedrock](/docs/providers#amazon-bedrock).
|
||||
|
||||
---
|
||||
|
||||
### Thèmes
|
||||
|
||||
Vous pouvez configurer le thème que vous souhaitez utiliser dans votre configuration OpenCode via l'option `theme`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": ""
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus ici](/docs/themes).
|
||||
|
||||
---
|
||||
|
||||
### Agents
|
||||
|
||||
Vous pouvez configurer des agents spécialisés pour des tâches spécifiques via l'option `agent`.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
// Disable file modification tools for review-only agent
|
||||
"write": false,
|
||||
"edit": false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également définir des agents à l'aide de fichiers markdown dans `~/.config/opencode/agents/` ou `.opencode/agents/`. [En savoir plus ici](/docs/agents).
|
||||
|
||||
---
|
||||
|
||||
### Agent par défaut
|
||||
|
||||
Vous pouvez définir l'agent par défaut à l'aide de l'option `default_agent`. Ceci détermine quel agent est utilisé lorsqu'aucun n'est explicitement spécifié.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"default_agent": "plan"
|
||||
}
|
||||
```
|
||||
|
||||
L'agent par défaut doit être un agent principal (et non un sous-agent). Il peut s'agir d'un agent intégré tel que `"build"` ou `"plan"`, ou d'un [agent personnalisé](/docs/agents) que vous avez défini. Si l'agent spécifié n'existe pas ou est un sous-agent, OpenCode reviendra à `"build"` avec un avertissement.
|
||||
|
||||
Ce paramètre s'applique à toutes les interfaces : TUI, CLI (`opencode run`), application de bureau et GitHub Action.
|
||||
|
||||
---
|
||||
|
||||
### Partage
|
||||
|
||||
Vous pouvez configurer la fonctionnalité [share](/docs/share) via l'option `share`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
Cela prend :
|
||||
|
||||
- `"manual"` - Autoriser le partage manuel via des commandes (par défaut)
|
||||
- `"auto"` – Partager automatiquement de nouvelles conversations
|
||||
- `"disabled"` – Désactiver complètement le partage
|
||||
|
||||
Par défaut, le partage est défini en mode manuel où vous devez partager explicitement les conversations à l'aide de la commande `/share`.
|
||||
|
||||
---
|
||||
|
||||
### Commandes
|
||||
|
||||
Vous pouvez configurer des commandes personnalisées pour les tâches répétitives via l'option `command`.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-haiku-4-5",
|
||||
},
|
||||
"component": {
|
||||
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
|
||||
"description": "Create a new component",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également définir des commandes à l'aide de fichiers markdown dans `~/.config/opencode/commands/` ou `.opencode/commands/`. [En savoir plus ici](/docs/commands).
|
||||
|
||||
---
|
||||
|
||||
### Raccourcis clavier
|
||||
|
||||
Vous pouvez personnaliser vos raccourcis clavier via l'option `keybinds`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus ici](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
### Mise à jour automatique
|
||||
|
||||
OpenCode téléchargera automatiquement toutes les nouvelles mises à jour au démarrage. Vous pouvez désactiver cela avec l'option `autoupdate`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"autoupdate": false
|
||||
}
|
||||
```
|
||||
|
||||
Si vous ne souhaitez pas de mises à jour mais souhaitez être averti lorsqu'une nouvelle version est disponible, définissez `autoupdate` sur `"notify"`.
|
||||
Notez que cela ne fonctionne que s'il n'a pas été installé à l'aide d'un gestionnaire de packages tel que Homebrew.
|
||||
|
||||
---
|
||||
|
||||
### Formateurs
|
||||
|
||||
Vous pouvez configurer les formateurs de code via l'option `formatter`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
},
|
||||
"custom-prettier": {
|
||||
"command": ["npx", "prettier", "--write", "$FILE"],
|
||||
"environment": {
|
||||
"NODE_ENV": "development"
|
||||
},
|
||||
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur les formateurs ici](/docs/formatters).
|
||||
|
||||
---
|
||||
|
||||
### Autorisations
|
||||
|
||||
Par défaut, opencode **autorise toutes les opérations** sans nécessiter d'approbation explicite. Vous pouvez modifier cela en utilisant l'option `permission`.
|
||||
|
||||
Par exemple, pour garantir que les outils `edit` et `bash` nécessitent l'approbation de l'utilisateur :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur les autorisations ici](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Compactage
|
||||
|
||||
Vous pouvez contrôler le comportement de compactage du contexte via l'option `compaction`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"compaction": {
|
||||
"auto": true,
|
||||
"prune": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `auto` - Compacte automatiquement la session lorsque le contexte est plein (par défaut : `true`).
|
||||
- `prune` - Supprimez les anciennes sorties de l'outil pour enregistrer les jetons (par défaut : `true`).
|
||||
|
||||
---
|
||||
|
||||
### Observateur
|
||||
|
||||
Vous pouvez configurer les modèles d'ignorance de l'observateur de fichiers via l'option `watcher`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"watcher": {
|
||||
"ignore": ["node_modules/**", "dist/**", ".git/**"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les modèles suivent la syntaxe globale. Utilisez ceci pour exclure les répertoires bruyants de la surveillance des fichiers.
|
||||
|
||||
---
|
||||
|
||||
### Serveurs MCP
|
||||
|
||||
Vous pouvez configurer les serveurs MCP que vous souhaitez utiliser via l'option `mcp`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {}
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus ici](/docs/mcp-servers).
|
||||
|
||||
---
|
||||
|
||||
### Plugins
|
||||
|
||||
[Plugins](/docs/plugins) étendent OpenCode avec des outils, des hooks et des intégrations personnalisés.
|
||||
|
||||
Placez les fichiers du plugin dans `.opencode/plugins/` ou `~/.config/opencode/plugins/`. Vous pouvez également charger des plugins depuis npm via l'option `plugin`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus ici](/docs/plugins).
|
||||
|
||||
---
|
||||
|
||||
### Instructions
|
||||
|
||||
Vous pouvez configurer les instructions pour le modèle que vous utilisez via l'option `instructions`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Cela prend un tableau de chemins et de modèles globaux vers les fichiers d'instructions. [Apprendre encore plus
|
||||
à propos des règles ici](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
### Fournisseurs handicapés
|
||||
|
||||
Vous pouvez désactiver les fournisseurs chargés automatiquement via l'option `disabled_providers`. Ceci est utile lorsque vous souhaitez empêcher le chargement de certains fournisseurs même si leurs informations d'identification sont disponibles.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"disabled_providers": ["openai", "gemini"]
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Le `disabled_providers` est prioritaire sur `enabled_providers`.
|
||||
:::
|
||||
|
||||
L'option `disabled_providers` accepte un tableau d'ID de fournisseur. Lorsqu'un fournisseur est désactivé :
|
||||
|
||||
- Il ne sera pas chargé même si des variables d'environnement sont définies.
|
||||
- Il ne sera pas chargé même si les clés API sont configurées via la commande `/connect`.
|
||||
- Les modèles du fournisseur n'apparaîtront pas dans la liste de sélection des modèles.
|
||||
|
||||
---
|
||||
|
||||
### Fournisseurs activés
|
||||
|
||||
Vous pouvez spécifier une liste autorisée de fournisseurs via l'option `enabled_providers`. Une fois défini, seuls les fournisseurs spécifiés seront activés et tous les autres seront ignorés.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"enabled_providers": ["anthropic", "openai"]
|
||||
}
|
||||
```
|
||||
|
||||
Ceci est utile lorsque vous souhaitez restreindre OpenCode à l'utilisation de fournisseurs spécifiques plutôt que de les désactiver un par un.
|
||||
|
||||
:::note
|
||||
Le `disabled_providers` est prioritaire sur `enabled_providers`.
|
||||
:::
|
||||
|
||||
Si un fournisseur apparaît à la fois dans `enabled_providers` et `disabled_providers`, le `disabled_providers` est prioritaire pour la compatibilité ascendante.
|
||||
|
||||
---
|
||||
|
||||
### Expérimental
|
||||
|
||||
La clé `experimental` contient des options en cours de développement actif.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"experimental": {}
|
||||
}
|
||||
```
|
||||
|
||||
:::caution
|
||||
Les options expérimentales ne sont pas stables. Ils peuvent changer ou être supprimés sans préavis.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Variables
|
||||
|
||||
Vous pouvez utiliser la substitution de variables dans vos fichiers de configuration pour référencer les variables d'environnement et le contenu des fichiers.
|
||||
|
||||
---
|
||||
|
||||
### Vars d'environnement
|
||||
|
||||
Utilisez `{env:VARIABLE_NAME}` pour remplacer les variables d'environnement :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "{env:OPENCODE_MODEL}",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"models": {},
|
||||
"options": {
|
||||
"apiKey": "{env:ANTHROPIC_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si la variable d'environnement n'est pas définie, elle sera remplacée par une chaîne vide.
|
||||
|
||||
---
|
||||
|
||||
### Fichiers
|
||||
|
||||
Utilisez `{file:path/to/file}` pour remplacer le contenu d'un fichier :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["./custom-instructions.md"],
|
||||
"provider": {
|
||||
"openai": {
|
||||
"options": {
|
||||
"apiKey": "{file:~/.secrets/openai-key}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les chemins de fichiers peuvent être :
|
||||
|
||||
- Par rapport au répertoire du fichier de configuration
|
||||
- Ou des chemins absolus commençant par `/` ou `~`
|
||||
|
||||
Ceux-ci sont utiles pour :
|
||||
|
||||
- Conserver les données sensibles telles que les clés API dans des fichiers séparés.
|
||||
- Y compris de gros fichiers d'instructions sans encombrer votre configuration.
|
||||
- Partage d'extraits de configuration communs sur plusieurs fichiers de configuration.
|
||||
170
packages/web/src/content/docs/fr/custom-tools.mdx
Normal file
170
packages/web/src/content/docs/fr/custom-tools.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Outils personnalisés
|
||||
description: Créez des outils que LLM peut appeler dans opencode.
|
||||
---
|
||||
|
||||
Les outils personnalisés sont des fonctions que vous créez et que le LLM peut appeler pendant les conversations. Ils fonctionnent avec les [outils intégrés](/docs/tools) de opencode comme `read`, `write` et `bash`.
|
||||
|
||||
---
|
||||
|
||||
## Création d'un outil
|
||||
|
||||
Les outils sont définis sous forme de fichiers **TypeScript** ou **JavaScript**. Cependant, la définition de l'outil peut appeler des scripts écrits dans **n'importe quel langage** : TypeScript ou JavaScript n'est utilisé que pour la définition de l'outil elle-même.
|
||||
|
||||
---
|
||||
|
||||
### Emplacement
|
||||
|
||||
Ils peuvent être définis :
|
||||
|
||||
- Localement en les plaçant dans le répertoire `.opencode/tools/` de votre projet.
|
||||
- Ou globalement, en les plaçant dans `~/.config/opencode/tools/`.
|
||||
|
||||
---
|
||||
|
||||
### Structure
|
||||
|
||||
Le moyen le plus simple de créer des outils consiste à utiliser l'assistant `tool()` qui fournit la sécurité et la validation du type.
|
||||
|
||||
```ts title=".opencode/tools/database.ts" {1}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Query the project database",
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute"),
|
||||
},
|
||||
async execute(args) {
|
||||
// Your database logic here
|
||||
return `Executed query: ${args.query}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Le **nom de fichier** devient le **nom de l'outil**. Ce qui précède crée un outil `database`.
|
||||
|
||||
---
|
||||
|
||||
#### Plusieurs outils par fichier
|
||||
|
||||
Vous pouvez également exporter plusieurs outils à partir d'un seul fichier. Chaque exportation devient **un outil distinct** portant le nom **`<filename>_<exportname>`** :
|
||||
|
||||
```ts title=".opencode/tools/math.ts"
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const add = tool({
|
||||
description: "Add two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a + args.b
|
||||
},
|
||||
})
|
||||
|
||||
export const multiply = tool({
|
||||
description: "Multiply two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a * args.b
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Cela crée deux outils : `math_add` et `math_multiply`.
|
||||
|
||||
---
|
||||
|
||||
### Arguments
|
||||
|
||||
Vous pouvez utiliser `tool.schema`, qui est simplement [Zod](https://zod.dev), pour définir les types d'arguments.
|
||||
|
||||
```ts "tool.schema"
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute")
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également importer [Zod](https://zod.dev) directement et renvoyer un objet simple :
|
||||
|
||||
```ts {6}
|
||||
import { z } from "zod"
|
||||
|
||||
export default {
|
||||
description: "Tool description",
|
||||
args: {
|
||||
param: z.string().describe("Parameter description"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
// Tool implementation
|
||||
return "result"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Contexte
|
||||
|
||||
Les outils reçoivent du contexte sur la session en cours :
|
||||
|
||||
```ts title=".opencode/tools/project.ts" {8}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Get project information",
|
||||
args: {},
|
||||
async execute(args, context) {
|
||||
// Access context information
|
||||
const { agent, sessionID, messageID, directory, worktree } = context
|
||||
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Utilisez `context.directory` pour le répertoire de travail de la session.
|
||||
Utilisez `context.worktree` pour la racine de git worktree.
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
### Écrire un outil en Python
|
||||
|
||||
Vous pouvez écrire vos outils dans la langue de votre choix. Voici un exemple qui ajoute deux nombres à l'aide de Python.
|
||||
|
||||
Tout d'abord, créez l'outil en tant que script Python :
|
||||
|
||||
```python title=".opencode/tools/add.py"
|
||||
import sys
|
||||
|
||||
a = int(sys.argv[1])
|
||||
b = int(sys.argv[2])
|
||||
print(a + b)
|
||||
```
|
||||
|
||||
Créez ensuite la définition d'outil qui l'invoque :
|
||||
|
||||
```ts title=".opencode/tools/python-add.ts" {10}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import path from "path"
|
||||
|
||||
export default tool({
|
||||
description: "Add two numbers using Python",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const script = path.join(context.worktree, ".opencode/tools/add.py")
|
||||
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
|
||||
return result.trim()
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Ici, nous utilisons l'utilitaire [`Bun.$`](https://bun.com/docs/runtime/shell) pour exécuter le script Python.
|
||||
76
packages/web/src/content/docs/fr/ecosystem.mdx
Normal file
76
packages/web/src/content/docs/fr/ecosystem.mdx
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: Écosystème
|
||||
description: Projets et intégrations construits avec OpenCode.
|
||||
---
|
||||
|
||||
Une collection de projets communautaires construits sur OpenCode.
|
||||
|
||||
:::note
|
||||
Vous souhaitez ajouter votre projet lié à OpenCode à cette liste ? Soumettez un PR.
|
||||
:::
|
||||
|
||||
Vous pouvez également consulter [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) et [opencode.cafe](https://opencode.cafe), une communauté qui regroupe l'écosystème et la communauté.
|
||||
|
||||
---
|
||||
|
||||
## Plugins
|
||||
|
||||
| Nom | Descriptif |
|
||||
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Exécutez automatiquement des sessions OpenCode dans des sandbox Daytona isolés avec synchronisation git et aperçus en direct |
|
||||
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Injecter automatiquement les en-têtes de session Helicone pour le regroupement des requêtes |
|
||||
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Injectez automatiquement les types TypeScript/Svelte dans les lectures de fichiers avec des outils de recherche |
|
||||
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Utilisez votre abonnement ChatGPT Plus/Pro au lieu de crédits API |
|
||||
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Utilisez votre forfait Gemini existant au lieu de la facturation API |
|
||||
| [opencode-antigravité-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Utilisez les modèles gratuits d'Antigravity au lieu de la facturation API |
|
||||
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Isolation de conteneur de développement multibranche avec clones superficiels et ports attribués automatiquement |
|
||||
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Plugin Google Antigravity OAuth, avec prise en charge de la recherche Google et gestion API plus robuste |
|
||||
| [opencode-élagage-de-contexte-dynamique](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimisez l'utilisation des jetons en éliminant les sorties d'outils obsolètes |
|
||||
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Ajoutez la prise en charge native de la recherche Web pour les fournisseurs pris en charge avec le style ancré par Google |
|
||||
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Permet aux agents IA d'exécuter des processus en arrière-plan dans un PTY et de leur envoyer des entrées interactives. |
|
||||
| [opencode-shell-stratégie](https://github.com/JRedeker/opencode-shell-strategy) | Instructions pour les commandes shell non interactives - empêche les blocages des opérations dépendantes du téléscripteur |
|
||||
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Suivez l'utilisation de OpenCode avec Wakatime |
|
||||
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Nettoyer les tableaux de démarques produits par les LLM |
|
||||
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | Édition de code 10 fois plus rapide avec Morph Fast Apply API et les marqueurs d'édition différée |
|
||||
| [oh-mon-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Agents d'arrière-plan, outils LSP/AST/MCP prédéfinis, agents sélectionnés, compatibles Claude Code |
|
||||
| [opencode-notificateur](https://github.com/panta82/opencode-notificator) | Notifications de bureau et alertes sonores pour les sessions OpenCode |
|
||||
| [opencode-notificateur](https://github.com/mohak34/opencode-notifier) | Notifications sur le bureau et alertes sonores pour les événements d'autorisation, d'achèvement et d'erreur |
|
||||
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | Dénomination automatique de session Zellij basée sur l'IA basée sur le contexte OpenCode |
|
||||
| [opencode-habile](https://github.com/zenobi-us/opencode-skillful) | Autoriser les agents OpenCode à charger paresseusement les invites à la demande grâce à la découverte et à l'injection de compétences |
|
||||
| [opencode-supermémoire](https://github.com/supermemoryai/opencode-supermemory) | Mémoire persistante entre les sessions utilisant Supermemory |
|
||||
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Révision interactive du plan avec annotation visuelle et partage privé/hors ligne |
|
||||
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Étendez opencode /commands dans un système d'orchestration puissant avec contrôle de flux granulaire |
|
||||
| [opencode-planificateur](https://github.com/different-ai/opencode-scheduler) | Planifiez des tâches récurrentes à l'aide de launchd (Mac) ou systemd (Linux) avec la syntaxe cron |
|
||||
| [micode](https://github.com/vtemian/micode) | Brainstorming structuré → Planifier → Mettre en œuvre un workflow avec continuité de session |
|
||||
| [octo](https://github.com/vtemian/octto) | Interface utilisateur de navigateur interactive pour le brainstorming IA avec des formulaires multi-questions |
|
||||
| [opencode-agents-de-fond](https://github.com/kdcokenny/opencode-background-agents) | Agents d'arrière-plan de style Claude Code avec délégation asynchrone et persistance du contexte |
|
||||
| [opencode-notifier](https://github.com/kdcokenny/opencode-notify) | Notifications natives du système d'exploitation pour OpenCode – savoir quand les tâches sont terminées |
|
||||
| [opencode-espace de travail](https://github.com/kdcokenny/opencode-workspace) | Harnais d'orchestration multi-agents fourni – 16 composants, une installation |
|
||||
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Arbres de travail Git sans friction pour OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Projets
|
||||
|
||||
| Nom | Descriptif |
|
||||
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
|
||||
| [kimaki](https://github.com/remorses/kimaki) | Bot Discord pour contrôler les sessions OpenCode, construit sur le SDK |
|
||||
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Plugin Neovim pour les invites compatibles avec l'éditeur, construit sur API |
|
||||
| [portail](https://github.com/hosenur/portal) | Interface utilisateur Web axée sur les mobiles pour OpenCode sur Tailscale/VPN |
|
||||
| [Modèle de plug-in opencode](https://github.com/zenobi-us/opencode-plugin-template/) | Modèle pour créer des plugins OpenCode |
|
||||
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Frontend Neovim pour opencode - un agent de codage d'IA basé sur un terminal |
|
||||
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Fournisseur Vercel AI SDK pour l'utilisation de OpenCode via @opencode-ai/sdk |
|
||||
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Application Web/De bureau et extension VS Code pour OpenCode |
|
||||
| [OpenCode-Obsidienne](https://github.com/mtymek/opencode-obsidian) | Plugin Obsidian qui intègre OpenCode dans l'interface utilisateur d'Obsidian |
|
||||
| [OpenWork](https://github.com/different-ai/openwork) | Une alternative open source à Claude Cowork, propulsée par OpenCode |
|
||||
| [ocx](https://github.com/kdcokenny/ocx) | Gestionnaire d'extensions OpenCode avec profils portables et isolés. |
|
||||
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Application client de bureau, Web, mobile et distante pour OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## Agents
|
||||
|
||||
| Nom | Descriptif |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| [Agent](https://github.com/Cluster444/agentic) | Agents et commandes d'IA modulaires pour un développement structuré |
|
||||
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Configurations, invites, agents et plug-ins pour des flux de travail améliorés |
|
||||
170
packages/web/src/content/docs/fr/enterprise.mdx
Normal file
170
packages/web/src/content/docs/fr/enterprise.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: Entreprise
|
||||
description: Utiliser OpenCode en toute sécurité dans votre organisation.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Enterprise est destiné aux organisations qui souhaitent s'assurer que leur code et leurs données ne quittent jamais leur infrastructure. Il peut le faire en utilisant une configuration centralisée qui s'intègre à votre SSO et à votre passerelle IA interne.
|
||||
|
||||
:::note
|
||||
OpenCode ne stocke aucune de vos données de code ou de contexte.
|
||||
:::
|
||||
|
||||
Pour démarrer avec OpenCode Enterprise :
|
||||
|
||||
1. Faites un essai en interne avec votre équipe.
|
||||
2. **<a href={email}>Contactez-nous</a>** pour discuter des options de tarification et de mise en œuvre.
|
||||
|
||||
---
|
||||
|
||||
## Procès
|
||||
|
||||
OpenCode est open source et ne stocke aucune de vos données de code ou de contexte, vos développeurs peuvent donc simplement [commencer ](/docs/) et effectuer un essai.
|
||||
|
||||
---
|
||||
|
||||
### Traitement des données
|
||||
|
||||
**OpenCode ne stocke pas votre code ni vos données contextuelles.** Tous les traitements s'effectuent localement ou via des appels API directs à votre fournisseur d'IA.
|
||||
|
||||
Cela signifie que tant que vous faites appel à un fournisseur de confiance ou à un
|
||||
Passerelle AI, vous pouvez utiliser OpenCode en toute sécurité.
|
||||
|
||||
La seule mise en garde ici concerne la fonctionnalité facultative `/share`.
|
||||
|
||||
---
|
||||
|
||||
#### Partager des conversations
|
||||
|
||||
Si un utilisateur active la fonctionnalité `/share`, la conversation et les données qui y sont associées sont envoyées au service que nous utilisons pour héberger ces pages de partage sur opencode.ai.
|
||||
|
||||
Les données sont actuellement servies via le réseau périphérique de notre CDN et sont mises en cache en périphérie, à proximité de vos utilisateurs.
|
||||
|
||||
Nous vous recommandons de désactiver cette option pour votre essai.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
[En savoir plus sur le partage](/docs/share).
|
||||
|
||||
---
|
||||
|
||||
### Propriété du code
|
||||
|
||||
**Vous possédez tout le code produit par OpenCode.** Il n'y a aucune restriction de licence ni revendication de propriété.
|
||||
|
||||
---
|
||||
|
||||
## Tarifs
|
||||
|
||||
Nous utilisons un modèle par siège pour OpenCode Enterprise. Si vous disposez de votre propre passerelle LLM, nous ne facturons pas les jetons utilisés. Pour plus de détails sur les options de tarification et de mise en œuvre, **<a href={email}>contactez-nous</a>**.
|
||||
|
||||
---
|
||||
|
||||
## Déploiement
|
||||
|
||||
Une fois que vous avez terminé votre essai et que vous êtes prêt à utiliser OpenCode à
|
||||
votre organisation, vous pouvez **<a href={email}>nous contacter</a>** pour en discuter
|
||||
options de tarification et de mise en œuvre.
|
||||
|
||||
---
|
||||
|
||||
### Configuration centrale
|
||||
|
||||
Nous pouvons configurer OpenCode pour utiliser une seule configuration centrale pour l'ensemble de votre organisation.
|
||||
|
||||
Cette configuration centralisée peut s'intégrer à votre fournisseur SSO et garantit que tous les utilisateurs accèdent uniquement à votre passerelle IA interne.
|
||||
|
||||
---
|
||||
|
||||
### Intégration SSO
|
||||
|
||||
Grâce à la configuration centrale, OpenCode peut s'intégrer au fournisseur SSO de votre organisation pour l'authentification.
|
||||
|
||||
Cela permet à OpenCode d'obtenir les informations d'identification de votre passerelle IA interne via votre système de gestion des identités existant.
|
||||
|
||||
---
|
||||
|
||||
### Passerelle IA interne
|
||||
|
||||
Avec la configuration centrale, OpenCode peut également être configuré pour utiliser uniquement votre passerelle IA interne.
|
||||
|
||||
Vous pouvez également désactiver tous les autres fournisseurs d'IA, en vous assurant que toutes les demandes transitent par l'infrastructure approuvée de votre organisation.
|
||||
|
||||
---
|
||||
|
||||
### Auto-hébergement
|
||||
|
||||
Bien que nous vous recommandons de désactiver les pages de partage pour garantir que vos données ne quittent jamais
|
||||
votre organisation, nous pouvons également vous aider à les auto-héberger sur votre infrastructure.
|
||||
|
||||
Ceci est actuellement sur notre feuille de route. Si vous êtes intéressé, **<a href={email}>faites-le-nous savoir</a>**.
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
<details>
|
||||
<summary>Qu’est-ce que OpenCode Entreprise ?</summary>
|
||||
|
||||
OpenCode Enterprise est destiné aux organisations qui souhaitent s'assurer que leur code et leurs données ne quittent jamais leur infrastructure. Il peut le faire en utilisant une configuration centralisée qui s'intègre à votre SSO et à votre passerelle IA interne.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Comment démarrer avec OpenCode Enterprise ?</summary>
|
||||
|
||||
Commencez simplement par un essai interne avec votre équipe. OpenCode par défaut ne stocke pas votre code ni vos données contextuelles, ce qui facilite le démarrage.
|
||||
|
||||
Ensuite, **<a href={email}>contactez-nous</a>** pour discuter des options de tarification et de mise en œuvre.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Comment fonctionne la tarification d'entreprise ?</summary>
|
||||
|
||||
Nous proposons des tarifs d'entreprise par siège. Si vous disposez de votre propre passerelle LLM, nous ne facturons pas les jetons utilisés. Pour plus de détails, **<a href={email}>contactez-nous</a>** pour un devis personnalisé basé sur les besoins de votre organisation.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Mes données sont-elles sécurisées avec OpenCode Enterprise ?</summary>
|
||||
|
||||
Oui. OpenCode ne stocke pas votre code ni vos données contextuelles. Tout le traitement s'effectue localement ou via des appels API directs à votre fournisseur d'IA. Grâce à la configuration centrale et à l'intégration SSO, vos données restent sécurisées au sein de l'infrastructure de votre organisation.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Pouvons-nous utiliser notre propre registre privé NPM ?</summary>
|
||||
|
||||
OpenCode prend en charge les registres npm privés via la prise en charge native des fichiers `.npmrc` de Bun. Si votre organisation utilise un registre privé, tel que JFrog Artifactory, Nexus ou similaire, assurez-vous que les développeurs sont authentifiés avant d'exécuter OpenCode.
|
||||
|
||||
Pour configurer l'authentification avec votre registre privé :
|
||||
|
||||
```bash
|
||||
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
```
|
||||
|
||||
Cela crée `~/.npmrc` avec les détails d'authentification. OpenCode sera automatiquement
|
||||
ramasse ça.
|
||||
|
||||
:::caution
|
||||
Vous devez être connecté au registre privé avant d'exécuter OpenCode.
|
||||
:::
|
||||
|
||||
Alternativement, vous pouvez configurer manuellement un fichier `.npmrc` :
|
||||
|
||||
```bash title="~/.npmrc"
|
||||
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
|
||||
```
|
||||
|
||||
Les développeurs doivent être connectés au registre privé avant d'exécuter OpenCode pour garantir que les packages peuvent être installés à partir du registre de votre entreprise.
|
||||
|
||||
</details>
|
||||
130
packages/web/src/content/docs/fr/formatters.mdx
Normal file
130
packages/web/src/content/docs/fr/formatters.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: Formateurs
|
||||
description: OpenCode utilise des formateurs spécifiques à la langue.
|
||||
---
|
||||
|
||||
OpenCode formate automatiquement les fichiers après leur écriture ou leur modification à l'aide de formateurs spécifiques à la langue. Cela garantit que le code généré suit les styles de code de votre projet.
|
||||
|
||||
---
|
||||
|
||||
## Intégré
|
||||
|
||||
OpenCode est livré avec plusieurs formateurs intégrés pour les langages et frameworks populaires. Vous trouverez ci-dessous une liste des formateurs, des extensions de fichiers prises en charge et des commandes ou options de configuration dont il a besoin.
|
||||
|
||||
| Formateur | Rallonges | Exigences |
|
||||
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| gofmt | .aller | Commande `gofmt` disponible |
|
||||
| mélanger | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Commande `mix` disponible |
|
||||
| plus jolie | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml et [plus](https://prettier.io/docs/en/index.html) | Dépendance `prettier` dans `package.json` |
|
||||
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml et [plus](https://biomejs.dev/) | Fichier de configuration `biome.json(c)` |
|
||||
| zigzag | .zig, .zon | Commande `zig` disponible |
|
||||
| format clang | .c, .cpp, .h, .hpp, .ino et [plus](https://clang.llvm.org/docs/ClangFormat.html) | Fichier de configuration `.clang-format` |
|
||||
| klint | .kt, .kts | Commande `ktlint` disponible |
|
||||
| fraise | .py, .pyi | Commande `ruff` disponible avec config |
|
||||
| rustfmt | .rs | Commande `rustfmt` disponible |
|
||||
| fret | .rs | Commande `cargo fmt` disponible |
|
||||
| UV | .py, .pyi | Commande `uv` disponible |
|
||||
| rubocop | .rb, .rake, .gemspec, .ru | Commande `rubocop` disponible |
|
||||
| normerb | .rb, .rake, .gemspec, .ru | Commande `standardrb` disponible |
|
||||
| htmlbeautifier | .erb, .html.erb | Commande `htmlbeautifier` disponible |
|
||||
| air | .R | Commande `air` disponible |
|
||||
| fléchette | .dart | Commande `dart` disponible |
|
||||
| format ocaml | .ml, .mli | Commande `ocamlformat` disponible et fichier de configuration `.ocamlformat` |
|
||||
| terraformer | .tf, .tfvars | Commande `terraform` disponible |
|
||||
| lueur | .lueur | Commande `gleam` disponible |
|
||||
| nixfmt | .nix | Commande `nixfmt` disponible |
|
||||
| shfmt | .sh, .bash | Commande `shfmt` disponible |
|
||||
| pinte | .php | Dépendance `laravel/pint` dans `composer.json` |
|
||||
| oxfmt (expérimental) | .js, .jsx, .ts, .tsx | Dépendance `oxfmt` dans `package.json` et un [flag de variable d'environnement expérimental](/docs/cli/#experimental) |
|
||||
| bronze doré | .hs | Commande `ormolu` disponible |
|
||||
|
||||
Ainsi, si votre projet a `prettier` dans votre `package.json`, OpenCode l'utilisera automatiquement.
|
||||
|
||||
---
|
||||
|
||||
## Comment ça marche
|
||||
|
||||
Lorsque OpenCode écrit ou modifie un fichier, il :
|
||||
|
||||
1. Vérifie l'extension du fichier par rapport à tous les formateurs activés.
|
||||
2. Exécute la commande de formatage appropriée sur le fichier.
|
||||
3. Applique automatiquement les modifications de formatage.
|
||||
|
||||
Ce processus se déroule en arrière-plan, garantissant que vos styles de code sont conservés sans aucune étape manuelle.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez personnaliser les formateurs via la section `formatter` de votre configuration OpenCode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {}
|
||||
}
|
||||
```
|
||||
|
||||
Chaque configuration du formateur prend en charge les éléments suivants :
|
||||
|
||||
| Propriété | Tapez | Descriptif |
|
||||
| ------------- | -------- | ------------------------------------------------------- |
|
||||
| `disabled` | booléen | Définissez ceci sur `true` pour désactiver le formateur |
|
||||
| `command` | chaîne[] | La commande à exécuter pour le formatage |
|
||||
| `environment` | objet | Variables d'environnement à définir lors de l'exécution du formateur |
|
||||
| `extensions` | chaîne[] | Extensions de fichiers que ce formateur doit gérer |
|
||||
|
||||
Regardons quelques exemples.
|
||||
|
||||
---
|
||||
|
||||
### Désactivation des formateurs
|
||||
|
||||
Pour désactiver **tous** les formateurs globalement, définissez `formatter` sur `false` :
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": false
|
||||
}
|
||||
```
|
||||
|
||||
Pour désactiver un formateur **spécifique**, définissez `disabled` sur `true` :
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Formateurs personnalisés
|
||||
|
||||
Vous pouvez remplacer les formateurs intégrés ou en ajouter de nouveaux en spécifiant la commande, les variables d'environnement et les extensions de fichier :
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"command": ["npx", "prettier", "--write", "$FILE"],
|
||||
"environment": {
|
||||
"NODE_ENV": "development"
|
||||
},
|
||||
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
||||
},
|
||||
"custom-markdown-formatter": {
|
||||
"command": ["deno", "fmt", "$FILE"],
|
||||
"extensions": [".md"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
L'espace réservé **`$FILE`** dans la commande sera remplacé par le chemin d'accès au fichier en cours de formatage.
|
||||
321
packages/web/src/content/docs/fr/github.mdx
Normal file
321
packages/web/src/content/docs/fr/github.mdx
Normal file
@@ -0,0 +1,321 @@
|
||||
---
|
||||
title: GitHub
|
||||
description: Utilisez OpenCode dans les problèmes et les pull-requests GitHub.
|
||||
---
|
||||
|
||||
OpenCode s'intègre à votre flux de travail GitHub. Mentionnez `/opencode` ou `/oc` dans votre commentaire, et OpenCode exécutera des tâches dans votre coureur d'actions GitHub.
|
||||
|
||||
---
|
||||
|
||||
## Caractéristiques
|
||||
|
||||
- **Problèmes de triage** : demandez à OpenCode d'examiner un problème et de vous l'expliquer.
|
||||
- **Réparer et implémenter** : demandez à OpenCode de résoudre un problème ou d'implémenter une fonctionnalité. Et il fonctionnera dans une nouvelle branche et soumettra un PR avec tous les changements.
|
||||
- **Sécurisé** : OpenCode court à l'intérieur des coureurs de votre GitHub.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Exécutez la commande suivante dans un projet qui se trouve dans un dépôt GitHub :
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Cela vous guidera dans l'installation de l'application GitHub, la création du flux de travail et la configuration des secrets.
|
||||
|
||||
---
|
||||
|
||||
### Configuration manuelle
|
||||
|
||||
Ou vous pouvez le configurer manuellement.
|
||||
|
||||
1. **Installez l'application GitHub**
|
||||
|
||||
Rendez-vous sur [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Assurez-vous qu'il est installé sur le référentiel cible.
|
||||
|
||||
2. **Ajouter le flux de travail**
|
||||
|
||||
Ajoutez le fichier de workflow suivant à `.github/workflows/opencode.yml` dans votre référentiel. Assurez-vous de définir les clés `model` appropriées et API requises dans `env`.
|
||||
|
||||
```yml title=".github/workflows/opencode.yml" {24,26}
|
||||
name: opencode
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
if: |
|
||||
contains(github.event.comment.body, '/oc') ||
|
||||
contains(github.event.comment.body, '/opencode')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
# share: true
|
||||
# github_token: xxxx
|
||||
```
|
||||
|
||||
3. **Stockez les clés API en secret**
|
||||
|
||||
Dans les **paramètres** de votre organisation ou de votre projet, développez **Secrets et variables** sur la gauche et sélectionnez **Actions**. Et ajoutez les clés API requises.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
- `model` : Le modèle à utiliser avec OpenCode. Prend le format `provider/model`. Ceci est **obligatoire**.
|
||||
- `agent` : l'agent à utiliser. Doit être un agent principal. Revient à `default_agent` à partir de la configuration ou à `"build"` s'il n'est pas trouvé.
|
||||
- `share` : s'il faut partager la session OpenCode. La valeur par défaut est **true** pour les référentiels publics.
|
||||
- `prompt` : invite personnalisée facultative pour remplacer le comportement par défaut. Utilisez-le pour personnaliser la façon dont OpenCode traite les demandes.
|
||||
- `token` : jeton d'accès GitHub facultatif pour effectuer des opérations telles que la création de commentaires, la validation de modifications et l'ouverture de demandes d'extraction. Par défaut, OpenCode utilise le jeton d'accès à l'installation de l'application OpenCode GitHub, de sorte que les validations, les commentaires et les demandes d'extraction apparaissent comme provenant de l'application.
|
||||
|
||||
Vous pouvez également utiliser le `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) intégré du GitHub Action Runner sans installer l'application OpenCode GitHub. Assurez-vous simplement d'accorder les autorisations requises dans votre flux de travail :
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
```
|
||||
|
||||
Vous pouvez également utiliser un [jetons d'accès personnels](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) si vous préférez.
|
||||
|
||||
---
|
||||
|
||||
## Événements pris en charge
|
||||
|
||||
OpenCode peut être déclenché par les événements GitHub suivants :
|
||||
|
||||
| Type d'événement | Déclenché par | Détails |
|
||||
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | Commenter un problème ou un PR | Mentionnez `/opencode` ou `/oc` dans votre commentaire. OpenCode lit le contexte et peut créer des branches, ouvrir des PR ou répondre. |
|
||||
| `pull_request_review_comment` | Commentez des lignes de code spécifiques dans un PR | Mentionnez `/opencode` ou `/oc` lors de la révision du code. OpenCode reçoit le chemin du fichier, les numéros de ligne et le contexte de comparaison. |
|
||||
| `issues` | Numéro ouvert ou modifié | Déclenchez automatiquement OpenCode lorsque des problèmes sont créés ou modifiés. Nécessite une entrée `prompt`. |
|
||||
| `pull_request` | PR ouvert ou mis à jour | Déclenchez automatiquement OpenCode lorsque les PR sont ouverts, synchronisés ou rouverts. Utile pour les avis automatisés. |
|
||||
| `schedule` | Planification basée sur Cron | Exécutez OpenCode selon un planning. Nécessite une entrée `prompt`. La sortie va aux journaux et aux PR (aucun problème à commenter). |
|
||||
| `workflow_dispatch` | Déclenchement manuel depuis l'interface utilisateur GitHub | Déclenchez OpenCode à la demande via l'onglet Actions. Nécessite une entrée `prompt`. La sortie va aux journaux et aux PR. |
|
||||
|
||||
### Exemple d'horaire
|
||||
|
||||
Exécutez OpenCode selon un planning pour effectuer des tâches automatisées :
|
||||
|
||||
```yaml title=".github/workflows/opencode-scheduled.yml"
|
||||
name: Scheduled OpenCode Task
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 9 * * 1" # Every Monday at 9am UTC
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review the codebase for any TODO comments and create a summary.
|
||||
If you find issues worth addressing, open an issue to track them.
|
||||
```
|
||||
|
||||
Pour les événements planifiés, l'entrée `prompt` est **obligatoire** car il n'y a aucun commentaire pour extraire les instructions. Les workflows planifiés s'exécutent sans contexte utilisateur pour vérifier les autorisations. Le workflow doit donc accorder `contents: write` et `pull-requests: write` si vous vous attendez à ce que OpenCode crée des branches ou des PR.
|
||||
|
||||
---
|
||||
|
||||
### Exemple de demande de tirage
|
||||
|
||||
Examinez automatiquement les PR lorsqu'ils sont ouverts ou mis à jour :
|
||||
|
||||
```yaml title=".github/workflows/opencode-review.yml"
|
||||
name: opencode-review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
|
||||
jobs:
|
||||
review:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
use_github_token: true
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
Pour les événements `pull_request`, si aucun `prompt` n'est fourni, OpenCode examine par défaut la demande d'extraction.
|
||||
|
||||
---
|
||||
|
||||
### Exemple de tri des problèmes
|
||||
|
||||
Triez automatiquement les nouveaux problèmes. Cet exemple filtre les comptes datant de plus de 30 jours pour réduire le spam :
|
||||
|
||||
```yaml title=".github/workflows/opencode-triage.yml"
|
||||
name: Issue Triage
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Check account age
|
||||
id: check
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const user = await github.rest.users.getByUsername({
|
||||
username: context.payload.issue.user.login
|
||||
});
|
||||
const created = new Date(user.data.created_at);
|
||||
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
|
||||
return days >= 30;
|
||||
result-encoding: string
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
if: steps.check.outputs.result == 'true'
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
if: steps.check.outputs.result == 'true'
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review this issue. If there's a clear fix or relevant docs:
|
||||
- Provide documentation links
|
||||
- Add error handling guidance for code examples
|
||||
Otherwise, do not comment.
|
||||
```
|
||||
|
||||
Pour les événements `issues`, l'entrée `prompt` est **obligatoire** car il n'y a aucun commentaire à partir duquel extraire les instructions.
|
||||
|
||||
---
|
||||
|
||||
## Invites personnalisées
|
||||
|
||||
Remplacez l'invite par défaut pour personnaliser le comportement de OpenCode pour votre flux de travail.
|
||||
|
||||
```yaml title=".github/workflows/opencode.yml"
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-5
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
Ceci est utile pour appliquer des critères d’évaluation spécifiques, des normes de codage ou des domaines d’intervention pertinents pour votre projet.
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
Voici quelques exemples de la façon dont vous pouvez utiliser OpenCode dans GitHub.
|
||||
|
||||
- **Expliquez un problème**
|
||||
|
||||
Ajoutez ce commentaire dans un numéro GitHub.
|
||||
|
||||
```
|
||||
/opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode lira l'intégralité du fil de discussion, y compris tous les commentaires, et répondra avec une explication claire.
|
||||
|
||||
- **Résoudre un problème**
|
||||
|
||||
Dans un numéro GitHub, dites :
|
||||
|
||||
```
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
Et OpenCode créera une nouvelle branche, mettra en œuvre les modifications et ouvrira un PR avec les modifications.
|
||||
|
||||
- **Examinez les PR et apportez des modifications**
|
||||
|
||||
Laissez le commentaire suivant sur un PR GitHub.
|
||||
|
||||
```
|
||||
Delete the attachment from S3 when the note is removed /oc
|
||||
```
|
||||
|
||||
OpenCode mettra en œuvre la modification demandée et la validera dans le même PR.
|
||||
|
||||
- **Revoir des lignes de code spécifiques**
|
||||
|
||||
Laissez un commentaire directement sur les lignes de code dans l'onglet "Fichiers" du PR. OpenCode détecte automatiquement le fichier, les numéros de ligne et le contexte de comparaison pour fournir des réponses précises.
|
||||
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
/oc add error handling here
|
||||
```
|
||||
|
||||
Lorsqu'il commente des lignes spécifiques, OpenCode reçoit :
|
||||
- Le dossier exact en cours d'examen
|
||||
- Les lignes de code spécifiques
|
||||
- Le contexte différentiel environnant
|
||||
- Informations sur le numéro de ligne
|
||||
|
||||
Cela permet des requêtes plus ciblées sans avoir besoin de spécifier manuellement les chemins de fichiers ou les numéros de ligne.
|
||||
195
packages/web/src/content/docs/fr/gitlab.mdx
Normal file
195
packages/web/src/content/docs/fr/gitlab.mdx
Normal file
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Utilisez OpenCode dans les problèmes GitLab et les demandes de fusion.
|
||||
---
|
||||
|
||||
OpenCode s'intègre à votre flux de travail GitLab via votre pipeline CI/CD GitLab ou avec GitLab Duo.
|
||||
|
||||
Dans les deux cas, OpenCode fonctionnera sur vos coureurs GitLab.
|
||||
|
||||
---
|
||||
|
||||
## GitLab CI
|
||||
|
||||
OpenCode fonctionne dans un pipeline GitLab régulier. Vous pouvez l'intégrer dans un pipeline en tant que [composant CI](https://docs.gitlab.com/ee/ci/components/)
|
||||
|
||||
Ici, nous utilisons un composant CI/CD créé par la communauté pour OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
|
||||
|
||||
---
|
||||
|
||||
### Caractéristiques
|
||||
|
||||
- **Utiliser une configuration personnalisée par tâche** : configurez OpenCode avec un répertoire de configuration personnalisé, par exemple `./config/#custom-directory` pour activer ou désactiver la fonctionnalité par appel OpenCode.
|
||||
- **Configuration minimale** : le composant CI configure OpenCode en arrière-plan, il vous suffit de créer la configuration OpenCode et l'invite initiale.
|
||||
- **Flexible** : le composant CI prend en charge plusieurs entrées pour personnaliser son comportement
|
||||
|
||||
---
|
||||
|
||||
### Installation
|
||||
|
||||
1. Stockez votre authentification OpenCode JSON en tant que variables d'environnement CI de type fichier sous **Paramètres** > **CI/CD** > **Variables**. Assurez-vous de les marquer comme « Masqués et cachés ».
|
||||
2. Ajoutez ce qui suit à votre fichier `.gitlab-ci.yml`.
|
||||
|
||||
```yaml title=".gitlab-ci.yml"
|
||||
include:
|
||||
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
|
||||
inputs:
|
||||
config_dir: ${CI_PROJECT_DIR}/opencode-config
|
||||
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
|
||||
command: optional-custom-command
|
||||
message: "Your prompt here"
|
||||
```
|
||||
|
||||
Pour plus d'entrées et de cas d'utilisation [consultez la docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) pour ce composant.
|
||||
|
||||
---
|
||||
|
||||
## GitLab Duo
|
||||
|
||||
OpenCode s'intègre à votre flux de travail GitLab.
|
||||
Mentionnez `@opencode` dans un commentaire et OpenCode exécutera les tâches au sein de votre pipeline CI GitLab.
|
||||
|
||||
---
|
||||
|
||||
### Caractéristiques
|
||||
|
||||
- **Problèmes de triage** : demandez à OpenCode d'examiner un problème et de vous l'expliquer.
|
||||
- **Réparer et implémenter** : demandez à OpenCode de résoudre un problème ou d'implémenter une fonctionnalité.
|
||||
Cela créera une nouvelle branche et déclenchera une demande de fusion avec les modifications.
|
||||
- **Sécurisé** : OpenCode fonctionne sur vos coureurs GitLab.
|
||||
|
||||
---
|
||||
|
||||
### Installation
|
||||
|
||||
OpenCode s'exécute dans votre pipeline CI/CD GitLab. Voici ce dont vous aurez besoin pour le configurer :
|
||||
|
||||
:::tip
|
||||
Consultez les [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) pour obtenir des instructions à jour.
|
||||
:::
|
||||
|
||||
1. Configurez votre environnement GitLab
|
||||
2. Configurer CI/CD
|
||||
3. Obtenez la clé API d'un fournisseur de modèles d'IA
|
||||
4. Créer un compte de service
|
||||
5. Configurer les variables CI/CD
|
||||
6. Créez un fichier de configuration de flux, voici un exemple :
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Configuration du flux</summary>
|
||||
|
||||
```yaml
|
||||
image: node:22-slim
|
||||
commands:
|
||||
- echo "Installing opencode"
|
||||
- npm install --global opencode-ai
|
||||
- echo "Installing glab"
|
||||
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
|
||||
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
|
||||
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
|
||||
- apt-get install --yes glab
|
||||
- echo "Configuring glab"
|
||||
- echo $GITLAB_HOST
|
||||
- echo "Creating OpenCode auth configuration"
|
||||
- mkdir --parents ~/.local/share/opencode
|
||||
- |
|
||||
cat > ~/.local/share/opencode/auth.json << EOF
|
||||
{
|
||||
"anthropic": {
|
||||
"type": "api",
|
||||
"key": "$ANTHROPIC_API_KEY"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
- echo "Configuring git"
|
||||
- git config --global user.email "opencode@gitlab.com"
|
||||
- git config --global user.name "OpenCode"
|
||||
- echo "Testing glab"
|
||||
- glab issue list
|
||||
- echo "Running OpenCode"
|
||||
- |
|
||||
opencode run "
|
||||
You are an AI assistant helping with GitLab operations.
|
||||
|
||||
Context: $AI_FLOW_CONTEXT
|
||||
Task: $AI_FLOW_INPUT
|
||||
Event: $AI_FLOW_EVENT
|
||||
|
||||
Please execute the requested task using the available GitLab tools.
|
||||
Be thorough in your analysis and provide clear explanations.
|
||||
|
||||
<important>
|
||||
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
|
||||
|
||||
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
|
||||
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
|
||||
</important>
|
||||
"
|
||||
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
|
||||
- echo "Checking for git changes and pushing if any exist"
|
||||
- |
|
||||
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
|
||||
echo "Git changes detected, adding and pushing..."
|
||||
git add .
|
||||
if git diff --cached --quiet; then
|
||||
echo "No staged changes to commit"
|
||||
else
|
||||
echo "Committing changes to branch: $CI_WORKLOAD_REF"
|
||||
git commit --message "Codex changes"
|
||||
echo "Pushing changes up to $CI_WORKLOAD_REF"
|
||||
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
|
||||
echo "Changes successfully pushed"
|
||||
fi
|
||||
else
|
||||
echo "No git changes detected, skipping push"
|
||||
fi
|
||||
variables:
|
||||
- ANTHROPIC_API_KEY
|
||||
- GITLAB_TOKEN_OPENCODE
|
||||
- GITLAB_HOST
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
Vous pouvez vous référer aux [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) pour des instructions détaillées.
|
||||
|
||||
---
|
||||
|
||||
### Exemples
|
||||
|
||||
Voici quelques exemples de la façon dont vous pouvez utiliser OpenCode dans GitLab.
|
||||
|
||||
:::tip
|
||||
Vous pouvez configurer pour utiliser une phrase de déclenchement différente de `@opencode`.
|
||||
:::
|
||||
|
||||
- **Expliquez un problème**
|
||||
|
||||
Ajoutez ce commentaire dans un numéro GitLab.
|
||||
|
||||
```
|
||||
@opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode lira le problème et répondra avec une explication claire.
|
||||
|
||||
- **Résoudre un problème**
|
||||
|
||||
Dans un numéro GitLab, dites :
|
||||
|
||||
```
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode créera une nouvelle branche, mettra en œuvre les modifications et ouvrira une demande de fusion avec les modifications.
|
||||
|
||||
- **Examiner les demandes de fusion**
|
||||
|
||||
Laissez le commentaire suivant sur une demande de fusion GitLab.
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode examinera la demande de fusion et fournira des commentaires.
|
||||
48
packages/web/src/content/docs/fr/ide.mdx
Normal file
48
packages/web/src/content/docs/fr/ide.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: IDE
|
||||
description: L'extension OpenCode pour VS Code, Cursor et autres IDE
|
||||
---
|
||||
|
||||
OpenCode s'intègre à VS Code, Cursor ou tout IDE prenant en charge un terminal. Exécutez simplement `opencode` dans le terminal pour commencer.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
- **Lancement rapide** : utilisez `Cmd+Esc` (Mac) ou `Ctrl+Esc` (Windows/Linux) pour ouvrir OpenCode dans une vue de terminal divisée, ou concentrez-vous sur une session de terminal existante si elle est déjà en cours d'exécution.
|
||||
- **Nouvelle session** : utilisez `Cmd+Shift+Esc` (Mac) ou `Ctrl+Shift+Esc` (Windows/Linux) pour démarrer une nouvelle session de terminal OpenCode, même si elle est déjà ouverte. Vous pouvez également cliquer sur le bouton OpenCode dans l'interface utilisateur.
|
||||
- **Conscience du contexte** : partagez automatiquement votre sélection ou onglet actuel avec OpenCode.
|
||||
- **Raccourcis de référence de fichier** : utilisez `Cmd+Option+K` (Mac) ou `Alt+Ctrl+K` (Linux/Windows) pour insérer des références de fichier. Par exemple, `@File#L37-42`.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Pour installer OpenCode sur VS Code et les forks populaires comme Cursor, Windsurf, VSCodium :
|
||||
|
||||
1. Ouvrir VS Code
|
||||
2. Ouvrez le terminal intégré
|
||||
3. Exécutez `opencode` - l'extension s'installe automatiquement
|
||||
|
||||
Si, d'un autre côté, vous souhaitez utiliser votre propre IDE lorsque vous exécutez `/editor` ou `/export` à partir du TUI, vous devrez définir `export EDITOR="code --wait"`. [En savoir plus](/docs/tui/#editor-setup).
|
||||
|
||||
---
|
||||
|
||||
### Installation manuelle
|
||||
|
||||
Recherchez **OpenCode** dans Extension Marketplace et cliquez sur **Installer**.
|
||||
|
||||
---
|
||||
|
||||
### Dépannage
|
||||
|
||||
Si l'extension ne parvient pas à s'installer automatiquement :
|
||||
|
||||
- Assurez-vous que vous exécutez `opencode` dans le terminal intégré.
|
||||
- Confirmez que la CLI de votre IDE est installée :
|
||||
- Pour VS Code : commande `code`
|
||||
- Pour le curseur : commande `cursor`
|
||||
- Pour la planche à voile : commande `windsurf`
|
||||
- Pour VSCodium : commande `codium`
|
||||
- Sinon, exécutez `Cmd+Shift+P` (Mac) ou `Ctrl+Shift+P` (Windows/Linux) et recherchez « Commande Shell : installez la commande 'code' dans PATH » (ou l'équivalent pour votre IDE)
|
||||
- Assurez-vous que VS Code est autorisé à installer des extensions
|
||||
359
packages/web/src/content/docs/fr/index.mdx
Normal file
359
packages/web/src/content/docs/fr/index.mdx
Normal file
@@ -0,0 +1,359 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: Commencez avec OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) est un agent de codage d'IA open source. Il est disponible sous forme d'interface basée sur un terminal, d'application de bureau ou d'extension IDE.
|
||||
|
||||

|
||||
|
||||
Commençons.
|
||||
|
||||
---
|
||||
|
||||
#### Conditions préalables
|
||||
|
||||
Pour utiliser OpenCode dans votre terminal, vous aurez besoin de :
|
||||
|
||||
1. Un émulateur de terminal moderne comme :
|
||||
- [WezTerm](https://wezterm.org), multiplateforme
|
||||
- [Alacritty](https://alacritty.org), multiplateforme
|
||||
- [Ghostty](https://ghostty.org), Linux et macOS
|
||||
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux et macOS
|
||||
|
||||
2. Clés API pour les fournisseurs LLM que vous souhaitez utiliser.
|
||||
|
||||
---
|
||||
|
||||
## Installer
|
||||
|
||||
Le moyen le plus simple d'installer OpenCode consiste à utiliser le script d'installation.
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
Vous pouvez également l'installer avec les commandes suivantes :
|
||||
|
||||
- **En utilisant Node.js**
|
||||
|
||||
<Tabs>
|
||||
|
||||
<TabItem label="npm">
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Bun">
|
||||
```bash
|
||||
bun install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="pnpm">
|
||||
```bash
|
||||
pnpm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Yarn">
|
||||
```bash
|
||||
yarn global add opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
</Tabs>
|
||||
|
||||
- **Utilisation de Homebrew sur macOS et Linux**
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Nous vous recommandons d'utiliser le tap OpenCode pour les versions les plus récentes. La formule officielle `brew install opencode` est maintenue par l'équipe Homebrew et est mise à jour moins fréquemment.
|
||||
|
||||
- **Utilisation de Paru sur Arch Linux**
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
:::tip[Recommandé : utilisez WSL]
|
||||
Pour une expérience optimale sur Windows, nous vous recommandons d'utiliser le sous-système [Windows pour Linux (WSL)](/docs/windows-wsl). Il offre de meilleures performances et une compatibilité totale avec les fonctionnalités de OpenCode.
|
||||
:::
|
||||
|
||||
- **Utiliser Chocolatey**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
```
|
||||
|
||||
- **Utilisation de Scoop**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
```
|
||||
|
||||
- **En utilisant NPM**
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
- **Utiliser Mise**
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
```
|
||||
|
||||
- **En utilisant Docker**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
```
|
||||
|
||||
La prise en charge de l'installation de OpenCode sur Windows à l'aide de Bun est actuellement en cours.
|
||||
|
||||
Vous pouvez également récupérer le binaire dans le fichier [Releases](https://github.com/anomalyco/opencode/releases).
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Avec OpenCode, vous pouvez utiliser n'importe quel fournisseur LLM en configurant ses clés API.
|
||||
|
||||
Si vous débutez avec les fournisseurs LLM, nous vous recommandons d'utiliser [OpenCode Zen](/docs/zen).
|
||||
Il s'agit d'une liste organisée de modèles qui ont été testés et vérifiés par le OpenCode
|
||||
équipe.
|
||||
|
||||
1. Exécutez la commande `/connect` dans le TUI, sélectionnez opencode et dirigez-vous vers [opencode.ai/auth](https://opencode.ai/auth).
|
||||
|
||||
```txt
|
||||
/connect
|
||||
```
|
||||
|
||||
2. Connectez-vous, ajoutez vos informations de facturation et copiez votre clé API.
|
||||
|
||||
3. Collez votre clé API.
|
||||
|
||||
```txt
|
||||
┌ API key
|
||||
│
|
||||
│
|
||||
└ enter
|
||||
```
|
||||
|
||||
Vous pouvez également sélectionner l'un des autres fournisseurs. [En savoir plus](/docs/providers#directory).
|
||||
|
||||
---
|
||||
|
||||
## Initialiser
|
||||
|
||||
Maintenant que vous avez configuré un fournisseur, vous pouvez accéder à un projet qui
|
||||
vous voulez travailler.
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
```
|
||||
|
||||
Et exécutez OpenCode.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Ensuite, initialisez OpenCode pour le projet en exécutant la commande suivante.
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
Cela permettra à OpenCode d'analyser votre projet et de créer un fichier `AGENTS.md` dans
|
||||
la racine du projet.
|
||||
|
||||
:::tip
|
||||
Vous devez valider le fichier `AGENTS.md` de votre projet dans Git.
|
||||
:::
|
||||
|
||||
Cela aide OpenCode à comprendre la structure du projet et les modèles de codage
|
||||
utilisé.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
Vous êtes maintenant prêt à utiliser OpenCode pour travailler sur votre projet. N'hésitez pas à le demander
|
||||
rien!
|
||||
|
||||
Si vous débutez dans l'utilisation d'un agent de codage IA, voici quelques exemples qui pourraient
|
||||
aide.
|
||||
|
||||
---
|
||||
|
||||
### Posez des questions
|
||||
|
||||
Vous pouvez demander à OpenCode de vous expliquer la base de code.
|
||||
|
||||
:::tip
|
||||
Utilisez la touche `@` pour effectuer une recherche floue de fichiers dans le projet.
|
||||
:::
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
How is authentication handled in @packages/functions/src/api/index.ts
|
||||
```
|
||||
|
||||
Ceci est utile s'il y a une partie de la base de code sur laquelle vous n'avez pas travaillé.
|
||||
|
||||
---
|
||||
|
||||
### Ajouter des fonctionnalités
|
||||
|
||||
Vous pouvez demander à OpenCode d'ajouter de nouvelles fonctionnalités à votre projet. Cependant, nous recommandons d’abord de lui demander de créer un plan.
|
||||
|
||||
1. **Créer un plan**
|
||||
|
||||
OpenCode dispose d'un _Mode Plan_ qui désactive sa capacité à apporter des modifications et
|
||||
suggérez plutôt _comment_ il implémentera la fonctionnalité.
|
||||
|
||||
Accédez-y à l'aide de la touche **Tab**. Vous verrez un indicateur à cet effet dans le coin inférieur droit.
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Décrivons maintenant ce que nous voulons qu'il fasse.
|
||||
|
||||
```txt frame="none"
|
||||
When a user deletes a note, we'd like to flag it as deleted in the database.
|
||||
Then create a screen that shows all the recently deleted notes.
|
||||
From this screen, the user can undelete a note or permanently delete it.
|
||||
```
|
||||
|
||||
Vous souhaitez donner à OpenCode suffisamment de détails pour comprendre ce que vous voulez. Ça aide
|
||||
pour lui parler comme si vous parliez à un développeur junior de votre équipe.
|
||||
|
||||
:::tip
|
||||
Donnez à OpenCode beaucoup de contexte et d'exemples pour l'aider à comprendre ce que vous
|
||||
vouloir.
|
||||
:::
|
||||
|
||||
2. **Itérer sur le plan**
|
||||
|
||||
Une fois qu'il vous donne un plan, vous pouvez lui faire part de vos commentaires ou ajouter plus de détails.
|
||||
|
||||
```txt frame="none"
|
||||
We'd like to design this new screen using a design I've used before.
|
||||
[Image #1] Take a look at this image and use it as a reference.
|
||||
```
|
||||
|
||||
:::tip
|
||||
Faites glisser et déposez des images dans le terminal pour les ajouter à l'invite.
|
||||
:::
|
||||
|
||||
OpenCode peut numériser toutes les images que vous lui donnez et les ajouter à l'invite. Tu peux
|
||||
faites-le en faisant glisser et en déposant une image dans le terminal.
|
||||
|
||||
3. **Créez la fonctionnalité**
|
||||
|
||||
Une fois que vous vous sentez à l'aise avec le plan, revenez au _Mode Construction_ en
|
||||
appuyer à nouveau sur la touche **Tab**.
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
Et lui demander d'apporter les modifications.
|
||||
|
||||
```bash frame="none"
|
||||
Sounds good! Go ahead and make the changes.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Apporter des modifications
|
||||
|
||||
Pour des modifications plus simples, vous pouvez demander à OpenCode de le construire directement
|
||||
sans avoir à revoir le plan au préalable.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
|
||||
We need to add authentication to the /settings route. Take a look at how this is
|
||||
handled in the /notes route in @packages/functions/src/notes.ts and implement
|
||||
the same logic in @packages/functions/src/settings.ts
|
||||
```
|
||||
|
||||
Vous voulez vous assurer de fournir une bonne quantité de détails afin que OpenCode fasse le bon choix.
|
||||
changements.
|
||||
|
||||
---
|
||||
|
||||
### Annuler les modifications
|
||||
|
||||
Disons que vous demandez à OpenCode d'apporter quelques modifications.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Mais vous réalisez que ce n’est pas ce que vous vouliez. Vous **pouvez annuler** les modifications
|
||||
à l'aide de la commande `/undo`.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
OpenCode annulera désormais les modifications que vous avez apportées et affichera votre message d'origine
|
||||
encore.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
À partir de là, vous pouvez modifier l'invite et demander à OpenCode de réessayer.
|
||||
|
||||
:::tip
|
||||
Vous pouvez exécuter `/undo` plusieurs fois pour annuler plusieurs modifications.
|
||||
:::
|
||||
|
||||
Ou vous **pouvez refaire** les modifications à l'aide de la commande `/redo`.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Partager
|
||||
|
||||
Les conversations que vous avez avec OpenCode peuvent être [partagées avec votre
|
||||
équipe](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
Cela créera un lien vers la conversation en cours et le copiera dans votre presse-papiers.
|
||||
|
||||
:::note
|
||||
Les conversations ne sont pas partagées par défaut.
|
||||
:::
|
||||
|
||||
Voici un [exemple de conversation](https://opencode.ai/s/4XP1fce5) avec OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Personnaliser
|
||||
|
||||
Et c'est tout ! Vous êtes désormais un pro de l'utilisation de OpenCode.
|
||||
|
||||
Pour vous l'approprier, nous vous recommandons de [choisir un thème](/docs/themes), [de personnaliser les raccourcis clavier](/docs/keybinds), de [configurer les formateurs de code](/docs/formatters), de [créer des commandes personnalisées](/docs/commands) ou de jouer avec la [OpenCode config](/docs/config).
|
||||
192
packages/web/src/content/docs/fr/keybinds.mdx
Normal file
192
packages/web/src/content/docs/fr/keybinds.mdx
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: Raccourcis clavier
|
||||
description: Personnalisez vos raccourcis clavier.
|
||||
---
|
||||
|
||||
OpenCode a une liste de raccourcis clavier que vous pouvez personnaliser via la configuration OpenCode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"leader": "ctrl+x",
|
||||
"app_exit": "ctrl+c,ctrl+d,<leader>q",
|
||||
"editor_open": "<leader>e",
|
||||
"theme_list": "<leader>t",
|
||||
"sidebar_toggle": "<leader>b",
|
||||
"scrollbar_toggle": "none",
|
||||
"username_toggle": "none",
|
||||
"status_view": "<leader>s",
|
||||
"tool_details": "none",
|
||||
"session_export": "<leader>x",
|
||||
"session_new": "<leader>n",
|
||||
"session_list": "<leader>l",
|
||||
"session_timeline": "<leader>g",
|
||||
"session_fork": "none",
|
||||
"session_rename": "none",
|
||||
"session_share": "none",
|
||||
"session_unshare": "none",
|
||||
"session_interrupt": "escape",
|
||||
"session_compact": "<leader>c",
|
||||
"session_child_cycle": "<leader>right",
|
||||
"session_child_cycle_reverse": "<leader>left",
|
||||
"session_parent": "<leader>up",
|
||||
"messages_page_up": "pageup,ctrl+alt+b",
|
||||
"messages_page_down": "pagedown,ctrl+alt+f",
|
||||
"messages_line_up": "ctrl+alt+y",
|
||||
"messages_line_down": "ctrl+alt+e",
|
||||
"messages_half_page_up": "ctrl+alt+u",
|
||||
"messages_half_page_down": "ctrl+alt+d",
|
||||
"messages_first": "ctrl+g,home",
|
||||
"messages_last": "ctrl+alt+g,end",
|
||||
"messages_next": "none",
|
||||
"messages_previous": "none",
|
||||
"messages_copy": "<leader>y",
|
||||
"messages_undo": "<leader>u",
|
||||
"messages_redo": "<leader>r",
|
||||
"messages_last_user": "none",
|
||||
"messages_toggle_conceal": "<leader>h",
|
||||
"model_list": "<leader>m",
|
||||
"model_cycle_recent": "f2",
|
||||
"model_cycle_recent_reverse": "shift+f2",
|
||||
"model_cycle_favorite": "none",
|
||||
"model_cycle_favorite_reverse": "none",
|
||||
"variant_cycle": "ctrl+t",
|
||||
"command_list": "ctrl+p",
|
||||
"agent_list": "<leader>a",
|
||||
"agent_cycle": "tab",
|
||||
"agent_cycle_reverse": "shift+tab",
|
||||
"input_clear": "ctrl+c",
|
||||
"input_paste": "ctrl+v",
|
||||
"input_submit": "return",
|
||||
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
|
||||
"input_move_left": "left,ctrl+b",
|
||||
"input_move_right": "right,ctrl+f",
|
||||
"input_move_up": "up",
|
||||
"input_move_down": "down",
|
||||
"input_select_left": "shift+left",
|
||||
"input_select_right": "shift+right",
|
||||
"input_select_up": "shift+up",
|
||||
"input_select_down": "shift+down",
|
||||
"input_line_home": "ctrl+a",
|
||||
"input_line_end": "ctrl+e",
|
||||
"input_select_line_home": "ctrl+shift+a",
|
||||
"input_select_line_end": "ctrl+shift+e",
|
||||
"input_visual_line_home": "alt+a",
|
||||
"input_visual_line_end": "alt+e",
|
||||
"input_select_visual_line_home": "alt+shift+a",
|
||||
"input_select_visual_line_end": "alt+shift+e",
|
||||
"input_buffer_home": "home",
|
||||
"input_buffer_end": "end",
|
||||
"input_select_buffer_home": "shift+home",
|
||||
"input_select_buffer_end": "shift+end",
|
||||
"input_delete_line": "ctrl+shift+d",
|
||||
"input_delete_to_line_end": "ctrl+k",
|
||||
"input_delete_to_line_start": "ctrl+u",
|
||||
"input_backspace": "backspace,shift+backspace",
|
||||
"input_delete": "ctrl+d,delete,shift+delete",
|
||||
"input_undo": "ctrl+-,super+z",
|
||||
"input_redo": "ctrl+.,super+shift+z",
|
||||
"input_word_forward": "alt+f,alt+right,ctrl+right",
|
||||
"input_word_backward": "alt+b,alt+left,ctrl+left",
|
||||
"input_select_word_forward": "alt+shift+f,alt+shift+right",
|
||||
"input_select_word_backward": "alt+shift+b,alt+shift+left",
|
||||
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
|
||||
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
|
||||
"history_previous": "up",
|
||||
"history_next": "down",
|
||||
"terminal_suspend": "ctrl+z",
|
||||
"terminal_title_toggle": "none",
|
||||
"tips_toggle": "<leader>h",
|
||||
"display_thinking": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Clé du leader
|
||||
|
||||
OpenCode utilise une touche `leader` pour la plupart des raccourcis clavier. Cela évite les conflits dans votre terminal.
|
||||
|
||||
Par défaut, `ctrl+x` est la touche leader et la plupart des actions nécessitent que vous appuyiez d'abord sur la touche leader, puis sur le raccourci. Par exemple, pour démarrer une nouvelle session, appuyez d'abord sur `ctrl+x`, puis sur `n`.
|
||||
|
||||
Vous n'avez pas besoin d'utiliser une touche leader pour vos raccourcis clavier, mais nous vous recommandons de le faire.
|
||||
|
||||
---
|
||||
|
||||
## Désactiver le raccourci clavier
|
||||
|
||||
Vous pouvez désactiver un raccourci clavier en ajoutant la clé à votre configuration avec la valeur « aucun ».
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"session_compact": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Raccourcis d'invite du bureau
|
||||
|
||||
L'entrée d'invite de l'application de bureau OpenCode prend en charge les raccourcis courants de style Readline/Emacs pour l'édition de texte. Ceux-ci sont intégrés et actuellement non configurables via `opencode.json`.
|
||||
|
||||
| Raccourci | Actions |
|
||||
| -------- | ---------------------------------------- |
|
||||
| `ctrl+a` | Déplacer au début de la ligne actuelle |
|
||||
| `ctrl+e` | Aller à la fin de la ligne actuelle |
|
||||
| `ctrl+b` | Reculer le curseur d'un caractère |
|
||||
| `ctrl+f` | Avancer le curseur d'un caractère |
|
||||
| `alt+b` | Reculer le curseur d'un mot |
|
||||
| `alt+f` | Avancer le curseur d'un mot |
|
||||
| `ctrl+d` | Supprimer le caractère sous le curseur |
|
||||
| `ctrl+k` | Tuer jusqu'au bout de la ligne |
|
||||
| `ctrl+u` | Tuer au début de la ligne |
|
||||
| `ctrl+w` | Tuer le mot précédent |
|
||||
| `alt+d` | Tuer le mot suivant |
|
||||
| `ctrl+t` | Transposer les caractères |
|
||||
| `ctrl+g` | Annuler les popovers/abandonner l'exécution de la réponse |
|
||||
|
||||
---
|
||||
|
||||
## Maj+Entrée
|
||||
|
||||
Certains terminaux n'envoient pas de touches de modification avec Entrée par défaut. Vous devrez peut-être configurer votre terminal pour envoyer `Shift+Enter` comme séquence d'échappement.
|
||||
|
||||
### Borne Windows
|
||||
|
||||
Ouvrez votre `settings.json` à :
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
||||
```
|
||||
|
||||
Ajoutez ceci au tableau `actions` de niveau racine :
|
||||
|
||||
```json
|
||||
"actions": [
|
||||
{
|
||||
"command": {
|
||||
"action": "sendInput",
|
||||
"input": "\u001b[13;2u"
|
||||
},
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Ajoutez ceci au tableau `keybindings` de niveau racine :
|
||||
|
||||
```json
|
||||
"keybindings": [
|
||||
{
|
||||
"keys": "shift+enter",
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Enregistrez le fichier et redémarrez le terminal Windows ou ouvrez un nouvel onglet.
|
||||
188
packages/web/src/content/docs/fr/lsp.mdx
Normal file
188
packages/web/src/content/docs/fr/lsp.mdx
Normal file
@@ -0,0 +1,188 @@
|
||||
---
|
||||
title: Serveurs LSP
|
||||
description: OpenCode s'intègre à vos serveurs LSP.
|
||||
---
|
||||
|
||||
OpenCode s'intègre à votre protocole de serveur de langue (LSP) pour aider le LLM à interagir avec votre base de code. Il utilise des diagnostics pour fournir des commentaires au LLM.
|
||||
|
||||
---
|
||||
|
||||
## Intégré
|
||||
|
||||
OpenCode est livré avec plusieurs serveurs LSP intégrés pour les langues populaires :
|
||||
|
||||
| Serveur LSP | Rallonges | Exigences |
|
||||
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| astro | .astro | Installations automatiques pour les projets Astro |
|
||||
| coup | .sh, .bash, .zsh, .ksh | Installe automatiquement le serveur bash-langage |
|
||||
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Installations automatiques pour les projets C/C++ |
|
||||
| cpointu | .cs | `.NET SDK` installé |
|
||||
| clojure-lsp | .clj, .cljs, .cljc, .edn | Commande `clojure-lsp` disponible |
|
||||
| fléchette | .dart | Commande `dart` disponible |
|
||||
| déno | .ts, .tsx, .js, .jsx, .mjs | Commande `deno` disponible (détection automatique deno.json/deno.jsonc) |
|
||||
| élixir-ls | .ex, .ex | Commande `elixir` disponible |
|
||||
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Dépendance `eslint` dans le projet |
|
||||
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` installé |
|
||||
| lueur | .lueur | Commande `gleam` disponible |
|
||||
| gopls | .aller | Commande `go` disponible |
|
||||
| hls | .hs, .lhs | Commande `haskell-language-server-wrapper` disponible |
|
||||
| jdtls | .java | `Java SDK (version 21+)` installé |
|
||||
| kotlin-ls | .kt, .kts | Installations automatiques pour les projets Kotlin |
|
||||
| lua-ls | .lua | Installations automatiques pour les projets Lua |
|
||||
| rien | .nix | Commande `nixd` disponible |
|
||||
| ocaml-lsp | .ml, .mli | Commande `ocamllsp` disponible |
|
||||
| plinthe de boeuf | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dépendance `oxlint` dans le projet |
|
||||
| php intelligence | .php | Installations automatiques pour les projets PHP |
|
||||
| prisme | .prisma | Commande `prisma` disponible |
|
||||
| droit d'auteur | .py, .pyi | Dépendance `pyright` installée |
|
||||
| rubis-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Commandes `ruby` et `gem` disponibles |
|
||||
| rouille | .rs | Commande `rust-analyzer` disponible |
|
||||
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` installé (`xcode` sur macOS) |
|
||||
| svelte | .svelte | Installations automatiques pour les projets Svelte |
|
||||
| terraformer | .tf, .tfvars | Installations automatiques à partir des versions GitHub |
|
||||
| petite brume | .typ, .typc | Installations automatiques à partir des versions GitHub |
|
||||
| dactylographié | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dépendance `typescript` dans le projet |
|
||||
| vue | .vue | Installations automatiques pour les projets Vue |
|
||||
| yaml-ls | .yaml, .yml | Installe automatiquement le serveur yaml-langage-Red Hat |
|
||||
| zls | .zig, .zon | Commande `zig` disponible |
|
||||
|
||||
Les serveurs LSP sont automatiquement activés lorsque l'une des extensions de fichier ci-dessus est détectée et que les exigences sont remplies.
|
||||
|
||||
:::note
|
||||
Vous pouvez désactiver les téléchargements automatiques du serveur LSP en définissant la variable d'environnement `OPENCODE_DISABLE_LSP_DOWNLOAD` sur `true`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Comment ça marche
|
||||
|
||||
Lorsque opencode ouvre un fichier, il :
|
||||
|
||||
1. Vérifie l'extension du fichier par rapport à tous les serveurs LSP activés.
|
||||
2. Démarre le serveur LSP approprié s'il n'est pas déjà en cours d'exécution.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez personnaliser les serveurs LSP via la section `lsp` de votre configuration opencode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {}
|
||||
}
|
||||
```
|
||||
|
||||
Chaque serveur LSP prend en charge les éléments suivants :
|
||||
|
||||
| Propriété | Tapez | Descriptif |
|
||||
| ---------------- | -------- | ------------------------------------------------- |
|
||||
| `disabled` | booléen | Définissez ceci sur `true` pour désactiver le serveur LSP |
|
||||
| `command` | chaîne[] | La commande pour démarrer le serveur LSP |
|
||||
| `extensions` | chaîne[] | Extensions de fichiers que ce serveur LSP doit gérer |
|
||||
| `env` | objet | Variables d'environnement à définir lors du démarrage du serveur |
|
||||
| `initialization` | objet | Options d'initialisation à envoyer au serveur LSP |
|
||||
|
||||
Regardons quelques exemples.
|
||||
|
||||
---
|
||||
|
||||
### Variables d'environnement
|
||||
|
||||
Utilisez la propriété `env` pour définir les variables d'environnement lors du démarrage du serveur LSP :
|
||||
|
||||
```json title="opencode.json" {5-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"rust": {
|
||||
"env": {
|
||||
"RUST_LOG": "debug"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Options d'initialisation
|
||||
|
||||
Utilisez la propriété `initialization` pour transmettre les options d'initialisation au serveur LSP. Il s'agit de paramètres spécifiques au serveur envoyés lors de la requête LSP `initialize` :
|
||||
|
||||
```json title="opencode.json" {5-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"initialization": {
|
||||
"preferences": {
|
||||
"importModuleSpecifierPreference": "relative"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
Les options d'initialisation varient selon le serveur LSP. Consultez la documentation de votre serveur LSP pour connaître les options disponibles.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Désactivation des serveurs LSP
|
||||
|
||||
Pour désactiver **tous** les serveurs LSP dans le monde, définissez `lsp` sur `false` :
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": false
|
||||
}
|
||||
```
|
||||
|
||||
Pour désactiver un serveur LSP **spécifique**, définissez `disabled` sur `true` :
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Serveurs LSP personnalisés
|
||||
|
||||
Vous pouvez ajouter des serveurs LSP personnalisés en spécifiant les extensions de commande et de fichier :
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"custom-lsp": {
|
||||
"command": ["custom-lsp-server", "--stdio"],
|
||||
"extensions": [".custom"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Informations Complémentaires
|
||||
|
||||
### PHP Intelligence
|
||||
|
||||
PHP Intelephense offre des fonctionnalités premium via une clé de licence. Vous pouvez fournir une clé de licence en plaçant (uniquement) la clé dans un fichier texte à l'adresse :
|
||||
|
||||
- Le macOS/Linux : `$HOME/intelephense/licence.txt`
|
||||
- Le Windows : `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
Le fichier doit contenir uniquement la clé de licence sans contenu supplémentaire.
|
||||
511
packages/web/src/content/docs/fr/mcp-servers.mdx
Normal file
511
packages/web/src/content/docs/fr/mcp-servers.mdx
Normal file
@@ -0,0 +1,511 @@
|
||||
---
|
||||
title: Serveurs MCP
|
||||
description: Ajoutez des outils MCP locaux et distants.
|
||||
---
|
||||
|
||||
Vous pouvez ajouter des outils externes à OpenCode à l'aide du _Model Context Protocol_ ou MCP. OpenCode prend en charge les serveurs locaux et distants.
|
||||
|
||||
Une fois ajoutés, les outils MCP sont automatiquement disponibles pour le LLM aux côtés des outils intégrés.
|
||||
|
||||
---
|
||||
|
||||
#### Mises en garde
|
||||
|
||||
Lorsque vous utilisez un serveur MCP, cela ajoute au contexte. Cela peut vite s’additionner si vous disposez de beaucoup d’outils. Nous vous recommandons donc de faire attention aux serveurs MCP que vous utilisez.
|
||||
|
||||
:::tip
|
||||
Les serveurs MCP s'ajoutent à votre contexte, vous devez donc faire attention à ceux que vous activez.
|
||||
:::
|
||||
|
||||
Certains serveurs MCP, comme le serveur GitHub MCP, ont tendance à ajouter beaucoup de jetons et peuvent facilement dépasser la limite de contexte.
|
||||
|
||||
---
|
||||
|
||||
## Activer
|
||||
|
||||
Vous pouvez définir des serveurs MCP dans votre [OpenCode Config](https://opencode.ai/docs/config/) sous `mcp`. Ajoutez chaque MCP avec un nom unique. Vous pouvez faire référence à ce MCP par son nom lorsque vous demandez le LLM.
|
||||
|
||||
```jsonc title="opencode.jsonc" {6}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"name-of-mcp-server": {
|
||||
// ...
|
||||
"enabled": true,
|
||||
},
|
||||
"name-of-other-mcp-server": {
|
||||
// ...
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également désactiver un serveur en définissant `enabled` sur `false`. Ceci est utile si vous souhaitez désactiver temporairement un serveur sans le supprimer de votre configuration.
|
||||
|
||||
---
|
||||
|
||||
### Remplacement des valeurs par défaut distantes
|
||||
|
||||
Les organisations peuvent fournir des serveurs MCP par défaut via leur point de terminaison `.well-known/opencode`. Ces serveurs peuvent être désactivés par défaut, permettant aux utilisateurs de choisir ceux dont ils ont besoin.
|
||||
|
||||
Pour activer un serveur spécifique à partir de la configuration distante de votre organisation, ajoutez-le à votre configuration locale avec `enabled: true` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vos valeurs de configuration locales remplacent les valeurs par défaut distantes. Voir [config precedence](/docs/config#precedence-order) pour plus de détails.
|
||||
|
||||
---
|
||||
|
||||
## Locale
|
||||
|
||||
Ajoutez des serveurs MCP locaux en utilisant `type` à `"local"` dans l'objet MCP.
|
||||
|
||||
```jsonc title="opencode.jsonc" {15}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-local-mcp-server": {
|
||||
"type": "local",
|
||||
// Or ["bun", "x", "my-mcp-command"]
|
||||
"command": ["npx", "-y", "my-mcp-command"],
|
||||
"enabled": true,
|
||||
"environment": {
|
||||
"MY_ENV_VAR": "my_env_var_value",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
La commande indique comment le serveur MCP local est démarré. Vous pouvez également transmettre une liste de variables d’environnement.
|
||||
|
||||
Par exemple, voici comment ajouter le serveur de test [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"mcp_everything": {
|
||||
"type": "local",
|
||||
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Et pour l'utiliser, je peux ajouter `use the mcp_everything tool` à mes invites.
|
||||
|
||||
```txt "mcp_everything"
|
||||
use the mcp_everything tool to add the number 3 and 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Possibilités
|
||||
|
||||
Voici toutes les options pour configurer un serveur MCP local.
|
||||
|
||||
| Options | Tapez | Obligatoire | Descriptif |
|
||||
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | Chaîne | Oui | Le type de connexion au serveur MCP doit être `"local"`. |
|
||||
| `command` | Tableau | Oui | Commande et arguments pour exécuter le serveur MCP. |
|
||||
| `environment` | Objet | | Variables d'environnement à définir lors de l'exécution du serveur. |
|
||||
| `enabled` | Booléen | | Activez ou désactivez le serveur MCP au démarrage. |
|
||||
| `timeout` | Numéro | | Délai d'expiration en ms pour la récupération des outils depuis le serveur MCP. La valeur par défaut est 5 000 (5 secondes). |
|
||||
|
||||
---
|
||||
|
||||
## Télécommande
|
||||
|
||||
Ajoutez des serveurs MCP distants en définissant `type` sur `"remote"`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-remote-mcp": {
|
||||
"type": "remote",
|
||||
"url": "https://my-mcp-server.com",
|
||||
"enabled": true,
|
||||
"headers": {
|
||||
"Authorization": "Bearer MY_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Le `url` est le URL du serveur distant MCP et avec l'option `headers` vous pouvez transmettre une liste d'en-têtes.
|
||||
|
||||
---
|
||||
|
||||
#### Possibilités
|
||||
|
||||
| Options | Tapez | Obligatoire | Descriptif |
|
||||
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | Chaîne | Oui | Le type de connexion au serveur MCP doit être `"remote"`. |
|
||||
| `url` | Chaîne | Oui | URL du serveur MCP distant. |
|
||||
| `enabled` | Booléen | | Activez ou désactivez le serveur MCP au démarrage. |
|
||||
| `headers` | Objet | | En-têtes à envoyer avec la demande. |
|
||||
| `oauth` | Objet | | Configuration de l'authentification OAuth. Voir la section [OAuth](#oauth) ci-dessous. |
|
||||
| `timeout` | Numéro | | Délai d'expiration en ms pour la récupération des outils depuis le serveur MCP. La valeur par défaut est 5 000 (5 secondes). |
|
||||
|
||||
---
|
||||
|
||||
## OAuth
|
||||
|
||||
OpenCode gère automatiquement l'authentification OAuth pour les serveurs MCP distants. Lorsqu'un serveur nécessite une authentification, OpenCode :
|
||||
|
||||
1. Détectez la réponse 401 et lancez le flux OAuth
|
||||
2. Utilisez **Enregistrement client dynamique (RFC 7591)** s'il est pris en charge par le serveur.
|
||||
3. Stockez les jetons en toute sécurité pour les demandes futures
|
||||
|
||||
---
|
||||
|
||||
### Automatique
|
||||
|
||||
Pour la plupart des serveurs MCP compatibles OAuth, aucune configuration particulière n'est nécessaire. Configurez simplement le serveur distant :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si le serveur nécessite une authentification, OpenCode vous demandera de vous authentifier lorsque vous essayez de l'utiliser pour la première fois. Sinon, vous pouvez [déclencher manuellement le flux](#authenticating) avec `opencode mcp auth <server-name>`.
|
||||
|
||||
---
|
||||
|
||||
### Pré-inscrit
|
||||
|
||||
Si vous disposez des informations d'identification client du fournisseur de serveur MCP, vous pouvez les configurer :
|
||||
|
||||
```json title="opencode.json" {7-11}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": {
|
||||
"clientId": "{env:MY_MCP_CLIENT_ID}",
|
||||
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
|
||||
"scope": "tools:read tools:execute"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Authentification
|
||||
|
||||
Vous pouvez déclencher manuellement l'authentification ou gérer les informations d'identification.
|
||||
|
||||
Authentifiez-vous auprès d'un serveur MCP spécifique :
|
||||
|
||||
```bash
|
||||
opencode mcp auth my-oauth-server
|
||||
```
|
||||
|
||||
Répertoriez tous les serveurs MCP et leur statut d'authentification :
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
Supprimez les informations d'identification stockées :
|
||||
|
||||
```bash
|
||||
opencode mcp logout my-oauth-server
|
||||
```
|
||||
|
||||
La commande `mcp auth` ouvrira votre navigateur pour autorisation. Après votre autorisation, OpenCode stockera les jetons en toute sécurité dans `~/.local/share/opencode/mcp-auth.json`.
|
||||
|
||||
---
|
||||
|
||||
#### Désactivation de OAuth
|
||||
|
||||
Si vous souhaitez désactiver le OAuth automatique pour un serveur (par exemple, pour les serveurs qui utilisent les clés API à la place), définissez `oauth` sur `false` :
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-api-key-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": false,
|
||||
"headers": {
|
||||
"Authorization": "Bearer {env:MY_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Options OAuth
|
||||
|
||||
| Options | Tapez | Descriptif |
|
||||
| -------------- | --------------- | -------------------------------------------------------------------------------- |
|
||||
| `oauth` | Objet \| faux | Objet de configuration OAuth, ou `false` pour désactiver la détection automatique OAuth. |
|
||||
| `clientId` | Chaîne | ID client OAuth. S’il n’est pas fourni, l’enregistrement dynamique du client sera tenté. |
|
||||
| `clientSecret` | Chaîne | OAuth secret client, si requis par le serveur d'autorisation. |
|
||||
| `scope` | Chaîne | OAuth scopes à demander lors de l'autorisation. |
|
||||
|
||||
#### Débogage
|
||||
|
||||
Si un serveur MCP distant ne parvient pas à s'authentifier, vous pouvez diagnostiquer les problèmes avec :
|
||||
|
||||
```bash
|
||||
# View auth status for all OAuth-capable servers
|
||||
opencode mcp auth list
|
||||
|
||||
# Debug connection and OAuth flow for a specific server
|
||||
opencode mcp debug my-oauth-server
|
||||
```
|
||||
|
||||
La commande `mcp debug` affiche l'état d'authentification actuel, teste la connectivité HTTP et tente le flux de découverte OAuth.
|
||||
|
||||
---
|
||||
|
||||
## Gérer
|
||||
|
||||
Vos MCP sont disponibles sous forme d'outils dans OpenCode, aux côtés des outils intégrés. Vous pouvez donc les gérer via la configuration OpenCode comme n'importe quel autre outil.
|
||||
|
||||
---
|
||||
|
||||
### Mondial
|
||||
|
||||
Cela signifie que vous pouvez les activer ou les désactiver globalement.
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp-foo": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Nous pouvons également utiliser un modèle global pour désactiver tous les MCP correspondants.
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ici, nous utilisons le modèle global `my-mcp*` pour désactiver tous les MCP.
|
||||
|
||||
---
|
||||
|
||||
### Par agent
|
||||
|
||||
Si vous disposez d'un grand nombre de serveurs MCP, vous souhaiterez peut-être les activer uniquement par agent et les désactiver globalement. Pour ce faire :
|
||||
|
||||
1. Désactivez-le en tant qu'outil à l'échelle mondiale.
|
||||
2. Dans votre [agent config](/docs/agents#tools), activez le serveur MCP en tant qu'outil.
|
||||
|
||||
```json title="opencode.json" {11, 14-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command"],
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
},
|
||||
"agent": {
|
||||
"my-agent": {
|
||||
"tools": {
|
||||
"my-mcp*": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Modèles globaux
|
||||
|
||||
Le modèle glob utilise des modèles de globbing regex simples :
|
||||
|
||||
- `*` correspond à zéro ou plusieurs caractères (par exemple, `"my-mcp*"` correspond à `my-mcp_search`, `my-mcp_list`, etc.)
|
||||
- `?` correspond exactement à un caractère
|
||||
- Tous les autres caractères correspondent littéralement
|
||||
|
||||
:::note
|
||||
Les outils serveur MCP sont enregistrés avec le nom du serveur comme préfixe, donc pour désactiver tous les outils d'un serveur, utilisez simplement :
|
||||
|
||||
```
|
||||
"mymcpservername_*": false
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
Vous trouverez ci-dessous des exemples de serveurs MCP courants. Vous pouvez soumettre un PR si vous souhaitez documenter d'autres serveurs.
|
||||
|
||||
---
|
||||
|
||||
### Sentinelle
|
||||
|
||||
Ajoutez le [serveur Sentry MCP](https://mcp.sentry.dev) pour interagir avec vos projets et problèmes Sentry.
|
||||
|
||||
```json title="opencode.json" {4-8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"sentry": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.sentry.dev/mcp",
|
||||
"oauth": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Après avoir ajouté la configuration, authentifiez-vous auprès de Sentry :
|
||||
|
||||
```bash
|
||||
opencode mcp auth sentry
|
||||
```
|
||||
|
||||
Cela ouvrira une fenêtre de navigateur pour terminer le flux OAuth et connecter OpenCode à votre compte Sentry.
|
||||
|
||||
Une fois authentifié, vous pouvez utiliser les outils Sentry dans vos invites pour interroger les problèmes, les projets et les données d'erreur.
|
||||
|
||||
```txt "use sentry"
|
||||
Show me the latest unresolved issues in my project. use sentry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Contexte7
|
||||
|
||||
Ajoutez le [Context7 MCP server](https://github.com/upstash/context7) pour effectuer une recherche dans les documents.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si vous avez créé un compte gratuit, vous pouvez utiliser votre clé API et obtenir des limites de débit plus élevées.
|
||||
|
||||
```json title="opencode.json" {7-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp",
|
||||
"headers": {
|
||||
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ici, nous supposons que la variable d'environnement `CONTEXT7_API_KEY` est définie.
|
||||
|
||||
Ajoutez `use context7` à vos invites pour utiliser le serveur Context7 MCP.
|
||||
|
||||
```txt "use context7"
|
||||
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
|
||||
```
|
||||
|
||||
Alternativement, vous pouvez ajouter quelque chose comme ceci à votre [AGENTS.md](/docs/rules/).
|
||||
|
||||
```md title="AGENTS.md"
|
||||
When you need to search docs, use `context7` tools.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grep de Vercel
|
||||
|
||||
Ajoutez le serveur [Grep by Vercel](https://grep.app) MCP pour rechercher des extraits de code sur GitHub.
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"gh_grep": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.grep.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Puisque nous avons nommé notre serveur MCP `gh_grep`, vous pouvez ajouter `use the gh_grep tool` à vos invites pour que l'agent l'utilise.
|
||||
|
||||
```txt "use the gh_grep tool"
|
||||
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
|
||||
```
|
||||
|
||||
Alternativement, vous pouvez ajouter quelque chose comme ceci à votre [AGENTS.md](/docs/rules/).
|
||||
|
||||
```md title="AGENTS.md"
|
||||
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
|
||||
```
|
||||
223
packages/web/src/content/docs/fr/models.mdx
Normal file
223
packages/web/src/content/docs/fr/models.mdx
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
title: Modèles
|
||||
description: Configuration d'un fournisseur et d'un modèle LLM.
|
||||
---
|
||||
|
||||
OpenCode utilise [AI SDK](https://ai-sdk.dev/) et [Models.dev](https://models.dev) pour prendre en charge **75+ fournisseurs LLM** et prend en charge l'exécution de modèles locaux.
|
||||
|
||||
---
|
||||
|
||||
## Fournisseurs
|
||||
|
||||
Les fournisseurs les plus populaires sont préchargés par défaut. Si vous avez ajouté les informations d'identification d'un fournisseur via la commande `/connect`, elles seront disponibles lorsque vous démarrerez OpenCode.
|
||||
|
||||
En savoir plus sur [fournisseurs](/docs/providers).
|
||||
|
||||
---
|
||||
|
||||
## Sélectionnez un modèle
|
||||
|
||||
Une fois que vous avez configuré votre fournisseur, vous pouvez sélectionner le modèle souhaité en tapant :
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Modèles recommandés
|
||||
|
||||
Il existe de nombreux modèles et de nouveaux modèles sortent chaque semaine.
|
||||
|
||||
:::tip
|
||||
Pensez à utiliser l’un des modèles que nous recommandons.
|
||||
:::
|
||||
|
||||
Cependant, seuls quelques-uns d’entre eux savent à la fois générer du code et appeler des outils.
|
||||
|
||||
Voici plusieurs modèles qui fonctionnent bien avec OpenCode, sans ordre particulier. (Cette liste n’est pas exhaustive et n’est pas nécessairement à jour) :
|
||||
|
||||
- GPT 5.2
|
||||
- Codex GPT 5.1
|
||||
- Claude Opus 4.5
|
||||
- Claude Sonnet 4.5
|
||||
- Minimax M2.1
|
||||
- Gémeaux 3 Pro
|
||||
|
||||
---
|
||||
|
||||
## Définir une valeur par défaut
|
||||
|
||||
Pour définir l'un d'entre eux comme modèle par défaut, vous pouvez définir la clé `model` dans votre
|
||||
OpenCode configuration.
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "lmstudio/google/gemma-3n-e4b"
|
||||
}
|
||||
```
|
||||
|
||||
Ici, l'identifiant complet est `provider_id/model_id`. Par exemple, si vous utilisez [OpenCode Zen](/docs/zen), vous utiliserez `opencode/gpt-5.1-codex` pour GPT 5.1 Codex.
|
||||
|
||||
Si vous avez configuré un [fournisseur personnalisé](/docs/providers#custom), le `provider_id` est la clé de la partie `provider` de votre configuration et le `model_id` est la clé de `provider.models`.
|
||||
|
||||
---
|
||||
|
||||
## Configurer les modèles
|
||||
|
||||
Vous pouvez configurer globalement les options d'un modèle via le fichier config.
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-12,19-24}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"options": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"include": ["reasoning.encrypted_content"],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"anthropic": {
|
||||
"models": {
|
||||
"claude-sonnet-4-5-20250929": {
|
||||
"options": {
|
||||
"thinking": {
|
||||
"type": "enabled",
|
||||
"budgetTokens": 16000,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Ici, nous configurons les paramètres globaux pour deux modèles intégrés : `gpt-5` lorsqu'il est accessible via le fournisseur `openai` et `claude-sonnet-4-20250514` lorsqu'il est accessible via le fournisseur `anthropic`.
|
||||
Les noms du fournisseur intégré et des modèles peuvent être trouvés sur [Models.dev](https://models.dev).
|
||||
|
||||
Vous pouvez également configurer ces options pour tous les agents que vous utilisez. La configuration de l'agent remplace ici toutes les options globales. [En savoir plus](/docs/agents/#additional).
|
||||
|
||||
Vous pouvez également définir des variantes personnalisées qui étendent celles intégrées. Les variantes vous permettent de configurer différents paramètres pour le même modèle sans créer d'entrées en double :
|
||||
|
||||
```jsonc title="opencode.jsonc" {6-21}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"opencode": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Variantes
|
||||
|
||||
De nombreux modèles prennent en charge plusieurs variantes avec différentes configurations. OpenCode est livré avec des variantes par défaut intégrées pour les fournisseurs populaires.
|
||||
|
||||
### Variantes intégrées
|
||||
|
||||
OpenCode est livré avec des variantes par défaut pour de nombreux fournisseurs :
|
||||
|
||||
**Anthropique** :
|
||||
|
||||
- `high` - Budget de réflexion élevé (par défaut)
|
||||
- `max` - Budget de réflexion maximum
|
||||
|
||||
**OpenAI** :
|
||||
|
||||
Varie selon le modèle mais en gros :
|
||||
|
||||
- `none` - Aucun raisonnement
|
||||
- `minimal` - Effort de raisonnement minimal
|
||||
- `low` - Faible effort de raisonnement
|
||||
- `medium` - Effort de raisonnement moyen
|
||||
- `high` – Effort de raisonnement élevé
|
||||
- `xhigh` - Effort de raisonnement très élevé
|
||||
|
||||
**Google**:
|
||||
|
||||
- `low` – Budget d'effort/jetons réduit
|
||||
- `high` – Budget d'effort/de jetons plus élevé
|
||||
|
||||
:::tip
|
||||
Cette liste n'est pas exhaustive. De nombreux autres fournisseurs ont également des paramètres par défaut intégrés.
|
||||
:::
|
||||
|
||||
### Variantes personnalisées
|
||||
|
||||
Vous pouvez remplacer les variantes existantes ou ajouter les vôtres :
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"thinking": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
},
|
||||
"fast": {
|
||||
"disabled": true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### Variantes de cycles
|
||||
|
||||
Utilisez le raccourci clavier `variant_cycle` pour basculer rapidement entre les variantes. [En savoir plus](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
## Chargement des modèles
|
||||
|
||||
Lorsque OpenCode démarre, il recherche les modèles dans l'ordre de priorité suivant :
|
||||
|
||||
1. L'indicateur de ligne de commande `--model` ou `-m`. Le format est le même que dans le fichier de configuration : `provider_id/model_id`.
|
||||
|
||||
2. La liste des modèles dans la configuration OpenCode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "anthropic/claude-sonnet-4-20250514"
|
||||
}
|
||||
```
|
||||
|
||||
Le format ici est `provider/model`.
|
||||
|
||||
3. Le dernier modèle utilisé.
|
||||
|
||||
4. Le premier modèle utilisant une priorité interne.
|
||||
331
packages/web/src/content/docs/fr/modes.mdx
Normal file
331
packages/web/src/content/docs/fr/modes.mdx
Normal file
@@ -0,0 +1,331 @@
|
||||
---
|
||||
title: Modes
|
||||
description: Différents modes pour différents cas d'utilisation.
|
||||
---
|
||||
|
||||
:::caution
|
||||
Les modes sont désormais configurés via l'option `agent` dans la configuration opencode. Le
|
||||
L’option `mode` est désormais obsolète. [En savoir plus](/docs/agents).
|
||||
:::
|
||||
|
||||
Les modes dans opencode vous permettent de personnaliser le comportement, les outils et les invites pour différents cas d'utilisation.
|
||||
|
||||
Il est livré avec deux modes intégrés : **build** et **plan**. Vous pouvez personnaliser
|
||||
ceux-ci ou configurez les vôtres via la configuration opencode.
|
||||
|
||||
Vous pouvez basculer entre les modes au cours d'une session ou les configurer dans votre fichier de configuration.
|
||||
|
||||
---
|
||||
|
||||
## Intégré
|
||||
|
||||
opencode est livré avec deux modes intégrés.
|
||||
|
||||
---
|
||||
|
||||
### Construire
|
||||
|
||||
Build est le mode **par défaut** avec tous les outils activés. Il s'agit du mode standard pour le travail de développement dans lequel vous avez besoin d'un accès complet aux opérations sur les fichiers et aux commandes système.
|
||||
|
||||
---
|
||||
|
||||
### Plan
|
||||
|
||||
Un mode restreint conçu pour la planification et l’analyse. En mode plan, les outils suivants sont désactivés par défaut :
|
||||
|
||||
- `write` - Impossible de créer de nouveaux fichiers
|
||||
- `edit` - Impossible de modifier les fichiers existants, à l'exception des fichiers situés à `.opencode/plans/*.md` pour détailler le plan lui-même
|
||||
- `patch` - Impossible d'appliquer les correctifs
|
||||
- `bash` - Impossible d'exécuter les commandes shell
|
||||
|
||||
Ce mode est utile lorsque vous souhaitez que l'IA analyse le code, suggère des modifications ou crée des plans sans apporter de modifications réelles à votre base de code.
|
||||
|
||||
---
|
||||
|
||||
## Commutation
|
||||
|
||||
Vous pouvez basculer entre les modes au cours d'une session à l'aide de la touche _Tab_. Ou votre raccourci clavier `switch_mode` configuré.
|
||||
|
||||
Voir également : [Formatters](/docs/formatters) pour plus d'informations sur la configuration du formatage du code.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez personnaliser les modes intégrés ou créer les vôtres via la configuration. Les modes peuvent être configurés de deux manières :
|
||||
|
||||
### JSONConfiguration
|
||||
|
||||
Configurez les modes dans votre fichier de configuration `opencode.json` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"build": {
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Configuration de démarque
|
||||
|
||||
Vous pouvez également définir des modes à l'aide de fichiers markdown. Placez-les dans :
|
||||
|
||||
- Mondial : `~/.config/opencode/modes/`
|
||||
- Projet : `.opencode/modes/`
|
||||
|
||||
```markdown title="~/.config/opencode/modes/review.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
Le nom du fichier markdown devient le nom du mode (par exemple, `review.md` crée un mode `review`).
|
||||
|
||||
Examinons ces options de configuration en détail.
|
||||
|
||||
---
|
||||
|
||||
### Modèle
|
||||
|
||||
Utilisez la configuration `model` pour remplacer le modèle par défaut pour ce mode. Utile pour utiliser différents modèles optimisés pour différentes tâches. Par exemple, un modèle de planification plus rapide, un modèle de mise en œuvre plus performant.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Température
|
||||
|
||||
Contrôlez le caractère aléatoire et la créativité des réponses de l'IA avec la configuration `temperature`. Des valeurs faibles rendent les réponses plus ciblées et déterministes, tandis que des valeurs plus élevées augmentent la créativité et la variabilité.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les valeurs de température varient généralement de 0,0 à 1,0 :
|
||||
|
||||
- **0,0-0,2** : réponses très ciblées et déterministes, idéales pour l'analyse et la planification du code
|
||||
- **0,3-0,5** : réponses équilibrées avec une certaine créativité, idéales pour les tâches de développement générales
|
||||
- **0,6-1,0** : réponses plus créatives et variées, utiles pour le brainstorming et l'exploration
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si aucune température n'est spécifiée, opencode utilise les valeurs par défaut spécifiques au modèle (généralement 0 pour la plupart des modèles, 0,55 pour les modèles Qwen).
|
||||
|
||||
---
|
||||
|
||||
### Rapide
|
||||
|
||||
Spécifiez un fichier d'invite système personnalisé pour ce mode avec la configuration `prompt`. Le fichier d'invite doit contenir des instructions spécifiques à l'objectif du mode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ce chemin est relatif à l'emplacement du fichier de configuration. Donc ça marche pour
|
||||
à la fois la configuration globale opencode et la configuration spécifique au projet.
|
||||
|
||||
---
|
||||
|
||||
### Outils
|
||||
|
||||
Contrôlez quels outils sont disponibles dans ce mode avec la configuration `tools`. Vous pouvez activer ou désactiver des outils spécifiques en les définissant sur `true` ou `false`.
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Si aucun outil n'est spécifié, tous les outils sont activés par défaut.
|
||||
|
||||
---
|
||||
|
||||
#### Outils disponibles
|
||||
|
||||
Voici tous les outils pouvant être contrôlés via le mode config.
|
||||
|
||||
| Outil | Descriptif |
|
||||
| ----------- | ----------------------- |
|
||||
| `bash` | Exécuter des commandes shell |
|
||||
| `edit` | Modifier des fichiers existants |
|
||||
| `write` | Créer de nouveaux fichiers |
|
||||
| `read` | Lire le contenu du fichier |
|
||||
| `grep` | Rechercher le contenu du fichier |
|
||||
| `glob` | Rechercher des fichiers par modèle |
|
||||
| `list` | Liste du contenu du répertoire |
|
||||
| `patch` | Appliquer des correctifs aux fichiers |
|
||||
| `todowrite` | Gérer les listes de tâches |
|
||||
| `todoread` | Lire les listes de tâches |
|
||||
| `webfetch` | Récupérer du contenu Web |
|
||||
|
||||
---
|
||||
|
||||
## Modes personnalisés
|
||||
|
||||
Vous pouvez créer vos propres modes personnalisés en les ajoutant à la configuration. Voici des exemples utilisant les deux approches :
|
||||
|
||||
### Utilisation de la configuration JSON
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"docs": {
|
||||
"prompt": "{file:./prompts/documentation.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Utiliser des fichiers de démarque
|
||||
|
||||
Créez des fichiers de mode dans `.opencode/modes/` pour les modes spécifiques au projet ou `~/.config/opencode/modes/` pour les modes globaux :
|
||||
|
||||
```markdown title=".opencode/modes/debug.md"
|
||||
---
|
||||
temperature: 0.1
|
||||
tools:
|
||||
bash: true
|
||||
read: true
|
||||
grep: true
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Understanding the problem through careful analysis
|
||||
- Using bash commands to inspect system state
|
||||
- Reading relevant files and logs
|
||||
- Searching for patterns and anomalies
|
||||
- Providing clear explanations of findings
|
||||
|
||||
Do not make any changes to files. Only investigate and report.
|
||||
```
|
||||
|
||||
```markdown title="~/.config/opencode/modes/refactor.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.2
|
||||
tools:
|
||||
edit: true
|
||||
read: true
|
||||
grep: true
|
||||
glob: true
|
||||
---
|
||||
|
||||
You are in refactoring mode. Focus on improving code quality without changing functionality.
|
||||
|
||||
Priorities:
|
||||
|
||||
- Improve code readability and maintainability
|
||||
- Apply consistent naming conventions
|
||||
- Reduce code duplication
|
||||
- Optimize performance where appropriate
|
||||
- Ensure all tests continue to pass
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Cas d'utilisation
|
||||
|
||||
Voici quelques cas d’utilisation courants pour différents modes.
|
||||
|
||||
- **Mode build** : travail de développement complet avec tous les outils activés
|
||||
- **Mode Plan** : Analyse et planification sans apporter de modifications
|
||||
- **Mode révision** : révision du code avec accès en lecture seule et outils de documentation
|
||||
- **Mode débogage** : axé sur l'investigation avec les outils bash et read activés
|
||||
- **Mode Docs** : écriture de documentation avec des opérations sur les fichiers mais pas de commandes système
|
||||
|
||||
Vous constaterez peut-être également que différents modèles conviennent à différents cas d’utilisation.
|
||||
57
packages/web/src/content/docs/fr/network.mdx
Normal file
57
packages/web/src/content/docs/fr/network.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Réseau
|
||||
description: Configurez les proxys et les certificats personnalisés.
|
||||
---
|
||||
|
||||
OpenCode prend en charge les variables d'environnement proxy standard et les certificats personnalisés pour les environnements réseau d'entreprise.
|
||||
|
||||
---
|
||||
|
||||
## Procuration
|
||||
|
||||
OpenCode respecte les variables d'environnement proxy standard.
|
||||
|
||||
```bash
|
||||
# HTTPS proxy (recommended)
|
||||
export HTTPS_PROXY=https://proxy.example.com:8080
|
||||
|
||||
# HTTP proxy (if HTTPS not available)
|
||||
export HTTP_PROXY=http://proxy.example.com:8080
|
||||
|
||||
# Bypass proxy for local server (required)
|
||||
export NO_PROXY=localhost,127.0.0.1
|
||||
```
|
||||
|
||||
:::caution
|
||||
Le TUI communique avec un serveur HTTP local. Vous devez contourner le proxy pour cette connexion afin d'éviter les boucles de routage.
|
||||
:::
|
||||
|
||||
Vous pouvez configurer le port et le nom d'hôte du serveur à l'aide de [CLI flags](/docs/cli#run).
|
||||
|
||||
---
|
||||
|
||||
### Authentifier
|
||||
|
||||
Si votre proxy nécessite une authentification de base, incluez les informations d'identification dans le URL.
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
|
||||
```
|
||||
|
||||
:::caution
|
||||
Évitez de coder en dur les mots de passe. Utilisez des variables d’environnement ou un stockage sécurisé des informations d’identification.
|
||||
:::
|
||||
|
||||
Pour les proxys nécessitant une authentification avancée comme NTLM ou Kerberos, envisagez d'utiliser une passerelle LLM qui prend en charge votre méthode d'authentification.
|
||||
|
||||
---
|
||||
|
||||
## Certificats personnalisés
|
||||
|
||||
Si votre entreprise utilise des autorités de certification personnalisées pour les connexions HTTPS, configurez OpenCode pour leur faire confiance.
|
||||
|
||||
```bash
|
||||
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
|
||||
```
|
||||
|
||||
Cela fonctionne à la fois pour les connexions proxy et pour l'accès direct à API.
|
||||
237
packages/web/src/content/docs/fr/permissions.mdx
Normal file
237
packages/web/src/content/docs/fr/permissions.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: Autorisations
|
||||
description: Contrôlez quelles actions nécessitent une approbation pour être exécutées.
|
||||
---
|
||||
|
||||
OpenCode utilise la configuration `permission` pour décider si une action donnée doit s'exécuter automatiquement, vous inviter ou être bloquée.
|
||||
|
||||
Depuis `v1.1.1`, l'ancienne configuration booléenne `tools` est obsolète et a été fusionnée dans `permission`. L'ancienne configuration `tools` est toujours prise en charge pour des raisons de compatibilité ascendante.
|
||||
|
||||
---
|
||||
|
||||
## Actes
|
||||
|
||||
Chaque règle d'autorisation se résout en l'une des suivantes :
|
||||
|
||||
- `"allow"` – exécuter sans approbation
|
||||
- `"ask"` – demande d'approbation
|
||||
- `"deny"` — bloque l'action
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Vous pouvez définir des autorisations globalement (avec `*`) et remplacer des outils spécifiques.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"*": "ask",
|
||||
"bash": "allow",
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également définir toutes les autorisations en même temps :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": "allow"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Règles granulaires (syntaxe d'objet)
|
||||
|
||||
Pour la plupart des autorisations, vous pouvez utiliser un objet pour appliquer différentes actions en fonction de la saisie de l'outil.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"npm *": "allow",
|
||||
"rm *": "deny",
|
||||
"grep *": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"*": "deny",
|
||||
"packages/web/src/content/docs/*.mdx": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les règles sont évaluées par correspondance de modèle, la **dernière règle correspondante étant gagnante**. Un modèle courant consiste à placer la règle fourre-tout `"*"` en premier, et les règles plus spécifiques après.
|
||||
|
||||
### Caractères génériques
|
||||
|
||||
Les modèles d'autorisation utilisent une simple correspondance de caractères génériques :
|
||||
|
||||
- `*` correspond à zéro ou plusieurs caractères
|
||||
- `?` correspond exactement à un caractère
|
||||
- Tous les autres caractères correspondent littéralement
|
||||
|
||||
### Extension du répertoire personnel
|
||||
|
||||
Vous pouvez utiliser `~` ou `$HOME` au début d'un modèle pour référencer votre répertoire personnel. Ceci est particulièrement utile pour les règles [`external_directory`](#external-directories).
|
||||
|
||||
- `~/projects/*` -> `/Users/username/projects/*`
|
||||
- `$HOME/projects/*` -> `/Users/username/projects/*`
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### Répertoires externes
|
||||
|
||||
Utilisez `external_directory` pour autoriser les appels d'outils qui touchent des chemins en dehors du répertoire de travail où OpenCode a été démarré. Cela s'applique à tout outil qui prend un chemin en entrée (par exemple `read`, `edit`, `list`, `glob`, `grep` et de nombreuses commandes `bash`).
|
||||
|
||||
L'expansion de la maison (comme `~/...`) n'affecte que la façon dont un modèle est écrit. Cela n'intègre pas un chemin externe à l'espace de travail actuel, donc les chemins en dehors du répertoire de travail doivent toujours être autorisés via `external_directory`.
|
||||
|
||||
Par exemple, cela permet d'accéder à tout ce qui se trouve sous `~/projects/personal/` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Tout répertoire autorisé ici hérite des mêmes valeurs par défaut que l'espace de travail actuel. Étant donné que [`read` est par défaut `allow`](#defaults), les lectures sont également autorisées pour les entrées sous `external_directory`, sauf dérogation. Ajoutez des règles explicites lorsqu'un outil doit être restreint dans ces chemins, comme bloquer les modifications tout en conservant les lectures :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"~/projects/personal/**": "deny"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Gardez la liste centrée sur les chemins approuvés et superposez des règles d'autorisation ou de refus supplémentaires selon les besoins pour d'autres outils (par exemple `bash`).
|
||||
|
||||
---
|
||||
|
||||
## Autorisations disponibles
|
||||
|
||||
Les autorisations OpenCode sont classées par nom d'outil, plus quelques gardes de sécurité :
|
||||
|
||||
- `read` — lecture d'un fichier (correspond au chemin du fichier)
|
||||
- `edit` — toutes les modifications de fichiers (couvre `edit`, `write`, `patch`, `multiedit`)
|
||||
- `glob` — globalisation de fichiers (correspond au modèle global)
|
||||
- `grep` — recherche de contenu (correspond au modèle regex)
|
||||
- `list` — listant les fichiers dans un répertoire (correspond au chemin du répertoire)
|
||||
- `bash` - exécution de commandes shell (correspond aux commandes analysées comme `git status --porcelain`)
|
||||
- `task` — lancement de sous-agents (correspond au type de sous-agent)
|
||||
- `skill` — chargement d'une compétence (correspond au nom de la compétence)
|
||||
- `lsp` — exécution de requêtes LSP (actuellement non granulaires)
|
||||
- `todoread`, `todowrite` — lecture/mise à jour de la liste de tâches
|
||||
- `webfetch` — récupérer un URL (correspond au URL)
|
||||
- `websearch`, `codesearch` — recherche Web/code (correspond à la requête)
|
||||
- `external_directory` - déclenché lorsqu'un outil touche des chemins en dehors du répertoire de travail du projet
|
||||
- `doom_loop` — déclenché lorsque le même appel d'outil se répète 3 fois avec une entrée identique
|
||||
|
||||
---
|
||||
|
||||
## Valeurs par défaut
|
||||
|
||||
Si vous ne spécifiez rien, OpenCode démarre avec les valeurs par défaut permissives :
|
||||
|
||||
- La plupart des autorisations sont par défaut `"allow"`.
|
||||
- `doom_loop` et `external_directory` sont par défaut `"ask"`.
|
||||
- `read` est `"allow"`, mais les fichiers `.env` sont refusés par défaut :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"permission": {
|
||||
"read": {
|
||||
"*": "allow",
|
||||
"*.env": "deny",
|
||||
"*.env.*": "deny",
|
||||
"*.env.example": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Que fait « Demander » ?
|
||||
|
||||
Lorsque OpenCode demande l'approbation, l'interface utilisateur propose trois résultats :
|
||||
|
||||
- `once` — approuve uniquement cette demande
|
||||
- `always` — approuve les futures demandes correspondant aux modèles suggérés (pour le reste de la session OpenCode en cours)
|
||||
- `reject` — refuser la demande
|
||||
|
||||
L'ensemble des modèles que `always` approuverait est fourni par l'outil (par exemple, les approbations bash mettent généralement sur liste blanche un préfixe de commande sûr comme `git status*`).
|
||||
|
||||
---
|
||||
|
||||
## Agents
|
||||
|
||||
Vous pouvez remplacer les autorisations par agent. Les autorisations des agents sont fusionnées avec la configuration globale et les règles des agents sont prioritaires. [En savoir plus](/docs/agents#permissions) sur les autorisations des agents.
|
||||
|
||||
:::note
|
||||
Reportez-vous à la section [Règles granulaires (syntaxe d'objet)](#granular-rules-object-syntax) ci-dessus pour des exemples de correspondance de modèles plus détaillés.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"git commit *": "deny",
|
||||
"git push *": "deny",
|
||||
"grep *": "allow"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"git commit *": "ask",
|
||||
"git push *": "deny",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également configurer les autorisations des agents dans Markdown :
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash: ask
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
:::tip
|
||||
Utilisez la correspondance de modèles pour les commandes avec des arguments. `"grep *"` autorise `grep pattern file.txt`, tandis que `"grep"` seul le bloquerait. Les commandes comme `git status` fonctionnent pour le comportement par défaut mais nécessitent une autorisation explicite (comme `"git status *"`) lorsque des arguments sont passés.
|
||||
:::
|
||||
385
packages/web/src/content/docs/fr/plugins.mdx
Normal file
385
packages/web/src/content/docs/fr/plugins.mdx
Normal file
@@ -0,0 +1,385 @@
|
||||
---
|
||||
title: Plugins
|
||||
description: Écrivez vos propres plugins pour étendre OpenCode.
|
||||
---
|
||||
|
||||
Les plugins vous permettent d'étendre OpenCode en vous connectant à divers événements et en personnalisant le comportement. Vous pouvez créer des plugins pour ajouter de nouvelles fonctionnalités, intégrer des services externes ou modifier le comportement par défaut de OpenCode.
|
||||
|
||||
Pour des exemples, consultez les [plugins](/docs/ecosystem#plugins) créés par la communauté.
|
||||
|
||||
---
|
||||
|
||||
## Utiliser un plugin
|
||||
|
||||
Il existe deux manières de charger des plugins.
|
||||
|
||||
---
|
||||
|
||||
### À partir de fichiers locaux
|
||||
|
||||
Placez les fichiers JavaScript ou TypeScript dans le répertoire du plugin.
|
||||
|
||||
- `.opencode/plugins/` - Plugins au niveau du projet
|
||||
- `~/.config/opencode/plugins/` - Plugins globaux
|
||||
|
||||
Les fichiers de ces répertoires sont automatiquement chargés au démarrage.
|
||||
|
||||
---
|
||||
|
||||
### De npm
|
||||
|
||||
Spécifiez les packages npm dans votre fichier de configuration.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
Les packages npm standards et étendus sont pris en charge.
|
||||
|
||||
Parcourez les plugins disponibles dans le [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Comment les plugins sont installés
|
||||
|
||||
Les **plugins npm** sont installés automatiquement à l'aide de Bun au démarrage. Les packages et leurs dépendances sont mis en cache dans `~/.cache/opencode/node_modules/`.
|
||||
|
||||
Les **plugins locaux** sont chargés directement depuis le répertoire des plugins. Pour utiliser des packages externes, vous devez créer un `package.json` dans votre répertoire de configuration (voir [Dépendances](#dependencies)), ou publier le plugin sur npm et [l'ajouter à votre config](/docs/config#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Ordre de chargement
|
||||
|
||||
Les plugins sont chargés à partir de toutes les sources et tous les hooks s'exécutent dans l'ordre. L'ordre de chargement est le suivant :
|
||||
|
||||
1. Configuration globale (`~/.config/opencode/opencode.json`)
|
||||
2. Configuration du projet (`opencode.json`)
|
||||
3. Répertoire global des plugins (`~/.config/opencode/plugins/`)
|
||||
4. Répertoire des plugins du projet (`.opencode/plugins/`)
|
||||
|
||||
Les packages npm en double avec le même nom et la même version sont chargés une fois. Cependant, un plugin local et un plugin npm portant des noms similaires sont tous deux chargés séparément.
|
||||
|
||||
---
|
||||
|
||||
## Créer un plugin
|
||||
|
||||
Un plugin est un **module JavaScript/TypeScript** qui exporte un ou plusieurs plugins
|
||||
fonctions. Chaque fonction reçoit un objet contextuel et renvoie un objet hooks.
|
||||
|
||||
---
|
||||
|
||||
### Dépendances
|
||||
|
||||
Les plugins locaux et les outils personnalisés peuvent utiliser des packages npm externes. Ajoutez un `package.json` à votre répertoire de configuration avec les dépendances dont vous avez besoin.
|
||||
|
||||
```json title=".opencode/package.json"
|
||||
{
|
||||
"dependencies": {
|
||||
"shescape": "^2.1.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
OpenCode exécute `bun install` au démarrage pour les installer. Vos plugins et outils peuvent ensuite les importer.
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
import { escape } from "shescape"
|
||||
|
||||
export const MyPlugin = async (ctx) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "bash") {
|
||||
output.args.command = escape(output.args.command)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Structure de base
|
||||
|
||||
```js title=".opencode/plugins/example.js"
|
||||
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
console.log("Plugin initialized!")
|
||||
|
||||
return {
|
||||
// Hook implementations go here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
La fonction plugin reçoit :
|
||||
|
||||
- `project` : informations sur le projet actuel.
|
||||
- `directory` : le répertoire de travail actuel.
|
||||
- `worktree` : le chemin de l'arbre de travail git.
|
||||
- `client` : un client SDK opencode pour interagir avec l'IA.
|
||||
- `$` : [shell API](https://bun.com/docs/runtime/shell) de Bun pour l'exécution de commandes.
|
||||
|
||||
---
|
||||
|
||||
### Prise en charge de TypeScript
|
||||
|
||||
Pour les plugins TypeScript, vous pouvez importer des types à partir du package du plugin :
|
||||
|
||||
```ts title="my-plugin.ts" {1}
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
// Type-safe hook implementations
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Événements
|
||||
|
||||
Les plugins peuvent s'abonner à des événements comme indiqué ci-dessous dans la section Exemples. Voici une liste des différents événements disponibles.
|
||||
|
||||
#### Événements de commande
|
||||
|
||||
- `command.executed`
|
||||
|
||||
#### Événements de fichier
|
||||
|
||||
- `file.edited`
|
||||
- `file.watcher.updated`
|
||||
|
||||
#### Événements d'installation
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
#### LSP Événements
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
#### Événements de messages
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### Événements d'autorisation
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
|
||||
#### Événements du serveur
|
||||
|
||||
- `server.connected`
|
||||
|
||||
#### Événements de session
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
- `session.deleted`
|
||||
- `session.diff`
|
||||
- `session.error`
|
||||
- `session.idle`
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
#### Événements à faire
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
#### Événements Shell
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### Événements d'outils
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
|
||||
#### TUI Événements
|
||||
|
||||
- `tui.prompt.append`
|
||||
- `tui.command.execute`
|
||||
- `tui.toast.show`
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
Voici quelques exemples de plugins que vous pouvez utiliser pour étendre opencode.
|
||||
|
||||
---
|
||||
|
||||
### Envoyer des notifications
|
||||
|
||||
Envoyez des notifications lorsque certains événements se produisent :
|
||||
|
||||
```js title=".opencode/plugins/notification.js"
|
||||
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
event: async ({ event }) => {
|
||||
// Send notification on session completion
|
||||
if (event.type === "session.idle") {
|
||||
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Nous utilisons `osascript` pour exécuter AppleScript sur macOS. Ici, nous l'utilisons pour envoyer des notifications.
|
||||
|
||||
:::note
|
||||
Si vous utilisez l'application de bureau OpenCode, elle peut envoyer automatiquement des notifications système lorsqu'une réponse est prête ou en cas d'erreur de session.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Protection .env
|
||||
|
||||
Empêchez opencode de lire les fichiers `.env` :
|
||||
|
||||
```javascript title=".opencode/plugins/env-protection.js"
|
||||
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "read" && output.args.filePath.includes(".env")) {
|
||||
throw new Error("Do not read .env files")
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Injecter des variables d'environnement
|
||||
|
||||
Injectez des variables d'environnement dans toutes les exécutions du shell (outils d'IA et terminaux utilisateur) :
|
||||
|
||||
```javascript title=".opencode/plugins/inject-env.js"
|
||||
export const InjectEnvPlugin = async () => {
|
||||
return {
|
||||
"shell.env": async (input, output) => {
|
||||
output.env.MY_API_KEY = "secret"
|
||||
output.env.PROJECT_ROOT = input.cwd
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Outils personnalisés
|
||||
|
||||
Les plugins peuvent également ajouter des outils personnalisés à opencode :
|
||||
|
||||
```ts title=".opencode/plugins/custom-tools.ts"
|
||||
import { type Plugin, tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
tool: {
|
||||
mytool: tool({
|
||||
description: "This is a custom tool",
|
||||
args: {
|
||||
foo: tool.schema.string(),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const { directory, worktree } = context
|
||||
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
L'assistant `tool` crée un outil personnalisé que opencode peut appeler. Il prend une fonction de schéma Zod et renvoie une définition d'outil avec :
|
||||
|
||||
- `description` : ce que fait l'outil
|
||||
- `args` : schéma Zod pour les arguments de l'outil
|
||||
- `execute` : Fonction qui s'exécute lorsque l'outil est appelé
|
||||
|
||||
Vos outils personnalisés seront disponibles pour opencode aux côtés des outils intégrés.
|
||||
|
||||
---
|
||||
|
||||
### Enregistrement
|
||||
|
||||
Utilisez `client.app.log()` au lieu de `console.log` pour la journalisation structurée :
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
export const MyPlugin = async ({ client }) => {
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-plugin",
|
||||
level: "info",
|
||||
message: "Plugin initialized",
|
||||
extra: { foo: "bar" },
|
||||
},
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
Niveaux : `debug`, `info`, `warn`, `error`. Voir la [documentation du SDK](https://opencode.ai/docs/sdk) pour plus de détails.
|
||||
|
||||
---
|
||||
|
||||
### Crochets de compactage
|
||||
|
||||
Personnalisez le contexte inclus lorsqu'une session est compactée :
|
||||
|
||||
```ts title=".opencode/plugins/compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Inject additional context into the compaction prompt
|
||||
output.context.push(`
|
||||
## Custom Context
|
||||
|
||||
Include any state that should persist across compaction:
|
||||
- Current task status
|
||||
- Important decisions made
|
||||
- Files being actively worked on
|
||||
`)
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Le hook `experimental.session.compacting` se déclenche avant que le LLM ne génère un résumé de continuation. Utilisez-le pour injecter un contexte spécifique au domaine que l'invite de compactage par défaut manquerait.
|
||||
|
||||
Vous pouvez également remplacer entièrement l'invite de compactage en définissant `output.prompt` :
|
||||
|
||||
```ts title=".opencode/plugins/custom-compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomCompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Replace the entire compaction prompt
|
||||
output.prompt = `
|
||||
You are generating a continuation prompt for a multi-agent swarm session.
|
||||
|
||||
Summarize:
|
||||
1. The current task and its status
|
||||
2. Which files are being modified and by whom
|
||||
3. Any blockers or dependencies between agents
|
||||
4. The next steps to complete the work
|
||||
|
||||
Format as a structured prompt that a new agent can use to resume work.
|
||||
`
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Lorsque `output.prompt` est défini, il remplace complètement l'invite de compactage par défaut. Le tableau `output.context` est ignoré dans ce cas.
|
||||
1895
packages/web/src/content/docs/fr/providers.mdx
Normal file
1895
packages/web/src/content/docs/fr/providers.mdx
Normal file
File diff suppressed because it is too large
Load Diff
180
packages/web/src/content/docs/fr/rules.mdx
Normal file
180
packages/web/src/content/docs/fr/rules.mdx
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: Règles
|
||||
description: Définissez des instructions personnalisées pour opencode.
|
||||
---
|
||||
|
||||
Vous pouvez fournir des instructions personnalisées à opencode en créant un fichier `AGENTS.md`. Ceci est similaire aux règles du curseur. Il contient des instructions qui seront incluses dans le contexte du LLM pour personnaliser son comportement pour votre projet spécifique.
|
||||
|
||||
---
|
||||
|
||||
## Initialiser
|
||||
|
||||
Pour créer un nouveau fichier `AGENTS.md`, vous pouvez exécuter la commande `/init` dans opencode.
|
||||
|
||||
:::tip
|
||||
Vous devez valider le fichier `AGENTS.md` de votre projet dans Git.
|
||||
:::
|
||||
|
||||
Cela analysera votre projet et tout son contenu pour comprendre de quoi il s'agit et générera un fichier `AGENTS.md` avec celui-ci. Cela aide opencode à mieux naviguer dans le projet.
|
||||
|
||||
Si vous avez un fichier `AGENTS.md` existant, cela tentera de l'ajouter.
|
||||
|
||||
---
|
||||
|
||||
## Exemple
|
||||
|
||||
Vous pouvez également simplement créer ce fichier manuellement. Voici un exemple de certaines choses que vous pouvez mettre dans un fichier `AGENTS.md`.
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# SST v3 Monorepo Project
|
||||
|
||||
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
|
||||
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
|
||||
- `sst.config.ts` - Main SST configuration with dynamic imports
|
||||
|
||||
## Code Standards
|
||||
|
||||
- Use TypeScript with strict mode enabled
|
||||
- Shared code goes in `packages/core/` with proper exports configuration
|
||||
- Functions go in `packages/functions/`
|
||||
- Infrastructure should be split into logical files in `infra/`
|
||||
|
||||
## Monorepo Conventions
|
||||
|
||||
- Import shared modules using workspace names: `@my-app/core/example`
|
||||
```
|
||||
|
||||
Nous ajoutons ici des instructions spécifiques au projet et celles-ci seront partagées au sein de votre équipe.
|
||||
|
||||
---
|
||||
|
||||
## Espèces
|
||||
|
||||
opencode prend également en charge la lecture du fichier `AGENTS.md` à partir de plusieurs emplacements. Et cela répond à des objectifs différents.
|
||||
|
||||
### Projet
|
||||
|
||||
Placez un `AGENTS.md` à la racine de votre projet pour les règles spécifiques au projet. Celles-ci ne s'appliquent que lorsque vous travaillez dans ce répertoire ou ses sous-répertoires.
|
||||
|
||||
### Mondial
|
||||
|
||||
Vous pouvez également avoir des règles globales dans un fichier `~/.config/opencode/AGENTS.md`. Ceci est appliqué à toutes les sessions opencode.
|
||||
|
||||
Étant donné que cela n'est pas validé par Git ni partagé avec votre équipe, nous vous recommandons de l'utiliser pour spécifier les règles personnelles que le LLM doit suivre.
|
||||
|
||||
### Compatibilité des codes Claude
|
||||
|
||||
Pour les utilisateurs migrant depuis Claude Code, OpenCode prend en charge les conventions de fichiers de Claude Code comme solutions de secours :
|
||||
|
||||
- **Règles du projet** : `CLAUDE.md` dans le répertoire de votre projet (utilisé si aucun `AGENTS.md` n'existe)
|
||||
- **Règles globales** : `~/.claude/CLAUDE.md` (utilisé si aucun `~/.config/opencode/AGENTS.md` n'existe)
|
||||
- **Compétences** : `~/.claude/skills/` — voir [Compétences de l'agent](/docs/skills/) pour plus de détails
|
||||
|
||||
Pour désactiver la compatibilité Claude Code, définissez l'une de ces variables d'environnement :
|
||||
|
||||
```bash
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Priorité
|
||||
|
||||
Lorsque opencode démarre, il recherche les fichiers de règles dans cet ordre :
|
||||
|
||||
1. **Fichiers locaux** en parcourant le répertoire actuel (`AGENTS.md`, `CLAUDE.md`)
|
||||
2. **Fichier global** à `~/.config/opencode/AGENTS.md`
|
||||
3. **Fichier Claude Code** à `~/.claude/CLAUDE.md` (sauf si désactivé)
|
||||
|
||||
Le premier fichier correspondant gagne dans chaque catégorie. Par exemple, si vous possédez à la fois `AGENTS.md` et `CLAUDE.md`, seul `AGENTS.md` est utilisé. De même, `~/.config/opencode/AGENTS.md` a priorité sur `~/.claude/CLAUDE.md`.
|
||||
|
||||
---
|
||||
|
||||
## Instructions personnalisées
|
||||
|
||||
Vous pouvez spécifier des fichiers d'instructions personnalisés dans votre `opencode.json` ou dans le `~/.config/opencode/opencode.json` global. Cela vous permet, à vous et à votre équipe, de réutiliser les règles existantes plutôt que d'avoir à les dupliquer dans AGENTS.md.
|
||||
|
||||
Exemple:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Vous pouvez également utiliser des URL distantes pour charger des instructions à partir du Web.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
|
||||
}
|
||||
```
|
||||
|
||||
Les instructions à distance sont récupérées avec un délai d'attente de 5 secondes.
|
||||
|
||||
Tous les fichiers d'instructions sont combinés avec vos fichiers `AGENTS.md`.
|
||||
|
||||
---
|
||||
|
||||
## Référencement de fichiers externes
|
||||
|
||||
Bien que opencode n'analyse pas automatiquement les références de fichiers dans `AGENTS.md`, vous pouvez obtenir des fonctionnalités similaires de deux manières :
|
||||
|
||||
### Utilisation de opencode.json
|
||||
|
||||
L'approche recommandée consiste à utiliser le champ `instructions` dans `opencode.json` :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
|
||||
}
|
||||
```
|
||||
|
||||
### Instructions manuelles dans AGENTS.md
|
||||
|
||||
Vous pouvez apprendre à opencode à lire des fichiers externes en fournissant des instructions explicites dans votre `AGENTS.md`. Voici un exemple pratique :
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# TypeScript Project Rules
|
||||
|
||||
## External File Loading
|
||||
|
||||
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
|
||||
|
||||
Instructions:
|
||||
|
||||
- Do NOT preemptively load all references - use lazy loading based on actual need
|
||||
- When loaded, treat content as mandatory instructions that override defaults
|
||||
- Follow references recursively when needed
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
For TypeScript code style and best practices: @docs/typescript-guidelines.md
|
||||
For React component architecture and hooks patterns: @docs/react-patterns.md
|
||||
For REST API design and error handling: @docs/api-standards.md
|
||||
For testing strategies and coverage requirements: @test/testing-guidelines.md
|
||||
|
||||
## General Guidelines
|
||||
|
||||
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
|
||||
```
|
||||
|
||||
Cette approche vous permet de :
|
||||
|
||||
- Créez des fichiers de règles modulaires et réutilisables
|
||||
- Partagez des règles entre projets via des liens symboliques ou des sous-modules git
|
||||
- Gardez AGENTS.md concis tout en faisant référence à des directives détaillées
|
||||
- Assurez-vous que opencode charge les fichiers uniquement lorsque cela est nécessaire pour une tâche spécifique.
|
||||
|
||||
:::tip
|
||||
Pour les monorepos ou les projets avec des normes partagées, l'utilisation de `opencode.json` avec des modèles globaux (comme `packages/*/AGENTS.md`) est plus maintenable que les instructions manuelles.
|
||||
:::
|
||||
391
packages/web/src/content/docs/fr/sdk.mdx
Normal file
391
packages/web/src/content/docs/fr/sdk.mdx
Normal file
@@ -0,0 +1,391 @@
|
||||
---
|
||||
title: SDK
|
||||
description: Client JS de type sécurisé pour le serveur opencode.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Le SDK opencode JS/TS fournit un client de type sécurisé pour interagir avec le serveur.
|
||||
Utilisez-le pour créer des intégrations et contrôler opencode par programme.
|
||||
|
||||
[En savoir plus](/docs/server) sur le fonctionnement du serveur. Pour des exemples, consultez les [projects](/docs/ecosystem#projects) construits par la communauté.
|
||||
|
||||
---
|
||||
|
||||
## Installer
|
||||
|
||||
Installez le SDK à partir de npm :
|
||||
|
||||
```bash
|
||||
npm install @opencode-ai/sdk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Créer un client
|
||||
|
||||
Créez une instance de opencode :
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const { client } = await createOpencode()
|
||||
```
|
||||
|
||||
Cela démarre à la fois un serveur et un client
|
||||
|
||||
#### Possibilités
|
||||
|
||||
| Options | Tapez | Descriptif | Par défaut |
|
||||
| ---------- | ------------- | -------------------------------------------------- | ----------- |
|
||||
| `hostname` | `string` | Nom d'hôte du serveur | `127.0.0.1` |
|
||||
| `port` | `number` | Port du serveur | `4096` |
|
||||
| `signal` | `AbortSignal` | Signal d'abandon pour annulation | `undefined` |
|
||||
| `timeout` | `number` | Délai d'attente en ms pour le démarrage du serveur | `5000` |
|
||||
| `config` | `Config` | Objet de configuration | `{}` |
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Vous pouvez transmettre un objet de configuration pour personnaliser le comportement. L'instance récupère toujours votre `opencode.json`, mais vous pouvez remplacer ou ajouter une configuration en ligne :
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const opencode = await createOpencode({
|
||||
hostname: "127.0.0.1",
|
||||
port: 4096,
|
||||
config: {
|
||||
model: "anthropic/claude-3-5-sonnet-20241022",
|
||||
},
|
||||
})
|
||||
|
||||
console.log(`Server running at ${opencode.server.url}`)
|
||||
|
||||
opencode.server.close()
|
||||
```
|
||||
|
||||
## Client uniquement
|
||||
|
||||
Si vous disposez déjà d'une instance en cours d'exécution de opencode, vous pouvez créer une instance client pour vous y connecter :
|
||||
|
||||
```javascript
|
||||
import { createOpencodeClient } from "@opencode-ai/sdk"
|
||||
|
||||
const client = createOpencodeClient({
|
||||
baseUrl: "http://localhost:4096",
|
||||
})
|
||||
```
|
||||
|
||||
#### Possibilités
|
||||
|
||||
| Options | Tapez | Descriptif | Par défaut |
|
||||
| --------------- | ---------- | -------------------------------------------- | ----------------------- |
|
||||
| `baseUrl` | `string` | URL du serveur | `http://localhost:4096` |
|
||||
| `fetch` | `function` | Implémentation de récupération personnalisée | `globalThis.fetch` |
|
||||
| `parseAs` | `string` | Méthode d'analyse des réponses | `auto` |
|
||||
| `responseStyle` | `string` | Style de retour : `data` ou `fields` | `fields` |
|
||||
| `throwOnError` | `boolean` | Lancez des erreurs au lieu de return | `false` |
|
||||
|
||||
---
|
||||
|
||||
## Espèces
|
||||
|
||||
Le SDK inclut des définitions TypeScript pour tous les types API. Importez-les directement :
|
||||
|
||||
```typescript
|
||||
import type { Session, Message, Part } from "@opencode-ai/sdk"
|
||||
```
|
||||
|
||||
Tous les types sont générés à partir de la spécification OpenAPI du serveur et disponibles dans le <a href={typesUrl}>fichier de types</a>.
|
||||
|
||||
---
|
||||
|
||||
## Erreurs
|
||||
|
||||
Le SDK peut générer des erreurs que vous pouvez détecter et gérer :
|
||||
|
||||
```typescript
|
||||
try {
|
||||
await client.session.get({ path: { id: "invalid-id" } })
|
||||
} catch (error) {
|
||||
console.error("Failed to get session:", (error as Error).message)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Apis
|
||||
|
||||
Le SDK expose toutes les API du serveur via un client de type sécurisé.
|
||||
|
||||
---
|
||||
|
||||
### Mondial
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ----------------- | ---------------------------------------- | ------------------------------------ |
|
||||
| `global.health()` | Vérifier l'état et la version du serveur | `{ healthy: true, version: string }` |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
const health = await client.global.health()
|
||||
console.log(health.data.version)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Application
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| -------------- | --------------------------------- | ------------------------------------------- |
|
||||
| `app.log()` | Écrire une entrée de journal | `boolean` |
|
||||
| `app.agents()` | Liste tous les agents disponibles | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Write a log entry
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-app",
|
||||
level: "info",
|
||||
message: "Operation completed",
|
||||
},
|
||||
})
|
||||
|
||||
// List available agents
|
||||
const agents = await client.app.agents()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Projet
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------------- | -------------------------- | -------------------------------------------- |
|
||||
| `project.list()` | Lister tous les projets | <a href={typesUrl}><code>Projet[]</code></a> |
|
||||
| `project.current()` | Obtenir le projet en cours | <a href={typesUrl}><code>Projet</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// List all projects
|
||||
const projects = await client.project.list()
|
||||
|
||||
// Get current project
|
||||
const currentProject = await client.project.current()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Chemin
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------ | ------------------------ | ------------------------------------------ |
|
||||
| `path.get()` | Obtenir le chemin actuel | <a href={typesUrl}><code>Chemin</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Get current path information
|
||||
const pathInfo = await client.path.get()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Configuration
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| -------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `config.get()` | Obtenir des informations de configuration | <a href={typesUrl}><code>Configuration</code></a> |
|
||||
| `config.providers()` | Liste des fournisseurs et modèles par défaut | `{ providers: `<a href={typesUrl}><code>Fournisseur[]</code></a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
const config = await client.config.get()
|
||||
|
||||
const { providers, default: defaults } = await client.config.providers()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Séances
|
||||
|
||||
| Méthode | Descriptif | Remarques |
|
||||
| ---------------------------------------------------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | Liste des séances | Renvoie <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | Obtenir une session | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.children({ path })` | Liste des sessions enfants | Renvoie <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.create({ body })` | Créer une séance | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.delete({ path })` | Supprimer la séance | Renvoie `boolean` |
|
||||
| `session.update({ path, body })` | Mettre à jour les propriétés de la session | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.init({ path, body })` | Analysez l'application et créez `AGENTS.md` | Renvoie `boolean` |
|
||||
| `session.abort({ path })` | Abandonner une session en cours | Renvoie `boolean` |
|
||||
| `session.share({ path })` | Séance de partage | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unshare({ path })` | Annuler le partage de la session | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.summarize({ path, body })` | Résumer la séance | Renvoie `boolean` |
|
||||
| `session.messages({ path })` | Liste des messages dans une session | Renvoie `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
|
||||
| `session.message({ path })` | Obtenir les détails du message | Renvoie `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.prompt({ path, body })` | Envoyer un message d'invite | `body.noReply: true` renvoie UserMessage (contexte uniquement). La valeur par défaut renvoie <a href={typesUrl}><code>AssistantMessage</code></a> avec réponse IA |
|
||||
| `session.command({ path, body })` | Envoyer la commande à la session | Renvoie `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
|
||||
| `session.shell({ path, body })` | Exécuter une commande shell | Renvoie <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | Rétablir un message | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `session.unrevert({ path })` | Restaurer les messages annulés | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Répondre à une demande d'autorisation | Renvoie `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Create and manage sessions
|
||||
const session = await client.session.create({
|
||||
body: { title: "My session" },
|
||||
})
|
||||
|
||||
const sessions = await client.session.list()
|
||||
|
||||
// Send a prompt message
|
||||
const result = await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
|
||||
parts: [{ type: "text", text: "Hello!" }],
|
||||
},
|
||||
})
|
||||
|
||||
// Inject context without triggering AI response (useful for plugins)
|
||||
await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
noReply: true,
|
||||
parts: [{ type: "text", text: "You are a helpful assistant." }],
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Fichiers
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `find.text({ query })` | Rechercher du texte dans des fichiers | Tableau d'objets correspondant avec `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `find.files({ query })` | Rechercher des fichiers et des répertoires par nom | `string[]` (chemins) |
|
||||
| `find.symbols({ query })` | Rechercher des symboles d'espace de travail | <a href={typesUrl}><code>Symbole[]</code></a> |
|
||||
| `file.read({ query })` | Lire un fichier | `{ type: "raw" \| "patch", content: string }` |
|
||||
| `file.status({ query? })` | Obtenir le statut des fichiers suivis | <a href={typesUrl}><code>Fichier[]</code></a> |
|
||||
|
||||
`find.files` prend en charge quelques champs de requête facultatifs :
|
||||
|
||||
- `type` : `"file"` ou `"directory"`
|
||||
- `directory` : remplace la racine du projet pour la recherche
|
||||
- `limit` : résultats maximum (1 à 200)
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Search and read files
|
||||
const textResults = await client.find.text({
|
||||
query: { pattern: "function.*opencode" },
|
||||
})
|
||||
|
||||
const files = await client.find.files({
|
||||
query: { query: "*.ts", type: "file" },
|
||||
})
|
||||
|
||||
const directories = await client.find.files({
|
||||
query: { query: "packages", type: "directory", limit: 20 },
|
||||
})
|
||||
|
||||
const content = await client.file.read({
|
||||
query: { path: "src/index.ts" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------------------------ | ---------------------------------- | --------- |
|
||||
| `tui.appendPrompt({ body })` | Ajouter du texte à l'invite | `boolean` |
|
||||
| `tui.openHelp()` | Ouvrir la boîte de dialogue d'aide | `boolean` |
|
||||
| `tui.openSessions()` | Ouvrez le sélecteur de session | `boolean` |
|
||||
| `tui.openThemes()` | Ouvrez le sélecteur de thème | `boolean` |
|
||||
| `tui.openModels()` | Ouvrez le sélecteur de modèle | `boolean` |
|
||||
| `tui.submitPrompt()` | Soumettre l'invite actuelle | `boolean` |
|
||||
| `tui.clearPrompt()` | Effacez l'invite | `boolean` |
|
||||
| `tui.executeCommand({ body })` | Exécuter une commande | `boolean` |
|
||||
| `tui.showToast({ body })` | Afficher la notification toast | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Control TUI interface
|
||||
await client.tui.appendPrompt({
|
||||
body: { text: "Add this to prompt" },
|
||||
})
|
||||
|
||||
await client.tui.showToast({
|
||||
body: { message: "Task completed", variant: "success" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Authentification
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------------- | ------------------------------------------- | --------- |
|
||||
| `auth.set({ ... })` | Définir les informations d'authentification | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
await client.auth.set({
|
||||
path: { id: "anthropic" },
|
||||
body: { type: "api", key: "your-api-key" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Événements
|
||||
|
||||
| Méthode | Descriptif | Réponse |
|
||||
| ------------------- | ---------------------------------------- | ---------------------------------------- |
|
||||
| `event.subscribe()` | Flux d'événements envoyés par le serveur | Flux d'événements envoyés par le serveur |
|
||||
|
||||
---
|
||||
|
||||
#### Exemples
|
||||
|
||||
```javascript
|
||||
// Listen to real-time events
|
||||
const events = await client.event.subscribe()
|
||||
for await (const event of events.stream) {
|
||||
console.log("Event:", event.type, event.properties)
|
||||
}
|
||||
```
|
||||
287
packages/web/src/content/docs/fr/server.mdx
Normal file
287
packages/web/src/content/docs/fr/server.mdx
Normal file
@@ -0,0 +1,287 @@
|
||||
---
|
||||
title: Serveur
|
||||
description: Interagissez avec le serveur opencode via HTTP.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
La commande `opencode serve` exécute un serveur HTTP sans tête qui expose un point de terminaison OpenAPI qu'un client opencode peut utiliser.
|
||||
|
||||
---
|
||||
|
||||
### Usage
|
||||
|
||||
```bash
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### Possibilités
|
||||
|
||||
| Drapeau | Descriptif | Par défaut |
|
||||
| --------------- | -------------------------------------------------- | ---------------- |
|
||||
| `--port` | Port à écouter sur | `4096` |
|
||||
| `--hostname` | Nom d'hôte sur lequel écouter | `127.0.0.1` |
|
||||
| `--mdns` | Activer la découverte mDNS | `false` |
|
||||
| `--mdns-domain` | Nom de domaine personnalisé pour le service mDNS | `opencode.local` |
|
||||
| `--cors` | Origines de navigateur supplémentaires à autoriser | `[]` |
|
||||
|
||||
`--cors` peut être transmis plusieurs fois :
|
||||
|
||||
```bash
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Authentification
|
||||
|
||||
Définissez `OPENCODE_SERVER_PASSWORD` pour protéger le serveur avec l'authentification de base HTTP. Le nom d'utilisateur est par défaut `opencode`, ou définissez `OPENCODE_SERVER_USERNAME` pour le remplacer. Cela s’applique à la fois à `opencode serve` et à `opencode web`.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Comment ça marche
|
||||
|
||||
Lorsque vous exécutez `opencode`, il démarre un TUI et un serveur. Où le TUI est le
|
||||
client qui parle au serveur. Le serveur expose une spécification OpenAPI 3.1
|
||||
point final. Ce point de terminaison est également utilisé pour générer un [SDK](/docs/sdk).
|
||||
|
||||
:::tip
|
||||
Utilisez le serveur opencode pour interagir avec opencode par programmation.
|
||||
:::
|
||||
|
||||
Cette architecture permet à opencode de prendre en charge plusieurs clients et vous permet d'interagir avec opencode par programme.
|
||||
|
||||
Vous pouvez exécuter `opencode serve` pour démarrer un serveur autonome. Si vous avez le
|
||||
opencode TUI en cours d'exécution, `opencode serve` démarrera un nouveau serveur.
|
||||
|
||||
---
|
||||
|
||||
#### Connectez-vous à un serveur existant
|
||||
|
||||
Lorsque vous démarrez le TUI, il attribue de manière aléatoire un port et un nom d'hôte. Vous pouvez à la place transmettre les `--hostname` et `--port` [flags](/docs/cli). Utilisez-le ensuite pour vous connecter à son serveur.
|
||||
|
||||
Le point de terminaison [`/tui`](#tui) peut être utilisé pour piloter le TUI via le serveur. Par exemple, vous pouvez pré-remplir ou exécuter une invite. Cette configuration est utilisée par les plugins OpenCode [IDE](/docs/ide).
|
||||
|
||||
---
|
||||
|
||||
## Spécification
|
||||
|
||||
Le serveur publie une spécification OpenAPI 3.1 qui peut être consultée à l'adresse :
|
||||
|
||||
```
|
||||
http://<hostname>:<port>/doc
|
||||
```
|
||||
|
||||
Par exemple, `http://localhost:4096/doc`. Utilisez la spécification pour générer des clients ou inspecter les types de requêtes et de réponses. Ou visualisez-le dans un explorateur Swagger.
|
||||
|
||||
---
|
||||
|
||||
## Apis
|
||||
|
||||
Le serveur opencode expose les API suivantes.
|
||||
|
||||
---
|
||||
|
||||
### Mondial
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ---------------- | ------------------------------------------ | ------------------------------------ |
|
||||
| `GET` | `/global/health` | Obtenir l'état et la version du serveur | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Obtenez des événements mondiaux (flux SSE) | Flux d'événements |
|
||||
|
||||
---
|
||||
|
||||
### Projet
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------------ | -------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/project` | Lister tous les projets | <a href={typesUrl}><code>Projet[]</code></a> |
|
||||
| `GET` | `/project/current` | Obtenez le projet en cours | <a href={typesUrl}><code>Projet</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Chemin et VCS
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------- | ---------------------------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/path` | Obtenir le chemin actuel | <a href={typesUrl}><code>Chemin</code></a> |
|
||||
| `GET` | `/vcs` | Obtenir des informations VCS pour le projet en cours | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Exemple
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------------- | ----------------------------- | --------- |
|
||||
| `POST` | `/instance/dispose` | Supprimer l'instance actuelle | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Configuration
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Obtenir des informations de configuration | <a href={typesUrl}><code>Configuration</code></a> |
|
||||
| `PATCH` | `/config` | Mettre à jour la configuration | <a href={typesUrl}><code>Configuration</code></a> |
|
||||
| `GET` | `/config/providers` | Liste des fournisseurs et modèles par défaut | `{ providers: `<a href={typesUrl}>Fournisseur[]</a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
### Fournisseur
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | -------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | Liste de tous les fournisseurs | `{ all: `<a href={typesUrl}>Fournisseur[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Obtenir les méthodes d'authentification du fournisseur | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | Autoriser un fournisseur en utilisant OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | Gérer le rappel OAuth pour un fournisseur | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Séances
|
||||
|
||||
| Méthode | Chemin | Descriptif | Remarques |
|
||||
| -------- | ---------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/session` | Liste toutes les sessions | Renvoie <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Créer une nouvelle session | corps : `{ parentID?, title? }`, renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/status` | Obtenir l'état de la session pour toutes les sessions | Renvoie `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | Obtenez les détails de la session | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id` | Supprimer une session et toutes ses données | Renvoie `boolean` |
|
||||
| `PATCH` | `/session/:id` | Mettre à jour les propriétés de la session | corps : `{ title? }`, renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/children` | Obtenir les sessions enfants d'une session | Renvoie <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | Obtenez la liste de tâches pour une session | Renvoie <a href={typesUrl}><code>Todo[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | Analysez l'application et créez `AGENTS.md` | corps : `{ messageID, providerID, modelID }`, renvoie `boolean` |
|
||||
| `POST` | `/session/:id/fork` | Forkez une session existante à un message | corps : `{ messageID? }`, renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `POST` | `/session/:id/abort` | Abandonner une session en cours | Renvoie `boolean` |
|
||||
| `POST` | `/session/:id/share` | Partager une séance | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | Annuler le partage d'une session | Renvoie <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/diff` | Obtenez le diff pour cette session | requête : `messageID?`, renvoie <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `POST` | `/session/:id/summarize` | Résumer la séance | corps : `{ providerID, modelID }`, renvoie `boolean` |
|
||||
| `POST` | `/session/:id/revert` | Rétablir un message | corps : `{ messageID, partID? }`, renvoie `boolean` |
|
||||
| `POST` | `/session/:id/unrevert` | Restaurer tous les messages annulés | Renvoie `boolean` |
|
||||
| `POST` | `/session/:id/permissions/:permissionID` | Répondre à une demande d'autorisation | corps : `{ response, remember? }`, renvoie `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Messages
|
||||
|
||||
| Méthode | Chemin | Descriptif | Remarques |
|
||||
| ------- | --------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session/:id/message` | Liste des messages dans une session | requête : `limit?`, renvoie `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Envoyer un message et attendre une réponse | corps : `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, renvoie `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | Obtenir les détails du message | Renvoie `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | Envoyer un message de manière asynchrone (pas d'attente) | body : identique à `/session/:id/message`, renvoie `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | Exécuter une commande slash | corps : `{ messageID?, agent?, model?, command, arguments }`, renvoie `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | Exécuter une commande shell | corps : `{ agent, model?, command }`, renvoie `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
|
||||
---
|
||||
|
||||
### Commandes
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ---------- | -------------------------- | --------------------------------------------- |
|
||||
| `GET` | `/command` | Liste toutes les commandes | <a href={typesUrl}><code>Command[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Fichiers
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/find?pattern=<pat>` | Rechercher du texte dans des fichiers | Tableau d'objets correspondant avec `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Rechercher des fichiers et des répertoires par nom | `string[]` (chemins) |
|
||||
| `GET` | `/find/symbol?query=<q>` | Rechercher des symboles d'espace de travail | <a href={typesUrl}><code>Symbole[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | Liste des fichiers et répertoires | <a href={typesUrl}><code>FileNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | Lire un fichier | <a href={typesUrl}><code>FileContent</code></a> |
|
||||
| `GET` | `/file/status` | Obtenir le statut des fichiers suivis | <a href={typesUrl}><code>Fichier[]</code></a> |
|
||||
|
||||
#### Paramètres de requête `/find/file`
|
||||
|
||||
- `query` (obligatoire) — chaîne de recherche (correspondance floue)
|
||||
- `type` (facultatif) — limiter les résultats à `"file"` ou `"directory"`
|
||||
- `directory` (facultatif) — remplace la racine du projet pour la recherche
|
||||
- `limit` (facultatif) — résultats maximum (1 à 200)
|
||||
- `dirs` (facultatif) — indicateur hérité (`"false"` renvoie uniquement les fichiers)
|
||||
|
||||
---
|
||||
|
||||
### Outils (expérimentaux)
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | Répertorier tous les ID d'outils | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | Répertorier les outils avec des schémas JSON pour un modèle | <a href={typesUrl}><code>Liste d'outils</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### LSP, formateurs et MCP
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------------ | ------------------------------------ | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Obtenir l'état du serveur LSP | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Obtenir le statut du formateur | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | Obtenir l'état du serveur MCP | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | Ajouter dynamiquement le serveur MCP | corps : `{ name, config }`, renvoie l'objet d'état MCP |
|
||||
|
||||
---
|
||||
|
||||
### Agents
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | -------- | --------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/agent` | Liste tous les agents disponibles | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Enregistrement
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------ | --------------------------------------------------------------------------- | --------- |
|
||||
| `POST` | `/log` | Écrire une entrée de journal. Corps : `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ----------------------- | -------------------------------------------------- | ---------------------------- |
|
||||
| `POST` | `/tui/append-prompt` | Ajouter du texte à l'invite | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Ouvrir la boîte de dialogue d'aide | `boolean` |
|
||||
| `POST` | `/tui/open-sessions` | Ouvrez le sélecteur de session | `boolean` |
|
||||
| `POST` | `/tui/open-themes` | Ouvrez le sélecteur de thème | `boolean` |
|
||||
| `POST` | `/tui/open-models` | Ouvrez le sélecteur de modèle | `boolean` |
|
||||
| `POST` | `/tui/submit-prompt` | Soumettre l'invite actuelle | `boolean` |
|
||||
| `POST` | `/tui/clear-prompt` | Effacez l'invite | `boolean` |
|
||||
| `POST` | `/tui/execute-command` | Exécuter une commande (`{ command }`) | `boolean` |
|
||||
| `POST` | `/tui/show-toast` | Afficher le toast (`{ title?, message, variant }`) | `boolean` |
|
||||
| `GET` | `/tui/control/next` | Attendre la prochaine demande de contrôle | Objet de demande de contrôle |
|
||||
| `POST` | `/tui/control/response` | Répondre à une demande de contrôle (`{ body }`) | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Authentification
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ----------- | --------------------------------------------------------------------------------------------------- | --------- |
|
||||
| `PUT` | `/auth/:id` | Définissez les informations d'authentification. Le corps doit correspondre au schéma du fournisseur | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Événements
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | -------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
|
||||
| `GET` | `/event` | Flux d’événements envoyés par le serveur. Le premier événement est `server.connected`, puis les événements de bus | Flux d'événements envoyés par le serveur |
|
||||
|
||||
---
|
||||
|
||||
### Documents
|
||||
|
||||
| Méthode | Chemin | Descriptif | Réponse |
|
||||
| ------- | ------ | ------------------------- | ------------------------------------ |
|
||||
| `GET` | `/doc` | Spécification OpenAPI 3.1 | Page HTML avec spécification OpenAPI |
|
||||
128
packages/web/src/content/docs/fr/share.mdx
Normal file
128
packages/web/src/content/docs/fr/share.mdx
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: Partager
|
||||
description: Partagez vos conversations OpenCode.
|
||||
---
|
||||
|
||||
La fonctionnalité de partage de OpenCode vous permet de créer des liens publics vers vos conversations OpenCode, afin que vous puissiez collaborer avec vos coéquipiers ou obtenir de l'aide d'autres personnes.
|
||||
|
||||
:::note
|
||||
Les conversations partagées sont accessibles publiquement à toute personne disposant du lien.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Comment ça marche
|
||||
|
||||
Lorsque vous partagez une conversation, OpenCode :
|
||||
|
||||
1. Crée un URL public unique pour votre session
|
||||
2. Synchronise l'historique de vos conversations avec nos serveurs
|
||||
3. Rend la conversation accessible via le lien partageable — `opncd.ai/s/<share-id>`
|
||||
|
||||
---
|
||||
|
||||
## Partage
|
||||
|
||||
OpenCode prend en charge trois modes de partage qui contrôlent la manière dont les conversations sont partagées :
|
||||
|
||||
---
|
||||
|
||||
### Manuel (par défaut)
|
||||
|
||||
Par défaut, OpenCode utilise le mode de partage manuel. Les sessions ne sont pas partagées automatiquement, mais vous pouvez les partager manuellement à l'aide de la commande `/share` :
|
||||
|
||||
```
|
||||
/share
|
||||
```
|
||||
|
||||
Cela générera un URL unique qui sera copié dans votre presse-papiers.
|
||||
|
||||
Pour définir explicitement le mode manuel dans votre [fichier de configuration](/docs/config) :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Partage automatique
|
||||
|
||||
Vous pouvez activer le partage automatique pour toutes les nouvelles conversations en définissant l'option `share` sur `"auto"` dans votre [fichier de configuration](/docs/config) :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
Avec le partage automatique activé, chaque nouvelle conversation sera automatiquement partagée et un lien sera généré.
|
||||
|
||||
---
|
||||
|
||||
### Désactivé
|
||||
|
||||
Vous pouvez désactiver entièrement le partage en définissant l'option `share` sur `"disabled"` dans votre [fichier de configuration](/docs/config) :
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
Pour appliquer cela au sein de votre équipe pour un projet donné, ajoutez-le au `opencode.json` dans votre projet et enregistrez-vous dans Git.
|
||||
|
||||
---
|
||||
|
||||
## Annuler le partage
|
||||
|
||||
Pour arrêter de partager une conversation et la supprimer de l'accès public :
|
||||
|
||||
```
|
||||
/unshare
|
||||
```
|
||||
|
||||
Cela supprimera le lien de partage et supprimera les données liées à la conversation.
|
||||
|
||||
---
|
||||
|
||||
## Confidentialité
|
||||
|
||||
Il y a quelques points à garder à l’esprit lorsque vous partagez une conversation.
|
||||
|
||||
---
|
||||
|
||||
### Conservation des données
|
||||
|
||||
Les conversations partagées restent accessibles jusqu'à ce que vous les annuliez explicitement. Ce
|
||||
comprend :
|
||||
|
||||
- Historique complet des conversations
|
||||
- Tous les messages et réponses
|
||||
- Métadonnées de session
|
||||
|
||||
---
|
||||
|
||||
### Recommandations
|
||||
|
||||
- Partagez uniquement les conversations qui ne contiennent pas d'informations sensibles.
|
||||
- Examinez le contenu de la conversation avant de la partager.
|
||||
- Annulez le partage des conversations une fois la collaboration terminée.
|
||||
- Évitez de partager des conversations avec du code propriétaire ou des données confidentielles.
|
||||
- Pour les projets sensibles, désactivez complètement le partage.
|
||||
|
||||
---
|
||||
|
||||
## Pour les entreprises
|
||||
|
||||
Pour les déploiements en entreprise, la fonctionnalité de partage peut être :
|
||||
|
||||
- **Désactivé** entièrement pour des raisons de conformité en matière de sécurité
|
||||
- **Réservé** aux utilisateurs authentifiés via SSO uniquement
|
||||
- **Auto-hébergé** sur votre propre infrastructure
|
||||
|
||||
[En savoir plus](/docs/enterprise) sur l'utilisation de opencode dans votre organisation.
|
||||
222
packages/web/src/content/docs/fr/skills.mdx
Normal file
222
packages/web/src/content/docs/fr/skills.mdx
Normal file
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: "Compétences des agents"
|
||||
description: "Définir un comportement réutilisable via les définitions SKILL.md"
|
||||
---
|
||||
|
||||
Les compétences d'agent permettent à OpenCode de découvrir des instructions réutilisables à partir de votre dépôt ou de votre répertoire personnel.
|
||||
Les compétences sont chargées à la demande via l'outil natif `skill` : les agents voient les compétences disponibles et peuvent charger le contenu complet en cas de besoin.
|
||||
|
||||
---
|
||||
|
||||
## Placer des fichiers
|
||||
|
||||
Créez un dossier par nom de compétence et insérez-y un `SKILL.md`.
|
||||
OpenCode recherche ces emplacements :
|
||||
|
||||
- Configuration du projet : `.opencode/skills/<name>/SKILL.md`
|
||||
- Configuration globale : `~/.config/opencode/skills/<name>/SKILL.md`
|
||||
- Compatible Projet Claude : `.claude/skills/<name>/SKILL.md`
|
||||
- Compatible Global Claude : `~/.claude/skills/<name>/SKILL.md`
|
||||
- Compatible avec l'agent de projet : `.agents/skills/<name>/SKILL.md`
|
||||
- Compatible avec les agents globaux : `~/.agents/skills/<name>/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## Comprendre la découverte
|
||||
|
||||
Pour les chemins locaux du projet, OpenCode remonte de votre répertoire de travail actuel jusqu'à ce qu'il atteigne l'arbre de travail git.
|
||||
Il charge tout `skills/*/SKILL.md` correspondant dans `.opencode/` et tout `.claude/skills/*/SKILL.md` ou `.agents/skills/*/SKILL.md` correspondant en cours de route.
|
||||
|
||||
Les définitions globales sont également chargées à partir de `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` et `~/.agents/skills/*/SKILL.md`.
|
||||
|
||||
---
|
||||
|
||||
## Écrire un texte de présentation
|
||||
|
||||
Chaque `SKILL.md` doit commencer par YAML frontmatter.
|
||||
Seuls ces champs sont reconnus :
|
||||
|
||||
- `name` (obligatoire)
|
||||
- `description` (obligatoire)
|
||||
- `license` (facultatif)
|
||||
- `compatibility` (facultatif)
|
||||
- `metadata` (facultatif, mappage chaîne à chaîne)
|
||||
|
||||
Les champs de contenu inconnus sont ignorés.
|
||||
|
||||
---
|
||||
|
||||
## Valider les noms
|
||||
|
||||
`name` doit :
|
||||
|
||||
- Comprenant entre 1 et 64 caractères
|
||||
- Être alphanumérique en minuscules avec des séparateurs à tiret unique
|
||||
- Ne commence ni ne termine par `-`
|
||||
- Ne contient pas de `--` consécutifs
|
||||
- Faites correspondre le nom du répertoire qui contient `SKILL.md`
|
||||
|
||||
Expression régulière équivalente :
|
||||
|
||||
```text
|
||||
^[a-z0-9]+(-[a-z0-9]+)*$
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Suivez les règles de longueur
|
||||
|
||||
`description` doit comporter entre 1 et 1 024 caractères.
|
||||
Gardez-le suffisamment précis pour que l'agent puisse choisir correctement.
|
||||
|
||||
---
|
||||
|
||||
## Utiliser un exemple
|
||||
|
||||
Créez `.opencode/skills/git-release/SKILL.md` comme ceci :
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: git-release
|
||||
description: Create consistent releases and changelogs
|
||||
license: MIT
|
||||
compatibility: opencode
|
||||
metadata:
|
||||
audience: maintainers
|
||||
workflow: github
|
||||
---
|
||||
|
||||
## What I do
|
||||
|
||||
- Draft release notes from merged PRs
|
||||
- Propose a version bump
|
||||
- Provide a copy-pasteable `gh release create` command
|
||||
|
||||
## When to use me
|
||||
|
||||
Use this when you are preparing a tagged release.
|
||||
Ask clarifying questions if the target versioning scheme is unclear.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reconnaître la description de l'outil
|
||||
|
||||
OpenCode répertorie les compétences disponibles dans la description de l'outil `skill`.
|
||||
Chaque entrée comprend le nom et la description de la compétence :
|
||||
|
||||
```xml
|
||||
<available_skills>
|
||||
<skill>
|
||||
<name>git-release</name>
|
||||
<description>Create consistent releases and changelogs</description>
|
||||
</skill>
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
L'agent charge une compétence en appelant l'outil :
|
||||
|
||||
```
|
||||
skill({ name: "git-release" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configurer les autorisations
|
||||
|
||||
Contrôlez les compétences auxquelles les agents peuvent accéder à l'aide d'autorisations basées sur des modèles dans `opencode.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"skill": {
|
||||
"*": "allow",
|
||||
"pr-review": "allow",
|
||||
"internal-*": "deny",
|
||||
"experimental-*": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Autorisation | Comportement |
|
||||
| ---------- | ----------------------------------------- |
|
||||
| `allow` | Les compétences se chargent immédiatement |
|
||||
| `deny` | Compétence masquée à l'agent, accès refusé |
|
||||
| `ask` | L'utilisateur est invité à donner son approbation avant le chargement |
|
||||
|
||||
Les modèles prennent en charge les caractères génériques : `internal-*` correspond à `internal-docs`, `internal-tools`, etc.
|
||||
|
||||
---
|
||||
|
||||
## Remplacement par agent
|
||||
|
||||
Accordez à des agents spécifiques des autorisations différentes de celles par défaut globales.
|
||||
|
||||
**Pour les agents personnalisés** (dans la rubrique Agent) :
|
||||
|
||||
```yaml
|
||||
---
|
||||
permission:
|
||||
skill:
|
||||
"documents-*": "allow"
|
||||
---
|
||||
```
|
||||
|
||||
**Pour les agents intégrés** (dans `opencode.json`) :
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"permission": {
|
||||
"skill": {
|
||||
"internal-*": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Désactiver l'outil de compétences
|
||||
|
||||
Désactivez complètement les compétences pour les agents qui ne devraient pas les utiliser :
|
||||
|
||||
**Pour les agents personnalisés** :
|
||||
|
||||
```yaml
|
||||
---
|
||||
tools:
|
||||
skill: false
|
||||
---
|
||||
```
|
||||
|
||||
**Pour les agents intégrés** :
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"skill": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Lorsqu'elle est désactivée, la section `<available_skills>` est entièrement omise.
|
||||
|
||||
---
|
||||
|
||||
## Dépanner le chargement
|
||||
|
||||
Si une compétence n'apparaît pas :
|
||||
|
||||
1. Vérifiez que `SKILL.md` est écrit en majuscules
|
||||
2. Vérifiez que le frontmatter inclut `name` et `description`
|
||||
3. Assurez-vous que les noms des compétences sont uniques sur tous les sites
|
||||
4. Vérifiez les autorisations : les compétences avec `deny` sont masquées aux agents
|
||||
369
packages/web/src/content/docs/fr/themes.mdx
Normal file
369
packages/web/src/content/docs/fr/themes.mdx
Normal file
@@ -0,0 +1,369 @@
|
||||
---
|
||||
title: Thèmes
|
||||
description: Sélectionnez un thème intégré ou définissez le vôtre.
|
||||
---
|
||||
|
||||
Avec OpenCode, vous pouvez choisir parmi plusieurs thèmes intégrés, utiliser un thème qui s'adapte au thème de votre terminal ou définir votre propre thème personnalisé.
|
||||
|
||||
Par défaut, OpenCode utilise notre propre thème `opencode`.
|
||||
|
||||
---
|
||||
|
||||
## Exigences des terminaux
|
||||
|
||||
Pour que les thèmes s'affichent correctement avec leur palette de couleurs complète, votre terminal doit prendre en charge **truecolor** (couleur 24 bits). La plupart des terminaux modernes le prennent en charge par défaut, mais vous devrez peut-être l'activer :
|
||||
|
||||
- **Vérifiez le support** : Exécutez `echo $COLORTERM` - il devrait afficher `truecolor` ou `24bit`
|
||||
- **Activer truecolor** : définissez la variable d'environnement `COLORTERM=truecolor` dans votre profil shell
|
||||
- **Compatibilité des terminaux** : assurez-vous que votre émulateur de terminal prend en charge les couleurs 24 bits (la plupart des terminaux modernes comme iTerm2, Alacritty, Kitty, Windows Terminal et les versions récentes de GNOME Terminal le font)
|
||||
|
||||
Sans la prise en charge de TrueColor, les thèmes peuvent apparaître avec une précision des couleurs réduite ou revenir à l'approximation de 256 couleurs la plus proche.
|
||||
|
||||
---
|
||||
|
||||
## Thèmes intégrés
|
||||
|
||||
OpenCode est livré avec plusieurs thèmes intégrés.
|
||||
|
||||
| Nom | Descriptif |
|
||||
| ---------------------- | ---------------------------------------------------------------------------- |
|
||||
| `system` | S'adapte à la couleur de fond de votre terminal |
|
||||
| `tokyonight` | Basé sur le thème [Tokyonight](https://github.com/folke/tokyonight.nvim) |
|
||||
| `everforest` | Basé sur le thème [Everforest](https://github.com/sainnhe/everforest) |
|
||||
| `ayu` | Basé sur le thème sombre [Ayu](https://github.com/ayu-theme) |
|
||||
| `catppuccin` | Basé sur le thème [Catppuccin](https://github.com/catppuccin) |
|
||||
| `catppuccin-macchiato` | Basé sur le thème [Catppuccin](https://github.com/catppuccin) |
|
||||
| `gruvbox` | Basé sur le thème [Gruvbox](https://github.com/morhetz/gruvbox) |
|
||||
| `kanagawa` | Basé sur le thème [Kanagawa](https://github.com/rebelot/kanagawa.nvim) |
|
||||
| `nord` | Basé sur le thème [Nord](https://github.com/nordtheme/nord) |
|
||||
| `matrix` | Vert style hacker sur thème noir |
|
||||
| `one-dark` | Basé sur le thème [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark |
|
||||
|
||||
De plus, nous ajoutons constamment de nouveaux thèmes.
|
||||
|
||||
---
|
||||
|
||||
## Thème système
|
||||
|
||||
Le thème `system` est conçu pour s'adapter automatiquement à la palette de couleurs de votre terminal. Contrairement aux thèmes traditionnels qui utilisent des couleurs fixes, le thème _system_ :
|
||||
|
||||
- **Génère une échelle de gris** : crée une échelle de gris personnalisée basée sur la couleur d'arrière-plan de votre terminal, garantissant un contraste optimal.
|
||||
- **Utilise les couleurs ANSI** : exploite les couleurs ANSI standard (0-15) pour la coloration syntaxique et les éléments de l'interface utilisateur, qui respectent la palette de couleurs de votre terminal.
|
||||
- **Préserve les paramètres par défaut du terminal** : utilise `none` pour les couleurs du texte et de l'arrière-plan afin de conserver l'apparence native de votre terminal.
|
||||
|
||||
Le thème système est destiné aux utilisateurs qui :
|
||||
|
||||
- Vous souhaitez que OpenCode corresponde à l'apparence de leur terminal
|
||||
- Utiliser des schémas de couleurs de terminal personnalisés
|
||||
- Préférez une apparence cohérente sur toutes les applications de terminal
|
||||
|
||||
---
|
||||
|
||||
## Utiliser un thème
|
||||
|
||||
Vous pouvez sélectionner un thème en affichant la sélection de thème avec la commande `/theme`. Ou vous pouvez le spécifier dans votre [config](/docs/config).
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Thèmes personnalisés
|
||||
|
||||
OpenCode prend en charge un système de thèmes flexible basé sur JSON qui permet aux utilisateurs de créer et de personnaliser facilement des thèmes.
|
||||
|
||||
---
|
||||
|
||||
### Hiérarchie
|
||||
|
||||
Les thèmes sont chargés à partir de plusieurs répertoires dans l'ordre suivant, les répertoires ultérieurs remplaçant les précédents :
|
||||
|
||||
1. **Thèmes intégrés** - Ceux-ci sont intégrés au binaire
|
||||
2. **Répertoire de configuration utilisateur** - Défini dans `~/.config/opencode/themes/*.json` ou `$XDG_CONFIG_HOME/opencode/themes/*.json`
|
||||
3. **Répertoire racine du projet** - Défini dans `<project-root>/.opencode/themes/*.json`
|
||||
4. **Répertoire de travail actuel** - Défini dans `./.opencode/themes/*.json`
|
||||
|
||||
Si plusieurs répertoires contiennent un thème portant le même nom, le thème du répertoire ayant la priorité la plus élevée sera utilisé.
|
||||
|
||||
---
|
||||
|
||||
### Création d'un thème
|
||||
|
||||
Pour créer un thème personnalisé, créez un fichier JSON dans l'un des répertoires de thème.
|
||||
|
||||
Pour les thèmes à l’échelle de l’utilisateur :
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p ~/.config/opencode/themes
|
||||
vim ~/.config/opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
Et pour des thèmes spécifiques au projet.
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p .opencode/themes
|
||||
vim .opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Format JSON
|
||||
|
||||
Les thèmes utilisent un format JSON flexible avec prise en charge de :
|
||||
|
||||
- **Couleurs hexadécimales** : `"#ffffff"`
|
||||
- **Couleurs ANSI** : `3` (0-255)
|
||||
- **Références de couleurs** : `"primary"` ou définitions personnalisées
|
||||
- **Variantes sombre/clair** : `{"dark": "#000", "light": "#fff"}`
|
||||
- **Aucune couleur** : `"none"` - Utilise la couleur par défaut du terminal ou le transparent
|
||||
|
||||
---
|
||||
|
||||
### Définitions des couleurs
|
||||
|
||||
La section `defs` est facultative et elle permet de définir des couleurs réutilisables pouvant être référencées dans le thème.
|
||||
|
||||
---
|
||||
|
||||
### Paramètres par défaut du terminal
|
||||
|
||||
La valeur spéciale `"none"` peut être utilisée pour n'importe quelle couleur afin d'hériter de la couleur par défaut du terminal. Ceci est particulièrement utile pour créer des thèmes qui se fondent parfaitement dans la palette de couleurs de votre terminal :
|
||||
|
||||
- `"text": "none"` - Utilise la couleur de premier plan par défaut du terminal
|
||||
- `"background": "none"` - Utilise la couleur d'arrière-plan par défaut du terminal
|
||||
|
||||
---
|
||||
|
||||
### Exemple
|
||||
|
||||
Voici un exemple de thème personnalisé :
|
||||
|
||||
```json title="my-theme.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/theme.json",
|
||||
"defs": {
|
||||
"nord0": "#2E3440",
|
||||
"nord1": "#3B4252",
|
||||
"nord2": "#434C5E",
|
||||
"nord3": "#4C566A",
|
||||
"nord4": "#D8DEE9",
|
||||
"nord5": "#E5E9F0",
|
||||
"nord6": "#ECEFF4",
|
||||
"nord7": "#8FBCBB",
|
||||
"nord8": "#88C0D0",
|
||||
"nord9": "#81A1C1",
|
||||
"nord10": "#5E81AC",
|
||||
"nord11": "#BF616A",
|
||||
"nord12": "#D08770",
|
||||
"nord13": "#EBCB8B",
|
||||
"nord14": "#A3BE8C",
|
||||
"nord15": "#B48EAD"
|
||||
},
|
||||
"theme": {
|
||||
"primary": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"secondary": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"accent": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"error": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"warning": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"success": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"info": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"text": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"textMuted": {
|
||||
"dark": "nord3",
|
||||
"light": "nord1"
|
||||
},
|
||||
"background": {
|
||||
"dark": "nord0",
|
||||
"light": "nord6"
|
||||
},
|
||||
"backgroundPanel": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"backgroundElement": {
|
||||
"dark": "nord1",
|
||||
"light": "nord4"
|
||||
},
|
||||
"border": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"borderActive": {
|
||||
"dark": "nord3",
|
||||
"light": "nord2"
|
||||
},
|
||||
"borderSubtle": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffContext": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHunkHeader": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHighlightAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffHighlightRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffAddedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffContextBg": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"diffLineNumber": {
|
||||
"dark": "nord2",
|
||||
"light": "nord4"
|
||||
},
|
||||
"diffAddedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"markdownText": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"markdownHeading": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownLink": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownLinkText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCode": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"markdownBlockQuote": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownEmph": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"markdownStrong": {
|
||||
"dark": "nord13",
|
||||
"light": "nord13"
|
||||
},
|
||||
"markdownHorizontalRule": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownListItem": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownListEnumeration": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownImage": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownImageText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCodeBlock": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"syntaxComment": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"syntaxKeyword": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxFunction": {
|
||||
"dark": "nord8",
|
||||
"light": "nord8"
|
||||
},
|
||||
"syntaxVariable": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxString": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"syntaxNumber": {
|
||||
"dark": "nord15",
|
||||
"light": "nord15"
|
||||
},
|
||||
"syntaxType": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxOperator": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxPunctuation": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
379
packages/web/src/content/docs/fr/tools.mdx
Normal file
379
packages/web/src/content/docs/fr/tools.mdx
Normal file
@@ -0,0 +1,379 @@
|
||||
---
|
||||
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`.
|
||||
300
packages/web/src/content/docs/fr/troubleshooting.mdx
Normal file
300
packages/web/src/content/docs/fr/troubleshooting.mdx
Normal file
@@ -0,0 +1,300 @@
|
||||
---
|
||||
title: Dépannage
|
||||
description: Problèmes courants et comment les résoudre.
|
||||
---
|
||||
|
||||
Pour déboguer les problèmes avec OpenCode, commencez par vérifier les journaux et les données locales qu'il stocke sur le disque.
|
||||
|
||||
---
|
||||
|
||||
## Journaux
|
||||
|
||||
Les fichiers journaux sont écrits dans :
|
||||
|
||||
- **macOS/Linux** : `~/.local/share/opencode/log/`
|
||||
- **Windows** : appuyez sur `WIN+R` et collez `%USERPROFILE%\.local\share\opencode\log`
|
||||
|
||||
Les fichiers journaux sont nommés avec des horodatages (par exemple, `2025-01-09T123456.log`) et les 10 fichiers journaux les plus récents sont conservés.
|
||||
|
||||
Vous pouvez définir le niveau de journalisation avec l'option de ligne de commande `--log-level` pour obtenir des informations de débogage plus détaillées. Par exemple, `opencode --log-level DEBUG`.
|
||||
|
||||
---
|
||||
|
||||
## Stockage
|
||||
|
||||
opencode stocke les données de session et autres données d'application sur le disque à l'emplacement :
|
||||
|
||||
- **macOS/Linux** : `~/.local/share/opencode/`
|
||||
- **Windows** : appuyez sur `WIN+R` et collez `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
Ce répertoire contient :
|
||||
|
||||
- `auth.json` - Données d'authentification telles que les clés API, les jetons OAuth
|
||||
- `log/` - Journaux d'applications
|
||||
- `project/` - Données spécifiques au projet telles que les données de session et de message
|
||||
- Si le projet se trouve dans un dépôt Git, il est stocké dans `./<project-slug>/storage/`
|
||||
- S'il ne s'agit pas d'un dépôt Git, il est stocké dans `./global/storage/`
|
||||
|
||||
---
|
||||
|
||||
## Application de bureau
|
||||
|
||||
OpenCode Desktop exécute un serveur OpenCode local (le side-car `opencode-cli`) en arrière-plan. La plupart des problèmes sont causés par un plugin qui se comporte mal, un cache corrompu ou un mauvais paramètre du serveur.
|
||||
|
||||
### Vérifications rapides
|
||||
|
||||
- Quittez complètement et relancez l'application.
|
||||
- Si l'application affiche un écran d'erreur, cliquez sur **Redémarrer** et copiez les détails de l'erreur.
|
||||
- macOS uniquement : menu `OpenCode` -> **Recharger la vue Web** (aide si l'interface utilisateur est vide/gelée).
|
||||
|
||||
---
|
||||
|
||||
### Désactiver les plugins
|
||||
|
||||
Si l'application de bureau plante au lancement, se bloque ou se comporte étrangement, commencez par désactiver les plugins.
|
||||
|
||||
#### Vérifiez la configuration globale
|
||||
|
||||
Ouvrez votre fichier de configuration global et recherchez une clé `plugin`.
|
||||
|
||||
- **macOS/Linux** : `~/.config/opencode/opencode.jsonc` (ou `~/.config/opencode/opencode.json`)
|
||||
- **macOS/Linux** (anciennes installations) : `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows** : appuyez sur `WIN+R` et collez `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
|
||||
Si vous avez configuré des plugins, désactivez-les temporairement en supprimant la clé ou en la définissant sur un tableau vide :
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": [],
|
||||
}
|
||||
```
|
||||
|
||||
#### Vérifiez les répertoires des plugins
|
||||
|
||||
OpenCode peut également charger des plugins locaux à partir du disque. Écartez-les temporairement (ou renommez le dossier) et redémarrez l'application de bureau :
|
||||
|
||||
- **Plugins mondiaux**
|
||||
- **macOS/Linux** : `~/.config/opencode/plugins/`
|
||||
- **Windows** : appuyez sur `WIN+R` et collez `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **Plugins de projet** (uniquement si vous utilisez une configuration par projet)
|
||||
- `<your-project>/.opencode/plugins/`
|
||||
|
||||
Si l'application recommence à fonctionner, réactivez les plugins un par un pour trouver celui à l'origine du problème.
|
||||
|
||||
---
|
||||
|
||||
### Vider le cache
|
||||
|
||||
Si la désactivation des plugins ne résout pas le problème (ou si l'installation d'un plugin est bloquée), videz le cache afin que OpenCode puisse le reconstruire.
|
||||
|
||||
1. Quittez complètement OpenCode Desktop.
|
||||
2. Supprimez le répertoire cache :
|
||||
|
||||
- **macOS** : Finder -> `Cmd+Shift+G` -> coller `~/.cache/opencode`
|
||||
- **Linux** : supprimez `~/.cache/opencode` (ou exécutez `rm -rf ~/.cache/opencode`)
|
||||
- **Windows** : appuyez sur `WIN+R` et collez `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
3. Redémarrez le bureau OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### Résoudre les problèmes de connexion au serveur
|
||||
|
||||
OpenCode Desktop peut soit démarrer son propre serveur local (par défaut), soit se connecter à un serveur URL que vous avez configuré.
|
||||
|
||||
Si vous voyez une boîte de dialogue **« Échec de la connexion »** (ou si l'application ne dépasse jamais l'écran de démarrage), recherchez un serveur personnalisé URL.
|
||||
|
||||
#### Effacer le serveur par défaut du bureau URL
|
||||
|
||||
Depuis l'écran d'accueil, cliquez sur le nom du serveur (avec le point d'état) pour ouvrir le sélecteur de serveur. Dans la section **Serveur par défaut**, cliquez sur **Effacer**.
|
||||
|
||||
#### Supprimez `server.port` / `server.hostname` de votre configuration
|
||||
|
||||
Si votre `opencode.json(c)` contient une section `server`, supprimez-la temporairement et redémarrez l'application de bureau.
|
||||
|
||||
#### Vérifier les variables d'environnement
|
||||
|
||||
Si `OPENCODE_PORT` est défini dans votre environnement, l'application de bureau tentera d'utiliser ce port pour le serveur local.
|
||||
|
||||
- Désactivez `OPENCODE_PORT` (ou choisissez un port libre) et redémarrez.
|
||||
|
||||
---
|
||||
|
||||
### Linux : Problèmes Wayland / X11
|
||||
|
||||
Sur Linux, certaines configurations Wayland peuvent provoquer des fenêtres vides ou des erreurs de composition.
|
||||
|
||||
- Si vous êtes sur Wayland et que l'application est vide/plante, essayez de la lancer avec `OC_ALLOW_WAYLAND=1`.
|
||||
- Si cela aggrave les choses, supprimez-le et essayez plutôt de le lancer sous une session X11.
|
||||
|
||||
---
|
||||
|
||||
### Windows : exécution WebView2
|
||||
|
||||
Sur Windows, OpenCode Desktop nécessite Microsoft Edge **WebView2 Runtime**. Si l'application s'ouvre sur une fenêtre vide ou ne démarre pas, installez/mettez à jour WebView2 et réessayez.
|
||||
|
||||
---
|
||||
|
||||
### Windows : problèmes de performances généraux
|
||||
|
||||
Si vous rencontrez des performances lentes, des problèmes d'accès aux fichiers ou des problèmes de terminal sur Windows, essayez d'utiliser [WSL (Windows Sous-système pour Linux)](/docs/windows-wsl). WSL fournit un environnement Linux qui fonctionne de manière plus transparente avec les fonctionnalités de OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### Les notifications ne s'affichent pas
|
||||
|
||||
OpenCode Desktop affiche uniquement les notifications système lorsque :
|
||||
|
||||
- les notifications sont activées pour OpenCode dans les paramètres de votre système d'exploitation, et
|
||||
- la fenêtre de l'application n'est pas ciblée.
|
||||
|
||||
---
|
||||
|
||||
### Réinitialiser le stockage des applications de bureau (dernier recours)
|
||||
|
||||
Si l'application ne démarre pas et que vous ne pouvez pas effacer les paramètres depuis l'interface utilisateur, réinitialisez l'état enregistré de l'application de bureau.
|
||||
|
||||
1. Quittez le bureau OpenCode.
|
||||
2. Recherchez et supprimez ces fichiers (ils se trouvent dans le répertoire de données de l'application OpenCode Desktop) :
|
||||
|
||||
- `opencode.settings.dat` (serveur de bureau par défaut URL)
|
||||
- `opencode.global.dat` et `opencode.workspace.*.dat` (état de l'interface utilisateur comme les serveurs/projets récents)
|
||||
|
||||
Pour trouver rapidement le répertoire :
|
||||
|
||||
- **macOS** : Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (puis recherchez les noms de fichiers ci-dessus)
|
||||
- **Linux** : recherchez sous `~/.local/share` les noms de fichiers ci-dessus
|
||||
- **Windows** : appuyez sur `WIN+R` -> `%APPDATA%` (puis recherchez les noms de fichiers ci-dessus)
|
||||
|
||||
---
|
||||
|
||||
## Obtenir de l'aide
|
||||
|
||||
Si vous rencontrez des problèmes avec OpenCode :
|
||||
|
||||
1. **Signaler les problèmes le GitHub**
|
||||
|
||||
La meilleure façon de signaler des bogues ou de demander des fonctionnalités consiste à utiliser notre référentiel GitHub :
|
||||
|
||||
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
|
||||
|
||||
Avant de créer un nouveau problème, recherchez les problèmes existants pour voir si votre problème a déjà été signalé.
|
||||
|
||||
2. **Rejoignez notre Discord**
|
||||
|
||||
Pour obtenir de l'aide en temps réel et une discussion communautaire, rejoignez notre serveur Discord :
|
||||
|
||||
[**opencode.ai/discord**](https://opencode.ai/discord)
|
||||
|
||||
---
|
||||
|
||||
## Problèmes courants
|
||||
|
||||
Voici quelques problèmes courants et comment les résoudre.
|
||||
|
||||
---
|
||||
|
||||
### OpenCode ne démarre pas
|
||||
|
||||
1. Vérifiez les journaux pour les messages d'erreur
|
||||
2. Essayez d'exécuter avec `--print-logs` pour voir la sortie dans le terminal
|
||||
3. Assurez-vous d'avoir la dernière version avec `opencode upgrade`
|
||||
|
||||
---
|
||||
|
||||
### Problèmes d'authentification
|
||||
|
||||
1. Essayez de vous réauthentifier avec la commande `/connect` dans le TUI
|
||||
2. Vérifiez que vos clés API sont valides
|
||||
3. Assurez-vous que votre réseau autorise les connexions au API du fournisseur.
|
||||
|
||||
---
|
||||
|
||||
### Modèle non disponible
|
||||
|
||||
1. Vérifiez que vous êtes authentifié auprès du fournisseur
|
||||
2. Vérifiez que le nom du modèle dans votre configuration est correct
|
||||
3. Certains modèles peuvent nécessiter un accès ou des abonnements spécifiques
|
||||
|
||||
Si vous rencontrez `ProviderModelNotFoundError`, vous avez probablement tort
|
||||
faire référence à un modèle quelque part.
|
||||
Les modèles doivent être référencés comme suit : `<providerId>/<modelId>`
|
||||
|
||||
Exemples :
|
||||
|
||||
- `openai/gpt-4.1`
|
||||
- `openrouter/google/gemini-2.5-flash`
|
||||
- `opencode/kimi-k2`
|
||||
|
||||
Pour déterminer à quels modèles vous avez accès, exécutez `opencode models`
|
||||
|
||||
---
|
||||
|
||||
### ErreurInit du fournisseur
|
||||
|
||||
Si vous rencontrez une ProviderInitError, vous avez probablement une configuration non valide ou corrompue.
|
||||
|
||||
Pour résoudre ce problème :
|
||||
|
||||
1. Tout d'abord, vérifiez que votre fournisseur est correctement configuré en suivant le [guide du fournisseur](/docs/providers)
|
||||
2. Si le problème persiste, essayez d'effacer votre configuration stockée :
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
```
|
||||
|
||||
Sur Windows, appuyez sur `WIN+R` et supprimez : `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
3. Ré-authentifiez-vous auprès de votre fournisseur à l'aide de la commande `/connect` dans le TUI.
|
||||
|
||||
---
|
||||
|
||||
### Problèmes liés à AI_APICallError et au package du fournisseur
|
||||
|
||||
Si vous rencontrez des erreurs d’appel API, cela peut être dû à des packages de fournisseurs obsolètes. opencode installe dynamiquement les packages du fournisseur (OpenAI, Anthropic, Google, etc.) selon les besoins et les met en cache localement.
|
||||
|
||||
Pour résoudre les problèmes liés au package du fournisseur :
|
||||
|
||||
1. Videz le cache du package du fournisseur :
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
```
|
||||
|
||||
Sur Windows, appuyez sur `WIN+R` et supprimez : `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. Redémarrez opencode pour réinstaller les derniers packages du fournisseur
|
||||
|
||||
Cela forcera opencode à télécharger les versions les plus récentes des packages du fournisseur, ce qui résout souvent les problèmes de compatibilité avec les paramètres du modèle et les modifications de API.
|
||||
|
||||
---
|
||||
|
||||
### Le copier/coller ne fonctionne pas sur Linux
|
||||
|
||||
Les utilisateurs de Linux doivent disposer de l'un des utilitaires de presse-papiers suivants installés pour que la fonctionnalité copier/coller fonctionne :
|
||||
|
||||
**Pour les systèmes X11 :**
|
||||
|
||||
```bash
|
||||
apt install -y xclip
|
||||
# or
|
||||
apt install -y xsel
|
||||
```
|
||||
|
||||
**Pour les systèmes Wayland :**
|
||||
|
||||
```bash
|
||||
apt install -y wl-clipboard
|
||||
```
|
||||
|
||||
**Pour les environnements sans tête :**
|
||||
|
||||
```bash
|
||||
apt install -y xvfb
|
||||
# and run:
|
||||
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
opencode détectera si vous utilisez Wayland et préférez `wl-clipboard`, sinon il essaiera de trouver les outils du presse-papiers dans l'ordre : `xclip` et `xsel`.
|
||||
390
packages/web/src/content/docs/fr/tui.mdx
Normal file
390
packages/web/src/content/docs/fr/tui.mdx
Normal file
@@ -0,0 +1,390 @@
|
||||
---
|
||||
title: TUI
|
||||
description: Utilisation de l’interface utilisateur du terminal OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode fournit une interface de terminal interactif ou TUI pour travailler sur vos projets avec un LLM.
|
||||
|
||||
L’exécution de OpenCode démarre le TUI pour le répertoire actuel.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Ou vous pouvez le démarrer pour un répertoire de travail spécifique.
|
||||
|
||||
```bash
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
Une fois que vous êtes dans le TUI, vous pouvez lui envoyer un message.
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Références de fichiers
|
||||
|
||||
Vous pouvez référencer des fichiers dans vos messages en utilisant `@`. Cela effectue une recherche de fichier floue dans le répertoire de travail actuel.
|
||||
|
||||
:::tip
|
||||
Vous pouvez également utiliser `@` pour référencer des fichiers dans vos messages.
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Le contenu du fichier est automatiquement ajouté à la conversation.
|
||||
|
||||
---
|
||||
|
||||
## Commandes Bash
|
||||
|
||||
Démarrez un message avec `!` pour exécuter une commande shell.
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
```
|
||||
|
||||
Le résultat de la commande est ajouté à la conversation en tant que résultat de l'outil.
|
||||
|
||||
---
|
||||
|
||||
## Commandes
|
||||
|
||||
Lorsque vous utilisez le OpenCode TUI, vous pouvez taper `/` suivi d'un nom de commande pour exécuter rapidement des actions. Par exemple:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
La plupart des commandes ont également une liaison clavier utilisant `ctrl+x` comme touche leader, où `ctrl+x` est la touche leader par défaut. [En savoir plus](/docs/keybinds).
|
||||
|
||||
Voici toutes les commandes slash disponibles :
|
||||
|
||||
---
|
||||
|
||||
### connecter
|
||||
|
||||
Ajoutez un fournisseur à OpenCode. Vous permet de sélectionner parmi les fournisseurs disponibles et d’ajouter leurs clés API.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### compact
|
||||
|
||||
Compactez la session en cours. _Alias_ : `/summarize`
|
||||
|
||||
```bash frame="none"
|
||||
/compact
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### détails
|
||||
|
||||
Basculer les détails d'exécution de l'outil.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### éditeur
|
||||
|
||||
Ouvrez un éditeur externe pour rédiger des messages. Utilise l'éditeur défini dans votre variable d'environnement `EDITOR`. [En savoir plus](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### sortie
|
||||
|
||||
Quittez OpenCode. _Alias_ : `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### exporter
|
||||
|
||||
Exportez la conversation en cours vers Markdown et ouvrez-la dans votre éditeur par défaut. Utilise l'éditeur défini dans votre variable d'environnement `EDITOR`. [En savoir plus](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### aide
|
||||
|
||||
Afficher la boîte de dialogue d'aide.
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
### initialisation
|
||||
|
||||
Créez ou mettez à jour le fichier `AGENTS.md`. [En savoir plus](/docs/rules).
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
### modèles
|
||||
|
||||
Liste des modèles disponibles.
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
### nouveau
|
||||
|
||||
Démarrez une nouvelle session. _Alias_ : `/clear`
|
||||
|
||||
```bash frame="none"
|
||||
/new
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
### refaire
|
||||
|
||||
Refaire un message précédemment annulé. Disponible uniquement après avoir utilisé `/undo`.
|
||||
|
||||
:::tip
|
||||
Toutes les modifications de fichiers seront également restaurées.
|
||||
:::
|
||||
|
||||
En interne, cela utilise Git pour gérer les modifications de fichiers. Votre projet **doit donc
|
||||
être un dépôt Git**.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
### séances
|
||||
|
||||
Répertoriez et basculez entre les sessions. _Alias_ : `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
### partager
|
||||
|
||||
Partager la session en cours. [En savoir plus](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
### thèmes
|
||||
|
||||
Répertoriez les thèmes disponibles.
|
||||
|
||||
```bash frame="none"
|
||||
/theme
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### pensée
|
||||
|
||||
Activez/désactivez la visibilité des blocages de réflexion/raisonnement dans la conversation. Lorsque cette option est activée, vous pouvez voir le processus de raisonnement du modèle pour les modèles prenant en charge la réflexion étendue.
|
||||
|
||||
:::note
|
||||
Cette commande contrôle uniquement si les blocs de réflexion sont **affichés** ; elle n'active ni ne désactive les capacités de raisonnement du modèle. Pour basculer entre les capacités de raisonnement réelles, utilisez `ctrl+t` pour parcourir les variantes du modèle.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
/thinking
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### défaire
|
||||
|
||||
Annuler le dernier message de la conversation. Supprime le message utilisateur le plus récent, toutes les réponses ultérieures et toutes les modifications de fichier.
|
||||
|
||||
:::tip
|
||||
Toutes les modifications apportées au fichier seront également annulées.
|
||||
:::
|
||||
|
||||
En interne, cela utilise Git pour gérer les modifications de fichiers. Votre projet **doit donc
|
||||
être un dépôt Git**.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
**Reliure de touches :** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
### annuler le partage
|
||||
|
||||
Annuler le partage de la session en cours. [En savoir plus](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configuration de l'éditeur
|
||||
|
||||
Les commandes `/editor` et `/export` utilisent l'éditeur spécifié dans votre variable d'environnement `EDITOR`.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
```bash
|
||||
# Example for nano or vim
|
||||
export EDITOR=nano
|
||||
export EDITOR=vim
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
Pour le rendre permanent, ajoutez-le à votre profil shell ;
|
||||
`~/.bashrc`, `~/.zshrc`, etc.
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (CMD)">
|
||||
```bash
|
||||
set EDITOR=notepad
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
Pour le rendre permanent, utilisez **Propriétés système** > **Environnement
|
||||
Variables**.
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (PowerShell)">
|
||||
```powershell
|
||||
$env:EDITOR = "notepad"
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
Pour le rendre permanent, ajoutez-le à votre profil PowerShell.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
Les options d'éditeur populaires incluent :
|
||||
|
||||
- `code`-Code Visual Studio
|
||||
- `cursor` - Curseur
|
||||
- `windsurf` - Planche à voile
|
||||
- `nvim` - Editeur Néovim
|
||||
- `vim` - Éditeur Vim
|
||||
- `nano` - Éditeur nano
|
||||
- `notepad` - Windows Bloc-notes
|
||||
- `subl` - Texte sublime
|
||||
|
||||
:::note
|
||||
Certains éditeurs comme VS Code doivent être démarrés avec le drapeau `--wait`.
|
||||
:::
|
||||
|
||||
Certains éditeurs ont besoin d'arguments de ligne de commande pour s'exécuter en mode blocage. L'indicateur `--wait` bloque le processus de l'éditeur jusqu'à sa fermeture.
|
||||
|
||||
---
|
||||
|
||||
## Configurer
|
||||
|
||||
Vous pouvez personnaliser le comportement de TUI via votre fichier de configuration OpenCode.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Possibilités
|
||||
|
||||
- `scroll_acceleration` - Activez l'accélération de défilement de style macOS pour un défilement fluide et naturel. Lorsqu'elle est activée, la vitesse de défilement augmente avec les gestes de défilement rapides et reste précise pour les mouvements plus lents. **Ce paramètre est prioritaire sur `scroll_speed` et le remplace lorsqu'il est activé.**
|
||||
- `scroll_speed` - Contrôle la vitesse de défilement du TUI lors de l'utilisation des commandes de défilement (minimum : `1`). La valeur par défaut est `3`. **Remarque : Ceci est ignoré si `scroll_acceleration.enabled` est défini sur `true`.**
|
||||
|
||||
---
|
||||
|
||||
## Personnalisation
|
||||
|
||||
Vous pouvez personnaliser divers aspects de la vue TUI à l'aide de la palette de commandes (`ctrl+x h` ou `/help`). Ces paramètres persistent lors des redémarrages.
|
||||
|
||||
---
|
||||
|
||||
#### Affichage du nom d'utilisateur
|
||||
|
||||
Indiquez si votre nom d'utilisateur apparaît dans les messages de discussion. Accédez-y via :
|
||||
|
||||
- Palette de commandes : recherchez "nom d'utilisateur" ou "masquer le nom d'utilisateur"
|
||||
- Le paramètre persiste automatiquement et sera mémorisé au cours de TUI sessions.
|
||||
142
packages/web/src/content/docs/fr/web.mdx
Normal file
142
packages/web/src/content/docs/fr/web.mdx
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
title: Web
|
||||
description: En utilisant OpenCode dans votre navigateur.
|
||||
---
|
||||
|
||||
OpenCode peut s'exécuter comme une application Web dans votre navigateur, offrant la même expérience puissante de codage d'IA sans avoir besoin d'un terminal.
|
||||
|
||||

|
||||
|
||||
## Commencer
|
||||
|
||||
Démarrez l'interface Web en exécutant :
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Cela démarre un serveur local sur `127.0.0.1` avec un port disponible aléatoire et ouvre automatiquement OpenCode dans votre navigateur par défaut.
|
||||
|
||||
:::caution
|
||||
Si `OPENCODE_SERVER_PASSWORD` n'est pas défini, le serveur ne sera pas sécurisé. C'est bien pour une utilisation locale mais doit être défini pour l'accès au réseau.
|
||||
:::
|
||||
|
||||
:::tip[Windows Utilisateurs]
|
||||
Pour une expérience optimale, exécutez `opencode web` à partir de [WSL](/docs/windows-wsl) plutôt que de PowerShell. Cela garantit un accès correct au système de fichiers et une intégration du terminal.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Vous pouvez configurer le serveur Web à l'aide d'indicateurs de ligne de commande ou dans votre [fichier de configuration](/docs/config).
|
||||
|
||||
### Port
|
||||
|
||||
Par défaut, OpenCode sélectionne un port disponible. Vous pouvez spécifier un port :
|
||||
|
||||
```bash
|
||||
opencode web --port 4096
|
||||
```
|
||||
|
||||
### Nom d'hôte
|
||||
|
||||
Par défaut, le serveur se lie à `127.0.0.1` (localhost uniquement). Pour rendre OpenCode accessible sur votre réseau :
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
Lorsque vous utilisez `0.0.0.0`, OpenCode affichera les adresses locales et réseau :
|
||||
|
||||
```
|
||||
Local access: http://localhost:4096
|
||||
Network access: http://192.168.1.100:4096
|
||||
```
|
||||
|
||||
### mDNS Découverte
|
||||
|
||||
Activez mDNS pour rendre votre serveur visible sur le réseau local :
|
||||
|
||||
```bash
|
||||
opencode web --mdns
|
||||
```
|
||||
|
||||
Cela définit automatiquement le nom d'hôte sur `0.0.0.0` et annonce le serveur comme `opencode.local`.
|
||||
|
||||
Vous pouvez personnaliser le nom de domaine mDNS pour exécuter plusieurs instances sur le même réseau :
|
||||
|
||||
```bash
|
||||
opencode web --mdns --mdns-domain myproject.local
|
||||
```
|
||||
|
||||
### CORS
|
||||
|
||||
Pour autoriser des domaines supplémentaires pour CORS (utile pour les frontends personnalisés) :
|
||||
|
||||
```bash
|
||||
opencode web --cors https://example.com
|
||||
```
|
||||
|
||||
### Authentification
|
||||
|
||||
Pour protéger l'accès, définissez un mot de passe à l'aide de la variable d'environnement `OPENCODE_SERVER_PASSWORD` :
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=secret opencode web
|
||||
```
|
||||
|
||||
Le nom d'utilisateur par défaut est `opencode` mais peut être modifié avec `OPENCODE_SERVER_USERNAME`.
|
||||
|
||||
---
|
||||
|
||||
## Utilisation de l'interface Web
|
||||
|
||||
Une fois démarrée, l'interface web permet d'accéder à vos sessions OpenCode.
|
||||
|
||||
### Séances
|
||||
|
||||
Consultez et gérez vos sessions depuis la page d'accueil. Vous pouvez voir les sessions actives et en démarrer de nouvelles.
|
||||
|
||||

|
||||
|
||||
### Statut du serveur
|
||||
|
||||
Cliquez sur "Voir les serveurs" pour afficher les serveurs connectés et leur état.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Attacher un terminal
|
||||
|
||||
Vous pouvez connecter un terminal TUI à un serveur Web en cours d'exécution :
|
||||
|
||||
```bash
|
||||
# Start the web server
|
||||
opencode web --port 4096
|
||||
|
||||
# In another terminal, attach the TUI
|
||||
opencode attach http://localhost:4096
|
||||
```
|
||||
|
||||
Cela vous permet d'utiliser simultanément l'interface Web et le terminal, en partageant les mêmes sessions et le même état.
|
||||
|
||||
---
|
||||
|
||||
## Fichier de configuration
|
||||
|
||||
Vous pouvez également configurer les paramètres du serveur dans votre fichier de configuration `opencode.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"cors": ["https://example.com"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Les indicateurs de ligne de commande ont priorité sur les paramètres du fichier de configuration.
|
||||
113
packages/web/src/content/docs/fr/windows-wsl.mdx
Normal file
113
packages/web/src/content/docs/fr/windows-wsl.mdx
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Windows (WSL)
|
||||
description: Execute OpenCode sur Windows avec WSL pour une experience optimale.
|
||||
---
|
||||
|
||||
import { Steps } from "@astrojs/starlight/components"
|
||||
|
||||
Meme si OpenCode peut fonctionner directement sur Windows, nous recommandons d'utiliser [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) pour la meilleure experience. WSL fournit un environnement Linux qui s'integre parfaitement aux fonctionnalites d'OpenCode.
|
||||
|
||||
:::tip[Pourquoi WSL?]
|
||||
WSL offre de meilleures performances du systeme de fichiers, une prise en charge complete du terminal et la compatibilite avec les outils de developpement dont OpenCode depend.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Installez WSL**
|
||||
|
||||
Si ce n'est pas encore fait, [installez WSL](https://learn.microsoft.com/en-us/windows/wsl/install) a l'aide du guide officiel Microsoft.
|
||||
|
||||
2. **Installez OpenCode dans WSL**
|
||||
|
||||
Une fois WSL configure, ouvrez votre terminal WSL et installez OpenCode avec l'une des [methodes d'installation](/docs/).
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
3. **Utilisez OpenCode depuis WSL**
|
||||
|
||||
Allez dans votre dossier de projet (accedez aux fichiers Windows via `/mnt/c/`, `/mnt/d/`, etc.) et lancez OpenCode.
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/project
|
||||
opencode
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
## Application bureau + serveur WSL
|
||||
|
||||
Si vous preferez utiliser l'application bureau OpenCode mais executer le serveur dans WSL:
|
||||
|
||||
1. **Demarrez le serveur dans WSL** avec `--hostname 0.0.0.0` pour autoriser les connexions externes:
|
||||
|
||||
```bash
|
||||
opencode serve --hostname 0.0.0.0 --port 4096
|
||||
```
|
||||
|
||||
2. **Connectez l'application bureau** a `http://localhost:4096`
|
||||
|
||||
:::note
|
||||
Si `localhost` ne fonctionne pas dans votre configuration, utilisez plutot l'adresse IP WSL (depuis WSL: `hostname -I`) et `http://<wsl-ip>:4096`.
|
||||
:::
|
||||
|
||||
:::caution
|
||||
Lorsque vous utilisez `--hostname 0.0.0.0`, definissez `OPENCODE_SERVER_PASSWORD` pour securiser le serveur.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Client web + WSL
|
||||
|
||||
Pour la meilleure experience web sous Windows:
|
||||
|
||||
1. **Executez `opencode web` dans le terminal WSL** plutot que dans PowerShell:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
2. **Accedez-y depuis votre navigateur Windows** a `http://localhost:<port>` (OpenCode affiche l'URL)
|
||||
|
||||
Lancer `opencode web` depuis WSL garantit un acces correct au systeme de fichiers et une bonne integration terminal, tout en restant accessible depuis votre navigateur Windows.
|
||||
|
||||
---
|
||||
|
||||
## Acceder aux fichiers Windows
|
||||
|
||||
WSL peut acceder a tous vos fichiers Windows via le repertoire `/mnt/`:
|
||||
|
||||
- Lecteur `C:` → `/mnt/c/`
|
||||
- Lecteur `D:` → `/mnt/d/`
|
||||
- Et ainsi de suite...
|
||||
|
||||
Exemple:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/Documents/project
|
||||
opencode
|
||||
```
|
||||
|
||||
:::tip
|
||||
Pour une experience plus fluide, vous pouvez cloner/copier votre depot dans le systeme de fichiers WSL (par exemple sous `~/code/`) et y executer OpenCode.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Conseils
|
||||
|
||||
- Gardez OpenCode dans WSL pour les projets stockes sur des lecteurs Windows: l'acces aux fichiers est fluide
|
||||
- Utilisez l'[extension WSL de VS Code](https://code.visualstudio.com/docs/remote/wsl) avec OpenCode pour un flux de travail integre
|
||||
- Votre configuration OpenCode et vos sessions sont stockees dans l'environnement WSL a `~/.local/share/opencode/`
|
||||
254
packages/web/src/content/docs/fr/zen.mdx
Normal file
254
packages/web/src/content/docs/fr/zen.mdx
Normal file
@@ -0,0 +1,254 @@
|
||||
---
|
||||
title: Zen
|
||||
description: Liste organisée de modèles fournis par OpenCode.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Zen est une liste de modèles testés et vérifiés fournie par l'équipe OpenCode.
|
||||
|
||||
:::note
|
||||
OpenCode Zen est actuellement en version bêta.
|
||||
:::
|
||||
|
||||
Zen fonctionne comme n'importe quel autre fournisseur dans OpenCode. Vous vous connectez à OpenCode Zen et obtenez
|
||||
votre clé API. C'est **complètement facultatif** et vous n'avez pas besoin de l'utiliser pour l'utiliser
|
||||
OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Arrière-plan
|
||||
|
||||
Il existe un grand nombre de modèles, mais seulement quelques-uns d'entre eux
|
||||
ces modèles fonctionnent bien comme agents de codage. De plus, la plupart des fournisseurs sont
|
||||
configuré très différemment; vous obtenez donc des performances et une qualité très différentes.
|
||||
|
||||
:::tip
|
||||
Nous avons testé un groupe sélectionné de modèles et de fournisseurs qui fonctionnent bien avec OpenCode.
|
||||
:::
|
||||
|
||||
Donc, si vous utilisez un modèle via quelque chose comme OpenRouter, vous ne pourrez jamais être
|
||||
assurez-vous que vous obtenez la meilleure version du modèle que vous souhaitez.
|
||||
|
||||
Pour résoudre ce problème, nous avons effectué plusieurs opérations :
|
||||
|
||||
1. Nous avons testé un groupe sélectionné de modèles et discuté avec leurs équipes de la manière de
|
||||
mieux vaut les exécuter.
|
||||
2. Nous avons ensuite travaillé avec quelques prestataires pour nous assurer qu'ils étaient servis.
|
||||
correctement.
|
||||
3. Enfin, nous avons comparé la combinaison modèle/fournisseur et sommes arrivés
|
||||
avec une liste que nous nous ferons un plaisir de recommander.
|
||||
|
||||
OpenCode Zen est une passerelle IA qui vous donne accès à ces modèles.
|
||||
|
||||
---
|
||||
|
||||
## Comment ça marche
|
||||
|
||||
OpenCode Zen fonctionne comme n'importe quel autre fournisseur dans OpenCode.
|
||||
|
||||
1. Vous vous connectez à **<a href={console}>OpenCode Zen</a>**, ajoutez votre facturation
|
||||
détails et copiez votre clé API.
|
||||
2. Vous exécutez la commande `/connect` dans le TUI, sélectionnez OpenCode Zen et collez votre clé API.
|
||||
3. Exécutez `/models` dans le TUI pour voir la liste des modèles que nous recommandons.
|
||||
|
||||
Vous êtes facturé par demande et vous pouvez ajouter des crédits à votre compte.
|
||||
|
||||
---
|
||||
|
||||
## Points de terminaison
|
||||
|
||||
Vous pouvez également accéder à nos modèles via les points de terminaison API suivants.
|
||||
|
||||
| Modèle | ID du modèle | Point de terminaison | Package SDK IA |
|
||||
| -------------------- | -------------------- | -------------------------------------------------- | --------------------------- |
|
||||
| TPG 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Codex GPT 5.2 | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Codex GPT 5.1 | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| TPG 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Codex GPT5 | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT5Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haïku 4.5 | claude-haïku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Haïku 3.5 | claude-3-5-haïku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Gémeaux 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|
||||
| Gémeaux 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|
||||
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 Gratuit | minimax-m2.1-gratuit | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 Gratuit | glm-4.7-gratuit | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 Gratuit | kimi-k2.5-gratuit | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Pensée | kimi-k2-pensée | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Codeur Qwen3 480B | codeur qwen3 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Gros cornichon | gros cornichon | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
Le [id du modèle](/docs/config/#models) dans votre configuration OpenCode
|
||||
utilise le format `opencode/<model-id>`. Par exemple, pour le Codex GPT 5.2, vous devez
|
||||
utilisez `opencode/gpt-5.2-codex` dans votre configuration.
|
||||
|
||||
---
|
||||
|
||||
### Modèles
|
||||
|
||||
Vous pouvez récupérer la liste complète des modèles disponibles et leurs métadonnées à partir de :
|
||||
|
||||
```
|
||||
https://opencode.ai/zen/v1/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Tarifs
|
||||
|
||||
Nous soutenons un modèle de paiement à l'utilisation. Vous trouverez ci-dessous les prix **par 1 million de jetons**.
|
||||
|
||||
| Modèle | Entrée | Sortie | Lecture en cache | Écriture en cache |
|
||||
| --------------------------------- | ------- | ------- | ---------------- | ----------------- |
|
||||
| Gros cornichon | Gratuit | Gratuit | Gratuit | - |
|
||||
| MiniMax M2.1 Gratuit | Gratuit | Gratuit | Gratuit | - |
|
||||
| MiniMax M2.1 | 0,30 $ | 1,20 $ | 0,10 $ | - |
|
||||
| GLM 4.7 Gratuit | Gratuit | Gratuit | Gratuit | - |
|
||||
| GLM 4.7 | 0,60 $ | 2,20 $ | 0,10 $ | - |
|
||||
| GLM 4.6 | 0,60 $ | 2,20 $ | 0,10 $ | - |
|
||||
| Kimi K2.5 Gratuit | Gratuit | Gratuit | Gratuit | - |
|
||||
| Kimi K2.5 | 0,60 $ | 3,00 $ | 0,08 $ | - |
|
||||
| Kimi K2 Pensée | 0,40 $ | 2,50 $ | - | - |
|
||||
| Kimi K2 | 0,40 $ | 2,50 $ | - | - |
|
||||
| Codeur Qwen3 480B | 0,45 $ | 1,50 $ | - | - |
|
||||
| Claude Sonnet 4.5 (≤ 200K jetons) | 3,00 $ | 15,00 $ | 0,30 $ | 3,75 $ |
|
||||
| Claude Sonnet 4.5 (> 200K jetons) | 6,00 $ | 22,50 $ | 0,60 $ | 7,50 $ |
|
||||
| Claude Sonnet 4 (≤ 200K jetons) | 3,00 $ | 15,00 $ | 0,30 $ | 3,75 $ |
|
||||
| Claude Sonnet 4 (> 200K jetons) | 6,00 $ | 22,50 $ | 0,60 $ | 7,50 $ |
|
||||
| Claude Haïku 4.5 | 1,00 $ | 5,00 $ | 0,10 $ | 1,25 $ |
|
||||
| Claude Haïku 3.5 | 0,80 $ | 4,00 $ | 0,08 $ | 1,00 $ |
|
||||
| Claude Opus 4.6 (≤ 200K jetons) | 5,00 $ | 25,00 $ | 0,50 $ | 6,25 $ |
|
||||
| Claude Opus 4.6 (> 200K jetons) | 10,00 $ | 37,50 $ | 1,00 $ | 12,50 $ |
|
||||
| Claude Opus 4.5 | 5,00 $ | 25,00 $ | 0,50 $ | 6,25 $ |
|
||||
| Claude Opus 4.1 | 15,00 $ | 75,00 $ | 1,50 $ | 18,75 $ |
|
||||
| Gemini 3 Pro (≤ 200 000 jetons) | 2,00 $ | 12,00 $ | 0,20 $ | - |
|
||||
| Gemini 3 Pro (> 200 000 jetons) | 4,00 $ | 18,00 $ | 0,40 $ | - |
|
||||
| Gémeaux 3 Flash | 0,50 $ | 3,00 $ | 0,05 $ | - |
|
||||
| TPG 5.2 | 1,75 $ | 14,00 $ | 0,175 $ | - |
|
||||
| Codex GPT 5.2 | 1,75 $ | 14,00 $ | 0,175 $ | - |
|
||||
| GPT 5.1 | 1,07 $ | 8,50 $ | 0,107 $ | - |
|
||||
| Codex GPT 5.1 | 1,07 $ | 8,50 $ | 0,107 $ | - |
|
||||
| GPT 5.1 Codex Max | 1,25 $ | 10,00 $ | 0,125 $ | - |
|
||||
| GPT 5.1 Codex Mini | 0,25 $ | 2,00 $ | 0,025 $ | - |
|
||||
| TPG 5 | 1,07 $ | 8,50 $ | 0,107 $ | - |
|
||||
| Codex GPT5 | 1,07 $ | 8,50 $ | 0,107 $ | - |
|
||||
| GPT5Nano | Gratuit | Gratuit | Gratuit | - |
|
||||
|
||||
Vous remarquerez peut-être _Claude Haiku 3.5_ dans votre historique d'utilisation. Il s'agit d'un [modèle low cost](/docs/config/#models) qui est utilisé pour générer les titres de vos sessions.
|
||||
|
||||
:::note
|
||||
Les frais de carte de crédit sont répercutés au prix coûtant (4,4 % + 0,30 $ par transaction) ; nous ne facturons rien au-delà.
|
||||
:::
|
||||
|
||||
Les modèles gratuits :
|
||||
|
||||
- GLM 4.7 Free est disponible sur OpenCode pour une durée limitée. L’équipe profite de ce temps pour recueillir des commentaires et améliorer le modèle.
|
||||
- Kimi K2.5 Free est disponible sur OpenCode pour une durée limitée. L’équipe profite de ce temps pour recueillir des commentaires et améliorer le modèle.
|
||||
- MiniMax M2.1 Free est disponible sur OpenCode pour une durée limitée. L’équipe profite de ce temps pour recueillir des commentaires et améliorer le modèle.
|
||||
- Big Pickle est un modèle furtif gratuit sur OpenCode pour une durée limitée. L’équipe profite de ce temps pour recueillir des commentaires et améliorer le modèle.
|
||||
|
||||
<a href={email}>Contactez-nous</a> si vous avez des questions.
|
||||
|
||||
---
|
||||
|
||||
### Rechargement automatique
|
||||
|
||||
Si votre solde descend en dessous de 5 $, Zen rechargera automatiquement 20 $.
|
||||
|
||||
Vous pouvez modifier le montant du rechargement automatique. Vous pouvez également désactiver complètement le rechargement automatique.
|
||||
|
||||
---
|
||||
|
||||
### Limites mensuelles
|
||||
|
||||
Vous pouvez également définir une limite d'utilisation mensuelle pour l'ensemble de l'espace de travail et pour chaque
|
||||
membre de votre équipe.
|
||||
|
||||
Par exemple, disons que vous définissez une limite d'utilisation mensuelle à 20 $, Zen n'utilisera pas
|
||||
plus de 20 $ par mois. Mais si le rechargement automatique est activé, Zen pourrait finir par
|
||||
vous facturant plus de 20 $ si votre solde descend en dessous de 5 $.
|
||||
|
||||
---
|
||||
|
||||
## Confidentialité
|
||||
|
||||
Tous nos modèles sont hébergés aux États-Unis. Nos fournisseurs suivent une politique de rétention zéro et n'utilisent pas vos données pour la formation de modèles, avec les exceptions suivantes :
|
||||
|
||||
- Big Pickle : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle.
|
||||
- GLM 4.7 Gratuit : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle.
|
||||
- Kimi K2.5 Gratuit : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle.
|
||||
- MiniMax M2.1 Gratuit : Pendant sa période gratuite, les données collectées peuvent être utilisées pour améliorer le modèle.
|
||||
- API OpenAI : les demandes sont conservées pendant 30 jours conformément aux politiques de données de [OpenAI](https://platform.openai.com/docs/guides/your-data).
|
||||
- API Anthropic : les demandes sont conservées pendant 30 jours conformément aux [Politiques de données d'Anthropic](https://docs.anthropic.com/en/docs/claude-code/data-usage).
|
||||
|
||||
---
|
||||
|
||||
## Pour les équipes
|
||||
|
||||
Zen fonctionne également très bien pour les équipes. Vous pouvez inviter des coéquipiers, attribuer des rôles, organiser
|
||||
les modèles utilisés par votre équipe, et bien plus encore.
|
||||
|
||||
:::note
|
||||
Les espaces de travail sont actuellement gratuits pour les équipes dans le cadre de la version bêta.
|
||||
:::
|
||||
|
||||
La gestion de votre espace de travail est actuellement gratuite pour les équipes dans le cadre de la version bêta. Nous serons
|
||||
partagera bientôt plus de détails sur les prix.
|
||||
|
||||
---
|
||||
|
||||
### Rôles
|
||||
|
||||
Vous pouvez inviter des coéquipiers dans votre espace de travail et attribuer des rôles :
|
||||
|
||||
- **Administrateur** : gérez les modèles, les membres, les clés API et la facturation.
|
||||
- **Membre** : gérer uniquement ses propres clés API
|
||||
|
||||
Les administrateurs peuvent également définir des limites de dépenses mensuelles pour chaque membre afin de garder les coûts sous contrôle.
|
||||
|
||||
---
|
||||
|
||||
### Accès au modèle
|
||||
|
||||
Les administrateurs peuvent activer ou désactiver des modèles spécifiques pour l'espace de travail. Les requêtes adressées à un modèle désactivé renverront une erreur.
|
||||
|
||||
Ceci est utile dans les cas où vous souhaitez désactiver l'utilisation d'un modèle qui
|
||||
collecte des données.
|
||||
|
||||
---
|
||||
|
||||
### Apportez votre propre clé
|
||||
|
||||
Vous pouvez utiliser vos propres clés OpenAI ou Anthropic API tout en accédant à d'autres modèles dans Zen.
|
||||
|
||||
Lorsque vous utilisez vos propres clés, les tokens sont facturés directement par le fournisseur et non par Zen.
|
||||
|
||||
Par exemple, votre organisation dispose peut-être déjà d'une clé pour OpenAI ou Anthropic
|
||||
et vous souhaitez l'utiliser à la place de celui fourni par Zen.
|
||||
|
||||
---
|
||||
|
||||
## Objectifs
|
||||
|
||||
Nous avons créé OpenCode Zen pour :
|
||||
|
||||
1. **Benchmark** les meilleurs modèles/fournisseurs d'agents de codage.
|
||||
2. Ayez accès aux options de **la plus haute qualité** et ne dégradez pas les performances ni ne vous dirigez vers des fournisseurs moins chers.
|
||||
3. Répercutez toute **baisse de prix** en vendant au prix coûtant ; la seule majoration est donc pour couvrir nos frais de traitement.
|
||||
4. N'ayez **aucun verrouillage** en vous permettant de l'utiliser avec n'importe quel autre agent de codage. Et laissez-vous toujours utiliser n'importe quel autre fournisseur avec OpenCode également.
|
||||
Reference in New Issue
Block a user