diff --git a/docs/fr/channels/index.md b/docs/fr/channels/index.md index ba5d60094..a5e66b6b6 100644 --- a/docs/fr/channels/index.md +++ b/docs/fr/channels/index.md @@ -1,57 +1,57 @@ --- read_when: - - Vous voulez choisir un canal de chat pour OpenClaw - - Vous avez besoin d’une vue d’ensemble rapide des plateformes de messagerie prises en charge -summary: Plateformes de messagerie auxquelles OpenClaw peut se connecter -title: Canaux de chat + - Vous souhaitez choisir un canal de discussion pour OpenClaw + - Vous avez besoin d’un aperçu rapide des plateformes de messagerie prises en charge +summary: Les plateformes de messagerie auxquelles OpenClaw peut se connecter +title: Canaux de discussion x-i18n: - generated_at: "2026-04-05T12:35:08Z" + generated_at: "2026-04-19T01:11:13Z" model: gpt-5.4 provider: openai - source_hash: 246ee6f16aebe751241f00102bb435978ed21f6158385aff5d8e222e30567416 + source_hash: d41c3a37d91c07f15afd8e199a289297772331c70e38697346a373595eb2d993 source_path: channels/index.md workflow: 15 --- -# Canaux de chat +# Canaux de discussion -OpenClaw peut vous parler sur n’importe quelle application de chat que vous utilisez déjà. Chaque canal se connecte via la Gateway. -Le texte est pris en charge partout ; la prise en charge des médias et des réactions varie selon le canal. +OpenClaw peut vous parler sur n’importe quelle application de discussion que vous utilisez déjà. Chaque canal se connecte via le Gateway. +Le texte est pris en charge partout ; les médias et les réactions varient selon le canal. ## Canaux pris en charge -- [BlueBubbles](/channels/bluebubbles) — **Recommandé pour iMessage** ; utilise l’API REST du serveur macOS BlueBubbles avec une prise en charge complète des fonctionnalités (plugin intégré ; modification, annulation d’envoi, effets, réactions, gestion de groupe — la modification est actuellement défaillante sur macOS 26 Tahoe). -- [Discord](/channels/discord) — API Bot Discord + Gateway ; prend en charge les serveurs, les canaux et les messages privés. -- [Feishu](/channels/feishu) — bot Feishu/Lark via WebSocket (plugin intégré). -- [Google Chat](/channels/googlechat) — application Google Chat API via webhook HTTP. -- [iMessage (legacy)](/channels/imessage) — intégration macOS historique via la CLI imsg (obsolète, utilisez BlueBubbles pour les nouvelles configurations). -- [IRC](/channels/irc) — serveurs IRC classiques ; canaux + messages privés avec contrôles d’appairage et de liste d’autorisation. -- [LINE](/channels/line) — bot LINE Messaging API (plugin intégré). -- [Matrix](/channels/matrix) — protocole Matrix (plugin intégré). -- [Mattermost](/channels/mattermost) — API Bot + WebSocket ; canaux, groupes, messages privés (plugin intégré). -- [Microsoft Teams](/channels/msteams) — Bot Framework ; prise en charge des entreprises (plugin intégré). -- [Nextcloud Talk](/channels/nextcloud-talk) — chat auto-hébergé via Nextcloud Talk (plugin intégré). -- [Nostr](/channels/nostr) — messages privés décentralisés via NIP-04 (plugin intégré). -- [QQ Bot](/channels/qqbot) — API QQ Bot ; chat privé, chat de groupe et médias enrichis (plugin intégré). -- [Signal](/channels/signal) — signal-cli ; axé sur la confidentialité. -- [Slack](/channels/slack) — SDK Bolt ; applications d’espace de travail. -- [Synology Chat](/channels/synology-chat) — chat Synology NAS via webhooks sortants + entrants (plugin intégré). -- [Telegram](/channels/telegram) — API Bot via grammY ; prend en charge les groupes. -- [Tlon](/channels/tlon) — messagerie basée sur Urbit (plugin intégré). -- [Twitch](/channels/twitch) — chat Twitch via connexion IRC (plugin intégré). -- [Voice Call](/plugins/voice-call) — téléphonie via Plivo ou Twilio (plugin, installé séparément). +- [BlueBubbles](/fr/channels/bluebubbles) — **Recommandé pour iMessage** ; utilise l’API REST du serveur macOS BlueBubbles avec prise en charge complète des fonctionnalités (Plugin intégré ; modification, annulation d’envoi, effets, réactions, gestion des groupes — la modification est actuellement cassée sur macOS 26 Tahoe). +- [Discord](/fr/channels/discord) — API Bot Discord + Gateway ; prend en charge les serveurs, les canaux et les messages privés. +- [Feishu](/fr/channels/feishu) — Bot Feishu/Lark via WebSocket (Plugin intégré). +- [Google Chat](/fr/channels/googlechat) — application API Google Chat via Webhook HTTP. +- [iMessage (legacy)](/fr/channels/imessage) — intégration macOS héritée via l’outil CLI imsg (obsolète, utilisez BlueBubbles pour les nouvelles configurations). +- [IRC](/fr/channels/irc) — serveurs IRC classiques ; canaux + messages privés avec contrôles d’appairage/liste d’autorisation. +- [LINE](/fr/channels/line) — bot API LINE (Plugin intégré). +- [Matrix](/fr/channels/matrix) — protocole Matrix (Plugin intégré). +- [Mattermost](/fr/channels/mattermost) — API Bot + WebSocket ; canaux, groupes, messages privés (Plugin intégré). +- [Microsoft Teams](/fr/channels/msteams) — Bot Framework ; prise en charge entreprise (Plugin intégré). +- [Nextcloud Talk](/fr/channels/nextcloud-talk) — discussion auto-hébergée via Nextcloud Talk (Plugin intégré). +- [Nostr](/fr/channels/nostr) — messages privés décentralisés via NIP-04 (Plugin intégré). +- [QQ Bot](/fr/channels/qqbot) — API QQ Bot ; discussion privée, discussion de groupe et médias riches (Plugin intégré). +- [Signal](/fr/channels/signal) — signal-cli ; axé sur la confidentialité. +- [Slack](/fr/channels/slack) — SDK Bolt ; applications d’espace de travail. +- [Synology Chat](/fr/channels/synology-chat) — discussion Synology NAS via Webhooks sortants + entrants (Plugin intégré). +- [Telegram](/fr/channels/telegram) — API Bot via grammY ; prend en charge les groupes. +- [Tlon](/fr/channels/tlon) — messagerie basée sur Urbit (Plugin intégré). +- [Twitch](/fr/channels/twitch) — chat Twitch via connexion IRC (Plugin intégré). +- [Voice Call](/fr/plugins/voice-call) — téléphonie via Plivo ou Twilio (Plugin, installé séparément). - [WebChat](/web/webchat) — interface Gateway WebChat via WebSocket. -- [WeChat](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) — plugin Tencent iLink Bot via connexion QR ; chats privés uniquement. -- [WhatsApp](/channels/whatsapp) — le plus populaire ; utilise Baileys et nécessite un appairage par QR. -- [Zalo](/channels/zalo) — API Zalo Bot ; messagerie populaire au Vietnam (plugin intégré). -- [Zalo Personal](/channels/zalouser) — compte personnel Zalo via connexion QR (plugin intégré). +- [WeChat](/fr/channels/wechat) — Plugin Tencent iLink Bot via connexion QR ; discussions privées uniquement (Plugin externe). +- [WhatsApp](/fr/channels/whatsapp) — le plus populaire ; utilise Baileys et nécessite un appairage par QR code. +- [Zalo](/fr/channels/zalo) — API Zalo Bot ; la messagerie populaire du Vietnam (Plugin intégré). +- [Zalo Personal](/fr/channels/zalouser) — compte personnel Zalo via connexion QR (Plugin intégré). ## Remarques -- Les canaux peuvent fonctionner simultanément ; configurez-en plusieurs et OpenClaw effectuera le routage selon la discussion. -- La configuration la plus rapide est généralement **Telegram** (jeton de bot simple). WhatsApp nécessite un appairage par QR et - stocke davantage d’état sur le disque. -- Le comportement des groupes varie selon le canal ; voir [Groupes](/channels/groups). -- L’appairage des messages privés et les listes d’autorisation sont appliqués pour des raisons de sécurité ; voir [Sécurité](/gateway/security). -- Résolution des problèmes : [Résolution des problèmes des canaux](/channels/troubleshooting). -- Les fournisseurs de modèles sont documentés séparément ; voir [Fournisseurs de modèles](/providers/models). +- Les canaux peuvent fonctionner simultanément ; configurez-en plusieurs et OpenClaw fera le routage par discussion. +- La configuration la plus rapide est généralement **Telegram** (jeton de bot simple). WhatsApp nécessite un appairage par QR code et + stocke davantage d’état sur disque. +- Le comportement des groupes varie selon le canal ; voir [Groups](/fr/channels/groups). +- L’appairage des messages privés et les listes d’autorisation sont appliqués pour des raisons de sécurité ; voir [Security](/fr/gateway/security). +- Dépannage : [Dépannage des canaux](/fr/channels/troubleshooting). +- Les fournisseurs de modèles sont documentés séparément ; voir [Model Providers](/fr/providers/models). diff --git a/docs/fr/channels/wechat.md b/docs/fr/channels/wechat.md new file mode 100644 index 000000000..497925455 --- /dev/null +++ b/docs/fr/channels/wechat.md @@ -0,0 +1,175 @@ +--- +read_when: + - Vous souhaitez connecter OpenClaw à WeChat ou à Weixin + - Vous installez ou dépannez le Plugin de canal openclaw-weixin + - Vous devez comprendre comment les Plugins de canal externes s’exécutent à côté du Gateway +summary: Configuration du canal WeChat via le Plugin externe openclaw-weixin +title: WeChat +x-i18n: + generated_at: "2026-04-19T01:11:13Z" + model: gpt-5.4 + provider: openai + source_hash: ae669f2b6300e0c2b1d1dc57743a0a2ab0c05b9e277ec2ac640a03e6e7ab3b84 + source_path: channels/wechat.md + workflow: 15 +--- + +# WeChat + +OpenClaw se connecte à WeChat via le Plugin de canal externe +`@tencent-weixin/openclaw-weixin`. + +Statut : Plugin externe. Les discussions directes et les médias sont pris en charge. Les discussions de groupe ne sont pas +annoncées par les métadonnées de capacité du Plugin actuel. + +## Dénomination + +- **WeChat** est le nom affiché à l’utilisateur dans cette documentation. +- **Weixin** est le nom utilisé par le package de Tencent et par l’identifiant du Plugin. +- `openclaw-weixin` est l’identifiant du canal OpenClaw. +- `@tencent-weixin/openclaw-weixin` est le package npm. + +Utilisez `openclaw-weixin` dans les commandes CLI et les chemins de configuration. + +## Fonctionnement + +Le code WeChat ne se trouve pas dans le dépôt core d’OpenClaw. OpenClaw fournit le +contrat générique de Plugin de canal, et le Plugin externe fournit le +runtime spécifique à WeChat : + +1. `openclaw plugins install` installe `@tencent-weixin/openclaw-weixin`. +2. Le Gateway détecte le manifeste du Plugin et charge le point d’entrée du Plugin. +3. Le Plugin enregistre l’identifiant de canal `openclaw-weixin`. +4. `openclaw channels login --channel openclaw-weixin` lance la connexion par QR code. +5. Le Plugin stocke les identifiants du compte dans le répertoire d’état d’OpenClaw. +6. Lorsque le Gateway démarre, le Plugin lance son moniteur Weixin pour chaque + compte configuré. +7. Les messages entrants de WeChat sont normalisés via le contrat de canal, routés vers + l’agent OpenClaw sélectionné, puis renvoyés via le chemin sortant du Plugin. + +Cette séparation est importante : le core d’OpenClaw doit rester indépendant des canaux. La connexion WeChat, +les appels à l’API Tencent iLink, le téléversement/téléchargement des médias, les jetons de contexte et la surveillance +des comptes relèvent du Plugin externe. + +## Installation + +Installation rapide : + +```bash +npx -y @tencent-weixin/openclaw-weixin-cli install +``` + +Installation manuelle : + +```bash +openclaw plugins install "@tencent-weixin/openclaw-weixin" +openclaw config set plugins.entries.openclaw-weixin.enabled true +``` + +Redémarrez le Gateway après l’installation : + +```bash +openclaw gateway restart +``` + +## Connexion + +Lancez la connexion par QR code sur la même machine que celle qui exécute le Gateway : + +```bash +openclaw channels login --channel openclaw-weixin +``` + +Scannez le QR code avec WeChat sur votre téléphone et confirmez la connexion. Le Plugin enregistre +le jeton du compte localement après un scan réussi. + +Pour ajouter un autre compte WeChat, exécutez à nouveau la même commande de connexion. Pour plusieurs +comptes, isolez les sessions de messages directs par compte, canal et expéditeur : + +```bash +openclaw config set session.dmScope per-account-channel-peer +``` + +## Contrôle d’accès + +Les messages directs utilisent le modèle normal d’appairage et de liste d’autorisation d’OpenClaw pour les Plugins +de canal. + +Approuvez les nouveaux expéditeurs : + +```bash +openclaw pairing list openclaw-weixin +openclaw pairing approve openclaw-weixin +``` + +Pour le modèle complet de contrôle d’accès, consultez [Appairage](/fr/channels/pairing). + +## Compatibilité + +Le Plugin vérifie la version d’OpenClaw hôte au démarrage. + +| Ligne du Plugin | Version d’OpenClaw | Tag npm | +| --------------- | ----------------------- | -------- | +| `2.x` | `>=2026.3.22` | `latest` | +| `1.x` | `>=2026.1.0 <2026.3.22` | `legacy` | + +Si le Plugin indique que votre version d’OpenClaw est trop ancienne, mettez soit +OpenClaw à jour, soit installez la ligne legacy du Plugin : + +```bash +openclaw plugins install @tencent-weixin/openclaw-weixin@legacy +``` + +## Processus sidecar + +Le Plugin WeChat peut exécuter un travail auxiliaire à côté du Gateway pendant qu’il surveille l’API +Tencent iLink. Dans l’issue #68451, ce chemin auxiliaire a révélé un bug dans le nettoyage générique +des Gateway obsolètes d’OpenClaw : un processus enfant pouvait essayer de nettoyer le processus Gateway +parent, provoquant des boucles de redémarrage sous des gestionnaires de processus comme systemd. + +Le nettoyage actuel au démarrage d’OpenClaw exclut le processus en cours et ses ancêtres, +donc un processus auxiliaire de canal ne doit pas tuer le Gateway qui l’a lancé. Cette correction est +générique ; ce n’est pas un chemin spécifique à WeChat dans le core. + +## Dépannage + +Vérifiez l’installation et l’état : + +```bash +openclaw plugins list +openclaw channels status --probe +openclaw --version +``` + +Si le canal apparaît comme installé mais ne se connecte pas, confirmez que le Plugin est +activé puis redémarrez : + +```bash +openclaw config set plugins.entries.openclaw-weixin.enabled true +openclaw gateway restart +``` + +Si le Gateway redémarre en boucle après l’activation de WeChat, mettez à jour OpenClaw et +le Plugin : + +```bash +npm view @tencent-weixin/openclaw-weixin version +openclaw plugins install "@tencent-weixin/openclaw-weixin" --force +openclaw gateway restart +``` + +Désactivation temporaire : + +```bash +openclaw config set plugins.entries.openclaw-weixin.enabled false +openclaw gateway restart +``` + +## Documentation connexe + +- Vue d’ensemble des canaux : [Canaux de chat](/fr/channels) +- Appairage : [Appairage](/fr/channels/pairing) +- Routage des canaux : [Routage des canaux](/fr/channels/channel-routing) +- Architecture des Plugins : [Architecture des Plugins](/fr/plugins/architecture) +- SDK des Plugins de canal : [SDK des Plugins de canal](/fr/plugins/sdk-channel-plugins) +- Package externe : [@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) diff --git a/docs/fr/concepts/active-memory.md b/docs/fr/concepts/active-memory.md index 8c181544e..edebb2d5a 100644 --- a/docs/fr/concepts/active-memory.md +++ b/docs/fr/concepts/active-memory.md @@ -6,31 +6,25 @@ read_when: summary: Un sous-agent de mémoire bloquante géré par le Plugin qui injecte la mémoire pertinente dans les sessions de chat interactives title: Active Memory x-i18n: - generated_at: "2026-04-16T06:57:02Z" + generated_at: "2026-04-19T01:11:15Z" model: gpt-5.4 provider: openai - source_hash: ab36c5fea1578348cc2258ea3b344cc7bdc814f337d659cdb790512b3ea45473 + source_hash: 30fb5d12f1f2e3845d95b90925814faa5c84240684ebd4325c01598169088432 source_path: concepts/active-memory.md workflow: 15 --- # Active Memory -Active Memory est un sous-agent de mémoire bloquante optionnel géré par le Plugin, qui s’exécute -avant la réponse principale pour les sessions conversationnelles éligibles. +Active Memory est un sous-agent de mémoire bloquant facultatif géré par le Plugin, qui s’exécute avant la réponse principale pour les sessions conversationnelles éligibles. -Il existe parce que la plupart des systèmes de mémoire sont performants mais réactifs. Ils reposent sur -l’agent principal pour décider quand chercher dans la mémoire, ou sur l’utilisateur pour dire des choses -comme « mémorise ceci » ou « cherche dans la mémoire ». À ce moment-là, l’instant où la mémoire aurait -rendu la réponse naturelle est déjà passé. +Il existe parce que la plupart des systèmes de mémoire sont capables, mais réactifs. Ils dépendent de l’agent principal pour décider quand rechercher dans la mémoire, ou de l’utilisateur pour dire des choses comme « mémorise ceci » ou « recherche dans la mémoire ». À ce moment-là, l’instant où la mémoire aurait pu rendre la réponse naturelle est déjà passé. -Active Memory donne au système une occasion limitée de faire remonter une mémoire pertinente -avant que la réponse principale ne soit générée. +Active Memory donne au système une occasion limitée de faire remonter une mémoire pertinente avant que la réponse principale ne soit générée. ## Collez ceci dans votre agent -Collez ceci dans votre agent si vous voulez qu’il active Active Memory avec une -configuration autonome et sûre par défaut : +Collez ceci dans votre agent si vous voulez activer Active Memory avec une configuration autonome et sûre par défaut : ```json5 { @@ -56,12 +50,9 @@ configuration autonome et sûre par défaut : } ``` -Cela active le Plugin pour l’agent `main`, le limite par défaut aux -sessions de type message direct, lui permet d’hériter d’abord du modèle de la session -actuelle, et utilise le modèle de secours configuré uniquement si aucun modèle explicite -ou hérité n’est disponible. +Cela active le Plugin pour l’agent `main`, le limite par défaut aux sessions de type message direct, lui permet d’hériter d’abord du modèle de la session actuelle, et utilise le modèle de secours configuré uniquement si aucun modèle explicite ou hérité n’est disponible. -Ensuite, redémarrez la Gateway : +Ensuite, redémarrez le Gateway : ```bash openclaw gateway @@ -107,7 +98,7 @@ Commencez avec ceci dans `openclaw.json` : } ``` -Puis redémarrez la Gateway : +Puis redémarrez le Gateway : ```bash openclaw gateway @@ -119,20 +110,17 @@ Ce que cela signifie : - `config.agents: ["main"]` active Active Memory uniquement pour l’agent `main` - `config.allowedChatTypes: ["direct"]` limite par défaut Active Memory aux sessions de type message direct - si `config.model` n’est pas défini, Active Memory hérite d’abord du modèle de la session actuelle -- `config.modelFallback` fournit éventuellement votre propre fournisseur/modèle de secours pour le rappel -- `config.promptStyle: "balanced"` utilise le style d’invite généraliste par défaut pour le mode `recent` -- Active Memory s’exécute toujours uniquement sur les sessions de chat interactives persistantes éligibles +- `config.modelFallback` fournit éventuellement votre propre provider/modèle de secours pour le rappel +- `config.promptStyle: "balanced"` utilise le style d’invite général par défaut pour le mode `recent` +- Active Memory ne s’exécute toujours que sur les sessions de chat persistantes interactives éligibles ## Recommandations de vitesse -La configuration la plus simple consiste à laisser `config.model` non défini et à laisser Active Memory utiliser -le même modèle que celui que vous utilisez déjà pour les réponses normales. C’est le choix par défaut le plus sûr -parce qu’il suit vos préférences existantes en matière de fournisseur, d’authentification et de modèle. +La configuration la plus simple consiste à laisser `config.model` non défini et à laisser Active Memory utiliser le même modèle que celui que vous utilisez déjà pour les réponses normales. C’est l’option par défaut la plus sûre, car elle suit vos préférences existantes de provider, d’authentification et de modèle. -Si vous voulez qu’Active Memory semble plus rapide, utilisez un modèle d’inférence dédié -au lieu d’emprunter le modèle principal du chat. +Si vous voulez qu’Active Memory paraisse plus rapide, utilisez un modèle d’inférence dédié au lieu d’emprunter le modèle principal du chat. -Exemple de configuration avec fournisseur rapide : +Exemple de configuration avec un provider rapide : ```json5 models: { @@ -159,22 +147,21 @@ plugins: { Options de modèles rapides à envisager : -- `cerebras/gpt-oss-120b` pour un modèle de rappel dédié et rapide avec une surface d’outils restreinte +- `cerebras/gpt-oss-120b` pour un modèle de rappel dédié rapide avec une surface d’outils étroite - votre modèle de session normal, en laissant `config.model` non défini -- un modèle de secours à faible latence comme `google/gemini-3-flash` lorsque vous voulez un modèle de rappel distinct sans modifier votre modèle de chat principal +- un modèle de secours à faible latence tel que `google/gemini-3-flash` lorsque vous voulez un modèle de rappel distinct sans changer votre modèle de chat principal Pourquoi Cerebras est une bonne option orientée vitesse pour Active Memory : -- la surface d’outils d’Active Memory est restreinte : il appelle uniquement `memory_search` et `memory_get` -- la qualité du rappel compte, mais la latence compte davantage que pour le chemin de réponse principal -- un fournisseur rapide dédié évite de lier la latence du rappel mémoire à votre fournisseur de chat principal +- la surface d’outils d’Active Memory est étroite : elle appelle uniquement `memory_search` et `memory_get` +- la qualité du rappel est importante, mais la latence compte davantage que pour le chemin de réponse principal +- un provider rapide dédié évite de lier la latence du rappel mémoire à votre provider de chat principal -Si vous ne voulez pas d’un modèle séparé optimisé pour la vitesse, laissez `config.model` non défini -et laissez Active Memory hériter du modèle de la session actuelle. +Si vous ne voulez pas d’un modèle séparé optimisé pour la vitesse, laissez `config.model` non défini et laissez Active Memory hériter du modèle de la session actuelle. -### Configuration Cerebras +### Configuration de Cerebras -Ajoutez une entrée de fournisseur comme ceci : +Ajoutez une entrée de provider comme ceci : ```json5 models: { @@ -206,18 +193,15 @@ plugins: { Mise en garde : -- assurez-vous que la clé API Cerebras a bien accès au modèle que vous choisissez, car la visibilité de `/v1/models` seule ne garantit pas l’accès à `chat/completions` +- assurez-vous que la clé API Cerebras a réellement accès au modèle que vous choisissez, car la visibilité de `/v1/models` à elle seule ne garantit pas l’accès à `chat/completions` ## Comment le voir -Active Memory injecte un préfixe d’invite caché non fiable pour le modèle. Il -n’expose pas les balises brutes `...` dans la -réponse normale visible par le client. +Active Memory injecte un préfixe d’invite caché non fiable pour le modèle. Il n’expose pas les balises brutes `...` dans la réponse normale visible par le client. ## Bascule de session -Utilisez la commande du Plugin lorsque vous voulez suspendre ou reprendre Active Memory pour la -session de chat actuelle sans modifier la configuration : +Utilisez la commande du Plugin lorsque vous voulez suspendre ou reprendre Active Memory pour la session de chat actuelle sans modifier la configuration : ```text /active-memory status @@ -225,12 +209,10 @@ session de chat actuelle sans modifier la configuration : /active-memory on ``` -Ceci est limité à la session. Cela ne modifie pas -`plugins.entries.active-memory.enabled`, le ciblage des agents ni aucune autre -configuration globale. +Cela s’applique à la session en cours. Cela ne modifie pas +`plugins.entries.active-memory.enabled`, le ciblage de l’agent ou d’autres paramètres globaux. -Si vous voulez que la commande écrive la configuration et suspende ou reprenne Active Memory pour -toutes les sessions, utilisez la forme globale explicite : +Si vous voulez que la commande écrive dans la configuration et suspende ou reprenne Active Memory pour toutes les sessions, utilisez la forme globale explicite : ```text /active-memory status --global @@ -239,29 +221,23 @@ toutes les sessions, utilisez la forme globale explicite : ``` La forme globale écrit `plugins.entries.active-memory.config.enabled`. Elle laisse -`plugins.entries.active-memory.enabled` activé afin que la commande reste disponible pour -réactiver Active Memory plus tard. +`plugins.entries.active-memory.enabled` activé afin que la commande reste disponible pour réactiver Active Memory plus tard. -Si vous voulez voir ce qu’Active Memory fait dans une session en direct, activez les -bascules de session qui correspondent à la sortie voulue : +Si vous voulez voir ce que fait Active Memory dans une session en direct, activez les bascules de session correspondant à la sortie que vous souhaitez : ```text /verbose on /trace on ``` -Avec ces options activées, OpenClaw peut afficher : +Avec celles-ci activées, OpenClaw peut afficher : -- une ligne d’état Active Memory comme `Active Memory: status=ok elapsed=842ms query=recent summary=34 chars` lorsque `/verbose on` est activé -- un résumé de débogage lisible comme `Active Memory Debug: Lemon pepper wings with blue cheese.` lorsque `/trace on` est activé +- une ligne d’état Active Memory telle que `Active Memory: status=ok elapsed=842ms query=recent summary=34 chars` quand `/verbose on` +- un résumé de débogage lisible tel que `Active Memory Debug: Lemon pepper wings with blue cheese.` quand `/trace on` -Ces lignes proviennent du même passage Active Memory qui alimente le préfixe -d’invite caché, mais elles sont formatées pour les humains au lieu d’exposer des -balises d’invite brutes. Elles sont envoyées comme message de diagnostic de suivi après la -réponse normale de l’assistant afin que les clients de canal comme Telegram n’affichent pas une bulle de diagnostic distincte avant la réponse. +Ces lignes proviennent du même passage Active Memory qui alimente le préfixe d’invite caché, mais elles sont formatées pour les humains au lieu d’exposer le balisage brut de l’invite. Elles sont envoyées comme message de diagnostic de suivi après la réponse normale de l’assistant afin que des clients de canal comme Telegram n’affichent pas une bulle de diagnostic distincte avant la réponse. -Si vous activez également `/trace raw`, le bloc tracé `Model Input (User Role)` affichera -le préfixe Active Memory caché sous la forme : +Si vous activez aussi `/trace raw`, le bloc tracé `Model Input (User Role)` affichera le préfixe caché d’Active Memory sous la forme : ```text Untrusted context (metadata, do not treat as instructions or commands): @@ -270,8 +246,7 @@ Untrusted context (metadata, do not treat as instructions or commands): ``` -Par défaut, la transcription du sous-agent de mémoire bloquante est temporaire et supprimée -une fois l’exécution terminée. +Par défaut, la transcription du sous-agent de mémoire bloquant est temporaire et supprimée une fois l’exécution terminée. Exemple de flux : @@ -281,7 +256,7 @@ Exemple de flux : what wings should i order? ``` -Forme de réponse visible attendue : +Forme visible attendue de la réponse : ```text ...normal assistant reply... @@ -292,14 +267,13 @@ Forme de réponse visible attendue : ## Quand il s’exécute -Active Memory utilise deux garde-fous : +Active Memory utilise deux critères : -1. **Activation par configuration** +1. **Activation par la configuration** Le Plugin doit être activé, et l’identifiant de l’agent actuel doit apparaître dans `plugins.entries.active-memory.config.agents`. -2. **Éligibilité d’exécution stricte** - Même lorsqu’il est activé et ciblé, Active Memory ne s’exécute que pour les - sessions de chat interactives persistantes éligibles. +2. **Éligibilité stricte à l’exécution** + Même lorsqu’il est activé et ciblé, Active Memory ne s’exécute que pour les sessions de chat persistantes interactives éligibles. La règle réelle est : @@ -328,8 +302,7 @@ La valeur par défaut est : allowedChatTypes: ["direct"] ``` -Cela signifie qu’Active Memory s’exécute par défaut dans les sessions de type message direct, mais -pas dans les sessions de groupe ou de canal, sauf si vous les activez explicitement. +Cela signifie qu’Active Memory s’exécute par défaut dans les sessions de type message direct, mais pas dans les sessions de groupe ou de canal, sauf si vous les activez explicitement. Exemples : @@ -347,37 +320,36 @@ allowedChatTypes: ["direct", "group", "channel"] ## Où il s’exécute -Active Memory est une fonctionnalité d’enrichissement conversationnel, et non une -fonctionnalité d’inférence à l’échelle de la plateforme. +Active Memory est une fonctionnalité d’enrichissement conversationnel, et non une fonctionnalité d’inférence à l’échelle de la plateforme. -| Surface | Active Memory s’exécute ? | -| ------------------------------------------------------------------- | ------------------------------------------------------- | -| Sessions persistantes de chat dans l’interface de contrôle / le web | Oui, si le Plugin est activé et que l’agent est ciblé | +| Surface | Active Memory s’exécute ? | +| ------------------------------------------------------------------- | ------------------------------------------------------ | +| Sessions persistantes de chat dans l’interface de contrôle / chat web | Oui, si le Plugin est activé et que l’agent est ciblé | | Autres sessions de canal interactives sur le même chemin de chat persistant | Oui, si le Plugin est activé et que l’agent est ciblé | -| Exécutions ponctuelles sans interface | Non | -| Exécutions Heartbeat/en arrière-plan | Non | -| Chemins internes génériques `agent-command` | Non | -| Exécution de sous-agent/helper interne | Non | +| Exécutions headless à usage unique | Non | +| Exécutions Heartbeat/en arrière-plan | Non | +| Chemins internes génériques `agent-command` | Non | +| Exécution de sous-agent/helper interne | Non | ## Pourquoi l’utiliser Utilisez Active Memory lorsque : - la session est persistante et destinée à l’utilisateur -- l’agent dispose d’une mémoire à long terme utile à interroger -- la continuité et la personnalisation comptent plus que le déterminisme brut de l’invite +- l’agent dispose d’une mémoire à long terme pertinente à interroger +- la continuité et la personnalisation comptent davantage que le déterminisme brut de l’invite Il fonctionne particulièrement bien pour : - les préférences stables - les habitudes récurrentes -- le contexte utilisateur à long terme qui doit émerger naturellement +- le contexte utilisateur à long terme qui doit remonter naturellement -Il est mal adapté pour : +Il est peu adapté pour : - l’automatisation - les workers internes -- les tâches API ponctuelles +- les tâches API à usage unique - les endroits où une personnalisation cachée serait surprenante ## Comment cela fonctionne @@ -393,7 +365,7 @@ flowchart LR I --> M["Main Reply"] ``` -Le sous-agent de mémoire bloquante peut utiliser uniquement : +Le sous-agent de mémoire bloquant peut utiliser uniquement : - `memory_search` - `memory_get` @@ -402,20 +374,19 @@ Si la connexion est faible, il doit renvoyer `NONE`. ## Modes de requête -`config.queryMode` contrôle la quantité de conversation que voit le sous-agent de mémoire bloquante. +`config.queryMode` contrôle la quantité de conversation que voit le sous-agent de mémoire bloquant. ## Styles d’invite -`config.promptStyle` contrôle à quel point le sous-agent de mémoire bloquante est -proactif ou strict lorsqu’il décide de renvoyer de la mémoire. +`config.promptStyle` contrôle à quel point le sous-agent de mémoire bloquant est prompt ou strict lorsqu’il décide de renvoyer de la mémoire. Styles disponibles : -- `balanced` : valeur par défaut généraliste pour le mode `recent` -- `strict` : le moins proactif ; idéal lorsque vous voulez très peu d’influence du contexte proche +- `balanced` : valeur par défaut polyvalente pour le mode `recent` +- `strict` : le moins prompt ; idéal lorsque vous voulez très peu de contamination par le contexte proche - `contextual` : le plus favorable à la continuité ; idéal lorsque l’historique de conversation doit compter davantage -- `recall-heavy` : plus enclin à faire remonter de la mémoire sur des correspondances plus souples mais toujours plausibles -- `precision-heavy` : préfère agressivement `NONE` sauf si la correspondance est évidente +- `recall-heavy` : plus disposé à faire remonter de la mémoire sur des correspondances plus souples mais toujours plausibles +- `precision-heavy` : préfère agressivement `NONE` à moins que la correspondance soit évidente - `preference-only` : optimisé pour les favoris, les habitudes, les routines, les goûts et les faits personnels récurrents Mappage par défaut lorsque `config.promptStyle` n’est pas défini : @@ -426,7 +397,7 @@ recent -> balanced full -> contextual ``` -Si vous définissez explicitement `config.promptStyle`, cette surcharge l’emporte. +Si vous définissez `config.promptStyle` explicitement, cette valeur de remplacement prévaut. Exemple : @@ -456,14 +427,14 @@ modelFallback: "google/gemini-3-flash" Si aucun modèle explicite, hérité ou de secours configuré n’est résolu, Active Memory ignore le rappel pour ce tour. -`config.modelFallbackPolicy` est conservé uniquement comme champ de compatibilité +`config.modelFallbackPolicy` n’est conservé que comme champ de compatibilité obsolète pour les anciennes configurations. Il ne modifie plus le comportement à l’exécution. -## Échappatoires avancées +## Options avancées de secours -Ces options ne font volontairement pas partie de la configuration recommandée. +Ces options ne font intentionnellement pas partie de la configuration recommandée. -`config.thinking` peut remplacer le niveau de réflexion du sous-agent de mémoire bloquante : +`config.thinking` peut remplacer le niveau de réflexion du sous-agent de mémoire bloquant : ```json5 thinking: "medium" @@ -475,8 +446,8 @@ Valeur par défaut : thinking: "off" ``` -Ne l’activez pas par défaut. Active Memory s’exécute sur le chemin de réponse, donc du temps -de réflexion supplémentaire augmente directement la latence visible par l’utilisateur. +Ne l’activez pas par défaut. Active Memory s’exécute sur le chemin de réponse, donc le temps de +réflexion supplémentaire augmente directement la latence visible par l’utilisateur. `config.promptAppend` ajoute des instructions opérateur supplémentaires après l’invite Active Memory par défaut et avant le contexte de conversation : @@ -486,15 +457,15 @@ promptAppend: "Prefer stable long-term preferences over one-off events." ``` `config.promptOverride` remplace l’invite Active Memory par défaut. OpenClaw -ajoute toujours ensuite le contexte de conversation : +ajoute ensuite toujours le contexte de conversation : ```json5 promptOverride: "You are a memory search agent. Return NONE or one compact user fact." ``` -La personnalisation de l’invite n’est pas recommandée sauf si vous testez délibérément un +La personnalisation de l’invite n’est pas recommandée, sauf si vous testez délibérément un contrat de rappel différent. L’invite par défaut est réglée pour renvoyer soit `NONE`, -soit un contexte compact de fait utilisateur pour le modèle principal. +soit un contexte compact de faits utilisateur pour le modèle principal. ### `message` @@ -504,7 +475,7 @@ Seul le dernier message utilisateur est envoyé. Latest user message only ``` -Utilisez ceci lorsque : +Utilisez ce mode lorsque : - vous voulez le comportement le plus rapide - vous voulez le biais le plus fort vers le rappel de préférences stables @@ -516,7 +487,7 @@ Délai d’expiration recommandé : ### `recent` -Le dernier message utilisateur ainsi qu’une petite queue conversationnelle récente sont envoyés. +Le dernier message utilisateur, plus une petite queue de conversation récente, est envoyé. ```text Recent conversation tail: @@ -528,9 +499,9 @@ Latest user message: ... ``` -Utilisez ceci lorsque : +Utilisez ce mode lorsque : -- vous voulez un meilleur équilibre entre rapidité et ancrage conversationnel +- vous voulez un meilleur équilibre entre vitesse et ancrage conversationnel - les questions de suivi dépendent souvent des derniers tours Délai d’expiration recommandé : @@ -539,7 +510,7 @@ Délai d’expiration recommandé : ### `full` -La conversation complète est envoyée au sous-agent de mémoire bloquante. +L’intégralité de la conversation est envoyée au sous-agent de mémoire bloquant. ```text Full conversation context: @@ -549,14 +520,14 @@ user: ... ... ``` -Utilisez ceci lorsque : +Utilisez ce mode lorsque : -- la meilleure qualité de rappel compte plus que la latence -- la conversation contient une mise en place importante loin plus haut dans le fil +- la meilleure qualité de rappel compte davantage que la latence +- la conversation contient une configuration importante loin dans le fil Délai d’expiration recommandé : -- augmentez-le sensiblement par rapport à `message` ou `recent` +- augmentez-le nettement par rapport à `message` ou `recent` - commencez autour de `15000` ms ou plus selon la taille du fil En général, le délai d’expiration doit augmenter avec la taille du contexte : @@ -567,16 +538,16 @@ message < recent < full ## Persistance des transcriptions -Les exécutions du sous-agent de mémoire bloquante d’Active Memory créent une vraie -transcription `session.jsonl` pendant l’appel au sous-agent de mémoire bloquante. +Les exécutions du sous-agent de mémoire bloquant d’Active Memory créent une véritable +transcription `session.jsonl` pendant l’appel du sous-agent de mémoire bloquant. Par défaut, cette transcription est temporaire : - elle est écrite dans un répertoire temporaire -- elle est utilisée uniquement pour l’exécution du sous-agent de mémoire bloquante +- elle est utilisée uniquement pour l’exécution du sous-agent de mémoire bloquant - elle est supprimée immédiatement après la fin de l’exécution -Si vous voulez conserver ces transcriptions du sous-agent de mémoire bloquante sur disque pour le débogage ou +Si vous voulez conserver ces transcriptions du sous-agent de mémoire bloquant sur disque pour le débogage ou l’inspection, activez explicitement la persistance : ```json5 @@ -597,10 +568,10 @@ l’inspection, activez explicitement la persistance : ``` Lorsqu’elle est activée, Active Memory stocke les transcriptions dans un répertoire distinct sous le -dossier de sessions de l’agent cible, et non dans le chemin principal de transcription de la +dossier des sessions de l’agent cible, et non dans le chemin principal des transcriptions de conversation utilisateur. -La disposition par défaut est conceptuellement : +La structure par défaut est conceptuellement : ```text agents//sessions/active-memory/.jsonl @@ -610,9 +581,9 @@ Vous pouvez modifier le sous-répertoire relatif avec `config.transcriptDir`. Utilisez cela avec précaution : -- les transcriptions du sous-agent de mémoire bloquante peuvent s’accumuler rapidement sur les sessions actives -- le mode de requête `full` peut dupliquer une grande partie du contexte conversationnel -- ces transcriptions contiennent un contexte d’invite caché et des mémoires rappelées +- les transcriptions du sous-agent de mémoire bloquant peuvent s’accumuler rapidement sur les sessions actives +- le mode de requête `full` peut dupliquer une grande quantité de contexte conversationnel +- ces transcriptions contiennent un contexte d’invite caché et des souvenirs rappelés ## Configuration @@ -628,28 +599,28 @@ Les champs les plus importants sont : | --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | `enabled` | `boolean` | Active le Plugin lui-même | | `config.agents` | `string[]` | Identifiants d’agents pouvant utiliser Active Memory | -| `config.model` | `string` | Référence facultative du modèle du sous-agent de mémoire bloquante ; si non défini, Active Memory utilise le modèle de la session actuelle | -| `config.queryMode` | `"message" \| "recent" \| "full"` | Contrôle la quantité de conversation que voit le sous-agent de mémoire bloquante | -| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Contrôle à quel point le sous-agent de mémoire bloquante est proactif ou strict lorsqu’il décide de renvoyer de la mémoire | -| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Remplacement avancé de la réflexion pour le sous-agent de mémoire bloquante ; valeur par défaut `off` pour la rapidité | +| `config.model` | `string` | Référence facultative du modèle du sous-agent de mémoire bloquant ; si non défini, Active Memory utilise le modèle de la session actuelle | +| `config.queryMode` | `"message" \| "recent" \| "full"` | Contrôle la quantité de conversation que voit le sous-agent de mémoire bloquant | +| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Contrôle à quel point le sous-agent de mémoire bloquant est prompt ou strict lorsqu’il décide de renvoyer de la mémoire | +| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Remplacement avancé de la réflexion pour le sous-agent de mémoire bloquant ; valeur par défaut `off` pour la vitesse | | `config.promptOverride` | `string` | Remplacement avancé complet de l’invite ; non recommandé pour un usage normal | -| `config.promptAppend` | `string` | Instructions supplémentaires avancées ajoutées à l’invite par défaut ou remplacée | -| `config.timeoutMs` | `number` | Délai d’expiration strict pour le sous-agent de mémoire bloquante | -| `config.maxSummaryChars` | `number` | Nombre maximal total de caractères autorisé dans le résumé active-memory | +| `config.promptAppend` | `string` | Instructions supplémentaires avancées ajoutées à l’invite par défaut ou remplacée | +| `config.timeoutMs` | `number` | Délai d’expiration strict pour le sous-agent de mémoire bloquant, plafonné à 120000 ms | +| `config.maxSummaryChars` | `number` | Nombre maximal total de caractères autorisés dans le résumé active-memory | | `config.logging` | `boolean` | Émet des journaux Active Memory pendant l’ajustement | -| `config.persistTranscripts` | `boolean` | Conserve les transcriptions du sous-agent de mémoire bloquante sur disque au lieu de supprimer les fichiers temporaires | -| `config.transcriptDir` | `string` | Répertoire relatif des transcriptions du sous-agent de mémoire bloquante sous le dossier de sessions de l’agent | +| `config.persistTranscripts` | `boolean` | Conserve sur disque les transcriptions du sous-agent de mémoire bloquant au lieu de supprimer les fichiers temporaires | +| `config.transcriptDir` | `string` | Répertoire relatif des transcriptions du sous-agent de mémoire bloquant sous le dossier des sessions de l’agent | Champs d’ajustement utiles : -| Clé | Type | Signification | -| ----------------------------- | -------- | ----------------------------------------------------------- | -| `config.maxSummaryChars` | `number` | Nombre maximal total de caractères autorisé dans le résumé active-memory | -| `config.recentUserTurns` | `number` | Tours utilisateur précédents à inclure lorsque `queryMode` vaut `recent` | -| `config.recentAssistantTurns` | `number` | Tours assistant précédents à inclure lorsque `queryMode` vaut `recent` | -| `config.recentUserChars` | `number` | Nombre maximal de caractères par tour utilisateur récent | -| `config.recentAssistantChars` | `number` | Nombre maximal de caractères par tour assistant récent | -| `config.cacheTtlMs` | `number` | Réutilisation du cache pour des requêtes identiques répétées | +| Clé | Type | Signification | +| ----------------------------- | -------- | --------------------------------------------------------------- | +| `config.maxSummaryChars` | `number` | Nombre maximal total de caractères autorisés dans le résumé active-memory | +| `config.recentUserTurns` | `number` | Tours utilisateur précédents à inclure lorsque `queryMode` est `recent` | +| `config.recentAssistantTurns` | `number` | Tours assistant précédents à inclure lorsque `queryMode` est `recent` | +| `config.recentUserChars` | `number` | Nombre maximal de caractères par tour utilisateur récent | +| `config.recentAssistantChars` | `number` | Nombre maximal de caractères par tour assistant récent | +| `config.cacheTtlMs` | `number` | Réutilisation du cache pour des requêtes identiques répétées | ## Configuration recommandée @@ -676,23 +647,23 @@ Commencez avec `recent`. ``` Si vous voulez inspecter le comportement en direct pendant l’ajustement, utilisez `/verbose on` pour la -ligne d’état normale et `/trace on` pour le résumé de débogage active-memory au lieu +ligne d’état normale et `/trace on` pour le résumé de débogage active-memory, au lieu de chercher une commande de débogage active-memory distincte. Dans les canaux de chat, ces lignes de diagnostic sont envoyées après la réponse principale de l’assistant plutôt qu’avant. -Puis passez à : +Passez ensuite à : - `message` si vous voulez une latence plus faible -- `full` si vous décidez qu’un contexte supplémentaire vaut un sous-agent de mémoire bloquante plus lent +- `full` si vous décidez que le contexte supplémentaire vaut le sous-agent de mémoire bloquant plus lent ## Débogage Si Active Memory n’apparaît pas là où vous l’attendez : -1. Confirmez que le Plugin est activé dans `plugins.entries.active-memory.enabled`. +1. Confirmez que le Plugin est activé sous `plugins.entries.active-memory.enabled`. 2. Confirmez que l’identifiant de l’agent actuel figure dans `config.agents`. -3. Confirmez que vous testez via une session de chat interactive persistante. -4. Activez `config.logging: true` et surveillez les journaux de la Gateway. +3. Confirmez que vous testez via une session de chat persistante interactive. +4. Activez `config.logging: true` et surveillez les journaux du Gateway. 5. Vérifiez que la recherche mémoire elle-même fonctionne avec `openclaw memory status --deep`. Si les résultats mémoire sont trop bruyants, resserrez : @@ -704,64 +675,61 @@ Si Active Memory est trop lent : - réduisez `queryMode` - réduisez `timeoutMs` - réduisez le nombre de tours récents -- réduisez les plafonds de caractères par tour +- réduisez les limites de caractères par tour ## Problèmes courants -### Le fournisseur d’embeddings a changé de manière inattendue +### Le provider d’embedding a changé de manière inattendue Active Memory utilise le pipeline normal `memory_search` sous -`agents.defaults.memorySearch`. Cela signifie que la configuration du fournisseur d’embeddings n’est requise -que si votre configuration `memorySearch` nécessite des embeddings pour le comportement -souhaité. +`agents.defaults.memorySearch`. Cela signifie que la configuration du provider d’embedding n’est requise que lorsque votre configuration `memorySearch` nécessite des embeddings pour le comportement que vous voulez. En pratique : -- une configuration explicite du fournisseur est **requise** si vous voulez un fournisseur qui n’est pas +- la configuration explicite du provider est **requise** si vous voulez un provider qui n’est pas détecté automatiquement, comme `ollama` -- une configuration explicite du fournisseur est **requise** si la détection automatique ne résout - aucun fournisseur d’embeddings utilisable pour votre environnement -- une configuration explicite du fournisseur est **fortement recommandée** si vous voulez une - sélection de fournisseur déterministe au lieu de « premier disponible gagnant » -- une configuration explicite du fournisseur n’est généralement **pas requise** si la détection automatique - résout déjà le fournisseur voulu et que ce fournisseur est stable dans votre déploiement +- la configuration explicite du provider est **requise** si l’auto-détection ne résout + aucun provider d’embedding utilisable pour votre environnement +- la configuration explicite du provider est **fortement recommandée** si vous voulez une + sélection déterministe du provider au lieu de « le premier disponible gagne » +- la configuration explicite du provider n’est généralement **pas requise** si l’auto-détection résout déjà + le provider que vous voulez et que ce provider est stable dans votre déploiement -Si `memorySearch.provider` n’est pas défini, OpenClaw détecte automatiquement le premier -fournisseur d’embeddings disponible. +Si `memorySearch.provider` n’est pas défini, OpenClaw détecte automatiquement le premier provider +d’embedding disponible. -Cela peut être déroutant dans des déploiements réels : +Cela peut prêter à confusion dans des déploiements réels : -- une nouvelle clé API disponible peut changer le fournisseur utilisé par la recherche mémoire -- une commande ou une surface de diagnostic peut faire paraître le fournisseur sélectionné +- une clé API nouvellement disponible peut changer le provider utilisé par la recherche mémoire +- une commande ou une surface de diagnostic peut faire paraître le provider sélectionné différent du chemin réellement utilisé pendant la synchronisation mémoire en direct ou - l’initialisation de la recherche -- les fournisseurs hébergés peuvent échouer avec des erreurs de quota ou de limitation de débit qui n’apparaissent + l’amorçage de la recherche +- les providers hébergés peuvent échouer avec des erreurs de quota ou de limitation de débit qui n’apparaissent qu’une fois qu’Active Memory commence à émettre des recherches de rappel avant chaque réponse -Active Memory peut toujours s’exécuter sans embeddings lorsque `memory_search` peut fonctionner -en mode lexical dégradé uniquement, ce qui se produit généralement lorsqu’aucun fournisseur -d’embeddings ne peut être résolu. +Active Memory peut toujours fonctionner sans embeddings lorsque `memory_search` peut opérer +en mode lexical dégradé uniquement, ce qui se produit généralement lorsqu’aucun +provider d’embedding ne peut être résolu. -Ne supposez pas le même repli en cas d’échecs du fournisseur à l’exécution tels qu’un épuisement de quota, -des limites de débit, des erreurs réseau/fournisseur, ou des modèles locaux/distants manquants après -qu’un fournisseur a déjà été sélectionné. +Ne supposez pas le même comportement de secours en cas de défaillances du provider à l’exécution, telles que +l’épuisement du quota, les limitations de débit, les erreurs réseau/provider, ou l’absence de modèles locaux/distants après qu’un provider a déjà été sélectionné. En pratique : -- si aucun fournisseur d’embeddings ne peut être résolu, `memory_search` peut se replier en +- si aucun provider d’embedding ne peut être résolu, `memory_search` peut se dégrader en récupération lexicale uniquement -- si un fournisseur d’embeddings est résolu puis échoue à l’exécution, OpenClaw ne - garantit pas actuellement un repli lexical pour cette requête -- si vous avez besoin d’une sélection de fournisseur déterministe, fixez +- si un provider d’embedding est résolu puis échoue à l’exécution, OpenClaw ne + garantit pas actuellement un secours lexical pour cette requête +- si vous avez besoin d’une sélection déterministe du provider, fixez `agents.defaults.memorySearch.provider` -- si vous avez besoin d’un basculement de fournisseur en cas d’erreurs à l’exécution, configurez - explicitement `agents.defaults.memorySearch.fallback` +- si vous avez besoin d’un basculement de provider en cas d’erreurs d’exécution, configurez + `agents.defaults.memorySearch.fallback` explicitement -Si vous dépendez d’un rappel basé sur les embeddings, de l’indexation multimodale ou d’un fournisseur -local/distant spécifique, fixez explicitement le fournisseur au lieu de vous appuyer sur la -détection automatique. +Si vous dépendez d’un rappel basé sur les embeddings, d’une indexation multimodale ou d’un provider +local/distant spécifique, fixez explicitement le provider au lieu de vous appuyer sur +l’auto-détection. -Exemples courants de fixation : +Exemples courants d’épinglage : OpenAI : @@ -808,8 +776,8 @@ Ollama : } ``` -Si vous attendez un basculement de fournisseur lors d’erreurs à l’exécution comme un épuisement de quota, -fixer un fournisseur seul ne suffit pas. Configurez également un secours explicite : +Si vous attendez un basculement de provider sur des erreurs d’exécution telles que l’épuisement du quota, +fixer un provider seul ne suffit pas. Configurez également un secours explicite : ```json5 { @@ -824,32 +792,32 @@ fixer un fournisseur seul ne suffit pas. Configurez également un secours explic } ``` -### Débogage des problèmes de fournisseur +### Débogage des problèmes de provider -Si Active Memory est lent, vide ou semble changer de fournisseur de manière inattendue : +Si Active Memory est lent, vide ou semble changer de provider de façon inattendue : -- surveillez les journaux de la Gateway pendant la reproduction du problème ; recherchez des lignes telles que +- surveillez les journaux du Gateway pendant la reproduction du problème ; recherchez des lignes telles que `active-memory: ... start|done`, `memory sync failed (search-bootstrap)`, ou - des erreurs d’embeddings spécifiques au fournisseur + des erreurs d’embedding spécifiques au provider - activez `/trace on` pour faire apparaître dans la session le résumé de débogage Active Memory géré par le Plugin -- activez `/verbose on` si vous voulez également la ligne d’état normale `🧩 Active Memory: ...` +- activez `/verbose on` si vous voulez aussi la ligne d’état normale `🧩 Active Memory: ...` après chaque réponse - exécutez `openclaw memory status --deep` pour inspecter le backend actuel de recherche mémoire et l’état de l’index -- vérifiez `agents.defaults.memorySearch.provider` et l’authentification/configuration associée pour - vous assurer que le fournisseur attendu est bien celui qui peut être résolu à l’exécution -- si vous utilisez `ollama`, vérifiez que le modèle d’embeddings configuré est installé, par - exemple `ollama list` +- vérifiez `agents.defaults.memorySearch.provider` ainsi que l’authentification/la configuration associées pour vous + assurer que le provider attendu est bien celui qui peut être résolu à l’exécution +- si vous utilisez `ollama`, vérifiez que le modèle d’embedding configuré est installé, par + exemple avec `ollama list` Exemple de boucle de débogage : ```text -1. Démarrez la Gateway et surveillez ses journaux -2. Dans la session de chat, exécutez /trace on -3. Envoyez un message qui devrait déclencher Active Memory -4. Comparez la ligne de débogage visible dans le chat avec les lignes du journal de la Gateway -5. Si le choix du fournisseur est ambigu, fixez explicitement agents.defaults.memorySearch.provider +1. Start the gateway and watch its logs +2. In the chat session, run /trace on +3. Send one message that should trigger Active Memory +4. Compare the chat-visible debug line with the gateway log lines +5. If provider choice is ambiguous, pin agents.defaults.memorySearch.provider explicitly ``` Exemple : @@ -881,11 +849,11 @@ Ou, si vous voulez des embeddings Gemini : } ``` -Après avoir changé de fournisseur, redémarrez la Gateway et exécutez un nouveau test avec -`/trace on` afin que la ligne de débogage Active Memory reflète le nouveau chemin d’embeddings. +Après avoir changé le provider, redémarrez le Gateway et lancez un nouveau test avec +`/trace on` afin que la ligne de débogage Active Memory reflète le nouveau chemin d’embedding. -## Pages liées +## Pages associées - [Recherche mémoire](/fr/concepts/memory-search) -- [Référence de configuration mémoire](/fr/reference/memory-config) -- [Configuration du Plugin SDK](/fr/plugins/sdk-setup) +- [Référence de configuration de la mémoire](/fr/reference/memory-config) +- [Configuration du SDK Plugin](/fr/plugins/sdk-setup) diff --git a/docs/fr/debug/node-issue.md b/docs/fr/debug/node-issue.md index 58cf78059..35c7fcfee 100644 --- a/docs/fr/debug/node-issue.md +++ b/docs/fr/debug/node-issue.md @@ -1,25 +1,25 @@ --- read_when: - - Débogage des scripts de développement Node uniquement ou des échecs du mode watch - - Investigation des crashes du chargeur tsx/esbuild dans OpenClaw -summary: Notes sur le crash Node + tsx « __name is not a function » et solutions de contournement -title: Crash Node + tsx + - Débogage des scripts de développement uniquement Node ou des échecs du mode watch + - Enquête sur les plantages du chargeur tsx/esbuild dans OpenClaw +summary: Notes de plantage et solutions de contournement pour « __name is not a function » avec Node + tsx +title: Plantage Node + tsx x-i18n: - generated_at: "2026-04-05T12:41:12Z" + generated_at: "2026-04-19T01:11:12Z" model: gpt-5.4 provider: openai - source_hash: f5beab7cdfe7679680f65176234a617293ce495886cfffb151518adfa61dc8dc + source_hash: ca45c795c356ada8f81e75b394ec82743d3d1bf1bbe83a24ec6699946b920f01 source_path: debug/node-issue.md workflow: 15 --- -# Crash Node + tsx "\_\_name is not a function" +# Plantage « \_\_name is not a function » avec Node + tsx ## Résumé -L’exécution d’OpenClaw via Node avec `tsx` échoue au démarrage avec : +L’exécution d’OpenClaw via Node avec `tsx` échoue au démarrage avec : -``` +```bash [openclaw] Failed to start CLI: TypeError: __name is not a function at createSubsystemLogger (.../src/logging/subsystem.ts:203:25) at .../src/agents/auth-profiles/constants.ts:25:20 @@ -29,14 +29,14 @@ Cela a commencé après le passage des scripts de développement de Bun à `tsx` ## Environnement -- Node : v25.x (observé sur v25.3.0) -- tsx : 4.21.0 -- OS : macOS (la reproduction est aussi probable sur d’autres plateformes qui exécutent Node 25) +- Node : v25.x (observé sur v25.3.0) +- tsx : 4.21.0 +- OS : macOS (la reproduction est aussi probable sur d’autres plateformes exécutant Node 25) ## Reproduction (Node uniquement) ```bash -# in repo root +# à la racine du dépôt node --version pnpm install node --import tsx src/entry.ts status @@ -48,35 +48,35 @@ node --import tsx src/entry.ts status node --import tsx scripts/repro/tsx-name-repro.ts ``` -## Vérification de la version Node +## Vérification de la version de Node -- Node 25.3.0 : échoue -- Node 22.22.0 (Homebrew `node@22`) : échoue -- Node 24 : pas encore installé ici ; à vérifier +- Node 25.3.0 : échec +- Node 22.22.0 (Homebrew `node@22`) : échec +- Node 24 : pas encore installé ici ; vérification nécessaire ## Notes / hypothèse -- `tsx` utilise esbuild pour transformer TS/ESM. `keepNames` d’esbuild émet un helper `__name` et encapsule les définitions de fonction avec `__name(...)`. -- Le crash indique que `__name` existe mais n’est pas une fonction à l’exécution, ce qui implique que le helper est manquant ou écrasé pour ce module dans le chemin du chargeur Node 25. -- Des problèmes similaires avec le helper `__name` ont été signalés dans d’autres consommateurs d’esbuild lorsque le helper est manquant ou réécrit. +- `tsx` utilise esbuild pour transformer TS/ESM. L’option `keepNames` d’esbuild émet un helper `__name` et encapsule les définitions de fonctions avec `__name(...)`. +- Le plantage indique que `__name` existe mais n’est pas une fonction à l’exécution, ce qui implique que le helper est manquant ou écrasé pour ce module dans le chemin du chargeur Node 25. +- Des problèmes similaires liés au helper `__name` ont été signalés dans d’autres consommateurs d’esbuild lorsque le helper est manquant ou réécrit. -## Historique de régression +## Historique de la régression -- `2871657e` (2026-01-06) : les scripts sont passés de Bun à tsx pour rendre Bun facultatif. +- `2871657e` (2026-01-06) : les scripts sont passés de Bun à tsx pour rendre Bun optionnel. - Avant cela (chemin Bun), `openclaw status` et `gateway:watch` fonctionnaient. ## Solutions de contournement - Utiliser Bun pour les scripts de développement (retour temporaire actuel). -- Utiliser Node + watch TSC, puis exécuter la sortie compilée : +- Utiliser `tsgo` pour la vérification de types du dépôt, puis exécuter la sortie compilée : ```bash - pnpm exec tsc --watch --preserveWatchOutput - node --watch openclaw.mjs status + pnpm tsgo + node openclaw.mjs status ``` -- Confirmé localement : `pnpm exec tsc -p tsconfig.json` + `node openclaw.mjs status` fonctionne sur Node 25. -- Désactiver `keepNames` d’esbuild dans le chargeur TS si possible (empêche l’insertion du helper `__name`) ; tsx n’expose actuellement pas cela. +- Note historique : `tsc` a été utilisé ici pendant le débogage de ce problème Node/tsx, mais les lanes de vérification de types du dépôt utilisent maintenant `tsgo`. +- Désactiver `keepNames` d’esbuild dans le chargeur TS si possible (cela évite l’insertion du helper `__name`) ; tsx n’expose pas actuellement cette option. - Tester Node LTS (22/24) avec `tsx` pour voir si le problème est spécifique à Node 25. ## Références @@ -88,5 +88,5 @@ node --import tsx scripts/repro/tsx-name-repro.ts ## Étapes suivantes - Reproduire sur Node 22/24 pour confirmer une régression de Node 25. -- Tester `tsx` nightly ou l’épingler à une version antérieure si une régression connue existe. -- Si le problème se reproduit sur Node LTS, déposer en amont une reproduction minimale avec la trace de pile `__name`. +- Tester `tsx` nightly ou épingler une version antérieure si une régression connue existe. +- Si le problème se reproduit sur Node LTS, déposer une reproduction minimale en amont avec la trace de pile `__name`. diff --git a/docs/fr/install/gcp.md b/docs/fr/install/gcp.md index 4e6b8e8c8..32b3e61e5 100644 --- a/docs/fr/install/gcp.md +++ b/docs/fr/install/gcp.md @@ -1,15 +1,15 @@ --- read_when: - - Vous souhaitez qu’OpenClaw fonctionne 24 h/24 et 7 j/7 sur GCP - - Vous souhaitez une passerelle de production toujours active sur votre propre VM + - Vous voulez qu’OpenClaw fonctionne 24 h/24 et 7 j/7 sur GCP + - Vous voulez un Gateway de qualité production, toujours actif, sur votre propre VM - Vous voulez un contrôle total sur la persistance, les binaires et le comportement de redémarrage -summary: Exécuter OpenClaw Gateway 24 h/24 et 7 j/7 sur une VM GCP Compute Engine (Docker) avec un état persistant +summary: Exécutez OpenClaw Gateway 24 h/24 et 7 j/7 sur une VM GCP Compute Engine (Docker) avec un état persistant title: GCP x-i18n: - generated_at: "2026-04-05T12:45:48Z" + generated_at: "2026-04-19T01:11:12Z" model: gpt-5.4 provider: openai - source_hash: 73daaee3de71dad5175f42abf3e11355f2603b2f9e2b2523eac4d4c7015e3ebc + source_hash: 6b4cf7924cbcfae74f268c88caedb79ed87a6ad37f4910ad65d92a5d99fe49c1 source_path: install/gcp.md workflow: 15 --- @@ -18,57 +18,57 @@ x-i18n: ## Objectif -Exécuter une passerelle OpenClaw persistante sur une VM GCP Compute Engine avec Docker, avec un état durable, des binaires intégrés à l’image et un comportement de redémarrage sûr. +Exécuter un Gateway OpenClaw persistant sur une VM GCP Compute Engine à l’aide de Docker, avec un état persistant, des binaires intégrés à l’image et un comportement de redémarrage sûr. -Si vous voulez « OpenClaw 24 h/24 et 7 j/7 pour ~5 à 12 $/mois », c’est une configuration fiable sur Google Cloud. -Le prix varie selon le type de machine et la région ; choisissez la plus petite VM adaptée à votre charge, puis montez en taille si vous rencontrez des OOM. +Si vous voulez « OpenClaw 24/7 pour ~5 à 12 $/mois », c’est une configuration fiable sur Google Cloud. +Le tarif varie selon le type de machine et la région ; choisissez la plus petite VM adaptée à votre charge de travail et augmentez la taille si vous rencontrez des OOM. -## Que faisons-nous exactement ? (en termes simples) +## Que faisons-nous (en termes simples) ? - Créer un projet GCP et activer la facturation - Créer une VM Compute Engine - Installer Docker (runtime d’application isolé) -- Démarrer OpenClaw Gateway dans Docker +- Démarrer le Gateway OpenClaw dans Docker - Persister `~/.openclaw` + `~/.openclaw/workspace` sur l’hôte (survit aux redémarrages/reconstructions) -- Accéder à l’interface de contrôle depuis votre ordinateur portable via un tunnel SSH +- Accéder à l’interface utilisateur de contrôle depuis votre ordinateur portable via un tunnel SSH -Cet état monté `~/.openclaw` inclut `openclaw.json`, les fichiers par agent -`agents//agent/auth-profiles.json` et `.env`. +Cet état monté de `~/.openclaw` inclut `openclaw.json`, les profils par agent +`agents//agent/auth-profiles.json`, et `.env`. -La passerelle est accessible via : +Le Gateway est accessible via : -- redirection de port SSH depuis votre ordinateur portable -- exposition directe du port si vous gérez vous-même le pare-feu et les jetons +- la redirection de port SSH depuis votre ordinateur portable +- l’exposition directe du port si vous gérez vous-même le pare-feu et les jetons Ce guide utilise Debian sur GCP Compute Engine. -Ubuntu fonctionne également ; adaptez les packages en conséquence. -Pour le flux Docker générique, consultez [Docker](/install/docker). +Ubuntu fonctionne aussi ; adaptez les paquets en conséquence. +Pour le flux Docker générique, voir [Docker](/fr/install/docker). --- ## Chemin rapide (opérateurs expérimentés) 1. Créer un projet GCP + activer l’API Compute Engine -2. Créer une VM Compute Engine (e2-small, Debian 12, 20GB) +2. Créer une VM Compute Engine (e2-small, Debian 12, 20 Go) 3. Se connecter en SSH à la VM 4. Installer Docker 5. Cloner le dépôt OpenClaw -6. Créer les répertoires hôte persistants +6. Créer des répertoires hôtes persistants 7. Configurer `.env` et `docker-compose.yml` -8. Intégrer les binaires requis, construire et lancer +8. Intégrer les binaires requis à l’image, construire et lancer --- ## Ce dont vous avez besoin -- Un compte GCP (éligible au niveau gratuit pour e2-micro) +- Un compte GCP (niveau gratuit éligible pour e2-micro) - La CLI gcloud installée (ou utiliser Cloud Console) - Un accès SSH depuis votre ordinateur portable -- Une aisance minimale avec SSH + copier/coller -- ~20-30 minutes +- Une aisance de base avec SSH + le copier/coller +- ~20 à 30 minutes - Docker et Docker Compose - Des identifiants d’authentification de modèle -- Identifiants de fournisseurs facultatifs +- Des identifiants de fournisseur facultatifs - QR WhatsApp - jeton de bot Telegram - OAuth Gmail @@ -81,7 +81,7 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). Installez-la depuis [https://cloud.google.com/sdk/docs/install](https://cloud.google.com/sdk/docs/install) - Initialisez et authentifiez-vous : + Initialisez-la et authentifiez-vous : ```bash gcloud init @@ -90,7 +90,7 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). **Option B : Cloud Console** - Toutes les étapes peuvent être réalisées via l’interface web sur [https://console.cloud.google.com](https://console.cloud.google.com) + Toutes les étapes peuvent être effectuées via l’interface web sur [https://console.cloud.google.com](https://console.cloud.google.com) @@ -115,18 +115,18 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). 1. Allez dans IAM et administration > Créer un projet 2. Donnez-lui un nom et créez-le 3. Activez la facturation pour le projet - 4. Accédez à API et services > Activer des API > recherchez « Compute Engine API » > Activer + 4. Accédez à API et services > Activer des API et des services > recherchez « Compute Engine API » > Activer **Types de machine :** - | Type | Spécifications | Coût | Remarques | - | --------- | ----------------------- | ------------------ | -------------------------------------------- | - | e2-medium | 2 vCPU, 4GB de RAM | ~25 $/mois | Le plus fiable pour les builds Docker locaux | - | e2-small | 2 vCPU, 2GB de RAM | ~12 $/mois | Minimum recommandé pour un build Docker | - | e2-micro | 2 vCPU (partagés), 1GB RAM | Éligible au niveau gratuit | Échoue souvent avec OOM lors du build Docker (exit 137) | + | Type | Spécifications | Coût | Notes | + | --------- | ------------------------ | ------------------ | --------------------------------------------- | + | e2-medium | 2 vCPU, 4 Go de RAM | ~25 $/mois | Le plus fiable pour les builds Docker locaux | + | e2-small | 2 vCPU, 2 Go de RAM | ~12 $/mois | Minimum recommandé pour un build Docker | + | e2-micro | 2 vCPU (partagés), 1 Go RAM | Éligible au niveau gratuit | Échoue souvent sur OOM pendant le build Docker (exit 137) | **CLI :** @@ -143,9 +143,9 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). 1. Allez dans Compute Engine > Instances de VM > Créer une instance 2. Nom : `openclaw-gateway` - 3. Région : `us-central1`, Zone : `us-central1-a` + 3. Région : `us-central1`, zone : `us-central1-a` 4. Type de machine : `e2-small` - 5. Disque de démarrage : Debian 12, 20GB + 5. Disque de démarrage : Debian 12, 20 Go 6. Créer @@ -204,9 +204,9 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). - + Les conteneurs Docker sont éphémères. - Tout l’état de longue durée doit vivre sur l’hôte. + Tout état de longue durée doit vivre sur l’hôte. ```bash mkdir -p ~/.openclaw @@ -220,18 +220,21 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). ```bash OPENCLAW_IMAGE=openclaw:latest - OPENCLAW_GATEWAY_TOKEN=change-me-now + OPENCLAW_GATEWAY_TOKEN= OPENCLAW_GATEWAY_BIND=lan OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace - GOG_KEYRING_PASSWORD=change-me-now + GOG_KEYRING_PASSWORD= XDG_CONFIG_HOME=/home/node/.openclaw ``` - Générez des secrets robustes : + Laissez `OPENCLAW_GATEWAY_TOKEN` vide sauf si vous voulez explicitement + le gérer via `.env` ; OpenClaw écrit un jeton Gateway aléatoire dans la + configuration au premier démarrage. Générez un mot de passe de trousseau + puis collez-le dans `GOG_KEYRING_PASSWORD` : ```bash openssl rand -hex 32 @@ -239,9 +242,9 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). **Ne validez pas ce fichier dans le dépôt.** - Ce fichier `.env` sert aux variables env du conteneur/runtime telles que `OPENCLAW_GATEWAY_TOKEN`. - L’authentification OAuth/clés API des fournisseurs stockée se trouve dans le - `~/.openclaw/agents//agent/auth-profiles.json` monté. + Ce fichier `.env` est destiné aux variables d’environnement du conteneur/runtime telles que `OPENCLAW_GATEWAY_TOKEN`. + L’authentification stockée du fournisseur OAuth/clé API vit dans le montage + `~/.openclaw/agents//agent/auth-profiles.json`. @@ -270,8 +273,8 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace ports: - # Recommended: keep the Gateway loopback-only on the VM; access via SSH tunnel. - # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly. + # Recommandé : gardez le Gateway accessible uniquement en loopback sur la VM ; accédez-y via un tunnel SSH. + # Pour l’exposer publiquement, supprimez le préfixe `127.0.0.1:` et configurez le pare-feu en conséquence. - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789" command: [ @@ -286,35 +289,35 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). ] ``` - `--allow-unconfigured` n’est là que pour faciliter le bootstrap, ce n’est pas un remplacement d’une configuration correcte de la passerelle. Configurez tout de même l’authentification (`gateway.auth.token` ou mot de passe) et utilisez des paramètres de liaison sûrs pour votre déploiement. + `--allow-unconfigured` sert uniquement à faciliter l’initialisation ; ce n’est pas un remplacement à une configuration Gateway correcte. Configurez quand même l’authentification (`gateway.auth.token` ou mot de passe) et utilisez des paramètres de liaison sûrs pour votre déploiement. - - Utilisez le guide runtime partagé pour le flux Docker hôte commun : + + Utilisez le guide de runtime partagé pour le flux hôte Docker commun : - - [Intégrer les binaires requis dans l’image](/install/docker-vm-runtime#bake-required-binaries-into-the-image) - - [Construire et lancer](/install/docker-vm-runtime#build-and-launch) - - [Ce qui persiste et où](/install/docker-vm-runtime#what-persists-where) - - [Mises à jour](/install/docker-vm-runtime#updates) + - [Intégrer les binaires requis à l’image](/fr/install/docker-vm-runtime#bake-required-binaries-into-the-image) + - [Construire et lancer](/fr/install/docker-vm-runtime#build-and-launch) + - [Ce qui persiste et où](/fr/install/docker-vm-runtime#what-persists-where) + - [Mises à jour](/fr/install/docker-vm-runtime#updates) - + Sur GCP, si le build échoue avec `Killed` ou `exit code 137` pendant `pnpm install --frozen-lockfile`, la VM manque de mémoire. Utilisez au minimum `e2-small`, ou `e2-medium` pour des premiers builds plus fiables. - Lors d’une liaison au LAN (`OPENCLAW_GATEWAY_BIND=lan`), configurez une origine de navigateur de confiance avant de continuer : + Lors d’une liaison au LAN (`OPENCLAW_GATEWAY_BIND=lan`), configurez une origine de navigateur approuvée avant de continuer : ```bash docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins '["http://127.0.0.1:18789"]' --strict-json ``` - Si vous avez changé le port de la passerelle, remplacez `18789` par votre port configuré. + Si vous avez changé le port du gateway, remplacez `18789` par le port configuré. - - Créez un tunnel SSH pour transférer le port de la passerelle : + + Créez un tunnel SSH pour rediriger le port du Gateway : ```bash gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789 @@ -324,26 +327,23 @@ Pour le flux Docker générique, consultez [Docker](/install/docker). `http://127.0.0.1:18789/` - Réafficher un lien de tableau de bord propre : + Réaffichez un lien propre vers le tableau de bord : ```bash docker compose run --rm openclaw-cli dashboard --no-open ``` - Si l’interface vous demande une authentification par secret partagé, collez le jeton ou - mot de passe configuré dans les paramètres de l’interface de contrôle. Ce flux Docker écrit un jeton par - défaut ; si vous basculez la configuration du conteneur vers une authentification par mot de passe, utilisez ce - mot de passe à la place. + Si l’interface utilisateur de contrôle demande une authentification par secret partagé, collez le jeton ou le mot de passe configuré dans les paramètres de l’interface utilisateur de contrôle. Ce flux Docker écrit un jeton par défaut ; si vous basculez la configuration du conteneur vers une authentification par mot de passe, utilisez ce mot de passe à la place. - Si l’interface de contrôle affiche `unauthorized` ou `disconnected (1008): pairing required`, approuvez l’appareil du navigateur : + Si l’interface utilisateur de contrôle affiche `unauthorized` ou `disconnected (1008): pairing required`, approuvez l’appareil navigateur : ```bash docker compose run --rm openclaw-cli devices list docker compose run --rm openclaw-cli devices approve ``` - Besoin de revoir la référence de persistance et de mise à jour partagées ? - Consultez [Runtime Docker VM](/install/docker-vm-runtime#what-persists-where) et [mises à jour du Runtime Docker VM](/install/docker-vm-runtime#updates). + Vous avez à nouveau besoin de la référence sur la persistance partagée et les mises à jour ? + Voir [Docker VM Runtime](/fr/install/docker-vm-runtime#what-persists-where) et [Mises à jour Docker VM Runtime](/fr/install/docker-vm-runtime#updates). @@ -368,18 +368,18 @@ Assurez-vous que votre compte dispose des autorisations IAM requises (Compute OS **Mémoire insuffisante (OOM)** -Si le build Docker échoue avec `Killed` et `exit code 137`, la VM a été tuée pour cause d’OOM. Passez à e2-small (minimum) ou e2-medium (recommandé pour des builds locaux fiables) : +Si le build Docker échoue avec `Killed` et `exit code 137`, la VM a été arrêtée par OOM. Passez à e2-small (minimum) ou e2-medium (recommandé pour des builds locaux fiables) : ```bash -# Stop the VM first +# Arrêtez d’abord la VM gcloud compute instances stop openclaw-gateway --zone=us-central1-a -# Change machine type +# Changer le type de machine gcloud compute instances set-machine-type openclaw-gateway \ --zone=us-central1-a \ --machine-type=e2-small -# Start the VM +# Démarrer la VM gcloud compute instances start openclaw-gateway --zone=us-central1-a ``` @@ -389,7 +389,7 @@ gcloud compute instances start openclaw-gateway --zone=us-central1-a Pour un usage personnel, votre compte utilisateur par défaut convient très bien. -Pour les pipelines d’automatisation ou CI/CD, créez un compte de service dédié avec des autorisations minimales : +Pour l’automatisation ou les pipelines CI/CD, créez un compte de service dédié avec des autorisations minimales : 1. Créez un compte de service : @@ -408,12 +408,12 @@ Pour les pipelines d’automatisation ou CI/CD, créez un compte de service déd Évitez d’utiliser le rôle Owner pour l’automatisation. Appliquez le principe du moindre privilège. -Consultez [https://cloud.google.com/iam/docs/understanding-roles](https://cloud.google.com/iam/docs/understanding-roles) pour les détails sur les rôles IAM. +Voir [https://cloud.google.com/iam/docs/understanding-roles](https://cloud.google.com/iam/docs/understanding-roles) pour plus d’informations sur les rôles IAM. --- ## Étapes suivantes -- Configurer les canaux de messagerie : [Channels](/channels) -- Appairer des appareils locaux comme nœuds : [Nodes](/nodes) -- Configurer la passerelle : [Configuration de la passerelle](/gateway/configuration) +- Configurer les canaux de messagerie : [Canaux](/fr/channels) +- Associer des appareils locaux comme Nodes : [Nodes](/fr/nodes) +- Configurer le Gateway : [Configuration du Gateway](/fr/gateway/configuration) diff --git a/docs/fr/install/hetzner.md b/docs/fr/install/hetzner.md index 93278118f..1c4174900 100644 --- a/docs/fr/install/hetzner.md +++ b/docs/fr/install/hetzner.md @@ -1,16 +1,16 @@ --- read_when: - - Vous voulez OpenClaw en fonctionnement 24 h/24 et 7 j/7 sur un VPS cloud (pas sur votre laptop) - - Vous voulez une Gateway toujours active de niveau production sur votre propre VPS - - Vous voulez un contrôle complet sur la persistance, les binaires et le comportement au redémarrage + - Vous souhaitez exécuter OpenClaw 24 h/24 et 7 j/7 sur un VPS cloud (pas sur votre ordinateur portable) + - Vous souhaitez un Gateway de niveau production, toujours actif, sur votre propre VPS + - Vous souhaitez un contrôle total sur la persistance, les binaires et le comportement de redémarrage - Vous exécutez OpenClaw dans Docker sur Hetzner ou un fournisseur similaire -summary: Exécuter OpenClaw Gateway 24 h/24 et 7 j/7 sur un VPS Hetzner économique (Docker) avec état persistant et binaires intégrés +summary: Exécutez OpenClaw Gateway 24 h/24 et 7 j/7 sur un VPS Hetzner peu coûteux (Docker) avec un état persistant et des binaires intégrés title: Hetzner x-i18n: - generated_at: "2026-04-05T12:45:42Z" + generated_at: "2026-04-19T01:11:13Z" model: gpt-5.4 provider: openai - source_hash: d859e4c0943040b022835f320708f879a11eadef70f2816cf0f2824eaaf165ef + source_hash: 32f5e552ea87970b89c762059bc27f22e0aa3abf001307cae8829b9f1c713a42 source_path: install/hetzner.md workflow: 15 --- @@ -19,37 +19,38 @@ x-i18n: ## Objectif -Exécuter une Gateway OpenClaw persistante sur un VPS Hetzner à l’aide de Docker, avec état durable, binaires intégrés et comportement de redémarrage sûr. +Exécuter un Gateway OpenClaw persistant sur un VPS Hetzner à l’aide de Docker, avec un état persistant, des binaires intégrés et un comportement de redémarrage sûr. -Si vous voulez « OpenClaw 24 h/24, 7 j/7 pour ~5 $ », c’est la configuration fiable la plus simple. -Les tarifs Hetzner changent ; choisissez le plus petit VPS Debian/Ubuntu et augmentez si vous rencontrez des OOM. +Si vous voulez « OpenClaw 24 h/24 et 7 j/7 pour ~5 $ », c’est la configuration fiable la plus simple. +Les tarifs de Hetzner évoluent ; choisissez le plus petit VPS Debian/Ubuntu et augmentez la capacité si vous rencontrez des OOM. -Rappel sur le modèle de sécurité : +Rappel du modèle de sécurité : -- Les agents partagés d’entreprise conviennent lorsque tout le monde se trouve dans la même limite de confiance et que le runtime est exclusivement professionnel. -- Gardez une séparation stricte : VPS/runtime dédié + comptes dédiés ; pas de profils personnels Apple/Google/navigateur/gestionnaire de mots de passe sur cet hôte. -- Si les utilisateurs sont adversaires les uns des autres, séparez par gateway/hôte/utilisateur OS. +- Les agents partagés dans une entreprise conviennent si tout le monde se trouve dans la même limite de confiance et si le runtime est réservé à un usage professionnel. +- Maintenez une séparation stricte : VPS/runtime dédié + comptes dédiés ; aucun profil personnel Apple/Google/navigateur/gestionnaire de mots de passe sur cet hôte. +- Si les utilisateurs sont adversariaux les uns envers les autres, séparez par gateway/hôte/utilisateur OS. -Voir [Sécurité](/gateway/security) et [Hébergement VPS](/vps). +Voir [Sécurité](/fr/gateway/security) et [Hébergement VPS](/fr/vps). -## Ce que nous faisons (en termes simples) +## Que faisons-nous exactement (en termes simples) ? - Louer un petit serveur Linux (VPS Hetzner) - Installer Docker (runtime d’application isolé) -- Démarrer la Gateway OpenClaw dans Docker -- Persister `~/.openclaw` + `~/.openclaw/workspace` sur l’hôte (survit aux redémarrages/rebuilds) -- Accéder à l’UI de contrôle depuis votre laptop via un tunnel SSH +- Démarrer le Gateway OpenClaw dans Docker +- Faire persister `~/.openclaw` + `~/.openclaw/workspace` sur l’hôte (survit aux redémarrages/reconstructions) +- Accéder à l’interface de contrôle depuis votre ordinateur portable via un tunnel SSH -Cet état monté `~/.openclaw` inclut `openclaw.json`, `agents//agent/auth-profiles.json` par agent et `.env`. +Cet état monté `~/.openclaw` inclut `openclaw.json`, le fichier +`agents//agent/auth-profiles.json` par agent, et `.env`. -La Gateway peut être accessible via : +Le Gateway est accessible via : -- Transfert de port SSH depuis votre laptop +- Redirection de port SSH depuis votre ordinateur portable - Exposition directe du port si vous gérez vous-même le pare-feu et les jetons Ce guide suppose Ubuntu ou Debian sur Hetzner. -Si vous êtes sur un autre VPS Linux, adaptez les paquets en conséquence. -Pour le flux Docker générique, voir [Docker](/install/docker). +Si vous utilisez un autre VPS Linux, adaptez les paquets en conséquence. +Pour le flux Docker générique, voir [Docker](/fr/install/docker). --- @@ -58,23 +59,23 @@ Pour le flux Docker générique, voir [Docker](/install/docker). 1. Provisionner un VPS Hetzner 2. Installer Docker 3. Cloner le dépôt OpenClaw -4. Créer les répertoires hôte persistants +4. Créer des répertoires hôtes persistants 5. Configurer `.env` et `docker-compose.yml` 6. Intégrer les binaires requis dans l’image 7. `docker compose up -d` -8. Vérifier la persistance et l’accès à la Gateway +8. Vérifier la persistance et l’accès au Gateway --- ## Ce dont vous avez besoin -- VPS Hetzner avec accès root -- Accès SSH depuis votre laptop +- Un VPS Hetzner avec accès root +- Un accès SSH depuis votre ordinateur portable - Une aisance de base avec SSH + copier/coller - ~20 minutes - Docker et Docker Compose -- Identifiants d’authentification du modèle -- Identifiants facultatifs de fournisseurs +- Des identifiants d’authentification de modèle +- Des identifiants de fournisseur en option - QR WhatsApp - Jeton de bot Telegram - OAuth Gmail @@ -83,9 +84,9 @@ Pour le flux Docker générique, voir [Docker](/install/docker). - Créez un VPS Ubuntu ou Debian chez Hetzner. + Créez un VPS Ubuntu ou Debian dans Hetzner. - Connectez-vous en root : + Connectez-vous en tant que root : ```bash ssh root@YOUR_VPS_IP @@ -122,9 +123,9 @@ Pour le flux Docker générique, voir [Docker](/install/docker). - + Les conteneurs Docker sont éphémères. - Tout état de longue durée doit vivre sur l’hôte. + Tout état de longue durée doit résider sur l’hôte. ```bash mkdir -p /root/.openclaw/workspace @@ -140,27 +141,30 @@ Pour le flux Docker générique, voir [Docker](/install/docker). ```bash OPENCLAW_IMAGE=openclaw:latest - OPENCLAW_GATEWAY_TOKEN=change-me-now + OPENCLAW_GATEWAY_TOKEN= OPENCLAW_GATEWAY_BIND=lan OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_CONFIG_DIR=/root/.openclaw OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace - GOG_KEYRING_PASSWORD=change-me-now + GOG_KEYRING_PASSWORD= XDG_CONFIG_HOME=/home/node/.openclaw ``` - Générez des secrets forts : + Laissez `OPENCLAW_GATEWAY_TOKEN` vide sauf si vous souhaitez explicitement + le gérer via `.env` ; OpenClaw écrit un jeton de gateway aléatoire dans la + configuration au premier démarrage. Générez un mot de passe de trousseau et collez-le dans + `GOG_KEYRING_PASSWORD` : ```bash openssl rand -hex 32 ``` - **Ne validez pas ce fichier.** + **Ne validez pas ce fichier dans le dépôt.** - Ce fichier `.env` sert aux variables d’environnement du conteneur/runtime telles que `OPENCLAW_GATEWAY_TOKEN`. - L’authentification OAuth/clé API des fournisseurs stockée se trouve dans + Ce fichier `.env` sert aux variables d’environnement du conteneur/runtime, telles que `OPENCLAW_GATEWAY_TOKEN`. + L’authentification OAuth/clé API des fournisseurs stockée se trouve dans le montage `~/.openclaw/agents//agent/auth-profiles.json`. @@ -190,7 +194,7 @@ Pour le flux Docker générique, voir [Docker](/install/docker). - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace ports: - # Recommandé : gardez la Gateway en loopback uniquement sur le VPS ; accédez-y via un tunnel SSH. + # Recommandé : gardez le Gateway accessible uniquement en loopback sur le VPS ; accédez-y via un tunnel SSH. # Pour l’exposer publiquement, supprimez le préfixe `127.0.0.1:` et configurez le pare-feu en conséquence. - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789" command: @@ -206,22 +210,22 @@ Pour le flux Docker générique, voir [Docker](/install/docker). ] ``` - `--allow-unconfigured` n’est là que pour la commodité du bootstrap ; ce n’est pas un remplacement pour une configuration gateway correcte. Définissez quand même l’authentification (`gateway.auth.token` ou mot de passe) et utilisez des paramètres de liaison sûrs pour votre déploiement. + `--allow-unconfigured` n’est là que pour simplifier l’amorçage ; il ne remplace pas une configuration de gateway correcte. Configurez quand même l’authentification (`gateway.auth.token` ou mot de passe) et utilisez des paramètres de liaison sûrs pour votre déploiement. - - Utilisez le guide de runtime partagé pour le flux courant d’hôte Docker : + + Utilisez le guide runtime partagé pour le flux hôte Docker commun : - - [Intégrer les binaires requis dans l’image](/install/docker-vm-runtime#bake-required-binaries-into-the-image) - - [Construire et lancer](/install/docker-vm-runtime#build-and-launch) - - [Ce qui persiste où](/install/docker-vm-runtime#what-persists-where) - - [Mises à jour](/install/docker-vm-runtime#updates) + - [Intégrer les binaires requis dans l’image](/fr/install/docker-vm-runtime#bake-required-binaries-into-the-image) + - [Construire et lancer](/fr/install/docker-vm-runtime#build-and-launch) + - [Ce qui persiste et où](/fr/install/docker-vm-runtime#what-persists-where) + - [Mises à jour](/fr/install/docker-vm-runtime#updates) - Après les étapes partagées de construction et de lancement, créez un tunnel depuis votre laptop : + Après les étapes partagées de construction et de lancement, créez un tunnel depuis votre ordinateur portable : ```bash ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP @@ -231,23 +235,23 @@ Pour le flux Docker générique, voir [Docker](/install/docker). `http://127.0.0.1:18789/` - Collez le secret partagé configuré. Ce guide utilise le jeton gateway par - défaut ; si vous êtes passé à l’authentification par mot de passe, utilisez ce mot de passe à la place. + Collez le secret partagé configuré. Ce guide utilise par défaut le jeton du gateway ; + si vous êtes passé à l’authentification par mot de passe, utilisez ce mot de passe à la place. -La carte de persistance partagée se trouve dans [Docker VM Runtime](/install/docker-vm-runtime#what-persists-where). +La carte de persistance partagée se trouve dans [Docker VM Runtime](/fr/install/docker-vm-runtime#what-persists-where). ## Infrastructure as Code (Terraform) -Pour les équipes qui préfèrent les flux infrastructure-as-code, une configuration Terraform maintenue par la communauté fournit : +Pour les équipes qui préfèrent des flux de travail d’infrastructure as code, une configuration Terraform maintenue par la communauté fournit : -- Configuration Terraform modulaire avec gestion d’état distant -- Provisionnement automatisé via cloud-init -- Scripts de déploiement (bootstrap, déploiement, sauvegarde/restauration) -- Renforcement de la sécurité (pare-feu, UFW, accès SSH uniquement) -- Configuration de tunnel SSH pour l’accès à la gateway +- Une configuration Terraform modulaire avec gestion d’état distant +- Un provisionnement automatisé via cloud-init +- Des scripts de déploiement (bootstrap, deploy, backup/restore) +- Un durcissement de sécurité (pare-feu, UFW, accès SSH uniquement) +- Une configuration de tunnel SSH pour l’accès au gateway **Dépôts :** @@ -256,10 +260,10 @@ Pour les équipes qui préfèrent les flux infrastructure-as-code, une configura Cette approche complète la configuration Docker ci-dessus avec des déploiements reproductibles, une infrastructure versionnée et une reprise après sinistre automatisée. -> **Remarque :** maintenu par la communauté. Pour les problèmes ou contributions, consultez les liens de dépôt ci-dessus. +> **Remarque :** Maintenu par la communauté. Pour les problèmes ou les contributions, consultez les liens des dépôts ci-dessus. ## Étapes suivantes -- Configurer les canaux de messagerie : [Canaux](/channels) -- Configurer la Gateway : [Configuration Gateway](/gateway/configuration) -- Garder OpenClaw à jour : [Mise à jour](/install/updating) +- Configurer les canaux de messagerie : [Canaux](/fr/channels) +- Configurer le Gateway : [Configuration du Gateway](/fr/gateway/configuration) +- Maintenir OpenClaw à jour : [Mise à jour](/fr/install/updating) diff --git a/docs/fr/plugins/manifest.md b/docs/fr/plugins/manifest.md index 65ddbc2be..88d6df11a 100644 --- a/docs/fr/plugins/manifest.md +++ b/docs/fr/plugins/manifest.md @@ -1,14 +1,14 @@ --- read_when: - Vous créez un Plugin OpenClaw - - Vous devez livrer un schéma de configuration du Plugin ou déboguer les erreurs de validation du Plugin -summary: Exigences du manifeste du Plugin + schéma JSON (validation stricte de la configuration) + - Vous devez fournir un schéma de configuration du plugin ou déboguer des erreurs de validation du plugin +summary: Exigences relatives au manifeste du Plugin + au schéma JSON (validation stricte de la configuration) title: Manifeste du Plugin x-i18n: - generated_at: "2026-04-15T06:56:44Z" + generated_at: "2026-04-19T01:11:11Z" model: gpt-5.4 provider: openai - source_hash: ba2183bfa8802871e4ef33a0ebea290606e8351e9e83e25ee72456addb768730 + source_hash: 2dfc00759108ddee7bfcda8c42acf7f2d47451676447ba3caf8b5950f8a1c181 source_path: plugins/manifest.md workflow: 15 --- @@ -17,58 +17,49 @@ x-i18n: Cette page concerne uniquement le **manifeste natif de Plugin OpenClaw**. -Pour les dispositions de bundle compatibles, consultez [Plugin bundles](/fr/plugins/bundles). +Pour les dispositions de bundle compatibles, consultez [Bundles de Plugin](/fr/plugins/bundles). -Les formats de bundle compatibles utilisent des fichiers de manifeste différents : +Les formats de bundle compatibles utilisent des fichiers de manifeste différents : -- Bundle Codex : `.codex-plugin/plugin.json` -- Bundle Claude : `.claude-plugin/plugin.json` ou la disposition de composant Claude - par défaut sans manifeste -- Bundle Cursor : `.cursor-plugin/plugin.json` +- Bundle Codex : `.codex-plugin/plugin.json` +- Bundle Claude : `.claude-plugin/plugin.json` ou la disposition par défaut des composants Claude sans manifeste +- Bundle Cursor : `.cursor-plugin/plugin.json` -OpenClaw détecte automatiquement ces dispositions de bundle également, mais elles ne sont pas validées -par rapport au schéma `openclaw.plugin.json` décrit ici. +OpenClaw détecte aussi automatiquement ces dispositions de bundle, mais elles ne sont pas validées par rapport au schéma `openclaw.plugin.json` décrit ici. -Pour les bundles compatibles, OpenClaw lit actuellement les métadonnées du bundle ainsi que les racines de -Skills déclarées, les racines de commandes Claude, les valeurs par défaut de `settings.json` du bundle Claude, -les valeurs par défaut LSP du bundle Claude, et les packs de hooks pris en charge lorsque la disposition correspond -aux attentes d’exécution d’OpenClaw. +Pour les bundles compatibles, OpenClaw lit actuellement les métadonnées du bundle ainsi que les racines de skills déclarées, les racines de commandes Claude, les valeurs par défaut de `settings.json` du bundle Claude, les valeurs par défaut LSP du bundle Claude et les packs de hooks pris en charge lorsque la disposition correspond aux attentes d’exécution d’OpenClaw. -Chaque Plugin OpenClaw natif **doit** fournir un fichier `openclaw.plugin.json` dans la -**racine du Plugin**. OpenClaw utilise ce manifeste pour valider la configuration -**sans exécuter le code du Plugin**. Les manifestes absents ou invalides sont traités comme -des erreurs de Plugin et bloquent la validation de la configuration. +Chaque Plugin OpenClaw natif **doit** fournir un fichier `openclaw.plugin.json` dans la **racine du plugin**. OpenClaw utilise ce manifeste pour valider la configuration **sans exécuter le code du plugin**. Les manifestes manquants ou invalides sont traités comme des erreurs de plugin et bloquent la validation de la configuration. -Consultez le guide complet du système de Plugin : [Plugins](/fr/tools/plugin). -Pour le modèle natif de capacités et les recommandations actuelles de compatibilité externe : +Consultez le guide complet du système de plugins : [Plugins](/fr/tools/plugin). +Pour le modèle de capacités natif et les recommandations actuelles de compatibilité externe : [Modèle de capacités](/fr/plugins/architecture#public-capability-model). -## À quoi sert ce fichier +## Rôle de ce fichier -`openclaw.plugin.json` est la métadonnée qu’OpenClaw lit avant de charger le -code de votre Plugin. +`openclaw.plugin.json` contient les métadonnées qu’OpenClaw lit avant de charger le code de votre plugin. -Utilisez-le pour : +Utilisez-le pour : -- l’identité du Plugin +- l’identité du plugin - la validation de la configuration -- les métadonnées d’authentification et d’onboarding qui doivent être disponibles sans démarrer l’environnement d’exécution du Plugin -- les indications d’activation peu coûteuses que les surfaces du plan de contrôle peuvent inspecter avant le chargement de l’environnement d’exécution -- les descripteurs de configuration peu coûteux que les surfaces de configuration/onboarding peuvent inspecter avant le chargement de l’environnement d’exécution -- les métadonnées d’alias et d’activation automatique qui doivent être résolues avant le chargement de l’environnement d’exécution du Plugin -- les métadonnées abrégées de propriété de famille de modèles qui doivent auto-activer le Plugin avant le chargement de l’environnement d’exécution -- les instantanés statiques de propriété des capacités utilisés pour le câblage de compatibilité intégré et la couverture des contrats -- les métadonnées peu coûteuses de l’exécuteur QA que l’hôte partagé `openclaw qa` peut inspecter avant le chargement de l’environnement d’exécution du Plugin -- les métadonnées de configuration spécifiques aux canaux qui doivent être fusionnées dans les surfaces de catalogue et de validation sans charger l’environnement d’exécution +- les métadonnées d’authentification et d’onboarding qui doivent être disponibles sans démarrer l’exécution du plugin +- les indices d’activation légers que les surfaces du plan de contrôle peuvent inspecter avant le chargement de l’exécution +- les descripteurs de configuration légers que les surfaces de configuration/onboarding peuvent inspecter avant le chargement de l’exécution +- les métadonnées d’alias et d’activation automatique qui doivent être résolues avant le chargement de l’exécution du plugin +- les métadonnées abrégées de propriété de famille de modèles qui doivent activer automatiquement le plugin avant le chargement de l’exécution +- les instantanés statiques de propriété de capacités utilisés pour le câblage de compatibilité intégré et la couverture des contrats +- les métadonnées légères de l’exécuteur QA que l’hôte partagé `openclaw qa` peut inspecter avant le chargement de l’exécution du plugin +- les métadonnées de configuration spécifiques aux canaux qui doivent être fusionnées dans les surfaces de catalogue et de validation sans charger l’exécution - les indications d’interface pour la configuration -Ne l’utilisez pas pour : +Ne l’utilisez pas pour : - enregistrer un comportement d’exécution - déclarer des points d’entrée de code -- les métadonnées d’installation npm +- des métadonnées d’installation npm -Ces éléments appartiennent à votre code de Plugin et à `package.json`. +Ces éléments appartiennent au code de votre plugin et à `package.json`. ## Exemple minimal @@ -95,7 +86,14 @@ Ces éléments appartiennent à votre code de Plugin et à `package.json`. "modelSupport": { "modelPrefixes": ["router-"] }, + "providerEndpoints": [ + { + "endpointClass": "xai-native", + "hosts": ["api.x.ai"] + } + ], "cliBackends": ["openrouter-cli"], + "syntheticAuthRefs": ["openrouter-cli"], "providerAuthEnvVars": { "openrouter": ["OPENROUTER_API_KEY"] }, @@ -141,63 +139,64 @@ Ces éléments appartiennent à votre code de Plugin et à `package.json`. ## Référence des champs de niveau supérieur -| Champ | Obligatoire | Type | Signification | -| ----------------------------------- | ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | Oui | `string` | ID canonique du Plugin. C’est l’ID utilisé dans `plugins.entries.`. | -| `configSchema` | Oui | `object` | Schéma JSON inline pour la configuration de ce Plugin. | -| `enabledByDefault` | Non | `true` | Marque un Plugin intégré comme activé par défaut. Omettez-le, ou définissez une valeur autre que `true`, pour laisser le Plugin désactivé par défaut. | -| `legacyPluginIds` | Non | `string[]` | IDs hérités qui se normalisent vers cet ID canonique de Plugin. | -| `autoEnableWhenConfiguredProviders` | Non | `string[]` | IDs de fournisseurs qui doivent auto-activer ce Plugin lorsque l’authentification, la configuration ou les références de modèles les mentionnent. | -| `kind` | Non | `"memory"` \| `"context-engine"` | Déclare un type exclusif de Plugin utilisé par `plugins.slots.*`. | -| `channels` | Non | `string[]` | IDs de canaux détenus par ce Plugin. Utilisés pour la découverte et la validation de la configuration. | -| `providers` | Non | `string[]` | IDs de fournisseurs détenus par ce Plugin. | -| `modelSupport` | Non | `object` | Métadonnées abrégées de famille de modèles détenues par le manifeste et utilisées pour charger automatiquement le Plugin avant l’environnement d’exécution. | -| `cliBackends` | Non | `string[]` | IDs de backend d’inférence CLI détenus par ce Plugin. Utilisés pour l’auto-activation au démarrage à partir de références de configuration explicites. | -| `commandAliases` | Non | `object[]` | Noms de commandes détenus par ce Plugin qui doivent produire une configuration et des diagnostics CLI tenant compte du Plugin avant le chargement de l’environnement d’exécution. | -| `providerAuthEnvVars` | Non | `Record` | Métadonnées d’environnement d’authentification du fournisseur, peu coûteuses, qu’OpenClaw peut inspecter sans charger le code du Plugin. | -| `providerAuthAliases` | Non | `Record` | IDs de fournisseurs qui doivent réutiliser un autre ID de fournisseur pour la recherche d’authentification, par exemple un fournisseur de codage qui partage la clé API et les profils d’authentification du fournisseur de base. | -| `channelEnvVars` | Non | `Record` | Métadonnées d’environnement de canal, peu coûteuses, qu’OpenClaw peut inspecter sans charger le code du Plugin. Utilisez ceci pour les surfaces de configuration ou d’authentification de canal pilotées par l’environnement que les helpers génériques de démarrage/configuration doivent voir. | -| `providerAuthChoices` | Non | `object[]` | Métadonnées de choix d’authentification peu coûteuses pour les sélecteurs d’onboarding, la résolution du fournisseur préféré et le câblage simple des flags CLI. | -| `activation` | Non | `object` | Indications d’activation peu coûteuses pour le chargement déclenché par des fournisseurs, commandes, canaux, routes et capacités. Métadonnées uniquement ; l’environnement d’exécution du Plugin reste responsable du comportement réel. | -| `setup` | Non | `object` | Descripteurs de configuration/onboarding peu coûteux que les surfaces de découverte et de configuration peuvent inspecter sans charger l’environnement d’exécution du Plugin. | -| `qaRunners` | Non | `object[]` | Descripteurs d’exécuteurs QA peu coûteux utilisés par l’hôte partagé `openclaw qa` avant le chargement de l’environnement d’exécution du Plugin. | -| `contracts` | Non | `object` | Instantané statique des capacités intégrées pour la parole, la transcription en temps réel, la voix en temps réel, la compréhension des médias, la génération d’images, la génération de musique, la génération de vidéo, la récupération web, la recherche web et la propriété des outils. | -| `channelConfigs` | Non | `Record` | Métadonnées de configuration de canal détenues par le manifeste et fusionnées dans les surfaces de découverte et de validation avant le chargement de l’environnement d’exécution. | -| `skills` | Non | `string[]` | Répertoires de Skills à charger, relatifs à la racine du Plugin. | -| `name` | Non | `string` | Nom lisible du Plugin. | -| `description` | Non | `string` | Résumé court affiché dans les surfaces du Plugin. | -| `version` | Non | `string` | Version informative du Plugin. | -| `uiHints` | Non | `Record` | Libellés d’interface, espaces réservés et indications de sensibilité pour les champs de configuration. | +| Champ | Obligatoire | Type | Signification | +| ----------------------------------- | ----------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | Oui | `string` | ID canonique du plugin. Il s’agit de l’ID utilisé dans `plugins.entries.`. | +| `configSchema` | Oui | `object` | Schéma JSON inline pour la configuration de ce plugin. | +| `enabledByDefault` | Non | `true` | Marque un plugin intégré comme activé par défaut. Omettez-le, ou définissez toute valeur différente de `true`, pour laisser le plugin désactivé par défaut. | +| `legacyPluginIds` | Non | `string[]` | IDs hérités normalisés vers cet ID canonique de plugin. | +| `autoEnableWhenConfiguredProviders` | Non | `string[]` | IDs de fournisseurs qui doivent activer automatiquement ce plugin lorsque l’authentification, la configuration ou des références de modèles les mentionnent. | +| `kind` | Non | `"memory"` \| `"context-engine"` | Déclare un type de plugin exclusif utilisé par `plugins.slots.*`. | +| `channels` | Non | `string[]` | IDs de canaux appartenant à ce plugin. Utilisés pour la découverte et la validation de la configuration. | +| `providers` | Non | `string[]` | IDs de fournisseurs appartenant à ce plugin. | +| `modelSupport` | Non | `object` | Métadonnées abrégées de famille de modèles appartenant au manifeste, utilisées pour charger automatiquement le plugin avant l’exécution. | +| `providerEndpoints` | Non | `object[]` | Métadonnées d’hôte/baseUrl de point de terminaison appartenant au manifeste pour les routes de fournisseur que le cœur doit classer avant le chargement de l’exécution du fournisseur. | +| `cliBackends` | Non | `string[]` | IDs de backends d’inférence CLI appartenant à ce plugin. Utilisés pour l’activation automatique au démarrage à partir de références de configuration explicites. | +| `syntheticAuthRefs` | Non | `string[]` | Références de fournisseur ou de backend CLI dont le hook d’authentification synthétique appartenant au plugin doit être sondé pendant la découverte à froid des modèles avant le chargement de l’exécution. | +| `nonSecretAuthMarkers` | Non | `string[]` | Valeurs d’espace réservé de clé API appartenant aux plugins intégrés qui représentent un état d’identifiants local, OAuth ou ambiant non secret. | +| `commandAliases` | Non | `object[]` | Noms de commandes appartenant à ce plugin qui doivent produire une configuration sensible au plugin et des diagnostics CLI avant le chargement de l’exécution. | +| `providerAuthEnvVars` | Non | `Record` | Métadonnées légères d’environnement d’authentification du fournisseur qu’OpenClaw peut inspecter sans charger le code du plugin. | +| `providerAuthAliases` | Non | `Record` | IDs de fournisseurs qui doivent réutiliser un autre ID de fournisseur pour la recherche d’authentification, par exemple un fournisseur de code qui partage la clé API et les profils d’authentification du fournisseur de base. | +| `channelEnvVars` | Non | `Record` | Métadonnées légères d’environnement de canal qu’OpenClaw peut inspecter sans charger le code du plugin. Utilisez ceci pour les surfaces de configuration ou d’authentification de canaux pilotés par variables d’environnement que les assistants génériques de démarrage/configuration doivent voir. | +| `providerAuthChoices` | Non | `object[]` | Métadonnées légères de choix d’authentification pour les sélecteurs d’onboarding, la résolution du fournisseur préféré et le raccordement simple des options CLI. | +| `activation` | Non | `object` | Indices d’activation légers pour le chargement déclenché par un fournisseur, une commande, un canal, une route ou une capacité. Métadonnées uniquement ; l’exécution du plugin reste propriétaire du comportement réel. | +| `setup` | Non | `object` | Descripteurs légers de configuration/onboarding que les surfaces de découverte et de configuration peuvent inspecter sans charger l’exécution du plugin. | +| `qaRunners` | Non | `object[]` | Descripteurs légers d’exécuteurs QA utilisés par l’hôte partagé `openclaw qa` avant le chargement de l’exécution du plugin. | +| `contracts` | Non | `object` | Instantané statique des capacités intégrées pour la parole, la transcription en temps réel, la voix en temps réel, la compréhension des médias, la génération d’images, la génération musicale, la génération vidéo, `web-fetch`, la recherche Web et la propriété des outils. | +| `channelConfigs` | Non | `Record` | Métadonnées de configuration de canal appartenant au manifeste, fusionnées dans les surfaces de découverte et de validation avant le chargement de l’exécution. | +| `skills` | Non | `string[]` | Répertoires de Skills à charger, relatifs à la racine du plugin. | +| `name` | Non | `string` | Nom du plugin lisible par l’humain. | +| `description` | Non | `string` | Bref résumé affiché dans les surfaces de plugin. | +| `version` | Non | `string` | Version informative du plugin. | +| `uiHints` | Non | `Record` | Libellés d’interface, placeholders et indications de sensibilité pour les champs de configuration. | -## Référence de `providerAuthChoices` +## Référence `providerAuthChoices` -Chaque entrée de `providerAuthChoices` décrit un choix d’onboarding ou d’authentification. -OpenClaw lit cela avant le chargement de l’environnement d’exécution du fournisseur. +Chaque entrée `providerAuthChoices` décrit un choix d’onboarding ou d’authentification. +OpenClaw lit cela avant le chargement de l’exécution du fournisseur. | Champ | Obligatoire | Type | Signification | | --------------------- | ----------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | `provider` | Oui | `string` | ID du fournisseur auquel ce choix appartient. | -| `method` | Oui | `string` | ID de la méthode d’authentification vers laquelle répartir. | -| `choiceId` | Oui | `string` | ID stable de choix d’authentification utilisé par les flux d’onboarding et CLI. | -| `choiceLabel` | Non | `string` | Libellé destiné à l’utilisateur. S’il est omis, OpenClaw utilise `choiceId` comme repli. | +| `method` | Oui | `string` | ID de la méthode d’authentification vers laquelle dispatcher. | +| `choiceId` | Oui | `string` | ID stable du choix d’authentification utilisé par les flux d’onboarding et CLI. | +| `choiceLabel` | Non | `string` | Libellé destiné à l’utilisateur. S’il est omis, OpenClaw utilise `choiceId` par défaut. | | `choiceHint` | Non | `string` | Court texte d’aide pour le sélecteur. | -| `assistantPriority` | Non | `number` | Les valeurs plus faibles sont triées plus tôt dans les sélecteurs interactifs pilotés par l’assistant. | -| `assistantVisibility` | Non | `"visible"` \| `"manual-only"` | Masque ce choix dans les sélecteurs de l’assistant tout en autorisant la sélection manuelle via la CLI. | +| `assistantPriority` | Non | `number` | Les valeurs plus faibles sont triées en premier dans les sélecteurs interactifs pilotés par l’assistant. | +| `assistantVisibility` | Non | `"visible"` \| `"manual-only"` | Masque ce choix dans les sélecteurs de l’assistant tout en autorisant encore la sélection manuelle en CLI. | | `deprecatedChoiceIds` | Non | `string[]` | IDs hérités de choix qui doivent rediriger les utilisateurs vers ce choix de remplacement. | | `groupId` | Non | `string` | ID de groupe facultatif pour regrouper des choix liés. | | `groupLabel` | Non | `string` | Libellé destiné à l’utilisateur pour ce groupe. | | `groupHint` | Non | `string` | Court texte d’aide pour le groupe. | -| `optionKey` | Non | `string` | Clé d’option interne pour les flux d’authentification simples à un seul flag. | +| `optionKey` | Non | `string` | Clé d’option interne pour les flux d’authentification simples à un seul flag. | | `cliFlag` | Non | `string` | Nom du flag CLI, tel que `--openrouter-api-key`. | -| `cliOption` | Non | `string` | Forme complète de l’option CLI, telle que `--openrouter-api-key `. | +| `cliOption` | Non | `string` | Forme complète de l’option CLI, telle que `--openrouter-api-key `. | | `cliDescription` | Non | `string` | Description utilisée dans l’aide CLI. | -| `onboardingScopes` | Non | `Array<"text-inference" \| "image-generation">` | Sur quelles surfaces d’onboarding ce choix doit apparaître. S’il est omis, la valeur par défaut est `["text-inference"]`. | +| `onboardingScopes` | Non | `Array<"text-inference" \| "image-generation">` | Sur quelles surfaces d’onboarding ce choix doit apparaître. Si omis, la valeur par défaut est `["text-inference"]`. | -## Référence de `commandAliases` +## Référence `commandAliases` -Utilisez `commandAliases` lorsqu’un Plugin possède un nom de commande d’exécution que les utilisateurs peuvent -mettre par erreur dans `plugins.allow` ou essayer d’exécuter comme une commande CLI racine. OpenClaw -utilise ces métadonnées pour les diagnostics sans importer le code d’exécution du Plugin. +Utilisez `commandAliases` lorsqu’un plugin possède un nom de commande d’exécution que les utilisateurs peuvent, par erreur, placer dans `plugins.allow` ou essayer d’exécuter comme une commande CLI racine. OpenClaw utilise ces métadonnées pour les diagnostics sans importer le code d’exécution du plugin. ```json { @@ -211,44 +210,38 @@ utilise ces métadonnées pour les diagnostics sans importer le code d’exécut } ``` -| Champ | Obligatoire | Type | Signification | -| ------------ | ----------- | ----------------- | --------------------------------------------------------------------------------- | -| `name` | Oui | `string` | Nom de commande qui appartient à ce Plugin. | +| Champ | Obligatoire | Type | Signification | +| ------------ | ----------- | ----------------- | -------------------------------------------------------------------------- | +| `name` | Oui | `string` | Nom de commande qui appartient à ce plugin. | | `kind` | Non | `"runtime-slash"` | Marque l’alias comme une commande slash de chat plutôt qu’une commande CLI racine. | -| `cliCommand` | Non | `string` | Commande CLI racine associée à suggérer pour les opérations CLI, si elle existe. | +| `cliCommand` | Non | `string` | Commande CLI racine associée à suggérer pour les opérations CLI, s’il en existe une. | -## Référence de `activation` +## Référence `activation` -Utilisez `activation` lorsque le Plugin peut déclarer à faible coût quels événements du plan de contrôle -doivent l’activer plus tard. +Utilisez `activation` lorsque le plugin peut déclarer à faible coût quels événements du plan de contrôle doivent l’activer plus tard. -## Référence de `qaRunners` +## Référence `qaRunners` -Utilisez `qaRunners` lorsqu’un Plugin contribue à un ou plusieurs exécuteurs de transport sous la racine partagée -`openclaw qa`. Gardez ces métadonnées simples et statiques ; l’environnement d’exécution du Plugin reste responsable de l’enregistrement CLI réel via une surface légère -`runtime-api.ts` qui exporte `qaRunnerCliRegistrations`. +Utilisez `qaRunners` lorsqu’un plugin fournit un ou plusieurs exécuteurs de transport sous la racine partagée `openclaw qa`. Conservez ces métadonnées légères et statiques ; l’exécution du plugin reste propriétaire de l’enregistrement CLI réel via une surface légère `runtime-api.ts` qui exporte `qaRunnerCliRegistrations`. ```json { "qaRunners": [ { "commandName": "matrix", - "description": "Exécuter la voie QA Matrix en direct, adossée à Docker, sur un homeserver jetable" + "description": "Exécuter la voie QA live Matrix, adossée à Docker, contre un homeserver jetable" } ] } ``` -| Champ | Obligatoire | Type | Signification | -| ------------- | ----------- | -------- | ------------------------------------------------------------------- | -| `commandName` | Oui | `string` | Sous-commande montée sous `openclaw qa`, par exemple `matrix`. | +| Champ | Obligatoire | Type | Signification | +| ------------- | ----------- | -------- | -------------------------------------------------------------------- | +| `commandName` | Oui | `string` | Sous-commande montée sous `openclaw qa`, par exemple `matrix`. | | `description` | Non | `string` | Texte d’aide de repli utilisé lorsque l’hôte partagé a besoin d’une commande factice. | -Ce bloc contient uniquement des métadonnées. Il n’enregistre pas de comportement d’exécution et -ne remplace pas `register(...)`, `setupEntry` ni d’autres points d’entrée d’exécution/de Plugin. -Les consommateurs actuels l’utilisent comme un indice de filtrage avant un chargement plus large du Plugin, donc -l’absence de métadonnées d’activation n’a généralement qu’un coût de performance ; elle ne devrait pas -modifier la correction tant que les replis hérités de propriété du manifeste existent encore. +Ce bloc est uniquement constitué de métadonnées. Il n’enregistre pas de comportement d’exécution et ne remplace pas `register(...)`, `setupEntry` ni d’autres points d’entrée d’exécution/plugin. +Les consommateurs actuels l’utilisent comme indice de réduction avant un chargement plus large du plugin ; des métadonnées d’activation manquantes n’ont donc généralement qu’un coût de performance et ne devraient pas modifier le comportement correct tant que les mécanismes hérités de repli de propriété du manifeste existent encore. ```json { @@ -262,28 +255,26 @@ modifier la correction tant que les replis hérités de propriété du manifeste } ``` -| Champ | Obligatoire | Type | Signification | -| ---------------- | ----------- | ---------------------------------------------------- | ----------------------------------------------------------------- | -| `onProviders` | Non | `string[]` | IDs de fournisseurs qui doivent activer ce Plugin lorsqu’ils sont demandés. | -| `onCommands` | Non | `string[]` | IDs de commandes qui doivent activer ce Plugin. | -| `onChannels` | Non | `string[]` | IDs de canaux qui doivent activer ce Plugin. | -| `onRoutes` | Non | `string[]` | Types de routes qui doivent activer ce Plugin. | -| `onCapabilities` | Non | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Indications générales de capacités utilisées par la planification d’activation du plan de contrôle. | +| Champ | Obligatoire | Type | Signification | +| ---------------- | ----------- | ---------------------------------------------------- | ------------------------------------------------------------------- | +| `onProviders` | Non | `string[]` | IDs de fournisseurs qui doivent activer ce plugin lorsqu’ils sont demandés. | +| `onCommands` | Non | `string[]` | IDs de commandes qui doivent activer ce plugin. | +| `onChannels` | Non | `string[]` | IDs de canaux qui doivent activer ce plugin. | +| `onRoutes` | Non | `string[]` | Types de routes qui doivent activer ce plugin. | +| `onCapabilities` | Non | `Array<"provider" \| "channel" \| "tool" \| "hook">` | Indices généraux de capacité utilisés par la planification d’activation du plan de contrôle. | -Consommateurs actifs actuels : +Consommateurs actifs actuels : -- la planification CLI déclenchée par commande utilise comme repli +- la planification CLI déclenchée par une commande retombe sur les valeurs héritées `commandAliases[].cliCommand` ou `commandAliases[].name` -- la planification de configuration/de canal déclenchée par canal utilise comme repli la propriété héritée `channels[]` - lorsqu’il manque des métadonnées explicites d’activation de canal -- la planification de configuration/d’exécution déclenchée par fournisseur utilise comme repli la propriété héritée - `providers[]` et la propriété de niveau supérieur `cliBackends[]` lorsque des métadonnées explicites d’activation - de fournisseur sont absentes +- la planification de configuration/de canal déclenchée par un canal retombe sur la propriété héritée `channels[]` + lorsque les métadonnées explicites d’activation de canal sont absentes +- la planification de configuration/d’exécution déclenchée par un fournisseur retombe sur la propriété héritée + `providers[]` et `cliBackends[]` de niveau supérieur lorsque les métadonnées explicites d’activation de fournisseur sont absentes -## Référence de `setup` +## Référence `setup` -Utilisez `setup` lorsque les surfaces de configuration et d’onboarding ont besoin de métadonnées de Plugin, simples et détenues par le Plugin, -avant le chargement de l’environnement d’exécution. +Utilisez `setup` lorsque les surfaces de configuration et d’onboarding ont besoin de métadonnées légères appartenant au plugin avant le chargement de l’exécution. ```json { @@ -302,41 +293,32 @@ avant le chargement de l’environnement d’exécution. } ``` -Le `cliBackends` de niveau supérieur reste valide et continue de décrire les -backends d’inférence CLI. `setup.cliBackends` est la surface de descripteur spécifique à la configuration pour les -flux de configuration/plan de contrôle qui doivent rester uniquement basés sur des métadonnées. +Le champ `cliBackends` de niveau supérieur reste valide et continue de décrire les backends d’inférence CLI. `setup.cliBackends` est la surface de descripteur spécifique à la configuration pour les flux de configuration/plan de contrôle qui doivent rester purement fondés sur des métadonnées. -Lorsqu’ils sont présents, `setup.providers` et `setup.cliBackends` constituent la -surface privilégiée, d’abord basée sur des descripteurs, pour la découverte de la configuration. Si le descripteur se contente uniquement -de restreindre le Plugin candidat et que la configuration a encore besoin de hooks d’exécution plus riches au moment de la configuration, -définissez `requiresRuntime: true` et conservez `setup-api` comme -chemin d’exécution de repli. +Lorsqu’ils sont présents, `setup.providers` et `setup.cliBackends` constituent la surface de recherche privilégiée, d’abord fondée sur les descripteurs, pour la découverte de la configuration. Si le descripteur ne fait que restreindre le plugin candidat et que la configuration a encore besoin de hooks d’exécution plus riches au moment de la configuration, définissez `requiresRuntime: true` et conservez `setup-api` comme chemin d’exécution de repli. -Comme la recherche de configuration peut exécuter du code `setup-api` détenu par le Plugin, -les valeurs normalisées `setup.providers[].id` et `setup.cliBackends[]` doivent rester uniques parmi tous les -Plugins découverts. Une propriété ambiguë échoue de manière fermée au lieu de choisir un -gagnant selon l’ordre de découverte. +Comme la recherche de configuration peut exécuter du code `setup-api` appartenant au plugin, les valeurs normalisées de `setup.providers[].id` et `setup.cliBackends[]` doivent rester uniques parmi les plugins découverts. En cas de propriété ambiguë, le système échoue de manière fermée au lieu de choisir un gagnant selon l’ordre de découverte. -### Référence de `setup.providers` +### Référence `setup.providers` | Champ | Obligatoire | Type | Signification | | ------------- | ----------- | ---------- | ------------------------------------------------------------------------------------ | | `id` | Oui | `string` | ID du fournisseur exposé pendant la configuration ou l’onboarding. Gardez les IDs normalisés globalement uniques. | -| `authMethods` | Non | `string[]` | IDs de méthodes de configuration/authentification que ce fournisseur prend en charge sans charger l’environnement d’exécution complet. | -| `envVars` | Non | `string[]` | Variables d’environnement que les surfaces génériques de configuration/statut peuvent vérifier avant le chargement de l’environnement d’exécution du Plugin. | +| `authMethods` | Non | `string[]` | IDs de méthodes de configuration/authentification que ce fournisseur prend en charge sans charger l’exécution complète. | +| `envVars` | Non | `string[]` | Variables d’environnement que les surfaces génériques de configuration/statut peuvent vérifier avant le chargement de l’exécution du plugin. | -### Champs de `setup` +### Champs `setup` -| Champ | Obligatoire | Type | Signification | -| ------------------ | ----------- | ---------- | --------------------------------------------------------------------------------------------------- | -| `providers` | Non | `object[]` | Descripteurs de configuration du fournisseur exposés pendant la configuration et l’onboarding. | -| `cliBackends` | Non | `string[]` | IDs de backend au moment de la configuration utilisés pour une recherche de configuration d’abord basée sur des descripteurs. Gardez les IDs normalisés globalement uniques. | -| `configMigrations` | Non | `string[]` | IDs de migration de configuration détenus par la surface de configuration de ce Plugin. | +| Champ | Obligatoire | Type | Signification | +| ------------------ | ----------- | ---------- | ----------------------------------------------------------------------------------------------------- | +| `providers` | Non | `object[]` | Descripteurs de configuration de fournisseur exposés pendant la configuration et l’onboarding. | +| `cliBackends` | Non | `string[]` | IDs de backend au moment de la configuration utilisés pour la recherche de configuration fondée d’abord sur les descripteurs. Gardez les IDs normalisés globalement uniques. | +| `configMigrations` | Non | `string[]` | IDs de migration de configuration appartenant à la surface de configuration de ce plugin. | | `requiresRuntime` | Non | `boolean` | Indique si la configuration a encore besoin de l’exécution de `setup-api` après la recherche par descripteur. | -## Référence de `uiHints` +## Référence `uiHints` -`uiHints` est une correspondance entre les noms de champs de configuration et de petites indications de rendu. +`uiHints` est une map des noms de champs de configuration vers de petites indications de rendu. ```json { @@ -351,7 +333,7 @@ gagnant selon l’ordre de découverte. } ``` -Chaque indication de champ peut inclure : +Chaque indication de champ peut inclure : | Champ | Type | Signification | | ------------- | ---------- | --------------------------------------- | @@ -360,12 +342,11 @@ Chaque indication de champ peut inclure : | `tags` | `string[]` | Tags d’interface facultatifs. | | `advanced` | `boolean` | Marque le champ comme avancé. | | `sensitive` | `boolean` | Marque le champ comme secret ou sensible. | -| `placeholder` | `string` | Texte d’espace réservé pour les champs de formulaire. | +| `placeholder` | `string` | Texte de placeholder pour les champs de formulaire. | -## Référence de `contracts` +## Référence `contracts` -Utilisez `contracts` uniquement pour les métadonnées statiques de propriété de capacités qu’OpenClaw peut -lire sans importer l’environnement d’exécution du Plugin. +Utilisez `contracts` uniquement pour des métadonnées statiques de propriété de capacités qu’OpenClaw peut lire sans importer l’exécution du plugin. ```json { @@ -383,24 +364,23 @@ lire sans importer l’environnement d’exécution du Plugin. } ``` -Chaque liste est facultative : +Chaque liste est facultative : -| Champ | Type | Signification | -| -------------------------------- | ---------- | --------------------------------------------------------------- | -| `speechProviders` | `string[]` | IDs de fournisseurs de parole détenus par ce Plugin. | -| `realtimeTranscriptionProviders` | `string[]` | IDs de fournisseurs de transcription en temps réel détenus par ce Plugin. | -| `realtimeVoiceProviders` | `string[]` | IDs de fournisseurs de voix en temps réel détenus par ce Plugin. | -| `mediaUnderstandingProviders` | `string[]` | IDs de fournisseurs de compréhension des médias détenus par ce Plugin. | -| `imageGenerationProviders` | `string[]` | IDs de fournisseurs de génération d’images détenus par ce Plugin. | -| `videoGenerationProviders` | `string[]` | IDs de fournisseurs de génération de vidéo détenus par ce Plugin. | -| `webFetchProviders` | `string[]` | IDs de fournisseurs de récupération web détenus par ce Plugin. | -| `webSearchProviders` | `string[]` | IDs de fournisseurs de recherche web détenus par ce Plugin. | -| `tools` | `string[]` | Noms d’outils d’agent détenus par ce Plugin pour les vérifications de contrat intégrées. | +| Champ | Type | Signification | +| -------------------------------- | ---------- | -------------------------------------------------------------- | +| `speechProviders` | `string[]` | IDs de fournisseurs de parole appartenant à ce plugin. | +| `realtimeTranscriptionProviders` | `string[]` | IDs de fournisseurs de transcription en temps réel appartenant à ce plugin. | +| `realtimeVoiceProviders` | `string[]` | IDs de fournisseurs de voix en temps réel appartenant à ce plugin. | +| `mediaUnderstandingProviders` | `string[]` | IDs de fournisseurs de compréhension des médias appartenant à ce plugin. | +| `imageGenerationProviders` | `string[]` | IDs de fournisseurs de génération d’images appartenant à ce plugin. | +| `videoGenerationProviders` | `string[]` | IDs de fournisseurs de génération vidéo appartenant à ce plugin. | +| `webFetchProviders` | `string[]` | IDs de fournisseurs `web-fetch` appartenant à ce plugin. | +| `webSearchProviders` | `string[]` | IDs de fournisseurs de recherche Web appartenant à ce plugin. | +| `tools` | `string[]` | Noms d’outils d’agent appartenant à ce plugin pour les vérifications de contrats intégrés. | -## Référence de `channelConfigs` +## Référence `channelConfigs` -Utilisez `channelConfigs` lorsqu’un Plugin de canal a besoin de métadonnées de configuration simples avant -le chargement de l’environnement d’exécution. +Utilisez `channelConfigs` lorsqu’un plugin de canal a besoin de métadonnées de configuration légères avant le chargement de l’exécution. ```json { @@ -427,20 +407,19 @@ le chargement de l’environnement d’exécution. } ``` -Chaque entrée de canal peut inclure : +Chaque entrée de canal peut inclure : | Champ | Type | Signification | | ------------- | ------------------------ | ------------------------------------------------------------------------------------------ | | `schema` | `object` | Schéma JSON pour `channels.`. Obligatoire pour chaque entrée de configuration de canal déclarée. | -| `uiHints` | `Record` | Libellés d’interface, espaces réservés et indications de sensibilité facultatifs pour cette section de configuration du canal. | +| `uiHints` | `Record` | Libellés/placeholders/indications de sensibilité d’interface facultatifs pour cette section de configuration de canal. | | `label` | `string` | Libellé du canal fusionné dans les surfaces de sélection et d’inspection lorsque les métadonnées d’exécution ne sont pas prêtes. | | `description` | `string` | Courte description du canal pour les surfaces d’inspection et de catalogue. | -| `preferOver` | `string[]` | IDs de Plugin hérités ou de priorité inférieure que ce canal doit surpasser dans les surfaces de sélection. | +| `preferOver` | `string[]` | IDs de plugins hérités ou de priorité inférieure que ce canal doit surpasser dans les surfaces de sélection. | -## Référence de `modelSupport` +## Référence `modelSupport` -Utilisez `modelSupport` lorsqu’OpenClaw doit déduire votre Plugin fournisseur à partir -d’IDs abrégés de modèle comme `gpt-5.4` ou `claude-sonnet-4.6` avant le chargement de l’environnement d’exécution du Plugin. +Utilisez `modelSupport` lorsqu’OpenClaw doit déduire votre plugin fournisseur à partir d’IDs de modèles abrégés comme `gpt-5.4` ou `claude-sonnet-4.6` avant le chargement de l’exécution du plugin. ```json { @@ -451,75 +430,60 @@ d’IDs abrégés de modèle comme `gpt-5.4` ou `claude-sonnet-4.6` avant le cha } ``` -OpenClaw applique cette priorité : +OpenClaw applique cet ordre de priorité : - les références explicites `provider/model` utilisent les métadonnées de manifeste `providers` du propriétaire - `modelPatterns` l’emporte sur `modelPrefixes` -- si un Plugin non intégré et un Plugin intégré correspondent tous deux, le Plugin non intégré - l’emporte -- les ambiguïtés restantes sont ignorées jusqu’à ce que l’utilisateur ou la configuration spécifie un fournisseur +- si un plugin non intégré et un plugin intégré correspondent tous deux, le plugin non intégré l’emporte +- toute ambiguïté restante est ignorée jusqu’à ce que l’utilisateur ou la configuration spécifie un fournisseur -Champs : +Champs : | Champ | Type | Signification | | --------------- | ---------- | -------------------------------------------------------------------------------- | -| `modelPrefixes` | `string[]` | Préfixes comparés avec `startsWith` aux IDs abrégés de modèle. | -| `modelPatterns` | `string[]` | Sources regex comparées aux IDs abrégés de modèle après suppression du suffixe de profil. | +| `modelPrefixes` | `string[]` | Préfixes comparés avec `startsWith` aux IDs de modèles abrégés. | +| `modelPatterns` | `string[]` | Sources regex comparées aux IDs de modèles abrégés après suppression du suffixe de profil. | -Les clés de capacités héritées au niveau supérieur sont obsolètes. Utilisez `openclaw doctor --fix` pour -déplacer `speechProviders`, `realtimeTranscriptionProviders`, -`realtimeVoiceProviders`, `mediaUnderstandingProviders`, -`imageGenerationProviders`, `videoGenerationProviders`, -`webFetchProviders` et `webSearchProviders` sous `contracts` ; le chargement normal du -manifeste ne traite plus ces champs de niveau supérieur comme une -propriété de capacité. +Les clés de capacité héritées de niveau supérieur sont obsolètes. Utilisez `openclaw doctor --fix` pour déplacer `speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders` et `webSearchProviders` sous `contracts` ; le chargement normal du manifeste ne traite plus ces champs de niveau supérieur comme une propriété de capacité. ## Manifeste versus package.json -Les deux fichiers remplissent des rôles différents : +Les deux fichiers ont des rôles différents : -| Fichier | Utilisation | -| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| `openclaw.plugin.json` | Découverte, validation de la configuration, métadonnées de choix d’authentification et indications d’interface qui doivent exister avant l’exécution du code du Plugin | +| Fichier | Utilisation | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `openclaw.plugin.json` | Découverte, validation de la configuration, métadonnées de choix d’authentification et indications d’interface qui doivent exister avant l’exécution du code du plugin | | `package.json` | Métadonnées npm, installation des dépendances et bloc `openclaw` utilisé pour les points d’entrée, le contrôle d’installation, la configuration ou les métadonnées de catalogue | -Si vous ne savez pas où placer une métadonnée, utilisez cette règle : +Si vous ne savez pas où une métadonnée doit se trouver, appliquez cette règle : -- si OpenClaw doit la connaître avant de charger le code du Plugin, placez-la dans `openclaw.plugin.json` -- si elle concerne le packaging, les fichiers de point d’entrée ou le comportement d’installation npm, placez-la dans `package.json` +- si OpenClaw doit la connaître avant de charger le code du plugin, placez-la dans `openclaw.plugin.json` +- si elle concerne le packaging, les fichiers d’entrée ou le comportement d’installation npm, placez-la dans `package.json` -### Champs de package.json qui affectent la découverte +### Champs `package.json` qui affectent la découverte -Certaines métadonnées de Plugin avant exécution vivent intentionnellement dans `package.json` sous le -bloc `openclaw` au lieu de `openclaw.plugin.json`. +Certaines métadonnées de plugin avant exécution vivent intentionnellement dans `package.json` sous le bloc `openclaw` plutôt que dans `openclaw.plugin.json`. -Exemples importants : +Exemples importants : -| Champ | Signification | -| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -| `openclaw.extensions` | Déclare les points d’entrée de Plugin natifs. | -| `openclaw.setupEntry` | Point d’entrée léger, réservé à la configuration, utilisé pendant l’onboarding et le démarrage différé des canaux. | -| `openclaw.channel` | Métadonnées simples de catalogue de canal, comme les libellés, chemins de documentation, alias et texte de sélection. | -| `openclaw.channel.configuredState` | Métadonnées légères du vérificateur d’état configuré pouvant répondre à « une configuration uniquement par variables d’environnement existe-t-elle déjà ? » sans charger l’environnement d’exécution complet du canal. | -| `openclaw.channel.persistedAuthState` | Métadonnées légères du vérificateur d’authentification persistée pouvant répondre à « quelque chose est-il déjà connecté ? » sans charger l’environnement d’exécution complet du canal. | -| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Indications d’installation/mise à jour pour les Plugins intégrés et publiés en externe. | -| `openclaw.install.defaultChoice` | Chemin d’installation préféré lorsque plusieurs sources d’installation sont disponibles. | -| `openclaw.install.minHostVersion` | Version minimale prise en charge de l’hôte OpenClaw, en utilisant un plancher semver comme `>=2026.3.22`. | -| `openclaw.install.allowInvalidConfigRecovery` | Autorise un chemin de récupération étroit pour la réinstallation d’un Plugin intégré lorsque la configuration est invalide. | -| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Permet aux surfaces de canal réservées à la configuration de se charger avant le Plugin de canal complet au démarrage. | +| Champ | Signification | +| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `openclaw.extensions` | Déclare les points d’entrée des plugins natifs. | +| `openclaw.setupEntry` | Point d’entrée léger réservé à la configuration, utilisé pendant l’onboarding et le démarrage différé du canal. | +| `openclaw.channel` | Métadonnées légères du catalogue de canaux comme les libellés, chemins de documentation, alias et texte de sélection. | +| `openclaw.channel.configuredState` | Métadonnées légères du vérificateur d’état configuré pouvant répondre à « une configuration uniquement via l’environnement existe-t-elle déjà ? » sans charger l’exécution complète du canal. | +| `openclaw.channel.persistedAuthState` | Métadonnées légères du vérificateur d’authentification persistée pouvant répondre à « y a-t-il déjà une session ouverte ? » sans charger l’exécution complète du canal. | +| `openclaw.install.npmSpec` / `openclaw.install.localPath` | Indications d’installation/mise à jour pour les plugins intégrés et les plugins publiés en externe. | +| `openclaw.install.defaultChoice` | Chemin d’installation préféré lorsque plusieurs sources d’installation sont disponibles. | +| `openclaw.install.minHostVersion` | Version minimale prise en charge de l’hôte OpenClaw, en utilisant un plancher semver comme `>=2026.3.22`. | +| `openclaw.install.allowInvalidConfigRecovery` | Autorise un chemin de récupération étroit de réinstallation de plugin intégré lorsque la configuration est invalide. | +| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Permet aux surfaces de canal réservées à la configuration de se charger avant le plugin de canal complet au démarrage. | -`openclaw.install.minHostVersion` est appliqué pendant l’installation et le chargement du registre de manifestes. Les valeurs invalides sont rejetées ; les valeurs valides mais plus récentes ignorent le -Plugin sur les hôtes plus anciens. +`openclaw.install.minHostVersion` est appliqué pendant l’installation et le chargement du registre de manifestes. Les valeurs invalides sont rejetées ; les valeurs valides mais plus récentes ignorent le plugin sur les hôtes plus anciens. -`openclaw.install.allowInvalidConfigRecovery` est intentionnellement étroit. Il -ne rend pas arbitrairement installables des configurations cassées. Aujourd’hui, il permet seulement aux flux d’installation -de récupérer à partir d’échecs spécifiques de mise à niveau d’un Plugin intégré devenu obsolète, comme un -chemin de Plugin intégré manquant ou une entrée `channels.` obsolète pour ce même -Plugin intégré. Les erreurs de configuration non liées bloquent toujours l’installation et envoient les opérateurs -vers `openclaw doctor --fix`. +`openclaw.install.allowInvalidConfigRecovery` est volontairement limité. Il ne rend pas installables des configurations arbitrairement cassées. Aujourd’hui, il permet seulement aux flux d’installation de récupérer de certaines défaillances obsolètes de mise à niveau de plugin intégré, comme un chemin de plugin intégré manquant ou une entrée `channels.` obsolète pour ce même plugin intégré. Les erreurs de configuration non liées continuent de bloquer l’installation et redirigent les opérateurs vers `openclaw doctor --fix`. -`openclaw.channel.persistedAuthState` est une métadonnée de package pour un petit -module de vérification : +`openclaw.channel.persistedAuthState` est une métadonnée de package pour un minuscule module de vérification : ```json { @@ -535,13 +499,9 @@ module de vérification : } ``` -Utilisez-le lorsque les flux de configuration, doctor ou d’état configuré ont besoin d’une -vérification simple oui/non de l’authentification avant le chargement du Plugin de canal complet. L’export ciblé doit être une petite -fonction qui lit uniquement l’état persisté ; ne la faites pas transiter par le barrel complet de l’environnement d’exécution du -canal. +Utilisez-le lorsque les flux de configuration, de Doctor ou d’état configuré ont besoin d’une sonde d’authentification oui/non légère avant le chargement du plugin de canal complet. L’export cible doit être une petite fonction qui lit uniquement l’état persistant ; ne le faites pas passer par le barrel d’exécution du canal complet. -`openclaw.channel.configuredState` suit la même forme pour des vérifications simples d’état -configuré uniquement basées sur l’environnement : +`openclaw.channel.configuredState` suit la même forme pour des vérifications légères d’état configuré uniquement via l’environnement : ```json { @@ -557,65 +517,47 @@ configuré uniquement basées sur l’environnement : } ``` -Utilisez-le lorsqu’un canal peut répondre à l’état configuré à partir de variables d’environnement ou d’autres petites -entrées hors environnement d’exécution. Si la vérification nécessite une résolution complète de la configuration ou le véritable -environnement d’exécution du canal, conservez cette logique dans le hook `config.hasConfiguredState` -du Plugin à la place. +Utilisez-le lorsqu’un canal peut répondre à l’état configuré à partir de l’environnement ou d’autres entrées non liées à l’exécution. Si la vérification nécessite la résolution complète de la configuration ou la véritable exécution du canal, conservez plutôt cette logique dans le hook `config.hasConfiguredState` du plugin. ## Exigences du schéma JSON -- **Chaque Plugin doit fournir un schéma JSON**, même s’il n’accepte aucune configuration. +- **Chaque plugin doit fournir un schéma JSON**, même s’il n’accepte aucune configuration. - Un schéma vide est acceptable (par exemple, `{ "type": "object", "additionalProperties": false }`). - Les schémas sont validés au moment de la lecture/écriture de la configuration, pas à l’exécution. ## Comportement de validation -- Les clés inconnues dans `channels.*` sont des **erreurs**, sauf si l’ID de canal est déclaré par - un manifeste de Plugin. -- `plugins.entries.`, `plugins.allow`, `plugins.deny` et `plugins.slots.*` - doivent référencer des IDs de Plugin **découvrables**. Les IDs inconnus sont des **erreurs**. -- Si un Plugin est installé mais possède un manifeste ou un schéma cassé ou manquant, - la validation échoue et Doctor signale l’erreur du Plugin. -- Si une configuration de Plugin existe mais que le Plugin est **désactivé**, la configuration est conservée et - un **avertissement** est remonté dans Doctor + les journaux. +- Les clés `channels.*` inconnues sont des **erreurs**, sauf si l’ID du canal est déclaré par un manifeste de plugin. +- `plugins.entries.`, `plugins.allow`, `plugins.deny` et `plugins.slots.*` doivent référencer des IDs de plugin **découvrables**. Les IDs inconnus sont des **erreurs**. +- Si un plugin est installé mais possède un manifeste ou un schéma cassé ou manquant, la validation échoue et Doctor signale l’erreur du plugin. +- Si une configuration de plugin existe mais que le plugin est **désactivé**, la configuration est conservée et un **avertissement** apparaît dans Doctor + les logs. -Consultez [Référence de configuration](/fr/gateway/configuration) pour le schéma complet de `plugins.*`. +Consultez la [Référence de configuration](/fr/gateway/configuration) pour le schéma complet `plugins.*`. ## Remarques - Le manifeste est **obligatoire pour les Plugins OpenClaw natifs**, y compris les chargements depuis le système de fichiers local. -- L’environnement d’exécution charge toujours le module du Plugin séparément ; le manifeste sert uniquement à la - découverte + validation. -- Les manifestes natifs sont analysés avec JSON5, donc les commentaires, les virgules finales et les - clés non entre guillemets sont acceptés tant que la valeur finale reste bien un objet. -- Seuls les champs de manifeste documentés sont lus par le chargeur de manifeste. Évitez d’ajouter - ici des clés personnalisées au niveau supérieur. -- `providerAuthEnvVars` est le chemin de métadonnées simple pour les sondes d’authentification, la - validation des marqueurs de variables d’environnement et les surfaces similaires d’authentification de fournisseur - qui ne doivent pas démarrer l’environnement d’exécution du Plugin uniquement pour inspecter les noms de variables d’environnement. -- `providerAuthAliases` permet à des variantes de fournisseur de réutiliser les variables d’environnement d’authentification, - les profils d’authentification, l’authentification adossée à la configuration et le choix d’onboarding par clé API - d’un autre fournisseur sans coder en dur cette relation dans le cœur. -- `channelEnvVars` est le chemin de métadonnées simple pour le repli basé sur les variables d’environnement du shell, les invites de configuration - et les surfaces de canal similaires qui ne doivent pas démarrer l’environnement d’exécution du Plugin - uniquement pour inspecter les noms de variables d’environnement. -- `providerAuthChoices` est le chemin de métadonnées simple pour les sélecteurs de choix d’authentification, - la résolution de `--auth-choice`, la correspondance avec le fournisseur préféré et l’enregistrement simple des flags CLI - d’onboarding avant le chargement de l’environnement d’exécution du fournisseur. Pour les métadonnées d’assistant d’exécution - qui nécessitent du code fournisseur, consultez - [Hooks d’exécution de fournisseur](/fr/plugins/architecture#provider-runtime-hooks). -- Les types exclusifs de Plugin sont sélectionnés via `plugins.slots.*`. +- L’exécution charge toujours le module du plugin séparément ; le manifeste sert uniquement à la découverte + à la validation. +- Les manifestes natifs sont analysés avec JSON5, donc les commentaires, les virgules finales et les clés non entre guillemets sont acceptés tant que la valeur finale reste un objet. +- Seuls les champs de manifeste documentés sont lus par le chargeur de manifeste. Évitez d’ajouter ici des clés personnalisées de niveau supérieur. +- `providerAuthEnvVars` est le chemin de métadonnées léger pour les sondes d’authentification, la validation des marqueurs d’environnement et les surfaces similaires d’authentification fournisseur qui ne doivent pas démarrer l’exécution du plugin simplement pour inspecter des noms de variables d’environnement. +- `providerAuthAliases` permet à des variantes de fournisseur de réutiliser les variables d’environnement d’authentification, les profils d’authentification, l’authentification adossée à la configuration et le choix d’onboarding de clé API d’un autre fournisseur sans coder cette relation en dur dans le cœur. +- `providerEndpoints` permet aux plugins fournisseurs d’être propriétaires de métadonnées simples de correspondance d’hôte/baseUrl de point de terminaison. Utilisez-le uniquement pour les classes de points de terminaison déjà prises en charge par le cœur ; le plugin reste propriétaire du comportement d’exécution. +- `syntheticAuthRefs` est le chemin de métadonnées léger pour les hooks d’authentification synthétique appartenant au fournisseur qui doivent être visibles pour la découverte à froid des modèles avant que le registre d’exécution n’existe. N’indiquez que les références dont le fournisseur d’exécution ou le backend CLI implémente réellement `resolveSyntheticAuth`. +- `nonSecretAuthMarkers` est le chemin de métadonnées léger pour les clés API d’espace réservé appartenant aux plugins intégrés, comme les marqueurs d’identifiants locaux, OAuth ou ambiants. Le cœur les traite comme non secrètes pour l’affichage de l’authentification et les audits de secrets sans coder en dur le fournisseur propriétaire. +- `channelEnvVars` est le chemin de métadonnées léger pour le repli via variables d’environnement du shell, les invites de configuration et les surfaces de canal similaires qui ne doivent pas démarrer l’exécution du plugin simplement pour inspecter des noms de variables d’environnement. +- `providerAuthChoices` est le chemin de métadonnées léger pour les sélecteurs de choix d’authentification, la résolution de `--auth-choice`, le mappage du fournisseur préféré et l’enregistrement simple de flags CLI d’onboarding avant le chargement de l’exécution du fournisseur. Pour les métadonnées d’assistant d’exécution qui nécessitent du code fournisseur, consultez + [Hooks d’exécution du fournisseur](/fr/plugins/architecture#provider-runtime-hooks). +- Les types de plugin exclusifs sont sélectionnés via `plugins.slots.*`. - `kind: "memory"` est sélectionné par `plugins.slots.memory`. - `kind: "context-engine"` est sélectionné par `plugins.slots.contextEngine` - (par défaut : `legacy` intégré). -- `channels`, `providers`, `cliBackends` et `skills` peuvent être omis lorsqu’un - Plugin n’en a pas besoin. -- Si votre Plugin dépend de modules natifs, documentez les étapes de build ainsi que toute - exigence de liste d’autorisation du gestionnaire de paquets (par exemple, pnpm `allow-build-scripts` + (par défaut : `legacy` intégré). +- `channels`, `providers`, `cliBackends` et `skills` peuvent être omis lorsqu’un plugin n’en a pas besoin. +- Si votre plugin dépend de modules natifs, documentez les étapes de build et toute exigence de liste d’autorisation du gestionnaire de paquets (par exemple, pnpm `allow-build-scripts` - `pnpm rebuild `). ## Lié -- [Créer des Plugins](/fr/plugins/building-plugins) — bien démarrer avec les Plugins +- [Créer des Plugins](/fr/plugins/building-plugins) — bien démarrer avec les plugins - [Architecture des Plugins](/fr/plugins/architecture) — architecture interne - [Vue d’ensemble du SDK](/fr/plugins/sdk-overview) — référence du SDK de Plugin diff --git a/docs/fr/plugins/sdk-migration.md b/docs/fr/plugins/sdk-migration.md index f00e7874e..96cfd715e 100644 --- a/docs/fr/plugins/sdk-migration.md +++ b/docs/fr/plugins/sdk-migration.md @@ -5,117 +5,113 @@ read_when: - Vous mettez à jour un Plugin vers l’architecture de Plugin moderne - Vous maintenez un Plugin OpenClaw externe sidebarTitle: Migrate to SDK -summary: Migrez de la couche de compatibilité descendante héritée vers le Plugin SDK moderne +summary: Migrez de la couche de rétrocompatibilité héritée vers le Plugin SDK moderne title: Migration du Plugin SDK x-i18n: - generated_at: "2026-04-17T06:57:32Z" + generated_at: "2026-04-19T01:11:15Z" model: gpt-5.4 provider: openai - source_hash: f0283f949eec358a12a0709db846cde2a1509f28e5c60db6e563cb8a540b979d + source_hash: e0df202ed35b3e72bfec1d23201d0e83294fe09cec2caf6e276835098491a899 source_path: plugins/sdk-migration.md workflow: 15 --- # Migration du Plugin SDK -OpenClaw est passé d’une large couche de compatibilité descendante à une architecture de Plugin moderne avec des imports ciblés et documentés. Si votre Plugin a été conçu avant la nouvelle architecture, ce guide vous aide à le migrer. +OpenClaw est passé d’une large couche de rétrocompatibilité à une architecture de Plugin moderne avec des imports ciblés et documentés. Si votre Plugin a été créé avant la nouvelle architecture, ce guide vous aide à le migrer. ## Ce qui change -L’ancien système de Plugin fournissait deux surfaces très ouvertes qui permettaient aux Plugins d’importer tout ce dont ils avaient besoin depuis un seul point d’entrée : +L’ancien système de Plugin fournissait deux surfaces très ouvertes qui permettaient aux Plugins d’importer tout ce dont ils avaient besoin depuis un point d’entrée unique : -- **`openclaw/plugin-sdk/compat`** — un import unique qui réexportait des dizaines de helpers. Il a été introduit pour permettre aux anciens Plugins basés sur des hooks de continuer à fonctionner pendant la construction de la nouvelle architecture de Plugin. +- **`openclaw/plugin-sdk/compat`** — un import unique qui réexportait des dizaines de helpers. Il a été introduit pour que les anciens Plugins basés sur des hooks continuent de fonctionner pendant la construction de la nouvelle architecture de Plugin. - **`openclaw/extension-api`** — un pont qui donnait aux Plugins un accès direct à des helpers côté hôte, comme l’exécuteur d’agent embarqué. -Ces deux surfaces sont désormais **dépréciées**. Elles fonctionnent toujours à l’exécution, mais les nouveaux Plugins ne doivent pas les utiliser, et les Plugins existants doivent migrer avant que la prochaine version majeure ne les supprime. +Ces deux surfaces sont maintenant **dépréciées**. Elles fonctionnent encore à l’exécution, mais les nouveaux Plugins ne doivent pas les utiliser, et les Plugins existants doivent migrer avant que la prochaine version majeure ne les supprime. - La couche de compatibilité descendante sera supprimée dans une future version majeure. - Les Plugins qui importent encore depuis ces surfaces cesseront de fonctionner à ce moment-là. + La couche de rétrocompatibilité sera supprimée dans une future version majeure. + Les Plugins qui importent encore depuis ces surfaces cesseront de fonctionner lorsque cela arrivera. ## Pourquoi cela a changé -L’ancienne approche causait des problèmes : +L’ancienne approche posait des problèmes : -- **Démarrage lent** — l’import d’un helper chargeait des dizaines de modules sans lien +- **Démarrage lent** — importer un helper chargeait des dizaines de modules non liés - **Dépendances circulaires** — de larges réexportations facilitaient la création de cycles d’import -- **Surface d’API peu claire** — il n’y avait aucun moyen de savoir quelles exportations étaient stables ou internes +- **Surface d’API peu claire** — aucun moyen de savoir quelles exportations étaient stables ou internes Le Plugin SDK moderne corrige cela : chaque chemin d’import (`openclaw/plugin-sdk/\`) est un petit module autonome avec un objectif clair et un contrat documenté. -Les couches de commodité héritées pour les providers des canaux groupés ont également disparu. Les imports +Les points d’entrée pratiques hérités des fournisseurs pour les canaux intégrés ont également disparu. Des imports tels que `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, -les couches de helpers associées à une marque de canal, et +les points d’entrée de helpers associés à une marque de canal, et `openclaw/plugin-sdk/telegram-core` étaient des raccourcis privés du mono-repo, et non -des contrats de Plugin stables. Utilisez à la place des sous-chemins génériques étroits du SDK. Dans l’espace de travail -des Plugins groupés, conservez les helpers appartenant au provider dans le -`api.ts` ou le `runtime-api.ts` propre à ce Plugin. +des contrats de Plugin stables. Utilisez à la place des sous-chemins étroits et génériques du SDK. À l’intérieur de l’espace de travail des Plugins intégrés, conservez les helpers propres au fournisseur dans le `api.ts` ou le `runtime-api.ts` de ce Plugin. -Exemples actuels de providers groupés : +Exemples actuels de fournisseurs intégrés : -- Anthropic conserve les helpers de flux spécifiques à Claude dans sa propre couche `api.ts` / +- Anthropic conserve les helpers de flux spécifiques à Claude dans son propre point d’entrée `api.ts` / `contract-api.ts` -- OpenAI conserve les builders de provider, les helpers de modèle par défaut et les builders de provider - temps réel dans son propre `api.ts` -- OpenRouter conserve le builder de provider et les helpers d’onboarding/configuration dans son propre +- OpenAI conserve les builders de fournisseur, les helpers de modèle par défaut et les builders de fournisseur en temps réel + dans son propre `api.ts` +- OpenRouter conserve le builder de fournisseur et les helpers d’onboarding/configuration dans son propre `api.ts` ## Comment migrer - - Les Plugins de canal capables de gérer les approbations exposent désormais le comportement d’approbation natif via + + Les Plugins de canal capables de gérer des approbations exposent désormais le comportement natif d’approbation via `approvalCapability.nativeRuntime` ainsi que le registre partagé de contexte d’exécution. Principaux changements : - Remplacez `approvalCapability.handler.loadRuntime(...)` par `approvalCapability.nativeRuntime` - - Déplacez l’authentification/la distribution spécifiques aux approbations hors de l’ancien câblage `plugin.auth` / + - Déplacez l’authentification/la livraison spécifiques aux approbations hors de l’ancien câblage `plugin.auth` / `plugin.approvals` vers `approvalCapability` - - `ChannelPlugin.approvals` a été supprimé du contrat public du Plugin de canal ; + - `ChannelPlugin.approvals` a été supprimé du contrat public des Plugins de canal ; déplacez les champs delivery/native/render vers `approvalCapability` - - `plugin.auth` reste utilisé uniquement pour les flux de connexion/déconnexion des canaux ; les hooks - d’authentification des approbations qui s’y trouvent ne sont plus lus par le core - - Enregistrez les objets d’exécution appartenant au canal, comme les clients, jetons ou applications - Bolt, via `openclaw/plugin-sdk/channel-runtime-context` - - N’envoyez pas d’avis de réacheminement appartenant au Plugin depuis les gestionnaires d’approbation natifs ; - le core gère désormais les avis « acheminé ailleurs » à partir des résultats réels de distribution - - Lors du passage de `channelRuntime` à `createChannelManager(...)`, fournissez une vraie - surface `createPluginRuntime().channel`. Les stubs partiels sont rejetés. + - `plugin.auth` reste utilisé uniquement pour les flux de connexion/déconnexion du canal ; les hooks + d’authentification d’approbation qui s’y trouvent ne sont plus lus par le cœur + - Enregistrez les objets d’exécution possédés par le canal, comme les clients, tokens ou applications Bolt, + via `openclaw/plugin-sdk/channel-runtime-context` + - N’envoyez pas d’avis de redirection possédés par le Plugin depuis les handlers natifs d’approbation ; + le cœur gère désormais les avis redirigés ailleurs à partir des résultats réels de livraison + - Lors du passage de `channelRuntime` à `createChannelManager(...)`, fournissez une + véritable surface `createPluginRuntime().channel`. Les stubs partiels sont refusés. - Voir `/plugins/sdk-channel-plugins` pour la disposition actuelle de la - capacité d’approbation. + Consultez `/plugins/sdk-channel-plugins` pour la structure actuelle de la capacité d’approbation. Si votre Plugin utilise `openclaw/plugin-sdk/windows-spawn`, les wrappers Windows - `.cmd`/`.bat` non résolus échouent désormais de manière stricte, sauf si vous transmettez explicitement - `allowShellFallback: true`. + `.cmd`/`.bat` non résolus échouent désormais en mode fermé, sauf si vous passez explicitement `allowShellFallback: true`. ```typescript - // Before + // Avant const program = applyWindowsSpawnProgramPolicy({ candidate }); - // After + // Après const program = applyWindowsSpawnProgramPolicy({ candidate, - // Only set this for trusted compatibility callers that intentionally - // accept shell-mediated fallback. + // Définissez ceci uniquement pour les appelants de compatibilité de confiance qui + // acceptent intentionnellement un repli médié par le shell. allowShellFallback: true, }); ``` - Si votre appelant ne dépend pas intentionnellement du repli via shell, ne définissez pas + Si votre appelant ne dépend pas intentionnellement d’un repli shell, ne définissez pas `allowShellFallback` et gérez plutôt l’erreur levée. - + Recherchez dans votre Plugin les imports provenant de l’une ou l’autre surface dépréciée : ```bash @@ -126,31 +122,31 @@ Exemples actuels de providers groupés : - Chaque export de l’ancienne surface correspond à un chemin d’import moderne spécifique : + Chaque exportation de l’ancienne surface correspond à un chemin d’import moderne spécifique : ```typescript - // Before (deprecated backwards-compatibility layer) + // Avant (couche de rétrocompatibilité dépréciée) import { createChannelReplyPipeline, createPluginRuntimeStore, resolveControlCommandGate, } from "openclaw/plugin-sdk/compat"; - // After (modern focused imports) + // Après (imports ciblés modernes) import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline"; import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store"; import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth"; ``` - Pour les helpers côté hôte, utilisez le runtime de Plugin injecté au lieu d’importer + Pour les helpers côté hôte, utilisez l’exécution de Plugin injectée au lieu d’importer directement : ```typescript - // Before (deprecated extension-api bridge) + // Avant (pont extension-api déprécié) import { runEmbeddedPiAgent } from "openclaw/extension-api"; const result = await runEmbeddedPiAgent({ sessionId, prompt }); - // After (injected runtime) + // Après (runtime injecté) const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt }); ``` @@ -164,7 +160,7 @@ Exemples actuels de providers groupés : | `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` | | `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` | | `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` | - | helpers du stockage de session | `api.runtime.agent.session.*` | + | helpers du magasin de sessions | `api.runtime.agent.session.*` | @@ -176,200 +172,201 @@ Exemples actuels de providers groupés : -## Référence des chemins d’import +## Référence des chemins d’importation - - | Chemin d’import | Objectif | Exportations clés | + + | Chemin d’importation | Objectif | Exportations clés | | --- | --- | --- | - | `plugin-sdk/plugin-entry` | Helper d’entrée de Plugin canonique | `definePluginEntry` | - | `plugin-sdk/core` | Réexportation parapluie héritée pour les définitions/builders d’entrée de canal | `defineChannelPluginEntry`, `createChatChannelPlugin` | + | `plugin-sdk/plugin-entry` | Helper canonique de point d’entrée de Plugin | `definePluginEntry` | + | `plugin-sdk/core` | Réexportation omnibus héritée pour les définitions/builders de points d’entrée de canal | `defineChannelPluginEntry`, `createChatChannelPlugin` | | `plugin-sdk/config-schema` | Exportation du schéma de configuration racine | `OpenClawSchema` | - | `plugin-sdk/provider-entry` | Helper d’entrée à provider unique | `defineSingleProviderPluginEntry` | - | `plugin-sdk/channel-core` | Définitions et builders d’entrée de canal ciblés | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | - | `plugin-sdk/setup` | Helpers partagés de l’assistant de configuration | Prompts de liste d’autorisation, builders d’état de configuration | - | `plugin-sdk/setup-runtime` | Helpers d’exécution au moment de la configuration | Adaptateurs de patch de configuration sûrs à l’import, helpers de notes de recherche, `promptResolvedAllowFrom`, `splitSetupEntries`, proxys de configuration déléguée | + | `plugin-sdk/provider-entry` | Helper de point d’entrée à fournisseur unique | `defineSingleProviderPluginEntry` | + | `plugin-sdk/channel-core` | Définitions et builders ciblés de points d’entrée de canal | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | + | `plugin-sdk/setup` | Helpers partagés d’assistant de configuration | Prompts de liste d’autorisation, builders d’état de configuration | + | `plugin-sdk/setup-runtime` | Helpers de runtime au moment de la configuration | Adaptateurs de patch de configuration sûrs à importer, helpers de notes de recherche, `promptResolvedAllowFrom`, `splitSetupEntries`, proxys de configuration déléguée | | `plugin-sdk/setup-adapter-runtime` | Helpers d’adaptateur de configuration | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | Helpers d’outillage de configuration | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Helpers multi-comptes | Helpers de liste/configuration/action gate de compte | - | `plugin-sdk/account-id` | Helpers d’identifiant de compte | `DEFAULT_ACCOUNT_ID`, normalisation de l’identifiant de compte | - | `plugin-sdk/account-resolution` | Helpers de recherche de compte | Helpers de recherche de compte + repli par défaut | - | `plugin-sdk/account-helpers` | Helpers de compte ciblés | Helpers de liste de comptes/action de compte | - | `plugin-sdk/channel-setup` | Adaptateurs d’assistant de configuration | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | + | `plugin-sdk/account-core` | Helpers multi-comptes | Helpers de liste de comptes/configuration/contrôle d’actions | + | `plugin-sdk/account-id` | Helpers d’identifiant de compte | `DEFAULT_ACCOUNT_ID`, normalisation d’identifiant de compte | + | `plugin-sdk/account-resolution` | Helpers de résolution de compte | Helpers de recherche de compte + repli par défaut | + | `plugin-sdk/account-helpers` | Helpers de compte ciblés | Helpers de liste de comptes/actions de compte | + | `plugin-sdk/channel-setup` | Adaptateurs d’assistant de configuration | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, ainsi que `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | | `plugin-sdk/channel-pairing` | Primitives d’appairage DM | `createChannelPairingController` | - | `plugin-sdk/channel-reply-pipeline` | Câblage du préfixe de réponse + saisie | `createChannelReplyPipeline` | + | `plugin-sdk/channel-reply-pipeline` | Préfixe de réponse + câblage de saisie | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | Fabriques d’adaptateurs de configuration | `createHybridChannelConfigAdapter` | | `plugin-sdk/channel-config-schema` | Builders de schéma de configuration | Types de schéma de configuration de canal | - | `plugin-sdk/telegram-command-config` | Helpers de configuration des commandes Telegram | Normalisation des noms de commandes, réduction des descriptions, validation des doublons/conflits | + | `plugin-sdk/telegram-command-config` | Helpers de configuration des commandes Telegram | Normalisation de nom de commande, rognage de description, validation des doublons/conflits | | `plugin-sdk/channel-policy` | Résolution de politique groupe/DM | `resolveChannelGroupRequireMention` | | `plugin-sdk/channel-lifecycle` | Suivi de l’état du compte | `createAccountStatusSink` | | `plugin-sdk/inbound-envelope` | Helpers d’enveloppe entrante | Helpers partagés de route + construction d’enveloppe | - | `plugin-sdk/inbound-reply-dispatch` | Helpers de réponse entrante | Helpers partagés d’enregistrement et de répartition | + | `plugin-sdk/inbound-reply-dispatch` | Helpers de réponse entrante | Helpers partagés d’enregistrement et de dispatch | | `plugin-sdk/messaging-targets` | Analyse des cibles de messagerie | Helpers d’analyse/correspondance de cibles | - | `plugin-sdk/outbound-media` | Helpers de médias sortants | Chargement partagé des médias sortants | - | `plugin-sdk/outbound-runtime` | Helpers d’exécution sortante | Helpers de délégation d’identité/d’envoi sortants | - | `plugin-sdk/thread-bindings-runtime` | Helpers de liaison de fil | Helpers de cycle de vie et d’adaptateur de liaison de fil | + | `plugin-sdk/outbound-media` | Helpers de média sortant | Chargement partagé des médias sortants | + | `plugin-sdk/outbound-runtime` | Helpers de runtime sortant | Helpers de délégation d’identité/d’envoi sortants | + | `plugin-sdk/thread-bindings-runtime` | Helpers de liaison de thread | Helpers de cycle de vie et d’adaptateur de liaison de thread | | `plugin-sdk/agent-media-payload` | Helpers hérités de payload média | Builder de payload média d’agent pour les dispositions de champs héritées | - | `plugin-sdk/channel-runtime` | Shim de compatibilité déprécié | Utilitaires hérités d’exécution de canal uniquement | + | `plugin-sdk/channel-runtime` | Shim de compatibilité déprécié | Utilitaires hérités de runtime de canal uniquement | | `plugin-sdk/channel-send-result` | Types de résultat d’envoi | Types de résultat de réponse | | `plugin-sdk/runtime-store` | Stockage persistant de Plugin | `createPluginRuntimeStore` | - | `plugin-sdk/runtime` | Helpers d’exécution étendus | Helpers d’exécution/journalisation/sauvegarde/installation de Plugin | - | `plugin-sdk/runtime-env` | Helpers ciblés d’environnement d’exécution | Logger/runtime env, helpers de délai d’expiration, de retry et de backoff | - | `plugin-sdk/plugin-runtime` | Helpers partagés d’exécution de Plugin | Helpers de commandes/hooks/http/interactifs de Plugin | + | `plugin-sdk/runtime` | Helpers généraux de runtime | Helpers de runtime/journalisation/sauvegarde/installation de Plugin | + | `plugin-sdk/runtime-env` | Helpers ciblés d’environnement de runtime | Helpers de logger/environnement de runtime, temporisation, nouvelle tentative et backoff | + | `plugin-sdk/plugin-runtime` | Helpers partagés de runtime de Plugin | Helpers de commandes/hooks/http/interactif de Plugin | | `plugin-sdk/hook-runtime` | Helpers de pipeline de hook | Helpers partagés de pipeline de Webhook/hook interne | - | `plugin-sdk/lazy-runtime` | Helpers d’exécution paresseuse | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | + | `plugin-sdk/lazy-runtime` | Helpers de runtime paresseux | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` | | `plugin-sdk/process-runtime` | Helpers de processus | Helpers partagés d’exécution | - | `plugin-sdk/cli-runtime` | Helpers d’exécution CLI | Formatage des commandes, attentes, helpers de version | - | `plugin-sdk/gateway-runtime` | Helpers Gateway | Client Gateway et helpers de patch d’état de canal | + | `plugin-sdk/cli-runtime` | Helpers de runtime CLI | Helpers de formatage de commandes, attentes, versions | + | `plugin-sdk/gateway-runtime` | Helpers Gateway | Helpers de client Gateway et de patch d’état de canal | | `plugin-sdk/config-runtime` | Helpers de configuration | Helpers de chargement/écriture de configuration | - | `plugin-sdk/telegram-command-config` | Helpers de commandes Telegram | Helpers de validation de commandes Telegram stables en repli lorsque la surface de contrat Telegram groupée n’est pas disponible | - | `plugin-sdk/approval-runtime` | Helpers de prompt d’approbation | Helpers de payload d’approbation exec/Plugin, de capacité/profil d’approbation, de routage/exécution d’approbation native | - | `plugin-sdk/approval-auth-runtime` | Helpers d’authentification d’approbation | Résolution de l’approbateur, autorisation d’action dans le même chat | - | `plugin-sdk/approval-client-runtime` | Helpers de client d’approbation | Helpers de profil/filtre d’approbation exec native | - | `plugin-sdk/approval-delivery-runtime` | Helpers de distribution d’approbation | Adaptateurs de capacité/distribution d’approbation native | - | `plugin-sdk/approval-gateway-runtime` | Helpers Gateway d’approbation | Helper partagé de résolution de Gateway d’approbation | - | `plugin-sdk/approval-handler-adapter-runtime` | Helpers d’adaptateur d’approbation | Helpers légers de chargement d’adaptateur d’approbation native pour les points d’entrée de canal à chaud | - | `plugin-sdk/approval-handler-runtime` | Helpers de gestionnaire d’approbation | Helpers plus étendus d’exécution de gestionnaire d’approbation ; préférez les couches adaptateur/Gateway plus ciblées lorsqu’elles suffisent | - | `plugin-sdk/approval-native-runtime` | Helpers de cible d’approbation | Helpers natifs de cible d’approbation/liaison de compte | + | `plugin-sdk/telegram-command-config` | Helpers de commandes Telegram | Helpers de validation de commandes Telegram stables en repli lorsque la surface de contrat Telegram intégrée n’est pas disponible | + | `plugin-sdk/approval-runtime` | Helpers de prompt d’approbation | Helpers de payload d’approbation exec/Plugin, de capacité/profil d’approbation, de routage/runtime natifs d’approbation | + | `plugin-sdk/approval-auth-runtime` | Helpers d’authentification d’approbation | Résolution d’approbateur, authentification d’action dans la même discussion | + | `plugin-sdk/approval-client-runtime` | Helpers de client d’approbation | Helpers natifs de profil/filtre d’approbation exec | + | `plugin-sdk/approval-delivery-runtime` | Helpers de livraison d’approbation | Adaptateurs natifs de capacité/livraison d’approbation | + | `plugin-sdk/approval-gateway-runtime` | Helpers Gateway d’approbation | Helper partagé de résolution Gateway d’approbation | + | `plugin-sdk/approval-handler-adapter-runtime` | Helpers d’adaptateur d’approbation | Helpers légers de chargement d’adaptateur natif d’approbation pour les points d’entrée de canal à chaud | + | `plugin-sdk/approval-handler-runtime` | Helpers de handler d’approbation | Helpers plus larges de runtime de handler d’approbation ; préférez les points d’entrée plus ciblés d’adaptateur/Gateway lorsqu’ils suffisent | + | `plugin-sdk/approval-native-runtime` | Helpers de cible d’approbation | Helpers natifs de liaison cible/compte d’approbation | | `plugin-sdk/approval-reply-runtime` | Helpers de réponse d’approbation | Helpers de payload de réponse d’approbation exec/Plugin | - | `plugin-sdk/channel-runtime-context` | Helpers de contexte d’exécution de canal | Helpers génériques d’enregistrement/lecture/surveillance du contexte d’exécution de canal | - | `plugin-sdk/security-runtime` | Helpers de sécurité | Helpers partagés de confiance, de filtrage DM, de contenu externe et de collecte de secrets | - | `plugin-sdk/ssrf-policy` | Helpers de politique SSRF | Helpers de liste d’autorisation d’hôte et de politique réseau privé | - | `plugin-sdk/ssrf-runtime` | Helpers d’exécution SSRF | Répartiteur épinglé, fetch protégé, helpers de politique SSRF | + | `plugin-sdk/channel-runtime-context` | Helpers de contexte de runtime de canal | Helpers génériques d’enregistrement/récupération/surveillance du contexte de runtime de canal | + | `plugin-sdk/security-runtime` | Helpers de sécurité | Helpers partagés de confiance, contrôle DM, contenu externe et collecte de secrets | + | `plugin-sdk/ssrf-policy` | Helpers de politique SSRF | Helpers de liste d’autorisation d’hôtes et de politique de réseau privé | + | `plugin-sdk/ssrf-runtime` | Helpers de runtime SSRF | Helpers de dispatcher épinglé, fetch protégé, politique SSRF | | `plugin-sdk/collection-runtime` | Helpers de cache borné | `pruneMapToMaxSize` | - | `plugin-sdk/diagnostic-runtime` | Helpers de filtrage diagnostique | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | - | `plugin-sdk/error-runtime` | Helpers de formatage des erreurs | `formatUncaughtError`, `isApprovalNotFoundError`, helpers de graphe d’erreurs | + | `plugin-sdk/diagnostic-runtime` | Helpers de contrôle diagnostique | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` | + | `plugin-sdk/error-runtime` | Helpers de formatage d’erreurs | `formatUncaughtError`, `isApprovalNotFoundError`, helpers de graphe d’erreurs | | `plugin-sdk/fetch-runtime` | Helpers de fetch/proxy encapsulés | `resolveFetch`, helpers de proxy | | `plugin-sdk/host-runtime` | Helpers de normalisation d’hôte | `normalizeHostname`, `normalizeScpRemoteHost` | - | `plugin-sdk/retry-runtime` | Helpers de retry | `RetryConfig`, `retryAsync`, exécuteurs de politique | + | `plugin-sdk/retry-runtime` | Helpers de nouvelle tentative | `RetryConfig`, `retryAsync`, exécuteurs de politique | | `plugin-sdk/allow-from` | Formatage de liste d’autorisation | `formatAllowFromLowercase` | | `plugin-sdk/allowlist-resolution` | Mappage d’entrée de liste d’autorisation | `mapAllowlistResolutionInputs` | - | `plugin-sdk/command-auth` | Filtrage des commandes et helpers de surface de commande | `resolveControlCommandGate`, helpers d’autorisation de l’expéditeur, helpers de registre de commandes | - | `plugin-sdk/command-status` | Moteurs de rendu d’état/aide des commandes | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` | + | `plugin-sdk/command-auth` | Contrôle des commandes et helpers de surface de commande | `resolveControlCommandGate`, helpers d’autorisation de l’expéditeur, helpers de registre de commandes | + | `plugin-sdk/command-status` | Renderers d’état/d’aide des commandes | `buildCommandsMessage`, `buildCommandsMessagePaginated`, `buildHelpMessage` | | `plugin-sdk/secret-input` | Analyse des entrées secrètes | Helpers d’entrée secrète | | `plugin-sdk/webhook-ingress` | Helpers de requête Webhook | Utilitaires de cible Webhook | | `plugin-sdk/webhook-request-guards` | Helpers de garde du corps de requête Webhook | Helpers de lecture/limitation du corps de requête | - | `plugin-sdk/reply-runtime` | Exécution partagée des réponses | Répartition entrante, Heartbeat, planificateur de réponse, découpage | - | `plugin-sdk/reply-dispatch-runtime` | Helpers ciblés de répartition des réponses | Helpers de finalisation + répartition provider | + | `plugin-sdk/reply-runtime` | Runtime partagé des réponses | Dispatch entrant, Heartbeat, planificateur de réponse, segmentation | + | `plugin-sdk/reply-dispatch-runtime` | Helpers ciblés de dispatch des réponses | Helpers de finalisation + dispatch fournisseur | | `plugin-sdk/reply-history` | Helpers d’historique des réponses | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | Planification de référence de réponse | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Helpers de découpage des réponses | Helpers de découpage texte/Markdown | - | `plugin-sdk/session-store-runtime` | Helpers de stockage de session | Helpers de chemin de stockage + `updated-at` | + | `plugin-sdk/reply-chunking` | Helpers de segmentation des réponses | Helpers de segmentation texte/Markdown | + | `plugin-sdk/session-store-runtime` | Helpers de magasin de session | Helpers de chemin de stockage + date de mise à jour | | `plugin-sdk/state-paths` | Helpers de chemins d’état | Helpers de répertoire d’état et OAuth | | `plugin-sdk/routing` | Helpers de routage/clé de session | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, helpers de normalisation de clé de session | - | `plugin-sdk/status-helpers` | Helpers d’état de canal | Builders de résumé d’état de canal/compte, valeurs par défaut d’état d’exécution, helpers de métadonnées d’incident | + | `plugin-sdk/status-helpers` | Helpers d’état de canal | Builders de résumé d’état de canal/compte, valeurs par défaut d’état runtime, helpers de métadonnées de problème | | `plugin-sdk/target-resolver-runtime` | Helpers de résolution de cible | Helpers partagés de résolution de cible | - | `plugin-sdk/string-normalization-runtime` | Helpers de normalisation de chaîne | Helpers de normalisation de slug/chaîne | - | `plugin-sdk/request-url` | Helpers d’URL de requête | Extraire des URL sous forme de chaîne à partir d’entrées de type requête | - | `plugin-sdk/run-command` | Helpers de commande chronométrée | Exécuteur de commande chronométrée avec stdout/stderr normalisés | - | `plugin-sdk/param-readers` | Lecteurs de paramètres | Lecteurs courants de paramètres d’outil/CLI | - | `plugin-sdk/tool-payload` | Extraction de payload d’outil | Extraire des payloads normalisés à partir d’objets de résultat d’outil | - | `plugin-sdk/tool-send` | Extraction d’envoi d’outil | Extraire les champs canoniques de cible d’envoi à partir des arguments d’outil | + | `plugin-sdk/string-normalization-runtime` | Helpers de normalisation de chaînes | Helpers de normalisation de slug/chaîne | + | `plugin-sdk/request-url` | Helpers d’URL de requête | Extraire des URL de chaîne depuis des entrées de type requête | + | `plugin-sdk/run-command` | Helpers de commande temporisée | Exécuteur de commande temporisée avec stdout/stderr normalisés | + | `plugin-sdk/param-readers` | Lecteurs de paramètres | Lecteurs communs de paramètres d’outil/CLI | + | `plugin-sdk/tool-payload` | Extraction de payload d’outil | Extraire des payloads normalisés depuis des objets de résultat d’outil | + | `plugin-sdk/tool-send` | Extraction d’envoi d’outil | Extraire les champs de cible d’envoi canoniques depuis les arguments d’outil | | `plugin-sdk/temp-path` | Helpers de chemin temporaire | Helpers partagés de chemin de téléchargement temporaire | - | `plugin-sdk/logging-core` | Helpers de journalisation | Logger de sous-système et helpers de rédaction | + | `plugin-sdk/logging-core` | Helpers de journalisation | Logger de sous-système et helpers de masquage | | `plugin-sdk/markdown-table-runtime` | Helpers de tableau Markdown | Helpers de mode de tableau Markdown | | `plugin-sdk/reply-payload` | Types de réponse de message | Types de payload de réponse | - | `plugin-sdk/provider-setup` | Helpers de configuration local/self-hosted de provider organisés | Helpers de découverte/configuration de provider auto-hébergé | - | `plugin-sdk/self-hosted-provider-setup` | Helpers ciblés de configuration de provider auto-hébergé compatible OpenAI | Les mêmes helpers de découverte/configuration de provider auto-hébergé | - | `plugin-sdk/provider-auth-runtime` | Helpers d’authentification d’exécution du provider | Helpers de résolution de clé API à l’exécution | - | `plugin-sdk/provider-auth-api-key` | Helpers de configuration de clé API du provider | Helpers d’onboarding/écriture de profil de clé API | - | `plugin-sdk/provider-auth-result` | Helpers de résultat d’authentification du provider | Builder standard de résultat d’authentification OAuth | - | `plugin-sdk/provider-auth-login` | Helpers de connexion interactive du provider | Helpers partagés de connexion interactive | - | `plugin-sdk/provider-env-vars` | Helpers de variables d’environnement du provider | Helpers de recherche de variables d’environnement d’authentification du provider | - | `plugin-sdk/provider-model-shared` | Helpers partagés de modèle/relecture du provider | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builders partagés de politique de relecture, helpers de point de terminaison du provider et helpers de normalisation d’identifiant de modèle | - | `plugin-sdk/provider-catalog-shared` | Helpers partagés du catalogue de providers | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-onboard` | Correctifs d’onboarding des providers | Helpers de configuration d’onboarding | - | `plugin-sdk/provider-http` | Helpers HTTP des providers | Helpers génériques HTTP/capacités de point de terminaison des providers | - | `plugin-sdk/provider-web-fetch` | Helpers de web-fetch des providers | Helpers d’enregistrement/de cache des providers de web-fetch | - | `plugin-sdk/provider-web-search-config-contract` | Helpers de configuration de recherche web des providers | Helpers ciblés de configuration/d’identifiants de recherche web pour les providers qui n’ont pas besoin de câblage d’activation de Plugin | - | `plugin-sdk/provider-web-search-contract` | Helpers de contrat de recherche web des providers | Helpers ciblés de contrat de configuration/d’identifiants de recherche web tels que `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` et setters/getters d’identifiants à portée limitée | - | `plugin-sdk/provider-web-search` | Helpers de recherche web des providers | Helpers d’enregistrement/de cache/d’exécution des providers de recherche web | - | `plugin-sdk/provider-tools` | Helpers de compatibilité outil/schéma des providers | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, nettoyage de schéma Gemini + diagnostics, et helpers de compatibilité xAI tels que `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | - | `plugin-sdk/provider-usage` | Helpers d’usage des providers | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` et autres helpers d’usage des providers | - | `plugin-sdk/provider-stream` | Helpers d’encapsulation de flux des providers | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, types d’encapsulation de flux, et helpers partagés d’encapsulation Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-setup` | Helpers organisés de configuration de fournisseur local/autohébergé | Helpers de découverte/configuration de fournisseur autohébergé | + | `plugin-sdk/self-hosted-provider-setup` | Helpers ciblés de configuration de fournisseur autohébergé compatible OpenAI | Les mêmes helpers de découverte/configuration de fournisseur autohébergé | + | `plugin-sdk/provider-auth-runtime` | Helpers d’authentification runtime de fournisseur | Helpers de résolution runtime de clé API | + | `plugin-sdk/provider-auth-api-key` | Helpers de configuration de clé API de fournisseur | Helpers d’onboarding/écriture de profil de clé API | + | `plugin-sdk/provider-auth-result` | Helpers de résultat d’authentification de fournisseur | Builder standard de résultat d’authentification OAuth | + | `plugin-sdk/provider-auth-login` | Helpers de connexion interactive de fournisseur | Helpers partagés de connexion interactive | + | `plugin-sdk/provider-env-vars` | Helpers de variables d’environnement de fournisseur | Helpers de recherche de variables d’environnement d’authentification de fournisseur | + | `plugin-sdk/provider-model-shared` | Helpers partagés de modèle/rejeu de fournisseur | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builders partagés de politique de rejeu, helpers de point d’entrée de fournisseur et helpers de normalisation d’identifiant de modèle | + | `plugin-sdk/provider-catalog-shared` | Helpers partagés de catalogue de fournisseur | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | + | `plugin-sdk/provider-onboard` | Correctifs d’onboarding de fournisseur | Helpers de configuration d’onboarding | + | `plugin-sdk/provider-http` | Helpers HTTP de fournisseur | Helpers génériques HTTP/capacités de point d’entrée de fournisseur | + | `plugin-sdk/provider-web-fetch` | Helpers web-fetch de fournisseur | Helpers d’enregistrement/cache de fournisseur web-fetch | + | `plugin-sdk/provider-web-search-config-contract` | Helpers de configuration de recherche web de fournisseur | Helpers ciblés de configuration/identifiants de recherche web pour les fournisseurs qui n’ont pas besoin du câblage d’activation de Plugin | + | `plugin-sdk/provider-web-search-contract` | Helpers de contrat de recherche web de fournisseur | Helpers ciblés de contrat de configuration/identifiants de recherche web, comme `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` et les setters/getters d’identifiants à portée limitée | + | `plugin-sdk/provider-web-search` | Helpers de recherche web de fournisseur | Helpers d’enregistrement/cache/runtime de fournisseur de recherche web | + | `plugin-sdk/provider-tools` | Helpers de compatibilité outil/schéma de fournisseur | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, nettoyage de schéma Gemini + diagnostics, et helpers de compatibilité xAI comme `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-usage` | Helpers d’usage de fournisseur | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` et autres helpers d’usage de fournisseur | + | `plugin-sdk/provider-stream` | Helpers d’encapsulation de flux de fournisseur | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, types d’encapsulation de flux, et helpers partagés d’encapsulation Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-transport-runtime` | Helpers de transport de fournisseur | Helpers natifs de transport de fournisseur, comme fetch protégé, transformations de messages de transport et flux d’événements de transport inscriptibles | | `plugin-sdk/keyed-async-queue` | File asynchrone ordonnée | `KeyedAsyncQueue` | - | `plugin-sdk/media-runtime` | Helpers média partagés | Helpers de récupération/transformation/stockage de média ainsi que builders de payload média | - | `plugin-sdk/media-generation-runtime` | Helpers partagés de génération de média | Helpers partagés de basculement, sélection de candidats et messages de modèle manquant pour la génération d’image/vidéo/musique | - | `plugin-sdk/media-understanding` | Helpers de compréhension des médias | Types de providers de compréhension des médias ainsi qu’exports de helpers image/audio destinés aux providers | - | `plugin-sdk/text-runtime` | Helpers texte partagés | Suppression du texte visible par l’assistant, helpers de rendu/découpage/tableau Markdown, helpers de rédaction, helpers de balises de directive, utilitaires de texte sûr et helpers associés de texte/journalisation | - | `plugin-sdk/text-chunking` | Helpers de découpage de texte | Helper de découpage de texte sortant | - | `plugin-sdk/speech` | Helpers Speech | Types de providers Speech ainsi qu’helpers de directive, de registre et de validation destinés aux providers | - | `plugin-sdk/speech-core` | Noyau Speech partagé | Types de providers Speech, registre, directives, normalisation | - | `plugin-sdk/realtime-transcription` | Helpers de transcription en temps réel | Types de providers et helpers de registre | - | `plugin-sdk/realtime-voice` | Helpers de voix en temps réel | Types de providers et helpers de registre | - | `plugin-sdk/image-generation-core` | Noyau partagé de génération d’images | Types, helpers de basculement, d’authentification et de registre pour la génération d’images | - | `plugin-sdk/music-generation` | Helpers de génération de musique | Types de provider/requête/résultat pour la génération de musique | - | `plugin-sdk/music-generation-core` | Noyau partagé de génération de musique | Types de génération de musique, helpers de basculement, recherche de provider et analyse de model-ref | - | `plugin-sdk/video-generation` | Helpers de génération de vidéo | Types de provider/requête/résultat pour la génération de vidéo | - | `plugin-sdk/video-generation-core` | Noyau partagé de génération de vidéo | Types de génération de vidéo, helpers de basculement, recherche de provider et analyse de model-ref | - | `plugin-sdk/interactive-runtime` | Helpers de réponse interactive | Normalisation/réduction du payload de réponse interactive | + | `plugin-sdk/media-runtime` | Helpers média partagés | Helpers de récupération/transformation/stockage de médias ainsi que builders de payload média | + | `plugin-sdk/media-generation-runtime` | Helpers partagés de génération de médias | Helpers partagés de basculement, sélection de candidats et messages de modèle manquant pour la génération d’images/vidéos/musique | + | `plugin-sdk/media-understanding` | Helpers de compréhension des médias | Types de fournisseur de compréhension des médias ainsi qu’exportations de helpers image/audio orientées fournisseur | + | `plugin-sdk/text-runtime` | Helpers texte partagés | Suppression du texte visible par l’assistant, helpers de rendu/segmentation/tableau Markdown, helpers de masquage, helpers de balises de directive, utilitaires de texte sûr et autres helpers liés au texte/à la journalisation | + | `plugin-sdk/text-chunking` | Helpers de segmentation de texte | Helper de segmentation de texte sortant | + | `plugin-sdk/speech` | Helpers Speech | Types de fournisseur Speech ainsi que helpers orientés fournisseur pour directives, registre et validation | + | `plugin-sdk/speech-core` | Cœur Speech partagé | Types de fournisseur Speech, registre, directives, normalisation | + | `plugin-sdk/realtime-transcription` | Helpers de transcription en temps réel | Types de fournisseur et helpers de registre | + | `plugin-sdk/realtime-voice` | Helpers de voix en temps réel | Types de fournisseur et helpers de registre | + | `plugin-sdk/image-generation-core` | Cœur partagé de génération d’images | Types de génération d’images, helpers de basculement, d’authentification et de registre | + | `plugin-sdk/music-generation` | Helpers de génération de musique | Types de fournisseur/requête/résultat de génération de musique | + | `plugin-sdk/music-generation-core` | Cœur partagé de génération de musique | Types de génération de musique, helpers de basculement, recherche de fournisseur et analyse de model-ref | + | `plugin-sdk/video-generation` | Helpers de génération de vidéo | Types de fournisseur/requête/résultat de génération de vidéo | + | `plugin-sdk/video-generation-core` | Cœur partagé de génération de vidéo | Types de génération de vidéo, helpers de basculement, recherche de fournisseur et analyse de model-ref | + | `plugin-sdk/interactive-runtime` | Helpers de réponse interactive | Normalisation/réduction de payload de réponse interactive | | `plugin-sdk/channel-config-primitives` | Primitives de configuration de canal | Primitives ciblées de schéma de configuration de canal | | `plugin-sdk/channel-config-writes` | Helpers d’écriture de configuration de canal | Helpers d’autorisation d’écriture de configuration de canal | - | `plugin-sdk/channel-plugin-common` | Prélude de canal partagé | Exports partagés du prélude de Plugin de canal | - | `plugin-sdk/channel-status` | Helpers d’état de canal | Helpers partagés d’instantané/de résumé de l’état du canal | - | `plugin-sdk/allowlist-config-edit` | Helpers de configuration de liste d’autorisation | Helpers d’édition/de lecture de configuration de liste d’autorisation | + | `plugin-sdk/channel-plugin-common` | Préambule partagé de canal | Exportations partagées du préambule de Plugin de canal | + | `plugin-sdk/channel-status` | Helpers d’état de canal | Helpers partagés de snapshot/résumé d’état de canal | + | `plugin-sdk/allowlist-config-edit` | Helpers de configuration de liste d’autorisation | Helpers de lecture/édition de configuration de liste d’autorisation | | `plugin-sdk/group-access` | Helpers d’accès de groupe | Helpers partagés de décision d’accès de groupe | - | `plugin-sdk/direct-dm` | Helpers de DM direct | Helpers partagés d’authentification/de garde pour DM direct | - | `plugin-sdk/extension-shared` | Helpers d’extension partagés | Primitives de helper pour canal passif/état et proxy ambiant | + | `plugin-sdk/direct-dm` | Helpers de DM direct | Helpers partagés d’authentification/garde de DM direct | + | `plugin-sdk/extension-shared` | Helpers partagés d’extension | Primitives de helpers de canal passif/état et de proxy ambiant | | `plugin-sdk/webhook-targets` | Helpers de cible Webhook | Helpers de registre de cible Webhook et d’installation de route | | `plugin-sdk/webhook-path` | Helpers de chemin Webhook | Helpers de normalisation de chemin Webhook | - | `plugin-sdk/web-media` | Helpers média web partagés | Helpers de chargement de média distant/local | - | `plugin-sdk/zod` | Réexportation de Zod | `zod` réexporté pour les consommateurs du Plugin SDK | - | `plugin-sdk/memory-core` | Helpers groupés memory-core | Surface de helpers pour le gestionnaire/configuration/fichier/CLI de la mémoire | - | `plugin-sdk/memory-core-engine-runtime` | Façade d’exécution du moteur mémoire | Façade d’exécution d’indexation/recherche mémoire | - | `plugin-sdk/memory-core-host-engine-foundation` | Moteur de fondation hôte de la mémoire | Exports du moteur de fondation hôte de la mémoire | - | `plugin-sdk/memory-core-host-engine-embeddings` | Moteur d’embeddings hôte de la mémoire | Contrats d’embeddings mémoire, accès au registre, provider local et helpers génériques de lot/distant ; les providers distants concrets résident dans leurs Plugins propriétaires | - | `plugin-sdk/memory-core-host-engine-qmd` | Moteur QMD hôte de la mémoire | Exports du moteur QMD hôte de la mémoire | - | `plugin-sdk/memory-core-host-engine-storage` | Moteur de stockage hôte de la mémoire | Exports du moteur de stockage hôte de la mémoire | - | `plugin-sdk/memory-core-host-multimodal` | Helpers multimodaux hôte de la mémoire | Helpers multimodaux hôte de la mémoire | - | `plugin-sdk/memory-core-host-query` | Helpers de requête hôte de la mémoire | Helpers de requête hôte de la mémoire | - | `plugin-sdk/memory-core-host-secret` | Helpers de secret hôte de la mémoire | Helpers de secret hôte de la mémoire | - | `plugin-sdk/memory-core-host-events` | Helpers de journal d’événements hôte de la mémoire | Helpers de journal d’événements hôte de la mémoire | - | `plugin-sdk/memory-core-host-status` | Helpers d’état hôte de la mémoire | Helpers d’état hôte de la mémoire | - | `plugin-sdk/memory-core-host-runtime-cli` | Exécution CLI hôte de la mémoire | Helpers d’exécution CLI hôte de la mémoire | - | `plugin-sdk/memory-core-host-runtime-core` | Exécution core hôte de la mémoire | Helpers d’exécution core hôte de la mémoire | - | `plugin-sdk/memory-core-host-runtime-files` | Helpers de fichier/d’exécution hôte de la mémoire | Helpers de fichier/d’exécution hôte de la mémoire | - | `plugin-sdk/memory-host-core` | Alias d’exécution core hôte de la mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers d’exécution core hôte de la mémoire | - | `plugin-sdk/memory-host-events` | Alias de journal d’événements hôte de la mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers de journal d’événements hôte de la mémoire | - | `plugin-sdk/memory-host-files` | Alias de fichier/d’exécution hôte de la mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers de fichier/d’exécution hôte de la mémoire | - | `plugin-sdk/memory-host-markdown` | Helpers de Markdown géré | Helpers partagés de Markdown géré pour les Plugins adjacents à la mémoire | - | `plugin-sdk/memory-host-search` | Façade de recherche Active Memory | Façade d’exécution paresseuse du gestionnaire de recherche Active Memory | - | `plugin-sdk/memory-host-status` | Alias d’état hôte de la mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers d’état hôte de la mémoire | - | `plugin-sdk/memory-lancedb` | Helpers groupés memory-lancedb | Surface de helpers memory-lancedb | + | `plugin-sdk/web-media` | Helpers web média partagés | Helpers de chargement de médias distants/locaux | + | `plugin-sdk/zod` | Réexportation Zod | `zod` réexporté pour les consommateurs du Plugin SDK | + | `plugin-sdk/memory-core` | Helpers intégrés memory-core | Surface de helpers du gestionnaire/configuration/fichier/CLI de mémoire | + | `plugin-sdk/memory-core-engine-runtime` | Façade runtime du moteur de mémoire | Façade runtime d’indexation/recherche de mémoire | + | `plugin-sdk/memory-core-host-engine-foundation` | Moteur fondation hôte de mémoire | Exportations du moteur fondation hôte de mémoire | + | `plugin-sdk/memory-core-host-engine-embeddings` | Moteur d’embeddings hôte de mémoire | Contrats d’embeddings de mémoire, accès au registre, fournisseur local et helpers génériques de lot/distant ; les fournisseurs distants concrets vivent dans leurs Plugins propriétaires | + | `plugin-sdk/memory-core-host-engine-qmd` | Moteur QMD hôte de mémoire | Exportations du moteur QMD hôte de mémoire | + | `plugin-sdk/memory-core-host-engine-storage` | Moteur de stockage hôte de mémoire | Exportations du moteur de stockage hôte de mémoire | + | `plugin-sdk/memory-core-host-multimodal` | Helpers multimodaux hôtes de mémoire | Helpers multimodaux hôtes de mémoire | + | `plugin-sdk/memory-core-host-query` | Helpers de requête hôte de mémoire | Helpers de requête hôte de mémoire | + | `plugin-sdk/memory-core-host-secret` | Helpers de secret hôte de mémoire | Helpers de secret hôte de mémoire | + | `plugin-sdk/memory-core-host-events` | Helpers de journal d’événements hôte de mémoire | Helpers de journal d’événements hôte de mémoire | + | `plugin-sdk/memory-core-host-status` | Helpers d’état hôte de mémoire | Helpers d’état hôte de mémoire | + | `plugin-sdk/memory-core-host-runtime-cli` | Runtime CLI hôte de mémoire | Helpers de runtime CLI hôte de mémoire | + | `plugin-sdk/memory-core-host-runtime-core` | Runtime cœur hôte de mémoire | Helpers de runtime cœur hôte de mémoire | + | `plugin-sdk/memory-core-host-runtime-files` | Helpers fichier/runtime hôte de mémoire | Helpers fichier/runtime hôte de mémoire | + | `plugin-sdk/memory-host-core` | Alias runtime cœur hôte de mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers de runtime cœur hôte de mémoire | + | `plugin-sdk/memory-host-events` | Alias journal d’événements hôte de mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers de journal d’événements hôte de mémoire | + | `plugin-sdk/memory-host-files` | Alias fichier/runtime hôte de mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers fichier/runtime hôte de mémoire | + | `plugin-sdk/memory-host-markdown` | Helpers Markdown gérés | Helpers partagés de Markdown géré pour les Plugins proches de la mémoire | + | `plugin-sdk/memory-host-search` | Façade de recherche Active Memory | Façade runtime paresseuse du gestionnaire de recherche Active Memory | + | `plugin-sdk/memory-host-status` | Alias d’état hôte de mémoire | Alias neutre vis-à-vis du fournisseur pour les helpers d’état hôte de mémoire | + | `plugin-sdk/memory-lancedb` | Helpers intégrés memory-lancedb | Surface de helpers memory-lancedb | | `plugin-sdk/testing` | Utilitaires de test | Helpers de test et mocks | -Ce tableau correspond intentionnellement au sous-ensemble commun de migration, et non à la surface complète -du SDK. La liste complète des plus de 200 points d’entrée se trouve dans +Ce tableau correspond intentionnellement au sous-ensemble courant de migration, et non à la +surface complète du SDK. La liste complète des plus de 200 points d’entrée se trouve dans `scripts/lib/plugin-sdk-entrypoints.json`. -Cette liste inclut encore certaines couches de helpers de Plugins groupés telles que +Cette liste inclut encore certains points d’entrée de helpers de Plugins intégrés, tels que `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, -`plugin-sdk/zalo-setup`, et `plugin-sdk/matrix*`. Elles restent exportées pour la -maintenance et la compatibilité des Plugins groupés, mais elles sont volontairement -omises du tableau de migration commun et ne constituent pas la cible recommandée pour +`plugin-sdk/zalo-setup` et `plugin-sdk/matrix*`. Ils restent exportés pour la +maintenance et la compatibilité des Plugins intégrés, mais ils sont volontairement +omis du tableau courant de migration et ne constituent pas la cible recommandée pour le nouveau code de Plugin. -La même règle s’applique aux autres familles de helpers groupés telles que : +La même règle s’applique à d’autres familles de helpers intégrés telles que : - helpers de prise en charge du navigateur : `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` - Matrix : `plugin-sdk/matrix*` - LINE : `plugin-sdk/line*` - IRC : `plugin-sdk/irc*` -- surfaces de helper/Plugin groupées comme `plugin-sdk/googlechat`, +- surfaces de helpers/Plugins intégrés comme `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`, `plugin-sdk/mattermost*`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch`, `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, - `plugin-sdk/thread-ownership`, et `plugin-sdk/voice-call` + `plugin-sdk/thread-ownership` et `plugin-sdk/voice-call` -`plugin-sdk/github-copilot-token` expose actuellement la surface ciblée de helper de jeton +`plugin-sdk/github-copilot-token` expose actuellement la surface étroite de helper de jeton `DEFAULT_COPILOT_API_BASE_URL`, -`deriveCopilotApiBaseUrlFromToken`, et `resolveCopilotApiToken`. +`deriveCopilotApiBaseUrlFromToken` et `resolveCopilotApiToken`. -Utilisez l’import le plus ciblé qui correspond à la tâche. Si vous ne trouvez pas une exportation, -consultez la source dans `src/plugin-sdk/` ou demandez dans Discord. +Utilisez l’import le plus ciblé qui correspond au besoin. Si vous ne trouvez pas une exportation, +consultez le code source dans `src/plugin-sdk/` ou demandez sur Discord. ## Calendrier de suppression @@ -378,7 +375,7 @@ consultez la source dans `src/plugin-sdk/` ou demandez dans Discord. | **Maintenant** | Les surfaces dépréciées émettent des avertissements à l’exécution | | **Prochaine version majeure** | Les surfaces dépréciées seront supprimées ; les Plugins qui les utilisent encore échoueront | -Tous les Plugins du core ont déjà été migrés. Les Plugins externes doivent migrer +Tous les Plugins du cœur ont déjà été migrés. Les Plugins externes doivent migrer avant la prochaine version majeure. ## Supprimer temporairement les avertissements @@ -392,11 +389,11 @@ OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run Il s’agit d’une échappatoire temporaire, et non d’une solution permanente. -## Liens associés +## Voir aussi -- [Bien démarrer](/fr/plugins/building-plugins) — créez votre premier Plugin +- [Premiers pas](/fr/plugins/building-plugins) — créez votre premier Plugin - [Vue d’ensemble du SDK](/fr/plugins/sdk-overview) — référence complète des imports par sous-chemin -- [Plugins de canal](/fr/plugins/sdk-channel-plugins) — créer des Plugins de canal -- [Plugins de provider](/fr/plugins/sdk-provider-plugins) — créer des Plugins de provider +- [Plugins de canal](/fr/plugins/sdk-channel-plugins) — création de Plugins de canal +- [Plugins de fournisseur](/fr/plugins/sdk-provider-plugins) — création de Plugins de fournisseur - [Internes des Plugins](/fr/plugins/architecture) — analyse approfondie de l’architecture -- [Manifest de Plugin](/fr/plugins/manifest) — référence du schéma du manifest +- [Manifeste de Plugin](/fr/plugins/manifest) — référence du schéma du manifeste diff --git a/docs/fr/plugins/sdk-overview.md b/docs/fr/plugins/sdk-overview.md index 8f62be48e..7ecebb555 100644 --- a/docs/fr/plugins/sdk-overview.md +++ b/docs/fr/plugins/sdk-overview.md @@ -1,33 +1,33 @@ --- read_when: - Vous devez savoir depuis quel sous-chemin du SDK importer - - Vous voulez une référence pour toutes les méthodes d’enregistrement sur OpenClawPluginApi + - Vous voulez une référence pour toutes les méthodes d’enregistrement sur `OpenClawPluginApi` - Vous recherchez une exportation spécifique du SDK sidebarTitle: SDK Overview -summary: Map d’import, référence de l’API d’enregistrement et architecture du SDK -title: Aperçu du SDK Plugin +summary: Import map, référence de l’API d’enregistrement et architecture du SDK +title: Vue d’ensemble du SDK Plugin x-i18n: - generated_at: "2026-04-18T06:44:10Z" + generated_at: "2026-04-19T01:11:33Z" model: gpt-5.4 provider: openai - source_hash: 05d3d0022cca32d29c76f6cea01cdf4f88ac69ef0ef3d7fb8a60fbf9a6b9b331 + source_hash: 522c2c542bc0ea4793541fda18931b963ad71f07e9c83e4f22f05184eb1ba91a source_path: plugins/sdk-overview.md workflow: 15 --- -# Aperçu du SDK Plugin +# Vue d’ensemble du SDK Plugin Le SDK Plugin est le contrat typé entre les plugins et le cœur. Cette page est la référence pour **quoi importer** et **ce que vous pouvez enregistrer**. **Vous cherchez un guide pratique ?** - - Premier plugin ? Commencez par [Prise en main](/fr/plugins/building-plugins) - - Plugin de canal ? Voir [Plugins de canal](/fr/plugins/sdk-channel-plugins) - - Plugin de fournisseur ? Voir [Plugins de fournisseur](/fr/plugins/sdk-provider-plugins) + - Premier plugin ? Commencez par [Getting Started](/fr/plugins/building-plugins) + - Plugin de canal ? Voir [Channel Plugins](/fr/plugins/sdk-channel-plugins) + - Plugin de fournisseur ? Voir [Provider Plugins](/fr/plugins/sdk-provider-plugins) -## Convention d’import +## Convention d’importation Importez toujours depuis un sous-chemin spécifique : @@ -36,40 +36,40 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"; import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core"; ``` -Chaque sous-chemin est un petit module autonome. Cela permet de garder un -démarrage rapide et d’éviter les problèmes de dépendances circulaires. Pour les helpers -d’entrée/de construction spécifiques aux canaux, privilégiez `openclaw/plugin-sdk/channel-core` ; réservez `openclaw/plugin-sdk/core` à -la surface ombrelle plus large et aux helpers partagés comme +Chaque sous-chemin est un module petit et autonome. Cela permet de garder un +démarrage rapide et d’éviter les problèmes de dépendances circulaires. Pour les helpers d’entrée/de construction spécifiques aux canaux, +préférez `openclaw/plugin-sdk/channel-core` ; gardez `openclaw/plugin-sdk/core` pour +la surface ombrelle plus large et les helpers partagés tels que `buildChannelConfigSchema`. -N’ajoutez pas et ne dépendez pas de points d’entrée de commodité nommés d’après des fournisseurs tels que +N’ajoutez pas et ne dépendez pas de points d’accès pratiques nommés d’après des fournisseurs tels que `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`, `openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`, ni de -points d’entrée helpers marqués canal. Les plugins intégrés doivent composer des -sous-chemins génériques du SDK dans leurs propres barrels `api.ts` ou `runtime-api.ts`, et le cœur -doit soit utiliser ces barrels locaux au plugin, soit ajouter un contrat SDK -générique étroit lorsque le besoin est réellement transversal aux canaux. +points d’accès helpers marqués par un canal. Les plugins fournis doivent composer des sous-chemins +SDK génériques dans leurs propres barrels `api.ts` ou `runtime-api.ts`, et le cœur +doit soit utiliser ces barrels locaux au plugin, soit ajouter un contrat SDK générique étroit +lorsque le besoin est réellement inter-canaux. -La map d’export générée contient encore un petit ensemble de points d’entrée helpers de plugins intégrés -tels que `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, +La map d’export générée contient encore un petit ensemble de +points d’accès helpers de plugins fournis tels que `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`, `plugin-sdk/zalo-setup` et `plugin-sdk/matrix*`. Ces -sous-chemins existent uniquement pour la maintenance et la compatibilité des plugins intégrés ; ils sont -volontairement omis du tableau courant ci-dessous et ne constituent pas le -chemin d’import recommandé pour les nouveaux plugins tiers. +sous-chemins existent uniquement pour la maintenance et la compatibilité des plugins fournis ; ils sont +intentionnellement omis du tableau courant ci-dessous et ne constituent pas +le chemin d’importation recommandé pour les nouveaux plugins tiers. ## Référence des sous-chemins -Les sous-chemins les plus couramment utilisés, regroupés par usage. La liste complète générée de +Les sous-chemins les plus couramment utilisés, regroupés par usage. La liste complète générée des plus de 200 sous-chemins se trouve dans `scripts/lib/plugin-sdk-entrypoints.json`. -Les sous-chemins helpers réservés aux plugins intégrés figurent toujours dans cette liste générée. -Traitez-les comme des surfaces de détail d’implémentation/de compatibilité, sauf si une page de documentation +Les sous-chemins helpers réservés aux plugins fournis apparaissent toujours dans cette liste générée. +Considérez-les comme des surfaces de détail d’implémentation/de compatibilité sauf si une page de documentation en promeut explicitement un comme public. -### Entrée de plugin +### Entrée de Plugin -| Sous-chemin | Exportations principales | -| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| Sous-chemin | Exportations clés | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `plugin-sdk/plugin-entry` | `definePluginEntry` | | `plugin-sdk/core` | `defineChannelPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase`, `defineSetupPluginEntry`, `buildChannelConfigSchema` | | `plugin-sdk/config-schema` | `OpenClawSchema` | @@ -77,202 +77,203 @@ en promeut explicitement un comme public. - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | | `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` | | `plugin-sdk/config-schema` | Export Zod du schéma racine `openclaw.json` (`OpenClawSchema`) | | `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, plus `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` | - | `plugin-sdk/setup` | Helpers partagés d’assistant de configuration, invites d’allowlist, constructeurs d’état de configuration | + | `plugin-sdk/setup` | Helpers partagés d’assistant de configuration, invites de liste d’autorisation, constructeurs d’état de configuration | | `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` | | `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` | | `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` | - | `plugin-sdk/account-core` | Helpers de configuration multi-comptes/gate d’action, helpers de repli de compte par défaut | + | `plugin-sdk/account-core` | Helpers de configuration/porte d’action multi-comptes, helpers de repli de compte par défaut | | `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, helpers de normalisation d’identifiant de compte | - | `plugin-sdk/account-resolution` | Recherche de compte + helpers de repli par défaut | - | `plugin-sdk/account-helpers` | Helpers ciblés de liste de comptes/action de compte | + | `plugin-sdk/account-resolution` | Helpers de recherche de compte + repli par défaut | + | `plugin-sdk/account-helpers` | Helpers étroits de liste de comptes/action de compte | | `plugin-sdk/channel-pairing` | `createChannelPairingController` | | `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` | | `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` | | `plugin-sdk/channel-config-schema` | Types de schéma de configuration de canal | - | `plugin-sdk/telegram-command-config` | Helpers de normalisation/validation des commandes personnalisées Telegram avec repli de contrat intégré | - | `plugin-sdk/command-gating` | Helpers ciblés de gate d’autorisation de commande | + | `plugin-sdk/telegram-command-config` | Helpers de normalisation/validation de commandes personnalisées Telegram avec repli de contrat fourni | + | `plugin-sdk/command-gating` | Helpers étroits de porte d’autorisation de commandes | | `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` | | `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` | - | `plugin-sdk/inbound-envelope` | Helpers partagés de route entrante + construction d’enveloppe | - | `plugin-sdk/inbound-reply-dispatch` | Helpers partagés d’enregistrement entrant et de distribution | - | `plugin-sdk/messaging-targets` | Helpers d’analyse/de correspondance de cibles | + | `plugin-sdk/inbound-envelope` | Helpers partagés de routage entrant + construction d’enveloppe | + | `plugin-sdk/inbound-reply-dispatch` | Helpers partagés d’enregistrement et de distribution des entrées | + | `plugin-sdk/messaging-targets` | Helpers d’analyse/correspondance des cibles | | `plugin-sdk/outbound-media` | Helpers partagés de chargement de médias sortants | - | `plugin-sdk/outbound-runtime` | Helpers de délégation d’envoi/d’identité sortante | - | `plugin-sdk/poll-runtime` | Helpers ciblés de normalisation de sondage | - | `plugin-sdk/thread-bindings-runtime` | Helpers de cycle de vie et d’adaptateur des liaisons de thread | + | `plugin-sdk/outbound-runtime` | Helpers de délégation d’identité/d’envoi sortants | + | `plugin-sdk/poll-runtime` | Helpers étroits de normalisation des sondages | + | `plugin-sdk/thread-bindings-runtime` | Helpers de cycle de vie et d’adaptateur de liaison de fil | | `plugin-sdk/agent-media-payload` | Constructeur hérité de payload média d’agent | - | `plugin-sdk/conversation-runtime` | Helpers de liaison de conversation/thread, d’appairage et de liaison configurée | - | `plugin-sdk/runtime-config-snapshot` | Helper d’instantané de configuration d’exécution | - | `plugin-sdk/runtime-group-policy` | Helpers d’exécution de résolution de politique de groupe | - | `plugin-sdk/channel-status` | Helpers partagés d’instantané/résumé d’état de canal | - | `plugin-sdk/channel-config-primitives` | Primitives ciblées de schéma de configuration de canal | + | `plugin-sdk/conversation-runtime` | Helpers de liaison conversation/fil, d’appairage et de liaison configurée | + | `plugin-sdk/runtime-config-snapshot` | Helper de capture instantanée de configuration à l’exécution | + | `plugin-sdk/runtime-group-policy` | Helpers de résolution de politique de groupe à l’exécution | + | `plugin-sdk/channel-status` | Helpers partagés de capture instantanée/résumé de statut de canal | + | `plugin-sdk/channel-config-primitives` | Primitives étroites de schéma de configuration de canal | | `plugin-sdk/channel-config-writes` | Helpers d’autorisation d’écriture de configuration de canal | - | `plugin-sdk/channel-plugin-common` | Exports de prélude partagés de plugin de canal | - | `plugin-sdk/allowlist-config-edit` | Helpers de lecture/édition de configuration d’allowlist | + | `plugin-sdk/channel-plugin-common` | Exports de prélude de plugin de canal partagés | + | `plugin-sdk/allowlist-config-edit` | Helpers de lecture/modification de configuration de liste d’autorisation | | `plugin-sdk/group-access` | Helpers partagés de décision d’accès de groupe | - | `plugin-sdk/direct-dm` | Helpers partagés d’authentification/garde de message direct | + | `plugin-sdk/direct-dm` | Helpers partagés d’authentification/garde de message privé direct | | `plugin-sdk/interactive-runtime` | Helpers de normalisation/réduction de payload de réponse interactive | - | `plugin-sdk/channel-inbound` | Barrel de compatibilité pour le debounce entrant, la correspondance de mention, les helpers de politique de mention et les helpers d’enveloppe | - | `plugin-sdk/channel-mention-gating` | Helpers ciblés de politique de mention sans la surface d’exécution entrante plus large | + | `plugin-sdk/channel-inbound` | Barrel de compatibilité pour anti-rebond entrant, correspondance de mentions, helpers de politique de mention et helpers d’enveloppe | + | `plugin-sdk/channel-mention-gating` | Helpers étroits de politique de mention sans la surface d’exécution entrante plus large | | `plugin-sdk/channel-location` | Helpers de contexte et de formatage d’emplacement de canal | - | `plugin-sdk/channel-logging` | Helpers de journalisation de canal pour les rejets entrants et les échecs de saisie/d’accusé de réception | + | `plugin-sdk/channel-logging` | Helpers de journalisation de canal pour les rejets entrants et les échecs de saisie/accusé de réception | | `plugin-sdk/channel-send-result` | Types de résultat de réponse | | `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` | - | `plugin-sdk/channel-targets` | Helpers d’analyse/de correspondance de cibles | + | `plugin-sdk/channel-targets` | Helpers d’analyse/correspondance des cibles | | `plugin-sdk/channel-contract` | Types de contrat de canal | - | `plugin-sdk/channel-feedback` | Câblage des retours/réactions | - | `plugin-sdk/channel-secret-runtime` | Helpers ciblés de contrat de secret comme `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment`, et types de cible de secret | + | `plugin-sdk/channel-feedback` | Câblage de feedback/réaction | + | `plugin-sdk/channel-secret-runtime` | Helpers étroits de contrat secret tels que `collectSimpleChannelFieldAssignments`, `getChannelSurface`, `pushAssignment` et types de cibles secrètes | - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | | `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` | - | `plugin-sdk/provider-setup` | Helpers de configuration sélectionnés pour les fournisseurs locaux/autohébergés | - | `plugin-sdk/self-hosted-provider-setup` | Helpers ciblés de configuration de fournisseur autohébergé compatible OpenAI | + | `plugin-sdk/provider-setup` | Helpers de configuration organisés pour fournisseurs locaux/autohébergés | + | `plugin-sdk/self-hosted-provider-setup` | Helpers ciblés de configuration de fournisseurs autohébergés compatibles OpenAI | | `plugin-sdk/cli-backend` | Valeurs par défaut du backend CLI + constantes de watchdog | | `plugin-sdk/provider-auth-runtime` | Helpers d’exécution de résolution de clé API pour les plugins de fournisseur | | `plugin-sdk/provider-auth-api-key` | Helpers d’intégration/écriture de profil de clé API tels que `upsertApiKeyProfile` | | `plugin-sdk/provider-auth-result` | Constructeur standard de résultat d’authentification OAuth | | `plugin-sdk/provider-auth-login` | Helpers partagés de connexion interactive pour les plugins de fournisseur | - | `plugin-sdk/provider-env-vars` | Helpers de recherche de variables d’environnement d’authentification fournisseur | + | `plugin-sdk/provider-env-vars` | Helpers de recherche de variables d’environnement d’authentification du fournisseur | | `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile`, `upsertApiKeyProfile`, `writeOAuthCredentials` | - | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, constructeurs partagés de politique de rejeu, helpers de point de terminaison fournisseur et helpers de normalisation d’identifiant de modèle comme `normalizeNativeXaiModelId` | + | `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, constructeurs partagés de politique de relecture, helpers de point de terminaison de fournisseur et helpers de normalisation d’identifiant de modèle tels que `normalizeNativeXaiModelId` | | `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` | - | `plugin-sdk/provider-http` | Helpers génériques de capacité HTTP/point de terminaison fournisseur | - | `plugin-sdk/provider-web-fetch-contract` | Helpers ciblés de contrat de configuration/sélection web-fetch comme `enablePluginInConfig` et `WebFetchProviderPlugin` | + | `plugin-sdk/provider-http` | Helpers génériques de capacité HTTP/point de terminaison de fournisseur | + | `plugin-sdk/provider-web-fetch-contract` | Helpers étroits de contrat de configuration/sélection web-fetch tels que `enablePluginInConfig` et `WebFetchProviderPlugin` | | `plugin-sdk/provider-web-fetch` | Helpers d’enregistrement/cache de fournisseur web-fetch | - | `plugin-sdk/provider-web-search-config-contract` | Helpers ciblés de configuration/d’identifiants web-search pour les fournisseurs qui n’ont pas besoin de câblage d’activation de plugin | - | `plugin-sdk/provider-web-search-contract` | Helpers ciblés de contrat de configuration/d’identifiants web-search comme `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig`, et setters/getters d’identifiants à portée limitée | + | `plugin-sdk/provider-web-search-config-contract` | Helpers étroits de configuration/d’identifiants web-search pour les fournisseurs qui n’ont pas besoin du câblage d’activation de plugin | + | `plugin-sdk/provider-web-search-contract` | Helpers étroits de contrat de configuration/d’identifiants web-search tels que `createWebSearchProviderContractFields`, `enablePluginInConfig`, `resolveProviderWebSearchPluginConfig` et setters/getters d’identifiants à portée limitée | | `plugin-sdk/provider-web-search` | Helpers d’enregistrement/cache/exécution de fournisseur web-search | - | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, nettoyage de schéma Gemini + diagnostics, et helpers de compatibilité xAI comme `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | + | `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, nettoyage + diagnostics de schéma Gemini et helpers de compatibilité xAI tels que `resolveXaiModelCompatPatch` / `applyXaiModelCompat` | | `plugin-sdk/provider-usage` | `fetchClaudeUsage` et similaires | - | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, types de wrappers de flux, et helpers partagés de wrapper Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, types de wrapper de flux et helpers de wrapper partagés Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot | + | `plugin-sdk/provider-transport-runtime` | Helpers de transport natif de fournisseur tels que fetch protégé, transformations de messages de transport et flux d’événements de transport inscriptibles | | `plugin-sdk/provider-onboard` | Helpers de correctif de configuration d’intégration | | `plugin-sdk/global-singleton` | Helpers de singleton/map/cache locaux au processus | - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | | `plugin-sdk/command-auth` | `resolveControlCommandGate`, helpers de registre de commandes, helpers d’autorisation d’expéditeur | - | `plugin-sdk/command-status` | Constructeurs de messages de commande/d’aide comme `buildCommandsMessagePaginated` et `buildHelpMessage` | + | `plugin-sdk/command-status` | Constructeurs de messages de commande/d’aide tels que `buildCommandsMessagePaginated` et `buildHelpMessage` | | `plugin-sdk/approval-auth-runtime` | Helpers de résolution d’approbateur et d’authentification d’action dans le même chat | - | `plugin-sdk/approval-client-runtime` | Helpers de profil/filtre d’approbation exec natifs | - | `plugin-sdk/approval-delivery-runtime` | Adaptateurs natifs de capacité/de livraison d’approbation | + | `plugin-sdk/approval-client-runtime` | Helpers natifs de profil/filtre d’approbation d’exécution | + | `plugin-sdk/approval-delivery-runtime` | Adaptateurs natifs de capacité/livraison d’approbation | | `plugin-sdk/approval-gateway-runtime` | Helper partagé de résolution de Gateway d’approbation | - | `plugin-sdk/approval-handler-adapter-runtime` | Helpers légers de chargement d’adaptateur d’approbation natif pour points d’entrée de canal à chaud | - | `plugin-sdk/approval-handler-runtime` | Helpers d’exécution plus larges de gestionnaire d’approbation ; privilégiez les points d’entrée plus étroits adapter/gateway lorsqu’ils suffisent | - | `plugin-sdk/approval-native-runtime` | Helpers de cible d’approbation native + de liaison de compte | - | `plugin-sdk/approval-reply-runtime` | Helpers de payload de réponse d’approbation exec/plugin | - | `plugin-sdk/command-auth-native` | Authentification de commande native + helpers natifs de cible de session | - | `plugin-sdk/command-detection` | Helpers partagés de détection de commandes | + | `plugin-sdk/approval-handler-adapter-runtime` | Helpers légers de chargement d’adaptateur d’approbation natif pour les points d’entrée de canal critiques | + | `plugin-sdk/approval-handler-runtime` | Helpers d’exécution plus larges pour le gestionnaire d’approbation ; préférez les points d’accès plus étroits adapter/gateway lorsqu’ils suffisent | + | `plugin-sdk/approval-native-runtime` | Helpers natifs de cible d’approbation + liaison de compte | + | `plugin-sdk/approval-reply-runtime` | Helpers de payload de réponse d’approbation d’exécution/plugin | + | `plugin-sdk/command-auth-native` | Helpers natifs d’authentification de commande + de cible de session native | + | `plugin-sdk/command-detection` | Helpers partagés de détection de commande | | `plugin-sdk/command-surface` | Helpers de normalisation du corps de commande et de surface de commande | | `plugin-sdk/allow-from` | `formatAllowFromLowercase` | - | `plugin-sdk/channel-secret-runtime` | Helpers ciblés de collecte de contrat de secret pour surfaces de secrets de canal/plugin | - | `plugin-sdk/secret-ref-runtime` | Helpers ciblés `coerceSecretRef` et de typage SecretRef pour l’analyse des contrats de secret/de la configuration | - | `plugin-sdk/security-runtime` | Helpers partagés de confiance, gate DM, contenu externe et collecte de secrets | + | `plugin-sdk/channel-secret-runtime` | Helpers étroits de collecte de contrat secret pour les surfaces secrètes de canal/plugin | + | `plugin-sdk/secret-ref-runtime` | Helpers étroits `coerceSecretRef` et de typage SecretRef pour l’analyse de contrat secret/configuration | + | `plugin-sdk/security-runtime` | Helpers partagés de confiance, de filtrage DM, de contenu externe et de collecte de secrets | | `plugin-sdk/ssrf-policy` | Helpers de politique SSRF de liste d’autorisation d’hôtes et de réseau privé | - | `plugin-sdk/ssrf-dispatcher` | Helpers ciblés de dispatcher épinglé sans la large surface d’exécution infra | - | `plugin-sdk/ssrf-runtime` | Helpers de dispatcher épinglé, fetch protégé contre SSRF et politique SSRF | - | `plugin-sdk/secret-input` | Helpers d’analyse d’entrée de secret | + | `plugin-sdk/ssrf-dispatcher` | Helpers étroits de dispatcher épinglé sans la surface d’exécution infra plus large | + | `plugin-sdk/ssrf-runtime` | Helpers de dispatcher épinglé, de fetch protégé contre SSRF et de politique SSRF | + | `plugin-sdk/secret-input` | Helpers d’analyse d’entrée secrète | | `plugin-sdk/webhook-ingress` | Helpers de requête/cible Webhook | - | `plugin-sdk/webhook-request-guards` | Helpers de taille de corps de requête/délai d’expiration | + | `plugin-sdk/webhook-request-guards` | Helpers de taille du corps de requête/délai d’expiration | - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | | `plugin-sdk/runtime` | Helpers larges d’exécution/journalisation/sauvegarde/installation de plugin | - | `plugin-sdk/runtime-env` | Helpers ciblés d’environnement d’exécution, logger, délai d’expiration, nouvelle tentative et backoff | + | `plugin-sdk/runtime-env` | Helpers étroits d’environnement d’exécution, de logger, de délai d’expiration, de nouvelle tentative et de backoff | | `plugin-sdk/channel-runtime-context` | Helpers génériques d’enregistrement et de recherche de contexte d’exécution de canal | | `plugin-sdk/runtime-store` | `createPluginRuntimeStore` | | `plugin-sdk/plugin-runtime` | Helpers partagés de commande/hook/http/interaction de plugin | - | `plugin-sdk/hook-runtime` | Helpers partagés de pipeline de Webhook/hook interne | - | `plugin-sdk/lazy-runtime` | Helpers d’import/liaison d’exécution paresseuse comme `createLazyRuntimeModule`, `createLazyRuntimeMethod` et `createLazyRuntimeSurface` | + | `plugin-sdk/hook-runtime` | Helpers partagés de pipeline de hook Webhook/interne | + | `plugin-sdk/lazy-runtime` | Helpers d’importation/liaison d’exécution paresseuse tels que `createLazyRuntimeModule`, `createLazyRuntimeMethod` et `createLazyRuntimeSurface` | | `plugin-sdk/process-runtime` | Helpers d’exécution de processus | - | `plugin-sdk/cli-runtime` | Helpers de formatage, d’attente et de version pour la CLI | - | `plugin-sdk/gateway-runtime` | Helpers de client Gateway et de correctif d’état de canal | + | `plugin-sdk/cli-runtime` | Helpers de formatage CLI, d’attente et de version | + | `plugin-sdk/gateway-runtime` | Helpers de client Gateway et de correctif de statut de canal | | `plugin-sdk/config-runtime` | Helpers de chargement/écriture de configuration | - | `plugin-sdk/telegram-command-config` | Normalisation des noms/descriptions de commandes Telegram et vérifications des doublons/conflits, même lorsque la surface de contrat Telegram intégrée n’est pas disponible | - | `plugin-sdk/text-autolink-runtime` | Détection d’autolien de référence de fichier sans le large barrel `text-runtime` | - | `plugin-sdk/approval-runtime` | Helpers d’approbation exec/plugin, constructeurs de capacité d’approbation, helpers d’authentification/de profil, helpers de routage/d’exécution natifs | - | `plugin-sdk/reply-runtime` | Helpers partagés d’exécution entrante/de réponse, découpage en blocs, distribution, Heartbeat, planificateur de réponse | - | `plugin-sdk/reply-dispatch-runtime` | Helpers ciblés de distribution/finalisation de réponse | - | `plugin-sdk/reply-history` | Helpers partagés d’historique de réponse sur courte fenêtre comme `buildHistoryContext`, `recordPendingHistoryEntry` et `clearHistoryEntriesIfEnabled` | + | `plugin-sdk/telegram-command-config` | Normalisation des noms/descriptions de commandes Telegram et vérifications de doublons/conflits, même lorsque la surface de contrat Telegram fournie n’est pas disponible | + | `plugin-sdk/text-autolink-runtime` | Détection d’autolien de référence de fichier sans le barrel `text-runtime` plus large | + | `plugin-sdk/approval-runtime` | Helpers d’approbation d’exécution/plugin, constructeurs de capacité d’approbation, helpers d’authentification/de profil, helpers natifs de routage/d’exécution | + | `plugin-sdk/reply-runtime` | Helpers partagés d’exécution entrante/de réponse, segmentation, distribution, Heartbeat, planificateur de réponse | + | `plugin-sdk/reply-dispatch-runtime` | Helpers étroits de distribution/finalisation de réponse | + | `plugin-sdk/reply-history` | Helpers partagés d’historique de réponse sur fenêtre courte tels que `buildHistoryContext`, `recordPendingHistoryEntry` et `clearHistoryEntriesIfEnabled` | | `plugin-sdk/reply-reference` | `createReplyReferencePlanner` | - | `plugin-sdk/reply-chunking` | Helpers ciblés de découpage de texte/Markdown | - | `plugin-sdk/session-store-runtime` | Helpers de chemin de stockage de session + `updated-at` | - | `plugin-sdk/state-paths` | Helpers de chemins de répertoire State/OAuth | - | `plugin-sdk/routing` | Helpers de route/clé de session/liaison de compte comme `resolveAgentRoute`, `buildAgentSessionKey` et `resolveDefaultAgentBoundAccountId` | - | `plugin-sdk/status-helpers` | Helpers partagés de résumé d’état de canal/compte, valeurs par défaut d’état d’exécution et helpers de métadonnées de problème | + | `plugin-sdk/reply-chunking` | Helpers étroits de segmentation texte/Markdown | + | `plugin-sdk/session-store-runtime` | Helpers de chemin du magasin de session + `updated-at` | + | `plugin-sdk/state-paths` | Helpers de chemin de répertoire d’état/OAuth | + | `plugin-sdk/routing` | Helpers de routage/clé de session/liaison de compte tels que `resolveAgentRoute`, `buildAgentSessionKey` et `resolveDefaultAgentBoundAccountId` | + | `plugin-sdk/status-helpers` | Helpers partagés de résumé de statut de canal/compte, valeurs par défaut d’état d’exécution et helpers de métadonnées de problème | | `plugin-sdk/target-resolver-runtime` | Helpers partagés de résolution de cible | | `plugin-sdk/string-normalization-runtime` | Helpers de normalisation de slug/chaîne | - | `plugin-sdk/request-url` | Extrait des URL chaîne depuis des entrées de type fetch/request | + | `plugin-sdk/request-url` | Extraire des URL sous forme de chaîne à partir d’entrées de type fetch/request | | `plugin-sdk/run-command` | Exécuteur de commande temporisé avec résultats stdout/stderr normalisés | | `plugin-sdk/param-readers` | Lecteurs de paramètres communs d’outil/CLI | - | `plugin-sdk/tool-payload` | Extrait des payloads normalisés depuis des objets de résultat d’outil | - | `plugin-sdk/tool-send` | Extrait les champs de cible d’envoi canoniques depuis les arguments d’outil | + | `plugin-sdk/tool-payload` | Extraire des payloads normalisés à partir d’objets de résultat d’outil | + | `plugin-sdk/tool-send` | Extraire les champs cibles canoniques d’envoi à partir des arguments d’outil | | `plugin-sdk/temp-path` | Helpers partagés de chemin de téléchargement temporaire | - | `plugin-sdk/logging-core` | Helpers de logger de sous-système et de masquage | + | `plugin-sdk/logging-core` | Helpers de logger de sous-système et de rédaction | | `plugin-sdk/markdown-table-runtime` | Helpers de mode de tableau Markdown | | `plugin-sdk/json-store` | Petits helpers de lecture/écriture d’état JSON | - | `plugin-sdk/file-lock` | Helpers de verrouillage de fichier réentrants | - | `plugin-sdk/persistent-dedupe` | Helpers de cache de déduplication adossé au disque | - | `plugin-sdk/acp-runtime` | Helpers ACP d’exécution/session et de distribution de réponse | - | `plugin-sdk/acp-binding-resolve-runtime` | Résolution en lecture seule des liaisons ACP sans imports de démarrage du cycle de vie | - | `plugin-sdk/agent-config-primitives` | Primitives ciblées de schéma de configuration d’exécution d’agent | - | `plugin-sdk/boolean-param` | Lecteur permissif de paramètre booléen | - | `plugin-sdk/dangerous-name-runtime` | Helpers de résolution de correspondance de noms dangereux | - | `plugin-sdk/device-bootstrap` | Helpers de bootstrap d’appareil et de jeton d’appairage | - | `plugin-sdk/extension-shared` | Primitives helpers partagées de canal passif, statut et proxy ambiant | - | `plugin-sdk/models-provider-runtime` | Helpers de réponse de commande `/models`/fournisseur | - | `plugin-sdk/skill-commands-runtime` | Helpers de listage des commandes Skills | + | `plugin-sdk/file-lock` | Helpers de verrou de fichier réentrant | + | `plugin-sdk/persistent-dedupe` | Helpers de cache de déduplication sur disque | + | `plugin-sdk/acp-runtime` | Helpers d’exécution/de session ACP et de distribution de réponse | + | `plugin-sdk/acp-binding-resolve-runtime` | Résolution en lecture seule de liaison ACP sans imports de démarrage du cycle de vie | + | `plugin-sdk/agent-config-primitives` | Primitives étroites de schéma de configuration d’exécution d’agent | + | `plugin-sdk/boolean-param` | Lecteur souple de paramètre booléen | + | `plugin-sdk/dangerous-name-runtime` | Helpers de résolution de correspondance de nom dangereux | + | `plugin-sdk/device-bootstrap` | Helpers d’amorçage d’appareil et de jeton d’appairage | + | `plugin-sdk/extension-shared` | Primitives helpers partagées pour canal passif, statut et proxy ambiant | + | `plugin-sdk/models-provider-runtime` | Helpers de réponse de fournisseur/de commande `/models` | + | `plugin-sdk/skill-commands-runtime` | Helpers de liste de commandes Skills | | `plugin-sdk/native-command-registry` | Helpers natifs de registre/construction/sérialisation de commandes | - | `plugin-sdk/agent-harness` | Surface expérimentale de plugin de confiance pour harnais d’agent de bas niveau : types de harnais, helpers de pilotage/abandon d’exécution active, helpers de pont d’outil OpenClaw et utilitaires de résultat de tentative | + | `plugin-sdk/agent-harness` | Surface expérimentale de plugin approuvé pour des harnais d’agent bas niveau : types de harnais, helpers de pilotage/abandon de run actif, helpers de pont d’outil OpenClaw et utilitaires de résultat de tentative | | `plugin-sdk/provider-zai-endpoint` | Helpers de détection de point de terminaison Z.A.I | | `plugin-sdk/infra-runtime` | Helpers d’événement système/Heartbeat | | `plugin-sdk/collection-runtime` | Petits helpers de cache borné | | `plugin-sdk/diagnostic-runtime` | Helpers de drapeau et d’événement de diagnostic | | `plugin-sdk/error-runtime` | Graphe d’erreurs, formatage, helpers partagés de classification d’erreurs, `isApprovalNotFoundError` | - | `plugin-sdk/fetch-runtime` | Helpers de fetch encapsulé, proxy et recherche épinglée | - | `plugin-sdk/runtime-fetch` | Fetch d’exécution sensible au dispatcher sans imports proxy/fetch protégé | - | `plugin-sdk/response-limit-runtime` | Lecteur borné de corps de réponse sans la large surface d’exécution média | - | `plugin-sdk/session-binding-runtime` | État de liaison de conversation actuelle sans routage de liaison configurée ni magasins d’appairage | - | `plugin-sdk/session-store-runtime` | Helpers de lecture du magasin de session sans imports larges d’écriture/de maintenance de configuration | - | `plugin-sdk/context-visibility-runtime` | Résolution de visibilité du contexte et filtrage de contexte supplémentaire sans imports larges de configuration/sécurité | - | `plugin-sdk/string-coerce-runtime` | Helpers ciblés de coercition et de normalisation de record/chaîne primitive sans imports Markdown/journalisation | + | `plugin-sdk/fetch-runtime` | Helpers de fetch encapsulé, de proxy et de recherche épinglée | + | `plugin-sdk/runtime-fetch` | Fetch d’exécution conscient du dispatcher sans imports de proxy/fetch protégé | + | `plugin-sdk/response-limit-runtime` | Lecteur borné de corps de réponse sans la surface d’exécution média plus large | + | `plugin-sdk/session-binding-runtime` | État actuel de liaison de conversation sans routage de liaison configurée ni magasins d’appairage | + | `plugin-sdk/session-store-runtime` | Helpers de lecture du magasin de session sans imports plus larges d’écriture/maintenance de configuration | + | `plugin-sdk/context-visibility-runtime` | Résolution de visibilité du contexte et filtrage de contexte supplémentaire sans imports plus larges de configuration/sécurité | + | `plugin-sdk/string-coerce-runtime` | Helpers étroits de coercition et de normalisation de record/chaîne primitive sans imports de Markdown/journalisation | | `plugin-sdk/host-runtime` | Helpers de normalisation de nom d’hôte et d’hôte SCP | - | `plugin-sdk/retry-runtime` | Helpers de configuration de nouvelle tentative et d’exécuteur de nouvelle tentative | + | `plugin-sdk/retry-runtime` | Helpers de configuration et d’exécuteur de nouvelle tentative | | `plugin-sdk/agent-runtime` | Helpers de répertoire/identité/espace de travail d’agent | - | `plugin-sdk/directory-runtime` | Requête/déduplication de répertoire adossée à la configuration | + | `plugin-sdk/directory-runtime` | Requête/déduplication de répertoire basée sur la configuration | | `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` | - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | - | `plugin-sdk/media-runtime` | Helpers partagés de récupération/transformation/stockage de médias, plus constructeurs de payload média | - | `plugin-sdk/media-generation-runtime` | Helpers partagés de basculement en cas d’échec pour la génération de médias, sélection de candidats et messages de modèle manquant | - | `plugin-sdk/media-understanding` | Types de fournisseur de compréhension de médias, plus exports helpers côté fournisseur pour image/audio | - | `plugin-sdk/text-runtime` | Helpers partagés de texte/Markdown/journalisation comme la suppression de texte visible par l’assistant, les helpers de rendu/découpage/tableau Markdown, les helpers de masquage, les helpers de balises de directive et les utilitaires de texte sûr | - | `plugin-sdk/text-chunking` | Helper de découpage de texte sortant | - | `plugin-sdk/speech` | Types de fournisseur Speech, plus helpers côté fournisseur pour directives, registre et validation | - | `plugin-sdk/speech-core` | Helpers partagés de types de fournisseur Speech, registre, directive et normalisation | + | `plugin-sdk/media-runtime` | Helpers partagés de fetch/transformation/stockage de médias ainsi que constructeurs de payload média | + | `plugin-sdk/media-generation-runtime` | Helpers partagés de basculement en cas d’échec de génération de médias, sélection de candidats et messagerie de modèle manquant | + | `plugin-sdk/media-understanding` | Types de fournisseur de compréhension de médias ainsi qu’exports helpers orientés fournisseur pour image/audio | + | `plugin-sdk/text-runtime` | Helpers partagés de texte/Markdown/journalisation tels que suppression du texte visible par l’assistant, helpers de rendu/segmentation/tableau Markdown, helpers de rédaction, helpers de balises de directive et utilitaires de texte sûr | + | `plugin-sdk/text-chunking` | Helper de segmentation de texte sortant | + | `plugin-sdk/speech` | Types de fournisseur Speech ainsi qu’helpers orientés fournisseur de directive, registre et validation | + | `plugin-sdk/speech-core` | Types partagés de fournisseur Speech, helpers de registre, de directive et de normalisation | | `plugin-sdk/realtime-transcription` | Types de fournisseur de transcription en temps réel et helpers de registre | | `plugin-sdk/realtime-voice` | Types de fournisseur de voix en temps réel et helpers de registre | - | `plugin-sdk/image-generation` | Types de fournisseur de génération d’image | - | `plugin-sdk/image-generation-core` | Helpers partagés de types, basculement en cas d’échec, authentification et registre pour la génération d’image | - | `plugin-sdk/music-generation` | Types de fournisseur/requête/résultat pour la génération musicale | - | `plugin-sdk/music-generation-core` | Helpers partagés de types, basculement en cas d’échec, recherche de fournisseur et analyse de `model-ref` pour la génération musicale | - | `plugin-sdk/video-generation` | Types de fournisseur/requête/résultat pour la génération vidéo | - | `plugin-sdk/video-generation-core` | Helpers partagés de types, basculement en cas d’échec, recherche de fournisseur et analyse de `model-ref` pour la génération vidéo | - | `plugin-sdk/webhook-targets` | Registre de cibles Webhook et helpers d’installation de route | + | `plugin-sdk/image-generation` | Types de fournisseur de génération d’images | + | `plugin-sdk/image-generation-core` | Types partagés de génération d’images, helpers de basculement en cas d’échec, d’authentification et de registre | + | `plugin-sdk/music-generation` | Types de fournisseur/de requête/de résultat de génération musicale | + | `plugin-sdk/music-generation-core` | Types partagés de génération musicale, helpers de basculement en cas d’échec, recherche de fournisseur et analyse de référence de modèle | + | `plugin-sdk/video-generation` | Types de fournisseur/de requête/de résultat de génération vidéo | + | `plugin-sdk/video-generation-core` | Types partagés de génération vidéo, helpers de basculement en cas d’échec, recherche de fournisseur et analyse de référence de modèle | + | `plugin-sdk/webhook-targets` | Registre de cibles Webhook et helpers d’installation de routes | | `plugin-sdk/webhook-path` | Helpers de normalisation de chemin Webhook | | `plugin-sdk/web-media` | Helpers partagés de chargement de médias distants/locaux | | `plugin-sdk/zod` | `zod` réexporté pour les consommateurs du SDK Plugin | @@ -280,40 +281,40 @@ en promeut explicitement un comme public. - | Sous-chemin | Exportations principales | + | Sous-chemin | Exportations clés | | --- | --- | - | `plugin-sdk/memory-core` | Surface helper `memory-core` intégrée pour les helpers de gestionnaire/configuration/fichier/CLI | + | `plugin-sdk/memory-core` | Surface helper `memory-core` fournie pour les helpers de gestionnaire/configuration/fichier/CLI | | `plugin-sdk/memory-core-engine-runtime` | Façade d’exécution d’indexation/recherche mémoire | - | `plugin-sdk/memory-core-host-engine-foundation` | Exports du moteur de fondation hôte mémoire | - | `plugin-sdk/memory-core-host-engine-embeddings` | Contrats d’embeddings hôte mémoire, accès au registre, fournisseur local et helpers génériques de lot/distants | - | `plugin-sdk/memory-core-host-engine-qmd` | Exports du moteur QMD hôte mémoire | - | `plugin-sdk/memory-core-host-engine-storage` | Exports du moteur de stockage hôte mémoire | - | `plugin-sdk/memory-core-host-multimodal` | Helpers multimodaux hôte mémoire | - | `plugin-sdk/memory-core-host-query` | Helpers de requête hôte mémoire | - | `plugin-sdk/memory-core-host-secret` | Helpers de secret hôte mémoire | - | `plugin-sdk/memory-core-host-events` | Helpers de journal d’événements hôte mémoire | - | `plugin-sdk/memory-core-host-status` | Helpers d’état hôte mémoire | - | `plugin-sdk/memory-core-host-runtime-cli` | Helpers d’exécution CLI hôte mémoire | - | `plugin-sdk/memory-core-host-runtime-core` | Helpers d’exécution cœur hôte mémoire | - | `plugin-sdk/memory-core-host-runtime-files` | Helpers de fichier/d’exécution hôte mémoire | - | `plugin-sdk/memory-host-core` | Alias neutre vis-à-vis du fournisseur pour les helpers d’exécution cœur hôte mémoire | - | `plugin-sdk/memory-host-events` | Alias neutre vis-à-vis du fournisseur pour les helpers de journal d’événements hôte mémoire | - | `plugin-sdk/memory-host-files` | Alias neutre vis-à-vis du fournisseur pour les helpers de fichier/d’exécution hôte mémoire | - | `plugin-sdk/memory-host-markdown` | Helpers partagés de Markdown géré pour les plugins liés à la mémoire | + | `plugin-sdk/memory-core-host-engine-foundation` | Exports du moteur de fondation hôte de la mémoire | + | `plugin-sdk/memory-core-host-engine-embeddings` | Contrats d’embeddings de l’hôte mémoire, accès au registre, fournisseur local et helpers génériques par lot/à distance | + | `plugin-sdk/memory-core-host-engine-qmd` | Exports du moteur QMD de l’hôte mémoire | + | `plugin-sdk/memory-core-host-engine-storage` | Exports du moteur de stockage de l’hôte mémoire | + | `plugin-sdk/memory-core-host-multimodal` | Helpers multimodaux de l’hôte mémoire | + | `plugin-sdk/memory-core-host-query` | Helpers de requête de l’hôte mémoire | + | `plugin-sdk/memory-core-host-secret` | Helpers de secret de l’hôte mémoire | + | `plugin-sdk/memory-core-host-events` | Helpers du journal d’événements de l’hôte mémoire | + | `plugin-sdk/memory-core-host-status` | Helpers de statut de l’hôte mémoire | + | `plugin-sdk/memory-core-host-runtime-cli` | Helpers d’exécution CLI de l’hôte mémoire | + | `plugin-sdk/memory-core-host-runtime-core` | Helpers d’exécution cœur de l’hôte mémoire | + | `plugin-sdk/memory-core-host-runtime-files` | Helpers de fichier/d’exécution de l’hôte mémoire | + | `plugin-sdk/memory-host-core` | Alias neutre vis-à-vis du fournisseur pour les helpers d’exécution cœur de l’hôte mémoire | + | `plugin-sdk/memory-host-events` | Alias neutre vis-à-vis du fournisseur pour les helpers du journal d’événements de l’hôte mémoire | + | `plugin-sdk/memory-host-files` | Alias neutre vis-à-vis du fournisseur pour les helpers de fichier/d’exécution de l’hôte mémoire | + | `plugin-sdk/memory-host-markdown` | Helpers partagés de Markdown géré pour les plugins adjacents à la mémoire | | `plugin-sdk/memory-host-search` | Façade d’exécution Active Memory pour l’accès au gestionnaire de recherche | - | `plugin-sdk/memory-host-status` | Alias neutre vis-à-vis du fournisseur pour les helpers d’état hôte mémoire | - | `plugin-sdk/memory-lancedb` | Surface helper `memory-lancedb` intégrée | + | `plugin-sdk/memory-host-status` | Alias neutre vis-à-vis du fournisseur pour les helpers de statut de l’hôte mémoire | + | `plugin-sdk/memory-lancedb` | Surface helper `memory-lancedb` fournie | - + | Famille | Sous-chemins actuels | Usage prévu | | --- | --- | --- | - | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Helpers de prise en charge du Plugin browser intégré (`browser-support` reste le barrel de compatibilité) | - | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Surface helper/d’exécution Matrix intégrée | - | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Surface helper/d’exécution LINE intégrée | - | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Surface helper IRC intégrée | - | Helpers spécifiques aux canaux | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Points d’entrée de compatibilité/helper de canaux intégrés | - | Helpers spécifiques à l’authentification/au plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Points d’entrée helper de fonctionnalité/plugin intégrés ; `plugin-sdk/github-copilot-token` exporte actuellement `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` et `resolveCopilotApiToken` | + | Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Helpers de prise en charge du plugin Browser fourni (`browser-support` reste le barrel de compatibilité) | + | Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Surface helper/d’exécution Matrix fournie | + | Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Surface helper/d’exécution LINE fournie | + | IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Surface helper IRC fournie | + | Helpers spécifiques aux canaux | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Points d’accès de compatibilité/helper de canaux fournis | + | Helpers spécifiques à l’authentification/au plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Points d’accès helper de fonctionnalité/plugin fournis ; `plugin-sdk/github-copilot-token` exporte actuellement `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` et `resolveCopilotApiToken` | @@ -322,19 +323,19 @@ en promeut explicitement un comme public. Le callback `register(api)` reçoit un objet `OpenClawPluginApi` avec ces méthodes : -### Enregistrement de capacités +### Enregistrement des capacités | Méthode | Ce qu’elle enregistre | | ------------------------------------------------ | -------------------------------------- | | `api.registerProvider(...)` | Inférence de texte (LLM) | -| `api.registerAgentHarness(...)` | Exécuteur d’agent expérimental de bas niveau | -| `api.registerCliBackend(...)` | Backend local d’inférence CLI | +| `api.registerAgentHarness(...)` | Exécuteur d’agent bas niveau expérimental | +| `api.registerCliBackend(...)` | Backend d’inférence CLI local | | `api.registerChannel(...)` | Canal de messagerie | -| `api.registerSpeechProvider(...)` | Synthèse texte-parole / STT | +| `api.registerSpeechProvider(...)` | Synthèse texte-vers-parole / STT | | `api.registerRealtimeTranscriptionProvider(...)` | Transcription temps réel en streaming | | `api.registerRealtimeVoiceProvider(...)` | Sessions vocales temps réel duplex | -| `api.registerMediaUnderstandingProvider(...)` | Analyse d’images/audio/vidéo | -| `api.registerImageGenerationProvider(...)` | Génération d’image | +| `api.registerMediaUnderstandingProvider(...)` | Analyse d’image/audio/vidéo | +| `api.registerImageGenerationProvider(...)` | Génération d’images | | `api.registerMusicGenerationProvider(...)` | Génération musicale | | `api.registerVideoGenerationProvider(...)` | Génération vidéo | | `api.registerWebFetchProvider(...)` | Fournisseur de récupération / scraping web | @@ -349,32 +350,32 @@ méthodes : ### Infrastructure -| Méthode | Ce qu’elle enregistre | -| ---------------------------------------------- | ------------------------------------- | -| `api.registerHook(events, handler, opts?)` | Hook d’événement | -| `api.registerHttpRoute(params)` | Point de terminaison HTTP Gateway | -| `api.registerGatewayMethod(name, handler)` | Méthode RPC Gateway | -| `api.registerCli(registrar, opts?)` | Sous-commande CLI | -| `api.registerService(service)` | Service d’arrière-plan | -| `api.registerInteractiveHandler(registration)` | Gestionnaire interactif | -| `api.registerMemoryPromptSupplement(builder)` | Section additive de prompt liée à la mémoire | +| Méthode | Ce qu’elle enregistre | +| ---------------------------------------------- | -------------------------------------- | +| `api.registerHook(events, handler, opts?)` | Hook d’événement | +| `api.registerHttpRoute(params)` | Point de terminaison HTTP Gateway | +| `api.registerGatewayMethod(name, handler)` | Méthode RPC Gateway | +| `api.registerCli(registrar, opts?)` | Sous-commande CLI | +| `api.registerService(service)` | Service d’arrière-plan | +| `api.registerInteractiveHandler(registration)` | Gestionnaire interactif | +| `api.registerMemoryPromptSupplement(builder)` | Section de prompt additive adjacente à la mémoire | | `api.registerMemoryCorpusSupplement(adapter)` | Corpus additif de recherche/lecture mémoire | -Les espaces de noms d’administration du cœur réservés (`config.*`, `exec.approvals.*`, `wizard.*`, -`update.*`) restent toujours `operator.admin`, même si un plugin tente -d’attribuer une portée de méthode Gateway plus étroite. Préférez des préfixes spécifiques au plugin pour les -méthodes possédées par le plugin. +Les espaces de noms d’administration cœur réservés (`config.*`, `exec.approvals.*`, `wizard.*`, +`update.*`) restent toujours `operator.admin`, même si un plugin tente d’assigner une +portée de méthode Gateway plus étroite. Préférez des préfixes spécifiques au plugin pour les +méthodes appartenant au plugin. ### Métadonnées d’enregistrement CLI -`api.registerCli(registrar, opts?)` accepte deux types de métadonnées de premier niveau : +`api.registerCli(registrar, opts?)` accepte deux types de métadonnées de niveau supérieur : -- `commands` : racines de commande explicites possédées par le registrar -- `descriptors` : descripteurs de commande au moment de l’analyse utilisés pour l’aide de la CLI racine, - le routage et l’enregistrement paresseux de CLI de plugin +- `commands` : racines de commandes explicites appartenant au registrar +- `descriptors` : descripteurs de commandes au moment de l’analyse utilisés pour l’aide CLI racine, + le routage et l’enregistrement paresseux de la CLI du plugin -Si vous voulez qu’une commande de plugin reste chargée à la demande dans le chemin normal de la CLI racine, -fournissez des `descriptors` qui couvrent chaque racine de commande de premier niveau exposée par ce +Si vous voulez qu’une commande de plugin reste chargée paresseusement dans le chemin CLI racine normal, +fournissez des `descriptors` qui couvrent chaque racine de commande de niveau supérieur exposée par ce registrar. ```typescript @@ -395,50 +396,50 @@ api.registerCli( ); ``` -Utilisez `commands` seul uniquement lorsque vous n’avez pas besoin d’un enregistrement paresseux dans la CLI racine. -Ce chemin de compatibilité chargé de manière anticipée reste pris en charge, mais il n’installe pas -de placeholders adossés à des descripteurs pour le chargement paresseux au moment de l’analyse. +Utilisez `commands` seul uniquement lorsque vous n’avez pas besoin d’un enregistrement CLI racine paresseux. +Ce chemin de compatibilité eager reste pris en charge, mais il n’installe pas de +placeholders appuyés par des descripteurs pour le chargement paresseux au moment de l’analyse. -### Enregistrement de backend CLI +### Enregistrement du backend CLI -`api.registerCliBackend(...)` permet à un plugin de posséder la configuration par défaut pour un -backend CLI IA local tel que `codex-cli`. +`api.registerCliBackend(...)` permet à un plugin de posséder la configuration par défaut d’un backend CLI IA local +tel que `codex-cli`. -- Le `id` du backend devient le préfixe du fournisseur dans des références de modèle comme `codex-cli/gpt-5`. -- Le `config` du backend utilise la même forme que `agents.defaults.cliBackends.`. +- Le `id` du backend devient le préfixe de fournisseur dans des références de modèle comme `codex-cli/gpt-5`. +- La `config` du backend utilise la même forme que `agents.defaults.cliBackends.`. - La configuration utilisateur garde la priorité. OpenClaw fusionne `agents.defaults.cliBackends.` par-dessus la valeur par défaut du plugin avant d’exécuter la CLI. - Utilisez `normalizeConfig` lorsqu’un backend a besoin de réécritures de compatibilité après fusion (par exemple pour normaliser d’anciennes formes de drapeaux). -### Slots exclusifs +### Emplacements exclusifs -| Méthode | Ce qu’elle enregistre | -| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Méthode | Ce qu’elle enregistre | +| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `api.registerContextEngine(id, factory)` | Moteur de contexte (un seul actif à la fois). Le callback `assemble()` reçoit `availableTools` et `citationsMode` afin que le moteur puisse adapter les ajouts au prompt. | -| `api.registerMemoryCapability(capability)` | Capacité mémoire unifiée | -| `api.registerMemoryPromptSection(builder)` | Constructeur de section de prompt mémoire | -| `api.registerMemoryFlushPlan(resolver)` | Résolveur de plan de vidage mémoire | -| `api.registerMemoryRuntime(runtime)` | Adaptateur d’exécution mémoire | +| `api.registerMemoryCapability(capability)` | Capacité mémoire unifiée | +| `api.registerMemoryPromptSection(builder)` | Constructeur de section de prompt mémoire | +| `api.registerMemoryFlushPlan(resolver)` | Résolveur de plan de vidage mémoire | +| `api.registerMemoryRuntime(runtime)` | Adaptateur d’exécution mémoire | -### Adaptateurs d’embeddings mémoire +### Adaptateurs d’embedding mémoire | Méthode | Ce qu’elle enregistre | | ---------------------------------------------- | --------------------------------------------- | -| `api.registerMemoryEmbeddingProvider(adapter)` | Adaptateur d’embeddings mémoire pour le plugin actif | +| `api.registerMemoryEmbeddingProvider(adapter)` | Adaptateur d’embedding mémoire pour le plugin actif | -- `registerMemoryCapability` est l’API exclusive préférée pour les plugins mémoire. +- `registerMemoryCapability` est l’API exclusive de plugin mémoire préférée. - `registerMemoryCapability` peut aussi exposer `publicArtifacts.listArtifacts(...)` afin que des plugins compagnons puissent consommer des artefacts mémoire exportés via - `openclaw/plugin-sdk/memory-host-core` au lieu d’atteindre la disposition privée - d’un plugin mémoire spécifique. + `openclaw/plugin-sdk/memory-host-core` au lieu d’atteindre la disposition privée d’un + plugin mémoire spécifique. - `registerMemoryPromptSection`, `registerMemoryFlushPlan` et `registerMemoryRuntime` sont des API exclusives de plugin mémoire compatibles avec l’héritage. - `registerMemoryEmbeddingProvider` permet au plugin mémoire actif d’enregistrer un - ou plusieurs identifiants d’adaptateur d’embeddings (par exemple `openai`, `gemini` ou un identifiant personnalisé - défini par le plugin). -- La configuration utilisateur, comme `agents.defaults.memorySearch.provider` et - `agents.defaults.memorySearch.fallback`, se résout par rapport à ces identifiants d’adaptateur enregistrés. + ou plusieurs identifiants d’adaptateur d’embedding (par exemple `openai`, `gemini` ou un identifiant + personnalisé défini par le plugin). +- La configuration utilisateur telle que `agents.defaults.memorySearch.provider` et + `agents.defaults.memorySearch.fallback` se résout par rapport à ces identifiants d’adaptateur enregistrés. ### Événements et cycle de vie @@ -450,61 +451,60 @@ backend CLI IA local tel que `codex-cli`. ### Sémantique de décision des hooks - `before_tool_call` : retourner `{ block: true }` est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés. -- `before_tool_call` : retourner `{ block: false }` est traité comme aucune décision (identique à l’omission de `block`), et non comme une substitution. +- `before_tool_call` : retourner `{ block: false }` est traité comme aucune décision (identique à l’omission de `block`), et non comme une surcharge. - `before_install` : retourner `{ block: true }` est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés. -- `before_install` : retourner `{ block: false }` est traité comme aucune décision (identique à l’omission de `block`), et non comme une substitution. -- `reply_dispatch` : retourner `{ handled: true, ... }` est terminal. Dès qu’un gestionnaire revendique la distribution, les gestionnaires de priorité inférieure et le chemin par défaut de distribution du modèle sont ignorés. +- `before_install` : retourner `{ block: false }` est traité comme aucune décision (identique à l’omission de `block`), et non comme une surcharge. +- `reply_dispatch` : retourner `{ handled: true, ... }` est terminal. Dès qu’un gestionnaire revendique la distribution, les gestionnaires de priorité inférieure et le chemin de distribution par défaut du modèle sont ignorés. - `message_sending` : retourner `{ cancel: true }` est terminal. Dès qu’un gestionnaire le définit, les gestionnaires de priorité inférieure sont ignorés. -- `message_sending` : retourner `{ cancel: false }` est traité comme aucune décision (identique à l’omission de `cancel`), et non comme une substitution. +- `message_sending` : retourner `{ cancel: false }` est traité comme aucune décision (identique à l’omission de `cancel`), et non comme une surcharge. ### Champs de l’objet API -| Champ | Type | Description | -| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- | -| `api.id` | `string` | ID du plugin | -| `api.name` | `string` | Nom d’affichage | -| `api.version` | `string?` | Version du plugin (facultative) | -| `api.description` | `string?` | Description du plugin (facultative) | -| `api.source` | `string` | Chemin source du plugin | -| `api.rootDir` | `string?` | Répertoire racine du plugin (facultatif) | -| `api.config` | `OpenClawConfig` | Instantané de configuration actuel (instantané d’exécution en mémoire actif lorsqu’il est disponible) | -| `api.pluginConfig` | `Record` | Configuration spécifique au plugin provenant de `plugins.entries..config` | -| `api.runtime` | `PluginRuntime` | [Helpers d’exécution](/fr/plugins/sdk-runtime) | -| `api.logger` | `PluginLogger` | Logger à portée limitée (`debug`, `info`, `warn`, `error`) | +| Champ | Type | Description | +| ------------------------ | ------------------------- | -------------------------------------------------------------------------------------------- | +| `api.id` | `string` | Identifiant du plugin | +| `api.name` | `string` | Nom d’affichage | +| `api.version` | `string?` | Version du plugin (facultatif) | +| `api.description` | `string?` | Description du plugin (facultatif) | +| `api.source` | `string` | Chemin source du plugin | +| `api.rootDir` | `string?` | Répertoire racine du plugin (facultatif) | +| `api.config` | `OpenClawConfig` | Instantané actuel de la configuration (instantané actif en mémoire à l’exécution lorsqu’il est disponible) | +| `api.pluginConfig` | `Record` | Configuration spécifique au plugin provenant de `plugins.entries..config` | +| `api.runtime` | `PluginRuntime` | [Helpers d’exécution](/fr/plugins/sdk-runtime) | +| `api.logger` | `PluginLogger` | Logger à portée limitée (`debug`, `info`, `warn`, `error`) | | `api.registrationMode` | `PluginRegistrationMode` | Mode de chargement actuel ; `"setup-runtime"` est la fenêtre légère de démarrage/configuration avant l’entrée complète | -| `api.resolvePath(input)` | `(string) => string` | Résoudre un chemin relatif à la racine du plugin | +| `api.resolvePath(input)` | `(string) => string` | Résoudre un chemin relatif à la racine du plugin | ## Convention de module interne Dans votre plugin, utilisez des fichiers barrel locaux pour les imports internes : -``` +```text my-plugin/ api.ts # Exports publics pour les consommateurs externes runtime-api.ts # Exports d’exécution internes uniquement index.ts # Point d’entrée du plugin - setup-entry.ts # Entrée légère pour configuration uniquement (facultatif) + setup-entry.ts # Entrée légère pour la configuration uniquement (facultatif) ``` N’importez jamais votre propre plugin via `openclaw/plugin-sdk/` - depuis le code de production. Faites passer les imports internes via `./api.ts` ou + depuis du code de production. Faites passer les imports internes par `./api.ts` ou `./runtime-api.ts`. Le chemin SDK est uniquement le contrat externe. -Les surfaces publiques de plugins intégrés chargées via façade (`api.ts`, `runtime-api.ts`, -`index.ts`, `setup-entry.ts` et fichiers d’entrée publics similaires) privilégient désormais l’instantané -de configuration d’exécution actif lorsque OpenClaw est déjà en cours d’exécution. Si aucun instantané -d’exécution n’existe encore, elles reviennent au fichier de configuration résolu sur disque. +Les surfaces publiques des plugins fournis chargées via façade (`api.ts`, `runtime-api.ts`, +`index.ts`, `setup-entry.ts` et fichiers d’entrée publics similaires) préfèrent maintenant +l’instantané actif de la configuration d’exécution quand OpenClaw est déjà en cours d’exécution. Si aucun instantané d’exécution +n’existe encore, elles reviennent au fichier de configuration résolu sur disque. Les plugins de fournisseur peuvent également exposer un barrel de contrat local au plugin et étroit lorsqu’un -helper est volontairement spécifique au fournisseur et n’a pas encore sa place dans un sous-chemin SDK -générique. Exemple intégré actuel : le fournisseur Anthropic conserve ses helpers de flux Claude -dans son propre point d’entrée public `api.ts` / `contract-api.ts` au lieu de -promouvoir la logique d’en-tête bêta Anthropic et `service_tier` dans un contrat +helper est intentionnellement spécifique au fournisseur et n’a pas encore sa place dans un sous-chemin SDK générique. Exemple actuel fourni : le fournisseur Anthropic conserve ses helpers de flux Claude +dans son propre point d’accès public `api.ts` / `contract-api.ts` au lieu de +promouvoir la logique d’en-tête bêta Anthropic et `service_tier` vers un contrat générique `plugin-sdk/*`. -Autres exemples intégrés actuels : +Autres exemples actuels fournis : - `@openclaw/openai-provider` : `api.ts` exporte des constructeurs de fournisseur, des helpers de modèle par défaut et des constructeurs de fournisseur temps réel @@ -512,17 +512,17 @@ Autres exemples intégrés actuels : des helpers d’intégration/de configuration - Le code de production d’extension doit également éviter les imports `openclaw/plugin-sdk/`. + Le code de production des extensions doit également éviter les imports `openclaw/plugin-sdk/`. Si un helper est réellement partagé, promouvez-le vers un sous-chemin SDK neutre tel que `openclaw/plugin-sdk/speech`, `.../provider-model-shared` ou une autre - surface orientée capacité au lieu de coupler deux plugins entre eux. + surface orientée capacité au lieu de coupler deux plugins ensemble. -## Lié +## Liens associés -- [Points d’entrée](/fr/plugins/sdk-entrypoints) — options `definePluginEntry` et `defineChannelPluginEntry` +- [Points d’entrée](/fr/plugins/sdk-entrypoints) — options de `definePluginEntry` et `defineChannelPluginEntry` - [Helpers d’exécution](/fr/plugins/sdk-runtime) — référence complète de l’espace de noms `api.runtime` -- [Configuration et config](/fr/plugins/sdk-setup) — empaquetage, manifestes, schémas de configuration +- [Configuration et config](/fr/plugins/sdk-setup) — packaging, manifestes, schémas de configuration - [Tests](/fr/plugins/sdk-testing) — utilitaires de test et règles de lint - [Migration du SDK](/fr/plugins/sdk-migration) — migration depuis des surfaces obsolètes -- [Internes des plugins](/fr/plugins/architecture) — architecture approfondie et modèle de capacité +- [Internes des plugins](/fr/plugins/architecture) — architecture détaillée et modèle de capacité diff --git a/docs/fr/providers/google.md b/docs/fr/providers/google.md index f3812cca3..f04a1a04f 100644 --- a/docs/fr/providers/google.md +++ b/docs/fr/providers/google.md @@ -1,22 +1,22 @@ --- read_when: - Vous souhaitez utiliser les modèles Google Gemini avec OpenClaw - - Vous avez besoin de la clé API ou du flux d’authentification OAuth -summary: Configuration de Google Gemini (clé API + OAuth, génération d’images, compréhension des médias, synthèse vocale, recherche Web) + - Vous avez besoin du flux d’authentification par clé API ou OAuth +summary: Configuration de Google Gemini (clé API + OAuth, génération d’images, compréhension des médias, TTS, recherche Web) title: Google (Gemini) x-i18n: - generated_at: "2026-04-16T06:56:56Z" + generated_at: "2026-04-19T01:11:31Z" model: gpt-5.4 provider: openai - source_hash: ec2d62855f5e80efda758aad71bcaa95c38b1e41761fa1100d47a06c62881419 + source_hash: e5e055b02cc51899e11836a882f1f981fedfa5c4dbe42261ac2f2eba5e4d707c source_path: providers/google.md workflow: 15 --- # Google (Gemini) -Le Plugin Google fournit un accès aux modèles Gemini via Google AI Studio, ainsi qu’à la -génération d’images, à la compréhension des médias (image/audio/vidéo), à la synthèse vocale et à la recherche Web via +Le Plugin Google fournit l’accès aux modèles Gemini via Google AI Studio, ainsi que la +génération d’images, la compréhension des médias (image/audio/vidéo), la synthèse vocale et la recherche Web via Gemini Grounding. - Fournisseur : `google` @@ -24,21 +24,21 @@ Gemini Grounding. - API : API Google Gemini - Fournisseur alternatif : `google-gemini-cli` (OAuth) -## Premiers pas +## Prise en main Choisissez votre méthode d’authentification préférée et suivez les étapes de configuration. - + **Idéal pour :** l’accès standard à l’API Gemini via Google AI Studio. - + ```bash openclaw onboard --auth-choice gemini-api-key ``` - Ou passez la clé directement : + Ou transmettez la clé directement : ```bash openclaw onboard --non-interactive \ @@ -47,7 +47,7 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes --gemini-api-key "$GEMINI_API_KEY" ``` - + ```json5 { agents: { @@ -58,7 +58,7 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes } ``` - + ```bash openclaw models list --provider google ``` @@ -66,13 +66,13 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes - Les variables d’environnement `GEMINI_API_KEY` et `GOOGLE_API_KEY` sont toutes les deux acceptées. Utilisez celle que vous avez déjà configurée. + Les variables d’environnement `GEMINI_API_KEY` et `GOOGLE_API_KEY` sont toutes deux acceptées. Utilisez celle que vous avez déjà configurée. - **Idéal pour :** réutiliser une connexion Gemini CLI existante via OAuth PKCE au lieu d’une clé API distincte. + **Idéal pour :** réutiliser une connexion Gemini CLI existante via OAuth PKCE plutôt qu’une clé API distincte. Le fournisseur `google-gemini-cli` est une intégration non officielle. Certains utilisateurs @@ -80,7 +80,7 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes - + La commande locale `gemini` doit être disponible dans le `PATH`. ```bash @@ -91,15 +91,15 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes npm install -g @google/gemini-cli ``` - OpenClaw prend en charge les installations Homebrew et les installations npm globales, y compris - les dispositions Windows/npm courantes. + OpenClaw prend en charge à la fois les installations Homebrew et les installations npm globales, y compris + les dispositions courantes sous Windows/npm. - + ```bash openclaw models auth login --provider google-gemini-cli --set-default ``` - + ```bash openclaw models list --provider google-gemini-cli ``` @@ -117,38 +117,43 @@ Choisissez votre méthode d’authentification préférée et suivez les étapes (Ou les variantes `GEMINI_CLI_*`.) - Si les requêtes OAuth de Gemini CLI échouent après la connexion, définissez `GOOGLE_CLOUD_PROJECT` ou - `GOOGLE_CLOUD_PROJECT_ID` sur l’hôte Gateway, puis réessayez. + Si les requêtes OAuth Gemini CLI échouent après la connexion, définissez `GOOGLE_CLOUD_PROJECT` ou + `GOOGLE_CLOUD_PROJECT_ID` sur l’hôte Gateway et réessayez. - Si la connexion échoue avant le démarrage du flux dans le navigateur, assurez-vous que la commande locale `gemini` + Si la connexion échoue avant le démarrage du flux du navigateur, assurez-vous que la commande locale `gemini` est installée et disponible dans le `PATH`. - Le fournisseur `google-gemini-cli`, uniquement OAuth, est une surface distincte - d’inférence de texte. La génération d’images, la compréhension des médias et Gemini Grounding restent sur - l’id de fournisseur `google`. + Le fournisseur `google-gemini-cli`, limité à OAuth, est une surface + distincte d’inférence de texte. La génération d’images, la compréhension des médias et Gemini Grounding restent sur + l’identifiant de fournisseur `google`. ## Capacités -| Capacité | Pris en charge | -| ---------------------------- | ----------------- | -| Complétions de chat | Oui | -| Génération d’images | Oui | -| Génération musicale | Oui | -| Synthèse vocale | Oui | -| Compréhension d’images | Oui | -| Transcription audio | Oui | -| Compréhension vidéo | Oui | -| Recherche Web (Grounding) | Oui | -| Thinking/raisonnement | Oui (Gemini 3.1+) | -| Modèles Gemma 4 | Oui | +| Capacité | Pris en charge | +| -------------------------- | ------------------------------ | +| Complétions de chat | Oui | +| Génération d’images | Oui | +| Génération de musique | Oui | +| Synthèse vocale | Oui | +| Compréhension d’images | Oui | +| Transcription audio | Oui | +| Compréhension vidéo | Oui | +| Recherche Web (Grounding) | Oui | +| Thinking/reasoning | Oui (Gemini 2.5+ / Gemini 3+) | +| Modèles Gemma 4 | Oui | +Les modèles Gemini 3 utilisent `thinkingLevel` plutôt que `thinkingBudget`. OpenClaw mappe +les contrôles de raisonnement de Gemini 3, Gemini 3.1 et de l’alias `gemini-*-latest` vers +`thinkingLevel` afin que les exécutions par défaut/à faible latence n’envoient pas de valeurs +`thinkingBudget` désactivées. + Les modèles Gemma 4 (par exemple `gemma-4-26b-a4b-it`) prennent en charge le mode thinking. OpenClaw réécrit `thinkingBudget` en un `thinkingLevel` Google pris en charge pour Gemma 4. Définir thinking sur `off` conserve la désactivation de thinking au lieu de le mapper sur @@ -157,7 +162,7 @@ Définir thinking sur `off` conserve la désactivation de thinking au lieu de le ## Génération d’images -Le fournisseur groupé de génération d’images `google` utilise par défaut +Le fournisseur de génération d’images `google` intégré utilise par défaut `google/gemini-3.1-flash-image-preview`. - Prend aussi en charge `google/gemini-3-pro-image-preview` @@ -185,11 +190,11 @@ Voir [Image Generation](/fr/tools/image-generation) pour les paramètres d’out ## Génération vidéo -Le Plugin groupé `google` enregistre également la génération vidéo via l’outil partagé +Le Plugin `google` intégré enregistre également la génération vidéo via l’outil partagé `video_generate`. - Modèle vidéo par défaut : `google/veo-3.1-fast-generate-preview` -- Modes : texte vers vidéo, image vers vidéo et flux de référence à vidéo unique +- Modes : texte vers vidéo, image vers vidéo et flux à référence vidéo unique - Prend en charge `aspectRatio`, `resolution` et `audio` - Limite actuelle de durée : **4 à 8 secondes** @@ -211,17 +216,17 @@ Pour utiliser Google comme fournisseur vidéo par défaut : Voir [Video Generation](/fr/tools/video-generation) pour les paramètres d’outil partagés, la sélection du fournisseur et le comportement de basculement. -## Génération musicale +## Génération de musique -Le Plugin groupé `google` enregistre également la génération musicale via l’outil partagé +Le Plugin `google` intégré enregistre également la génération de musique via l’outil partagé `music_generate`. - Modèle musical par défaut : `google/lyria-3-clip-preview` - Prend aussi en charge `google/lyria-3-pro-preview` -- Contrôles d’invite : `lyrics` et `instrumental` +- Contrôles de prompt : `lyrics` et `instrumental` - Format de sortie : `mp3` par défaut, plus `wav` sur `google/lyria-3-pro-preview` - Entrées de référence : jusqu’à 10 images -- Les exécutions adossées à une session se détachent via le flux partagé de tâche/statut, y compris `action: "status"` +- Les exécutions adossées à une session se détachent via le flux partagé tâche/statut, y compris `action: "status"` Pour utiliser Google comme fournisseur musical par défaut : @@ -243,13 +248,13 @@ Voir [Music Generation](/fr/tools/music-generation) pour les paramètres d’out ## Synthèse vocale -Le fournisseur vocal groupé `google` utilise le chemin TTS de l’API Gemini avec +Le fournisseur vocal `google` intégré utilise le chemin TTS de l’API Gemini avec `gemini-3.1-flash-tts-preview`. - Voix par défaut : `Kore` -- Authentification : `messages.tts.providers.google.apiKey`, `models.providers.google.apiKey`, `GEMINI_API_KEY` ou `GOOGLE_API_KEY` +- Authentification : `messages.tts.providers.google.apiKey`, `models.providers.google.apiKey`, `GEMINI_API_KEY`, ou `GOOGLE_API_KEY` - Sortie : WAV pour les pièces jointes TTS classiques, PCM pour Talk/téléphonie -- Sortie native en note vocale : non prise en charge sur ce chemin d’API Gemini car l’API renvoie du PCM plutôt que de l’Opus +- Sortie native en note vocale : non prise en charge sur ce chemin API Gemini, car l’API renvoie du PCM plutôt que de l’Opus Pour utiliser Google comme fournisseur TTS par défaut : @@ -271,7 +276,7 @@ Pour utiliser Google comme fournisseur TTS par défaut : ``` Le TTS de l’API Gemini accepte des balises audio expressives entre crochets dans le texte, comme -`[whispers]` ou `[laughs]`. Pour garder les balises hors de la réponse visible du chat tout en +`[whispers]` ou `[laughs]`. Pour garder les balises hors de la réponse de chat visible tout en les envoyant au TTS, placez-les dans un bloc `[[tts:text]]...[[/tts:text]]` : ```text @@ -288,16 +293,16 @@ fournisseur. Il ne s’agit pas du chemin distinct de l’API Cloud Text-to-Spee ## Configuration avancée - + Pour les exécutions directes de l’API Gemini (`api: "google-generative-ai"`), OpenClaw transmet un handle `cachedContent` configuré aux requêtes Gemini. - Configurez des paramètres par modèle ou globaux avec `cachedContent` ou l’ancien `cached_content` - - Si les deux sont présents, `cachedContent` est prioritaire - - Exemple de valeur : `cachedContents/prebuilt-context` - - L’utilisation des succès de cache Gemini est normalisée en `cacheRead` OpenClaw à partir du - `cachedContentTokenCount` amont + - Si les deux sont présents, `cachedContent` l’emporte + - Valeur d’exemple : `cachedContents/prebuilt-context` + - L’utilisation avec succès du cache Gemini est normalisée dans OpenClaw en `cacheRead` à partir de + `cachedContentTokenCount` en amont ```json5 { @@ -317,38 +322,38 @@ fournisseur. Il ne s’agit pas du chemin distinct de l’API Cloud Text-to-Spee - + Lors de l’utilisation du fournisseur OAuth `google-gemini-cli`, OpenClaw normalise - la sortie JSON de la CLI comme suit : + la sortie JSON du CLI comme suit : - - Le texte de réponse provient du champ JSON `response` de la CLI. - - L’utilisation se rabat sur `stats` lorsque la CLI laisse `usage` vide. - - `stats.cached` est normalisé en `cacheRead` OpenClaw. + - Le texte de réponse provient du champ JSON `response` du CLI. + - L’usage se rabat sur `stats` lorsque le CLI laisse `usage` vide. + - `stats.cached` est normalisé en `cacheRead` dans OpenClaw. - Si `stats.input` est absent, OpenClaw dérive les jetons d’entrée à partir de `stats.input_tokens - stats.cached`. - - Si la Gateway s’exécute comme un démon (launchd/systemd), assurez-vous que `GEMINI_API_KEY` + + Si le Gateway s’exécute comme démon (launchd/systemd), assurez-vous que `GEMINI_API_KEY` est disponible pour ce processus (par exemple, dans `~/.openclaw/.env` ou via `env.shellEnv`). -## Lié +## Connexe - + Choisir les fournisseurs, les références de modèle et le comportement de basculement. - - Paramètres partagés de l’outil d’image et sélection du fournisseur. + + Paramètres d’outil d’image partagés et sélection du fournisseur. - - Paramètres partagés de l’outil vidéo et sélection du fournisseur. + + Paramètres d’outil vidéo partagés et sélection du fournisseur. - - Paramètres partagés de l’outil musical et sélection du fournisseur. + + Paramètres d’outil musical partagés et sélection du fournisseur.