chore(i18n): refresh fr translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 15:27:37 +00:00
parent 44b7b09728
commit 09ec968d72
5 changed files with 544 additions and 596 deletions

View File

@ -1,28 +1,28 @@
---
read_when:
- Vous souhaitez installer ou gérer des Plugins Gateway ou des bundles compatibles
- Vous souhaitez déboguer des échecs de chargement de Plugin
summary: Référence CLI pour `openclaw plugins` (liste, installation, marketplace, désinstallation, activation/désactivation, doctor)
- Vous souhaitez installer ou gérer des plugins Gateway ou des bundles compatibles
- Vous souhaitez déboguer les échecs de chargement des plugins
summary: Référence CLI pour `openclaw plugins` (`list`, `install`, `marketplace`, `uninstall`, `enable`/`disable`, `doctor`)
title: Plugins
x-i18n:
generated_at: "2026-04-24T07:05:08Z"
generated_at: "2026-04-24T15:25:50Z"
model: gpt-5.4
provider: openai
source_hash: 35ef8f54c64ea52d7618a0ef8b90d3d75841a27ae4cd689b4ca8e0cfdcddc408
source_hash: bc693d5e3bc49057e1a108ba65a4dcb3bb662c00229e6fa38a0335afba8240e5
source_path: cli/plugins.md
workflow: 15
---
# `openclaw plugins`
Gérez les Plugins Gateway, les packs de hooks et les bundles compatibles.
Gérez les plugins Gateway, les hook packs et les bundles compatibles.
Lié :
Associé :
- Système de Plugin : [Plugins](/fr/tools/plugin)
- Compatibilité des bundles : [Bundles de Plugin](/fr/plugins/bundles)
- Manifeste + schéma de Plugin : [Manifeste de Plugin](/fr/plugins/manifest)
- Renforcement de la sécurité : [Sécurité](/fr/gateway/security)
- Compatibilité des bundles : [Plugin bundles](/fr/plugins/bundles)
- Manifeste du Plugin + schéma : [Plugin manifest](/fr/plugins/manifest)
- Renforcement de la sécurité : [Security](/fr/gateway/security)
## Commandes
@ -46,19 +46,13 @@ openclaw plugins marketplace list <marketplace>
openclaw plugins marketplace list <marketplace> --json
```
Les Plugins intégrés sont livrés avec OpenClaw. Certains sont activés par défaut (par exemple
les providers de modèles intégrés, les providers vocaux intégrés et le Plugin
browser intégré) ; dautres nécessitent `plugins enable`.
Les plugins fournis sont livrés avec OpenClaw. Certains sont activés par défaut (par exemple les fournisseurs de modèles fournis, les fournisseurs vocaux fournis et le plugin de navigateur fourni) ; d'autres nécessitent `plugins enable`.
Les Plugins OpenClaw natifs doivent livrer `openclaw.plugin.json` avec un schéma JSON
inline (`configSchema`, même sil est vide). Les bundles compatibles utilisent à la place
leurs propres manifestes de bundle.
Les plugins OpenClaw natifs doivent fournir `openclaw.plugin.json` avec un schéma JSON inline (`configSchema`, même s'il est vide). Les bundles compatibles utilisent à la place leurs propres manifestes de bundle.
`plugins list` affiche `Format: openclaw` ou `Format: bundle`. La sortie détaillée de list/info
affiche aussi le sous-type du bundle (`codex`, `claude` ou `cursor`) ainsi que les
capacités de bundle détectées.
`plugins list` affiche `Format: openclaw` ou `Format: bundle`. La sortie détaillée de list/info affiche également le sous-type de bundle (`codex`, `claude` ou `cursor`) ainsi que les capacités de bundle détectées.
### Installation
### Installer
```bash
openclaw plugins install <package> # ClawHub d'abord, puis npm
@ -72,56 +66,31 @@ openclaw plugins install <plugin> --marketplace <name> # marketplace (explicite
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
```
Les noms de package nus sont dabord vérifiés dans ClawHub, puis dans npm. Remarque de sécurité :
traitez les installations de Plugin comme lexécution de code. Préférez les versions épinglées.
Les noms de package simples sont d'abord vérifiés dans ClawHub, puis dans npm. Note de sécurité : traitez les installations de plugins comme l'exécution de code. Préférez les versions épinglées.
Si votre section `plugins` est adossée à un unique `$include` fichier, `plugins install/update/enable/disable/uninstall` écrit dans ce fichier inclus et laisse `openclaw.json` intact. Les includes racine, tableaux dincludes et includes avec remplacements frères échouent en fermeture stricte au lieu dêtre aplatis. Voir [Includes de configuration](/fr/gateway/configuration) pour les formes prises en charge.
Si votre section `plugins` est adossée à un `$include` dans un seul fichier, `plugins install/update/enable/disable/uninstall` écrit dans ce fichier inclus et laisse `openclaw.json` intact. Les includes racine, les tableaux d'includes et les includes avec des surcharges adjacentes échouent de manière fermée au lieu d'être aplatis. Consultez [Config includes](/fr/gateway/configuration) pour les formes prises en charge.
Si la configuration est invalide, `plugins install` échoue normalement en fermeture stricte et vous indique dexécuter
`openclaw doctor --fix` dabord. La seule exception documentée est un chemin de récupération étroit
pour un Plugin intégré pour les Plugins qui activent explicitement
`openclaw.install.allowInvalidConfigRecovery`.
Si la configuration est invalide, `plugins install` échoue normalement de manière fermée et vous indique d'exécuter d'abord `openclaw doctor --fix`.
`--force` réutilise la cible dinstallation existante et écrase sur place un
Plugin ou pack de hooks déjà installé. Utilisez-le lorsque vous réinstallez volontairement
le même identifiant depuis un nouveau chemin local, une archive, un package ClawHub ou un artefact npm.
Pour les mises à niveau de routine dun Plugin npm déjà suivi, préférez
`openclaw plugins update <id-or-npm-spec>`.
La seule exception documentée est un chemin de récupération étroit pour les plugins fournis qui optent explicitement pour `openclaw.install.allowInvalidConfigRecovery`.
Si vous exécutez `plugins install` pour un identifiant de Plugin déjà installé, OpenClaw
sarrête et vous oriente vers `plugins update <id-or-npm-spec>` pour une mise à niveau normale,
ou vers `plugins install <package> --force` si vous souhaitez réellement écraser
linstallation actuelle depuis une autre source.
`--force` réutilise la cible d'installation existante et écrase sur place un plugin ou hook pack déjà installé. Utilisez-le lorsque vous réinstallez intentionnellement le même id à partir d'un nouveau chemin local, d'une archive, d'un package ClawHub ou d'un artefact npm. Pour les mises à niveau courantes d'un plugin npm déjà suivi, préférez `openclaw plugins update <id-or-npm-spec>`.
`--pin` sapplique uniquement aux installations npm. Il nest pas pris en charge avec `--marketplace`,
car les installations marketplace persistent des métadonnées de source marketplace au lieu dune
spécification npm.
Si vous exécutez `plugins install` pour un id de plugin déjà installé, OpenClaw s'arrête et vous redirige vers `plugins update <id-or-npm-spec>` pour une mise à niveau normale, ou vers `plugins install <package> --force` si vous voulez réellement écraser l'installation actuelle depuis une autre source.
`--dangerously-force-unsafe-install` est une option de dernier recours pour les faux positifs
du scanner intégré de code dangereux. Elle permet de poursuivre linstallation même
lorsque le scanner intégré signale des résultats `critical`, mais elle **ne**
contourne pas les blocages de politique des hooks Plugin `before_install` et **ne** contourne pas les
échecs de scan.
`--pin` s'applique uniquement aux installations npm. Il n'est pas pris en charge avec `--marketplace`, car les installations marketplace conservent des métadonnées de source marketplace au lieu d'une spec npm.
Cet indicateur CLI sapplique aux flux dinstallation/mise à jour de Plugin. Les installations de dépendances de Skills
adossées au Gateway utilisent la surcharge de requête correspondante `dangerouslyForceUnsafeInstall`, tandis que `openclaw skills install` reste un flux séparé de téléchargement/installation de Skills ClawHub.
`--dangerously-force-unsafe-install` est une option de dernier recours pour les faux positifs du scanner intégré de code dangereux. Elle permet à l'installation de continuer même lorsque le scanner intégré signale des résultats `critical`, mais elle **ne** contourne **pas** les blocages de stratégie des hooks de plugin `before_install` et **ne** contourne **pas** les échecs de scan.
`plugins install` est aussi la surface dinstallation pour les packs de hooks qui exposent
`openclaw.hooks` dans `package.json`. Utilisez `openclaw hooks` pour la visibilité filtrée des hooks
et lactivation par hook, pas pour linstallation du package.
Cet indicateur CLI s'applique aux flux d'installation/mise à jour des plugins. Les installations de dépendances de Skills adossées à Gateway utilisent la surcharge de requête correspondante `dangerouslyForceUnsafeInstall`, tandis que `openclaw skills install` reste un flux distinct de téléchargement/installation de Skills ClawHub.
Les spécifications npm sont **registre uniquement** (nom du package + **version exacte** ou
**dist-tag** facultatif). Les spécifications git/URL/fichier et les plages semver sont rejetées. Les installations
de dépendances sexécutent avec `--ignore-scripts` pour des raisons de sécurité.
`plugins install` est également la surface d'installation pour les hook packs qui exposent `openclaw.hooks` dans `package.json`. Utilisez `openclaw hooks` pour une visibilité filtrée des hooks et l'activation par hook, pas pour l'installation de packages.
Les spécifications nues et `@latest` restent sur la piste stable. Si npm résout lune
de celles-ci vers une préversion, OpenClaw sarrête et vous demande dactiver explicitement
une balise de préversion telle que `@beta`/`@rc` ou une version de préversion exacte telle que
`@1.2.3-beta.4`.
Les specs npm sont **registry-only** (nom de package + **version exacte** ou **dist-tag** facultative). Les specs Git/URL/fichier et les plages semver sont rejetées. Les installations de dépendances s'exécutent avec `--ignore-scripts` pour des raisons de sécurité.
Si une spécification dinstallation nue correspond à un identifiant de Plugin intégré (par exemple `diffs`), OpenClaw
installe directement le Plugin intégré. Pour installer un package npm portant le même
nom, utilisez une spécification explicite avec scope (par exemple `@scope/diffs`).
Les specs simples et `@latest` restent sur la piste stable. Si npm résout l'un ou l'autre vers une préversion, OpenClaw s'arrête et vous demande un opt-in explicite avec une balise de préversion telle que `@beta`/`@rc` ou une version de préversion exacte telle que `@1.2.3-beta.4`.
Si une spec d'installation simple correspond à un id de plugin fourni (par exemple `diffs`), OpenClaw installe directement le plugin fourni. Pour installer un package npm portant le même nom, utilisez une spec scoppée explicite (par exemple `@scope/diffs`).
Archives prises en charge : `.zip`, `.tgz`, `.tar.gz`, `.tar`.
@ -134,19 +103,15 @@ openclaw plugins install clawhub:openclaw-codex-app-server
openclaw plugins install clawhub:openclaw-codex-app-server@1.2.3
```
OpenClaw préfère désormais aussi ClawHub pour les spécifications de Plugin nues compatibles npm. Il ne revient
à npm que si ClawHub na pas ce package ou cette version :
OpenClaw privilégie désormais aussi ClawHub pour les specs de plugins npm-safe simples. Il ne revient à npm que si ClawHub ne dispose pas de ce package ou de cette version :
```bash
openclaw plugins install openclaw-codex-app-server
```
OpenClaw télécharge larchive du package depuis ClawHub, vérifie la
compatibilité annoncée avec lAPI Plugin / le Gateway minimal, puis linstalle via le chemin
normal des archives. Les installations enregistrées conservent leurs métadonnées de source ClawHub pour les mises à jour ultérieures.
OpenClaw télécharge l'archive du package depuis ClawHub, vérifie l'API de plugin annoncée / la compatibilité minimale Gateway, puis l'installe via le chemin d'archive normal. Les installations enregistrées conservent leurs métadonnées de source ClawHub pour les mises à jour ultérieures.
Utilisez la forme abrégée `plugin@marketplace` lorsque le nom de marketplace existe dans le
cache local du registre Claude à `~/.claude/plugins/known_marketplaces.json` :
Utilisez la forme abrégée `plugin@marketplace` lorsque le nom de marketplace existe dans le cache local du registre Claude à `~/.claude/plugins/known_marketplaces.json` :
```bash
openclaw plugins marketplace list <marketplace-name>
@ -166,29 +131,22 @@ Les sources marketplace peuvent être :
- un nom de marketplace connu de Claude depuis `~/.claude/plugins/known_marketplaces.json`
- une racine de marketplace locale ou un chemin `marketplace.json`
- une notation abrégée de dépôt GitHub telle que `owner/repo`
- une forme abrégée de dépôt GitHub telle que `owner/repo`
- une URL de dépôt GitHub telle que `https://github.com/owner/repo`
- une URL git
Pour les marketplaces distantes chargées depuis GitHub ou git, les entrées de Plugin doivent rester
à lintérieur du dépôt marketplace cloné. OpenClaw accepte les sources de chemin relatives issues
de ce dépôt et rejette les sources HTTP(S), chemin absolu, git, GitHub et autres sources de Plugin non basées sur un chemin provenant de manifestes distants.
Pour les marketplaces distantes chargées depuis GitHub ou git, les entrées de plugin doivent rester à l'intérieur du dépôt marketplace cloné. OpenClaw accepte les sources de chemin relatif depuis ce dépôt et rejette les sources de plugin HTTP(S), de chemin absolu, git, GitHub et autres sources non basées sur un chemin provenant de manifestes distants.
Pour les chemins locaux et les archives, OpenClaw détecte automatiquement :
- les Plugins OpenClaw natifs (`openclaw.plugin.json`)
- les plugins OpenClaw natifs (`openclaw.plugin.json`)
- les bundles compatibles Codex (`.codex-plugin/plugin.json`)
- les bundles compatibles Claude (`.claude-plugin/plugin.json` ou la disposition
par défaut des composants Claude)
- les bundles compatibles Claude (`.claude-plugin/plugin.json` ou la disposition par défaut des composants Claude)
- les bundles compatibles Cursor (`.cursor-plugin/plugin.json`)
Les bundles compatibles sinstallent dans la racine normale des Plugins et participent au
même flux list/info/enable/disable. Aujourdhui, les bundle Skills, les
command-skills Claude, les valeurs par défaut Claude `settings.json`, les valeurs par défaut Claude `.lsp.json` /
`lspServers` déclarés par manifeste, les command-skills Cursor et les répertoires de hooks Codex compatibles sont pris en charge ; les autres capacités de bundle détectées sont
affichées dans les diagnostics/info mais ne sont pas encore raccordées à lexécution.
Les bundles compatibles s'installent dans la racine normale des plugins et participent au même flux list/info/enable/disable. Aujourd'hui, les Skills de bundle, les command-skills Claude, les valeurs par défaut Claude `settings.json`, les valeurs par défaut Claude `.lsp.json` / `lspServers` déclarées dans le manifeste, les command-skills Cursor et les répertoires de hooks Codex compatibles sont pris en charge ; les autres capacités de bundle détectées sont affichées dans les diagnostics/info mais ne sont pas encore raccordées à l'exécution à l'exécution.
### Liste
### Lister
```bash
openclaw plugins list
@ -197,23 +155,27 @@ openclaw plugins list --verbose
openclaw plugins list --json
```
Utilisez `--enabled` pour nafficher que les Plugins chargés. Utilisez `--verbose` pour passer de la
vue tabulaire à des lignes détaillées par Plugin avec les métadonnées de source/origine/version/activation. Utilisez `--json` pour obtenir un inventaire lisible par machine ainsi que des
diagnostics du registre.
Utilisez `--enabled` pour n'afficher que les plugins chargés. Utilisez `--verbose` pour passer de la vue tabulaire à des lignes détaillées par plugin avec les métadonnées de source/origine/version/activation. Utilisez `--json` pour un inventaire lisible par machine ainsi que les diagnostics du registre.
Utilisez `--link` pour éviter de copier un répertoire local (ajoute à `plugins.load.paths`) :
`plugins list` exécute la découverte à partir de l'environnement CLI et de la configuration courants. C'est utile pour vérifier si un plugin est activé/chargeable, mais ce n'est pas une sonde d'exécution en direct d'un processus Gateway déjà en cours d'exécution. Après avoir modifié le code du plugin, son activation, la stratégie de hooks ou `plugins.load.paths`, redémarrez le Gateway qui dessert le canal avant d'attendre l'exécution du nouveau code `register(api)` ou des hooks. Pour les déploiements distants/en conteneur, vérifiez que vous redémarrez bien le processus enfant `openclaw gateway run` réel, et pas seulement un processus wrapper.
Pour le débogage des hooks à l'exécution :
- `openclaw plugins inspect <id> --json` affiche les hooks enregistrés et les diagnostics d'un passage d'inspection avec module chargé.
- `openclaw gateway status --deep --require-rpc` confirme le Gateway joignable, les indications de service/processus, le chemin de configuration et l'état de santé RPC.
- Les hooks de conversation non fournis (`llm_input`, `llm_output`, `agent_end`) nécessitent `plugins.entries.<id>.hooks.allowConversationAccess=true`.
Utilisez `--link` pour éviter de copier un répertoire local (l'ajoute à `plugins.load.paths`) :
```bash
openclaw plugins install -l ./my-plugin
```
`--force` nest pas pris en charge avec `--link`, car les installations liées réutilisent le
chemin source au lieu de copier vers une cible dinstallation gérée.
`--force` n'est pas pris en charge avec `--link`, car les installations liées réutilisent le chemin source au lieu de copier par-dessus une cible d'installation gérée.
Utilisez `--pin` sur les installations npm pour enregistrer la spécification exacte résolue (`name@version`) dans
`plugins.installs` tout en laissant le comportement par défaut non épinglé.
Utilisez `--pin` sur les installations npm pour enregistrer la spec exacte résolue (`name@version`) dans `plugins.installs` tout en conservant le comportement par défaut non épinglé.
### Désinstallation
### Désinstaller
```bash
openclaw plugins uninstall <id>
@ -221,17 +183,13 @@ openclaw plugins uninstall <id> --dry-run
openclaw plugins uninstall <id> --keep-files
```
`uninstall` supprime les enregistrements de Plugin de `plugins.entries`, `plugins.installs`,
de la liste dautorisation de Plugins, et les entrées liées de `plugins.load.paths` le cas échéant.
Pour les Plugins Active Memory, lemplacement mémoire est réinitialisé à `memory-core`.
`uninstall` supprime les enregistrements du plugin de `plugins.entries`, `plugins.installs`, de la liste d'autorisation des plugins et des entrées `plugins.load.paths` liées, le cas échéant. Pour les plugins de mémoire active, l'emplacement mémoire est réinitialisé à `memory-core`.
Par défaut, la désinstallation supprime également le répertoire dinstallation du Plugin sous la racine du répertoire détat actif
des Plugins. Utilisez
`--keep-files` pour conserver les fichiers sur disque.
Par défaut, la désinstallation supprime également le répertoire d'installation du plugin sous la racine des plugins du répertoire d'état actif. Utilisez `--keep-files` pour conserver les fichiers sur le disque.
`--keep-config` est pris en charge comme alias obsolète de `--keep-files`.
### Mise à jour
### Mettre à jour
```bash
openclaw plugins update <id-or-npm-spec>
@ -241,37 +199,19 @@ openclaw plugins update @openclaw/voice-call@beta
openclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install
```
Les mises à jour sappliquent aux installations suivies dans `plugins.installs` et aux installations
de packs de hooks suivies dans `hooks.internal.installs`.
Les mises à jour s'appliquent aux installations suivies dans `plugins.installs` et aux installations suivies de hook packs dans `hooks.internal.installs`.
Lorsque vous passez un identifiant de Plugin, OpenClaw réutilise la spécification dinstallation enregistrée pour ce
Plugin. Cela signifie que les dist-tags précédemment stockés tels que `@beta` et les versions exactes épinglées continuent dêtre utilisés lors des exécutions ultérieures de `update <id>`.
Lorsque vous transmettez un id de plugin, OpenClaw réutilise la spec d'installation enregistrée pour ce plugin. Cela signifie que les dist-tags précédemment stockés, tels que `@beta`, et les versions exactes épinglées continuent d'être utilisées lors des exécutions ultérieures de `update <id>`.
Pour les installations npm, vous pouvez aussi passer une spécification explicite de package npm avec un dist-tag
ou une version exacte. OpenClaw résout ce nom de package vers lenregistrement du Plugin suivi,
met à jour ce Plugin installé, et enregistre la nouvelle spécification npm pour les futures
mises à jour basées sur lidentifiant.
Pour les installations npm, vous pouvez également transmettre une spec explicite de package npm avec une dist-tag ou une version exacte. OpenClaw résout ce nom de package vers l'enregistrement de plugin suivi, met à jour ce plugin installé et enregistre la nouvelle spec npm pour les futures mises à jour basées sur l'id.
Le passage du nom du package npm sans version ni balise résout également vers lenregistrement du
Plugin suivi. Utilisez cela lorsquun Plugin était épinglé à une version exacte et que
vous souhaitez le ramener sur la ligne de publication par défaut du registre.
Le fait de transmettre le nom du package npm sans version ni tag résout également vers l'enregistrement de plugin suivi. Utilisez cela lorsqu'un plugin a été épinglé à une version exacte et que vous souhaitez le faire revenir à la ligne de publication par défaut du registre.
Avant une mise à jour npm en direct, OpenClaw vérifie la version du package installé par rapport
aux métadonnées du registre npm. Si la version installée et lidentité dartefact
enregistrée correspondent déjà à la cible résolue, la mise à jour est ignorée sans
téléchargement, réinstallation ni réécriture de `openclaw.json`.
Avant une mise à jour npm en direct, OpenClaw vérifie la version du package installé par rapport aux métadonnées du registre npm. Si la version installée et l'identité d'artefact enregistrée correspondent déjà à la cible résolue, la mise à jour est ignorée sans téléchargement, réinstallation ni réécriture de `openclaw.json`.
Lorsquun hachage dintégrité stocké existe et que le hachage de lartefact récupéré change,
OpenClaw traite cela comme une dérive dartefact npm. La commande interactive
`openclaw plugins update` affiche les hachages attendus et réels et demande
confirmation avant de continuer. Les helpers de mise à jour non interactifs échouent en fermeture stricte
à moins que lappelant ne fournisse une politique explicite de poursuite.
Lorsqu'un hachage d'intégrité stocké existe et que le hachage de l'artefact récupéré change, OpenClaw traite cela comme une dérive d'artefact npm. La commande interactive `openclaw plugins update` affiche les hachages attendus et réels, puis demande une confirmation avant de continuer. Les assistants de mise à jour non interactifs échouent de manière fermée sauf si l'appelant fournit une politique explicite de poursuite.
`--dangerously-force-unsafe-install` est également disponible sur `plugins update` comme
surcharge de dernier recours pour les faux positifs du scan intégré de code dangereux lors des
mises à jour de Plugin. Cela ne contourne toujours pas les blocages de politique des hooks Plugin `before_install`
ni le blocage en cas déchec de scan, et cela sapplique uniquement aux mises à jour de Plugin, pas aux mises à jour
de packs de hooks.
`--dangerously-force-unsafe-install` est également disponible sur `plugins update` comme surcharge de dernier recours pour les faux positifs du scan intégré de code dangereux pendant les mises à jour de plugins. Il ne contourne toujours pas les blocages de stratégie `before_install` du plugin ni le blocage en cas d'échec du scan, et il s'applique uniquement aux mises à jour de plugins, pas aux mises à jour de hook packs.
### Inspecter
@ -280,25 +220,20 @@ openclaw plugins inspect <id>
openclaw plugins inspect <id> --json
```
Introspection approfondie dun Plugin unique. Affiche lidentité, létat de chargement, la source,
les capacités enregistrées, hooks, outils, commandes, services, méthodes gateway,
routes HTTP, indicateurs de politique, diagnostics, métadonnées dinstallation, capacités de bundle,
et toute prise en charge MCP ou serveur LSP détectée.
Introspection approfondie pour un seul plugin. Affiche l'identité, l'état de chargement, la source, les capacités enregistrées, les hooks, les outils, les commandes, les services, les méthodes Gateway, les routes HTTP, les indicateurs de stratégie, les diagnostics, les métadonnées d'installation, les capacités du bundle, ainsi que toute prise en charge MCP ou de serveur LSP détectée.
Chaque Plugin est classé selon ce quil enregistre réellement à lexécution :
Chaque plugin est classé selon ce qu'il enregistre réellement à l'exécution :
- **plain-capability** — un seul type de capacité (par ex. un Plugin provider uniquement)
- **hybrid-capability** — plusieurs types de capacités (par ex. texte + voix + images)
- **plain-capability** — un type de capacité (par ex. un plugin uniquement fournisseur)
- **hybrid-capability** — plusieurs types de capacité (par ex. texte + voix + images)
- **hook-only** — uniquement des hooks, sans capacités ni surfaces
- **non-capability** — outils/commandes/services mais sans capacités
- **non-capability** — outils/commandes/services mais pas de capacités
Consultez [Formes de Plugin](/fr/plugins/architecture#plugin-shapes) pour plus dinformations sur le modèle de capacités.
Voir [Plugin shapes](/fr/plugins/architecture#plugin-shapes) pour en savoir plus sur le modèle de capacités.
Lindicateur `--json` produit un rapport lisible par machine adapté aux scripts et
aux audits.
L'indicateur `--json` produit un rapport lisible par machine, adapté au scripting et à l'audit.
`inspect --all` affiche un tableau à léchelle de la flotte avec les colonnes forme, types de capacités,
avis de compatibilité, capacités de bundle et résumé des hooks.
`inspect --all` affiche un tableau à l'échelle du parc avec des colonnes pour la forme, les types de capacité, les avis de compatibilité, les capacités du bundle et le résumé des hooks.
`info` est un alias de `inspect`.
@ -308,13 +243,9 @@ avis de compatibilité, capacités de bundle et résumé des hooks.
openclaw plugins doctor
```
`doctor` signale les erreurs de chargement de Plugin, les diagnostics de manifeste/découverte, et les
avis de compatibilité. Lorsque tout est propre, il affiche `No plugin issues
detected.`
`doctor` signale les erreurs de chargement de plugin, les diagnostics de manifeste/découverte et les avis de compatibilité. Lorsque tout est propre, il affiche `No plugin issues detected.`
Pour les échecs de forme de module tels que des exports `register`/`activate` manquants, relancez
avec `OPENCLAW_PLUGIN_LOAD_DEBUG=1` afin dinclure un résumé compact de la forme des exports dans
la sortie de diagnostic.
Pour les échecs de forme de module, tels que des exports `register`/`activate` manquants, relancez avec `OPENCLAW_PLUGIN_LOAD_DEBUG=1` pour inclure un résumé compact de la forme des exports dans la sortie de diagnostic.
### Marketplace
@ -323,13 +254,10 @@ openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
```
La liste marketplace accepte un chemin de marketplace local, un chemin `marketplace.json`, une
notation abrégée GitHub telle que `owner/repo`, une URL de dépôt GitHub ou une URL git. `--json`
affiche le libellé de source résolu ainsi que le manifeste marketplace analysé et
les entrées de Plugin.
La liste marketplace accepte un chemin de marketplace local, un chemin `marketplace.json`, une forme abrégée GitHub comme `owner/repo`, une URL de dépôt GitHub ou une URL git. `--json` affiche l'étiquette de source résolue ainsi que le manifeste marketplace analysé et les entrées de plugin.
## L
## Associé
- [Référence CLI](/fr/cli)
- [Créer des Plugins](/fr/plugins/building-plugins)
- [Plugins de la communauté](/fr/plugins/community)
- [Créer des plugins](/fr/plugins/building-plugins)
- [Plugins communautaires](/fr/plugins/community)

View File

@ -1,93 +1,84 @@
---
read_when:
- Vous avez besoin dune référence de configuration des modèles fournisseur par fournisseur
- Vous voulez des exemples de configuration ou des commandes dintégration CLI pour les fournisseurs de modèles
summary: vue densemble des fournisseurs de modèles avec exemples de configuration + flux CLI
title: fournisseurs de modèles
- Vous avez besoin dune référence de configuration des modèles, fournisseur par fournisseur.
- Vous souhaitez des configurations dexemple ou des commandes dintégration CLI pour les fournisseurs de modèles.
summary: Aperçu des fournisseurs de modèles avec des configurations dexemple + des flux CLI
title: Fournisseurs de modèles
x-i18n:
generated_at: "2026-04-24T07:07:23Z"
generated_at: "2026-04-24T15:25:47Z"
model: gpt-5.4
provider: openai
source_hash: ac9bf48897446576d8bc339b340295691741a589863bb57b379c17a5519bffd7
source_hash: 79258cb26fae7926c65b6fe0db938c7b5736a540b33bc24c1fad5ad706ac8204
source_path: concepts/model-providers.md
workflow: 15
---
Cette page couvre les **fournisseurs LLM/modèle** (et non les canaux de chat comme WhatsApp/Telegram).
Pour les règles de sélection de modèle, voir [/concepts/models](/fr/concepts/models).
Cette page couvre les **fournisseurs de LLM/modèles** (et non les canaux de chat comme WhatsApp/Telegram).
Pour les règles de sélection des modèles, voir [/concepts/models](/fr/concepts/models).
## Règles rapides
- Les références de modèle utilisent `provider/model` (exemple : `opencode/claude-opus-4-6`).
- Les références de modèles utilisent `provider/model` (exemple : `opencode/claude-opus-4-6`).
- `agents.defaults.models` agit comme une liste dautorisation lorsquil est défini.
- Assistants CLI : `openclaw onboard`, `openclaw models list`, `openclaw models set <provider/model>`.
- `models.providers.*.models[].contextWindow` est une métadonnée native du modèle ; `contextTokens` est la limite effective du runtime.
- Règles de repli, sondes de cooldown et persistance des redéfinitions de session : [Basculement de modèle](/fr/concepts/model-failover).
- Les routes de la famille OpenAI sont spécifiques au préfixe : `openai/<model>` utilise le fournisseur direct par clé API
OpenAI dans Pi, `openai-codex/<model>` utilise Codex OAuth dans Pi,
et `openai/<model>` avec `agents.defaults.embeddedHarness.runtime: "codex"` utilise le harnais natif du serveur dapp Codex. Voir [OpenAI](/fr/providers/openai)
et [Harnais Codex](/fr/plugins/codex-harness).
- Lactivation automatique de Plugin suit cette même frontière : `openai-codex/<model>` appartient
au Plugin OpenAI, tandis que le Plugin Codex est activé par
`embeddedHarness.runtime: "codex"` ou les références héritées `codex/<model>`.
- `models.providers.*.models[].contextWindow` correspond aux métadonnées natives du modèle ; `contextTokens` est le plafond effectif à lexécution.
- Règles de basculement, sondes de cooldown et persistance des remplacements de session : [Basculement des modèles](/fr/concepts/model-failover).
- Les routes de la famille OpenAI sont spécifiques au préfixe : `openai/<model>` utilise le fournisseur direct à clé API OpenAI dans PI, `openai-codex/<model>` utilise OAuth Codex dans PI, et `openai/<model>` plus `agents.defaults.embeddedHarness.runtime: "codex"` utilise le harnais natif de serveur dapplication Codex. Voir [OpenAI](/fr/providers/openai) et [Harnais Codex](/fr/plugins/codex-harness).
- Lactivation automatique des plugins suit cette même séparation : `openai-codex/<model>` appartient au plugin OpenAI, tandis que le plugin Codex est activé par `embeddedHarness.runtime: "codex"` ou les références héritées `codex/<model>`.
- GPT-5.5 est actuellement disponible via des routes dabonnement/OAuth :
`openai-codex/gpt-5.5` dans Pi ou `openai/gpt-5.5` avec le harnais du serveur dapp
Codex. La route directe par clé API pour `openai/gpt-5.5` est prise en charge dès que
OpenAI active GPT-5.5 sur lAPI publique ; jusque-là utilisez des modèles activés pour lAPI
tels que `openai/gpt-5.4` pour les configurations `OPENAI_API_KEY`.
`openai-codex/gpt-5.5` dans PI ou `openai/gpt-5.5` avec le harnais de serveur dapplication Codex. La route directe à clé API pour `openai/gpt-5.5` est prise en charge dès quOpenAI active GPT-5.5 sur lAPI publique ; en attendant, utilisez des modèles activés pour lAPI comme `openai/gpt-5.4` pour les configurations `OPENAI_API_KEY`.
## Comportement des fournisseurs possédé par le Plugin
## Comportement des fournisseurs géré par les plugins
La plupart de la logique spécifique au fournisseur vit dans les plugins de fournisseur (`registerProvider(...)`) tandis quOpenClaw conserve la boucle dinférence générique. Les plugins gèrent lintégration, les catalogues de modèles, le mappage auth vers les variables denvironnement, la normalisation transport/configuration, le nettoyage du schéma des outils, la classification du repli, le rafraîchissement OAuth, le rapport dusage, les profils de réflexion/raisonnement, etc.
La majeure partie de la logique spécifique aux fournisseurs vit dans les plugins de fournisseurs (`registerProvider(...)`), tandis quOpenClaw conserve la boucle dinférence générique. Les plugins gèrent lintégration, les catalogues de modèles, le mapping des variables denvironnement dauthentification, la normalisation du transport/de la configuration, le nettoyage des schémas doutils, la classification du basculement, lactualisation OAuth, le reporting dusage, les profils de réflexion/raisonnement, et plus encore.
La liste complète des hooks du SDK de fournisseur et des exemples de plugins intégrés se trouve dans [Plugins de fournisseur](/fr/plugins/sdk-provider-plugins). Un fournisseur qui a besoin dun exécuteur de requête totalement personnalisé relève dune surface dextension distincte, plus profonde.
La liste complète des hooks du SDK fournisseur et des exemples de plugins inclus se trouve dans [Plugins de fournisseur](/fr/plugins/sdk-provider-plugins). Un fournisseur qui a besoin dun exécuteur de requêtes totalement personnalisé relève dune surface dextension distincte et plus profonde.
<Note>
Le `capabilities` du runtime du fournisseur est une métadonnée partagée du runner (famille de fournisseur, particularités de transcription/outillage, indications de transport/cache). Ce nest pas la même chose que le [modèle de capacité public](/fr/plugins/architecture#public-capability-model), qui décrit ce quun Plugin enregistre (inférence de texte, parole, etc.).
Les `capabilities` dexécution du fournisseur correspondent à des métadonnées partagées du runner (famille de fournisseurs, particularités de transcription/outillage, indications de transport/cache). Ce nest pas la même chose que le [modèle public de capacités](/fr/plugins/architecture#public-capability-model), qui décrit ce quun plugin enregistre (inférence de texte, parole, etc.).
</Note>
## Rotation des clés API
- Prend en charge la rotation générique de fournisseur pour certains fournisseurs sélectionnés.
- Prend en charge la rotation générique des fournisseurs pour certains fournisseurs sélectionnés.
- Configurez plusieurs clés via :
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (redéfinition live unique, priorité maximale)
- `<PROVIDER>_API_KEYS` (liste séparée par virgules ou points-virgules)
- `OPENCLAW_LIVE_<PROVIDER>_KEY` (remplacement live unique, priorité la plus élevée)
- `<PROVIDER>_API_KEYS` (liste séparée par des virgules ou des points-virgules)
- `<PROVIDER>_API_KEY` (clé principale)
- `<PROVIDER>_API_KEY_*` (liste numérotée, par ex. `<PROVIDER>_API_KEY_1`)
- Pour les fournisseurs Google, `GOOGLE_API_KEY` est également inclus comme repli.
- `<PROVIDER>_API_KEY_*` (liste numérotée, par exemple `<PROVIDER>_API_KEY_1`)
- Pour les fournisseurs Google, `GOOGLE_API_KEY` est également inclus comme solution de secours.
- Lordre de sélection des clés préserve la priorité et déduplique les valeurs.
- Les requêtes sont réessayées avec la clé suivante uniquement sur des réponses de limitation de débit (par
- Les requêtes sont relancées avec la clé suivante uniquement en cas de réponses de limitation de débit (par
exemple `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many
concurrent requests`, `ThrottlingException`, `concurrency limit reached`,
`workers_ai ... quota limit exceeded`, ou des messages périodiques de limite dusage).
- Les échecs hors limitation de débit échouent immédiatement ; aucune rotation de clé nest tentée.
- Lorsque toutes les clés candidates échouent, lerreur finale du dernier essai est renvoyée.
- Les échecs non liés à la limitation de débit échouent immédiatement ; aucune rotation de clé nest tentée.
- Lorsque toutes les clés candidates échouent, lerreur finale renvoyée est celle de la dernière tentative.
## Fournisseurs intégrés (catalogue pi-ai)
OpenClaw est livré avec le catalogue piai. Ces fournisseurs ne nécessitent **aucune**
configuration `models.providers` ; il suffit de définir lauthentification + choisir un modèle.
configuration `models.providers` ; définissez simplement lauthentification et choisissez un modèle.
### OpenAI
- Fournisseur : `openai`
- Authentification : `OPENAI_API_KEY`
- Rotation facultative : `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, plus `OPENCLAW_LIVE_OPENAI_KEY` (redéfinition unique)
- Rotation facultative : `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, plus `OPENCLAW_LIVE_OPENAI_KEY` (remplacement unique)
- Exemples de modèles : `openai/gpt-5.4`, `openai/gpt-5.4-mini`
- La prise en charge directe par API de GPT-5.5 est prête ici dès quOpenAI expose GPT-5.5 sur lAPI
- La prise en charge directe de lAPI GPT-5.5 est déjà prévue ici dès quOpenAI exposera GPT-5.5 sur lAPI
- CLI : `openclaw onboard --auth-choice openai-api-key`
- Le transport par défaut est `auto` (WebSocket dabord, repli SSE)
- Redéfinition par modèle via `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
- Le préchauffage OpenAI Responses WebSocket est activé par défaut via `params.openaiWsWarmup` (`true`/`false`)
- Le transport par défaut est `auto` (WebSocket en priorité, repli sur SSE)
- Remplacez par modèle via `agents.defaults.models["openai/<model>"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
- Le préchauffage WebSocket OpenAI Responses est activé par défaut via `params.openaiWsWarmup` (`true`/`false`)
- Le traitement prioritaire OpenAI peut être activé via `agents.defaults.models["openai/<model>"].params.serviceTier`
- `/fast` et `params.fastMode` mappent les requêtes directes `openai/*` Responses vers `service_tier=priority` sur `api.openai.com`
- `/fast` et `params.fastMode` font correspondre les requêtes Responses directes `openai/*` à `service_tier=priority` sur `api.openai.com`
- Utilisez `params.serviceTier` si vous voulez un niveau explicite plutôt que le basculement partagé `/fast`
- Les en-têtes dattribution OpenClaw cachés (`originator`, `version`,
`User-Agent`) ne sappliquent que sur le trafic OpenAI natif vers `api.openai.com`, pas
aux proxys génériques compatibles OpenAI
- Les routes OpenAI natives conservent également le `store` de Responses, les indications de cache de prompt et
la mise en forme de charge utile compatible raisonnement OpenAI ; les routes proxy non
- `openai/gpt-5.3-codex-spark` est intentionnellement supprimé dans OpenClaw car les requêtes live à lAPI OpenAI le rejettent et le catalogue Codex actuel ne lexpose pas
- Les en-têtes dattribution OpenClaw masqués (`originator`, `version`,
`User-Agent`) sappliquent uniquement au trafic OpenAI natif vers `api.openai.com`, et non aux proxys génériques compatibles OpenAI
- Les routes OpenAI natives conservent également `store` de Responses, les indications de cache de prompt et
le façonnage de charge utile compatible avec le raisonnement OpenAI ; les routes proxy ne le font pas
- `openai/gpt-5.3-codex-spark` est intentionnellement masqué dans OpenClaw, car les requêtes live vers lAPI OpenAI le rejettent et le catalogue Codex actuel ne lexpose pas
```json5
{
@ -99,12 +90,12 @@ configuration `models.providers` ; il suffit de définir lauthentification +
- Fournisseur : `anthropic`
- Authentification : `ANTHROPIC_API_KEY`
- Rotation facultative : `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, plus `OPENCLAW_LIVE_ANTHROPIC_KEY` (redéfinition unique)
- Rotation facultative : `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, plus `OPENCLAW_LIVE_ANTHROPIC_KEY` (remplacement unique)
- Exemple de modèle : `anthropic/claude-opus-4-6`
- CLI : `openclaw onboard --auth-choice apiKey`
- Les requêtes publiques directes Anthropic prennent en charge le basculement partagé `/fast` et `params.fastMode`, y compris le trafic authentifié par clé API et OAuth envoyé vers `api.anthropic.com` ; OpenClaw le mappe vers Anthropic `service_tier` (`auto` vs `standard_only`)
- Remarque Anthropic : le personnel Anthropic nous a dit que lusage de type Claude CLI dans le style OpenClaw est de nouveau autorisé ; OpenClaw considère donc la réutilisation de Claude CLI et lusage de `claude -p` comme autorisés pour cette intégration sauf si Anthropic publie une nouvelle politique.
- Le jeton de configuration Anthropic reste disponible comme chemin de jeton OpenClaw pris en charge, mais OpenClaw préfère désormais la réutilisation de Claude CLI et `claude -p` lorsquils sont disponibles.
- Les requêtes directes vers Anthropic public prennent en charge le basculement partagé `/fast` et `params.fastMode`, y compris le trafic authentifié par clé API et par OAuth envoyé à `api.anthropic.com` ; OpenClaw fait correspondre cela à `service_tier` dAnthropic (`auto` vs `standard_only`)
- Remarque Anthropic : le personnel dAnthropic nous a indiqué que lusage de Claude CLI de type OpenClaw est de nouveau autorisé ; OpenClaw considère donc la réutilisation de Claude CLI et lusage de `claude -p` comme autorisés pour cette intégration, sauf si Anthropic publie une nouvelle politique.
- Le jeton de configuration Anthropic reste disponible comme chemin de jeton OpenClaw pris en charge, mais OpenClaw privilégie désormais la réutilisation de Claude CLI et `claude -p` lorsquils sont disponibles.
```json5
{
@ -112,27 +103,25 @@ configuration `models.providers` ; il suffit de définir lauthentification +
}
```
### OpenAI Codex OAuth
### OAuth OpenAI Codex
- Fournisseur : `openai-codex`
- Authentification : OAuth (ChatGPT)
- Référence de modèle Pi : `openai-codex/gpt-5.5`
- Référence du harnais natif du serveur dapp Codex : `openai/gpt-5.5` avec `agents.defaults.embeddedHarness.runtime: "codex"`
- Références de modèle héritées : `codex/gpt-*`
- Frontière de Plugin : `openai-codex/*` charge le Plugin OpenAI ; le Plugin natif de serveur dapp Codex
est sélectionné uniquement par le runtime Codex harness ou les références héritées
`codex/*`.
- Référence de modèle PI : `openai-codex/gpt-5.5`
- Référence native du harnais de serveur dapplication Codex : `openai/gpt-5.5` avec `agents.defaults.embeddedHarness.runtime: "codex"`
- Références de modèles héritées : `codex/gpt-*`
- Frontière du plugin : `openai-codex/*` charge le plugin OpenAI ; le plugin natif de serveur dapplication Codex nest sélectionné que par le runtime du harnais Codex ou les références héritées `codex/*`.
- CLI : `openclaw onboard --auth-choice openai-codex` ou `openclaw models auth login --provider openai-codex`
- Le transport par défaut est `auto` (WebSocket dabord, repli SSE)
- Redéfinition par modèle Pi via `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
- `params.serviceTier` est également transmis sur les requêtes natives Codex Responses (`chatgpt.com/backend-api`)
- Les en-têtes dattribution OpenClaw cachés (`originator`, `version`,
- Le transport par défaut est `auto` (WebSocket en priorité, repli sur SSE)
- Remplacez par modèle PI via `agents.defaults.models["openai-codex/<model>"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
- `params.serviceTier` est également transmis sur les requêtes Responses natives Codex (`chatgpt.com/backend-api`)
- Les en-têtes dattribution OpenClaw masqués (`originator`, `version`,
`User-Agent`) ne sont attachés quau trafic Codex natif vers
`chatgpt.com/backend-api`, pas aux proxys génériques compatibles OpenAI
- Partage le même basculement `/fast` et la même configuration `params.fastMode` que `openai/*` direct ; OpenClaw le mappe vers `service_tier=priority`
- `openai-codex/gpt-5.5` conserve `contextWindow = 1000000` natif et un `contextTokens = 272000` de runtime par défaut ; redéfinissez la limite runtime avec `models.providers.openai-codex.models[].contextTokens`
`chatgpt.com/backend-api`, et non aux proxys génériques compatibles OpenAI
- Partage le même basculement `/fast` et la même configuration `params.fastMode` que `openai/*` direct ; OpenClaw fait correspondre cela à `service_tier=priority`
- `openai-codex/gpt-5.5` conserve `contextWindow = 1000000` natif et une valeur par défaut dexécution `contextTokens = 272000` ; remplacez le plafond dexécution avec `models.providers.openai-codex.models[].contextTokens`
- Remarque de politique : OpenAI Codex OAuth est explicitement pris en charge pour les outils/flux de travail externes comme OpenClaw.
- Laccès actuel à GPT-5.5 utilise cette route OAuth/abonnement jusquà ce quOpenAI active GPT-5.5 sur lAPI publique.
- Laccès actuel à GPT-5.5 utilise cette route OAuth/dabonnement jusquà ce quOpenAI active GPT-5.5 sur lAPI publique.
```json5
{
@ -154,15 +143,15 @@ configuration `models.providers` ; il suffit de définir lauthentification +
### Autres options hébergées de type abonnement
- [Qwen Cloud](/fr/providers/qwen) : surface de fournisseur Qwen Cloud plus Alibaba DashScope et mappage de point de terminaison Coding Plan
- [MiniMax](/fr/providers/minimax) : accès MiniMax Coding Plan par OAuth ou clé API
- [Modèles GLM](/fr/providers/glm) : points de terminaison Z.AI Coding Plan ou API générale
- [Qwen Cloud](/fr/providers/qwen) : surface de fournisseur Qwen Cloud ainsi que mapping des points de terminaison Alibaba DashScope et Coding Plan
- [MiniMax](/fr/providers/minimax) : accès OAuth ou par clé API à MiniMax Coding Plan
- [GLM Models](/fr/providers/glm) : points de terminaison Z.AI Coding Plan ou API générales
### OpenCode
- Authentification : `OPENCODE_API_KEY` (ou `OPENCODE_ZEN_API_KEY`)
- Fournisseur de runtime Zen : `opencode`
- Fournisseur de runtime Go : `opencode-go`
- Fournisseur du runtime Zen : `opencode`
- Fournisseur du runtime Go : `opencode-go`
- Exemples de modèles : `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.5`
- CLI : `openclaw onboard --auth-choice opencode-zen` ou `openclaw onboard --auth-choice opencode-go`
@ -176,31 +165,31 @@ configuration `models.providers` ; il suffit de définir lauthentification +
- Fournisseur : `google`
- Authentification : `GEMINI_API_KEY`
- Rotation facultative : `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, repli `GOOGLE_API_KEY`, et `OPENCLAW_LIVE_GEMINI_KEY` (redéfinition unique)
- Rotation facultative : `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, solution de secours `GOOGLE_API_KEY`, et `OPENCLAW_LIVE_GEMINI_KEY` (remplacement unique)
- Exemples de modèles : `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
- Compatibilité : lancienne configuration OpenClaw utilisant `google/gemini-3.1-flash-preview` est normalisée en `google/gemini-3-flash-preview`
- Compatibilité : la configuration OpenClaw héritée utilisant `google/gemini-3.1-flash-preview` est normalisée en `google/gemini-3-flash-preview`
- CLI : `openclaw onboard --auth-choice gemini-api-key`
- Les exécutions directes Gemini acceptent aussi `agents.defaults.models["google/<model>"].params.cachedContent`
(ou lancien `cached_content`) pour transmettre un handle natif fournisseur
`cachedContents/...` ; les hits de cache Gemini apparaissent comme `cacheRead` OpenClaw
- Les exécutions Gemini directes acceptent aussi `agents.defaults.models["google/<model>"].params.cachedContent`
(ou lhérité `cached_content`) pour transmettre un handle natif du fournisseur
`cachedContents/...` ; les succès de cache Gemini apparaissent comme `cacheRead` dans OpenClaw
### Google Vertex et Gemini CLI
- Fournisseurs : `google-vertex`, `google-gemini-cli`
- Authentification : Vertex utilise gcloud ADC ; Gemini CLI utilise son flux OAuth
- Attention : Gemini CLI OAuth dans OpenClaw est une intégration non officielle. Certains utilisateurs ont signalé des restrictions de compte Google après lusage de clients tiers. Consultez les conditions de Google et utilisez un compte non critique si vous choisissez de continuer.
- Gemini CLI OAuth est fourni dans le Plugin `google` intégré.
- Prudence : lintégration OAuth Gemini CLI dans OpenClaw est non officielle. Certains utilisateurs ont signalé des restrictions de compte Google après usage de clients tiers. Consultez les conditions de Google et utilisez un compte non critique si vous choisissez de continuer.
- Gemini CLI OAuth est livré dans le plugin `google` inclus.
- Installez dabord Gemini CLI :
- `brew install gemini-cli`
- ou `npm install -g @google/gemini-cli`
- Activer : `openclaw plugins enable google`
- Connexion : `openclaw models auth login --provider google-gemini-cli --set-default`
- Activez : `openclaw plugins enable google`
- Connectez-vous : `openclaw models auth login --provider google-gemini-cli --set-default`
- Modèle par défaut : `google-gemini-cli/gemini-3-flash-preview`
- Remarque : vous ne collez **pas** didentifiant client ni de secret dans `openclaw.json`. Le flux de connexion CLI stocke
- Remarque : vous **ne** collez **pas** didentifiant client ni de secret dans `openclaw.json`. Le flux de connexion CLI stocke
les jetons dans les profils dauthentification sur lhôte Gateway.
- Si les requêtes échouent après la connexion, définissez `GOOGLE_CLOUD_PROJECT` ou `GOOGLE_CLOUD_PROJECT_ID` sur lhôte Gateway.
- Les réponses JSON Gemini CLI sont analysées depuis `response` ; lusage se replie sur
`stats`, avec `stats.cached` normalisé en `cacheRead` OpenClaw.
- Les réponses JSON de Gemini CLI sont analysées depuis `response` ; lusage se rabat sur
`stats`, avec `stats.cached` normalisé en `cacheRead` dans OpenClaw.
### Z.AI (GLM)
@ -226,70 +215,67 @@ configuration `models.providers` ; il suffit de définir lauthentification +
- Exemple de modèle : `kilocode/kilo/auto`
- CLI : `openclaw onboard --auth-choice kilocode-api-key`
- URL de base : `https://api.kilo.ai/api/gateway/`
- Le catalogue statique de repli fournit `kilocode/kilo/auto` ; la découverte live
- Le catalogue statique de secours inclut `kilocode/kilo/auto` ; la découverte live
`https://api.kilo.ai/api/gateway/models` peut étendre davantage le catalogue
runtime.
dexécution.
- Le routage amont exact derrière `kilocode/kilo/auto` est géré par Kilo Gateway,
pas codé en dur dans OpenClaw.
et non codé en dur dans OpenClaw.
Voir [/providers/kilocode](/fr/providers/kilocode) pour les détails de configuration.
### Autres plugins de fournisseur intégrés
### Autres plugins de fournisseurs inclus
| Fournisseur | Id | Variable denvironnement dauthentification | Exemple de modèle |
| ----------------------- | -------------------------------- | ---------------------------------------------------------- | ---------------------------------------------- |
| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` |
| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` |
| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — |
| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — |
| Groq | `groq` | `GROQ_API_KEY` | — |
| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` ou `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` |
| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` |
| Kimi Coding | `kimi` | `KIMI_API_KEY` ou `KIMICODE_API_KEY` | `kimi/kimi-code` |
| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` |
| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` |
| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` |
| NVIDIA | `nvidia` | `NVIDIA_API_KEY` | `nvidia/nvidia/llama-3.1-nemotron-70b-instruct` |
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` |
| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` |
| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` |
| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` |
| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` |
| Venice | `venice` | `VENICE_API_KEY` | — |
| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` |
| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` |
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` |
| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` |
| Fournisseur | Id | Variable denvironnement dauthentification | Exemple de modèle |
| ----------------------- | -------------------------------- | ------------------------------------------------------------ | ---------------------------------------------- |
| BytePlus | `byteplus` / `byteplus-plan` | `BYTEPLUS_API_KEY` | `byteplus-plan/ark-code-latest` |
| Cerebras | `cerebras` | `CEREBRAS_API_KEY` | `cerebras/zai-glm-4.7` |
| Cloudflare AI Gateway | `cloudflare-ai-gateway` | `CLOUDFLARE_AI_GATEWAY_API_KEY` | — |
| DeepSeek | `deepseek` | `DEEPSEEK_API_KEY` | `deepseek/deepseek-v4-flash` |
| GitHub Copilot | `github-copilot` | `COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN` | — |
| Groq | `groq` | `GROQ_API_KEY` | — |
| Hugging Face Inference | `huggingface` | `HUGGINGFACE_HUB_TOKEN` ou `HF_TOKEN` | `huggingface/deepseek-ai/DeepSeek-R1` |
| Kilo Gateway | `kilocode` | `KILOCODE_API_KEY` | `kilocode/kilo/auto` |
| Kimi Coding | `kimi` | `KIMI_API_KEY` ou `KIMICODE_API_KEY` | `kimi/kimi-code` |
| MiniMax | `minimax` / `minimax-portal` | `MINIMAX_API_KEY` / `MINIMAX_OAUTH_TOKEN` | `minimax/MiniMax-M2.7` |
| Mistral | `mistral` | `MISTRAL_API_KEY` | `mistral/mistral-large-latest` |
| Moonshot | `moonshot` | `MOONSHOT_API_KEY` | `moonshot/kimi-k2.6` |
| NVIDIA | `nvidia` | `NVIDIA_API_KEY` | `nvidia/nvidia/llama-3.1-nemotron-70b-instruct` |
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` | `openrouter/auto` |
| Qianfan | `qianfan` | `QIANFAN_API_KEY` | `qianfan/deepseek-v3.2` |
| Qwen Cloud | `qwen` | `QWEN_API_KEY` / `MODELSTUDIO_API_KEY` / `DASHSCOPE_API_KEY` | `qwen/qwen3.5-plus` |
| StepFun | `stepfun` / `stepfun-plan` | `STEPFUN_API_KEY` | `stepfun/step-3.5-flash` |
| Together | `together` | `TOGETHER_API_KEY` | `together/moonshotai/Kimi-K2.5` |
| Venice | `venice` | `VENICE_API_KEY` | — |
| Vercel AI Gateway | `vercel-ai-gateway` | `AI_GATEWAY_API_KEY` | `vercel-ai-gateway/anthropic/claude-opus-4.6` |
| Volcano Engine (Doubao) | `volcengine` / `volcengine-plan` | `VOLCANO_ENGINE_API_KEY` | `volcengine-plan/ark-code-latest` |
| xAI | `xai` | `XAI_API_KEY` | `xai/grok-4` |
| Xiaomi | `xiaomi` | `XIAOMI_API_KEY` | `xiaomi/mimo-v2-flash` |
Particularités utiles à connaître :
- **OpenRouter** applique ses en-têtes dattribution dapplication et les marqueurs Anthropic `cache_control` uniquement sur les routes vérifiées `openrouter.ai`. En tant que chemin de type proxy compatible OpenAI, il ignore la mise en forme réservée à OpenAI natif (`serviceTier`, `store` de Responses, indications de cache de prompt, compatibilité de raisonnement OpenAI). Les références adossées à Gemini conservent uniquement lassainissement de signature de pensée proxy-Gemini.
- **Kilo Gateway** les références adossées à Gemini suivent le même chemin dassainissement proxy-Gemini ; `kilocode/kilo/auto` et les autres références proxy ne prenant pas en charge le raisonnement ignorent linjection de raisonnement proxy.
- **MiniMax** lintégration par clé API écrit des définitions de modèle M2.7 explicites avec `input: ["text", "image"]` ; le catalogue intégré conserve les références de chat en mode texte uniquement jusquà matérialisation de cette configuration.
- **OpenRouter** applique ses en-têtes dattribution dapplication et les marqueurs Anthropic `cache_control` uniquement sur les routes `openrouter.ai` vérifiées. En tant que chemin de type proxy compatible OpenAI, il ignore le façonnage réservé à OpenAI natif (`serviceTier`, `store` de Responses, indications de cache de prompt, compatibilité de raisonnement OpenAI). Les références adossées à Gemini conservent uniquement lassainissement de signature de pensée proxy-Gemini.
- **Kilo Gateway** : les références adossées à Gemini suivent le même chemin dassainissement proxy-Gemini ; `kilocode/kilo/auto` et les autres références proxy ne prenant pas en charge le raisonnement ignorent linjection de raisonnement proxy.
- **MiniMax** : lintégration par clé API écrit des définitions explicites de modèles M2.7 avec `input: ["text", "image"]` ; le catalogue inclus conserve les références de chat en mode texte uniquement jusquà matérialisation de cette configuration.
- **xAI** utilise le chemin xAI Responses. `/fast` ou `params.fastMode: true` réécrit `grok-3`, `grok-3-mini`, `grok-4` et `grok-4-0709` vers leurs variantes `*-fast`. `tool_stream` est activé par défaut ; désactivez-le via `agents.defaults.models["xai/<model>"].params.tool_stream=false`.
- **Cerebras** les modèles GLM utilisent `zai-glm-4.7` / `zai-glm-4.6` ; lURL de base compatible OpenAI est `https://api.cerebras.ai/v1`.
- **Cerebras** : les modèles GLM utilisent `zai-glm-4.7` / `zai-glm-4.6` ; lURL de base compatible OpenAI est `https://api.cerebras.ai/v1`.
## Fournisseurs via `models.providers` (personnalisé/URL de base)
Utilisez `models.providers` (ou `models.json`) pour ajouter des fournisseurs **personnalisés** ou
des proxys compatibles OpenAI/Anthropic.
Utilisez `models.providers` (ou `models.json`) pour ajouter des fournisseurs **personnalisés** ou des proxys compatibles OpenAI/Anthropic.
Beaucoup des plugins de fournisseur intégrés ci-dessous publient déjà un catalogue par défaut.
Utilisez des entrées explicites `models.providers.<id>` uniquement lorsque vous voulez redéfinir l
URL de base, les en-têtes ou la liste de modèles par défaut.
Un grand nombre des plugins de fournisseurs inclus ci-dessous publient déjà un catalogue par défaut.
Nutilisez des entrées explicites `models.providers.<id>` que si vous souhaitez remplacer lURL de base, les en-têtes ou la liste de modèles par défaut.
### Moonshot AI (Kimi)
Moonshot est fourni comme Plugin de fournisseur intégré. Utilisez le fournisseur intégré par
défaut et ajoutez une entrée explicite `models.providers.moonshot` uniquement lorsque vous
avez besoin de redéfinir lURL de base ou les métadonnées du modèle :
Moonshot est fourni comme plugin de fournisseur inclus. Utilisez le fournisseur intégré par défaut, et ajoutez une entrée explicite `models.providers.moonshot` uniquement lorsque vous avez besoin de remplacer lURL de base ou les métadonnées du modèle :
- Fournisseur : `moonshot`
- Authentification : `MOONSHOT_API_KEY`
- Exemple de modèle : `moonshot/kimi-k2.6`
- CLI : `openclaw onboard --auth-choice moonshot-api-key` ou `openclaw onboard --auth-choice moonshot-api-key-cn`
ID de modèle Kimi K2 :
Identifiants de modèles Kimi K2 :
[//]: # "moonshot-kimi-k2-model-refs:start"
@ -337,13 +323,13 @@ Kimi Coding utilise le point de terminaison compatible Anthropic de Moonshot AI
}
```
Lancien `kimi/k2p5` reste accepté comme identifiant de modèle de compatibilité.
Lidentifiant de modèle de compatibilité hérité `kimi/k2p5` reste accepté.
### Volcano Engine (Doubao)
Volcano Engine (火山引擎) fournit laccès à Doubao et à dautres modèles en Chine.
Volcano Engine (火山引擎) fournit un accès à Doubao et à dautres modèles en Chine.
- Fournisseur : `volcengine` (codage : `volcengine-plan`)
- Fournisseur : `volcengine` (coding : `volcengine-plan`)
- Authentification : `VOLCANO_ENGINE_API_KEY`
- Exemple de modèle : `volcengine-plan/ark-code-latest`
- CLI : `openclaw onboard --auth-choice volcengine-api-key`
@ -356,13 +342,13 @@ Volcano Engine (火山引擎) fournit laccès à Doubao et à dautres mod
}
```
Lintégration choisit par défaut la surface de codage, mais le catalogue général `volcengine/*`
Lintégration choisit par défaut la surface coding, mais le catalogue général `volcengine/*`
est enregistré en même temps.
Dans les sélecteurs de modèles dintégration/configuration, le choix dauthentification Volcengine privilégie à la fois
les lignes `volcengine/*` et `volcengine-plan/*`. Si ces modèles ne sont pas encore chargés,
Dans les sélecteurs de modèles dintégration/configuration, le choix dauthentification Volcengine privilégie à la fois les lignes
`volcengine/*` et `volcengine-plan/*`. Si ces modèles ne sont pas encore chargés,
OpenClaw revient au catalogue non filtré au lieu dafficher un sélecteur
vide limité au fournisseur.
limité au fournisseur vide.
Modèles disponibles :
@ -372,7 +358,7 @@ Modèles disponibles :
- `volcengine/glm-4-7-251222` (GLM 4.7)
- `volcengine/deepseek-v3-2-251201` (DeepSeek V3.2 128K)
Modèles de codage (`volcengine-plan`) :
Modèles coding (`volcengine-plan`) :
- `volcengine-plan/ark-code-latest`
- `volcengine-plan/doubao-seed-code`
@ -382,9 +368,9 @@ Modèles de codage (`volcengine-plan`) :
### BytePlus (international)
BytePlus ARK fournit laccès aux mêmes modèles que Volcano Engine pour les utilisateurs internationaux.
BytePlus ARK fournit un accès aux mêmes modèles que Volcano Engine pour les utilisateurs internationaux.
- Fournisseur : `byteplus` (codage : `byteplus-plan`)
- Fournisseur : `byteplus` (coding : `byteplus-plan`)
- Authentification : `BYTEPLUS_API_KEY`
- Exemple de modèle : `byteplus-plan/ark-code-latest`
- CLI : `openclaw onboard --auth-choice byteplus-api-key`
@ -397,13 +383,13 @@ BytePlus ARK fournit laccès aux mêmes modèles que Volcano Engine pour les
}
```
Lintégration choisit par défaut la surface de codage, mais le catalogue général `byteplus/*`
Lintégration choisit par défaut la surface coding, mais le catalogue général `byteplus/*`
est enregistré en même temps.
Dans les sélecteurs de modèles dintégration/configuration, le choix dauthentification BytePlus privilégie à la fois
les lignes `byteplus/*` et `byteplus-plan/*`. Si ces modèles ne sont pas encore chargés,
OpenClaw revient au catalogue non filtré au lieu dafficher un sélecteur
vide limité au fournisseur.
limité au fournisseur vide.
Modèles disponibles :
@ -411,7 +397,7 @@ Modèles disponibles :
- `byteplus/kimi-k2-5-260127` (Kimi K2.5)
- `byteplus/glm-4-7-251222` (GLM 4.7)
Modèles de codage (`byteplus-plan`) :
Modèles coding (`byteplus-plan`) :
- `byteplus-plan/ark-code-latest`
- `byteplus-plan/doubao-seed-code`
@ -449,7 +435,7 @@ Synthetic fournit des modèles compatibles Anthropic derrière le fournisseur `s
### MiniMax
MiniMax est configuré via `models.providers` parce quil utilise des points de terminaison personnalisés :
MiniMax se configure via `models.providers` car il utilise des points de terminaison personnalisés :
- MiniMax OAuth (global) : `--auth-choice minimax-global-oauth`
- MiniMax OAuth (CN) : `--auth-choice minimax-cn-oauth`
@ -458,28 +444,28 @@ MiniMax est configuré via `models.providers` parce quil utilise des points d
- Authentification : `MINIMAX_API_KEY` pour `minimax` ; `MINIMAX_OAUTH_TOKEN` ou
`MINIMAX_API_KEY` pour `minimax-portal`
Voir [/providers/minimax](/fr/providers/minimax) pour les détails de configuration, les options de modèle et des extraits de configuration.
Voir [/providers/minimax](/fr/providers/minimax) pour les détails de configuration, les options de modèles et les extraits de configuration.
Sur le chemin de streaming compatible Anthropic de MiniMax, OpenClaw désactive la réflexion par
défaut sauf si vous la définissez explicitement, et `/fast on` réécrit
`MiniMax-M2.7` en `MiniMax-M2.7-highspeed`.
`MiniMax-M2.7` vers `MiniMax-M2.7-highspeed`.
Répartition des capacités possédée par le Plugin :
Répartition des capacités gérée par le plugin :
- Les valeurs par défaut texte/chat restent sur `minimax/MiniMax-M2.7`
- La génération dimages utilise `minimax/image-01` ou `minimax-portal/image-01`
- La compréhension dimage est gérée par le Plugin avec `MiniMax-VL-01` sur les deux chemins dauthentification MiniMax
- La recherche web reste sur lidentifiant fournisseur `minimax`
- La génération dimages est `minimax/image-01` ou `minimax-portal/image-01`
- La compréhension dimages est `MiniMax-VL-01`, gérée par le plugin, sur les deux chemins dauthentification MiniMax
- La recherche web reste sur lid de fournisseur `minimax`
### LM Studio
LM Studio est fourni comme Plugin de fournisseur intégré qui utilise lAPI native :
LM Studio est fourni comme plugin de fournisseur inclus, qui utilise lAPI native :
- Fournisseur : `lmstudio`
- Authentification : `LM_API_TOKEN`
- URL de base dinférence par défaut : `http://localhost:1234/v1`
Puis définissez un modèle (remplacez par lun des ID renvoyés par `http://localhost:1234/api/v1/models`) :
Définissez ensuite un modèle (remplacez par lun des identifiants renvoyés par `http://localhost:1234/api/v1/models`) :
```json5
{
@ -489,12 +475,13 @@ Puis définissez un modèle (remplacez par lun des ID renvoyés par `http://l
}
```
OpenClaw utilise les points de terminaison natifs `/api/v1/models` et `/api/v1/models/load` de LM Studio pour la découverte + le chargement automatique, avec `/v1/chat/completions` pour linférence par défaut.
OpenClaw utilise les points de terminaison natifs `/api/v1/models` et `/api/v1/models/load` de LM Studio
pour la découverte et le chargement automatique, avec `/v1/chat/completions` pour linférence par défaut.
Voir [/providers/lmstudio](/fr/providers/lmstudio) pour la configuration et le dépannage.
### Ollama
Ollama est fourni comme Plugin de fournisseur intégré et utilise lAPI native dOllama :
Ollama est fourni comme plugin de fournisseur inclus et utilise lAPI native dOllama :
- Fournisseur : `ollama`
- Authentification : aucune requise (serveur local)
@ -502,7 +489,7 @@ Ollama est fourni comme Plugin de fournisseur intégré et utilise lAPI nativ
- Installation : [https://ollama.com/download](https://ollama.com/download)
```bash
# Install Ollama, then pull a model:
# Installez Ollama, puis récupérez un modèle :
ollama pull llama3.3
```
@ -514,27 +501,27 @@ ollama pull llama3.3
}
```
Ollama est détecté localement à `http://127.0.0.1:11434` lorsque vous activez cette option avec
`OLLAMA_API_KEY`, et le Plugin de fournisseur intégré ajoute directement Ollama à
Ollama est détecté localement à ladresse `http://127.0.0.1:11434` lorsque vous activez loption avec
`OLLAMA_API_KEY`, et le plugin de fournisseur inclus ajoute directement Ollama à
`openclaw onboard` et au sélecteur de modèles. Voir [/providers/ollama](/fr/providers/ollama)
pour lintégration, le mode cloud/local et la configuration personnalisée.
### vLLM
vLLM est fourni comme Plugin de fournisseur intégré pour les serveurs
locaux/auto-hébergés compatibles OpenAI :
vLLM est fourni comme plugin de fournisseur inclus pour les serveurs locaux/autohébergés
compatibles OpenAI :
- Fournisseur : `vllm`
- Authentification : facultative (dépend de votre serveur)
- Authentification : facultative (selon votre serveur)
- URL de base par défaut : `http://127.0.0.1:8000/v1`
Pour activer la découverte automatique en local (nimporte quelle valeur convient si votre serveur nimpose pas dauthentification) :
Pour activer lauto-détection en local (nimporte quelle valeur fonctionne si votre serveur nimpose pas dauthentification) :
```bash
export VLLM_API_KEY="vllm-local"
```
Puis définissez un modèle (remplacez par lun des ID renvoyés par `/v1/models`) :
Définissez ensuite un modèle (remplacez par lun des identifiants renvoyés par `/v1/models`) :
```json5
{
@ -544,25 +531,25 @@ Puis définissez un modèle (remplacez par lun des ID renvoyés par `/v1/mode
}
```
Voir [/providers/vllm](/fr/providers/vllm) pour les détails.
Voir [/providers/vllm](/fr/providers/vllm) pour plus de détails.
### SGLang
SGLang est fourni comme Plugin de fournisseur intégré pour des serveurs
compatibles OpenAI auto-hébergés rapides :
SGLang est fourni comme plugin de fournisseur inclus pour des serveurs autohébergés rapides
compatibles OpenAI :
- Fournisseur : `sglang`
- Authentification : facultative (dépend de votre serveur)
- Authentification : facultative (selon votre serveur)
- URL de base par défaut : `http://127.0.0.1:30000/v1`
Pour activer la découverte automatique en local (nimporte quelle valeur convient si votre serveur nimpose pas
Pour activer lauto-détection en local (nimporte quelle valeur fonctionne si votre serveur nimpose pas
dauthentification) :
```bash
export SGLANG_API_KEY="sglang-local"
```
Puis définissez un modèle (remplacez par lun des ID renvoyés par `/v1/models`) :
Définissez ensuite un modèle (remplacez par lun des identifiants renvoyés par `/v1/models`) :
```json5
{
@ -572,7 +559,7 @@ Puis définissez un modèle (remplacez par lun des ID renvoyés par `/v1/mode
}
```
Voir [/providers/sglang](/fr/providers/sglang) pour les détails.
Voir [/providers/sglang](/fr/providers/sglang) pour plus de détails.
### Proxys locaux (LM Studio, vLLM, LiteLLM, etc.)
@ -618,14 +605,14 @@ Remarques :
- `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }`
- `contextWindow: 200000`
- `maxTokens: 8192`
- Recommandé : définissez des valeurs explicites correspondant aux limites de votre proxy/modèle.
- Pour `api: "openai-completions"` sur des points de terminaison non natifs (toute `baseUrl` non vide dont lhôte nest pas `api.openai.com`), OpenClaw force `compat.supportsDeveloperRole: false` pour éviter les erreurs 400 du fournisseur sur les rôles `developer` non pris en charge.
- Les routes compatibles OpenAI de type proxy ignorent aussi la mise en forme de requête réservée à OpenAI natif :
- Recommandé : définissez des valeurs explicites qui correspondent aux limites de votre proxy/modèle.
- Pour `api: "openai-completions"` sur des points de terminaison non natifs (tout `baseUrl` non vide dont lhôte nest pas `api.openai.com`), OpenClaw force `compat.supportsDeveloperRole: false` afin déviter des erreurs 400 du fournisseur sur les rôles `developer` non pris en charge.
- Les routes compatibles OpenAI de type proxy ignorent également le façonnage des requêtes réservé à OpenAI natif :
pas de `service_tier`, pas de `store` de Responses, pas dindications de cache de prompt, pas de
mise en forme de charge utile compatible raisonnement OpenAI et pas den-têtes
dattribution OpenClaw cachés.
façonnage de charge utile compatible avec le raisonnement OpenAI, et pas den-têtes dattribution
OpenClaw masqués.
- Si `baseUrl` est vide/omis, OpenClaw conserve le comportement OpenAI par défaut (qui se résout vers `api.openai.com`).
- Par sécurité, une valeur explicite `compat.supportsDeveloperRole: true` est quand même redéfinie sur les points de terminaison non natifs `openai-completions`.
- Par sécurité, une valeur explicite `compat.supportsDeveloperRole: true` est tout de même remplacée sur les points de terminaison non natifs `openai-completions`.
## Exemples CLI
@ -635,11 +622,11 @@ openclaw models set opencode/claude-opus-4-6
openclaw models list
```
Voir aussi : [/gateway/configuration](/fr/gateway/configuration) pour des exemples de configuration complets.
Voir aussi : [/gateway/configuration](/fr/gateway/configuration) pour des exemples complets de configuration.
## Liens associés
## Lié
- [Modèles](/fr/concepts/models) — configuration et alias des modèles
- [Basculement de modèle](/fr/concepts/model-failover) — chaînes de repli et comportement de nouvelle tentative
- [Référence de configuration](/fr/gateway/config-agents#agent-defaults) — clés de configuration de modèle
- [Modèles](/fr/concepts/models) — configuration des modèles et alias
- [Basculement des modèles](/fr/concepts/model-failover) — chaînes de secours et comportement de nouvelle tentative
- [Référence de configuration](/fr/gateway/config-agents#agent-defaults) — clés de configuration des modèles
- [Fournisseurs](/fr/providers) — guides de configuration par fournisseur

View File

@ -1,14 +1,14 @@
---
read_when:
- Comprendre la conception de lintégration du SDK Pi dans OpenClaw
- Modifier le cycle de vie des sessions dagent, loutillage ou le câblage du fournisseur pour Pi
summary: Architecture de lintégration de lagent Pi embarqué dOpenClaw et cycle de vie des sessions
title: Architecture dintégration Pi
- Modifier le cycle de vie de la session de lagent, loutillage ou le raccordement du fournisseur pour Pi
summary: Architecture de lintégration de lagent Pi embarqué dOpenClaw et cycle de vie de la session
title: Architecture de lintégration de Pi
x-i18n:
generated_at: "2026-04-24T07:19:32Z"
generated_at: "2026-04-24T15:25:47Z"
model: gpt-5.4
provider: openai
source_hash: 3c0c490cad121a65d557a72887ea619a7d0cff34a62220752214185c9148dc0b
source_hash: 0c0b019ff6d35f6fdcd57b56edd1945e62a96bb4b34e312d7fb0c627f01287f1
source_path: pi.md
workflow: 15
---
@ -17,32 +17,32 @@ Ce document décrit comment OpenClaw sintègre à [pi-coding-agent](https://g
## Vue densemble
OpenClaw utilise le SDK pi pour intégrer un agent de codage IA dans son architecture de gateway de messagerie. Au lieu de lancer pi comme sous-processus ou dutiliser le mode RPC, OpenClaw importe et instancie directement `AgentSession` de pi via `createAgentSession()`. Cette approche embarquée fournit :
OpenClaw utilise le SDK pi pour intégrer un agent de codage IA dans son architecture de Gateway de messagerie. Au lieu de lancer pi comme sous-processus ou dutiliser le mode RPC, OpenClaw importe et instancie directement l`AgentSession` de pi via `createAgentSession()`. Cette approche intégrée fournit :
- un contrôle complet du cycle de vie de la session et de la gestion des événements
- une injection doutils personnalisés (messagerie, sandbox, actions spécifiques au canal)
- une personnalisation du prompt système par canal/contexte
- une persistance de session avec prise en charge du branching/de la Compaction
- une rotation multi-comptes des profils dauthentification avec basculement
- un changement de modèle indépendant du fournisseur
- Un contrôle total sur le cycle de vie de la session et la gestion des événements
- Une injection doutils personnalisés (messagerie, sandbox, actions spécifiques au canal)
- Une personnalisation du prompt système selon le canal/contexte
- La persistance de session avec prise en charge des branches/de la Compaction
- Une rotation des profils dauthentification multi-comptes avec basculement
- Un changement de modèle indépendant du fournisseur
## Dépendances des packages
```json
{
"@mariozechner/pi-agent-core": "0.68.1",
"@mariozechner/pi-ai": "0.68.1",
"@mariozechner/pi-coding-agent": "0.68.1",
"@mariozechner/pi-tui": "0.68.1"
"@mariozechner/pi-agent-core": "0.70.2",
"@mariozechner/pi-ai": "0.70.2",
"@mariozechner/pi-coding-agent": "0.70.2",
"@mariozechner/pi-tui": "0.70.2"
}
```
| Package | But |
| ----------------- | ------------------------------------------------------------------------------------------------------------ |
| `pi-ai` | Abstractions LLM de base : `Model`, `streamSimple`, types de messages, API fournisseurs |
| `pi-agent-core` | Boucle dagent, exécution doutils, types `AgentMessage` |
| Package | Objectif |
| ----------------- | ----------------------------------------------------------------------------------------------------- |
| `pi-ai` | Abstractions LLM de base : `Model`, `streamSimple`, types de message, API des fournisseurs |
| `pi-agent-core` | Boucle dagent, exécution des outils, types `AgentMessage` |
| `pi-coding-agent` | SDK de haut niveau : `createAgentSession`, `SessionManager`, `AuthStorage`, `ModelRegistry`, outils intégrés |
| `pi-tui` | Composants dinterface terminal (utilisés dans le mode TUI local dOpenClaw) |
| `pi-tui` | Composants dinterface utilisateur de terminal (utilisés dans le mode TUI local dOpenClaw) |
## Structure des fichiers
@ -54,67 +54,67 @@ src/agents/
│ ├── run/
│ │ ├── attempt.ts # Logique dune tentative unique avec configuration de session
│ │ ├── params.ts # Type RunEmbeddedPiAgentParams
│ │ ├── payloads.ts # Construire les charges utiles de réponse à partir des résultats dexécution
│ │ ├── images.ts # Injection dimages pour modèle de vision
│ │ ├── payloads.ts # Construction des charges utiles de réponse à partir des résultats dexécution
│ │ ├── images.ts # Injection dimages de modèle de vision
│ │ └── types.ts # EmbeddedRunAttemptResult
│ ├── abort.ts # Détection derreur dabandon
│ ├── abort.ts # Détection des erreurs dabandon
│ ├── cache-ttl.ts # Suivi du TTL du cache pour lélagage du contexte
│ ├── compact.ts # Logique de Compaction manuelle/automatique
│ ├── extensions.ts # Charger les extensions pi pour les exécutions embarquées
│ ├── extensions.ts # Chargement des extensions pi pour les exécutions intégrées
│ ├── extra-params.ts # Paramètres de flux spécifiques au fournisseur
│ ├── google.ts # Correctifs dordre des tours Google/Gemini
│ ├── history.ts # Limitation dhistorique (DM vs groupe)
│ ├── lanes.ts # Voies de commande session/globales
│ ├── history.ts # Limitation de lhistorique (message privé vs groupe)
│ ├── lanes.ts # Voies de commande de session/globales
│ ├── logger.ts # Journaliseur du sous-système
│ ├── model.ts # Résolution de modèle via ModelRegistry
│ ├── model.ts # Résolution de modèle via `ModelRegistry`
│ ├── runs.ts # Suivi des exécutions actives, abandon, file dattente
│ ├── sandbox-info.ts # Informations de sandbox pour le prompt système
│ ├── session-manager-cache.ts # Mise en cache des instances SessionManager
│ ├── sandbox-info.ts # Informations sandbox pour le prompt système
│ ├── session-manager-cache.ts # Mise en cache de linstance `SessionManager`
│ ├── session-manager-init.ts # Initialisation du fichier de session
│ ├── system-prompt.ts # Constructeur du prompt système
│ ├── tool-split.ts # Diviser les outils entre builtIn et custom
│ ├── tool-split.ts # Répartition des outils entre builtIn et custom
│ ├── types.ts # EmbeddedPiAgentMeta, EmbeddedPiRunResult
│ └── utils.ts # Mapping ThinkLevel, description derreur
│ └── utils.ts # Mappage de ThinkLevel, description derreur
├── pi-embedded-subscribe.ts # Abonnement/répartition des événements de session
├── pi-embedded-subscribe.types.ts # SubscribeEmbeddedPiSessionParams
├── pi-embedded-subscribe.handlers.ts # Fabrique de gestionnaires dévénements
├── pi-embedded-subscribe.handlers.lifecycle.ts
├── pi-embedded-subscribe.handlers.types.ts
├── pi-embedded-block-chunker.ts # Segmentation des réponses par blocs en streaming
├── pi-embedded-messaging.ts # Suivi des envois par outil de messagerie
├── pi-embedded-block-chunker.ts # Découpage en blocs des réponses diffusées en continu
├── pi-embedded-messaging.ts # Suivi des envois par loutil de messagerie
├── pi-embedded-helpers.ts # Classification des erreurs, validation des tours
├── pi-embedded-helpers/ # Modules dassistance
├── pi-embedded-utils.ts # Utilitaires de formatage
├── pi-embedded-utils.ts # Utilitaires de mise en forme
├── pi-tools.ts # createOpenClawCodingTools()
├── pi-tools.abort.ts # Enrobage AbortSignal pour les outils
├── pi-tools.policy.ts # Politique de liste blanche/liste noire doutils
├── pi-tools.read.ts # Personnalisations de loutil read
├── pi-tools.schema.ts # Normalisation du schéma doutil
├── pi-tools.abort.ts # Encapsulation AbortSignal pour les outils
├── pi-tools.policy.ts # Politique de liste blanche/liste noire des outils
├── pi-tools.read.ts # Personnalisations de loutil de lecture
├── pi-tools.schema.ts # Normalisation des schémas doutils
├── pi-tools.types.ts # Alias de type AnyAgentTool
├── pi-tool-definition-adapter.ts # Adaptateur AgentTool -> ToolDefinition
├── pi-settings.ts # Remplacements de paramètres
├── pi-hooks/ # Hooks pi personnalisés
│ ├── compaction-safeguard.ts # Extension de garde-fou
│ ├── compaction-safeguard.ts # Extension de protection
│ ├── compaction-safeguard-runtime.ts
│ ├── context-pruning.ts # Extension délagage de contexte par cache-TTL
│ ├── context-pruning.ts # Extension délagage du contexte par TTL du cache
│ └── context-pruning/
├── model-auth.ts # Résolution du profil dauthentification
├── auth-profiles.ts # Stockage de profils, cooldown, basculement
├── auth-profiles.ts # Stockage des profils, refroidissement, basculement
├── model-selection.ts # Résolution du modèle par défaut
├── models-config.ts # Génération de models.json
├── model-catalog.ts # Cache du catalogue de modèles
├── context-window-guard.ts # Validation de fenêtre de contexte
├── context-window-guard.ts # Validation de la fenêtre de contexte
├── failover-error.ts # Classe FailoverError
├── defaults.ts # DEFAULT_PROVIDER, DEFAULT_MODEL
├── system-prompt.ts # buildAgentSystemPrompt()
├── system-prompt-params.ts # Résolution des paramètres de prompt système
├── system-prompt-report.ts # Génération de rapport de débogage
├── tool-summaries.ts # Résumés de description doutils
├── tool-policy.ts # Résolution de politique doutils
├── transcript-policy.ts # Politique de validation de transcription
├── skills.ts # Construction de linstantané/prompt Skills
├── skills/ # Sous-système Skills
├── sandbox.ts # Résolution du contexte de sandbox
├── system-prompt-params.ts # Résolution des paramètres du prompt système
├── system-prompt-report.ts # Génération de rapports de débogage
├── tool-summaries.ts # Résumés des descriptions doutils
├── tool-policy.ts # Résolution de la politique des outils
├── transcript-policy.ts # Politique de validation de la transcription
├── skills.ts # Instantané des Skills/construction du prompt
├── skills/ # Sous-système des Skills
├── sandbox.ts # Résolution du contexte sandbox
├── sandbox/ # Sous-système sandbox
├── channel-tools.ts # Injection doutils spécifiques au canal
├── openclaw-tools.ts # Outils spécifiques à OpenClaw
@ -134,17 +134,16 @@ src/agents/
└── ...
```
Les runtimes actuels des actions de message spécifiques à un canal vivent désormais dans les répertoires dextensions détenus par les plugins
au lieu de `src/agents/tools`, par exemple :
Les runtimes daction de message spécifiques aux canaux vivent désormais dans les répertoires dextension appartenant au Plugin plutôt que sous `src/agents/tools`, par exemple :
- les fichiers de runtime dactions du Plugin Discord
- le fichier de runtime dactions du Plugin Slack
- le fichier de runtime dactions du Plugin Telegram
- le fichier de runtime dactions du Plugin WhatsApp
- les fichiers de runtime daction du Plugin Discord
- le fichier de runtime daction du Plugin Slack
- le fichier de runtime daction du Plugin Telegram
- le fichier de runtime daction du Plugin WhatsApp
## Flux principal dintégration
## Flux dintégration principal
### 1. Exécuter un agent embarqué
### 1. Exécution dun agent intégré
Le point dentrée principal est `runEmbeddedPiAgent()` dans `pi-embedded-runner/run.ts` :
@ -207,7 +206,7 @@ applySystemPromptOverrideToSession(session, systemPromptOverride);
### 3. Abonnement aux événements
`subscribeEmbeddedPiSession()` sabonne aux événements `AgentSession` de pi :
`subscribeEmbeddedPiSession()` sabonne aux événements de l`AgentSession` de pi :
```typescript
const subscription = subscribeEmbeddedPiSession({
@ -226,41 +225,39 @@ const subscription = subscribeEmbeddedPiSession({
Les événements gérés incluent :
- `message_start` / `message_end` / `message_update` (texte/réflexion en streaming)
- `message_start` / `message_end` / `message_update` (texte/réflexion diffusés en continu)
- `tool_execution_start` / `tool_execution_update` / `tool_execution_end`
- `turn_start` / `turn_end`
- `agent_start` / `agent_end`
- `compaction_start` / `compaction_end`
### 4. Prompting
### 4. Envoi du prompt
Après la configuration, la session reçoit un prompt :
Après la configuration, le prompt est envoyé à la session :
```typescript
await session.prompt(effectivePrompt, { images: imageResult.images });
```
Le SDK gère toute la boucle dagent : envoi au LLM, exécution des appels doutils, streaming des réponses.
Le SDK gère la boucle complète de lagent : envoi au LLM, exécution des appels doutils, diffusion continue des réponses.
Linjection dimages est locale au prompt : OpenClaw charge les références dimage à partir du prompt actuel et
les transmet via `images` pour ce tour uniquement. Il ne réanalyse pas les anciens tours de lhistorique
pour réinjecter les charges utiles dimage.
Linjection dimages est locale au prompt : OpenClaw charge les références dimage depuis le prompt actuel et les transmet via `images` uniquement pour ce tour. Il ne réanalyse pas les anciens tours de lhistorique pour réinjecter les charges utiles dimage.
## Architecture des outils
### Pipeline des outils
1. **Outils de base** : `codingTools` de pi (`read`, `bash`, `edit`, `write`)
2. **Remplacements personnalisés** : OpenClaw remplace bash par `exec`/`process`, personnalise read/edit/write pour le sandbox
3. **Outils OpenClaw** : messagerie, navigateur, canvas, sessions, cron, gateway, etc.
4. **Outils de canal** : outils dactions spécifiques à Discord/Telegram/Slack/WhatsApp
5. **Filtrage par politique** : outils filtrés par profil, fournisseur, agent, groupe, politiques de sandbox
6. **Normalisation de schéma** : schémas nettoyés pour les particularités Gemini/OpenAI
7. **Enrobage AbortSignal** : outils enveloppés pour respecter les signaux dabandon
2. **Remplacements personnalisés** : OpenClaw remplace bash par `exec`/`process`, personnalise read/edit/write pour la sandbox
3. **Outils OpenClaw** : messagerie, navigateur, canvas, sessions, Cron, Gateway, etc.
4. **Outils de canal** : outils daction spécifiques à Discord/Telegram/Slack/WhatsApp
5. **Filtrage par politique** : outils filtrés selon le profil, le fournisseur, lagent, le groupe et les politiques sandbox
6. **Normalisation des schémas** : schémas nettoyés pour les particularités de Gemini/OpenAI
7. **Encapsulation AbortSignal** : outils encapsulés pour respecter les signaux dabandon
### Adaptateur de définition doutil
`AgentTool` de pi-agent-core a une signature `execute` différente de `ToolDefinition` de pi-coding-agent. Ladaptateur dans `pi-tool-definition-adapter.ts` fait la jonction :
L`AgentTool` de pi-agent-core a une signature `execute` différente de celle de `ToolDefinition` dans pi-coding-agent. Ladaptateur dans `pi-tool-definition-adapter.ts` fait le lien :
```typescript
export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] {
@ -270,14 +267,14 @@ export function toToolDefinitions(tools: AnyAgentTool[]): ToolDefinition[] {
description: tool.description ?? "",
parameters: tool.parameters,
execute: async (toolCallId, params, onUpdate, _ctx, signal) => {
// La signature de pi-coding-agent diffère de celle de pi-agent-core
// la signature de pi-coding-agent diffère de celle de pi-agent-core
return await tool.execute(toolCallId, params, signal, onUpdate);
},
}));
}
```
### Stratégie de séparation des outils
### Stratégie de répartition des outils
`splitSdkTools()` transmet tous les outils via `customTools` :
@ -290,11 +287,11 @@ export function splitSdkTools(options: { tools: AnyAgentTool[]; sandboxEnabled:
}
```
Cela garantit que le filtrage de politique dOpenClaw, lintégration du sandbox et lensemble doutils étendu restent cohérents entre les fournisseurs.
Cela garantit que le filtrage par politique dOpenClaw, lintégration de la sandbox et lensemble doutils étendu restent cohérents entre les fournisseurs.
## Construction du prompt système
Le prompt système est construit dans `buildAgentSystemPrompt()` (`system-prompt.ts`). Il assemble un prompt complet avec des sections incluant outillage, style dappel doutil, garde-fous de sécurité, référence CLI OpenClaw, Skills, documentation, espace de travail, sandbox, messagerie, Reply Tags, voix, réponses silencieuses, Heartbeats, métadonnées dexécution, plus mémoire et réactions lorsquelles sont activées, ainsi que des fichiers de contexte facultatifs et du contenu supplémentaire de prompt système. Les sections sont réduites pour le mode de prompt minimal utilisé par les sous-agents.
Le prompt système est construit dans `buildAgentSystemPrompt()` (`system-prompt.ts`). Il assemble un prompt complet avec des sections incluant loutillage, le style dappel doutil, les garde-fous de sécurité, la référence CLI dOpenClaw, les Skills, la documentation, lespace de travail, la sandbox, la messagerie, les balises de réponse, la voix, les réponses silencieuses, les Heartbeats, les métadonnées dexécution, ainsi que Memory et Reactions lorsquils sont activés, et éventuellement des fichiers de contexte et du contenu supplémentaire de prompt système. Les sections sont réduites pour le mode de prompt minimal utilisé par les sous-agents.
Le prompt est appliqué après la création de la session via `applySystemPromptOverrideToSession()` :
@ -303,21 +300,21 @@ const systemPromptOverride = createSystemPromptOverride(appendPrompt);
applySystemPromptOverrideToSession(session, systemPromptOverride);
```
## Gestion de session
## Gestion des sessions
### Fichiers de session
Les sessions sont des fichiers JSONL avec structure en arbre (liaison id/parentId). `SessionManager` de Pi gère la persistance :
Les sessions sont des fichiers JSONL avec une structure arborescente (liaison id/parentId). Le `SessionManager` de Pi gère la persistance :
```typescript
const sessionManager = SessionManager.open(params.sessionFile);
```
OpenClaw encapsule cela avec `guardSessionManager()` pour la sécurité des résultats doutil.
OpenClaw encapsule cela avec `guardSessionManager()` pour la sécurité des résultats doutils.
### Mise en cache des sessions
`session-manager-cache.ts` met en cache les instances `SessionManager` pour éviter une réanalyse répétée des fichiers :
`session-manager-cache.ts` met en cache les instances de SessionManager pour éviter lanalyse répétée des fichiers :
```typescript
await prewarmSessionFile(params.sessionFile);
@ -327,16 +324,11 @@ trackSessionManagerAccess(params.sessionFile);
### Limitation de lhistorique
`limitHistoryTurns()` tronque lhistorique de conversation selon le type de canal (DM vs groupe).
`limitHistoryTurns()` réduit lhistorique de conversation selon le type de canal (message privé vs groupe).
### Compaction
La Compaction automatique se déclenche en cas de dépassement de contexte. Les signatures courantes de
dépassement incluent `request_too_large`, `context length exceeded`, `input exceeds the
maximum number of tokens`, `input token count exceeds the maximum number of
input tokens`, `input is too long for the model`, et `ollama error: context
length exceeded`. `compactEmbeddedPiSessionDirect()` gère la
Compaction manuelle :
La Compaction automatique se déclenche en cas de dépassement du contexte. Les signatures courantes de dépassement incluent `request_too_large`, `context length exceeded`, `input exceeds the maximum number of tokens`, `input token count exceeds the maximum number of input tokens`, `input is too long for the model` et `ollama error: context length exceeded`. `compactEmbeddedPiSessionDirect()` gère la Compaction manuelle :
```typescript
const compactResult = await compactEmbeddedPiSessionDirect({
@ -344,7 +336,7 @@ const compactResult = await compactEmbeddedPiSessionDirect({
});
```
## Authentification et résolution de modèle
## Authentification et résolution du modèle
### Profils dauthentification
@ -355,14 +347,14 @@ const authStore = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false
const profileOrder = resolveAuthProfileOrder({ cfg, store: authStore, provider, preferredProfile });
```
Les profils tournent en cas déchec avec suivi de cooldown :
Les profils tournent en cas déchec avec suivi de refroidissement :
```typescript
await markAuthProfileFailure({ store, profileId, reason, cfg, agentDir });
const rotated = await advanceAuthProfile();
```
### Résolution de modèle
### Résolution du modèle
```typescript
import { resolveModel } from "./pi-embedded-runner/model.js";
@ -374,13 +366,13 @@ const { model, error, authStorage, modelRegistry } = resolveModel(
config,
);
// Utilise ModelRegistry et AuthStorage de pi
// Utilise `ModelRegistry` et `AuthStorage` de pi
authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
```
### Basculement
`FailoverError` déclenche le repli de modèle lorsquil est configuré :
`FailoverError` déclenche le repli sur un autre modèle lorsquil est configuré :
```typescript
if (fallbackConfigured && isFailoverErrorMessage(errorText)) {
@ -398,9 +390,9 @@ if (fallbackConfigured && isFailoverErrorMessage(errorText)) {
OpenClaw charge des extensions Pi personnalisées pour des comportements spécialisés :
### Garde-fou de Compaction
### Protection de Compaction
`src/agents/pi-hooks/compaction-safeguard.ts` ajoute des garde-fous à la Compaction, y compris un budget de tokens adaptatif ainsi que des résumés déchec doutils et dopérations de fichiers :
`src/agents/pi-hooks/compaction-safeguard.ts` ajoute des garde-fous à la Compaction, notamment une budgétisation adaptative des jetons ainsi que des résumés des échecs doutils et des opérations sur fichiers :
```typescript
if (resolveCompactionMode(params.cfg) === "safeguard") {
@ -411,7 +403,7 @@ if (resolveCompactionMode(params.cfg) === "safeguard") {
### Élagage du contexte
`src/agents/pi-hooks/context-pruning.ts` implémente un élagage de contexte basé sur le cache-TTL :
`src/agents/pi-hooks/context-pruning.ts` implémente un élagage du contexte basé sur le TTL du cache :
```typescript
if (cfg?.agents?.defaults?.contextPruning?.mode === "cache-ttl") {
@ -425,24 +417,24 @@ if (cfg?.agents?.defaults?.contextPruning?.mode === "cache-ttl") {
}
```
## Streaming et réponses par blocs
## Diffusion continue et réponses par blocs
### Segmentation par blocs
### Découpage en blocs
`EmbeddedBlockChunker` gère le streaming du texte en blocs de réponse distincts :
`EmbeddedBlockChunker` gère la diffusion continue du texte en blocs de réponse distincts :
```typescript
const blockChunker = blockChunking ? new EmbeddedBlockChunker(blockChunking) : null;
```
### Retrait des balises thinking/final
### Suppression des balises de réflexion/finales
La sortie en streaming est traitée pour supprimer les blocs `<think>`/`<thinking>` et extraire le contenu `<final>` :
La sortie diffusée en continu est traitée pour supprimer les blocs `<think>`/`<thinking>` et extraire le contenu de `<final>` :
```typescript
const stripBlockTags = (text: string, state: { thinking: boolean; final: boolean }) => {
// Supprimer le contenu <think>...</think>
// Si enforceFinalTag, ne renvoyer que le contenu <final>...</final>
// Supprime le contenu <think>...</think>
// Si enforceFinalTag, retourne uniquement le contenu <final>...</final>
};
```
@ -461,17 +453,17 @@ const { text: cleanedText, mediaUrls, audioAsVoice, replyToId } = consumeReplyDi
`pi-embedded-helpers.ts` classe les erreurs pour une gestion appropriée :
```typescript
isContextOverflowError(errorText) // Contexte trop grand
isContextOverflowError(errorText) // Contexte trop volumineux
isCompactionFailureError(errorText) // Échec de la Compaction
isAuthAssistantError(lastAssistant) // Échec dauthentification
isRateLimitAssistantError(...) // Limité par débit
isRateLimitAssistantError(...) // Limitation de débit
isFailoverAssistantError(...) // Doit basculer
classifyFailoverReason(errorText) // "auth" | "rate_limit" | "quota" | "timeout" | ...
```
### Repli du niveau de réflexion
Si un niveau de réflexion nest pas pris en charge, un repli sapplique :
Si un niveau de réflexion nest pas pris en charge, un repli est appliqué :
```typescript
const fallbackThinking = pickFallbackThinkingLevel({
@ -484,9 +476,9 @@ if (fallbackThinking) {
}
```
## Intégration du sandbox
## Intégration de la sandbox
Lorsque le mode sandbox est activé, les outils et chemins sont contraints :
Lorsque le mode sandbox est activé, les outils et les chemins sont contraints :
```typescript
const sandbox = await resolveSandboxContext({
@ -496,9 +488,9 @@ const sandbox = await resolveSandboxContext({
});
if (sandboxRoot) {
// Utiliser des outils read/edit/write sandboxés
// Exec sexécute dans un conteneur
// Browser utilise une URL bridge
// Utiliser des outils read/edit/write en sandbox
// Exec sexécute dans le conteneur
// Le navigateur utilise lURL du bridge
}
```
@ -507,54 +499,54 @@ if (sandboxRoot) {
### Anthropic
- Nettoyage des chaînes magiques de refus
- Validation des tours pour des rôles consécutifs
- Validation stricte en amont par Pi des paramètres doutils
- Validation des tours pour les rôles consécutifs
- Validation stricte en amont des paramètres doutils Pi
### Google/Gemini
- Assainissement des schémas doutils détenus par les plugins
- Assainissement du schéma doutils appartenant au Plugin
### OpenAI
- Outil `apply_patch` pour les modèles Codex
- Gestion de rétrogradation du niveau de réflexion
- Gestion du déclassement du niveau de réflexion
## Intégration TUI
OpenClaw dispose aussi dun mode TUI local qui utilise directement les composants pi-tui :
OpenClaw dispose également dun mode TUI local qui utilise directement les composants de pi-tui :
```typescript
// src/tui/tui.ts
import { ... } from "@mariozechner/pi-tui";
```
Cela fournit une expérience terminal interactive similaire au mode natif de Pi.
Cela fournit une expérience de terminal interactive similaire au mode natif de pi.
## Différences clés par rapport à Pi CLI
## Différences clés par rapport à la CLI Pi
| Aspect | Pi CLI | OpenClaw Embedded |
| --------------- | ----------------------- | ---------------------------------------------------------------------------------------------- |
| Invocation | commande `pi` / RPC | SDK via `createAgentSession()` |
| Outils | outils de codage par défaut | suite doutils OpenClaw personnalisée |
| Prompt système | AGENTS.md + prompts | dynamique par canal/contexte |
| Stockage de session | `~/.pi/agent/sessions/` | `~/.openclaw/agents/<agentId>/sessions/` (ou `$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/`) |
| Auth | identifiant unique | multi-profils avec rotation |
| Extensions | chargées depuis le disque | chemins programmatiques + disque |
| Gestion des événements | rendu TUI | basée sur callbacks (`onBlockReply`, etc.) |
| Aspect | CLI Pi | Intégration OpenClaw |
| --------------- | ----------------------- | ------------------------------------------------------------------------------------------------- |
| Invocation | commande `pi` / RPC | SDK via `createAgentSession()` |
| Outils | Outils de codage par défaut | Suite doutils OpenClaw personnalisée |
| Prompt système | AGENTS.md + prompts | Dynamique par canal/contexte |
| Stockage des sessions | `~/.pi/agent/sessions/` | `~/.openclaw/agents/<agentId>/sessions/` (ou `$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/`) |
| Auth | Identifiant unique | Multi-profils avec rotation |
| Extensions | Chargées depuis le disque | Chemins programmatiques + disque |
| Gestion des événements | Rendu TUI | Basée sur des callbacks (`onBlockReply`, etc.) |
## Considérations futures
Domaines potentiels de refonte :
1. **Alignement des signatures doutils** : adaptation actuelle entre les signatures pi-agent-core et pi-coding-agent
2. **Encapsulation du gestionnaire de session** : `guardSessionManager` ajoute de la sécurité mais accroît la complexité
3. **Chargement des extensions** : pourrait utiliser plus directement `ResourceLoader` de pi
4. **Complexité du gestionnaire de streaming** : `subscribeEmbeddedPiSession` a pris de lampleur
5. **Particularités des fournisseurs** : nombreux chemins de code spécifiques aux fournisseurs que pi pourrait potentiellement gérer
1. **Alignement des signatures doutils** : adaptation actuelle entre les signatures de pi-agent-core et pi-coding-agent
2. **Encapsulation du gestionnaire de session** : `guardSessionManager` ajoute de la sécurité mais augmente la complexité
3. **Chargement des extensions** : pourrait utiliser `ResourceLoader` de pi plus directement
4. **Complexité du gestionnaire de diffusion continue** : `subscribeEmbeddedPiSession` a beaucoup grossi
5. **Particularités des fournisseurs** : de nombreux chemins de code spécifiques aux fournisseurs que pi pourrait potentiellement gérer
## Tests
La couverture de lintégration Pi sétend à ces suites :
La couverture de lintégration Pi sétend aux suites suivantes :
- `src/agents/pi-*.test.ts`
- `src/agents/pi-auth-json.test.ts`
@ -568,13 +560,13 @@ La couverture de lintégration Pi sétend à ces suites :
- `src/agents/pi-settings.test.ts`
- `src/agents/pi-hooks/**/*.test.ts`
Live/adhésion explicite :
En direct/sur activation :
- `src/agents/pi-embedded-runner-extraparams.live.test.ts` (activez `OPENCLAW_LIVE_TEST=1`)
- `src/agents/pi-embedded-runner-extraparams.live.test.ts` (activer `OPENCLAW_LIVE_TEST=1`)
Pour les commandes dexécution actuelles, voir [Flux de développement Pi](/fr/pi-dev).
## Lié
## Liens associés
- [Flux de développement Pi](/fr/pi-dev)
- [Vue densemble de linstallation](/fr/install)
- [Aperçu de linstallation](/fr/install)

View File

@ -1,14 +1,14 @@
---
read_when:
- Vous voulez utiliser DeepSeek avec OpenClaw
- Vous avez besoin de la variable denvironnement de clé API ou du choix dauthentification CLI
summary: configuration de DeepSeek (authentification + sélection de modèle)
- Vous souhaitez utiliser DeepSeek avec OpenClaw
- Vous avez besoin de la variable denvironnement de clé API ou du choix dauthentification du CLI
summary: Configuration de DeepSeek (authentification + sélection du modèle)
title: DeepSeek
x-i18n:
generated_at: "2026-04-24T07:26:27Z"
generated_at: "2026-04-24T15:25:47Z"
model: gpt-5.4
provider: openai
source_hash: ead407c67c05bd8700db1cba36defdd9d47bdc9a071c76a07c4b4fb82f6b80e2
source_hash: 5b0d2345c72328e14351d71c5784204dc6ed9dc922f919b6adfac394001c3261
source_path: providers/deepseek.md
workflow: 15
---
@ -25,18 +25,18 @@ x-i18n:
## Premiers pas
<Steps>
<Step title="Obtenir votre clé API">
<Step title="Obtenez votre clé API">
Créez une clé API sur [platform.deepseek.com](https://platform.deepseek.com/api_keys).
</Step>
<Step title="Lancer lintégration">
<Step title="Exécutez lonboarding">
```bash
openclaw onboard --auth-choice deepseek-api-key
```
Cela vous demandera votre clé API et définira `deepseek/deepseek-chat` comme modèle par défaut.
Cela vous demandera votre clé API et définira `deepseek/deepseek-v4-flash` comme modèle par défaut.
</Step>
<Step title="Vérifier que les modèles sont disponibles">
<Step title="Vérifiez que les modèles sont disponibles">
```bash
openclaw models list --provider deepseek
```
@ -45,7 +45,7 @@ x-i18n:
<AccordionGroup>
<Accordion title="Configuration non interactive">
Pour les installations scriptées ou headless, passez directement tous les indicateurs :
Pour les installations scriptées ou sans interface, transmettez tous les indicateurs directement :
```bash
openclaw onboard --non-interactive \
@ -60,20 +60,24 @@ x-i18n:
</AccordionGroup>
<Warning>
Si la Gateway sexécute comme démon (launchd/systemd), assurez-vous que `DEEPSEEK_API_KEY`
est disponible pour ce processus (par exemple dans `~/.openclaw/.env` ou via
Si le Gateway sexécute en tant que démon (launchd/systemd), assurez-vous que `DEEPSEEK_API_KEY`
est disponible pour ce processus (par exemple, dans `~/.openclaw/.env` ou via
`env.shellEnv`).
</Warning>
## Catalogue intégré
| Référence de modèle | Nom | Entrée | Contexte | Sortie max | Remarques |
| ---------------------------- | ----------------- | ------ | -------- | ---------- | ------------------------------------------------ |
| `deepseek/deepseek-chat` | DeepSeek Chat | texte | 131,072 | 8,192 | Modèle par défaut ; surface non réfléchie DeepSeek V3.2 |
| `deepseek/deepseek-reasoner` | DeepSeek Reasoner | texte | 131,072 | 65,536 | Surface V3.2 avec raisonnement activé |
| Référence du modèle | Nom | Entrée | Contexte | Sortie max | Notes |
| ---------------------------- | ----------------- | ------ | --------- | ---------- | ------------------------------------------ |
| `deepseek/deepseek-v4-flash` | DeepSeek V4 Flash | text | 1,000,000 | 384,000 | Modèle par défaut ; interface V4 compatible avec le thinking |
| `deepseek/deepseek-v4-pro` | DeepSeek V4 Pro | text | 1,000,000 | 384,000 | Interface V4 compatible avec le thinking |
| `deepseek/deepseek-chat` | DeepSeek Chat | text | 131,072 | 8,192 | Interface sans thinking DeepSeek V3.2 |
| `deepseek/deepseek-reasoner` | DeepSeek Reasoner | text | 131,072 | 65,536 | Interface V3.2 avec raisonnement activé |
<Tip>
Les deux modèles intégrés annoncent actuellement une compatibilité dusage du streaming dans le code source.
Les modèles V4 prennent en charge le contrôle `thinking` de DeepSeek. OpenClaw rejoue également
`reasoning_content` de DeepSeek lors des tours de suivi afin que les sessions de thinking avec des appels
doutils puissent se poursuivre.
</Tip>
## Exemple de configuration
@ -83,7 +87,7 @@ Les deux modèles intégrés annoncent actuellement une compatibilité dusage
env: { DEEPSEEK_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "deepseek/deepseek-chat" },
model: { primary: "deepseek/deepseek-v4-flash" },
},
},
}
@ -92,10 +96,10 @@ Les deux modèles intégrés annoncent actuellement une compatibilité dusage
## Liens associés
<CardGroup cols={2}>
<Card title="Sélection de modèle" href="/fr/concepts/model-providers" icon="layers">
Choisir les fournisseurs, les références de modèle et le comportement de repli.
<Card title="Sélection du modèle" href="/fr/concepts/model-providers" icon="layers">
Choisir les fournisseurs, les références de modèle et le comportement de basculement.
</Card>
<Card title="Référence de configuration" href="/fr/gateway/configuration-reference" icon="gear">
Référence complète de configuration pour les agents, modèles et fournisseurs.
Référence complète de configuration pour les agents, les modèles et les fournisseurs.
</Card>
</CardGroup>

View File

@ -1,23 +1,23 @@
---
read_when:
- Installation ou configuration de plugins
- Comprendre les règles de découverte et de chargement des plugins
- Utiliser des bundles de plugins compatibles avec Codex/Claude
- Installer ou configurer des plugins
- Comprendre la découverte des plugins et les règles de chargement
- Travailler avec des bundles de plugins compatibles Codex/Claude
sidebarTitle: Install and Configure
summary: Installer, configurer et gérer les plugins OpenClaw
title: Plugins
x-i18n:
generated_at: "2026-04-24T08:58:31Z"
generated_at: "2026-04-24T15:25:47Z"
model: gpt-5.4
provider: openai
source_hash: 83ab1218d6677ad518a4991ca546d55eed9648e1fa92b76b7433ecd5df569e28
source_hash: 947bb7ffc13280fd63f79bb68cb18a37c6614144b91a83afd38e5ac3c5187aed
source_path: tools/plugin.md
workflow: 15
---
Les plugins étendent OpenClaw avec de nouvelles capacités : canaux, fournisseurs de modèles,
harnesses dagent, outils, Skills, parole, transcription en temps réel, voix en temps réel,
compréhension des médias, génération dimages, génération vidéo, récupération web, recherche web,
harnais dagent, outils, skills, parole, transcription en temps réel, voix en temps réel,
compréhension des médias, génération dimages, génération de vidéos, récupération web, recherche web,
et plus encore. Certains plugins sont **core** (livrés avec OpenClaw), dautres
sont **externes** (publiés sur npm par la communauté).
@ -47,12 +47,12 @@ sont **externes** (publiés sur npm par la communauté).
openclaw gateway restart
```
Configurez ensuite sous `plugins.entries.\<id\>.config` dans votre fichier de configuration.
Ensuite, configurez sous `plugins.entries.\<id\>.config` dans votre fichier de configuration.
</Step>
</Steps>
Si vous préférez un contrôle natif dans le chat, activez `commands.plugins: true` et utilisez :
Si vous préférez un contrôle natif au chat, activez `commands.plugins: true` et utilisez :
```text
/plugin install clawhub:@openclaw/voice-call
@ -60,17 +60,18 @@ Si vous préférez un contrôle natif dans le chat, activez `commands.plugins: t
/plugin enable voice-call
```
Le chemin dinstallation utilise le même résolveur que la CLI : chemin/archive local(e), `clawhub:<pkg>` explicite, ou spécification de package simple (ClawHub dabord, puis repli sur npm).
Le chemin dinstallation utilise le même résolveur que la CLI : chemin/archive local,
`clawhub:<pkg>` explicite, ou spécification de package nue (ClawHub dabord, puis repli sur npm).
Si la configuration est invalide, linstallation échoue normalement de manière stricte et vous oriente vers
Si la configuration est invalide, linstallation échoue normalement en mode fermé et vous oriente vers
`openclaw doctor --fix`. La seule exception de récupération est un chemin étroit de
réinstallation de plugin inclus pour les plugins qui optent pour
réinstallation de plugin bundlé pour les plugins qui optent pour
`openclaw.install.allowInvalidConfigRecovery`.
Les installations packagées dOpenClaw ninstallent pas demblée tout larbre de dépendances dexécution
de chaque plugin inclus. Lorsquun plugin inclus appartenant à OpenClaw est actif à partir de la
configuration du plugin, dune configuration de canal héritée ou dun manifeste activé par défaut, le
démarrage ne répare que les dépendances dexécution déclarées de ce plugin avant de limporter.
Les installations packagées dOpenClaw ninstallent pas de manière anticipée tout larbre de dépendances
dexécution de chaque plugin bundlé. Lorsquun plugin bundlé appartenant à OpenClaw est actif via
la configuration des plugins, une ancienne configuration de canal, ou un manifeste activé par défaut,
le démarrage répare uniquement les dépendances dexécution déclarées de ce plugin avant de limporter.
Les plugins externes et les chemins de chargement personnalisés doivent toujours être installés via
`openclaw plugins install`.
@ -80,13 +81,13 @@ OpenClaw reconnaît deux formats de plugins :
| Format | Fonctionnement | Exemples |
| ---------- | ----------------------------------------------------------------- | ------------------------------------------------------ |
| **Natif** | `openclaw.plugin.json` + module dexécution ; sexécute en processus | Plugins officiels, packages npm communautaires |
| **Bundle** | Disposition compatible Codex/Claude/Cursor ; mappée aux fonctionnalités OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
| **Native** | `openclaw.plugin.json` + module dexécution ; sexécute en processus | Plugins officiels, packages npm communautaires |
| **Bundle** | Structure compatible Codex/Claude/Cursor ; mappée aux fonctionnalités OpenClaw | `.codex-plugin/`, `.claude-plugin/`, `.cursor-plugin/` |
Les deux apparaissent dans `openclaw plugins list`. Voir [Plugin Bundles](/fr/plugins/bundles) pour les détails des bundles.
Les deux apparaissent dans `openclaw plugins list`. Voir [Bundles de plugins](/fr/plugins/bundles) pour les détails sur les bundles.
Si vous écrivez un plugin natif, commencez par [Building Plugins](/fr/plugins/building-plugins)
et [Plugin SDK Overview](/fr/plugins/sdk-overview).
Si vous écrivez un plugin natif, commencez par [Créer des plugins](/fr/plugins/building-plugins)
et la [Vue densemble du SDK Plugin](/fr/plugins/sdk-overview).
## Plugins officiels
@ -113,21 +114,21 @@ et [Plugin SDK Overview](/fr/plugins/sdk-overview).
</Accordion>
<Accordion title="Plugins de mémoire">
- `memory-core` — recherche mémoire incluse (par défaut via `plugins.slots.memory`)
- `memory-core` — recherche mémoire bundlée (par défaut via `plugins.slots.memory`)
- `memory-lancedb` — mémoire à long terme installée à la demande avec rappel/capture automatiques (définissez `plugins.slots.memory = "memory-lancedb"`)
</Accordion>
<Accordion title="Fournisseurs vocaux (activés par défaut)">
<Accordion title="Fournisseurs de parole (activés par défaut)">
`elevenlabs`, `microsoft`
</Accordion>
<Accordion title="Autres">
- `browser` — plugin navigateur inclus pour loutil navigateur, la CLI `openclaw browser`, la méthode gateway `browser.request`, le runtime navigateur et le service de contrôle navigateur par défaut (activé par défaut ; désactivez-le avant de le remplacer)
- `browser` — plugin de navigateur bundlé pour loutil navigateur, la CLI `openclaw browser`, la méthode Gateway `browser.request`, le runtime du navigateur et le service de contrôle du navigateur par défaut (activé par défaut ; désactivez-le avant de le remplacer)
- `copilot-proxy` — pont proxy VS Code Copilot (désactivé par défaut)
</Accordion>
</AccordionGroup>
Vous cherchez des plugins tiers ? Voir [Community Plugins](/fr/plugins/community).
Vous cherchez des plugins tiers ? Voir [Plugins communautaires](/fr/plugins/community).
## Configuration
@ -147,16 +148,27 @@ Vous cherchez des plugins tiers ? Voir [Community Plugins](/fr/plugins/communit
| Champ | Description |
| ---------------- | --------------------------------------------------------- |
| `enabled` | Interrupteur maître (par défaut : `true`) |
| `allow` | Liste dautorisation des plugins (facultatif) |
| `deny` | Liste de refus des plugins (facultatif ; le refus prime) |
| `load.paths` | Fichiers/répertoires de plugins supplémentaires |
| `slots` | Sélecteurs de slot exclusifs (par ex. `memory`, `contextEngine`) |
| `entries.\<id\>` | Activations + configuration par plugin |
| `enabled` | Interrupteur principal (par défaut : `true`) |
| `allow` | Liste dautorisation des plugins (facultatif) |
| `deny` | Liste de refus des plugins (facultatif ; deny lemporte) |
| `load.paths` | Fichiers/répertoires de plugins supplémentaires |
| `slots` | Sélecteurs demplacements exclusifs (par ex. `memory`, `contextEngine`) |
| `entries.\<id\>` | Activations/désactivations + configuration par plugin |
Les changements de configuration **nécessitent un redémarrage du gateway**. Si le Gateway sexécute avec
surveillance de configuration + redémarrage en processus activé (le chemin `openclaw gateway` par défaut), ce
redémarrage est généralement effectué automatiquement peu après lécriture de la configuration.
Les changements de configuration **nécessitent un redémarrage du Gateway**. Si le Gateway sexécute avec
la surveillance de configuration + le redémarrage en processus activés (le chemin par défaut `openclaw gateway`),
ce redémarrage est généralement effectué automatiquement peu après lécriture de la configuration.
Il nexiste aucun chemin de rechargement à chaud pris en charge pour le code dexécution des plugins natifs ou les hooks
de cycle de vie ; redémarrez le processus Gateway qui dessert le canal en direct avant
de vous attendre à ce que le code `register(api)` mis à jour, les hooks `api.on(...)`, les outils, les services, ou
les hooks de fournisseur/runtime sexécutent.
`openclaw plugins list` est un instantané local de la CLI/configuration. Un plugin `loaded`
y signifie que le plugin est détectable et chargeable depuis la configuration/les fichiers vus par cette
invocation de la CLI. Cela ne prouve pas quun enfant Gateway distant déjà en cours dexécution
a redémarré avec le même code de plugin. Sur des configurations VPS/conteneur avec des processus enveloppants,
envoyez les redémarrages au véritable processus `openclaw gateway run`, ou utilisez
`openclaw gateway restart` contre le Gateway en cours dexécution.
<Accordion title="États des plugins : désactivé vs manquant vs invalide">
- **Désactivé** : le plugin existe mais les règles dactivation lont désactivé. La configuration est conservée.
@ -170,10 +182,10 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance le
<Steps>
<Step title="Chemins de configuration">
`plugins.load.paths` — chemins explicites de fichier ou de répertoire.
`plugins.load.paths` — chemins explicites de fichiers ou de répertoires.
</Step>
<Step title="Plugins du workspace">
<Step title="Plugins despace de travail">
`\<workspace\>/.openclaw/<plugin-root>/*.ts` et `\<workspace\>/.openclaw/<plugin-root>/*/index.ts`.
</Step>
@ -181,7 +193,7 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance le
`~/.openclaw/<plugin-root>/*.ts` et `~/.openclaw/<plugin-root>/*/index.ts`.
</Step>
<Step title="Plugins inclus">
<Step title="Plugins bundlés">
Livrés avec OpenClaw. Beaucoup sont activés par défaut (fournisseurs de modèles, parole).
Dautres nécessitent une activation explicite.
</Step>
@ -190,20 +202,41 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance le
### Règles dactivation
- `plugins.enabled: false` désactive tous les plugins
- `plugins.deny` prime toujours sur allow
- `plugins.deny` lemporte toujours sur allow
- `plugins.entries.\<id\>.enabled: false` désactive ce plugin
- Les plugins dorigine workspace sont **désactivés par défaut** (ils doivent être explicitement activés)
- Les plugins inclus suivent lensemble intégré activé par défaut, sauf remplacement
- Les slots exclusifs peuvent forcer lactivation du plugin sélectionné pour ce slot
- Certains plugins inclus sur opt-in sont activés automatiquement lorsque la configuration nomme une
surface appartenant au plugin, comme une référence de modèle de fournisseur, une configuration de canal ou un
runtime de harness
- Les routes Codex de la famille OpenAI conservent des limites de plugin distinctes :
`openai-codex/*` appartient au plugin OpenAI, tandis que le plugin intégré de
serveur dapplication Codex est sélectionné par `embeddedHarness.runtime: "codex"` ou les anciennes
- Les plugins provenant de lespace de travail sont **désactivés par défaut** (ils doivent être explicitement activés)
- Les plugins bundlés suivent lensemble intégré activé par défaut, sauf remplacement
- Les emplacements exclusifs peuvent forcer lactivation du plugin sélectionné pour cet emplacement
- Certains plugins bundlés optionnels sont activés automatiquement lorsque la configuration nomme une
surface appartenant au plugin, telle quune référence de modèle de fournisseur, une configuration de canal, ou un
runtime de harnais
- Les routes Codex de la famille OpenAI conservent des frontières de plugins distinctes :
`openai-codex/*` appartient au plugin OpenAI, tandis que le plugin bundlé de serveur dapplication Codex
est sélectionné par `embeddedHarness.runtime: "codex"` ou par les anciennes
références de modèle `codex/*`
## Slots de plugins (catégories exclusives)
## Dépannage des hooks dexécution
Si un plugin apparaît dans `plugins list` mais que les effets de bord de `register(api)` ou les hooks
ne sexécutent pas dans le trafic de chat en direct, vérifiez dabord ceci :
- Exécutez `openclaw gateway status --deep --require-rpc` et confirmez que lURL du
Gateway actif, le profil, le chemin de configuration et le processus sont bien ceux que vous modifiez.
- Redémarrez le Gateway en direct après les changements de plugin/installation/configuration/code. Dans les
conteneurs enveloppants, PID 1 peut nêtre quun superviseur ; redémarrez ou signalez le processus enfant
`openclaw gateway run`.
- Utilisez `openclaw plugins inspect <id> --json` pour confirmer les enregistrements de hooks et les
diagnostics. Les hooks de conversation non bundlés tels que `llm_input`,
`llm_output` et `agent_end` nécessitent
`plugins.entries.<id>.hooks.allowConversationAccess=true`.
- Pour le changement de modèle, préférez `before_model_resolve`. Il sexécute avant la résolution
du modèle pour les tours dagent ; `llm_output` ne sexécute quaprès quune tentative de modèle
produit une sortie dassistant.
- Pour prouver le modèle de session effectif, utilisez `openclaw sessions` ou les
surfaces de session/état du Gateway et, lors du débogage des charges utiles fournisseur, démarrez
le Gateway avec `--raw-stream --raw-stream-path <path>`.
## Emplacements de plugins (catégories exclusives)
Certaines catégories sont exclusives (une seule active à la fois) :
@ -212,13 +245,13 @@ Certaines catégories sont exclusives (une seule active à la fois) :
plugins: {
slots: {
memory: "memory-core", // ou "none" pour désactiver
contextEngine: "legacy", // ou un identifiant de plugin
contextEngine: "legacy", // ou un id de plugin
},
},
}
```
| Slot | Ce quil contrôle | Par défaut |
| Emplacement | Ce quil contrôle | Par défaut |
| --------------- | ---------------------------- | ------------------- |
| `memory` | Plugin Active Memory | `memory-core` |
| `contextEngine` | Moteur de contexte actif | `legacy` (intégré) |
@ -227,12 +260,12 @@ Certaines catégories sont exclusives (une seule active à la fois) :
```bash
openclaw plugins list # inventaire compact
openclaw plugins list --enabled # plugins chargés uniquement
openclaw plugins list --enabled # uniquement les plugins chargés
openclaw plugins list --verbose # lignes de détail par plugin
openclaw plugins list --json # inventaire lisible par machine
openclaw plugins inspect <id> # détail approfondi
openclaw plugins inspect <id> --json # lisible par machine
openclaw plugins inspect --all # tableau global
openclaw plugins inspect --all # tableau sur lensemble du parc
openclaw plugins info <id> # alias de inspect
openclaw plugins doctor # diagnostics
@ -243,12 +276,12 @@ openclaw plugins install <path> # installer depuis un chemin local
openclaw plugins install -l <path> # lier (sans copie) pour le développement
openclaw plugins install <plugin> --marketplace <source>
openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo>
openclaw plugins install <spec> --pin # enregistrer la spécification npm exacte résolue
openclaw plugins install <spec> --pin # enregistrer la spécification npm résolue exacte
openclaw plugins install <spec> --dangerously-force-unsafe-install
openclaw plugins update <id-or-npm-spec> # mettre à jour un plugin
openclaw plugins update <id-or-npm-spec> --dangerously-force-unsafe-install
openclaw plugins update --all # tout mettre à jour
openclaw plugins uninstall <id> # supprimer les enregistrements config/install
openclaw plugins uninstall <id> # supprimer les enregistrements de config/installation
openclaw plugins uninstall <id> --keep-files
openclaw plugins marketplace list <source>
openclaw plugins marketplace list <source> --json
@ -257,50 +290,53 @@ openclaw plugins enable <id>
openclaw plugins disable <id>
```
Les plugins inclus sont livrés avec OpenClaw. Beaucoup sont activés par défaut (par exemple
les fournisseurs de modèles inclus, les fournisseurs vocaux inclus et le plugin navigateur
inclus). Les autres plugins inclus nécessitent toujours `openclaw plugins enable <id>`.
Les plugins bundlés sont livrés avec OpenClaw. Beaucoup sont activés par défaut (par exemple
les fournisseurs de modèles bundlés, les fournisseurs de parole bundlés et le plugin de navigateur
bundlé). Dautres plugins bundlés nécessitent toujours `openclaw plugins enable <id>`.
`--force` écrase sur place un plugin installé existant ou un pack de hooks existant. Utilisez
`openclaw plugins update <id-or-npm-spec>` pour les mises à niveau courantes des
plugins npm suivis. Il nest pas pris en charge avec `--link`, qui réutilise le chemin source au lieu
`--force` écrase sur place un plugin ou un hook pack déjà installé. Utilisez
`openclaw plugins update <id-or-npm-spec>` pour les mises à niveau courantes des plugins npm
suivis. Cette option nest pas prise en charge avec `--link`, qui réutilise le chemin source au lieu
de copier vers une cible dinstallation gérée.
Lorsque `plugins.allow` est déjà défini, `openclaw plugins install` ajoute lidentifiant du plugin
installé à cette liste dautorisation avant de lactiver, afin que les installations puissent être
chargées immédiatement après redémarrage.
Lorsque `plugins.allow` est déjà défini, `openclaw plugins install` ajoute lid du plugin
installé à cette liste dautorisation avant de lactiver, afin que les installations soient
immédiatement chargeables après redémarrage.
`openclaw plugins update <id-or-npm-spec>` sapplique aux installations suivies. Le fait de transmettre
`openclaw plugins update <id-or-npm-spec>` sapplique aux installations suivies. Passer
une spécification de package npm avec un dist-tag ou une version exacte résout le nom du package
vers lenregistrement de plugin suivi et enregistre la nouvelle spécification pour les futures mises à jour.
Transmettre le nom du package sans version fait revenir une installation exacte épinglée vers la
ligne de publication par défaut du registre. Si le plugin npm installé correspond déjà à
la version résolue et à lidentité dartefact enregistrée, OpenClaw ignore la mise à jour
sans téléchargement, réinstallation ni réécriture de configuration.
Passer le nom du package sans version fait revenir une installation exacte épinglée vers
la ligne de publication par défaut du registre. Si le plugin npm installé correspond déjà
à la version résolue et à lidentité dartefact enregistrée, OpenClaw ignore la mise à jour
sans télécharger, réinstaller ni réécrire la configuration.
`--pin` est réservé à npm. Il nest pas pris en charge avec `--marketplace`, car
les installations marketplace conservent les métadonnées de source marketplace au lieu dune spécification npm.
les installations depuis une marketplace conservent les métadonnées de source de la marketplace au lieu
dune spécification npm.
`--dangerously-force-unsafe-install` est un remplacement durgence pour les faux
positifs du scanner intégré de code dangereux. Il permet aux installations et mises à jour de plugins
de continuer malgré les résultats intégrés `critical`, mais il
ne contourne toujours pas les blocages de politique `before_install` du plugin ni le blocage en cas déchec danalyse.
`--dangerously-force-unsafe-install` est une dérogation de dernier recours pour les faux
positifs du scanner de code dangereux intégré. Il permet aux installations et mises à jour
de plugins de continuer malgré les détections intégrées `critical`, mais il
ne contourne toujours pas les blocages de stratégie `before_install` des plugins ni le blocage en cas déchec danalyse.
Ce drapeau CLI sapplique uniquement aux flux dinstallation/mise à jour de plugins. Les installations de dépendances
de Skills adossées au Gateway utilisent à la place la surcharge de requête correspondante `dangerouslyForceUnsafeInstall`, tandis que
`openclaw skills install` reste le flux distinct de téléchargement/installation de Skills ClawHub.
Ce drapeau CLI sapplique uniquement aux flux dinstallation/mise à jour de plugins. Les installations
de dépendances de skills via le Gateway utilisent à la place la dérogation de requête correspondante
`dangerouslyForceUnsafeInstall`, tandis que `openclaw skills install` reste le flux distinct
de téléchargement/installation de skills ClawHub.
Les bundles compatibles participent au même flux de liste/inspection/activation/désactivation
des plugins. La prise en charge actuelle à lexécution inclut les Skills de bundle, les command-skills Claude,
les valeurs par défaut Claude `settings.json`, les valeurs par défaut Claude `.lsp.json` et `lspServers`
déclarés dans le manifeste, les command-skills Cursor et les répertoires de hooks Codex compatibles.
Les bundles compatibles participent au même flux `plugins list`/`inspect`/`enable`/`disable`.
La prise en charge actuelle à lexécution inclut les skills de bundle, les command-skills Claude,
les valeurs par défaut de Claude `settings.json`, les valeurs par défaut Claude `.lsp.json` et
`lspServers` déclarées par manifeste, les command-skills Cursor et les répertoires de hooks Codex compatibles.
`openclaw plugins inspect <id>` signale aussi les capacités de bundle détectées ainsi que
`openclaw plugins inspect <id>` signale également les capacités de bundle détectées ainsi que
les entrées de serveur MCP et LSP prises en charge ou non prises en charge pour les plugins adossés à un bundle.
Les sources marketplace peuvent être un nom de marketplace connu Claude provenant de
Les sources de marketplace peuvent être un nom de marketplace connu de Claude depuis
`~/.claude/plugins/known_marketplaces.json`, une racine de marketplace locale ou un chemin
`marketplace.json`, une forme abrégée GitHub comme `owner/repo`, une URL de dépôt GitHub ou une URL git. Pour les marketplaces distantes, les entrées de plugin doivent rester dans le
`marketplace.json`, une forme abrégée GitHub comme `owner/repo`, une URL de dépôt GitHub,
ou une URL git. Pour les marketplaces distantes, les entrées de plugin doivent rester à lintérieur du
dépôt de marketplace cloné et utiliser uniquement des sources de chemin relatif.
Voir la [référence CLI `openclaw plugins`](/fr/cli/plugins) pour tous les détails.
@ -308,7 +344,7 @@ Voir la [référence CLI `openclaw plugins`](/fr/cli/plugins) pour tous les dét
## Vue densemble de lAPI Plugin
Les plugins natifs exportent un objet dentrée qui expose `register(api)`. Les anciens
plugins peuvent encore utiliser `activate(api)` comme alias hérité, mais les nouveaux plugins doivent
plugins peuvent encore utiliser `activate(api)` comme alias historique, mais les nouveaux plugins doivent
utiliser `register`.
```typescript
@ -329,48 +365,49 @@ export default definePluginEntry({
});
```
OpenClaw charge lobjet dentrée et appelle `register(api)` pendant lactivation
du plugin. Le chargeur se replie encore sur `activate(api)` pour les anciens plugins,
mais les plugins inclus et les nouveaux plugins externes doivent considérer `register` comme le contrat public.
OpenClaw charge lobjet dentrée et appelle `register(api)` lors de lactivation
du plugin. Le chargeur bascule encore sur `activate(api)` pour les anciens plugins,
mais les plugins bundlés et les nouveaux plugins externes doivent considérer `register` comme le
contrat public.
Méthodes denregistrement courantes :
| Method | Ce quelle enregistre |
| --------------------------------------- | ---------------------------- |
| `registerProvider` | Fournisseur de modèle (LLM) |
| `registerChannel` | Canal de chat |
| `registerTool` | Outil dagent |
| `registerHook` / `on(...)` | Hooks de cycle de vie |
| `registerSpeechProvider` | Synthèse vocale / STT |
| `registerRealtimeTranscriptionProvider` | STT en streaming |
| `registerRealtimeVoiceProvider` | Voix en temps réel duplex |
| `registerMediaUnderstandingProvider` | Analyse image/audio |
| `registerImageGenerationProvider` | Génération dimages |
| `registerMusicGenerationProvider` | Génération musicale |
| `registerVideoGenerationProvider` | Génération vidéo |
| Méthode | Ce quelle enregistre |
| --------------------------------------- | --------------------------- |
| `registerProvider` | Fournisseur de modèles (LLM) |
| `registerChannel` | Canal de chat |
| `registerTool` | Outil dagent |
| `registerHook` / `on(...)` | Hooks de cycle de vie |
| `registerSpeechProvider` | Synthèse vocale / STT |
| `registerRealtimeTranscriptionProvider` | STT en streaming |
| `registerRealtimeVoiceProvider` | Voix temps réel duplex |
| `registerMediaUnderstandingProvider` | Analyse image/audio |
| `registerImageGenerationProvider` | Génération dimages |
| `registerMusicGenerationProvider` | Génération musicale |
| `registerVideoGenerationProvider` | Génération vidéo |
| `registerWebFetchProvider` | Fournisseur de récupération / scraping web |
| `registerWebSearchProvider` | Recherche web |
| `registerHttpRoute` | Point de terminaison HTTP |
| `registerCommand` / `registerCli` | Commandes CLI |
| `registerContextEngine` | Moteur de contexte |
| `registerService` | Service en arrière-plan |
| `registerWebSearchProvider` | Recherche web |
| `registerHttpRoute` | Point de terminaison HTTP |
| `registerCommand` / `registerCli` | Commandes CLI |
| `registerContextEngine` | Moteur de contexte |
| `registerService` | Service darrière-plan |
Comportement des gardes de hooks pour les hooks de cycle de vie typés :
Comportement des garde-fous de hooks pour les hooks de cycle de vie typés :
- `before_tool_call` : `{ block: true }` est terminal ; les gestionnaires de priorité inférieure sont ignorés.
- `before_tool_call` : `{ block: false }` na aucun effet et nannule pas un blocage antérieur.
- `before_tool_call` : `{ block: false }` est sans effet et nannule pas un blocage antérieur.
- `before_install` : `{ block: true }` est terminal ; les gestionnaires de priorité inférieure sont ignorés.
- `before_install` : `{ block: false }` na aucun effet et nannule pas un blocage antérieur.
- `before_install` : `{ block: false }` est sans effet et nannule pas un blocage antérieur.
- `message_sending` : `{ cancel: true }` est terminal ; les gestionnaires de priorité inférieure sont ignorés.
- `message_sending` : `{ cancel: false }` na aucun effet et nannule pas une annulation antérieure.
- `message_sending` : `{ cancel: false }` est sans effet et nannule pas une annulation antérieure.
Pour le comportement complet des hooks typés, voir [SDK Overview](/fr/plugins/sdk-overview#hook-decision-semantics).
Pour le comportement complet des hooks typés, voir [Vue densemble du SDK](/fr/plugins/sdk-overview#hook-decision-semantics).
## Lié
## Liens connexes
- [Building Plugins](/fr/plugins/building-plugins) — créer votre propre plugin
- [Plugin Bundles](/fr/plugins/bundles) — compatibilité des bundles Codex/Claude/Cursor
- [Plugin Manifest](/fr/plugins/manifest) — schéma du manifeste
- [Registering Tools](/fr/plugins/building-plugins#registering-agent-tools) — ajouter des outils dagent dans un plugin
- [Plugin Internals](/fr/plugins/architecture) — modèle de capacités et pipeline de chargement
- [Community Plugins](/fr/plugins/community) — listes tierces
- [Créer des plugins](/fr/plugins/building-plugins) — créer votre propre plugin
- [Bundles de plugins](/fr/plugins/bundles) — compatibilité des bundles Codex/Claude/Cursor
- [Manifeste de plugin](/fr/plugins/manifest) — schéma du manifeste
- [Enregistrer des outils](/fr/plugins/building-plugins#registering-agent-tools) — ajouter des outils dagent dans un plugin
- [Internes des plugins](/fr/plugins/architecture) — modèle de capacités et pipeline de chargement
- [Plugins communautaires](/fr/plugins/community) — listes de plugins tiers