diff --git a/docs/fr/cli/plugins.md b/docs/fr/cli/plugins.md index cfd1189fa..c50bd3c1e 100644 --- a/docs/fr/cli/plugins.md +++ b/docs/fr/cli/plugins.md @@ -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 openclaw plugins marketplace list --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é) ; d’autres 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 s’il 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 # ClawHub d'abord, puis npm @@ -72,56 +66,31 @@ openclaw plugins install --marketplace # marketplace (explicite openclaw plugins install --marketplace https://github.com// ``` -Les noms de package nus sont d’abord vérifiés dans ClawHub, puis dans npm. Remarque de sécurité : -traitez les installations de Plugin comme l’exé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 d’includes 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 d’exécuter -`openclaw doctor --fix` d’abord. 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 d’installation 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 d’un Plugin npm déjà suivi, préférez -`openclaw plugins update `. +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 -s’arrête et vous oriente vers `plugins update ` pour une mise à niveau normale, -ou vers `plugins install --force` si vous souhaitez réellement écraser -l’installation 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 `. -`--pin` s’applique uniquement aux installations npm. Il n’est pas pris en charge avec `--marketplace`, -car les installations marketplace persistent des métadonnées de source marketplace au lieu d’une -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 ` pour une mise à niveau normale, ou vers `plugins install --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 l’installation 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 s’applique aux flux d’installation/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 d’installation pour les packs de hooks qui exposent -`openclaw.hooks` dans `package.json`. Utilisez `openclaw hooks` pour la visibilité filtrée des hooks -et l’activation par hook, pas pour l’installation 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 s’exé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 l’une -de celles-ci vers une préversion, OpenClaw s’arrête et vous demande d’activer 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 d’installation 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 n’a 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 l’archive du package depuis ClawHub, vérifie la -compatibilité annoncée avec l’API Plugin / le Gateway minimal, puis l’installe 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 @@ -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 -à l’inté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 s’installent dans la racine normale des Plugins et participent au -même flux list/info/enable/disable. Aujourd’hui, 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 à l’exé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 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 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 --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..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` n’est pas pris en charge avec `--link`, car les installations liées réutilisent le -chemin source au lieu de copier vers une cible d’installation 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 @@ -221,17 +183,13 @@ openclaw plugins uninstall --dry-run openclaw plugins uninstall --keep-files ``` -`uninstall` supprime les enregistrements de Plugin de `plugins.entries`, `plugins.installs`, -de la liste d’autorisation de Plugins, et les entrées liées de `plugins.load.paths` le cas échéant. -Pour les Plugins Active Memory, l’emplacement 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 d’installation 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 @@ -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 s’appliquent 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 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és lors des exécutions ultérieures de `update `. +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 `. -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 l’enregistrement du Plugin suivi, -met à jour ce Plugin installé, et enregistre la nouvelle spécification npm pour les futures -mises à jour basées sur l’identifiant. +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 l’enregistrement du -Plugin suivi. Utilisez cela lorsqu’un 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 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`. +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`. -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 et demande -confirmation avant de continuer. Les helpers de mise à jour non interactifs échouent en fermeture stricte -à moins que l’appelant 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 s’applique 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 openclaw plugins inspect --json ``` -Introspection approfondie d’un Plugin unique. Affiche l’identité, 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 d’installation, 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 qu’il enregistre réellement à l’exé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 d’informations 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. -L’indicateur `--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 d’inclure 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 openclaw plugins marketplace list --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. -## Lié +## 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) diff --git a/docs/fr/concepts/model-providers.md b/docs/fr/concepts/model-providers.md index ee0afa82a..6060819fd 100644 --- a/docs/fr/concepts/model-providers.md +++ b/docs/fr/concepts/model-providers.md @@ -1,93 +1,84 @@ --- read_when: - - Vous avez besoin d’une référence de configuration des modèles fournisseur par fournisseur - - Vous voulez des exemples de configuration ou des commandes d’intégration CLI pour les fournisseurs de modèles -summary: vue d’ensemble des fournisseurs de modèles avec exemples de configuration + flux CLI -title: fournisseurs de modèles + - Vous avez besoin d’une référence de configuration des modèles, fournisseur par fournisseur. + - Vous souhaitez des configurations d’exemple ou des commandes d’intégration CLI pour les fournisseurs de modèles. +summary: Aperçu des fournisseurs de modèles avec des configurations d’exemple + 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 d’autorisation lorsqu’il est défini. - Assistants CLI : `openclaw onboard`, `openclaw models list`, `openclaw models set `. -- `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/` utilise le fournisseur direct par clé API - OpenAI dans Pi, `openai-codex/` utilise Codex OAuth dans Pi, - et `openai/` avec `agents.defaults.embeddedHarness.runtime: "codex"` utilise le harnais natif du serveur d’app Codex. Voir [OpenAI](/fr/providers/openai) - et [Harnais Codex](/fr/plugins/codex-harness). -- L’activation automatique de Plugin suit cette même frontière : `openai-codex/` appartient - au Plugin OpenAI, tandis que le Plugin Codex est activé par - `embeddedHarness.runtime: "codex"` ou les références héritées `codex/`. +- `models.providers.*.models[].contextWindow` correspond aux métadonnées natives du modèle ; `contextTokens` est le plafond effectif à l’exé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/` utilise le fournisseur direct à clé API OpenAI dans PI, `openai-codex/` utilise OAuth Codex dans PI, et `openai/` plus `agents.defaults.embeddedHarness.runtime: "codex"` utilise le harnais natif de serveur d’application Codex. Voir [OpenAI](/fr/providers/openai) et [Harnais Codex](/fr/plugins/codex-harness). +- L’activation automatique des plugins suit cette même séparation : `openai-codex/` appartient au plugin OpenAI, tandis que le plugin Codex est activé par `embeddedHarness.runtime: "codex"` ou les références héritées `codex/`. - GPT-5.5 est actuellement disponible via des routes d’abonnement/OAuth : - `openai-codex/gpt-5.5` dans Pi ou `openai/gpt-5.5` avec le harnais du serveur d’app - 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 l’API publique ; jusque-là utilisez des modèles activés pour l’API - 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 d’application Codex. La route directe à clé API pour `openai/gpt-5.5` est prise en charge dès qu’OpenAI active GPT-5.5 sur l’API publique ; en attendant, utilisez des modèles activés pour l’API 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 qu’OpenClaw conserve la boucle d’inférence générique. Les plugins gèrent l’intégration, les catalogues de modèles, le mappage auth vers les variables d’environnement, la normalisation transport/configuration, le nettoyage du schéma des outils, la classification du repli, le rafraîchissement OAuth, le rapport d’usage, 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 qu’OpenClaw conserve la boucle d’inférence générique. Les plugins gèrent l’intégration, les catalogues de modèles, le mapping des variables d’environnement d’authentification, la normalisation du transport/de la configuration, le nettoyage des schémas d’outils, la classification du basculement, l’actualisation OAuth, le reporting d’usage, 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 d’un exécuteur de requête totalement personnalisé relève d’une surface d’extension 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 d’un exécuteur de requêtes totalement personnalisé relève d’une surface d’extension distincte et plus profonde. -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 n’est pas la même chose que le [modèle de capacité public](/fr/plugins/architecture#public-capability-model), qui décrit ce qu’un Plugin enregistre (inférence de texte, parole, etc.). +Les `capabilities` d’exé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 n’est pas la même chose que le [modèle public de capacités](/fr/plugins/architecture#public-capability-model), qui décrit ce qu’un plugin enregistre (inférence de texte, parole, etc.). ## 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__KEY` (redéfinition live unique, priorité maximale) - - `_API_KEYS` (liste séparée par virgules ou points-virgules) + - `OPENCLAW_LIVE__KEY` (remplacement live unique, priorité la plus élevée) + - `_API_KEYS` (liste séparée par des virgules ou des points-virgules) - `_API_KEY` (clé principale) - - `_API_KEY_*` (liste numérotée, par ex. `_API_KEY_1`) -- Pour les fournisseurs Google, `GOOGLE_API_KEY` est également inclus comme repli. + - `_API_KEY_*` (liste numérotée, par exemple `_API_KEY_1`) +- Pour les fournisseurs Google, `GOOGLE_API_KEY` est également inclus comme solution de secours. - L’ordre 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 d’usage). -- Les échecs hors limitation de débit échouent immédiatement ; aucune rotation de clé n’est tentée. -- Lorsque toutes les clés candidates échouent, l’erreur finale du dernier essai est renvoyée. +- Les échecs non liés à la limitation de débit échouent immédiatement ; aucune rotation de clé n’est tentée. +- Lorsque toutes les clés candidates échouent, l’erreur finale renvoyée est celle de la dernière tentative. ## Fournisseurs intégrés (catalogue pi-ai) OpenClaw est livré avec le catalogue pi‑ai. Ces fournisseurs ne nécessitent **aucune** -configuration `models.providers` ; il suffit de définir l’authentification + choisir un modèle. +configuration `models.providers` ; définissez simplement l’authentification 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 qu’OpenAI expose GPT-5.5 sur l’API +- La prise en charge directe de l’API GPT-5.5 est déjà prévue ici dès qu’OpenAI exposera GPT-5.5 sur l’API - CLI : `openclaw onboard --auth-choice openai-api-key` -- Le transport par défaut est `auto` (WebSocket d’abord, repli SSE) -- Redéfinition par modèle via `agents.defaults.models["openai/"].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/"].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/"].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 d’attribution OpenClaw cachés (`originator`, `version`, - `User-Agent`) ne s’appliquent 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 à l’API OpenAI le rejettent et le catalogue Codex actuel ne l’expose pas +- Les en-têtes d’attribution OpenClaw masqués (`originator`, `version`, + `User-Agent`) s’appliquent 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 l’API OpenAI le rejettent et le catalogue Codex actuel ne l’expose pas ```json5 { @@ -99,12 +90,12 @@ configuration `models.providers` ; il suffit de définir l’authentification + - 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 l’usage de type Claude CLI dans le style OpenClaw est de nouveau autorisé ; OpenClaw considère donc la réutilisation de Claude CLI et l’usage 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` lorsqu’ils 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` d’Anthropic (`auto` vs `standard_only`) +- Remarque Anthropic : le personnel d’Anthropic nous a indiqué que l’usage de Claude CLI de type OpenClaw est de nouveau autorisé ; OpenClaw considère donc la réutilisation de Claude CLI et l’usage 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` lorsqu’ils sont disponibles. ```json5 { @@ -112,27 +103,25 @@ configuration `models.providers` ; il suffit de définir l’authentification + } ``` -### 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 d’app 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 d’app 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 d’application 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 d’application Codex n’est 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 d’abord, repli SSE) -- Redéfinition par modèle Pi via `agents.defaults.models["openai-codex/"].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 d’attribution 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/"].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 d’attribution OpenClaw masqués (`originator`, `version`, `User-Agent`) ne sont attachés qu’au 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 d’exécution `contextTokens = 272000` ; remplacez le plafond d’exé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. -- L’accès actuel à GPT-5.5 utilise cette route OAuth/abonnement jusqu’à ce qu’OpenAI active GPT-5.5 sur l’API publique. +- L’accès actuel à GPT-5.5 utilise cette route OAuth/d’abonnement jusqu’à ce qu’OpenAI active GPT-5.5 sur l’API publique. ```json5 { @@ -154,15 +143,15 @@ configuration `models.providers` ; il suffit de définir l’authentification + ### 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 l’authentification + - 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é : l’ancienne 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/"].params.cachedContent` - (ou l’ancien `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/"].params.cachedContent` + (ou l’hé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 l’usage 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 : l’inté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 d’abord 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** d’identifiant client ni de secret dans `openclaw.json`. Le flux de connexion CLI stocke + - Remarque : vous **ne** collez **pas** d’identifiant client ni de secret dans `openclaw.json`. Le flux de connexion CLI stocke les jetons dans les profils d’authentification sur l’hôte Gateway. - Si les requêtes échouent après la connexion, définissez `GOOGLE_CLOUD_PROJECT` ou `GOOGLE_CLOUD_PROJECT_ID` sur l’hôte Gateway. - - Les réponses JSON Gemini CLI sont analysées depuis `response` ; l’usage se replie sur - `stats`, avec `stats.cached` normalisé en `cacheRead` OpenClaw. + - Les réponses JSON de Gemini CLI sont analysées depuis `response` ; l’usage 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 l’authentification + - 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. + d’exé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 d’environnement d’authentification | 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 d’environnement d’authentification | 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 d’attribution d’application 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 l’assainissement de signature de pensée proxy-Gemini. -- **Kilo Gateway** les références adossées à Gemini suivent le même chemin d’assainissement proxy-Gemini ; `kilocode/kilo/auto` et les autres références proxy ne prenant pas en charge le raisonnement ignorent l’injection de raisonnement proxy. -- **MiniMax** l’inté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 d’attribution d’application 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 l’assainissement de signature de pensée proxy-Gemini. +- **Kilo Gateway** : les références adossées à Gemini suivent le même chemin d’assainissement proxy-Gemini ; `kilocode/kilo/auto` et les autres références proxy ne prenant pas en charge le raisonnement ignorent l’injection de raisonnement proxy. +- **MiniMax** : l’inté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/"].params.tool_stream=false`. -- **Cerebras** les modèles GLM utilisent `zai-glm-4.7` / `zai-glm-4.6` ; l’URL de base compatible OpenAI est `https://api.cerebras.ai/v1`. +- **Cerebras** : les modèles GLM utilisent `zai-glm-4.7` / `zai-glm-4.6` ; l’URL 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.` 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. +N’utilisez des entrées explicites `models.providers.` que si vous souhaitez remplacer l’URL 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 l’URL 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 l’URL 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 } ``` -L’ancien `kimi/k2p5` reste accepté comme identifiant de modèle de compatibilité. +L’identifiant de modèle de compatibilité hérité `kimi/k2p5` reste accepté. ### Volcano Engine (Doubao) -Volcano Engine (火山引擎) fournit l’accès à Doubao et à d’autres modèles en Chine. +Volcano Engine (火山引擎) fournit un accès à Doubao et à d’autres 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 l’accès à Doubao et à d’autres mod } ``` -L’intégration choisit par défaut la surface de codage, mais le catalogue général `volcengine/*` +L’inté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 d’intégration/configuration, le choix d’authentification 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 d’intégration/configuration, le choix d’authentification 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 d’afficher 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 l’accè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 l’accès aux mêmes modèles que Volcano Engine pour les } ``` -L’intégration choisit par défaut la surface de codage, mais le catalogue général `byteplus/*` +L’inté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 d’intégration/configuration, le choix d’authentification 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 d’afficher 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 qu’il 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 qu’il 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 d’images utilise `minimax/image-01` ou `minimax-portal/image-01` -- La compréhension d’image est gérée par le Plugin avec `MiniMax-VL-01` sur les deux chemins d’authentification MiniMax -- La recherche web reste sur l’identifiant fournisseur `minimax` +- La génération d’images est `minimax/image-01` ou `minimax-portal/image-01` +- La compréhension d’images est `MiniMax-VL-01`, gérée par le plugin, sur les deux chemins d’authentification MiniMax +- La recherche web reste sur l’id de fournisseur `minimax` ### LM Studio -LM Studio est fourni comme Plugin de fournisseur intégré qui utilise l’API native : +LM Studio est fourni comme plugin de fournisseur inclus, qui utilise l’API native : - Fournisseur : `lmstudio` - Authentification : `LM_API_TOKEN` - URL de base d’inférence par défaut : `http://localhost:1234/v1` -Puis définissez un modèle (remplacez par l’un des ID renvoyés par `http://localhost:1234/api/v1/models`) : +Définissez ensuite un modèle (remplacez par l’un des identifiants renvoyés par `http://localhost:1234/api/v1/models`) : ```json5 { @@ -489,12 +475,13 @@ Puis définissez un modèle (remplacez par l’un 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 l’infé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 l’infé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 l’API native d’Ollama : +Ollama est fourni comme plugin de fournisseur inclus et utilise l’API native d’Ollama : - Fournisseur : `ollama` - Authentification : aucune requise (serveur local) @@ -502,7 +489,7 @@ Ollama est fourni comme Plugin de fournisseur intégré et utilise l’API 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 à l’adresse `http://127.0.0.1:11434` lorsque vous activez l’option 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 l’inté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 (n’importe quelle valeur convient si votre serveur n’impose pas d’authentification) : +Pour activer l’auto-détection en local (n’importe quelle valeur fonctionne si votre serveur n’impose pas d’authentification) : ```bash export VLLM_API_KEY="vllm-local" ``` -Puis définissez un modèle (remplacez par l’un des ID renvoyés par `/v1/models`) : +Définissez ensuite un modèle (remplacez par l’un des identifiants renvoyés par `/v1/models`) : ```json5 { @@ -544,25 +531,25 @@ Puis définissez un modèle (remplacez par l’un 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 (n’importe quelle valeur convient si votre serveur n’impose pas +Pour activer l’auto-détection en local (n’importe quelle valeur fonctionne si votre serveur n’impose pas d’authentification) : ```bash export SGLANG_API_KEY="sglang-local" ``` -Puis définissez un modèle (remplacez par l’un des ID renvoyés par `/v1/models`) : +Définissez ensuite un modèle (remplacez par l’un des identifiants renvoyés par `/v1/models`) : ```json5 { @@ -572,7 +559,7 @@ Puis définissez un modèle (remplacez par l’un 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 l’hôte n’est 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 l’hôte n’est 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 d’indications de cache de prompt, pas de - mise en forme de charge utile compatible raisonnement OpenAI et pas d’en-têtes - d’attribution OpenClaw cachés. + façonnage de charge utile compatible avec le raisonnement OpenAI, et pas d’en-têtes d’attribution + 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 diff --git a/docs/fr/pi.md b/docs/fr/pi.md index 7ef887c1b..318dbdfff 100644 --- a/docs/fr/pi.md +++ b/docs/fr/pi.md @@ -1,14 +1,14 @@ --- read_when: - Comprendre la conception de l’intégration du SDK Pi dans OpenClaw - - Modifier le cycle de vie des sessions d’agent, l’outillage ou le câblage du fournisseur pour Pi -summary: Architecture de l’intégration de l’agent Pi embarqué d’OpenClaw et cycle de vie des sessions -title: Architecture d’intégration Pi + - Modifier le cycle de vie de la session de l’agent, l’outillage ou le raccordement du fournisseur pour Pi +summary: Architecture de l’intégration de l’agent Pi embarqué d’OpenClaw et cycle de vie de la session +title: Architecture de l’inté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 s’intègre à [pi-coding-agent](https://g ## Vue d’ensemble -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 d’utiliser 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 d’utiliser 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 d’outils 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 d’authentification 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 d’outils 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 d’authentification 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 d’agent, exécution d’outils, types `AgentMessage` | +| Package | Objectif | +| ----------------- | ----------------------------------------------------------------------------------------------------- | +| `pi-ai` | Abstractions LLM de base : `Model`, `streamSimple`, types de message, API des fournisseurs | +| `pi-agent-core` | Boucle d’agent, exécution des outils, types `AgentMessage` | | `pi-coding-agent` | SDK de haut niveau : `createAgentSession`, `SessionManager`, `AuthStorage`, `ModelRegistry`, outils intégrés | -| `pi-tui` | Composants d’interface terminal (utilisés dans le mode TUI local d’OpenClaw) | +| `pi-tui` | Composants d’interface utilisateur de terminal (utilisés dans le mode TUI local d’OpenClaw) | ## Structure des fichiers @@ -54,67 +54,67 @@ src/agents/ │ ├── run/ │ │ ├── attempt.ts # Logique d’une tentative unique avec configuration de session │ │ ├── params.ts # Type RunEmbeddedPiAgentParams -│ │ ├── payloads.ts # Construire les charges utiles de réponse à partir des résultats d’exécution -│ │ ├── images.ts # Injection d’images pour modèle de vision +│ │ ├── payloads.ts # Construction des charges utiles de réponse à partir des résultats d’exécution +│ │ ├── images.ts # Injection d’images de modèle de vision │ │ └── types.ts # EmbeddedRunAttemptResult -│ ├── abort.ts # Détection d’erreur d’abandon +│ ├── abort.ts # Détection des erreurs d’abandon │ ├── 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 d’ordre des tours Google/Gemini -│ ├── history.ts # Limitation d’historique (DM vs groupe) -│ ├── lanes.ts # Voies de commande session/globales +│ ├── history.ts # Limitation de l’historique (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 d’attente -│ ├── 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 l’instance `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 d’erreur +│ └── utils.ts # Mappage de ThinkLevel, description d’erreur ├── 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 l’outil de messagerie ├── pi-embedded-helpers.ts # Classification des erreurs, validation des tours ├── pi-embedded-helpers/ # Modules d’assistance -├── 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 d’outils -├── pi-tools.read.ts # Personnalisations de l’outil read -├── pi-tools.schema.ts # Normalisation du schéma d’outil +├── 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 l’outil de lecture +├── pi-tools.schema.ts # Normalisation des schémas d’outils ├── 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 d’authentification -├── 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 d’outils -├── tool-policy.ts # Résolution de politique d’outils -├── transcript-policy.ts # Politique de validation de transcription -├── skills.ts # Construction de l’instantané/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 d’outils +├── 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 d’outils 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 d’extensions détenus par les plugins -au lieu de `src/agents/tools`, par exemple : +Les runtimes d’action de message spécifiques aux canaux vivent désormais dans les répertoires d’extension appartenant au Plugin plutôt que sous `src/agents/tools`, par exemple : -- les fichiers de runtime d’actions du Plugin Discord -- le fichier de runtime d’actions du Plugin Slack -- le fichier de runtime d’actions du Plugin Telegram -- le fichier de runtime d’actions du Plugin WhatsApp +- les fichiers de runtime d’action du Plugin Discord +- le fichier de runtime d’action du Plugin Slack +- le fichier de runtime d’action du Plugin Telegram +- le fichier de runtime d’action du Plugin WhatsApp -## Flux principal d’intégration +## Flux d’intégration principal -### 1. Exécuter un agent embarqué +### 1. Exécution d’un agent intégré Le point d’entrée principal est `runEmbeddedPiAgent()` dans `pi-embedded-runner/run.ts` : @@ -207,7 +206,7 @@ applySystemPromptOverrideToSession(session, systemPromptOverride); ### 3. Abonnement aux événements -`subscribeEmbeddedPiSession()` s’abonne aux événements `AgentSession` de pi : +`subscribeEmbeddedPiSession()` s’abonne 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 d’agent : envoi au LLM, exécution des appels d’outils, streaming des réponses. +Le SDK gère la boucle complète de l’agent : envoi au LLM, exécution des appels d’outils, diffusion continue des réponses. -L’injection d’images est locale au prompt : OpenClaw charge les références d’image à partir du prompt actuel et -les transmet via `images` pour ce tour uniquement. Il ne réanalyse pas les anciens tours de l’historique -pour réinjecter les charges utiles d’image. +L’injection d’images est locale au prompt : OpenClaw charge les références d’image depuis le prompt actuel et les transmet via `images` uniquement pour ce tour. Il ne réanalyse pas les anciens tours de l’historique pour réinjecter les charges utiles d’image. ## 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 d’actions 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 d’abandon +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 d’action spécifiques à Discord/Telegram/Slack/WhatsApp +5. **Filtrage par politique** : outils filtrés selon le profil, le fournisseur, l’agent, 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 d’abandon ### Adaptateur de définition d’outil -`AgentTool` de pi-agent-core a une signature `execute` différente de `ToolDefinition` de pi-coding-agent. L’adaptateur 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. L’adaptateur 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 d’OpenClaw, l’intégration du sandbox et l’ensemble d’outils étendu restent cohérents entre les fournisseurs. +Cela garantit que le filtrage par politique d’OpenClaw, l’intégration de la sandbox et l’ensemble d’outils é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 d’appel d’outil, 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 d’exécution, plus mémoire et réactions lorsqu’elles 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 l’outillage, le style d’appel d’outil, les garde-fous de sécurité, la référence CLI d’OpenClaw, les Skills, la documentation, l’espace de travail, la sandbox, la messagerie, les balises de réponse, la voix, les réponses silencieuses, les Heartbeats, les métadonnées d’exécution, ainsi que Memory et Reactions lorsqu’ils 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 d’outil. +OpenClaw encapsule cela avec `guardSessionManager()` pour la sécurité des résultats d’outils. ### 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 l’analyse répétée des fichiers : ```typescript await prewarmSessionFile(params.sessionFile); @@ -327,16 +324,11 @@ trackSessionManagerAccess(params.sessionFile); ### Limitation de l’historique -`limitHistoryTurns()` tronque l’historique de conversation selon le type de canal (DM vs groupe). +`limitHistoryTurns()` réduit l’historique 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 d’authentification @@ -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 lorsqu’il est configuré : +`FailoverError` déclenche le repli sur un autre modèle lorsqu’il 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 d’outils et d’opé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 d’outils 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 ``/`` et extraire le contenu `` : +La sortie diffusée en continu est traitée pour supprimer les blocs ``/`` et extraire le contenu de `` : ```typescript const stripBlockTags = (text: string, state: { thinking: boolean; final: boolean }) => { - // Supprimer le contenu ... - // Si enforceFinalTag, ne renvoyer que le contenu ... + // Supprime le contenu ... + // Si enforceFinalTag, retourne uniquement le contenu ... }; ``` @@ -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 d’authentification -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 n’est pas pris en charge, un repli s’applique : +Si un niveau de réflexion n’est 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 s’exécute dans un conteneur - // Browser utilise une URL bridge + // Utiliser des outils read/edit/write en sandbox + // Exec s’exécute dans le conteneur + // Le navigateur utilise l’URL 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 d’outils +- Validation des tours pour les rôles consécutifs +- Validation stricte en amont des paramètres d’outils Pi ### Google/Gemini -- Assainissement des schémas d’outils détenus par les plugins +- Assainissement du schéma d’outils 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 d’un mode TUI local qui utilise directement les composants pi-tui : +OpenClaw dispose également d’un 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 d’outils OpenClaw personnalisée | -| Prompt système | AGENTS.md + prompts | dynamique par canal/contexte | -| Stockage de session | `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/` (ou `$OPENCLAW_STATE_DIR/agents//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 d’outils OpenClaw personnalisée | +| Prompt système | AGENTS.md + prompts | Dynamique par canal/contexte | +| Stockage des sessions | `~/.pi/agent/sessions/` | `~/.openclaw/agents//sessions/` (ou `$OPENCLAW_STATE_DIR/agents//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 d’outils** : 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 l’ampleur -5. **Particularités des fournisseurs** : nombreux chemins de code spécifiques aux fournisseurs que pi pourrait potentiellement gérer +1. **Alignement des signatures d’outils** : 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 l’intégration Pi s’étend à ces suites : +La couverture de l’inté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 l’inté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 d’exécution actuelles, voir [Flux de développement Pi](/fr/pi-dev). -## Lié +## Liens associés - [Flux de développement Pi](/fr/pi-dev) -- [Vue d’ensemble de l’installation](/fr/install) +- [Aperçu de l’installation](/fr/install) diff --git a/docs/fr/providers/deepseek.md b/docs/fr/providers/deepseek.md index 2ecb54c88..84116d4a2 100644 --- a/docs/fr/providers/deepseek.md +++ b/docs/fr/providers/deepseek.md @@ -1,14 +1,14 @@ --- read_when: - - Vous voulez utiliser DeepSeek avec OpenClaw - - Vous avez besoin de la variable d’environnement de clé API ou du choix d’authentification CLI -summary: configuration de DeepSeek (authentification + sélection de modèle) + - Vous souhaitez utiliser DeepSeek avec OpenClaw + - Vous avez besoin de la variable d’environnement de clé API ou du choix d’authentification 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 - + Créez une clé API sur [platform.deepseek.com](https://platform.deepseek.com/api_keys). - + ```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. - + ```bash openclaw models list --provider deepseek ``` @@ -45,7 +45,7 @@ x-i18n: - 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: -Si la Gateway s’exé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 s’exé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`). ## 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é | -Les deux modèles intégrés annoncent actuellement une compatibilité d’usage 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 +d’outils puissent se poursuivre. ## Exemple de configuration @@ -83,7 +87,7 @@ Les deux modèles intégrés annoncent actuellement une compatibilité d’usage 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é d’usage ## Liens associés - - Choisir les fournisseurs, les références de modèle et le comportement de repli. + + Choisir les fournisseurs, les références de modèle et le comportement de basculement. - 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. diff --git a/docs/fr/tools/plugin.md b/docs/fr/tools/plugin.md index a2eafed29..2bb4a9011 100644 --- a/docs/fr/tools/plugin.md +++ b/docs/fr/tools/plugin.md @@ -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 d’agent, outils, Skills, parole, transcription en temps réel, voix en temps réel, -compréhension des médias, génération d’images, génération vidéo, récupération web, recherche web, +harnais d’agent, outils, skills, parole, transcription en temps réel, voix en temps réel, +compréhension des médias, génération d’images, génération de vidéos, récupération web, recherche web, et plus encore. Certains plugins sont **core** (livrés avec OpenClaw), d’autres 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.\.config` dans votre fichier de configuration. + Ensuite, configurez sous `plugins.entries.\.config` dans votre fichier de configuration. -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 d’installation utilise le même résolveur que la CLI : chemin/archive local(e), `clawhub:` explicite, ou spécification de package simple (ClawHub d’abord, puis repli sur npm). +Le chemin d’installation utilise le même résolveur que la CLI : chemin/archive local, +`clawhub:` explicite, ou spécification de package nue (ClawHub d’abord, puis repli sur npm). -Si la configuration est invalide, l’installation échoue normalement de manière stricte et vous oriente vers +Si la configuration est invalide, l’installation é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 d’OpenClaw n’installent pas d’emblée tout l’arbre de dépendances d’exécution -de chaque plugin inclus. Lorsqu’un plugin inclus appartenant à OpenClaw est actif à partir de la -configuration du plugin, d’une configuration de canal héritée ou d’un manifeste activé par défaut, le -démarrage ne répare que les dépendances d’exécution déclarées de ce plugin avant de l’importer. +Les installations packagées d’OpenClaw n’installent pas de manière anticipée tout l’arbre de dépendances +d’exécution de chaque plugin bundlé. Lorsqu’un 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 d’exécution déclarées de ce plugin avant de l’importer. 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 d’exécution ; s’exé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 d’exécution ; s’exé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 d’ensemble du SDK Plugin](/fr/plugins/sdk-overview). ## Plugins officiels @@ -113,21 +114,21 @@ et [Plugin SDK Overview](/fr/plugins/sdk-overview). - - `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"`) - + `elevenlabs`, `microsoft` - - `browser` — plugin navigateur inclus pour l’outil 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 l’outil 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) -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 d’autorisation 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.\` | Activations + configuration par plugin | +| `enabled` | Interrupteur principal (par défaut : `true`) | +| `allow` | Liste d’autorisation des plugins (facultatif) | +| `deny` | Liste de refus des plugins (facultatif ; deny l’emporte) | +| `load.paths` | Fichiers/répertoires de plugins supplémentaires | +| `slots` | Sélecteurs d’emplacements exclusifs (par ex. `memory`, `contextEngine`) | +| `entries.\` | Activations/désactivations + configuration par plugin | -Les changements de configuration **nécessitent un redémarrage du gateway**. Si le Gateway s’exé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 s’exé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 n’existe aucun chemin de rechargement à chaud pris en charge pour le code d’exé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 s’exé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 qu’un enfant Gateway distant déjà en cours d’exé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 d’exécution. - **Désactivé** : le plugin existe mais les règles d’activation l’ont désactivé. La configuration est conservée. @@ -170,10 +182,10 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance l’e - `plugins.load.paths` — chemins explicites de fichier ou de répertoire. + `plugins.load.paths` — chemins explicites de fichiers ou de répertoires. - + `\/.openclaw//*.ts` et `\/.openclaw//*/index.ts`. @@ -181,7 +193,7 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance l’e `~/.openclaw//*.ts` et `~/.openclaw//*/index.ts`. - + Livrés avec OpenClaw. Beaucoup sont activés par défaut (fournisseurs de modèles, parole). D’autres nécessitent une activation explicite. @@ -190,20 +202,41 @@ OpenClaw recherche les plugins dans cet ordre (la première correspondance l’e ### Règles d’activation - `plugins.enabled: false` désactive tous les plugins -- `plugins.deny` prime toujours sur allow +- `plugins.deny` l’emporte toujours sur allow - `plugins.entries.\.enabled: false` désactive ce plugin -- Les plugins d’origine workspace sont **désactivés par défaut** (ils doivent être explicitement activés) -- Les plugins inclus suivent l’ensemble intégré activé par défaut, sauf remplacement -- Les slots exclusifs peuvent forcer l’activation 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 d’application Codex est sélectionné par `embeddedHarness.runtime: "codex"` ou les anciennes +- Les plugins provenant de l’espace de travail sont **désactivés par défaut** (ils doivent être explicitement activés) +- Les plugins bundlés suivent l’ensemble intégré activé par défaut, sauf remplacement +- Les emplacements exclusifs peuvent forcer l’activation 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 qu’une 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 d’application 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 d’exécution + +Si un plugin apparaît dans `plugins list` mais que les effets de bord de `register(api)` ou les hooks +ne s’exécutent pas dans le trafic de chat en direct, vérifiez d’abord ceci : + +- Exécutez `openclaw gateway status --deep --require-rpc` et confirmez que l’URL 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 qu’un superviseur ; redémarrez ou signalez le processus enfant + `openclaw gateway run`. +- Utilisez `openclaw plugins inspect --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..hooks.allowConversationAccess=true`. +- Pour le changement de modèle, préférez `before_model_resolve`. Il s’exécute avant la résolution + du modèle pour les tours d’agent ; `llm_output` ne s’exécute qu’après qu’une tentative de modèle + produit une sortie d’assistant. +- 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 `. + +## 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 qu’il contrôle | Par défaut | +| Emplacement | Ce qu’il 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 # détail approfondi openclaw plugins inspect --json # lisible par machine -openclaw plugins inspect --all # tableau global +openclaw plugins inspect --all # tableau sur l’ensemble du parc openclaw plugins info # alias de inspect openclaw plugins doctor # diagnostics @@ -243,12 +276,12 @@ openclaw plugins install # installer depuis un chemin local openclaw plugins install -l # lier (sans copie) pour le développement openclaw plugins install --marketplace openclaw plugins install --marketplace https://github.com// -openclaw plugins install --pin # enregistrer la spécification npm exacte résolue +openclaw plugins install --pin # enregistrer la spécification npm résolue exacte openclaw plugins install --dangerously-force-unsafe-install openclaw plugins update # mettre à jour un plugin openclaw plugins update --dangerously-force-unsafe-install openclaw plugins update --all # tout mettre à jour -openclaw plugins uninstall # supprimer les enregistrements config/install +openclaw plugins uninstall # supprimer les enregistrements de config/installation openclaw plugins uninstall --keep-files openclaw plugins marketplace list openclaw plugins marketplace list --json @@ -257,50 +290,53 @@ openclaw plugins enable openclaw plugins disable ``` -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 `. +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é). D’autres plugins bundlés nécessitent toujours `openclaw plugins enable `. -`--force` écrase sur place un plugin installé existant ou un pack de hooks existant. Utilisez -`openclaw plugins update ` pour les mises à niveau courantes des -plugins npm suivis. Il n’est 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 ` pour les mises à niveau courantes des plugins npm +suivis. Cette option n’est pas prise en charge avec `--link`, qui réutilise le chemin source au lieu de copier vers une cible d’installation gérée. -Lorsque `plugins.allow` est déjà défini, `openclaw plugins install` ajoute l’identifiant du plugin -installé à cette liste d’autorisation avant de l’activer, 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 l’id du plugin +installé à cette liste d’autorisation avant de l’activer, afin que les installations soient +immédiatement chargeables après redémarrage. -`openclaw plugins update ` s’applique aux installations suivies. Le fait de transmettre +`openclaw plugins update ` s’applique 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 l’enregistrement 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 à l’identité d’artefact 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 à l’identité d’artefact enregistrée, OpenClaw ignore la mise à jour +sans télécharger, réinstaller ni réécrire la configuration. `--pin` est réservé à npm. Il n’est pas pris en charge avec `--marketplace`, car -les installations marketplace conservent les métadonnées de source marketplace au lieu d’une spécification npm. +les installations depuis une marketplace conservent les métadonnées de source de la marketplace au lieu +d’une spécification npm. -`--dangerously-force-unsafe-install` est un remplacement d’urgence 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 d’analyse. +`--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 d’analyse. -Ce drapeau CLI s’applique uniquement aux flux d’installation/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 s’applique uniquement aux flux d’installation/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 à l’exé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 à l’exé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 ` signale aussi les capacités de bundle détectées ainsi que +`openclaw plugins inspect ` 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 à l’inté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 d’ensemble de l’API Plugin Les plugins natifs exportent un objet d’entré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 l’objet d’entrée et appelle `register(api)` pendant l’activation -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 l’objet d’entrée et appelle `register(api)` lors de l’activation +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 d’enregistrement courantes : -| Method | Ce qu’elle enregistre | -| --------------------------------------- | ---------------------------- | -| `registerProvider` | Fournisseur de modèle (LLM) | -| `registerChannel` | Canal de chat | -| `registerTool` | Outil d’agent | -| `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 d’images | -| `registerMusicGenerationProvider` | Génération musicale | -| `registerVideoGenerationProvider` | Génération vidéo | +| Méthode | Ce qu’elle enregistre | +| --------------------------------------- | --------------------------- | +| `registerProvider` | Fournisseur de modèles (LLM) | +| `registerChannel` | Canal de chat | +| `registerTool` | Outil d’agent | +| `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 d’images | +| `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 d’arriè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 }` n’a aucun effet et n’annule pas un blocage antérieur. +- `before_tool_call` : `{ block: false }` est sans effet et n’annule pas un blocage antérieur. - `before_install` : `{ block: true }` est terminal ; les gestionnaires de priorité inférieure sont ignorés. -- `before_install` : `{ block: false }` n’a aucun effet et n’annule pas un blocage antérieur. +- `before_install` : `{ block: false }` est sans effet et n’annule pas un blocage antérieur. - `message_sending` : `{ cancel: true }` est terminal ; les gestionnaires de priorité inférieure sont ignorés. -- `message_sending` : `{ cancel: false }` n’a aucun effet et n’annule pas une annulation antérieure. +- `message_sending` : `{ cancel: false }` est sans effet et n’annule 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 d’ensemble 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 d’agent 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 d’agent 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