diff --git a/docs/fr/channels/slack.md b/docs/fr/channels/slack.md
index 69726f67e..c647d641c 100644
--- a/docs/fr/channels/slack.md
+++ b/docs/fr/channels/slack.md
@@ -1,30 +1,30 @@
---
read_when:
- Configurer Slack ou déboguer le mode socket/HTTP de Slack
-summary: Configuration de Slack et comportement d'exécution (Socket Mode + URL de requête HTTP)
+summary: Configuration de Slack et comportement à l’exécution (Socket Mode + URL de requête HTTP)
title: Slack
x-i18n:
- generated_at: "2026-04-07T06:49:48Z"
+ generated_at: "2026-04-08T06:02:06Z"
model: gpt-5.4
provider: openai
- source_hash: 2b8fd2cc6c638ee82069f0af2c2b6f6f49c87da709b941433a0343724a9907ea
+ source_hash: cad132131ddce688517def7c14703ad314441c67aacc4cc2a2a721e1d1c01942
source_path: channels/slack.md
workflow: 15
---
# Slack
-Statut : prêt pour la production pour les DM et les canaux via les intégrations d'application Slack. Le mode par défaut est Socket Mode ; les URL de requête HTTP sont également prises en charge.
+Statut : prêt pour la production pour les messages privés et les canaux via les intégrations d’app Slack. Le mode par défaut est Socket Mode ; les URL de requête HTTP sont également prises en charge.
-
- Les DM Slack utilisent le mode d'appairage par défaut.
+
+ Les messages privés Slack utilisent par défaut le mode d’association.
Comportement natif des commandes et catalogue des commandes.
- Diagnostics inter-canaux et guides de résolution.
+ Diagnostics inter-canaux et guides de réparation.
@@ -33,13 +33,13 @@ Statut : prêt pour la production pour les DM et les canaux via les intégration
-
- Dans les paramètres de l'application Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
+
+ Dans les paramètres de l’app Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
- - choisissez **from a manifest** et sélectionnez un espace de travail pour votre application
- - collez le [manifeste d'exemple](#manifest-and-scope-checklist) ci-dessous et poursuivez la création
+ - choisissez **from a manifest** et sélectionnez un espace de travail pour votre app
+ - collez le [manifeste d’exemple](#manifest-and-scope-checklist) ci-dessous et continuez pour la créer
- générez un **App-Level Token** (`xapp-...`) avec `connections:write`
- - installez l'application et copiez le **Bot Token** (`xoxb-...`) affiché
+ - installez l’app et copiez le **Bot Token** (`xoxb-...`) affiché
@@ -57,7 +57,7 @@ Statut : prêt pour la production pour les DM et les canaux via les intégration
}
```
- Variable d'environnement de secours (compte par défaut uniquement) :
+ Variable d’environnement de secours (compte par défaut uniquement) :
```bash
SLACK_APP_TOKEN=xapp-...
@@ -79,13 +79,13 @@ openclaw gateway
-
- Dans les paramètres de l'application Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
+
+ Dans les paramètres de l’app Slack, appuyez sur le bouton **[Create New App](https://api.slack.com/apps/new)** :
- - choisissez **from a manifest** et sélectionnez un espace de travail pour votre application
- - collez le [manifeste d'exemple](#manifest-and-scope-checklist) et mettez à jour les URL avant de créer
+ - choisissez **from a manifest** et sélectionnez un espace de travail pour votre app
+ - collez le [manifeste d’exemple](#manifest-and-scope-checklist) et mettez à jour les URL avant de créer l’app
- enregistrez le **Signing Secret** pour la vérification des requêtes
- - installez l'application et copiez le **Bot Token** (`xoxb-...`) affiché
+ - installez l’app et copiez le **Bot Token** (`xoxb-...`) affiché
@@ -106,9 +106,9 @@ openclaw gateway
```
- Utilisez des chemins webhook uniques pour le HTTP multi-compte
+ Utilisez des chemins de webhook uniques pour le mode HTTP multi-compte
- Donnez à chaque compte un `webhookPath` distinct (par défaut `/slack/events`) afin que les enregistrements n'entrent pas en conflit.
+ Donnez à chaque compte un `webhookPath` distinct (par défaut `/slack/events`) afin d’éviter les collisions d’enregistrement.
@@ -125,7 +125,7 @@ openclaw gateway
-## Liste de vérification du manifeste et des scopes
+## Liste de vérification du manifeste et des portées
@@ -290,13 +290,14 @@ openclaw gateway
-
- Ajoutez le scope bot `chat:write.customize` si vous voulez que les messages sortants utilisent l'identité de l'agent actif (nom d'utilisateur et icône personnalisés) au lieu de l'identité par défaut de l'application Slack.
+
+ Ajoutez la portée bot `chat:write.customize` si vous souhaitez que les messages sortants utilisent l’identité de l’agent actif (nom d’utilisateur et icône personnalisés) au lieu de l’identité par défaut de l’app Slack.
+
+ Si vous utilisez une icône emoji, Slack attend une syntaxe `:emoji_name:`.
- Si vous utilisez une icône emoji, Slack attend une syntaxe `:nom_emoji:`.
-
- Si vous configurez `channels.slack.userToken`, les scopes de lecture typiques sont :
+
+ Si vous configurez `channels.slack.userToken`, les portées de lecture courantes sont :
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@@ -315,30 +316,30 @@ openclaw gateway
- Le mode HTTP nécessite `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` et `userToken` acceptent des chaînes
en clair ou des objets SecretRef.
-- Les jetons de configuration remplacent la variable d'environnement de secours.
-- La variable d'environnement de secours `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` s'applique uniquement au compte par défaut.
-- `userToken` (`xoxp-...`) est uniquement dans la configuration (pas de variable d'environnement de secours) et utilise par défaut un comportement en lecture seule (`userTokenReadOnly: true`).
+- Les jetons de config remplacent la variable d’environnement de secours.
+- La variable d’environnement de secours `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` s’applique uniquement au compte par défaut.
+- `userToken` (`xoxp-...`) est uniquement configurable dans la config (pas de variable d’environnement de secours) et adopte par défaut un comportement en lecture seule (`userTokenReadOnly: true`).
-Comportement de l'instantané d'état :
+Comportement de l’instantané d’état :
-- L'inspection des comptes Slack suit les champs `*Source` et `*Status`
- par identifiant (`botToken`, `appToken`, `signingSecret`, `userToken`).
-- L'état est `available`, `configured_unavailable` ou `missing`.
+- L’inspection du compte Slack suit, pour chaque identifiant, les champs
+ `*Source` et `*Status` (`botToken`, `appToken`, `signingSecret`, `userToken`).
+- L’état est `available`, `configured_unavailable` ou `missing`.
- `configured_unavailable` signifie que le compte est configuré via SecretRef
- ou une autre source de secret non inline, mais que le chemin de commande/d'exécution actuel
- n'a pas pu résoudre la valeur réelle.
-- En mode HTTP, `signingSecretStatus` est inclus ; en Socket Mode, la
+ ou une autre source de secret non inline, mais que le chemin de commande ou
+ d’exécution actuel n’a pas pu résoudre la valeur réelle.
+- En mode HTTP, `signingSecretStatus` est inclus ; en Socket Mode, la
paire requise est `botTokenStatus` + `appTokenStatus`.
-Pour les lectures d'actions/répertoire, le jeton utilisateur peut être privilégié lorsqu'il est configuré. Pour les écritures, le jeton bot reste prioritaire ; les écritures avec jeton utilisateur ne sont autorisées que lorsque `userTokenReadOnly: false` et que le jeton bot n'est pas disponible.
+Pour les actions et les lectures d’annuaire, le jeton utilisateur peut être préféré lorsqu’il est configuré. Pour les écritures, le jeton bot reste prioritaire ; les écritures avec jeton utilisateur ne sont autorisées que si `userTokenReadOnly: false` et que le jeton bot n’est pas disponible.
-## Actions et contrôles
+## Actions et garde-fous
Les actions Slack sont contrôlées par `channels.slack.actions.*`.
-Groupes d'actions disponibles dans l'outillage Slack actuel :
+Groupes d’actions disponibles dans l’outillage Slack actuel :
| Groupe | Par défaut |
| ---------- | ---------- |
@@ -348,225 +349,230 @@ Groupes d'actions disponibles dans l'outillage Slack actuel :
| memberInfo | activé |
| emojiList | activé |
-Les actions actuelles des messages Slack incluent `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` et `emoji-list`.
+Les actions de message Slack actuelles incluent `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` et `emoji-list`.
-## Contrôle d'accès et routage
+## Contrôle d’accès et routage
-
- `channels.slack.dmPolicy` contrôle l'accès DM (hérité : `channels.slack.dm.policy`) :
+
+ `channels.slack.dmPolicy` contrôle l’accès aux messages privés (hérité : `channels.slack.dm.policy`) :
- `pairing` (par défaut)
- `allowlist`
- - `open` (nécessite que `channels.slack.allowFrom` inclue `"*"` ; hérité : `channels.slack.dm.allowFrom`)
+ - `open` (nécessite que `channels.slack.allowFrom` inclue `"*"` ; hérité : `channels.slack.dm.allowFrom`)
- `disabled`
- Indicateurs DM :
+ Indicateurs des messages privés :
- `dm.enabled` (true par défaut)
- - `channels.slack.allowFrom` (recommandé)
+ - `channels.slack.allowFrom` (préféré)
- `dm.allowFrom` (hérité)
- - `dm.groupEnabled` (DM de groupe désactivés par défaut)
- - `dm.groupChannels` (liste d'autorisation MPIM facultative)
+ - `dm.groupEnabled` (messages privés de groupe désactivés par défaut)
+ - `dm.groupChannels` (liste d’autorisation MPIM facultative)
- Priorité multi-compte :
+ Priorité multi-compte :
- - `channels.slack.accounts.default.allowFrom` s'applique uniquement au compte `default`.
- - Les comptes nommés héritent de `channels.slack.allowFrom` lorsque leur propre `allowFrom` n'est pas défini.
- - Les comptes nommés n'héritent pas de `channels.slack.accounts.default.allowFrom`.
+ - `channels.slack.accounts.default.allowFrom` s’applique uniquement au compte `default`.
+ - Les comptes nommés héritent de `channels.slack.allowFrom` lorsque leur propre `allowFrom` n’est pas défini.
+ - Les comptes nommés n’héritent pas de `channels.slack.accounts.default.allowFrom`.
- L'appairage dans les DM utilise `openclaw pairing approve slack `.
+ L’association dans les messages privés utilise `openclaw pairing approve slack `.
- `channels.slack.groupPolicy` contrôle la gestion des canaux :
+ `channels.slack.groupPolicy` contrôle la gestion des canaux :
- `open`
- `allowlist`
- `disabled`
- La liste d'autorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des ID de canal stables.
+ La liste d’autorisation des canaux se trouve sous `channels.slack.channels` et doit utiliser des ID de canal stables.
- Remarque d'exécution : si `channels.slack` est complètement absent (configuration par variable d'environnement uniquement), l'exécution revient à `groupPolicy="allowlist"` et enregistre un avertissement (même si `channels.defaults.groupPolicy` est défini).
+ Remarque d’exécution : si `channels.slack` est totalement absent (configuration via variables d’environnement uniquement), l’exécution utilise `groupPolicy="allowlist"` comme repli et journalise un avertissement (même si `channels.defaults.groupPolicy` est défini).
- Résolution nom/ID :
+ Résolution nom/ID :
- - les entrées de liste d'autorisation des canaux et les entrées de liste d'autorisation des DM sont résolues au démarrage lorsque l'accès au jeton le permet
- - les entrées de nom de canal non résolues sont conservées telles que configurées mais ignorées pour le routage par défaut
- - l'autorisation entrante et le routage des canaux utilisent les ID en priorité par défaut ; la correspondance directe de nom d'utilisateur/slug nécessite `channels.slack.dangerouslyAllowNameMatching: true`
+ - les entrées de liste d’autorisation de canal et de messages privés sont résolues au démarrage lorsque l’accès par jeton le permet
+ - les entrées de nom de canal non résolues sont conservées telles que configurées, mais ignorées par défaut pour le routage
+ - l’autorisation entrante et le routage des canaux reposent d’abord sur les ID par défaut ; la correspondance directe sur nom d’utilisateur/slug nécessite `channels.slack.dangerouslyAllowNameMatching: true`
-
- Les messages de canal sont filtrés par mention par défaut.
+
+ Les messages de canal sont soumis par défaut à un garde-fou sur les mentions.
- Sources de mention :
+ Sources de mention :
- - mention explicite de l'application (`<@botId>`)
- - modèles regex de mention (`agents.list[].groupChat.mentionPatterns`, secours `messages.groupChat.mentionPatterns`)
- - comportement implicite de réponse à un fil du bot (désactivé lorsque `thread.requireExplicitMention` vaut `true`)
+ - mention explicite de l’app (`<@botId>`)
+ - motifs regex de mention (`agents.list[].groupChat.mentionPatterns`, avec repli sur `messages.groupChat.mentionPatterns`)
+ - comportement implicite de réponse dans le fil au bot (désactivé lorsque `thread.requireExplicitMention` vaut `true`)
- Contrôles par canal (`channels.slack.channels.` ; noms uniquement via la résolution au démarrage ou `dangerouslyAllowNameMatching`) :
+ Contrôles par canal (`channels.slack.channels.` ; noms uniquement via résolution au démarrage ou `dangerouslyAllowNameMatching`) :
- `requireMention`
- - `users` (liste d'autorisation)
+ - `users` (liste d’autorisation)
- `allowBots`
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- - format de clé `toolsBySender` : `id:`, `e164:`, `username:`, `name:` ou joker `"*"`
- (les clés héritées sans préfixe sont toujours mappées vers `id:` uniquement)
+ - format de clé `toolsBySender` : `id:`, `e164:`, `username:`, `name:` ou joker `"*"`
+ (les clés héritées sans préfixe sont toujours mappées uniquement vers `id:`)
## Fils, sessions et balises de réponse
-- Les DM sont routés comme `direct` ; les canaux comme `channel` ; les MPIM comme `group`.
-- Avec la valeur par défaut `session.dmScope=main`, les DM Slack sont regroupés dans la session principale de l'agent.
-- Sessions de canal : `agent::slack:channel:`.
-- Les réponses dans un fil peuvent créer des suffixes de session de fil (`:thread:`) selon le cas.
-- La valeur par défaut de `channels.slack.thread.historyScope` est `thread` ; celle de `thread.inheritParent` est `false`.
-- `channels.slack.thread.initialHistoryLimit` contrôle combien de messages de fil existants sont récupérés lorsqu'une nouvelle session de fil démarre (par défaut `20` ; définissez `0` pour désactiver).
-- `channels.slack.thread.requireExplicitMention` (par défaut `false`) : lorsque la valeur est `true`, supprime les mentions implicites dans les fils pour que le bot ne réponde qu'aux mentions explicites `@bot` à l'intérieur des fils, même lorsque le bot a déjà participé au fil. Sans cela, les réponses dans un fil où le bot a participé contournent le filtrage `requireMention`.
+- Les messages privés sont routés comme `direct` ; les canaux comme `channel` ; les MPIM comme `group`.
+- Avec la valeur par défaut `session.dmScope=main`, les messages privés Slack sont regroupés dans la session principale de l’agent.
+- Sessions de canal : `agent::slack:channel:`.
+- Les réponses dans les fils peuvent créer des suffixes de session de fil (`:thread:`) lorsque c’est applicable.
+- La valeur par défaut de `channels.slack.thread.historyScope` est `thread` ; celle de `thread.inheritParent` est `false`.
+- `channels.slack.thread.initialHistoryLimit` contrôle le nombre de messages existants du fil récupérés au démarrage d’une nouvelle session de fil (valeur par défaut `20` ; définissez `0` pour désactiver).
+- `channels.slack.thread.requireExplicitMention` (par défaut `false`) : quand `true`, supprime les mentions implicites dans les fils afin que le bot ne réponde qu’aux mentions explicites `@bot` dans les fils, même s’il a déjà participé au fil. Sans cela, les réponses dans un fil auquel le bot a participé contournent le garde-fou `requireMention`.
-Contrôles de fil de réponse :
+Contrôles de fil de réponse :
- `channels.slack.replyToMode`: `off|first|all|batched` (par défaut `off`)
- `channels.slack.replyToModeByChatType`: par `direct|group|channel`
-- secours hérité pour les chats directs : `channels.slack.dm.replyToMode`
+- repli hérité pour les discussions directes : `channels.slack.dm.replyToMode`
-Les balises de réponse manuelles sont prises en charge :
+Les balises de réponse manuelle sont prises en charge :
- `[[reply_to_current]]`
- `[[reply_to:]]`
-Remarque : `replyToMode="off"` désactive **tout** le fil de réponse dans Slack, y compris les balises explicites `[[reply_to_*]]`. Cela diffère de Telegram, où les balises explicites sont toujours honorées en mode `"off"`. La différence reflète les modèles de fil des plateformes : les fils Slack masquent les messages du canal, tandis que les réponses Telegram restent visibles dans le flux principal du chat.
+Remarque : `replyToMode="off"` désactive **tout** le fil de réponse dans Slack, y compris les balises explicites `[[reply_to_*]]`. Cela diffère de Telegram, où les balises explicites sont toujours respectées en mode `"off"`. Cette différence reflète les modèles de fil propres aux plateformes : dans Slack, les fils masquent les messages du canal, tandis que dans Telegram, les réponses restent visibles dans le flux principal de discussion.
-## Réactions d'accusé de réception
+## Réactions d’accusé de réception
-`ackReaction` envoie un emoji d'accusé de réception pendant qu'OpenClaw traite un message entrant.
+`ackReaction` envoie un emoji d’accusé de réception pendant qu’OpenClaw traite un message entrant.
-Ordre de résolution :
+Ordre de résolution :
- `channels.slack.accounts..ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
-- secours emoji d'identité d'agent (`agents.list[].identity.emoji`, sinon "👀")
+- repli sur l’emoji d’identité de l’agent (`agents.list[].identity.emoji`, sinon "👀")
-Remarques :
+Remarques :
- Slack attend des shortcodes (par exemple `"eyes"`).
- Utilisez `""` pour désactiver la réaction pour le compte Slack ou globalement.
## Streaming de texte
-`channels.slack.streaming` contrôle le comportement d'aperçu en direct :
+`channels.slack.streaming` contrôle le comportement de l’aperçu en direct :
-- `off` : désactiver le streaming d'aperçu en direct.
-- `partial` (par défaut) : remplace le texte d'aperçu par la dernière sortie partielle.
-- `block` : ajoute des mises à jour d'aperçu par blocs.
-- `progress` : affiche un texte d'état de progression pendant la génération, puis envoie le texte final.
+- `off` : désactiver le streaming de l’aperçu en direct.
+- `partial` (par défaut) : remplacer le texte d’aperçu par la dernière sortie partielle.
+- `block` : ajouter des mises à jour d’aperçu par blocs.
+- `progress` : afficher un texte de progression pendant la génération, puis envoyer le texte final.
-`channels.slack.nativeStreaming` contrôle le streaming de texte natif Slack lorsque `streaming` vaut `partial` (par défaut : `true`).
+`channels.slack.streaming.nativeTransport` contrôle le streaming de texte natif Slack lorsque `channels.slack.streaming.mode` vaut `partial` (par défaut : `true`).
-- Un fil de réponse doit être disponible pour que le streaming de texte natif apparaisse. La sélection du fil suit toujours `replyToMode`. Sans cela, l'aperçu de brouillon normal est utilisé.
-- Les médias et charges utiles non textuelles reviennent à la livraison normale.
-- Si le streaming échoue au milieu de la réponse, OpenClaw revient à la livraison normale pour les charges utiles restantes.
+- Un fil de réponse doit être disponible pour que le streaming de texte natif et l’état du fil assistant Slack s’affichent. La sélection du fil continue toutefois de suivre `replyToMode`.
+- Les racines de canaux et de discussions de groupe peuvent toujours utiliser l’aperçu brouillon normal lorsque le streaming natif n’est pas disponible.
+- Les messages privés Slack de niveau supérieur restent hors fil par défaut, ils n’affichent donc pas l’aperçu de style fil ; utilisez des réponses en fil ou `typingReaction` si vous souhaitez y afficher une progression visible.
+- Les médias et les charges utiles non textuelles reviennent à la livraison normale.
+- Si le streaming échoue en cours de réponse, OpenClaw revient à la livraison normale pour les charges utiles restantes.
-Utiliser l'aperçu de brouillon au lieu du streaming de texte natif Slack :
+Utiliser l’aperçu brouillon au lieu du streaming de texte natif Slack :
```json5
{
channels: {
slack: {
- streaming: "partial",
- nativeStreaming: false,
+ streaming: {
+ mode: "partial",
+ nativeTransport: false,
+ },
},
},
}
```
-Clés héritées :
+Clés héritées :
-- `channels.slack.streamMode` (`replace | status_final | append`) est migré automatiquement vers `channels.slack.streaming`.
-- le booléen `channels.slack.streaming` est migré automatiquement vers `channels.slack.nativeStreaming`.
+- `channels.slack.streamMode` (`replace | status_final | append`) est migré automatiquement vers `channels.slack.streaming.mode`.
+- le booléen `channels.slack.streaming` est migré automatiquement vers `channels.slack.streaming.mode` et `channels.slack.streaming.nativeTransport`.
+- la clé héritée `channels.slack.nativeStreaming` est migrée automatiquement vers `channels.slack.streaming.nativeTransport`.
-## Secours de réaction de saisie
+## Repli de réaction de saisie
-`typingReaction` ajoute une réaction temporaire au message Slack entrant pendant qu'OpenClaw traite une réponse, puis la supprime lorsque l'exécution se termine. Cela est surtout utile en dehors des réponses dans les fils, qui utilisent un indicateur d'état par défaut "is typing...".
+`typingReaction` ajoute une réaction temporaire au message Slack entrant pendant qu’OpenClaw traite une réponse, puis la retire à la fin de l’exécution. C’est surtout utile hors des réponses en fil, qui utilisent un indicateur d’état par défaut « is typing... ».
-Ordre de résolution :
+Ordre de résolution :
- `channels.slack.accounts..typingReaction`
- `channels.slack.typingReaction`
-Remarques :
+Remarques :
- Slack attend des shortcodes (par exemple `"hourglass_flowing_sand"`).
-- La réaction est best-effort et le nettoyage est tenté automatiquement après la réponse ou après la fin du chemin d'échec.
+- La réaction est appliquée au mieux et son nettoyage est tenté automatiquement une fois la réponse ou le chemin d’échec terminé.
-## Médias, segmentation et livraison
+## Médias, découpage et livraison
- Les pièces jointes de fichier Slack sont téléchargées depuis des URL privées hébergées par Slack (flux de requête authentifié par jeton) et écrites dans le stockage média lorsque la récupération réussit et que les limites de taille le permettent.
+ Les pièces jointes Slack sont téléchargées depuis des URL privées hébergées par Slack (flux de requêtes authentifiées par jeton) et écrites dans le stockage média lorsque la récupération réussit et que les limites de taille le permettent.
- Le plafond de taille entrant à l'exécution est de `20MB` par défaut, sauf remplacement par `channels.slack.mediaMaxMb`.
+ Le plafond de taille entrante à l’exécution est de `20MB` par défaut, sauf remplacement par `channels.slack.mediaMaxMb`.
- - les segments de texte utilisent `channels.slack.textChunkLimit` (par défaut 4000)
- - `channels.slack.chunkMode="newline"` active le découpage prioritaire par paragraphe
- - les envois de fichiers utilisent les API de téléchargement Slack et peuvent inclure des réponses de fil (`thread_ts`)
- - le plafond de média sortant suit `channels.slack.mediaMaxMb` lorsqu'il est configuré ; sinon, les envois de canal utilisent les valeurs par défaut de type MIME du pipeline média
+ - les blocs de texte utilisent `channels.slack.textChunkLimit` (valeur par défaut 4000)
+ - `channels.slack.chunkMode="newline"` active un découpage privilégiant d’abord les paragraphes
+ - les envois de fichiers utilisent les API d’upload Slack et peuvent inclure des réponses en fil (`thread_ts`)
+ - le plafond média sortant suit `channels.slack.mediaMaxMb` lorsqu’il est configuré ; sinon, les envois par canal utilisent les valeurs par défaut par type MIME du pipeline média
- Cibles explicites privilégiées :
+ Cibles explicites préférées :
- - `user:` pour les DM
+ - `user:` pour les messages privés
- `channel:` pour les canaux
- Les DM Slack sont ouverts via les API de conversation Slack lors de l'envoi vers des cibles utilisateur.
+ Les messages privés Slack sont ouverts via les API de conversation Slack lors de l’envoi vers des cibles utilisateur.
## Commandes et comportement des slash commands
-- Le mode automatique de commande native est **désactivé** pour Slack (`commands.native: "auto"` n'active pas les commandes natives Slack).
-- Activez les gestionnaires de commande natifs Slack avec `channels.slack.commands.native: true` (ou globalement `commands.native: true`).
-- Lorsque les commandes natives sont activées, enregistrez les slash commands correspondantes dans Slack (noms `/`), avec une exception :
- - enregistrez `/agentstatus` pour la commande d'état (Slack réserve `/status`)
+- Le mode automatique des commandes natives est **désactivé** pour Slack (`commands.native: "auto"` n’active pas les commandes natives Slack).
+- Activez les gestionnaires de commandes Slack natives avec `channels.slack.commands.native: true` (ou globalement `commands.native: true`).
+- Lorsque les commandes natives sont activées, enregistrez les slash commands correspondantes dans Slack (noms `/`), avec une exception :
+ - enregistrez `/agentstatus` pour la commande d’état (Slack réserve `/status`)
- Si les commandes natives ne sont pas activées, vous pouvez exécuter une seule slash command configurée via `channels.slack.slashCommand`.
-- Les menus d'arguments natifs adaptent désormais leur stratégie de rendu :
- - jusqu'à 5 options : blocs de boutons
- - 6-100 options : menu de sélection statique
- - plus de 100 options : sélection externe avec filtrage asynchrone des options lorsque les gestionnaires d'options d'interactivité sont disponibles
- - si les valeurs d'option encodées dépassent les limites de Slack, le flux revient aux boutons
-- Pour les longues charges utiles d'options, les menus d'arguments de slash command utilisent une boîte de dialogue de confirmation avant d'envoyer une valeur sélectionnée.
+- Les menus d’arguments natifs adaptent désormais leur stratégie de rendu :
+ - jusqu’à 5 options : blocs de boutons
+ - 6 à 100 options : menu de sélection statique
+ - plus de 100 options : sélection externe avec filtrage asynchrone des options lorsque des gestionnaires d’options d’interactivité sont disponibles
+ - si les valeurs d’option encodées dépassent les limites de Slack, le flux revient aux boutons
+- Pour les longues charges utiles d’options, les menus d’arguments des slash commands utilisent une boîte de dialogue de confirmation avant d’envoyer une valeur sélectionnée.
-Paramètres par défaut des slash commands :
+Paramètres par défaut des slash commands :
- `enabled: false`
- `name: "openclaw"`
- `sessionPrefix: "slack:slash"`
- `ephemeral: true`
-Les sessions de slash utilisent des clés isolées :
+Les sessions slash utilisent des clés isolées :
- `agent::slack:slash:`
-et continuent de router l'exécution de la commande vers la session de conversation cible (`CommandTargetSessionKey`).
+et continuent malgré tout à router l’exécution de la commande vers la session de conversation cible (`CommandTargetSessionKey`).
## Réponses interactives
-Slack peut afficher des contrôles de réponse interactive rédigés par l'agent, mais cette fonctionnalité est désactivée par défaut.
+Slack peut afficher des contrôles de réponse interactive rédigés par l’agent, mais cette fonctionnalité est désactivée par défaut.
-Activez-la globalement :
+L’activer globalement :
```json5
{
@@ -580,7 +586,7 @@ Activez-la globalement :
}
```
-Ou activez-la pour un seul compte Slack :
+Ou l’activer pour un seul compte Slack :
```json5
{
@@ -598,44 +604,44 @@ Ou activez-la pour un seul compte Slack :
}
```
-Lorsqu'elle est activée, les agents peuvent émettre des directives de réponse propres à Slack :
+Lorsque cette fonctionnalité est activée, les agents peuvent émettre des directives de réponse réservées à Slack :
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
-Ces directives sont compilées en Slack Block Kit et routent les clics ou sélections vers le chemin d'événement d'interaction Slack existant.
+Ces directives sont compilées en Slack Block Kit et les clics ou sélections sont renvoyés via le chemin d’événement d’interaction Slack existant.
-Remarques :
+Remarques :
-- Il s'agit d'une interface propre à Slack. Les autres canaux ne traduisent pas les directives Slack Block Kit vers leurs propres systèmes de boutons.
-- Les valeurs de rappel interactives sont des jetons opaques générés par OpenClaw, pas des valeurs brutes rédigées par l'agent.
-- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse textuelle d'origine au lieu d'envoyer une charge utile de blocs invalide.
+- Il s’agit d’une UI spécifique à Slack. Les autres canaux ne traduisent pas les directives Slack Block Kit vers leurs propres systèmes de boutons.
+- Les valeurs de rappel interactif sont des jetons opaques générés par OpenClaw, et non des valeurs brutes rédigées par l’agent.
+- Si les blocs interactifs générés dépassent les limites de Slack Block Kit, OpenClaw revient à la réponse texte d’origine au lieu d’envoyer une charge utile de blocs invalide.
-## Approbations Exec dans Slack
+## Approbations exec dans Slack
-Slack peut agir comme client d'approbation natif avec des boutons et interactions interactifs, au lieu de revenir à l'interface Web ou au terminal.
+Slack peut agir comme client d’approbation natif avec des boutons interactifs et des interactions, au lieu de revenir à la Web UI ou au terminal.
-- Les approbations Exec utilisent `channels.slack.execApprovals.*` pour le routage natif DM/canal.
-- Les approbations de plugin peuvent toujours se résoudre via la même surface de bouton native Slack lorsque la requête arrive déjà dans Slack et que le type d'identifiant d'approbation est `plugin:`.
-- L'autorisation des approbateurs reste appliquée : seuls les utilisateurs identifiés comme approbateurs peuvent approuver ou refuser des demandes via Slack.
+- Les approbations exec utilisent `channels.slack.execApprovals.*` pour le routage natif en message privé/canal.
+- Les approbations de plugin peuvent toujours être résolues via la même surface de boutons native Slack lorsque la demande arrive déjà dans Slack et que le type d’ID d’approbation est `plugin:`.
+- L’autorisation des approbateurs reste appliquée : seuls les utilisateurs identifiés comme approbateurs peuvent approuver ou refuser des demandes via Slack.
-Cela utilise la même surface de bouton d'approbation partagée que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre application Slack, les invites d'approbation s'affichent comme des boutons Block Kit directement dans la conversation.
-Lorsque ces boutons sont présents, ils constituent l'expérience d'approbation principale ; OpenClaw
-ne doit inclure une commande `/approve` manuelle que lorsque le résultat de l'outil indique que les
-approbations par chat ne sont pas disponibles ou que l'approbation manuelle est le seul chemin.
+Cela utilise la même surface partagée de boutons d’approbation que les autres canaux. Lorsque `interactivity` est activé dans les paramètres de votre app Slack, les invites d’approbation s’affichent directement sous forme de boutons Block Kit dans la conversation.
+Lorsque ces boutons sont présents, ils constituent l’UX d’approbation principale ; OpenClaw
+ne devrait inclure une commande manuelle `/approve` que lorsque le résultat de l’outil indique que les
+approbations par discussion ne sont pas disponibles ou que l’approbation manuelle est la seule voie.
-Chemin de configuration :
+Chemin de configuration :
- `channels.slack.execApprovals.enabled`
-- `channels.slack.execApprovals.approvers` (facultatif ; revient à `commands.ownerAllowFrom` lorsque possible)
-- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, par défaut : `dm`)
+- `channels.slack.execApprovals.approvers` (facultatif ; utilise `commands.ownerAllowFrom` comme repli lorsque possible)
+- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, valeur par défaut : `dm`)
- `agentFilter`, `sessionFilter`
-Slack active automatiquement les approbations Exec natives lorsque `enabled` n'est pas défini ou vaut `"auto"` et qu'au moins un
-approbateur est résolu. Définissez `enabled: false` pour désactiver explicitement Slack comme client d'approbation natif.
+Slack active automatiquement les approbations exec natives lorsque `enabled` n’est pas défini ou vaut `"auto"` et qu’au moins un
+approbateur est résolu. Définissez `enabled: false` pour désactiver explicitement Slack comme client d’approbation natif.
Définissez `enabled: true` pour forcer les approbations natives lorsque des approbateurs sont résolus.
-Comportement par défaut sans configuration explicite d'approbation Exec Slack :
+Comportement par défaut sans configuration explicite d’approbation exec Slack :
```json5
{
@@ -645,8 +651,8 @@ Comportement par défaut sans configuration explicite d'approbation Exec Slack :
}
```
-Une configuration native Slack explicite n'est nécessaire que lorsque vous voulez remplacer les approbateurs, ajouter des filtres ou
-opter pour une livraison au chat d'origine :
+Une configuration native Slack explicite n’est nécessaire que si vous souhaitez remplacer les approbateurs, ajouter des filtres, ou
+opter pour une livraison vers la discussion d’origine :
```json5
{
@@ -662,52 +668,52 @@ opter pour une livraison au chat d'origine :
}
```
-Le transfert partagé `approvals.exec` est distinct. Utilisez-le uniquement lorsque les invites d'approbation Exec doivent aussi
-être routées vers d'autres chats ou des cibles explicites hors bande. Le transfert partagé `approvals.plugin` est également
-distinct ; les boutons natifs Slack peuvent toujours résoudre les approbations de plugin lorsque ces requêtes arrivent déjà
+Le transfert partagé `approvals.exec` est distinct. Utilisez-le uniquement lorsque les invites d’approbation exec doivent aussi
+être routées vers d’autres discussions ou des cibles explicites hors bande. Le transfert partagé `approvals.plugin` est également
+distinct ; les boutons natifs Slack peuvent toujours résoudre les approbations de plugin lorsque ces demandes arrivent déjà
dans Slack.
-Le `/approve` dans le même chat fonctionne aussi dans les canaux et DM Slack qui prennent déjà en charge les commandes. Voir [Approbations Exec](/fr/tools/exec-approvals) pour le modèle complet de transfert des approbations.
+`/approve` dans la même discussion fonctionne aussi dans les canaux et messages privés Slack qui prennent déjà en charge les commandes. Voir [Approbations exec](/fr/tools/exec-approvals) pour le modèle complet de transfert des approbations.
## Événements et comportement opérationnel
-- Les modifications/suppressions de message/diffusions de fil sont mappées vers des événements système.
-- Les événements d'ajout/suppression de réaction sont mappés vers des événements système.
-- Les événements d'entrée/sortie de membre, de création/renommage de canal et d'ajout/suppression d'épingle sont mappés vers des événements système.
+- Les modifications/suppressions de messages et les diffusions de fil sont mappées en événements système.
+- Les événements d’ajout/suppression de réaction sont mappés en événements système.
+- Les événements d’arrivée/départ de membre, de création/renommage de canal et d’ajout/suppression d’épingle sont mappés en événements système.
- `channel_id_changed` peut migrer les clés de configuration de canal lorsque `configWrites` est activé.
- Les métadonnées de sujet/objectifs de canal sont traitées comme un contexte non fiable et peuvent être injectées dans le contexte de routage.
-- Le lanceur de fil et l'initialisation du contexte d'historique initial de fil sont filtrés par les listes d'autorisation d'expéditeur configurées, selon le cas.
-- Les actions de bloc et interactions de modal émettent des événements système structurés `Slack interaction: ...` avec des champs de charge utile riches :
- - actions de bloc : valeurs sélectionnées, libellés, valeurs de sélecteur et métadonnées `workflow_*`
- - événements de modal `view_submission` et `view_closed` avec métadonnées de canal routées et entrées de formulaire
+- Le message initial du fil et l’amorçage initial du contexte d’historique du fil sont filtrés selon les listes d’autorisation d’expéditeur configurées, lorsque applicable.
+- Les actions de bloc et les interactions modales émettent des événements système structurés `Slack interaction: ...` avec des champs riches de charge utile :
+ - actions de bloc : valeurs sélectionnées, libellés, valeurs du sélecteur et métadonnées `workflow_*`
+ - événements modaux `view_submission` et `view_closed` avec métadonnées de canal routées et entrées de formulaire
## Pointeurs vers la référence de configuration
-Référence principale :
+Référence principale :
- [Référence de configuration - Slack](/fr/gateway/configuration-reference#slack)
- Champs Slack à fort signal :
- - mode/auth : `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- - accès DM : `dm.enabled`, `dmPolicy`, `allowFrom` (hérité : `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- - bascule de compatibilité : `dangerouslyAllowNameMatching` (ultime recours ; laissez désactivé sauf besoin)
- - accès canal : `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- - fils/historique : `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- - livraison : `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`
- - ops/fonctionnalités : `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
+ Champs Slack à fort signal :
+ - mode/auth : `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
+ - accès aux messages privés : `dm.enabled`, `dmPolicy`, `allowFrom` (hérité : `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
+ - option de compatibilité : `dangerouslyAllowNameMatching` (dernier recours ; laissez-la désactivée sauf nécessité)
+ - accès aux canaux : `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
+ - fils/historique : `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
+ - livraison : `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`
+ - opérations/fonctionnalités : `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
## Dépannage
- Vérifiez, dans l'ordre :
+ Vérifiez, dans l’ordre :
- `groupPolicy`
- - liste d'autorisation des canaux (`channels.slack.channels`)
+ - liste d’autorisation des canaux (`channels.slack.channels`)
- `requireMention`
- - liste d'autorisation `users` par canal
+ - liste d’autorisation `users` par canal
- Commandes utiles :
+ Commandes utiles :
```bash
openclaw channels status --probe
@@ -717,12 +723,12 @@ openclaw doctor
-
- Vérifiez :
+
+ Vérifiez :
- `channels.slack.dm.enabled`
- - `channels.slack.dmPolicy` (ou hérité `channels.slack.dm.policy`)
- - approbations d'appairage / entrées de liste d'autorisation
+ - `channels.slack.dmPolicy` (ou l’hérité `channels.slack.dm.policy`)
+ - approbations d’association / entrées de liste d’autorisation
```bash
openclaw pairing list slack
@@ -731,17 +737,17 @@ openclaw pairing list slack
- Validez les jetons bot + app et l'activation de Socket Mode dans les paramètres de l'application Slack.
+ Validez les jetons bot + app et l’activation de Socket Mode dans les paramètres de l’app Slack.
Si `openclaw channels status --probe --json` affiche `botTokenStatus` ou
`appTokenStatus: "configured_unavailable"`, le compte Slack est
- configuré mais l'exécution actuelle n'a pas pu résoudre la
- valeur adossée à SecretRef.
+ configuré mais l’exécution actuelle n’a pas pu résoudre la valeur
+ fournie via SecretRef.
-
- Validez :
+
+ Validez :
- signing secret
- chemin webhook
@@ -749,25 +755,25 @@ openclaw pairing list slack
- `webhookPath` unique par compte HTTP
Si `signingSecretStatus: "configured_unavailable"` apparaît dans les
- instantanés de compte, le compte HTTP est configuré mais l'exécution actuelle n'a pas pu
- résoudre le signing secret adossé à SecretRef.
+ instantanés de compte, le compte HTTP est configuré mais l’exécution actuelle n’a pas pu
+ résoudre le signing secret fourni via SecretRef.
- Vérifiez si vous vouliez :
+ Vérifiez ce que vous vouliez utiliser :
- le mode de commande native (`channels.slack.commands.native: true`) avec les slash commands correspondantes enregistrées dans Slack
- - ou le mode de slash command unique (`channels.slack.slashCommand.enabled: true`)
+ - ou le mode de commande slash unique (`channels.slack.slashCommand.enabled: true`)
- Vérifiez aussi `commands.useAccessGroups` et les listes d'autorisation de canal/utilisateur.
+ Vérifiez également `commands.useAccessGroups` et les listes d’autorisation de canaux/utilisateurs.
-## Lié
+## Liens connexes
-- [Appairage](/fr/channels/pairing)
+- [Association](/fr/channels/pairing)
- [Groupes](/fr/channels/groups)
- [Sécurité](/fr/gateway/security)
- [Routage des canaux](/fr/channels/channel-routing)
diff --git a/docs/fr/concepts/memory.md b/docs/fr/concepts/memory.md
index c7763f6a2..cf7e2013c 100644
--- a/docs/fr/concepts/memory.md
+++ b/docs/fr/concepts/memory.md
@@ -2,13 +2,13 @@
read_when:
- Vous voulez comprendre comment fonctionne la mémoire
- Vous voulez savoir quels fichiers de mémoire écrire
-summary: Comment OpenClaw se souvient des choses entre les sessions
+summary: Comment OpenClaw se souvient des choses d’une session à l’autre
title: Vue d’ensemble de la mémoire
x-i18n:
- generated_at: "2026-04-06T03:06:29Z"
+ generated_at: "2026-04-08T06:00:58Z"
model: gpt-5.4
provider: openai
- source_hash: d19d4fa9c4b3232b7a97f7a382311d2a375b562040de15e9fe4a0b1990b825e7
+ source_hash: 3bb8552341b0b651609edaaae826a22fdc535d240aed4fad4af4b069454004af
source_path: concepts/memory.md
workflow: 15
---
@@ -17,38 +17,57 @@ x-i18n:
OpenClaw se souvient des choses en écrivant des **fichiers Markdown simples** dans l’espace de travail de votre agent. Le modèle ne « se souvient » que de ce qui est enregistré sur le disque -- il n’y a pas d’état caché.
-## Comment cela fonctionne
+## Fonctionnement
Votre agent dispose de trois fichiers liés à la mémoire :
-- **`MEMORY.md`** -- mémoire à long terme. Faits durables, préférences et décisions. Chargé au début de chaque session DM.
+- **`MEMORY.md`** -- mémoire à long terme. Faits durables, préférences et décisions. Chargé au début de chaque session de message direct.
- **`memory/YYYY-MM-DD.md`** -- notes quotidiennes. Contexte courant et observations. Les notes d’aujourd’hui et d’hier sont chargées automatiquement.
-- **`DREAMS.md`** (expérimental, facultatif) -- journal des rêves et résumés des cycles de rêve pour examen humain.
+- **`DREAMS.md`** (expérimental, facultatif) -- journal des rêves et résumés des passes de rêverie pour relecture humaine.
Ces fichiers se trouvent dans l’espace de travail de l’agent (par défaut `~/.openclaw/workspace`).
-Si vous voulez que votre agent se souvienne de quelque chose, demandez-le-lui simplement : « Souviens-toi que je préfère TypeScript. » Il l’écrira dans le fichier approprié.
+Si vous voulez que votre agent se souvienne de quelque chose, demandez-le-lui simplement : "Remember that I
+prefer TypeScript." Il l’écrira dans le fichier approprié.
## Outils de mémoire
L’agent dispose de deux outils pour travailler avec la mémoire :
-- **`memory_search`** -- trouve les notes pertinentes à l’aide d’une recherche sémantique, même lorsque la formulation diffère de l’original.
-- **`memory_get`** -- lit un fichier de mémoire spécifique ou une plage de lignes.
+- **`memory_search`** -- trouve des notes pertinentes à l’aide d’une recherche sémantique, même lorsque la formulation diffère de l’original.
+- **`memory_get`** -- lit un fichier de mémoire précis ou une plage de lignes.
-Ces deux outils sont fournis par le plugin de mémoire actif (par défaut : `memory-core`).
+Les deux outils sont fournis par le plugin de mémoire actif (par défaut : `memory-core`).
-## Recherche en mémoire
+## Plugin compagnon Memory Wiki
-Lorsqu’un fournisseur d’embeddings est configuré, `memory_search` utilise une **recherche hybride** -- combinant similarité vectorielle (sens sémantique) et correspondance par mots-clés (termes exacts comme les identifiants et les symboles de code). Cela fonctionne immédiatement dès que vous disposez d’une clé API pour n’importe quel fournisseur pris en charge.
+Si vous voulez que la mémoire durable fonctionne davantage comme une base de connaissances maintenue que comme de simples notes brutes, utilisez le plugin groupé `memory-wiki`.
+
+`memory-wiki` compile les connaissances durables dans un coffre wiki avec :
+
+- une structure de page déterministe
+- des affirmations et preuves structurées
+- le suivi des contradictions et de la fraîcheur
+- des tableaux de bord générés
+- des synthèses compilées pour les consommateurs agent/runtime
+- des outils natifs du wiki comme `wiki_search`, `wiki_get`, `wiki_apply` et `wiki_lint`
+
+Il ne remplace pas le plugin de mémoire actif. Le plugin de mémoire actif reste responsable du rappel, de la promotion et de la rêverie. `memory-wiki` ajoute à côté une couche de connaissances riche en provenance.
+
+Voir [Memory Wiki](/fr/plugins/memory-wiki).
+
+## Recherche dans la mémoire
+
+Lorsqu’un fournisseur d’embeddings est configuré, `memory_search` utilise une **recherche hybride** -- en combinant la similarité vectorielle (sens sémantique) avec la correspondance par mots-clés (termes exacts comme les identifiants et les symboles de code). Cela fonctionne immédiatement dès que vous disposez d’une clé API pour n’importe quel fournisseur pris en charge.
OpenClaw détecte automatiquement votre fournisseur d’embeddings à partir des clés API disponibles. Si vous avez configuré une clé OpenAI, Gemini, Voyage ou Mistral, la recherche en mémoire est activée automatiquement.
-Pour plus de détails sur le fonctionnement de la recherche, les options de réglage et la configuration des fournisseurs, consultez [Recherche en mémoire](/fr/concepts/memory-search).
+Pour en savoir plus sur le fonctionnement de la recherche, les options de réglage et la configuration des fournisseurs, consultez
+[Memory Search](/fr/concepts/memory-search).
## Backends de mémoire
@@ -57,33 +76,42 @@ Pour plus de détails sur le fonctionnement de la recherche, les options de rég
Basé sur SQLite. Fonctionne immédiatement avec la recherche par mots-clés, la similarité vectorielle et la recherche hybride. Aucune dépendance supplémentaire.
-Sidecar local-first avec reranking, expansion de requêtes et possibilité d’indexer des répertoires en dehors de l’espace de travail.
+Sidecar local-first avec reranking, expansion de requête et possibilité d’indexer des répertoires en dehors de l’espace de travail.
-Mémoire intersessions native pour l’IA avec modélisation utilisateur, recherche sémantique et prise en compte multi-agent. Installation via plugin.
+Mémoire intersessions native IA avec modélisation des utilisateurs, recherche sémantique et prise en compte multi-agent. Installation par plugin.
-## Flush automatique de la mémoire
+## Couche wiki de connaissances
-Avant que le [compactage](/fr/concepts/compaction) ne résume votre conversation, OpenClaw exécute un tour silencieux qui rappelle à l’agent d’enregistrer le contexte important dans des fichiers de mémoire. Cette fonction est activée par défaut -- vous n’avez rien à configurer.
+
+
+Compile la mémoire durable dans un coffre wiki riche en provenance avec affirmations, tableaux de bord, mode pont et workflows compatibles avec Obsidian.
+
+
+
+## Vidage automatique de la mémoire
+
+Avant que la [compaction](/fr/concepts/compaction) ne résume votre conversation, OpenClaw exécute un tour silencieux qui rappelle à l’agent d’enregistrer le contexte important dans les fichiers de mémoire. C’est activé par défaut -- vous n’avez rien à configurer.
-Le flush de mémoire évite la perte de contexte pendant le compactage. Si votre agent a des faits importants dans la conversation qui ne sont pas encore écrits dans un fichier, ils seront enregistrés automatiquement avant que le résumé n’ait lieu.
+Le vidage de la mémoire évite la perte de contexte pendant la compaction. Si votre agent a des faits importants dans la conversation qui ne sont pas encore écrits dans un fichier, ils seront enregistrés automatiquement avant que le résumé n’ait lieu.
-## Rêve (expérimental)
+## Rêverie (expérimental)
-Le rêve est un passage facultatif de consolidation en arrière-plan pour la mémoire. Il collecte des signaux à court terme, évalue des candidats et ne promeut dans la mémoire à long terme (`MEMORY.md`) que les éléments qualifiés.
+La rêverie est une passe facultative de consolidation en arrière-plan pour la mémoire. Elle collecte des signaux à court terme, évalue les candidats et ne promeut que les éléments qualifiés vers la mémoire à long terme (`MEMORY.md`).
-Il est conçu pour maintenir une mémoire à long terme à fort signal :
+Elle est conçue pour conserver un signal élevé dans la mémoire à long terme :
-- **Sur adhésion** : désactivé par défaut.
-- **Planifié** : lorsqu’il est activé, `memory-core` gère automatiquement une tâche cron récurrente pour un cycle complet de rêve.
-- **Avec seuils** : les promotions doivent passer des seuils de score, de fréquence de rappel et de diversité des requêtes.
-- **Révisable** : les résumés de phase et les entrées du journal sont écrits dans `DREAMS.md` pour examen humain.
+- **Sur adhésion** : désactivée par défaut.
+- **Planifiée** : lorsqu’elle est activée, `memory-core` gère automatiquement une tâche cron récurrente pour une passe complète de rêverie.
+- **À seuil** : les promotions doivent passer des seuils de score, de fréquence de rappel et de diversité des requêtes.
+- **Révisable** : les résumés de phase et les entrées du journal sont écrits dans `DREAMS.md` pour relecture humaine.
-Pour le comportement des phases, les signaux de score et les détails du journal des rêves, consultez [Rêve (expérimental)](/concepts/dreaming).
+Pour le comportement des phases, les signaux de scoring et les détails du journal des rêves, consultez
+[Dreaming (experimental)](/fr/concepts/dreaming).
## CLI
@@ -97,9 +125,11 @@ openclaw memory index --force # Reconstruire l’index
- [Builtin Memory Engine](/fr/concepts/memory-builtin) -- backend SQLite par défaut
- [QMD Memory Engine](/fr/concepts/memory-qmd) -- sidecar local-first avancé
-- [Honcho Memory](/fr/concepts/memory-honcho) -- mémoire intersessions native pour l’IA
-- [Recherche en mémoire](/fr/concepts/memory-search) -- pipeline de recherche, fournisseurs et réglage
-- [Rêve (expérimental)](/concepts/dreaming) -- promotion en arrière-plan
+- [Honcho Memory](/fr/concepts/memory-honcho) -- mémoire intersessions native IA
+- [Memory Wiki](/fr/plugins/memory-wiki) -- coffre de connaissances compilé et outils natifs du wiki
+- [Memory Search](/fr/concepts/memory-search) -- pipeline de recherche, fournisseurs et
+ réglage
+- [Dreaming (experimental)](/fr/concepts/dreaming) -- promotion en arrière-plan
du rappel à court terme vers la mémoire à long terme
- [Référence de configuration de la mémoire](/fr/reference/memory-config) -- tous les paramètres de configuration
-- [Compactage](/fr/concepts/compaction) -- comment le compactage interagit avec la mémoire
+- [Compaction](/fr/concepts/compaction) -- comment la compaction interagit avec la mémoire
diff --git a/docs/fr/concepts/model-providers.md b/docs/fr/concepts/model-providers.md
index 9474c05be..366900107 100644
--- a/docs/fr/concepts/model-providers.md
+++ b/docs/fr/concepts/model-providers.md
@@ -1,14 +1,14 @@
---
read_when:
- - Vous avez besoin d'une référence de configuration des modèles fournisseur par fournisseur
- - Vous voulez des exemples de configurations ou des commandes d'onboarding CLI pour les fournisseurs de modèles
-summary: Vue d'ensemble des fournisseurs de modèles avec exemples de configurations et flux CLI
+ - Vous avez besoin d'une référence de configuration des modèles, fournisseur par fournisseur
+ - Vous voulez des exemples de config ou des commandes d'intégration CLI pour les fournisseurs de modèles
+summary: Vue d'ensemble des fournisseurs de modèles avec des exemples de config + des flux CLI
title: Fournisseurs de modèles
x-i18n:
- generated_at: "2026-04-08T02:16:05Z"
+ generated_at: "2026-04-08T06:02:59Z"
model: gpt-5.4
provider: openai
- source_hash: 26b36a2bc19a28a7ef39aa8e81a0050fea1d452ac4969122e5cdf8755e690258
+ source_hash: 558ac9e34b67fcc3dd6791a01bebc17e1c34152fa6c5611593d681e8cfa532d9
source_path: concepts/model-providers.md
workflow: 15
---
@@ -16,25 +16,25 @@ x-i18n:
# Fournisseurs de modèles
Cette page couvre les **fournisseurs de LLM/modèles** (et non les canaux de chat comme WhatsApp/Telegram).
-Pour les règles de sélection des modèles, voir [/concepts/models](/fr/concepts/models).
+Pour les règles de sélection des modèles, consultez [/concepts/models](/fr/concepts/models).
## Règles rapides
-- Les références de modèle utilisent `provider/model` (exemple : `opencode/claude-opus-4-6`).
+- Les références de modèles utilisent `provider/model` (exemple : `opencode/claude-opus-4-6`).
- Si vous définissez `agents.defaults.models`, cela devient la liste d'autorisation.
- Assistants CLI : `openclaw onboard`, `openclaw models list`, `openclaw models set `.
- Les règles d'exécution de secours, les sondes de refroidissement et la persistance des remplacements de session sont
documentées dans [/concepts/model-failover](/fr/concepts/model-failover).
- `models.providers.*.models[].contextWindow` est la métadonnée native du modèle ;
- `models.providers.*.models[].contextTokens` est la limite d'exécution effective.
+ `models.providers.*.models[].contextTokens` est la limite effective à l'exécution.
- Les plugins de fournisseur peuvent injecter des catalogues de modèles via `registerProvider({ catalog })` ;
OpenClaw fusionne cette sortie dans `models.providers` avant d'écrire
`models.json`.
- Les manifestes de fournisseur peuvent déclarer `providerAuthEnvVars` afin que les sondes d'authentification génériques basées sur l'environnement
- n'aient pas besoin de charger le runtime du plugin. La carte restante des variables d'environnement du cœur
- sert désormais uniquement aux fournisseurs non plugin/cœur et à quelques cas de priorité génériques
- comme l'onboarding Anthropic avec priorité à la clé API.
-- Les plugins de fournisseur peuvent également posséder le comportement d'exécution du fournisseur via
+ n'aient pas besoin de charger l'exécution du plugin. La carte restante des variables d'environnement du noyau
+ est désormais réservée aux fournisseurs non plugin/du noyau et à quelques cas de précédence générique
+ comme l'intégration Anthropic avec priorité à la clé API.
+- Les plugins de fournisseur peuvent aussi posséder le comportement d'exécution du fournisseur via
`normalizeModelId`, `normalizeTransport`, `normalizeConfig`,
`applyNativeStreamingUsageCompat`, `resolveConfigApiKey`,
`resolveSyntheticAuth`, `shouldDeferSyntheticProfileAuth`,
@@ -50,184 +50,184 @@ Pour les règles de sélection des modèles, voir [/concepts/models](/fr/concept
`isCacheTtlEligible`, `buildMissingAuthMessage`, `suppressBuiltInModel`,
`augmentModelCatalog`, `isBinaryThinking`, `supportsXHighThinking`,
`resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`,
- `prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, and
+ `prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, et
`onModelSelected`.
-- Remarque : les `capabilities` du runtime fournisseur sont des métadonnées de runner partagées (famille de fournisseur, particularités de transcription/outillage, indications de transport/cache). Ce n'est pas la
- même chose que le [modèle de capacité public](/fr/plugins/architecture#public-capability-model)
+- Remarque : les `capabilities` de l'exécution du fournisseur sont des métadonnées partagées du runner (famille de fournisseurs, particularités des transcriptions/outils, indices de transport/cache). Ce n'est pas le
+ même modèle que le [modèle public de capacités](/fr/plugins/architecture#public-capability-model)
qui décrit ce qu'un plugin enregistre (inférence de texte, parole, etc.).
-## Comportement de fournisseur géré par le plugin
+## Comportement du fournisseur possédé par le plugin
Les plugins de fournisseur peuvent désormais posséder la majeure partie de la logique spécifique au fournisseur tandis qu'OpenClaw conserve
la boucle d'inférence générique.
Répartition typique :
-- `auth[].run` / `auth[].runNonInteractive` : le fournisseur gère les flux d'onboarding/connexion
+- `auth[].run` / `auth[].runNonInteractive` : le fournisseur possède les flux d'intégration/connexion
pour `openclaw onboard`, `openclaw models auth`, et la configuration sans interface
-- `wizard.setup` / `wizard.modelPicker` : le fournisseur gère les libellés de choix d'authentification,
- les alias hérités, les indications de liste d'autorisation d'onboarding et les entrées de configuration dans les sélecteurs d'onboarding/modèle
+- `wizard.setup` / `wizard.modelPicker` : le fournisseur possède les libellés de choix d'authentification,
+ les alias hérités, les indices de liste d'autorisation pour l'intégration, et les entrées de configuration dans les sélecteurs d'intégration/de modèle
- `catalog` : le fournisseur apparaît dans `models.providers`
-- `normalizeModelId` : le fournisseur normalise les identifiants de modèle hérités/préversion avant
+- `normalizeModelId` : le fournisseur normalise les identifiants de modèle hérités/preview avant
la recherche ou la canonicalisation
-- `normalizeTransport` : le fournisseur normalise la famille de transport `api` / `baseUrl`
+- `normalizeTransport` : le fournisseur normalise `api` / `baseUrl` de la famille de transport
avant l'assemblage générique du modèle ; OpenClaw vérifie d'abord le fournisseur correspondant,
- puis les autres plugins de fournisseur capables de hooks jusqu'à ce que l'un modifie réellement le
- transport
-- `normalizeConfig` : le fournisseur normalise la configuration `models.providers.` avant
- que le runtime ne l'utilise ; OpenClaw vérifie d'abord le fournisseur correspondant, puis les autres
- plugins de fournisseur capables de hooks jusqu'à ce que l'un modifie réellement la configuration. Si aucun
- hook de fournisseur ne réécrit la configuration, les assistants groupés de la famille Google
- normalisent encore les entrées de fournisseur Google prises en charge.
-- `applyNativeStreamingUsageCompat` : le fournisseur applique des réécritures de compatibilité d'usage de streaming natif pilotées par les endpoints pour les fournisseurs configurés
-- `resolveConfigApiKey` : le fournisseur résout l'authentification par marqueur d'environnement pour les fournisseurs configurés
- sans forcer le chargement complet de l'authentification du runtime. `amazon-bedrock` a également un
- résolveur intégré de marqueur d'environnement AWS ici, même si l'authentification runtime de Bedrock utilise
+ puis les autres plugins de fournisseur capables d'utiliser ce hook jusqu'à ce que l'un modifie réellement
+ le transport
+- `normalizeConfig` : le fournisseur normalise la config `models.providers.` avant
+ son utilisation à l'exécution ; OpenClaw vérifie d'abord le fournisseur correspondant, puis les autres
+ plugins de fournisseur capables d'utiliser ce hook jusqu'à ce que l'un modifie réellement la config. Si aucun
+ hook de fournisseur ne réécrit la config, les assistants Google intégrés de la famille Google
+ normalisent encore les entrées prises en charge du fournisseur Google.
+- `applyNativeStreamingUsageCompat` : le fournisseur applique des réécritures de compatibilité d'utilisation native en streaming pilotées par l'endpoint pour les fournisseurs de config
+- `resolveConfigApiKey` : le fournisseur résout l'authentification par marqueur d'environnement pour les fournisseurs de config
+ sans forcer le chargement complet de l'authentification à l'exécution. `amazon-bedrock` dispose aussi ici d'un
+ résolveur intégré de marqueur d'environnement AWS, même si l'authentification d'exécution Bedrock utilise
la chaîne par défaut du SDK AWS.
-- `resolveSyntheticAuth` : le fournisseur peut exposer une disponibilité d'authentification locale/autohébergée ou autre
- basée sur la configuration sans persister de secrets en clair
-- `shouldDeferSyntheticProfileAuth` : le fournisseur peut marquer les espaces réservés de profil synthétique stockés
- comme ayant une priorité plus faible que l'authentification basée sur l'environnement/la configuration
-- `resolveDynamicModel` : le fournisseur accepte des identifiants de modèle qui ne sont pas encore présents dans le
+- `resolveSyntheticAuth` : le fournisseur peut exposer la disponibilité d'une authentification locale/autohébergée ou autre
+ basée sur la config sans persister des secrets en clair
+- `shouldDeferSyntheticProfileAuth` : le fournisseur peut marquer les espaces réservés des profils synthétiques stockés
+ comme ayant une priorité inférieure à l'authentification basée sur l'environnement/la config
+- `resolveDynamicModel` : le fournisseur accepte les identifiants de modèle qui ne sont pas encore présents dans le
catalogue statique local
- `prepareDynamicModel` : le fournisseur a besoin d'un rafraîchissement des métadonnées avant de réessayer
la résolution dynamique
- `normalizeResolvedModel` : le fournisseur a besoin de réécritures du transport ou de l'URL de base
-- `contributeResolvedModelCompat` : le fournisseur apporte des drapeaux de compatibilité pour ses
- modèles de fournisseur même lorsqu'ils arrivent via un autre transport compatible
-- `capabilities` : le fournisseur publie les particularités de transcription/outillage/famille de fournisseur
-- `normalizeToolSchemas` : le fournisseur nettoie les schémas d'outils avant que le
- runner intégré ne les voie
+- `contributeResolvedModelCompat` : le fournisseur contribue des indicateurs de compatibilité pour ses
+ modèles fournisseur même lorsqu'ils arrivent via un autre transport compatible
+- `capabilities` : le fournisseur publie des particularités de transcription/outillage/famille de fournisseur
+- `normalizeToolSchemas` : le fournisseur nettoie les schémas d'outil avant que le
+ runner embarqué ne les voie
- `inspectToolSchemas` : le fournisseur expose des avertissements de schéma spécifiques au transport
après normalisation
- `resolveReasoningOutputMode` : le fournisseur choisit les contrats de sortie de raisonnement natifs ou balisés
-- `prepareExtraParams` : le fournisseur définit par défaut ou normalise les paramètres de requête par modèle
-- `createStreamFn` : le fournisseur remplace le chemin de flux normal par un transport
- entièrement personnalisé
-- `wrapStreamFn` : le fournisseur applique des wrappers de compatibilité des en-têtes/corps/modèle de requête
-- `resolveTransportTurnState` : le fournisseur fournit des en-têtes ou métadonnées
- de transport natif par tour
-- `resolveWebSocketSessionPolicy` : le fournisseur fournit des en-têtes de session WebSocket natifs
- ou une politique de refroidissement de session
-- `createEmbeddingProvider` : le fournisseur gère le comportement d'embedding mémoire quand il
- doit appartenir au plugin de fournisseur plutôt qu'au répartiteur central d'embeddings
-- `formatApiKey` : le fournisseur formate les profils d'authentification stockés en chaîne
- `apiKey` attendue par le transport au runtime
-- `refreshOAuth` : le fournisseur gère le rafraîchissement OAuth quand les
- mécanismes de rafraîchissement partagés `pi-ai` ne suffisent pas
-- `buildAuthDoctorHint` : le fournisseur ajoute des indications de réparation quand le rafraîchissement OAuth
+- `prepareExtraParams` : le fournisseur applique des valeurs par défaut ou normalise les paramètres de requête par modèle
+- `createStreamFn` : le fournisseur remplace le chemin de flux normal par un
+ transport entièrement personnalisé
+- `wrapStreamFn` : le fournisseur applique des wrappers de compatibilité requête/en-têtes/corps/modèle
+- `resolveTransportTurnState` : le fournisseur fournit les
+ en-têtes ou métadonnées natifs de transport par tour
+- `resolveWebSocketSessionPolicy` : le fournisseur fournit les
+ en-têtes natifs de session WebSocket ou la politique de refroidissement de session
+- `createEmbeddingProvider` : le fournisseur possède le comportement des embeddings mémoire lorsqu'il
+ relève du plugin de fournisseur plutôt que du commutateur central d'embeddings du noyau
+- `formatApiKey` : le fournisseur formate les profils d'authentification stockés dans la chaîne
+ `apiKey` attendue par le transport à l'exécution
+- `refreshOAuth` : le fournisseur possède le rafraîchissement OAuth lorsque les rafraîchisseurs
+ partagés `pi-ai` ne suffisent pas
+- `buildAuthDoctorHint` : le fournisseur ajoute des conseils de réparation lorsque l'actualisation OAuth
échoue
-- `matchesContextOverflowError` : le fournisseur reconnaît les erreurs de dépassement de fenêtre de contexte
- spécifiques au fournisseur que les heuristiques génériques manqueraient
-- `classifyFailoverReason` : le fournisseur mappe les erreurs brutes de transport/API spécifiques au fournisseur
- vers des raisons de bascule comme la limitation de débit ou la surcharge
-- `isCacheTtlEligible` : le fournisseur décide quels identifiants de modèle en amont prennent en charge le TTL du cache de prompt
+- `matchesContextOverflowError` : le fournisseur reconnaît les erreurs spécifiques au fournisseur
+ de dépassement de fenêtre de contexte que les heuristiques génériques ne détecteraient pas
+- `classifyFailoverReason` : le fournisseur mappe les erreurs brutes spécifiques au fournisseur de transport/API
+ vers des raisons de basculement comme la limitation de débit ou la surcharge
+- `isCacheTtlEligible` : le fournisseur décide quels identifiants de modèle amont prennent en charge le TTL du cache de prompt
- `buildMissingAuthMessage` : le fournisseur remplace l'erreur générique du magasin d'authentification
- par une indication de récupération spécifique au fournisseur
+ par un conseil de récupération spécifique au fournisseur
- `suppressBuiltInModel` : le fournisseur masque les lignes amont obsolètes et peut renvoyer une
- erreur gérée par le fournisseur pour les échecs de résolution directe
+ erreur appartenant au fournisseur en cas d'échec de résolution directe
- `augmentModelCatalog` : le fournisseur ajoute des lignes de catalogue synthétiques/finales après
- la découverte et la fusion de configuration
-- `isBinaryThinking` : le fournisseur gère l'UX de réflexion binaire activée/désactivée
-- `supportsXHighThinking` : le fournisseur active `xhigh` pour certains modèles sélectionnés
-- `resolveDefaultThinkingLevel` : le fournisseur gère la politique `/think` par défaut pour une
+ la découverte et la fusion de config
+- `isBinaryThinking` : le fournisseur possède l'UX de réflexion binaire activé/désactivé
+- `supportsXHighThinking` : le fournisseur fait entrer certains modèles dans `xhigh`
+- `resolveDefaultThinkingLevel` : le fournisseur possède la politique `/think` par défaut pour une
famille de modèles
- `applyConfigDefaults` : le fournisseur applique des valeurs globales par défaut spécifiques au fournisseur
- pendant la matérialisation de la configuration selon le mode d'authentification, l'environnement ou la famille de modèles
-- `isModernModelRef` : le fournisseur gère la correspondance des modèles préférés live/smoke
-- `prepareRuntimeAuth` : le fournisseur transforme un identifiant configuré en
- jeton runtime de courte durée
-- `resolveUsageAuth` : le fournisseur résout les identifiants d'usage/quota pour `/usage`
+ lors de la matérialisation de la config en fonction du mode d'authentification, de l'environnement ou de la famille de modèles
+- `isModernModelRef` : le fournisseur possède la correspondance des modèles préférés live/smoke
+- `prepareRuntimeAuth` : le fournisseur transforme un identifiant configuré en un jeton d'exécution
+ de courte durée
+- `resolveUsageAuth` : le fournisseur résout les identifiants d'utilisation/quota pour `/usage`
et les surfaces associées de statut/rapport
-- `fetchUsageSnapshot` : le fournisseur gère la récupération/l'analyse de l'endpoint d'usage tandis que
- le cœur conserve l'enveloppe de résumé et le formatage
-- `onModelSelected` : le fournisseur exécute des effets secondaires après la sélection
- du modèle comme la télémétrie ou la tenue de session gérée par le fournisseur
+- `fetchUsageSnapshot` : le fournisseur possède la récupération/l'analyse de l'endpoint d'utilisation tandis que
+ le noyau conserve le shell de résumé et le formatage
+- `onModelSelected` : le fournisseur exécute des effets secondaires après sélection comme la
+ télémétrie ou la tenue de session appartenant au fournisseur
-Exemples groupés actuels :
+Exemples intégrés actuels :
-- `anthropic` : solution de secours de compatibilité ascendante Claude 4.6, indications de réparation d'authentification, récupération
- de l'endpoint d'usage, métadonnées de TTL de cache/famille de fournisseur, et valeurs globales par défaut
- conscientes de l'authentification
-- `amazon-bedrock` : correspondance gérée par le fournisseur des dépassements de contexte et classification des raisons de
- bascule pour les erreurs Bedrock spécifiques de limitation/pas prêt, plus la famille de replay partagée `anthropic-by-model` pour des garde-fous de
- politique de relecture Claude uniquement sur le trafic Anthropic
-- `anthropic-vertex` : garde-fous de politique de relecture Claude uniquement sur le trafic
+- `anthropic` : fallback de compatibilité ascendante Claude 4.6, conseils de réparation d'authentification, récupération de l'endpoint
+ d'utilisation, métadonnées cache-TTL/famille de fournisseur, et valeurs par défaut globales de config
+ sensibles à l'authentification
+- `amazon-bedrock` : correspondance du dépassement de contexte possédée par le fournisseur et classification des
+ raisons de basculement pour les erreurs Bedrock spécifiques de limitation/pas prêt, plus la famille de replay partagée `anthropic-by-model` pour les protections de politique de replay Claude uniquement
+ sur le trafic Anthropic
+- `anthropic-vertex` : protections de politique de replay Claude uniquement sur le trafic
de messages Anthropic
-- `openrouter` : identifiants de modèle pass-through, wrappers de requête, indications de capacité
- du fournisseur, assainissement des signatures de pensée Gemini sur le trafic Gemini proxifié,
- injection de raisonnement proxy via la famille de flux `openrouter-thinking`,
- transfert des métadonnées de routage et politique de TTL de cache
-- `github-copilot` : onboarding/connexion d'appareil, solution de secours de modèle de compatibilité ascendante,
- indications de transcription Claude-thinking, échange de jeton runtime, et récupération
- de l'endpoint d'usage
-- `openai` : solution de secours de compatibilité ascendante GPT-5.4, normalisation directe du transport OpenAI,
- indications d'authentification manquante tenant compte de Codex, suppression de Spark, lignes de catalogue synthétiques
- OpenAI/Codex, politique de réflexion/modèle live, normalisation des alias de jetons d'usage
+- `openrouter` : identifiants de modèle pass-through, wrappers de requête, indices de capacité du fournisseur,
+ assainissement des signatures de pensée Gemini sur le trafic proxy Gemini, injection de raisonnement proxy
+ via la famille de flux `openrouter-thinking`, transfert des métadonnées de routage,
+ et politique cache-TTL
+- `github-copilot` : intégration/connexion de l'appareil, fallback de modèle à compatibilité ascendante,
+ indices de transcription de réflexion Claude, échange de jeton d'exécution, et récupération de l'endpoint d'utilisation
+- `openai` : fallback de compatibilité ascendante GPT-5.4, normalisation directe du transport OpenAI,
+ conseils d'authentification manquante sensibles à Codex, suppression de Spark, lignes de catalogue synthétiques
+ OpenAI/Codex, politique thinking/live-model, normalisation des alias de jetons d'utilisation
(`input` / `output` et familles `prompt` / `completion`), la famille de flux partagée `openai-responses-defaults`
- pour les wrappers natifs OpenAI/Codex, métadonnées de famille de fournisseur, enregistrement groupé du fournisseur de génération d'images
- pour `gpt-image-1`, et enregistrement groupé du fournisseur de génération vidéo
- pour `sora-2`
-- `google` et `google-gemini-cli` : solution de secours de compatibilité ascendante Gemini 3.1,
- validation native de relecture Gemini, assainissement de la relecture bootstrap, mode
- de sortie de raisonnement balisé, correspondance de modèle moderne, enregistrement groupé du fournisseur de génération d'images
- pour les modèles Gemini image-preview, et enregistrement groupé
- du fournisseur de génération vidéo pour les modèles Veo ; Gemini CLI OAuth gère également
- le formatage des jetons de profil d'authentification, l'analyse des jetons d'usage et la récupération
- des endpoints de quota pour les surfaces d'usage
-- `moonshot` : transport partagé, normalisation des charges utiles de réflexion gérée par le plugin
-- `kilocode` : transport partagé, en-têtes de requête gérés par le plugin, normalisation des charges utiles de raisonnement,
- assainissement des signatures de pensée Gemini proxifiées et politique de TTL de cache
-- `zai` : solution de secours de compatibilité ascendante GLM-5, valeurs par défaut `tool_stream`, politique de TTL de cache,
- politique de réflexion binaire/modèle live, et authentification d'usage + récupération de quota ;
- les identifiants inconnus `glm-5*` sont synthétisés à partir du modèle groupé `glm-4.7`
+ pour les wrappers natifs OpenAI/Codex, métadonnées de famille de fournisseur, enregistrement intégré du fournisseur
+ de génération d'images pour `gpt-image-1`, et enregistrement intégré du fournisseur
+ de génération vidéo pour `sora-2`
+- `google` et `google-gemini-cli` : fallback de compatibilité ascendante Gemini 3.1,
+ validation native du replay Gemini, assainissement du replay bootstrap, mode de sortie de raisonnement
+ balisé, correspondance des modèles modernes, enregistrement intégré du fournisseur de génération d'images
+ pour les modèles Gemini image-preview, et enregistrement intégré du
+ fournisseur de génération vidéo pour les modèles Veo ; l'OAuth Gemini CLI
+ possède aussi le formatage des jetons de profil d'authentification, l'analyse des jetons d'utilisation et la récupération de l'endpoint de quota
+ pour les surfaces d'utilisation
+- `moonshot` : transport partagé, normalisation de la charge utile de réflexion appartenant au plugin
+- `kilocode` : transport partagé, en-têtes de requête appartenant au plugin, normalisation de la charge utile de raisonnement,
+ assainissement des signatures de pensée proxy-Gemini, et politique
+ cache-TTL
+- `zai` : fallback de compatibilité ascendante GLM-5, valeurs par défaut `tool_stream`, politique cache-TTL,
+ politique binary-thinking/live-model, et authentification d'utilisation + récupération du quota ;
+ les identifiants inconnus `glm-5*` sont synthétisés à partir du modèle intégré `glm-4.7`
- `xai` : normalisation native du transport Responses, réécritures d'alias `/fast` pour
- les variantes rapides de Grok, `tool_stream` par défaut, nettoyage spécifique à xAI des schémas d'outils /
- charges utiles de raisonnement, et enregistrement groupé du fournisseur de génération vidéo
+ les variantes rapides de Grok, `tool_stream` par défaut, nettoyage spécifique à xAI des schémas d'outil /
+ charges utiles de raisonnement, et enregistrement intégré du fournisseur de génération vidéo
pour `grok-imagine-video`
-- `mistral` : métadonnées de capacité gérées par le plugin
-- `opencode` et `opencode-go` : métadonnées de capacité gérées par le plugin plus
- assainissement des signatures de pensée Gemini proxifiées
-- `alibaba` : catalogue de génération vidéo géré par le plugin pour les références directes aux modèles Wan
- telles que `alibaba/wan2.6-t2v`
-- `byteplus` : catalogues gérés par le plugin plus enregistrement groupé du fournisseur de génération vidéo
+- `mistral` : métadonnées de capacité appartenant au plugin
+- `opencode` et `opencode-go` : métadonnées de capacité appartenant au plugin plus
+ assainissement des signatures de pensée proxy-Gemini
+- `alibaba` : catalogue de génération vidéo appartenant au plugin pour les références directes de modèles Wan
+ comme `alibaba/wan2.6-t2v`
+- `byteplus` : catalogues appartenant au plugin plus enregistrement intégré du fournisseur de génération vidéo
pour les modèles Seedance texte-vers-vidéo/image-vers-vidéo
-- `fal` : enregistrement groupé du fournisseur de génération vidéo pour des fournisseurs hébergés tiers
- d'image plus enregistrement groupé du fournisseur de génération vidéo pour des modèles vidéo tiers hébergés
+- `fal` : enregistrement intégré du fournisseur de génération vidéo pour les modèles vidéo tiers hébergés
+ et enregistrement du fournisseur de génération d'images pour les modèles d'image FLUX, plus enregistrement intégré
+ du fournisseur de génération vidéo pour les modèles vidéo tiers hébergés
- `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`,
- `stepfun`, `synthetic`, `venice`, `vercel-ai-gateway`, et `volcengine` :
- catalogues gérés par le plugin uniquement
-- `qwen` : catalogues gérés par le plugin pour les modèles texte plus enregistrements partagés
- de fournisseurs media-understanding et génération vidéo pour ses surfaces multimodales ;
- la génération vidéo Qwen utilise les endpoints vidéo Standard DashScope avec des modèles Wan groupés tels que `wan2.6-t2v` et `wan2.7-r2v`
-- `runway` : enregistrement géré par le plugin du fournisseur de génération vidéo pour des modèles natifs
+ `stepfun`, `synthetic`, `venice`, `vercel-ai-gateway` et `volcengine` :
+ catalogues appartenant au plugin uniquement
+- `qwen` : catalogues appartenant au plugin pour les modèles texte plus enregistrements partagés des fournisseurs
+ media-understanding et génération vidéo pour ses surfaces multimodales ; la génération vidéo Qwen utilise les endpoints vidéo DashScope Standard
+ avec des modèles Wan intégrés comme `wan2.6-t2v` et `wan2.7-r2v`
+- `runway` : enregistrement du fournisseur de génération vidéo appartenant au plugin pour les modèles natifs
Runway basés sur des tâches comme `gen4.5`
-- `minimax` : catalogues gérés par le plugin, enregistrement groupé du fournisseur de génération vidéo
- pour les modèles vidéo Hailuo, enregistrement groupé du fournisseur de génération d'images
- pour `image-01`, sélection hybride de politique de relecture Anthropic/OpenAI,
- et logique d'authentification/cliché d'usage
-- `together` : catalogues gérés par le plugin plus enregistrement groupé du fournisseur de génération vidéo
+- `minimax` : catalogues appartenant au plugin, enregistrement intégré du fournisseur de génération vidéo
+ pour les modèles vidéo Hailuo, enregistrement intégré du fournisseur de génération d'images
+ pour `image-01`, sélection hybride de politique de replay Anthropic/OpenAI,
+ et logique auth/snapshot d'utilisation
+- `together` : catalogues appartenant au plugin plus enregistrement intégré du fournisseur de génération vidéo
pour les modèles vidéo Wan
-- `xiaomi` : catalogues gérés par le plugin plus logique d'authentification/cliché d'usage
+- `xiaomi` : catalogues appartenant au plugin plus logique auth/snapshot d'utilisation
-Le plugin groupé `openai` possède désormais les deux identifiants de fournisseur : `openai` et
+Le plugin `openai` intégré possède désormais les deux identifiants de fournisseur : `openai` et
`openai-codex`.
-Cela couvre les fournisseurs qui s'intègrent encore aux transports normaux d'OpenClaw. Un fournisseur
-qui a besoin d'un exécuteur de requête totalement personnalisé relève d'une surface
-d'extension distincte et plus avancée.
+Cela couvre les fournisseurs qui s'intègrent encore dans les transports normaux d'OpenClaw. Un fournisseur
+qui a besoin d'un exécuteur de requêtes entièrement personnalisé relève d'une surface d'extension distincte et plus profonde.
## Rotation des clés API
-- Prend en charge la rotation générique de fournisseur pour certains fournisseurs sélectionnés.
+- Prend en charge la rotation générique des fournisseurs pour certains fournisseurs sélectionnés.
- Configurez plusieurs clés via :
- `OPENCLAW_LIVE__KEY` (remplacement live unique, priorité la plus élevée)
- - `_API_KEYS` (liste séparée par virgules ou points-virgules)
+ - `_API_KEYS` (liste séparée par des virgules ou des points-virgules)
- `_API_KEY` (clé principale)
- - `_API_KEY_*` (liste numérotée, par exemple `_API_KEY_1`)
-- Pour les fournisseurs Google, `GOOGLE_API_KEY` est aussi inclus comme solution de secours.
+ - `_API_KEY_*` (liste numérotée, par ex. `_API_KEY_1`)
+- Pour les fournisseurs Google, `GOOGLE_API_KEY` est aussi inclus comme fallback.
- L'ordre de sélection des clés préserve la priorité et déduplique les valeurs.
-- Les requêtes sont réessayées avec la clé suivante uniquement en cas de réponses de limitation de débit (par
+- Les requêtes sont réessayées avec la clé suivante uniquement sur les réponses de limitation de débit (par
exemple `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many
concurrent requests`, `ThrottlingException`, `concurrency limit reached`,
`workers_ai ... quota limit exceeded`, ou des messages périodiques de limite d'utilisation).
@@ -236,8 +236,8 @@ concurrent requests`, `ThrottlingException`, `concurrency limit reached`,
## Fournisseurs intégrés (catalogue pi-ai)
-OpenClaw est livré avec le catalogue pi‑ai. Ces fournisseurs ne nécessitent **aucune**
-configuration `models.providers` ; définissez simplement l'authentification et choisissez un modèle.
+OpenClaw est livré avec le catalogue pi-ai. Ces fournisseurs ne nécessitent **aucune**
+config `models.providers` ; il suffit de définir l'authentification + choisir un modèle.
### OpenAI
@@ -247,17 +247,17 @@ configuration `models.providers` ; définissez simplement l'authentification et
- Exemples de modèles : `openai/gpt-5.4`, `openai/gpt-5.4-pro`
- CLI : `openclaw onboard --auth-choice openai-api-key`
- Le transport par défaut est `auto` (WebSocket d'abord, repli SSE)
-- Remplacez par modèle via `agents.defaults.models["openai/"].params.transport` (`"sse"`, `"websocket"`, ou `"auto"`)
+- Remplacez par modèle via `agents.defaults.models["openai/"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
- Le préchauffage WebSocket OpenAI Responses est activé par défaut via `params.openaiWsWarmup` (`true`/`false`)
- Le traitement prioritaire OpenAI peut être activé via `agents.defaults.models["openai/"].params.serviceTier`
- `/fast` et `params.fastMode` mappent les requêtes Responses directes `openai/*` vers `service_tier=priority` sur `api.openai.com`
-- Utilisez `params.serviceTier` si vous voulez un niveau explicite au lieu du basculement partagé `/fast`
-- Les en-têtes d'attribution OpenClaw masqués (`originator`, `version`,
+- Utilisez `params.serviceTier` lorsque vous voulez un niveau explicite au lieu du basculement partagé `/fast`
+- Les en-têtes d'attribution OpenClaw cachés (`originator`, `version`,
`User-Agent`) s'appliquent uniquement au trafic OpenAI natif vers `api.openai.com`, pas
aux proxys génériques compatibles OpenAI
-- Les routes OpenAI natives conservent aussi `store` de Responses, les indications de cache de prompt, et
- la mise en forme des charges utiles de compatibilité de raisonnement OpenAI ; les routes proxy non
-- `openai/gpt-5.3-codex-spark` est volontairement supprimé dans OpenClaw car l'API OpenAI live le rejette ; Spark est traité comme Codex uniquement
+- Les routes OpenAI natives conservent aussi `store` de Responses, les indices de cache de prompt, et
+ la mise en forme de charge utile de compatibilité de raisonnement OpenAI ; les routes proxy non
+- `openai/gpt-5.3-codex-spark` est volontairement supprimé dans OpenClaw car l'API OpenAI live le rejette ; Spark est traité comme réservé à Codex
```json5
{
@@ -272,9 +272,9 @@ configuration `models.providers` ; définissez simplement l'authentification et
- Rotation facultative : `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, plus `OPENCLAW_LIVE_ANTHROPIC_KEY` (remplacement unique)
- Exemple de modèle : `anthropic/claude-opus-4-6`
- CLI : `openclaw onboard --auth-choice apiKey`
-- Les requêtes Anthropic publiques directes prennent en charge le basculement partagé `/fast` et `params.fastMode`, y compris le trafic authentifié par clé API ou OAuth envoyé vers `api.anthropic.com` ; OpenClaw le mappe vers Anthropic `service_tier` (`auto` vs `standard_only`)
-- Remarque Anthropic : le personnel d'Anthropic nous a indiqué que l'usage de Claude CLI dans le style OpenClaw est de nouveau autorisé, donc OpenClaw considère la réutilisation de Claude CLI et l'usage de `claude -p` comme approuvés pour cette intégration, sauf si Anthropic publie une nouvelle politique.
-- Le jeton de configuration Anthropic reste disponible comme chemin de jeton pris en charge par OpenClaw, mais OpenClaw préfère désormais la réutilisation de Claude CLI et `claude -p` lorsqu'ils sont disponibles.
+- Les requêtes Anthropic publiques directes prennent en charge le basculement partagé `/fast` et `params.fastMode`, y compris le trafic authentifié par clé API et OAuth envoyé vers `api.anthropic.com` ; OpenClaw le mappe vers Anthropic `service_tier` (`auto` vs `standard_only`)
+- Remarque Anthropic : le personnel d'Anthropic nous a indiqué que l'utilisation de Claude CLI façon OpenClaw est de nouveau autorisée, donc OpenClaw traite la réutilisation de Claude CLI et l'usage de `claude -p` comme autorisés pour cette intégration tant qu'Anthropic ne publie pas une nouvelle politique.
+- Le setup-token Anthropic reste disponible comme chemin de jeton OpenClaw pris en charge, mais OpenClaw préfère désormais la réutilisation de Claude CLI et `claude -p` quand disponible.
```json5
{
@@ -289,15 +289,15 @@ configuration `models.providers` ; définissez simplement l'authentification et
- Exemple de modèle : `openai-codex/gpt-5.4`
- CLI : `openclaw onboard --auth-choice openai-codex` ou `openclaw models auth login --provider openai-codex`
- Le transport par défaut est `auto` (WebSocket d'abord, repli SSE)
-- Remplacez par modèle via `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"`, ou `"auto"`)
-- `params.serviceTier` est aussi transmis sur les requêtes Responses Codex natives (`chatgpt.com/backend-api`)
-- Les en-têtes d'attribution OpenClaw masqués (`originator`, `version`,
- `User-Agent`) sont uniquement attachés au trafic Codex natif vers
+- Remplacez par modèle via `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"` ou `"auto"`)
+- `params.serviceTier` est aussi transféré sur les requêtes natives Codex Responses (`chatgpt.com/backend-api`)
+- Les en-têtes d'attribution OpenClaw cachés (`originator`, `version`,
+ `User-Agent`) sont attachés uniquement au trafic Codex natif vers
`chatgpt.com/backend-api`, pas aux proxys génériques compatibles OpenAI
-- Partage le même basculement `/fast` et la même configuration `params.fastMode` que `openai/*` direct ; OpenClaw le mappe vers `service_tier=priority`
+- Partage le même basculement `/fast` et la même config `params.fastMode` que `openai/*` direct ; OpenClaw le mappe vers `service_tier=priority`
- `openai-codex/gpt-5.3-codex-spark` reste disponible lorsque le catalogue OAuth Codex l'expose ; dépend des droits
-- `openai-codex/gpt-5.4` conserve le `contextWindow = 1050000` natif et un `contextTokens = 272000` par défaut au runtime ; remplacez la limite runtime avec `models.providers.openai-codex.models[].contextTokens`
-- Remarque de politique : OpenAI Codex OAuth est explicitement pris en charge pour les outils/flux externes comme OpenClaw.
+- `openai-codex/gpt-5.4` conserve `contextWindow = 1050000` natif et une valeur d'exécution par défaut `contextTokens = 272000` ; remplacez la limite d'exécution avec `models.providers.openai-codex.models[].contextTokens`
+- Remarque de politique : OpenAI Codex OAuth est explicitement pris en charge pour les outils/flux de travail externes comme OpenClaw.
```json5
{
@@ -319,15 +319,15 @@ configuration `models.providers` ; définissez simplement l'authentification et
### Autres options hébergées de type abonnement
-- [Qwen Cloud](/fr/providers/qwen) : surface du fournisseur Qwen Cloud plus mappage des endpoints Alibaba DashScope et Coding Plan
+- [Qwen Cloud](/fr/providers/qwen) : surface de fournisseur Qwen Cloud plus mappage des endpoints Alibaba DashScope et Coding Plan
- [MiniMax](/fr/providers/minimax) : accès MiniMax Coding Plan via OAuth ou clé API
-- [GLM Models](/fr/providers/glm) : endpoints Z.AI Coding Plan ou API générales
+- [GLM Models](/fr/providers/glm) : endpoints Z.AI Coding Plan ou API générale
### OpenCode
- Authentification : `OPENCODE_API_KEY` (ou `OPENCODE_ZEN_API_KEY`)
-- Fournisseur runtime Zen : `opencode`
-- Fournisseur runtime Go : `opencode-go`
+- Fournisseur d'exécution Zen : `opencode`
+- Fournisseur d'exécution Go : `opencode-go`
- Exemples de modèles : `opencode/claude-opus-4-6`, `opencode-go/kimi-k2.5`
- CLI : `openclaw onboard --auth-choice opencode-zen` ou `openclaw onboard --auth-choice opencode-go`
@@ -341,40 +341,40 @@ configuration `models.providers` ; définissez simplement l'authentification et
- Fournisseur : `google`
- Authentification : `GEMINI_API_KEY`
-- Rotation facultative : `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, solution de secours `GOOGLE_API_KEY`, et `OPENCLAW_LIVE_GEMINI_KEY` (remplacement unique)
+- Rotation facultative : `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY`, et `OPENCLAW_LIVE_GEMINI_KEY` (remplacement unique)
- Exemples de modèles : `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview`
-- Compatibilité : la configuration OpenClaw héritée utilisant `google/gemini-3.1-flash-preview` est normalisée en `google/gemini-3-flash-preview`
+- Compatibilité : l'ancienne config OpenClaw utilisant `google/gemini-3.1-flash-preview` est normalisée en `google/gemini-3-flash-preview`
- CLI : `openclaw onboard --auth-choice gemini-api-key`
- Les exécutions Gemini directes acceptent aussi `agents.defaults.models["google/"].params.cachedContent`
- (ou l'ancien `cached_content`) pour transmettre un handle natif du fournisseur
- `cachedContents/...` ; les hits de cache Gemini apparaissent comme `cacheRead` dans OpenClaw
+ (ou l'ancien `cached_content`) pour transférer un handle natif du fournisseur
+ `cachedContents/...` ; les hits de cache Gemini remontent comme `cacheRead` dans OpenClaw
### Google Vertex et Gemini CLI
- Fournisseurs : `google-vertex`, `google-gemini-cli`
- Authentification : Vertex utilise gcloud ADC ; Gemini CLI utilise son flux OAuth
-- Attention : Gemini CLI OAuth dans OpenClaw est une intégration non officielle. Certains utilisateurs ont signalé des restrictions de compte Google après l'utilisation de clients tiers. Consultez les conditions de Google et utilisez un compte non critique si vous choisissez de continuer.
-- Gemini CLI OAuth est livré dans le plugin groupé `google`.
+- Avertissement : l'OAuth Gemini CLI dans OpenClaw est une intégration non officielle. Certains utilisateurs ont signalé des restrictions de compte Google après l'utilisation de clients tiers. Consultez les conditions de Google et utilisez un compte non critique si vous choisissez de continuer.
+- L'OAuth Gemini CLI est fourni dans le plugin `google` intégré.
- Installez d'abord Gemini CLI :
- `brew install gemini-cli`
- ou `npm install -g @google/gemini-cli`
- - Activez : `openclaw plugins enable google`
+ - Activez-le : `openclaw plugins enable google`
- Connectez-vous : `openclaw models auth login --provider google-gemini-cli --set-default`
- Modèle par défaut : `google-gemini-cli/gemini-3-flash-preview`
- - Remarque : vous **ne** collez **pas** d'identifiant client ni de secret dans `openclaw.json`. Le flux de connexion CLI stocke
- les jetons dans des profils d'authentification sur l'hôte de la passerelle.
+ - Remarque : vous ne collez **pas** un identifiant client ou un secret dans `openclaw.json`. Le flux de connexion CLI stocke
+ les jetons dans les profils d'authentification sur l'hôte de la passerelle.
- Si les requêtes échouent après la connexion, définissez `GOOGLE_CLOUD_PROJECT` ou `GOOGLE_CLOUD_PROJECT_ID` sur l'hôte de la passerelle.
- - Les réponses JSON de Gemini CLI sont analysées à partir de `response` ; l'usage se replie sur
+ - Les réponses JSON Gemini CLI sont analysées depuis `response` ; l'utilisation revient à
`stats`, avec `stats.cached` normalisé en `cacheRead` OpenClaw.
### Z.AI (GLM)
- Fournisseur : `zai`
- Authentification : `ZAI_API_KEY`
-- Exemple de modèle : `zai/glm-5`
+- Exemple de modèle : `zai/glm-5.1`
- CLI : `openclaw onboard --auth-choice zai-api-key`
- Alias : `z.ai/*` et `z-ai/*` sont normalisés en `zai/*`
- - `zai-api-key` détecte automatiquement l'endpoint Z.AI correspondant ; `zai-coding-global`, `zai-coding-cn`, `zai-global`, et `zai-cn` forcent une surface spécifique
+ - `zai-api-key` détecte automatiquement l'endpoint Z.AI correspondant ; `zai-coding-global`, `zai-coding-cn`, `zai-global` et `zai-cn` forcent une surface spécifique
### Vercel AI Gateway
@@ -390,44 +390,45 @@ configuration `models.providers` ; définissez simplement l'authentification et
- Exemple de modèle : `kilocode/kilo/auto`
- CLI : `openclaw onboard --auth-choice kilocode-api-key`
- URL de base : `https://api.kilo.ai/api/gateway/`
-- Le catalogue statique de secours est livré avec `kilocode/kilo/auto` ; la découverte live
- `https://api.kilo.ai/api/gateway/models` peut enrichir davantage le
- catalogue runtime.
-- Le routage amont exact derrière `kilocode/kilo/auto` est géré par Kilo Gateway,
- et non codé en dur dans OpenClaw.
+- Le catalogue statique de secours inclut `kilocode/kilo/auto` ; la découverte live
+ `https://api.kilo.ai/api/gateway/models` peut étendre davantage le
+ catalogue d'exécution.
+- Le routage amont exact derrière `kilocode/kilo/auto` appartient à Kilo Gateway,
+ il n'est pas codé en dur dans OpenClaw.
-Voir [/providers/kilocode](/fr/providers/kilocode) pour les détails de configuration.
+Consultez [/providers/kilocode](/fr/providers/kilocode) pour les détails de configuration.
-### Autres plugins de fournisseur groupés
+### Autres plugins de fournisseur intégrés
- OpenRouter : `openrouter` (`OPENROUTER_API_KEY`)
- Exemple de modèle : `openrouter/auto`
-- OpenClaw applique les en-têtes documentés d'attribution d'application d'OpenRouter uniquement lorsque
+- OpenClaw applique les en-têtes d'attribution d'application documentés par OpenRouter uniquement lorsque
la requête cible réellement `openrouter.ai`
-- Les marqueurs Anthropic `cache_control` spécifiques à OpenRouter sont de même limités aux
- routes OpenRouter vérifiées, et non à des URL proxy arbitraires
-- OpenRouter reste sur le chemin compatible OpenAI de type proxy, donc la mise en forme native des requêtes propre à OpenAI (`serviceTier`, `store` de Responses,
- indications de cache de prompt, charges utiles de compatibilité de raisonnement OpenAI) n'est pas transmise
-- Les références OpenRouter basées sur Gemini conservent uniquement l'assainissement des signatures de pensée Gemini proxifiées ;
- la validation de relecture Gemini native et les réécritures bootstrap restent désactivées
+- Les marqueurs `cache_control` Anthropic spécifiques à OpenRouter sont aussi limités
+ aux routes OpenRouter vérifiées, et non à des URL proxy arbitraires
+- OpenRouter reste sur le chemin de type proxy compatible OpenAI, donc la mise en forme de requête uniquement native à
+ OpenAI (`serviceTier`, `store` de Responses,
+ indices de cache de prompt, charges utiles de compatibilité de raisonnement OpenAI) n'est pas transférée
+- Les références OpenRouter adossées à Gemini conservent uniquement l'assainissement des signatures de pensée proxy-Gemini ;
+ la validation native du replay Gemini et les réécritures bootstrap restent désactivées
- Kilo Gateway : `kilocode` (`KILOCODE_API_KEY`)
- Exemple de modèle : `kilocode/kilo/auto`
-- Les références Kilo basées sur Gemini conservent le même chemin d'assainissement des signatures de pensée Gemini
- ; `kilocode/kilo/auto` et les autres indications ne prenant pas en charge le raisonnement proxy
+- Les références Kilo adossées à Gemini conservent le même chemin d'assainissement des signatures de pensée
+ proxy-Gemini ; `kilocode/kilo/auto` et les autres indices sans prise en charge du raisonnement proxy
ignorent l'injection de raisonnement proxy
- MiniMax : `minimax` (clé API) et `minimax-portal` (OAuth)
- Authentification : `MINIMAX_API_KEY` pour `minimax` ; `MINIMAX_OAUTH_TOKEN` ou `MINIMAX_API_KEY` pour `minimax-portal`
- Exemple de modèle : `minimax/MiniMax-M2.7` ou `minimax-portal/MiniMax-M2.7`
-- La configuration d'onboarding/clé API MiniMax écrit des définitions explicites du modèle M2.7 avec
- `input: ["text", "image"]` ; le catalogue groupé du fournisseur garde les références de chat
- en mode texte uniquement jusqu'à ce que cette configuration du fournisseur soit matérialisée
+- La configuration de l'intégration/de la clé API MiniMax écrit des définitions explicites du modèle M2.7 avec
+ `input: ["text", "image"]` ; le catalogue de fournisseur intégré conserve les références de chat
+ en texte seul jusqu'à la matérialisation de cette config fournisseur
- Moonshot : `moonshot` (`MOONSHOT_API_KEY`)
- Exemple de modèle : `moonshot/kimi-k2.5`
- Kimi Coding : `kimi` (`KIMI_API_KEY` ou `KIMICODE_API_KEY`)
- Exemple de modèle : `kimi/kimi-code`
- Qianfan : `qianfan` (`QIANFAN_API_KEY`)
- Exemple de modèle : `qianfan/deepseek-v3.2`
-- Qwen Cloud : `qwen` (`QWEN_API_KEY`, `MODELSTUDIO_API_KEY`, ou `DASHSCOPE_API_KEY`)
+- Qwen Cloud : `qwen` (`QWEN_API_KEY`, `MODELSTUDIO_API_KEY` ou `DASHSCOPE_API_KEY`)
- Exemple de modèle : `qwen/qwen3.5-plus`
- NVIDIA : `nvidia` (`NVIDIA_API_KEY`)
- Exemple de modèle : `nvidia/nvidia/llama-3.1-nemotron-70b-instruct`
@@ -446,9 +447,9 @@ Voir [/providers/kilocode](/fr/providers/kilocode) pour les détails de configur
- BytePlus : `byteplus` (`BYTEPLUS_API_KEY`)
- Exemple de modèle : `byteplus-plan/ark-code-latest`
- xAI : `xai` (`XAI_API_KEY`)
- - Les requêtes xAI natives groupées utilisent le chemin xAI Responses
+ - Les requêtes xAI natives intégrées utilisent le chemin xAI Responses
- `/fast` ou `params.fastMode: true` réécrit `grok-3`, `grok-3-mini`,
- `grok-4`, et `grok-4-0709` vers leurs variantes `*-fast`
+ `grok-4` et `grok-4-0709` vers leurs variantes `*-fast`
- `tool_stream` est activé par défaut ; définissez
`agents.defaults.models["xai/"].params.tool_stream` sur `false` pour
le désactiver
@@ -460,21 +461,21 @@ Voir [/providers/kilocode](/fr/providers/kilocode) pour les détails de configur
- Les modèles GLM sur Cerebras utilisent les identifiants `zai-glm-4.7` et `zai-glm-4.6`.
- URL de base compatible OpenAI : `https://api.cerebras.ai/v1`.
- GitHub Copilot : `github-copilot` (`COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN`)
-- Exemple de modèle Hugging Face Inference : `huggingface/deepseek-ai/DeepSeek-R1` ; CLI : `openclaw onboard --auth-choice huggingface-api-key`. Voir [Hugging Face (Inference)](/fr/providers/huggingface).
+- Exemple de modèle Hugging Face Inference : `huggingface/deepseek-ai/DeepSeek-R1` ; CLI : `openclaw onboard --auth-choice huggingface-api-key`. Consultez [Hugging Face (Inference)](/fr/providers/huggingface).
## Fournisseurs via `models.providers` (personnalisé/URL de base)
-Utilisez `models.providers` (ou `models.json`) pour ajouter des fournisseurs **personnalisés** ou des proxys
-compatibles OpenAI/Anthropic.
+Utilisez `models.providers` (ou `models.json`) pour ajouter des fournisseurs **personnalisés** ou
+des proxys compatibles OpenAI/Anthropic.
-Beaucoup des plugins de fournisseur groupés ci-dessous publient déjà un catalogue par défaut.
-Utilisez des entrées explicites `models.providers.` uniquement lorsque vous souhaitez remplacer l'URL de base,
-les en-têtes ou la liste des modèles par défaut.
+Beaucoup des plugins de fournisseur intégrés ci-dessous publient déjà un catalogue par défaut.
+Utilisez des entrées explicites `models.providers.` uniquement lorsque vous voulez remplacer l'
+URL de base, les en-têtes ou la liste de modèles par défaut.
### Moonshot AI (Kimi)
-Moonshot est livré comme plugin de fournisseur groupé. Utilisez le fournisseur intégré par
-défaut, et ajoutez une entrée explicite `models.providers.moonshot` uniquement lorsque vous
+Moonshot est fourni comme plugin de fournisseur intégré. Utilisez le fournisseur intégré par
+défaut et ajoutez une entrée explicite `models.providers.moonshot` uniquement lorsque vous
devez remplacer l'URL de base ou les métadonnées du modèle :
- Fournisseur : `moonshot`
@@ -482,7 +483,7 @@ devez remplacer l'URL de base ou les métadonnées du modèle :
- Exemple de modèle : `moonshot/kimi-k2.5`
- CLI : `openclaw onboard --auth-choice moonshot-api-key` ou `openclaw onboard --auth-choice moonshot-api-key-cn`
-Identifiants de modèle Kimi K2 :
+Identifiants de modèles Kimi K2 :
[//]: # "moonshot-kimi-k2-model-refs:start"
@@ -533,9 +534,9 @@ L'ancien `kimi/k2p5` reste accepté comme identifiant de modèle de compatibilit
### Volcano Engine (Doubao)
-Volcano Engine (火山引擎) donne accès à Doubao et à d'autres modèles en Chine.
+Volcano Engine (火山引擎) fournit un accès à Doubao et à d'autres modèles en Chine.
-- Fournisseur : `volcengine` (codage : `volcengine-plan`)
+- Fournisseur : `volcengine` (coding : `volcengine-plan`)
- Authentification : `VOLCANO_ENGINE_API_KEY`
- Exemple de modèle : `volcengine-plan/ark-code-latest`
- CLI : `openclaw onboard --auth-choice volcengine-api-key`
@@ -548,10 +549,10 @@ Volcano Engine (火山引擎) donne accès à Doubao et à d'autres modèles en
}
```
-L'onboarding utilise par défaut la surface de codage, mais le catalogue général `volcengine/*`
+L'intégration utilise par défaut la surface coding, mais le catalogue général `volcengine/*`
est enregistré en même temps.
-Dans les sélecteurs de modèle d'onboarding/configuration, le choix d'authentification Volcengine préfère à la fois les lignes
+Dans les sélecteurs de modèle d'intégration/configuration, le choix d'authentification Volcengine préfère à la fois les lignes
`volcengine/*` et `volcengine-plan/*`. Si ces modèles ne sont pas encore chargés,
OpenClaw revient au catalogue non filtré au lieu d'afficher un sélecteur vide
limité au fournisseur.
@@ -564,7 +565,7 @@ Modèles disponibles :
- `volcengine/glm-4-7-251222` (GLM 4.7)
- `volcengine/deepseek-v3-2-251201` (DeepSeek V3.2 128K)
-Modèles de codage (`volcengine-plan`) :
+Modèles coding (`volcengine-plan`) :
- `volcengine-plan/ark-code-latest`
- `volcengine-plan/doubao-seed-code`
@@ -574,9 +575,9 @@ Modèles de codage (`volcengine-plan`) :
### BytePlus (International)
-BytePlus ARK donne accès aux mêmes modèles que Volcano Engine pour les utilisateurs internationaux.
+BytePlus ARK fournit un accès aux mêmes modèles que Volcano Engine pour les utilisateurs internationaux.
-- Fournisseur : `byteplus` (codage : `byteplus-plan`)
+- Fournisseur : `byteplus` (coding : `byteplus-plan`)
- Authentification : `BYTEPLUS_API_KEY`
- Exemple de modèle : `byteplus-plan/ark-code-latest`
- CLI : `openclaw onboard --auth-choice byteplus-api-key`
@@ -589,10 +590,10 @@ BytePlus ARK donne accès aux mêmes modèles que Volcano Engine pour les utilis
}
```
-L'onboarding utilise par défaut la surface de codage, mais le catalogue général `byteplus/*`
+L'intégration utilise par défaut la surface coding, mais le catalogue général `byteplus/*`
est enregistré en même temps.
-Dans les sélecteurs de modèle d'onboarding/configuration, le choix d'authentification BytePlus préfère à la fois les lignes
+Dans les sélecteurs de modèle d'intégration/configuration, le choix d'authentification BytePlus préfère à la fois les lignes
`byteplus/*` et `byteplus-plan/*`. Si ces modèles ne sont pas encore chargés,
OpenClaw revient au catalogue non filtré au lieu d'afficher un sélecteur vide
limité au fournisseur.
@@ -603,7 +604,7 @@ Modèles disponibles :
- `byteplus/kimi-k2-5-260127` (Kimi K2.5)
- `byteplus/glm-4-7-251222` (GLM 4.7)
-Modèles de codage (`byteplus-plan`) :
+Modèles coding (`byteplus-plan`) :
- `byteplus-plan/ark-code-latest`
- `byteplus-plan/doubao-seed-code`
@@ -641,31 +642,31 @@ Synthetic fournit des modèles compatibles Anthropic derrière le fournisseur `s
### MiniMax
-MiniMax se configure via `models.providers` parce qu'il utilise des endpoints personnalisés :
+MiniMax est configuré via `models.providers` car il utilise des endpoints personnalisés :
-- MiniMax OAuth (Global) : `--auth-choice minimax-global-oauth`
+- MiniMax OAuth (global) : `--auth-choice minimax-global-oauth`
- MiniMax OAuth (CN) : `--auth-choice minimax-cn-oauth`
-- MiniMax clé API (Global) : `--auth-choice minimax-global-api`
-- MiniMax clé API (CN) : `--auth-choice minimax-cn-api`
+- Clé API MiniMax (global) : `--auth-choice minimax-global-api`
+- Clé API MiniMax (CN) : `--auth-choice minimax-cn-api`
- Authentification : `MINIMAX_API_KEY` pour `minimax` ; `MINIMAX_OAUTH_TOKEN` ou
`MINIMAX_API_KEY` pour `minimax-portal`
-Voir [/providers/minimax](/fr/providers/minimax) pour les détails de configuration, les options de modèle et les extraits de configuration.
+Consultez [/providers/minimax](/fr/providers/minimax) pour les détails de configuration, les options de modèle et les extraits de config.
Sur le chemin de streaming compatible Anthropic de MiniMax, OpenClaw désactive la réflexion par
défaut sauf si vous la définissez explicitement, et `/fast on` réécrit
`MiniMax-M2.7` en `MiniMax-M2.7-highspeed`.
-Répartition des capacités gérée par le plugin :
+Répartition des capacités possédées par le plugin :
- Les valeurs par défaut texte/chat restent sur `minimax/MiniMax-M2.7`
- La génération d'images est `minimax/image-01` ou `minimax-portal/image-01`
-- La compréhension d'image est le `MiniMax-VL-01` géré par le plugin sur les deux chemins d'authentification MiniMax
+- La compréhension d'image est `MiniMax-VL-01`, appartenant au plugin, sur les deux chemins d'authentification MiniMax
- La recherche web reste sur l'identifiant de fournisseur `minimax`
### Ollama
-Ollama est livré comme plugin de fournisseur groupé et utilise l'API native d'Ollama :
+Ollama est fourni comme plugin de fournisseur intégré et utilise l'API native d'Ollama :
- Fournisseur : `ollama`
- Authentification : aucune requise (serveur local)
@@ -685,21 +686,21 @@ ollama pull llama3.3
}
```
-Ollama est détecté localement sur `http://127.0.0.1:11434` lorsque vous activez
-`OLLAMA_API_KEY`, et le plugin de fournisseur groupé ajoute Ollama directement à
-`openclaw onboard` et au sélecteur de modèle. Voir [/providers/ollama](/fr/providers/ollama)
-pour l'onboarding, les modes cloud/local et la configuration personnalisée.
+Ollama est détecté localement à `http://127.0.0.1:11434` lorsque vous l'activez avec
+`OLLAMA_API_KEY`, et le plugin de fournisseur intégré ajoute Ollama directement à
+`openclaw onboard` et au sélecteur de modèle. Consultez [/providers/ollama](/fr/providers/ollama)
+pour l'intégration, le mode cloud/local et la configuration personnalisée.
### vLLM
-vLLM est livré comme plugin de fournisseur groupé pour les serveurs locaux/autohébergés
-compatibles OpenAI :
+vLLM est fourni comme plugin de fournisseur intégré pour les serveurs
+compatibles OpenAI locaux/autohébergés :
- Fournisseur : `vllm`
-- Authentification : facultative (selon votre serveur)
+- Authentification : facultative (dépend de votre serveur)
- URL de base par défaut : `http://127.0.0.1:8000/v1`
-Pour activer l'auto-détection localement (n'importe quelle valeur fonctionne si votre serveur n'impose pas l'authentification) :
+Pour activer l'auto-détection en local (n'importe quelle valeur fonctionne si votre serveur n'impose pas d'authentification) :
```bash
export VLLM_API_KEY="vllm-local"
@@ -715,19 +716,19 @@ Définissez ensuite un modèle (remplacez-le par l'un des identifiants renvoyés
}
```
-Voir [/providers/vllm](/fr/providers/vllm) pour les détails.
+Consultez [/providers/vllm](/fr/providers/vllm) pour les détails.
### SGLang
-SGLang est livré comme plugin de fournisseur groupé pour des serveurs autohébergés
-compatibles OpenAI rapides :
+SGLang est fourni comme plugin de fournisseur intégré pour des serveurs
+compatibles OpenAI autohébergés rapides :
- Fournisseur : `sglang`
-- Authentification : facultative (selon votre serveur)
+- Authentification : facultative (dépend de votre serveur)
- URL de base par défaut : `http://127.0.0.1:30000/v1`
-Pour activer l'auto-détection localement (n'importe quelle valeur fonctionne si votre serveur n'impose pas
-l'authentification) :
+Pour activer l'auto-détection en local (n'importe quelle valeur fonctionne si votre serveur n'impose pas
+d'authentification) :
```bash
export SGLANG_API_KEY="sglang-local"
@@ -743,7 +744,7 @@ Définissez ensuite un modèle (remplacez-le par l'un des identifiants renvoyés
}
```
-Voir [/providers/sglang](/fr/providers/sglang) pour les détails.
+Consultez [/providers/sglang](/fr/providers/sglang) pour les détails.
### Proxys locaux (LM Studio, vLLM, LiteLLM, etc.)
@@ -782,7 +783,7 @@ Exemple (compatible OpenAI) :
Remarques :
-- Pour les fournisseurs personnalisés, `reasoning`, `input`, `cost`, `contextWindow`, et `maxTokens` sont facultatifs.
+- Pour les fournisseurs personnalisés, `reasoning`, `input`, `cost`, `contextWindow` et `maxTokens` sont facultatifs.
Lorsqu'ils sont omis, OpenClaw utilise par défaut :
- `reasoning: false`
- `input: ["text"]`
@@ -790,13 +791,13 @@ Remarques :
- `contextWindow: 200000`
- `maxTokens: 8192`
- Recommandé : définissez des valeurs explicites qui correspondent aux limites de votre proxy/modèle.
-- Pour `api: "openai-completions"` sur des endpoints non natifs (tout `baseUrl` non vide dont l'hôte n'est pas `api.openai.com`), OpenClaw force `compat.supportsDeveloperRole: false` pour éviter les erreurs 400 du fournisseur pour les rôles `developer` non pris en charge.
-- Les routes compatibles OpenAI de style proxy ignorent aussi la mise en forme native des requêtes propre à OpenAI :
- pas de `service_tier`, pas de `store` de Responses, pas d'indications de cache de prompt, pas de
- mise en forme des charges utiles de compatibilité de raisonnement OpenAI, et pas d'en-têtes
- d'attribution OpenClaw masqués.
+- Pour `api: "openai-completions"` sur des endpoints non natifs (tout `baseUrl` non vide dont l'hôte n'est pas `api.openai.com`), OpenClaw force `compat.supportsDeveloperRole: false` pour éviter les erreurs fournisseur 400 sur les rôles `developer` non pris en charge.
+- Les routes de type proxy compatibles OpenAI ignorent aussi la mise en forme de requête uniquement native à OpenAI :
+ pas de `service_tier`, pas de `store` de Responses, pas d'indices de cache de prompt, pas de
+ mise en forme de charge utile de compatibilité de raisonnement OpenAI, ni d'en-têtes d'attribution OpenClaw
+ cachés.
- Si `baseUrl` est vide/omis, OpenClaw conserve le comportement OpenAI par défaut (qui se résout vers `api.openai.com`).
-- Par sécurité, un `compat.supportsDeveloperRole: true` explicite est quand même remplacé sur les endpoints non natifs `openai-completions`.
+- Pour des raisons de sécurité, un `compat.supportsDeveloperRole: true` explicite est toujours remplacé sur les endpoints non natifs `openai-completions`.
## Exemples CLI
@@ -812,5 +813,5 @@ Voir aussi : [/gateway/configuration](/fr/gateway/configuration) pour des exempl
- [Models](/fr/concepts/models) — configuration des modèles et alias
- [Model Failover](/fr/concepts/model-failover) — chaînes de secours et comportement de nouvelle tentative
-- [Configuration Reference](/fr/gateway/configuration-reference#agent-defaults) — clés de configuration des modèles
+- [Configuration Reference](/fr/gateway/configuration-reference#agent-defaults) — clés de config du modèle
- [Providers](/fr/providers) — guides de configuration par fournisseur
diff --git a/docs/fr/concepts/qa-e2e-automation.md b/docs/fr/concepts/qa-e2e-automation.md
index 7eef1731f..d61ffe7d9 100644
--- a/docs/fr/concepts/qa-e2e-automation.md
+++ b/docs/fr/concepts/qa-e2e-automation.md
@@ -1,51 +1,49 @@
---
read_when:
- - Étendre qa-lab ou qa-channel
- - Ajouter des scénarios QA adossés au dépôt
- - Créer une automatisation QA plus réaliste autour du tableau de bord Gateway
+ - Extension de qa-lab ou de qa-channel
+ - Ajout de scénarios QA adossés au dépôt
+ - Création d’une automatisation QA plus réaliste autour du tableau de bord Gateway
summary: Structure de l’automatisation QA privée pour qa-lab, qa-channel, les scénarios préconfigurés et les rapports de protocole
-title: Automatisation QA E2E
+title: Automatisation E2E QA
x-i18n:
- generated_at: "2026-04-08T02:14:00Z"
+ generated_at: "2026-04-08T06:00:48Z"
model: gpt-5.4
provider: openai
- source_hash: 3b4aa5acc8e77303f4045d4f04372494cae21b89d2fdaba856dbb4855ced9d27
+ source_hash: 57da147dc06abf9620290104e01a83b42182db1806514114fd9e8467492cda99
source_path: concepts/qa-e2e-automation.md
workflow: 15
---
-# Automatisation QA E2E
+# Automatisation E2E QA
-La pile QA privée est conçue pour exercer OpenClaw d’une manière plus réaliste,
-calquée sur les canaux, qu’un simple test unitaire ne le peut.
+La pile QA privée est conçue pour tester OpenClaw d’une manière plus réaliste,
+structurée autour des canaux, qu’un simple test unitaire ne peut le faire.
-Éléments actuels :
+Éléments actuels :
-- `extensions/qa-channel` : canal de messages synthétique avec des surfaces de MP, de canal, de fil,
- de réaction, de modification et de suppression.
-- `extensions/qa-lab` : interface de débogage et bus QA pour observer la transcription,
- injecter des messages entrants et exporter un rapport Markdown.
-- `qa/` : ressources préconfigurées adossées au dépôt pour la tâche de démarrage et les scénarios QA
- de référence.
+- `extensions/qa-channel` : canal de messages synthétiques avec des surfaces pour les DM, les canaux, les fils, les réactions, les modifications et les suppressions.
+- `extensions/qa-lab` : interface de débogage et bus QA pour observer la transcription, injecter des messages entrants et exporter un rapport Markdown.
+- `qa/` : ressources préconfigurées adossées au dépôt pour la tâche de démarrage et les scénarios QA de référence.
-Le flux opérateur QA actuel repose sur un site QA à deux panneaux :
+Le flux opérateur QA actuel repose sur un site QA à deux volets :
-- Gauche : tableau de bord Gateway (Control UI) avec l’agent.
-- Droite : QA Lab, affichant la transcription de type Slack et le plan de scénario.
+- Gauche : tableau de bord Gateway (Control UI) avec l’agent.
+- Droite : QA Lab, affichant la transcription de type Slack et le plan du scénario.
-Lancez-le avec :
+Exécutez-le avec :
```bash
pnpm qa:lab:up
```
Cela construit le site QA, démarre la voie Gateway adossée à Docker et expose la
-page QA Lab où un opérateur ou une boucle d’automatisation peut confier à l’agent une mission QA,
-observer le comportement réel du canal et consigner ce qui a fonctionné, échoué ou
-est resté bloqué.
+page QA Lab où un opérateur ou une boucle d’automatisation peut confier à
+l’agent une mission QA, observer le comportement réel du canal et consigner ce
+qui a fonctionné, échoué ou est resté bloqué.
-Pour itérer plus rapidement sur l’interface de QA Lab sans reconstruire l’image Docker à chaque fois,
-démarrez la pile avec un bundle QA Lab monté par liaison :
+Pour des itérations plus rapides sur l’interface de QA Lab sans reconstruire
+l’image Docker à chaque fois, démarrez la pile avec un bundle QA Lab monté par
+liaison :
```bash
pnpm openclaw qa docker-build-image
@@ -54,42 +52,45 @@ pnpm qa:lab:up:fast
pnpm qa:lab:watch
```
-`qa:lab:up:fast` maintient les services Docker sur une image préconstruite et monte par liaison
-`extensions/qa-lab/web/dist` dans le conteneur `qa-lab`. `qa:lab:watch`
-reconstruit ce bundle à chaque modification, et le navigateur se recharge automatiquement lorsque le hachage
-des ressources de QA Lab change.
+`qa:lab:up:fast` conserve les services Docker sur une image préconstruite et
+monte par liaison `extensions/qa-lab/web/dist` dans le conteneur `qa-lab`.
+`qa:lab:watch` reconstruit ce bundle à chaque modification, et le navigateur se
+recharge automatiquement lorsque le hachage des ressources de QA Lab change.
## Ressources préconfigurées adossées au dépôt
-Les ressources préconfigurées se trouvent dans `qa/` :
+Les ressources préconfigurées se trouvent dans `qa/` :
-- `qa/scenarios.md`
+- `qa/scenarios/index.md`
+- `qa/scenarios/*.md`
-Elles sont volontairement versionnées dans git afin que le plan QA soit visible à la fois pour les humains et pour
-l’agent. La liste de référence doit rester suffisamment large pour couvrir :
+Elles sont volontairement versionnées dans git afin que le plan QA soit visible
+à la fois pour les humains et pour l’agent. La liste de référence doit rester
+assez large pour couvrir :
-- chat en MP et en canal
+- chat en DM et en canal
- comportement des fils
- cycle de vie des actions sur les messages
- rappels cron
- rappel de mémoire
- changement de modèle
-- transfert vers un sous-agent
+- transfert à un sous-agent
- lecture du dépôt et de la documentation
- une petite tâche de build comme Lobster Invaders
## Rapports
-`qa-lab` exporte un rapport de protocole Markdown à partir de la chronologie observée du bus.
-Le rapport doit répondre à :
+`qa-lab` exporte un rapport de protocole Markdown à partir de la chronologie du
+bus observé.
+Le rapport doit répondre aux questions suivantes :
- Ce qui a fonctionné
- Ce qui a échoué
- Ce qui est resté bloqué
-- Quels scénarios de suivi méritent d’être ajoutés
+- Les scénarios de suivi qu’il vaut la peine d’ajouter
## Documentation associée
-- [Testing](/fr/help/testing)
-- [QA Channel](/fr/channels/qa-channel)
-- [Dashboard](/web/dashboard)
+- [Tests](/fr/help/testing)
+- [Canal QA](/fr/channels/qa-channel)
+- [Tableau de bord](/web/dashboard)
diff --git a/docs/fr/concepts/streaming.md b/docs/fr/concepts/streaming.md
index 93c2dadaa..3bb293a6c 100644
--- a/docs/fr/concepts/streaming.md
+++ b/docs/fr/concepts/streaming.md
@@ -1,31 +1,31 @@
---
read_when:
- - Expliquer comment le streaming ou le découpage fonctionne sur les canaux
- - Modifier le streaming par blocs ou le comportement de découpage des canaux
- - Déboguer des réponses par blocs dupliquées/précoces ou le streaming de prévisualisation de canal
-summary: Comportement de streaming + découpage (réponses par blocs, streaming de prévisualisation de canal, mappage des modes)
-title: Streaming et découpage
+ - Expliquer comment le streaming ou le découpage en morceaux fonctionne sur les canaux
+ - Modifier le streaming par blocs ou le comportement de découpage en morceaux des canaux
+ - Déboguer les réponses par blocs dupliquées/précoces ou le streaming d’aperçu du canal
+summary: Comportement du streaming + du découpage en morceaux (réponses par blocs, streaming d’aperçu du canal, mappage des modes)
+title: Streaming et découpage en morceaux
x-i18n:
- generated_at: "2026-04-05T12:41:08Z"
+ generated_at: "2026-04-08T06:01:06Z"
model: gpt-5.4
provider: openai
- source_hash: 44b0d08c7eafcb32030ef7c8d5719c2ea2d34e4bac5fdad8cc8b3f4e9e9fad97
+ source_hash: a8e847bb7da890818cd79dec7777f6ae488e6d6c0468e948e56b6b6c598e0000
source_path: concepts/streaming.md
workflow: 15
---
-# Streaming + découpage
+# Streaming + découpage en morceaux
OpenClaw possède deux couches de streaming distinctes :
-- **Streaming par blocs (canaux) :** émettre des **blocs** terminés à mesure que l’assistant écrit. Il s’agit de messages de canal normaux (pas de deltas de jetons).
-- **Streaming de prévisualisation (Telegram/Discord/Slack) :** mettre à jour un **message de prévisualisation** temporaire pendant la génération.
+- **Streaming par blocs (canaux) :** émet des **blocs** terminés pendant que l’assistant écrit. Ce sont des messages de canal normaux (pas des deltas de jetons).
+- **Streaming d’aperçu (Telegram/Discord/Slack) :** met à jour un **message d’aperçu** temporaire pendant la génération.
-Il n’existe aujourd’hui **aucun véritable streaming de deltas de jetons** vers les messages de canal. Le streaming de prévisualisation est basé sur les messages (envoi + modifications/ajouts).
+Il n’existe aujourd’hui **aucun véritable streaming token-delta** vers les messages de canal. Le streaming d’aperçu est basé sur les messages (envoi + modifications/ajouts).
## Streaming par blocs (messages de canal)
-Le streaming par blocs envoie la sortie de l’assistant en segments grossiers dès qu’elle devient disponible.
+Le streaming par blocs envoie la sortie de l’assistant en gros morceaux à mesure qu’elle devient disponible.
```
Model output
@@ -39,130 +39,131 @@ Model output
Légende :
-- `text_delta/events` : événements de flux du modèle (peuvent être clairsemés pour les modèles non streaming).
-- `chunker` : `EmbeddedBlockChunker` appliquant les limites min/max + la préférence de coupure.
+- `text_delta/events` : événements de flux du modèle (peuvent être rares pour les modèles sans streaming).
+- `chunker` : `EmbeddedBlockChunker` appliquant des limites min/max + la préférence de coupure.
- `channel send` : messages sortants réels (réponses par blocs).
**Contrôles :**
- `agents.defaults.blockStreamingDefault` : `"on"`/`"off"` (désactivé par défaut).
-- Remplacements de canal : `*.blockStreaming` (et variantes par compte) pour forcer `"on"`/`"off"` par canal.
+- Surcharges de canal : `*.blockStreaming` (et variantes par compte) pour forcer `"on"`/`"off"` par canal.
- `agents.defaults.blockStreamingBreak` : `"text_end"` ou `"message_end"`.
- `agents.defaults.blockStreamingChunk` : `{ minChars, maxChars, breakPreference? }`.
-- `agents.defaults.blockStreamingCoalesce` : `{ minChars?, maxChars?, idleMs? }` (fusionner les blocs streamés avant envoi).
+- `agents.defaults.blockStreamingCoalesce` : `{ minChars?, maxChars?, idleMs? }` (fusionne les blocs streamés avant l’envoi).
- Limite stricte du canal : `*.textChunkLimit` (par ex. `channels.whatsapp.textChunkLimit`).
-- Mode de découpage du canal : `*.chunkMode` (`length` par défaut, `newline` découpe sur les lignes vides (limites de paragraphe) avant le découpage par longueur).
-- Limite souple Discord : `channels.discord.maxLinesPerMessage` (17 par défaut) découpe les réponses hautes pour éviter le rognage de l’interface.
+- Mode de découpage du canal : `*.chunkMode` (`length` par défaut, `newline` coupe sur les lignes vides (limites de paragraphe) avant le découpage par longueur).
+- Limite souple Discord : `channels.discord.maxLinesPerMessage` (17 par défaut) découpe les réponses longues pour éviter le rognage dans l’interface.
**Sémantique des limites :**
-- `text_end` : streamer les blocs dès que le chunker les émet ; vider à chaque `text_end`.
-- `message_end` : attendre que le message de l’assistant soit terminé, puis vider la sortie mise en tampon.
+- `text_end` : diffuse les blocs dès que le chunker en émet ; vide le tampon à chaque `text_end`.
+- `message_end` : attend que le message de l’assistant soit terminé, puis vide la sortie mise en tampon.
-`message_end` utilise toujours le chunker si le texte mis en tampon dépasse `maxChars`, et peut donc émettre plusieurs segments à la fin.
+`message_end` utilise quand même le chunker si le texte mis en tampon dépasse `maxChars`, donc il peut émettre plusieurs morceaux à la fin.
-## Algorithme de découpage (bornes basse/haute)
+## Algorithme de découpage en morceaux (limites basse/haute)
Le découpage par blocs est implémenté par `EmbeddedBlockChunker` :
-- **Borne basse :** ne rien émettre tant que le tampon est < `minChars` (sauf si forcé).
-- **Borne haute :** préférer les coupures avant `maxChars` ; si forcé, couper à `maxChars`.
+- **Limite basse :** n’émet rien tant que le tampon n’a pas atteint `minChars` (sauf si forcé).
+- **Limite haute :** préfère des coupures avant `maxChars` ; si forcé, coupe à `maxChars`.
- **Préférence de coupure :** `paragraph` → `newline` → `sentence` → `whitespace` → coupure forcée.
-- **Blocs de code :** ne jamais couper à l’intérieur de blocs ; si une coupure est forcée à `maxChars`, fermer puis rouvrir le bloc afin de conserver un Markdown valide.
+- **Blocs de code délimités :** ne jamais couper à l’intérieur ; en cas de coupure forcée à `maxChars`, ferme puis rouvre le bloc pour conserver un Markdown valide.
-`maxChars` est limité par `textChunkLimit` du canal, vous ne pouvez donc pas dépasser les plafonds propres à chaque canal.
+`maxChars` est plafonné à la valeur `textChunkLimit` du canal, donc vous ne pouvez pas dépasser les limites propres à chaque canal.
## Coalescence (fusion des blocs streamés)
-Lorsque le streaming par blocs est activé, OpenClaw peut **fusionner des segments de blocs consécutifs**
-avant de les envoyer. Cela réduit le « spam ligne par ligne » tout en fournissant
+Quand le streaming par blocs est activé, OpenClaw peut **fusionner des morceaux de blocs consécutifs**
+avant de les envoyer. Cela réduit le « spam de lignes uniques » tout en fournissant
une sortie progressive.
-- La coalescence attend des **périodes d’inactivité** (`idleMs`) avant de vider.
+- La coalescence attend des **périodes d’inactivité** (`idleMs`) avant de vider le tampon.
- Les tampons sont plafonnés par `maxChars` et seront vidés s’ils le dépassent.
-- `minChars` empêche l’envoi de trop petits fragments tant qu’assez de texte ne s’est pas accumulé
- (la vidange finale envoie toujours le texte restant).
+- `minChars` empêche l’envoi de fragments minuscules tant qu’assez de texte ne s’est pas accumulé
+ (le vidage final envoie toujours le texte restant).
- Le séparateur est dérivé de `blockStreamingChunk.breakPreference`
(`paragraph` → `\n\n`, `newline` → `\n`, `sentence` → espace).
-- Des remplacements de canal sont disponibles via `*.blockStreamingCoalesce` (y compris dans les configs par compte).
-- La valeur par défaut de coalescence `minChars` est portée à 1500 pour Signal/Slack/Discord, sauf remplacement.
+- Des surcharges par canal sont disponibles via `*.blockStreamingCoalesce` (y compris dans les configs par compte).
+- La valeur par défaut de `minChars` pour la coalescence est portée à 1500 pour Signal/Slack/Discord sauf surcharge.
-## Rythme humain entre les blocs
+## Rythme plus humain entre les blocs
-Lorsque le streaming par blocs est activé, vous pouvez ajouter une **pause aléatoire** entre
-les réponses par blocs (après le premier bloc). Cela rend les réponses à plusieurs bulles
-plus naturelles.
+Quand le streaming par blocs est activé, vous pouvez ajouter une **pause aléatoire**
+entre les réponses par blocs (après le premier bloc). Cela donne aux réponses en
+plusieurs bulles une impression plus naturelle.
-- Configuration : `agents.defaults.humanDelay` (remplacement par agent via `agents.list[].humanDelay`).
+- Config : `agents.defaults.humanDelay` (surcharge par agent via `agents.list[].humanDelay`).
- Modes : `off` (par défaut), `natural` (800–2500ms), `custom` (`minMs`/`maxMs`).
- S’applique uniquement aux **réponses par blocs**, pas aux réponses finales ni aux résumés d’outils.
-## "Streamer par segments ou tout d’un coup"
+## « Stream les morceaux ou tout »
Cela correspond à :
-- **Streamer par segments :** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (émettre au fur et à mesure). Les canaux autres que Telegram nécessitent également `*.blockStreaming: true`.
-- **Tout streamer à la fin :** `blockStreamingBreak: "message_end"` (vider une seule fois, éventuellement en plusieurs segments si c’est très long).
-- **Pas de streaming par blocs :** `blockStreamingDefault: "off"` (réponse finale uniquement).
+- **Stream les morceaux :** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (émet au fil de l’eau). Les canaux autres que Telegram ont aussi besoin de `*.blockStreaming: true`.
+- **Tout streamer à la fin :** `blockStreamingBreak: "message_end"` (vide une fois, éventuellement en plusieurs morceaux si c’est très long).
+- **Aucun streaming par blocs :** `blockStreamingDefault: "off"` (réponse finale uniquement).
-**Remarque sur les canaux :** le streaming par blocs est **désactivé sauf si**
-`*.blockStreaming` est explicitement défini sur `true`. Les canaux peuvent streamer une prévisualisation en direct
+**Remarque sur les canaux :** Le streaming par blocs est **désactivé sauf si**
+`*.blockStreaming` est explicitement défini sur `true`. Les canaux peuvent diffuser un aperçu en direct
(`channels..streaming`) sans réponses par blocs.
-Rappel sur l’emplacement de configuration : les valeurs par défaut `blockStreaming*` se trouvent sous
-`agents.defaults`, pas à la racine de la configuration.
+Rappel sur l’emplacement de la config : les valeurs par défaut `blockStreaming*` se trouvent sous
+`agents.defaults`, pas à la racine de la config.
-## Modes de streaming de prévisualisation
+## Modes de streaming d’aperçu
Clé canonique : `channels..streaming`
Modes :
-- `off` : désactiver le streaming de prévisualisation.
-- `partial` : une seule prévisualisation remplacée par le texte le plus récent.
-- `block` : mises à jour de prévisualisation par étapes segmentées/ajoutées.
-- `progress` : prévisualisation de progression/statut pendant la génération, réponse finale à la fin.
+- `off` : désactive le streaming d’aperçu.
+- `partial` : aperçu unique remplacé par le texte le plus récent.
+- `block` : mises à jour d’aperçu par étapes découpées/ajoutées.
+- `progress` : aperçu d’avancement/statut pendant la génération, réponse finale à la fin.
### Mappage par canal
-| Canal | `off` | `partial` | `block` | `progress` |
-| -------- | ----- | --------- | ------- | ---------------------- |
+| Canal | `off` | `partial` | `block` | `progress` |
+| -------- | ----- | --------- | ------- | ----------------- |
| Telegram | ✅ | ✅ | ✅ | correspond à `partial` |
| Discord | ✅ | ✅ | ✅ | correspond à `partial` |
-| Slack | ✅ | ✅ | ✅ | ✅ |
+| Slack | ✅ | ✅ | ✅ | ✅ |
-Slack uniquement :
+Spécifique à Slack :
-- `channels.slack.nativeStreaming` active/désactive les appels à l’API de streaming native Slack lorsque `streaming=partial` (par défaut : `true`).
+- `channels.slack.streaming.nativeTransport` active/désactive les appels à l’API de streaming native de Slack lorsque `channels.slack.streaming.mode="partial"` (par défaut : `true`).
+- Le streaming natif Slack et l’état des fils d’assistant Slack nécessitent une cible de fil de réponse ; les DM de niveau supérieur n’affichent pas cet aperçu de type fil.
-Migration des clés historiques :
+Migration des clés héritées :
-- Telegram : `streamMode` + booléen `streaming` sont migrés automatiquement vers l’énumération `streaming`.
-- Discord : `streamMode` + booléen `streaming` sont migrés automatiquement vers l’énumération `streaming`.
-- Slack : `streamMode` est migré automatiquement vers l’énumération `streaming` ; le booléen `streaming` est migré automatiquement vers `nativeStreaming`.
+- Telegram : `streamMode` + booléen `streaming` sont automatiquement migrés vers l’énumération `streaming`.
+- Discord : `streamMode` + booléen `streaming` sont automatiquement migrés vers l’énumération `streaming`.
+- Slack : `streamMode` migre automatiquement vers `streaming.mode` ; le booléen `streaming` migre automatiquement vers `streaming.mode` plus `streaming.nativeTransport` ; l’ancien `nativeStreaming` migre automatiquement vers `streaming.nativeTransport`.
### Comportement à l’exécution
Telegram :
-- Utilise `sendMessage` + `editMessageText` pour les mises à jour de prévisualisation dans les messages privés et groupes/sujets.
-- Le streaming de prévisualisation est ignoré lorsque le streaming par blocs Telegram est explicitement activé (pour éviter un double streaming).
-- `/reasoning stream` peut écrire le raisonnement dans la prévisualisation.
+- Utilise les mises à jour d’aperçu `sendMessage` + `editMessageText` dans les DM et les groupes/sujets.
+- Le streaming d’aperçu est ignoré lorsque le streaming par blocs Telegram est explicitement activé (pour éviter un double streaming).
+- `/reasoning stream` peut écrire le raisonnement dans l’aperçu.
Discord :
-- Utilise des messages de prévisualisation avec envoi + modification.
+- Utilise l’envoi + la modification de messages d’aperçu.
- Le mode `block` utilise le découpage de brouillon (`draftChunk`).
-- Le streaming de prévisualisation est ignoré lorsque le streaming par blocs Discord est explicitement activé.
+- Le streaming d’aperçu est ignoré lorsque le streaming par blocs Discord est explicitement activé.
Slack :
-- `partial` peut utiliser le streaming natif Slack (`chat.startStream`/`append`/`stop`) lorsqu’il est disponible.
-- `block` utilise des prévisualisations de brouillon de type ajout.
-- `progress` utilise un texte de prévisualisation de statut, puis la réponse finale.
+- `partial` peut utiliser le streaming natif de Slack (`chat.startStream`/`append`/`stop`) lorsqu’il est disponible.
+- `block` utilise des aperçus de brouillon de style ajout.
+- `progress` utilise un texte d’aperçu de statut, puis la réponse finale.
## Lié
-- [Messages](/concepts/messages) — cycle de vie et distribution des messages
-- [Retry](/concepts/retry) — comportement de nouvelle tentative en cas d’échec de distribution
-- [Channels](/channels) — prise en charge du streaming par canal
+- [Messages](/fr/concepts/messages) — cycle de vie et distribution des messages
+- [Retry](/fr/concepts/retry) — comportement de nouvelle tentative en cas d’échec de distribution
+- [Channels](/fr/channels) — prise en charge du streaming par canal
diff --git a/docs/fr/gateway/configuration-reference.md b/docs/fr/gateway/configuration-reference.md
index 891f85b82..5ab925f49 100644
--- a/docs/fr/gateway/configuration-reference.md
+++ b/docs/fr/gateway/configuration-reference.md
@@ -1,21 +1,35 @@
---
read_when:
- - Vous avez besoin de la sémantique exacte des champs de configuration ou des valeurs par défaut
+ - Vous avez besoin de la sémantique exacte ou des valeurs par défaut de chaque champ de configuration
- Vous validez des blocs de configuration de canal, de modèle, de passerelle ou d’outil
-summary: Référence complète de chaque clé de configuration OpenClaw, des valeurs par défaut et des paramètres de canal
+summary: Référence de configuration de la passerelle pour les clés OpenClaw principales, les valeurs par défaut et les liens vers les références dédiées des sous-systèmes
title: Référence de configuration
x-i18n:
- generated_at: "2026-04-08T02:21:01Z"
+ generated_at: "2026-04-08T06:06:30Z"
model: gpt-5.4
provider: openai
- source_hash: 2c7991b948cbbb7954a3e26280089ab00088e7f4878ec0b0540c3c9acf222ebb
+ source_hash: 2f9ab34fb56897a77cb038d95bea21e8530d8f0402b66d1ee97c73822a1e8fd4
source_path: gateway/configuration-reference.md
workflow: 15
---
# Référence de configuration
-Chaque champ disponible dans `~/.openclaw/openclaw.json`. Pour une vue d’ensemble orientée tâches, consultez [Configuration](/fr/gateway/configuration).
+Référence de configuration principale pour `~/.openclaw/openclaw.json`. Pour une vue d’ensemble orientée tâches, consultez [Configuration](/fr/gateway/configuration).
+
+Cette page couvre les principales surfaces de configuration d’OpenClaw et renvoie vers d’autres pages lorsqu’un sous-système dispose de sa propre référence plus détaillée. Elle **n’essaie pas** d’intégrer sur une seule page chaque catalogue de commandes appartenant à un canal/plugin ni chaque paramètre avancé de mémoire/QMD.
+
+Source de vérité du code :
+
+- `openclaw config schema` affiche le schéma JSON en direct utilisé pour la validation et l’interface de contrôle, avec les métadonnées des bundles/plugins/canaux fusionnées lorsqu’elles sont disponibles
+- `config.schema.lookup` renvoie un nœud de schéma ciblé par chemin pour les outils d’exploration détaillée
+- `pnpm config:docs:check` / `pnpm config:docs:gen` valident le hachage de base des documents de configuration par rapport à la surface actuelle du schéma
+
+Références détaillées dédiées :
+
+- [Référence de configuration de la mémoire](/fr/reference/memory-config) pour `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` et la configuration dreaming sous `plugins.entries.memory-core.config.dreaming`
+- [Commandes slash](/fr/tools/slash-commands) pour le catalogue actuel de commandes intégrées + fournies en bundle
+- pages du canal/plugin propriétaire pour les surfaces de commande spécifiques à un canal
Le format de configuration est **JSON5** (commentaires + virgules finales autorisés). Tous les champs sont facultatifs — OpenClaw utilise des valeurs par défaut sûres lorsqu’ils sont omis.
@@ -29,28 +43,28 @@ Chaque canal démarre automatiquement lorsque sa section de configuration existe
Tous les canaux prennent en charge des politiques de messages privés et des politiques de groupe :
-| Politique de message privé | Comportement |
-| -------------------------- | ------------------------------------------------------------------- |
-| `pairing` (par défaut) | Les expéditeurs inconnus reçoivent un code d’appairage à usage unique ; le propriétaire doit approuver |
-| `allowlist` | Uniquement les expéditeurs dans `allowFrom` (ou dans le magasin d’autorisations appairées) |
-| `open` | Autoriser tous les messages privés entrants (nécessite `allowFrom: ["*"]`) |
-| `disabled` | Ignorer tous les messages privés entrants |
+| Politique DM | Comportement |
+| ------------------- | -------------------------------------------------------------- |
+| `pairing` (par défaut) | Les expéditeurs inconnus reçoivent un code d’association à usage unique ; le propriétaire doit approuver |
+| `allowlist` | Uniquement les expéditeurs dans `allowFrom` (ou le stockage d’autorisation associé) |
+| `open` | Autoriser tous les messages privés entrants (nécessite `allowFrom: ["*"]`) |
+| `disabled` | Ignorer tous les messages privés entrants |
-| Politique de groupe | Comportement |
-| -------------------------- | ---------------------------------------------------------- |
-| `allowlist` (par défaut) | Uniquement les groupes correspondant à la liste d’autorisations configurée |
-| `open` | Contourner les listes d’autorisations de groupe (le filtrage par mention s’applique toujours) |
-| `disabled` | Bloquer tous les messages de groupe/salon |
+| Politique de groupe | Comportement |
+| --------------------- | ----------------------------------------------------- |
+| `allowlist` (par défaut) | Uniquement les groupes correspondant à la liste d’autorisation configurée |
+| `open` | Contourner les listes d’autorisation de groupe (le contrôle par mention s’applique toujours) |
+| `disabled` | Bloquer tous les messages de groupe/salon |
-`channels.defaults.groupPolicy` définit la valeur par défaut lorsque le `groupPolicy` d’un fournisseur n’est pas défini.
-Les codes d’appairage expirent après 1 heure. Les demandes d’appairage de message privé en attente sont limitées à **3 par canal**.
+`channels.defaults.groupPolicy` définit la valeur par défaut lorsque `groupPolicy` d’un fournisseur n’est pas défini.
+Les codes d’association expirent après 1 heure. Les demandes d’association DM en attente sont limitées à **3 par canal**.
Si un bloc de fournisseur est entièrement absent (`channels.` absent), la politique de groupe à l’exécution revient à `allowlist` (échec fermé) avec un avertissement au démarrage.
-### Surcharges de modèle par canal
+### Remplacements de modèle par canal
-Utilisez `channels.modelByChannel` pour épingler des identifiants de canal spécifiques à un modèle. Les valeurs acceptent `provider/model` ou des alias de modèles configurés. Le mappage de canal s’applique lorsqu’une session n’a pas déjà de surcharge de modèle (par exemple, définie via `/model`).
+Utilisez `channels.modelByChannel` pour fixer des identifiants de canal spécifiques à un modèle. Les valeurs acceptent `provider/model` ou des alias de modèle configurés. Le mappage par canal s’applique lorsqu’une session n’a pas déjà de remplacement de modèle (par exemple, défini via `/model`).
```json5
{
@@ -73,7 +87,7 @@ Utilisez `channels.modelByChannel` pour épingler des identifiants de canal spé
### Valeurs par défaut des canaux et heartbeat
-Utilisez `channels.defaults` pour partager le comportement de politique de groupe et de heartbeat entre les fournisseurs :
+Utilisez `channels.defaults` pour le comportement partagé de politique de groupe et de heartbeat entre fournisseurs :
```json5
{
@@ -91,15 +105,15 @@ Utilisez `channels.defaults` pour partager le comportement de politique de group
}
```
-- `channels.defaults.groupPolicy` : politique de groupe de repli lorsqu’une `groupPolicy` au niveau du fournisseur n’est pas définie.
-- `channels.defaults.contextVisibility` : mode de visibilité du contexte supplémentaire par défaut pour tous les canaux. Valeurs : `all` (par défaut, inclure tout le contexte cité/de fil/d’historique), `allowlist` (inclure uniquement le contexte des expéditeurs autorisés), `allowlist_quote` (comme allowlist mais en conservant le contexte explicite de citation/réponse). Surcharge par canal : `channels..contextVisibility`.
-- `channels.defaults.heartbeat.showOk` : inclure les statuts sains des canaux dans la sortie du heartbeat.
+- `channels.defaults.groupPolicy` : politique de groupe de repli lorsqu’un `groupPolicy` au niveau du fournisseur n’est pas défini.
+- `channels.defaults.contextVisibility` : mode de visibilité du contexte supplémentaire par défaut pour tous les canaux. Valeurs : `all` (par défaut, inclure tout le contexte cité/de fil/d’historique), `allowlist` (inclure uniquement le contexte des expéditeurs autorisés), `allowlist_quote` (identique à allowlist mais conserve le contexte explicite de citation/réponse). Remplacement par canal : `channels..contextVisibility`.
+- `channels.defaults.heartbeat.showOk` : inclure les statuts des canaux sains dans la sortie du heartbeat.
- `channels.defaults.heartbeat.showAlerts` : inclure les statuts dégradés/en erreur dans la sortie du heartbeat.
-- `channels.defaults.heartbeat.useIndicator` : afficher une sortie heartbeat compacte sous forme d’indicateur.
+- `channels.defaults.heartbeat.useIndicator` : afficher une sortie de heartbeat compacte de type indicateur.
### WhatsApp
-WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre automatiquement lorsqu’une session liée existe.
+WhatsApp fonctionne via le canal web de la passerelle (Baileys Web). Il démarre automatiquement lorsqu’une session liée existe.
```json5
{
@@ -110,7 +124,7 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
textChunkLimit: 4000,
chunkMode: "length", // length | newline
mediaMaxMb: 50,
- sendReadReceipts: true, // coches bleues (false en mode self-chat)
+ sendReadReceipts: true, // blue ticks (false in self-chat mode)
groups: {
"*": { requireMention: true },
},
@@ -151,9 +165,9 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
```
- Les commandes sortantes utilisent par défaut le compte `default` s’il est présent ; sinon, le premier identifiant de compte configuré (trié).
-- `channels.whatsapp.defaultAccount` facultatif remplace cette sélection de compte par défaut de repli lorsqu’il correspond à un identifiant de compte configuré.
-- L’ancien répertoire d’authentification Baileys mono-compte est migré par `openclaw doctor` vers `whatsapp/default`.
-- Surcharges par compte : `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
+- `channels.whatsapp.defaultAccount` est facultatif et remplace cette sélection de compte par défaut de repli lorsqu’il correspond à un identifiant de compte configuré.
+- L’ancien répertoire d’authentification Baileys en compte unique est migré par `openclaw doctor` vers `whatsapp/default`.
+- Remplacements par compte : `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
@@ -211,13 +225,13 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
}
```
-- Jeton de bot : `channels.telegram.botToken` ou `channels.telegram.tokenFile` (fichier ordinaire uniquement ; liens symboliques refusés), avec `TELEGRAM_BOT_TOKEN` comme repli pour le compte par défaut.
-- `channels.telegram.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
-- Dans les configurations multi-comptes (2 identifiants de compte ou plus), définissez une valeur par défaut explicite (`channels.telegram.defaultAccount` ou `channels.telegram.accounts.default`) pour éviter le routage de repli ; `openclaw doctor` avertit lorsque cela est absent ou invalide.
-- `configWrites: false` bloque les écritures de configuration initiées depuis Telegram (migrations d’identifiant de supergroupe, `/config set|unset`).
-- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` configurent des liaisons ACP persistantes pour les sujets de forum (utilisez le format canonique `chatId:topic:topicId` dans `match.peer.id`). La sémantique des champs est partagée dans [ACP Agents](/fr/tools/acp-agents#channel-specific-settings).
-- Les aperçus de flux Telegram utilisent `sendMessage` + `editMessageText` (fonctionne dans les discussions directes et de groupe).
-- Politique de réessai : voir [Politique de réessai](/fr/concepts/retry).
+- Jeton du bot : `channels.telegram.botToken` ou `channels.telegram.tokenFile` (fichier normal uniquement ; les liens symboliques sont rejetés), avec `TELEGRAM_BOT_TOKEN` comme repli pour le compte par défaut.
+- `channels.telegram.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- Dans les configurations multi-comptes (2 identifiants de compte ou plus), définissez une valeur par défaut explicite (`channels.telegram.defaultAccount` ou `channels.telegram.accounts.default`) pour éviter le routage de repli ; `openclaw doctor` émet un avertissement si cette valeur est absente ou invalide.
+- `configWrites: false` bloque les écritures de configuration initiées depuis Telegram (migrations d’identifiants de supergroupes, `/config set|unset`).
+- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` configurent des liaisons ACP persistantes pour les sujets de forum (utilisez le format canonique `chatId:topic:topicId` dans `match.peer.id`). La sémantique des champs est partagée dans [Agents ACP](/fr/tools/acp-agents#channel-specific-settings).
+- Les aperçus de flux Telegram utilisent `sendMessage` + `editMessageText` (fonctionne dans les chats directs et de groupe).
+- Politique de nouvelle tentative : voir [Politique de nouvelle tentative](/fr/concepts/retry).
### Discord
@@ -320,33 +334,33 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
```
- Jeton : `channels.discord.token`, avec `DISCORD_BOT_TOKEN` comme repli pour le compte par défaut.
-- Les appels sortants directs qui fournissent un `token` Discord explicite utilisent ce jeton pour l’appel ; les paramètres de politique/réessai du compte proviennent toujours du compte sélectionné dans l’instantané d’exécution actif.
-- `channels.discord.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
-- Utilisez `user:` (MP) ou `channel:` (canal de serveur) comme cibles de livraison ; les identifiants numériques nus sont refusés.
-- Les slug de serveur sont en minuscules avec les espaces remplacés par `-` ; les clés de canal utilisent le nom slugifié (sans `#`). Préférez les identifiants de serveur.
-- Les messages rédigés par des bots sont ignorés par défaut. `allowBots: true` les active ; utilisez `allowBots: "mentions"` pour accepter uniquement les messages de bots qui mentionnent le bot (les propres messages du bot restent filtrés).
-- `channels.discord.guilds..ignoreOtherMentions` (et les surcharges de canal) supprime les messages qui mentionnent un autre utilisateur ou rôle mais pas le bot (hors @everyone/@here).
-- `maxLinesPerMessage` (par défaut 17) scinde les messages hauts même lorsqu’ils font moins de 2000 caractères.
+- Les appels sortants directs qui fournissent un `token` Discord explicite utilisent ce jeton pour l’appel ; les paramètres de nouvelle tentative/politique du compte proviennent toujours du compte sélectionné dans l’instantané d’exécution actif.
+- `channels.discord.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- Utilisez `user:` (DM) ou `channel:` (canal de serveur) pour les cibles de livraison ; les identifiants numériques bruts sont rejetés.
+- Les slugs de serveur sont en minuscules avec les espaces remplacés par `-` ; les clés de canal utilisent le nom sous forme de slug (sans `#`). Préférez les identifiants de serveur.
+- Les messages rédigés par des bots sont ignorés par défaut. `allowBots: true` les active ; utilisez `allowBots: "mentions"` pour n’accepter que les messages de bots qui mentionnent le bot (les propres messages restent filtrés).
+- `channels.discord.guilds..ignoreOtherMentions` (et ses remplacements au niveau du canal) supprime les messages qui mentionnent un autre utilisateur ou rôle mais pas le bot (hors @everyone/@here).
+- `maxLinesPerMessage` (17 par défaut) découpe les messages hauts même s’ils font moins de 2000 caractères.
- `channels.discord.threadBindings` contrôle le routage lié aux fils Discord :
- - `enabled` : surcharge Discord pour les fonctionnalités de session liées aux fils (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, et livraison/routage liés)
- - `idleHours` : surcharge Discord pour l’auto-unfocus après inactivité en heures (`0` désactive)
- - `maxAgeHours` : surcharge Discord pour l’âge maximal strict en heures (`0` désactive)
- - `spawnSubagentSessions` : option d’activation pour la création/liaison automatique de fil par `sessions_spawn({ thread: true })`
-- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` configurent des liaisons ACP persistantes pour les canaux et fils (utilisez l’identifiant du canal/fil dans `match.peer.id`). La sémantique des champs est partagée dans [ACP Agents](/fr/tools/acp-agents#channel-specific-settings).
-- `channels.discord.ui.components.accentColor` définit la couleur d’accent pour les conteneurs Discord components v2.
-- `channels.discord.voice` active les conversations dans les salons vocaux Discord ainsi que les surcharges facultatives d’auto-jonction + TTS.
+ - `enabled` : remplacement Discord pour les fonctionnalités de session liées aux fils (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` et livraison/routage liés)
+ - `idleHours` : remplacement Discord pour le désancrage automatique sur inactivité en heures (`0` désactive)
+ - `maxAgeHours` : remplacement Discord pour l’âge maximal strict en heures (`0` désactive)
+ - `spawnSubagentSessions` : option d’activation pour la création/liaison automatique de fil avec `sessions_spawn({ thread: true })`
+- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` configurent des liaisons ACP persistantes pour les canaux et les fils (utilisez l’identifiant du canal/fil dans `match.peer.id`). La sémantique des champs est partagée dans [Agents ACP](/fr/tools/acp-agents#channel-specific-settings).
+- `channels.discord.ui.components.accentColor` définit la couleur d’accentuation pour les conteneurs Discord components v2.
+- `channels.discord.voice` active les conversations dans les canaux vocaux Discord et les remplacements facultatifs d’auto-jonction + TTS.
- `channels.discord.voice.daveEncryption` et `channels.discord.voice.decryptionFailureTolerance` sont transmis aux options DAVE de `@discordjs/voice` (`true` et `24` par défaut).
-- OpenClaw tente également une récupération de réception vocale en quittant/rejoignant une session vocale après des échecs de déchiffrement répétés.
-- `channels.discord.streaming` est la clé canonique du mode de flux. Les anciennes valeurs booléennes `streamMode` et `streaming` sont migrées automatiquement.
-- `channels.discord.autoPresence` mappe la disponibilité à l’exécution à la présence du bot (healthy => online, degraded => idle, exhausted => dnd) et autorise des surcharges facultatives de texte d’état.
-- `channels.discord.dangerouslyAllowNameMatching` réactive la correspondance sur les noms/tags modifiables (mode de compatibilité d’urgence).
-- `channels.discord.execApprovals` : livraison des approbations d’exécution native Discord et autorisation des approbateurs.
- - `enabled` : `true`, `false` ou `"auto"` (par défaut). En mode auto, les approbations d’exécution s’activent lorsque les approbateurs peuvent être résolus à partir de `approvers` ou de `commands.ownerAllowFrom`.
- - `approvers` : identifiants d’utilisateurs Discord autorisés à approuver les demandes d’exécution. Revient à `commands.ownerAllowFrom` si omis.
- - `agentFilter` : liste d’autorisations facultative des identifiants d’agent. Omettez pour transférer les approbations pour tous les agents.
- - `sessionFilter` : motifs facultatifs de clés de session (sous-chaîne ou regex).
- - `target` : où envoyer les invites d’approbation. `"dm"` (par défaut) les envoie aux MP des approbateurs, `"channel"` les envoie au canal d’origine, `"both"` les envoie aux deux. Lorsque la cible inclut `"channel"`, les boutons ne sont utilisables que par les approbateurs résolus.
- - `cleanupAfterResolve` : lorsque `true`, supprime les MP d’approbation après approbation, refus ou expiration.
+- OpenClaw tente également une récupération de la réception vocale en quittant/rejoignant une session vocale après des échecs de déchiffrement répétés.
+- `channels.discord.streaming` est la clé canonique du mode de flux. Les anciennes valeurs `streamMode` et booléennes `streaming` sont automatiquement migrées.
+- `channels.discord.autoPresence` mappe la disponibilité à l’exécution vers la présence du bot (healthy => online, degraded => idle, exhausted => dnd) et permet des remplacements facultatifs du texte de statut.
+- `channels.discord.dangerouslyAllowNameMatching` réactive la correspondance par nom/tag mutable (mode de compatibilité « break-glass »).
+- `channels.discord.execApprovals` : livraison native Discord des approbations exec et autorisation des approbateurs.
+ - `enabled` : `true`, `false` ou `"auto"` (par défaut). En mode auto, les approbations exec s’activent lorsque les approbateurs peuvent être résolus depuis `approvers` ou `commands.ownerAllowFrom`.
+ - `approvers` : identifiants d’utilisateurs Discord autorisés à approuver les demandes exec. Utilise `commands.ownerAllowFrom` comme repli si omis.
+ - `agentFilter` : liste d’autorisation facultative des identifiants d’agent. Omettez-la pour transférer les approbations de tous les agents.
+ - `sessionFilter` : modèles facultatifs de clés de session (sous-chaîne ou regex).
+ - `target` : destination des invites d’approbation. `"dm"` (par défaut) les envoie dans les DM des approbateurs, `"channel"` les envoie dans le canal d’origine, `"both"` les envoie aux deux. Lorsque la cible inclut `"channel"`, les boutons ne sont utilisables que par les approbateurs résolus.
+ - `cleanupAfterResolve` : lorsque `true`, supprime les DM d’approbation après approbation, refus ou expiration.
**Modes de notification de réaction :** `off` (aucun), `own` (messages du bot, par défaut), `all` (tous les messages), `allowlist` (depuis `guilds..users` sur tous les messages).
@@ -379,11 +393,11 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
}
```
-- JSON de compte de service : inline (`serviceAccount`) ou via fichier (`serviceAccountFile`).
-- SecretRef pour le compte de service également pris en charge (`serviceAccountRef`).
+- JSON de compte de service : inline (`serviceAccount`) ou basé sur fichier (`serviceAccountFile`).
+- SecretRef pour compte de service est également pris en charge (`serviceAccountRef`).
- Variables d’environnement de repli : `GOOGLE_CHAT_SERVICE_ACCOUNT` ou `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
-- Utilisez `spaces/` ou `users/` comme cibles de livraison.
-- `channels.googlechat.dangerouslyAllowNameMatching` réactive la correspondance sur les principales d’email modifiables (mode de compatibilité d’urgence).
+- Utilisez `spaces/` ou `users/` pour les cibles de livraison.
+- `channels.googlechat.dangerouslyAllowNameMatching` réactive la correspondance mutable du principal d’e-mail (mode de compatibilité « break-glass »).
### Slack
@@ -433,8 +447,10 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
typingReaction: "hourglass_flowing_sand",
textChunkLimit: 4000,
chunkMode: "length",
- streaming: "partial", // off | partial | block | progress (preview mode)
- nativeStreaming: true, // use Slack native streaming API when streaming=partial
+ streaming: {
+ mode: "partial", // off | partial | block | progress
+ nativeTransport: true, // use Slack native streaming API when mode=partial
+ },
mediaMaxMb: 20,
execApprovals: {
enabled: "auto", // true | false | "auto"
@@ -448,29 +464,30 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
}
```
-- Le **mode socket** nécessite à la fois `botToken` et `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` pour le repli des variables d’environnement du compte par défaut).
+- Le **mode socket** nécessite à la fois `botToken` et `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` pour le repli d’environnement du compte par défaut).
- Le **mode HTTP** nécessite `botToken` plus `signingSecret` (à la racine ou par compte).
- `botToken`, `appToken`, `signingSecret` et `userToken` acceptent des chaînes en clair
ou des objets SecretRef.
-- Les instantanés de compte Slack exposent des champs source/statut par identifiant
- comme `botTokenSource`, `botTokenStatus`, `appTokenStatus` et, en mode HTTP,
+- Les instantanés de compte Slack exposent des champs source/statut par identifiant, tels que
+ `botTokenSource`, `botTokenStatus`, `appTokenStatus` et, en mode HTTP,
`signingSecretStatus`. `configured_unavailable` signifie que le compte est
configuré via SecretRef mais que le chemin de commande/d’exécution actuel n’a pas pu
résoudre la valeur du secret.
- `configWrites: false` bloque les écritures de configuration initiées depuis Slack.
-- `channels.slack.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
-- `channels.slack.streaming` est la clé canonique du mode de flux. Les anciennes valeurs booléennes `streamMode` et `streaming` sont migrées automatiquement.
-- Utilisez `user:` (MP) ou `channel:` pour les cibles de livraison.
+- `channels.slack.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- `channels.slack.streaming.mode` est la clé canonique du mode de flux Slack. `channels.slack.streaming.nativeTransport` contrôle le transport natif de streaming de Slack. Les anciennes valeurs `streamMode`, booléennes `streaming` et `nativeStreaming` sont automatiquement migrées.
+- Utilisez `user:` (DM) ou `channel:` pour les cibles de livraison.
**Modes de notification de réaction :** `off`, `own` (par défaut), `all`, `allowlist` (depuis `reactionAllowlist`).
-**Isolation des sessions de fil :** `thread.historyScope` est par fil (par défaut) ou partagé au niveau du canal. `thread.inheritParent` copie la transcription du canal parent dans les nouveaux fils.
+**Isolation de session par fil :** `thread.historyScope` est par fil (par défaut) ou partagé sur le canal. `thread.inheritParent` copie la transcription du canal parent dans les nouveaux fils.
-- `typingReaction` ajoute une réaction temporaire au message Slack entrant pendant l’exécution d’une réponse, puis la supprime à la fin. Utilisez un shortcode d’emoji Slack tel que `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals` : livraison des approbations d’exécution native Slack et autorisation des approbateurs. Même schéma que Discord : `enabled` (`true`/`false`/`"auto"`), `approvers` (identifiants d’utilisateurs Slack), `agentFilter`, `sessionFilter` et `target` (`"dm"`, `"channel"` ou `"both"`).
+- Le streaming natif Slack ainsi que le statut de fil Slack de type assistant « is typing... » nécessitent une cible de réponse dans un fil. Les DM de niveau supérieur restent hors fil par défaut ; ils utilisent donc `typingReaction` ou une livraison normale au lieu de l’aperçu de style fil.
+- `typingReaction` ajoute temporairement une réaction au message Slack entrant pendant l’exécution d’une réponse, puis la supprime à la fin. Utilisez un shortcode d’emoji Slack tel que `"hourglass_flowing_sand"`.
+- `channels.slack.execApprovals` : livraison native Slack des approbations exec et autorisation des approbateurs. Même schéma que Discord : `enabled` (`true`/`false`/`"auto"`), `approvers` (identifiants d’utilisateurs Slack), `agentFilter`, `sessionFilter` et `target` (`"dm"`, `"channel"` ou `"both"`).
-| Groupe d’actions | Par défaut | Remarques |
-| ---------------- | ---------- | ------------------------- |
+| Groupe d’actions | Par défaut | Remarques |
+| ---------------- | ---------- | ---------------------- |
| reactions | activé | Réagir + lister les réactions |
| messages | activé | Lire/envoyer/modifier/supprimer |
| pins | activé | Épingler/désépingler/lister |
@@ -479,7 +496,7 @@ WhatsApp passe par le canal web de la passerelle (Baileys Web). Il démarre auto
### Mattermost
-Mattermost est fourni sous forme de plugin : `openclaw plugins install @openclaw/mattermost`.
+Mattermost est distribué sous forme de plugin : `openclaw plugins install @openclaw/mattermost`.
```json5
{
@@ -509,23 +526,23 @@ Mattermost est fourni sous forme de plugin : `openclaw plugins install @openclaw
}
```
-Modes de discussion : `oncall` (répond sur @mention, par défaut), `onmessage` (chaque message), `onchar` (messages commençant par le préfixe de déclenchement).
+Modes de chat : `oncall` (répond sur @-mention, par défaut), `onmessage` (chaque message), `onchar` (messages commençant par le préfixe de déclenchement).
Lorsque les commandes natives Mattermost sont activées :
-- `commands.callbackPath` doit être un chemin (par exemple `/api/channels/mattermost/command`), pas une URL complète.
-- `commands.callbackUrl` doit résoudre vers le point de terminaison de la passerelle OpenClaw et être joignable depuis le serveur Mattermost.
-- Les callbacks slash natifs sont authentifiés avec les jetons propres à chaque commande renvoyés
+- `commands.callbackPath` doit être un chemin (par exemple `/api/channels/mattermost/command`), et non une URL complète.
+- `commands.callbackUrl` doit résoudre vers le point de terminaison de la passerelle OpenClaw et être accessible depuis le serveur Mattermost.
+- Les rappels slash natifs sont authentifiés avec les jetons par commande renvoyés
par Mattermost lors de l’enregistrement de la commande slash. Si l’enregistrement échoue ou si aucune
- commande n’est activée, OpenClaw rejette les callbacks avec
+ commande n’est activée, OpenClaw rejette les rappels avec
`Unauthorized: invalid command token.`
-- Pour les hôtes de callback privés/tailnet/internes, Mattermost peut exiger que
- `ServiceSettings.AllowedUntrustedInternalConnections` inclue l’hôte/domaine de callback.
- Utilisez des valeurs d’hôte/domaine, pas des URL complètes.
+- Pour les hôtes de rappel privés/tailnet/internes, Mattermost peut exiger que
+ `ServiceSettings.AllowedUntrustedInternalConnections` inclue l’hôte/le domaine de rappel.
+ Utilisez des valeurs d’hôte/de domaine, et non des URL complètes.
- `channels.mattermost.configWrites` : autoriser ou refuser les écritures de configuration initiées depuis Mattermost.
- `channels.mattermost.requireMention` : exiger une `@mention` avant de répondre dans les canaux.
-- `channels.mattermost.groups..requireMention` : surcharge du filtrage par mention par canal (`"*"` pour la valeur par défaut).
-- `channels.mattermost.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- `channels.mattermost.groups..requireMention` : remplacement du contrôle par mention par canal (`"*"` pour la valeur par défaut).
+- `channels.mattermost.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
### Signal
@@ -550,11 +567,11 @@ Lorsque les commandes natives Mattermost sont activées :
- `channels.signal.account` : épingler le démarrage du canal à une identité de compte Signal spécifique.
- `channels.signal.configWrites` : autoriser ou refuser les écritures de configuration initiées depuis Signal.
-- `channels.signal.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- `channels.signal.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
### BlueBubbles
-BlueBubbles est le chemin iMessage recommandé (plugin, configuré sous `channels.bluebubbles`).
+BlueBubbles est le chemin recommandé pour iMessage (basé sur un plugin, configuré sous `channels.bluebubbles`).
```json5
{
@@ -569,14 +586,14 @@ BlueBubbles est le chemin iMessage recommandé (plugin, configuré sous `channel
}
```
-- Chemins de clés principaux couverts ici : `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- `channels.bluebubbles.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
-- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` peuvent lier des conversations BlueBubbles à des sessions ACP persistantes. Utilisez un handle BlueBubbles ou une chaîne cible (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) dans `match.peer.id`. Sémantique des champs partagée : [ACP Agents](/fr/tools/acp-agents#channel-specific-settings).
+- Chemins de clés principales couverts ici : `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
+- `channels.bluebubbles.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` peuvent lier des conversations BlueBubbles à des sessions ACP persistantes. Utilisez un handle BlueBubbles ou une chaîne cible (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) dans `match.peer.id`. Sémantique partagée des champs : [Agents ACP](/fr/tools/acp-agents#channel-specific-settings).
- La configuration complète du canal BlueBubbles est documentée dans [BlueBubbles](/fr/channels/bluebubbles).
### iMessage
-OpenClaw lance `imsg rpc` (JSON-RPC sur stdio). Aucun daemon ni port n’est requis.
+OpenClaw lance `imsg rpc` (JSON-RPC via stdio). Aucun daemon ni port n’est requis.
```json5
{
@@ -600,15 +617,15 @@ OpenClaw lance `imsg rpc` (JSON-RPC sur stdio). Aucun daemon ni port n’est req
}
```
-- `channels.imessage.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- `channels.imessage.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
- Nécessite un accès complet au disque pour la base de données Messages.
- Préférez les cibles `chat_id:`. Utilisez `imsg chats --limit 20` pour lister les discussions.
-- `cliPath` peut pointer vers un wrapper SSH ; définissez `remoteHost` (`host` ou `user@host`) pour le rapatriement SCP des pièces jointes.
-- `attachmentRoots` et `remoteAttachmentRoots` limitent les chemins des pièces jointes entrantes (par défaut : `/Users/*/Library/Messages/Attachments`).
-- SCP utilise une vérification stricte de la clé d’hôte, assurez-vous donc que la clé d’hôte du relais existe déjà dans `~/.ssh/known_hosts`.
+- `cliPath` peut pointer vers un wrapper SSH ; définissez `remoteHost` (`host` ou `user@host`) pour le récupération SCP des pièces jointes.
+- `attachmentRoots` et `remoteAttachmentRoots` restreignent les chemins des pièces jointes entrantes (par défaut : `/Users/*/Library/Messages/Attachments`).
+- SCP utilise une vérification stricte des clés d’hôte ; assurez-vous donc que la clé d’hôte du relais existe déjà dans `~/.ssh/known_hosts`.
- `channels.imessage.configWrites` : autoriser ou refuser les écritures de configuration initiées depuis iMessage.
-- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` peuvent lier des conversations iMessage à des sessions ACP persistantes. Utilisez un handle normalisé ou une cible de discussion explicite (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) dans `match.peer.id`. Sémantique des champs partagée : [ACP Agents](/fr/tools/acp-agents#channel-specific-settings).
+- Les entrées `bindings[]` de niveau supérieur avec `type: "acp"` peuvent lier des conversations iMessage à des sessions ACP persistantes. Utilisez un handle normalisé ou une cible de chat explicite (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) dans `match.peer.id`. Sémantique partagée des champs : [Agents ACP](/fr/tools/acp-agents#channel-specific-settings).
@@ -652,20 +669,20 @@ Matrix est pris en charge par une extension et configuré sous `channels.matrix`
```
- L’authentification par jeton utilise `accessToken` ; l’authentification par mot de passe utilise `userId` + `password`.
-- `channels.matrix.proxy` route le trafic HTTP Matrix via un proxy HTTP(S) explicite. Les comptes nommés peuvent le remplacer avec `channels.matrix.accounts..proxy`.
+- `channels.matrix.proxy` achemine le trafic HTTP Matrix via un proxy HTTP(S) explicite. Les comptes nommés peuvent le remplacer avec `channels.matrix.accounts..proxy`.
- `channels.matrix.network.dangerouslyAllowPrivateNetwork` autorise les homeservers privés/internes. `proxy` et cette activation réseau sont des contrôles indépendants.
- `channels.matrix.defaultAccount` sélectionne le compte préféré dans les configurations multi-comptes.
-- `channels.matrix.autoJoin` vaut `off` par défaut ; les salons invités et les nouvelles invitations de type MP sont donc ignorés jusqu’à ce que vous définissiez `autoJoin: "allowlist"` avec `autoJoinAllowlist` ou `autoJoin: "always"`.
-- `channels.matrix.execApprovals` : livraison des approbations d’exécution native Matrix et autorisation des approbateurs.
- - `enabled` : `true`, `false` ou `"auto"` (par défaut). En mode auto, les approbations d’exécution s’activent lorsque les approbateurs peuvent être résolus depuis `approvers` ou `commands.ownerAllowFrom`.
- - `approvers` : identifiants d’utilisateurs Matrix (par ex. `@owner:example.org`) autorisés à approuver les demandes d’exécution.
- - `agentFilter` : liste d’autorisations facultative des identifiants d’agent. Omettez pour transférer les approbations pour tous les agents.
- - `sessionFilter` : motifs facultatifs de clés de session (sous-chaîne ou regex).
- - `target` : où envoyer les invites d’approbation. `"dm"` (par défaut), `"channel"` (salon d’origine) ou `"both"`.
- - Surcharges par compte : `channels.matrix.accounts..execApprovals`.
-- `channels.matrix.dm.sessionScope` contrôle la manière dont les MP Matrix sont regroupés en sessions : `per-user` (par défaut) partage par pair routé, tandis que `per-room` isole chaque salon MP.
-- Les sondes d’état Matrix et les recherches en direct dans l’annuaire utilisent la même politique de proxy que le trafic d’exécution.
-- La configuration complète de Matrix, les règles de ciblage et les exemples de configuration sont documentés dans [Matrix](/fr/channels/matrix).
+- `channels.matrix.autoJoin` vaut `off` par défaut ; les salons invités et les nouvelles invitations de type DM sont donc ignorés jusqu’à ce que vous définissiez `autoJoin: "allowlist"` avec `autoJoinAllowlist` ou `autoJoin: "always"`.
+- `channels.matrix.execApprovals` : livraison native Matrix des approbations exec et autorisation des approbateurs.
+ - `enabled` : `true`, `false` ou `"auto"` (par défaut). En mode auto, les approbations exec s’activent lorsque les approbateurs peuvent être résolus depuis `approvers` ou `commands.ownerAllowFrom`.
+ - `approvers` : identifiants d’utilisateurs Matrix (par ex. `@owner:example.org`) autorisés à approuver les demandes exec.
+ - `agentFilter` : liste d’autorisation facultative des identifiants d’agent. Omettez-la pour transférer les approbations de tous les agents.
+ - `sessionFilter` : modèles facultatifs de clés de session (sous-chaîne ou regex).
+ - `target` : destination des invites d’approbation. `"dm"` (par défaut), `"channel"` (salon d’origine) ou `"both"`.
+ - Remplacements par compte : `channels.matrix.accounts..execApprovals`.
+- `channels.matrix.dm.sessionScope` contrôle la façon dont les DM Matrix sont regroupés en sessions : `per-user` (par défaut) partage par pair routé, tandis que `per-room` isole chaque salon DM.
+- Les sondes de statut Matrix et les consultations de répertoire en direct utilisent la même politique de proxy que le trafic d’exécution.
+- La configuration complète de Matrix, les règles de ciblage et les exemples d’installation sont documentés dans [Matrix](/fr/channels/matrix).
### Microsoft Teams
@@ -684,8 +701,8 @@ Microsoft Teams est pris en charge par une extension et configuré sous `channel
}
```
-- Chemins de clés principaux couverts ici : `channels.msteams`, `channels.msteams.configWrites`.
-- La configuration complète de Teams (identifiants, webhook, politique MP/groupe, surcharges par équipe/par canal) est documentée dans [Microsoft Teams](/fr/channels/msteams).
+- Chemins de clés principales couverts ici : `channels.msteams`, `channels.msteams.configWrites`.
+- La configuration complète de Teams (identifiants, webhook, politique DM/groupe, remplacements par équipe/par canal) est documentée dans [Microsoft Teams](/fr/channels/msteams).
### IRC
@@ -710,9 +727,9 @@ IRC est pris en charge par une extension et configuré sous `channels.irc`.
}
```
-- Chemins de clés principaux couverts ici : `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- `channels.irc.defaultAccount` facultatif remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
-- La configuration complète du canal IRC (hôte/port/TLS/canaux/listes d’autorisations/filtrage par mention) est documentée dans [IRC](/fr/channels/irc).
+- Chemins de clés principales couverts ici : `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
+- `channels.irc.defaultAccount` est facultatif et remplace la sélection du compte par défaut lorsqu’il correspond à un identifiant de compte configuré.
+- La configuration complète du canal IRC (hôte/port/TLS/canaux/listes d’autorisation/contrôle par mention) est documentée dans [IRC](/fr/channels/irc).
### Multi-compte (tous les canaux)
@@ -739,26 +756,26 @@ Exécutez plusieurs comptes par canal (chacun avec son propre `accountId`) :
- `default` est utilisé lorsque `accountId` est omis (CLI + routage).
- Les jetons d’environnement ne s’appliquent qu’au compte **default**.
-- Les paramètres de canal de base s’appliquent à tous les comptes sauf surcharge par compte.
+- Les paramètres de canal de base s’appliquent à tous les comptes sauf s’ils sont remplacés par compte.
- Utilisez `bindings[].match.accountId` pour router chaque compte vers un agent différent.
-- Si vous ajoutez un compte non par défaut via `openclaw channels add` (ou l’onboarding de canal) alors que vous êtes encore sur une configuration de canal mono-compte de niveau supérieur, OpenClaw promeut d’abord les valeurs mono-compte de niveau supérieur à portée de compte dans la map des comptes du canal afin que le compte d’origine continue de fonctionner. La plupart des canaux les déplacent dans `channels..accounts.default` ; Matrix peut à la place préserver une cible nommée/par défaut existante correspondante.
-- Les liaisons existantes uniquement au niveau du canal (sans `accountId`) continuent de correspondre au compte par défaut ; les liaisons à portée de compte restent facultatives.
-- `openclaw doctor --fix` répare aussi les formes mixtes en déplaçant les valeurs mono-compte de niveau supérieur à portée de compte vers le compte promu choisi pour ce canal. La plupart des canaux utilisent `accounts.default` ; Matrix peut à la place préserver une cible nommée/par défaut existante correspondante.
+- Si vous ajoutez un compte non par défaut via `openclaw channels add` (ou l’onboarding de canal) alors que vous êtes encore sur une configuration de canal de niveau supérieur en compte unique, OpenClaw promeut d’abord les valeurs de niveau supérieur à portée de compte unique dans la map des comptes du canal afin que le compte d’origine continue de fonctionner. La plupart des canaux les déplacent dans `channels..accounts.default` ; Matrix peut conserver à la place une cible nommée/par défaut existante correspondante.
+- Les liaisons existantes propres au canal (sans `accountId`) continuent de correspondre au compte par défaut ; les liaisons à portée de compte restent facultatives.
+- `openclaw doctor --fix` répare également les formes mixtes en déplaçant les valeurs de niveau supérieur à portée de compte unique dans le compte promu choisi pour ce canal. La plupart des canaux utilisent `accounts.default` ; Matrix peut conserver à la place une cible nommée/par défaut existante correspondante.
### Autres canaux d’extension
-De nombreux canaux d’extension sont configurés comme `channels.` et documentés dans leurs pages de canal dédiées (par exemple Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat et Twitch).
+De nombreux canaux d’extension sont configurés sous `channels.` et documentés dans leurs pages de canal dédiées (par exemple Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat et Twitch).
Consultez l’index complet des canaux : [Canaux](/fr/channels).
-### Filtrage par mention dans les discussions de groupe
+### Contrôle par mention dans les discussions de groupe
-Les messages de groupe exigent par défaut une **mention requise** (mention de métadonnées ou motifs regex sûrs). S’applique aux discussions de groupe WhatsApp, Telegram, Discord, Google Chat et iMessage.
+Les messages de groupe exigent par défaut une **mention requise** (mention de métadonnées ou motifs regex sûrs). Cela s’applique aux discussions de groupe WhatsApp, Telegram, Discord, Google Chat et iMessage.
**Types de mention :**
-- **Mentions de métadonnées** : @mentions natives de la plateforme. Ignorées en mode self-chat WhatsApp.
-- **Motifs textuels** : motifs regex sûrs dans `agents.list[].groupChat.mentionPatterns`. Les motifs invalides et les répétitions imbriquées non sûres sont ignorés.
-- Le filtrage par mention n’est appliqué que lorsque la détection est possible (mentions natives ou au moins un motif).
+- **Mentions de métadonnées** : @-mentions natives de la plateforme. Ignorées en mode auto-chat WhatsApp.
+- **Motifs textuels** : motifs regex sûrs dans `agents.list[].groupChat.mentionPatterns`. Les motifs invalides et les répétitions imbriquées dangereuses sont ignorés.
+- Le contrôle par mention n’est appliqué que lorsque la détection est possible (mentions natives ou au moins un motif).
```json5
{
@@ -773,7 +790,7 @@ Les messages de groupe exigent par défaut une **mention requise** (mention de m
`messages.groupChat.historyLimit` définit la valeur globale par défaut. Les canaux peuvent la remplacer avec `channels..historyLimit` (ou par compte). Définissez `0` pour désactiver.
-#### Limites d’historique des messages privés
+#### Limites d’historique des DM
```json5
{
@@ -788,13 +805,13 @@ Les messages de groupe exigent par défaut une **mention requise** (mention de m
}
```
-Résolution : surcharge par MP → valeur par défaut du fournisseur → aucune limite (tout est conservé).
+Résolution : remplacement par DM → valeur par défaut du fournisseur → aucune limite (tout est conservé).
Pris en charge : `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
-#### Mode self-chat
+#### Mode auto-chat
-Incluez votre propre numéro dans `allowFrom` pour activer le mode self-chat (ignore les @mentions natives, répond uniquement aux motifs textuels) :
+Incluez votre propre numéro dans `allowFrom` pour activer le mode auto-chat (ignore les @-mentions natives, ne répond qu’aux motifs textuels) :
```json5
{
@@ -821,12 +838,18 @@ Incluez votre propre numéro dans `allowFrom` pour activer le mode self-chat (ig
{
commands: {
native: "auto", // register native commands when supported
+ nativeSkills: "auto", // register native skill commands when supported
text: true, // parse /commands in chat messages
bash: false, // allow ! (alias: /bash)
bashForegroundMs: 2000,
config: false, // allow /config
+ mcp: false, // allow /mcp
+ plugins: false, // allow /plugins
debug: false, // allow /debug
- restart: false, // allow /restart + gateway restart tool
+ restart: true, // allow /restart + gateway restart tool
+ ownerAllowFrom: ["discord:123456789012345678"],
+ ownerDisplay: "raw", // raw | hash
+ ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}",
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
@@ -838,16 +861,32 @@ Incluez votre propre numéro dans `allowFrom` pour activer le mode self-chat (ig
-- Les commandes textuelles doivent être des messages **autonomes** commençant par `/`.
-- `native: "auto"` active les commandes natives pour Discord/Telegram, laisse Slack désactivé.
-- Surcharge par canal : `channels.discord.commands.native` (booléen ou `"auto"`). `false` efface les commandes précédemment enregistrées.
+- Ce bloc configure les surfaces de commande. Pour le catalogue actuel de commandes intégrées + fournies en bundle, voir [Commandes slash](/fr/tools/slash-commands).
+- Cette page est une **référence des clés de configuration**, pas le catalogue complet des commandes. Les commandes appartenant à un canal/plugin telles que QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` et Talk `/voice` sont documentées dans leurs pages de canal/plugin ainsi que dans [Commandes slash](/fr/tools/slash-commands).
+- Les commandes textuelles doivent être des messages **autonomes** avec un `/` initial.
+- `native: "auto"` active les commandes natives pour Discord/Telegram, et laisse Slack désactivé.
+- `nativeSkills: "auto"` active les commandes de Skills natives pour Discord/Telegram, et laisse Slack désactivé.
+- Remplacement par canal : `channels.discord.commands.native` (booléen ou `"auto"`). `false` efface les commandes précédemment enregistrées.
+- Remplacez l’enregistrement natif des Skills par canal avec `channels..commands.nativeSkills`.
- `channels.telegram.customCommands` ajoute des entrées supplémentaires au menu du bot Telegram.
-- `bash: true` active `! ` pour le shell hôte. Nécessite `tools.elevated.enabled` et que l’expéditeur soit dans `tools.elevated.allowFrom.`.
-- `config: true` active `/config` (lecture/écriture de `openclaw.json`). Pour les clients `chat.send` de la passerelle, les écritures persistantes `/config set|unset` exigent aussi `operator.admin` ; le mode lecture seule `/config show` reste disponible pour les clients opérateur à portée d’écriture normale.
+- `bash: true` active `! ` pour le shell hôte. Nécessite `tools.elevated.enabled` et que l’expéditeur figure dans `tools.elevated.allowFrom.`.
+- `config: true` active `/config` (lecture/écriture de `openclaw.json`). Pour les clients passerelle `chat.send`, les écritures persistantes `/config set|unset` nécessitent également `operator.admin` ; la commande en lecture seule `/config show` reste disponible pour les clients opérateurs normaux avec portée d’écriture.
+- `mcp: true` active `/mcp` pour la configuration des serveurs MCP gérés par OpenClaw sous `mcp.servers`.
+- `plugins: true` active `/plugins` pour la découverte, l’installation et les contrôles d’activation/désactivation des plugins.
- `channels..configWrites` contrôle les mutations de configuration par canal (par défaut : true).
-- Pour les canaux multi-comptes, `channels..accounts..configWrites` contrôle également les écritures qui ciblent ce compte (par exemple `/allowlist --config --account ` ou `/config set channels..accounts....`).
-- `allowFrom` est par fournisseur. Lorsqu’il est défini, il devient la **seule** source d’autorisation (les listes d’autorisations/appairage du canal et `useAccessGroups` sont ignorés).
-- `useAccessGroups: false` autorise les commandes à contourner les politiques de groupes d’accès lorsque `allowFrom` n’est pas défini.
+- Pour les canaux multi-comptes, `channels..accounts..configWrites` contrôle aussi les écritures ciblant ce compte (par exemple `/allowlist --config --account ` ou `/config set channels..accounts....`).
+- `restart: false` désactive `/restart` et les actions de l’outil de redémarrage de passerelle. Par défaut : `true`.
+- `ownerAllowFrom` est la liste d’autorisation explicite du propriétaire pour les commandes/outils réservés au propriétaire. Elle est distincte de `allowFrom`.
+- `ownerDisplay: "hash"` hache les identifiants du propriétaire dans le prompt système. Définissez `ownerDisplaySecret` pour contrôler le hachage.
+- `allowFrom` est par fournisseur. Lorsqu’il est défini, c’est l’**unique** source d’autorisation (les listes d’autorisation/l’association du canal et `useAccessGroups` sont ignorés).
+- `useAccessGroups: false` permet aux commandes de contourner les politiques de groupes d’accès lorsque `allowFrom` n’est pas défini.
+- Cartographie de la documentation des commandes :
+ - catalogue intégré + bundle : [Commandes slash](/fr/tools/slash-commands)
+ - surfaces de commande spécifiques aux canaux : [Canaux](/fr/channels)
+ - commandes QQ Bot : [QQ Bot](/fr/channels/qqbot)
+ - commandes d’association : [Association](/fr/channels/pairing)
+ - commande de carte LINE : [LINE](/fr/channels/line)
+ - memory dreaming : [Dreaming](/fr/concepts/dreaming)
@@ -867,7 +906,7 @@ Par défaut : `~/.openclaw/workspace`.
### `agents.defaults.repoRoot`
-Racine de dépôt facultative affichée dans la ligne Runtime du prompt système. Si elle n’est pas définie, OpenClaw la détecte automatiquement en remontant depuis l’espace de travail.
+Racine de dépôt facultative affichée dans la ligne Runtime du prompt système. Si elle n’est pas définie, OpenClaw la détecte automatiquement en remontant depuis le workspace.
```json5
{
@@ -877,7 +916,7 @@ Racine de dépôt facultative affichée dans la ligne Runtime du prompt système
### `agents.defaults.skills`
-Liste d’autorisations facultative des Skills par défaut pour les agents qui ne définissent pas
+Liste d’autorisation de Skills par défaut facultative pour les agents qui ne définissent pas
`agents.list[].skills`.
```json5
@@ -896,12 +935,12 @@ Liste d’autorisations facultative des Skills par défaut pour les agents qui n
- Omettez `agents.defaults.skills` pour des Skills non restreintes par défaut.
- Omettez `agents.list[].skills` pour hériter des valeurs par défaut.
- Définissez `agents.list[].skills: []` pour n’avoir aucune Skills.
-- Une liste non vide `agents.list[].skills` constitue l’ensemble final pour cet agent ; elle
+- Une liste non vide dans `agents.list[].skills` constitue l’ensemble final pour cet agent ; elle
ne fusionne pas avec les valeurs par défaut.
### `agents.defaults.skipBootstrap`
-Désactive la création automatique des fichiers bootstrap de l’espace de travail (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
+Désactive la création automatique des fichiers bootstrap du workspace (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
```json5
{
@@ -911,9 +950,9 @@ Désactive la création automatique des fichiers bootstrap de l’espace de trav
### `agents.defaults.contextInjection`
-Contrôle quand les fichiers bootstrap de l’espace de travail sont injectés dans le prompt système. Par défaut : `"always"`.
+Contrôle le moment où les fichiers bootstrap du workspace sont injectés dans le prompt système. Valeur par défaut : `"always"`.
-- `"continuation-skip"` : les tours de continuation sûrs (après une réponse complète de l’assistant) ignorent la réinjection du bootstrap de l’espace de travail, réduisant ainsi la taille du prompt. Les exécutions heartbeat et les réessais après compaction reconstruisent toujours le contexte.
+- `"continuation-skip"` : les tours de continuation sûrs (après une réponse d’assistant terminée) sautent la réinjection du bootstrap du workspace, réduisant ainsi la taille du prompt. Les exécutions heartbeat et les nouvelles tentatives après compaction reconstruisent toujours le contexte.
```json5
{
@@ -923,7 +962,7 @@ Contrôle quand les fichiers bootstrap de l’espace de travail sont injectés d
### `agents.defaults.bootstrapMaxChars`
-Nombre maximal de caractères par fichier bootstrap de l’espace de travail avant troncature. Par défaut : `20000`.
+Nombre maximal de caractères par fichier bootstrap de workspace avant troncature. Valeur par défaut : `20000`.
```json5
{
@@ -933,7 +972,7 @@ Nombre maximal de caractères par fichier bootstrap de l’espace de travail ava
### `agents.defaults.bootstrapTotalMaxChars`
-Nombre maximal total de caractères injectés à travers tous les fichiers bootstrap de l’espace de travail. Par défaut : `150000`.
+Nombre total maximal de caractères injectés sur l’ensemble des fichiers bootstrap du workspace. Valeur par défaut : `150000`.
```json5
{
@@ -947,7 +986,7 @@ Contrôle le texte d’avertissement visible par l’agent lorsque le contexte b
Par défaut : `"once"`.
- `"off"` : ne jamais injecter de texte d’avertissement dans le prompt système.
-- `"once"` : injecter l’avertissement une fois par signature de troncature unique (recommandé).
+- `"once"` : injecter l’avertissement une fois par signature unique de troncature (recommandé).
- `"always"` : injecter l’avertissement à chaque exécution lorsqu’une troncature existe.
```json5
@@ -958,10 +997,10 @@ Par défaut : `"once"`.
### `agents.defaults.imageMaxDimensionPx`
-Taille maximale en pixels du côté le plus long de l’image dans les blocs image de transcription/outil avant les appels fournisseur.
+Taille maximale en pixels du plus grand côté d’image dans les blocs d’image de transcription/outil avant les appels fournisseur.
Par défaut : `1200`.
-Des valeurs plus faibles réduisent généralement l’utilisation de vision-tokens et la taille de la charge utile des requêtes pour les exécutions riches en captures d’écran.
+Des valeurs plus basses réduisent généralement l’utilisation de jetons de vision et la taille des charges de requête pour les exécutions riches en captures d’écran.
Des valeurs plus élevées préservent davantage de détails visuels.
```json5
@@ -972,7 +1011,7 @@ Des valeurs plus élevées préservent davantage de détails visuels.
### `agents.defaults.userTimezone`
-Fuseau horaire pour le contexte du prompt système (pas les horodatages des messages). Repli sur le fuseau horaire de l’hôte.
+Fuseau horaire pour le contexte du prompt système (pas les horodatages des messages). Revient au fuseau horaire de l’hôte si absent.
```json5
{
@@ -1037,41 +1076,41 @@ Format de l’heure dans le prompt système. Par défaut : `auto` (préférence
- `model` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- La forme chaîne définit uniquement le modèle principal.
- - La forme objet définit le modèle principal ainsi que des modèles de bascule ordonnés.
+ - La forme objet définit le principal plus les modèles de basculement ordonnés.
- `imageModel` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- - Utilisé par le chemin de l’outil `image` comme configuration du modèle de vision.
- - Utilisé également comme routage de repli lorsque le modèle sélectionné/par défaut ne peut pas accepter une entrée image.
+ - Utilisé par le chemin de l’outil `image` comme configuration de modèle de vision.
+ - Aussi utilisé comme routage de secours lorsque le modèle sélectionné/par défaut n’accepte pas d’entrée image.
- `imageGenerationModel` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- - Utilisé par la capacité partagée de génération d’images et toute future surface d’outil/plugin générant des images.
- - Valeurs typiques : `google/gemini-3.1-flash-image-preview` pour la génération d’images Gemini native, `fal/fal-ai/flux/dev` pour fal, ou `openai/gpt-image-1` pour OpenAI Images.
+ - Utilisé par la capacité partagée de génération d’image et toute future surface d’outil/plugin qui génère des images.
+ - Valeurs typiques : `google/gemini-3.1-flash-image-preview` pour la génération d’image native Gemini, `fal/fal-ai/flux/dev` pour fal, ou `openai/gpt-image-1` pour OpenAI Images.
- Si vous sélectionnez directement un provider/model, configurez aussi l’authentification/la clé API du fournisseur correspondant (par exemple `GEMINI_API_KEY` ou `GOOGLE_API_KEY` pour `google/*`, `OPENAI_API_KEY` pour `openai/*`, `FAL_KEY` pour `fal/*`).
- - Si omis, `image_generate` peut quand même déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs de génération d’images enregistrés dans l’ordre des identifiants de fournisseur.
+ - Si omis, `image_generate` peut toujours déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs enregistrés de génération d’image par ordre d’identifiant de fournisseur.
- `musicGenerationModel` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- Utilisé par la capacité partagée de génération musicale et l’outil intégré `music_generate`.
- Valeurs typiques : `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` ou `minimax/music-2.5+`.
- - Si omis, `music_generate` peut quand même déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs de génération musicale enregistrés dans l’ordre des identifiants de fournisseur.
+ - Si omis, `music_generate` peut toujours déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs enregistrés de génération musicale par ordre d’identifiant de fournisseur.
- Si vous sélectionnez directement un provider/model, configurez aussi l’authentification/la clé API du fournisseur correspondant.
- `videoGenerationModel` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- Utilisé par la capacité partagée de génération vidéo et l’outil intégré `video_generate`.
- Valeurs typiques : `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` ou `qwen/wan2.7-r2v`.
- - Si omis, `video_generate` peut quand même déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs de génération vidéo enregistrés dans l’ordre des identifiants de fournisseur.
+ - Si omis, `video_generate` peut toujours déduire une valeur par défaut de fournisseur avec authentification. Il essaie d’abord le fournisseur par défaut actuel, puis les autres fournisseurs enregistrés de génération vidéo par ordre d’identifiant de fournisseur.
- Si vous sélectionnez directement un provider/model, configurez aussi l’authentification/la clé API du fournisseur correspondant.
- - Le fournisseur groupé de génération vidéo Qwen prend actuellement en charge jusqu’à 1 vidéo de sortie, 1 image d’entrée, 4 vidéos d’entrée, 10 secondes de durée, ainsi que les options de niveau fournisseur `size`, `aspectRatio`, `resolution`, `audio` et `watermark`.
+ - Le fournisseur groupé de génération vidéo Qwen prend actuellement en charge jusqu’à 1 vidéo de sortie, 1 image d’entrée, 4 vidéos d’entrée, une durée de 10 secondes, ainsi que les options de niveau fournisseur `size`, `aspectRatio`, `resolution`, `audio` et `watermark`.
- `pdfModel` : accepte soit une chaîne (`"provider/model"`), soit un objet (`{ primary, fallbacks }`).
- - Utilisé par l’outil `pdf` pour le routage des modèles.
- - Si omis, l’outil PDF revient à `imageModel`, puis au modèle de session/par défaut résolu.
-- `pdfMaxBytesMb` : limite de taille PDF par défaut pour l’outil `pdf` lorsque `maxBytesMb` n’est pas transmis à l’appel.
-- `pdfMaxPages` : nombre maximal de pages considéré par défaut en mode de repli d’extraction dans l’outil `pdf`.
+ - Utilisé par l’outil `pdf` pour le routage de modèle.
+ - Si omis, l’outil PDF se replie sur `imageModel`, puis sur le modèle résolu de session/par défaut.
+- `pdfMaxBytesMb` : limite de taille PDF par défaut pour l’outil `pdf` lorsque `maxBytesMb` n’est pas transmis au moment de l’appel.
+- `pdfMaxPages` : nombre maximal de pages considéré par défaut par le mode de repli d’extraction dans l’outil `pdf`.
- `verboseDefault` : niveau de verbosité par défaut pour les agents. Valeurs : `"off"`, `"on"`, `"full"`. Par défaut : `"off"`.
-- `elevatedDefault` : niveau par défaut de sortie élevée pour les agents. Valeurs : `"off"`, `"on"`, `"ask"`, `"full"`. Par défaut : `"on"`.
-- `model.primary` : format `provider/model` (par ex. `openai/gpt-5.4`). Si vous omettez le fournisseur, OpenClaw essaie d’abord un alias, puis une correspondance unique de fournisseur configuré pour cet identifiant de modèle exact, et seulement ensuite revient au fournisseur par défaut configuré (comportement de compatibilité déprécié ; préférez donc `provider/model` explicite). Si ce fournisseur n’expose plus le modèle par défaut configuré, OpenClaw revient au premier provider/model configuré au lieu de signaler une valeur par défaut obsolète d’un fournisseur supprimé.
-- `models` : catalogue et liste d’autorisations des modèles configurés pour `/model`. Chaque entrée peut inclure `alias` (raccourci) et `params` (spécifiques au fournisseur, par ex. `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
-- `params` : paramètres fournisseur globaux par défaut appliqués à tous les modèles. À définir dans `agents.defaults.params` (par ex. `{ cacheRetention: "long" }`).
-- Priorité de fusion de `params` (configuration) : `agents.defaults.params` (base globale) est remplacé par `agents.defaults.models["provider/model"].params` (par modèle), puis `agents.list[].params` (identifiant d’agent correspondant) remplace par clé. Voir [Prompt Caching](/fr/reference/prompt-caching) pour les détails.
-- Les rédacteurs de configuration qui modifient ces champs (par exemple `/models set`, `/models set-image` et les commandes d’ajout/suppression de repli) enregistrent la forme objet canonique et préservent les listes de fallback existantes lorsque possible.
-- `maxConcurrent` : nombre maximal d’exécutions parallèles d’agents entre les sessions (chaque session reste sérialisée). Par défaut : 4.
+- `elevatedDefault` : niveau de sortie élevée par défaut pour les agents. Valeurs : `"off"`, `"on"`, `"ask"`, `"full"`. Par défaut : `"on"`.
+- `model.primary` : format `provider/model` (ex. `openai/gpt-5.4`). Si vous omettez le fournisseur, OpenClaw essaie d’abord un alias, puis une correspondance unique de fournisseur configuré pour cet identifiant exact de modèle, et seulement ensuite revient au fournisseur par défaut configuré (comportement de compatibilité déprécié ; préférez donc `provider/model` explicite). Si ce fournisseur n’expose plus le modèle par défaut configuré, OpenClaw se replie sur le premier provider/model configuré au lieu d’exposer une ancienne valeur par défaut d’un fournisseur supprimé.
+- `models` : catalogue configuré des modèles et liste d’autorisation pour `/model`. Chaque entrée peut inclure `alias` (raccourci) et `params` (spécifiques au fournisseur, par exemple `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
+- `params` : paramètres globaux par défaut de fournisseur appliqués à tous les modèles. Définis dans `agents.defaults.params` (par ex. `{ cacheRetention: "long" }`).
+- Priorité de fusion de `params` (configuration) : `agents.defaults.params` (base globale) est remplacé par `agents.defaults.models["provider/model"].params` (par modèle), puis `agents.list[].params` (identifiant d’agent correspondant) remplace par clé. Voir [Mise en cache des prompts](/fr/reference/prompt-caching) pour les détails.
+- Les rédacteurs de configuration qui modifient ces champs (par exemple `/models set`, `/models set-image` et les commandes d’ajout/suppression de secours) enregistrent la forme objet canonique et conservent les listes de repli existantes lorsque cela est possible.
+- `maxConcurrent` : nombre maximal d’exécutions parallèles d’agents sur l’ensemble des sessions (chaque session reste sérialisée). Par défaut : 4.
-**Alias raccourcis intégrés** (ne s’appliquent que lorsque le modèle est dans `agents.defaults.models`) :
+**Alias raccourcis intégrés** (ne s’appliquent que lorsque le modèle est présent dans `agents.defaults.models`) :
| Alias | Modèle |
| ------------------- | -------------------------------------- |
@@ -1087,12 +1126,12 @@ Format de l’heure dans le prompt système. Par défaut : `auto` (préférence
Vos alias configurés ont toujours priorité sur les valeurs par défaut.
Les modèles Z.AI GLM-4.x activent automatiquement le mode thinking sauf si vous définissez `--thinking off` ou définissez vous-même `agents.defaults.models["zai/"].params.thinking`.
-Les modèles Z.AI activent `tool_stream` par défaut pour le streaming des appels d’outils. Définissez `agents.defaults.models["zai/"].params.tool_stream` sur `false` pour le désactiver.
-Les modèles Anthropic Claude 4.6 utilisent par défaut le mode thinking `adaptive` lorsqu’aucun niveau explicite de thinking n’est défini.
+Les modèles Z.AI activent `tool_stream` par défaut pour le streaming d’appels d’outil. Définissez `agents.defaults.models["zai/"].params.tool_stream` à `false` pour le désactiver.
+Les modèles Anthropic Claude 4.6 utilisent par défaut le mode thinking `adaptive` lorsqu’aucun niveau de thinking explicite n’est défini.
### `agents.defaults.cliBackends`
-Backends CLI facultatifs pour les exécutions de secours uniquement textuelles (sans appels d’outils). Utile comme solution de repli lorsque les fournisseurs d’API échouent.
+Backends CLI facultatifs pour les exécutions de repli texte seul (sans appels d’outils). Utile comme sauvegarde lorsque les fournisseurs d’API échouent.
```json5
{
@@ -1120,9 +1159,9 @@ Backends CLI facultatifs pour les exécutions de secours uniquement textuelles (
}
```
-- Les backends CLI sont orientés texte ; les outils sont toujours désactivés.
+- Les backends CLI sont d’abord conçus pour le texte ; les outils sont toujours désactivés.
- Les sessions sont prises en charge lorsque `sessionArg` est défini.
-- Le passage d’image est pris en charge lorsque `imageArg` accepte des chemins de fichiers.
+- Le passage d’images est pris en charge lorsque `imageArg` accepte des chemins de fichier.
### `agents.defaults.heartbeat`
@@ -1152,12 +1191,12 @@ Exécutions heartbeat périodiques.
```
- `every` : chaîne de durée (ms/s/m/h). Par défaut : `30m` (authentification par clé API) ou `1h` (authentification OAuth). Définissez `0m` pour désactiver.
-- `suppressToolErrorWarnings` : lorsque true, supprime les charges utiles d’avertissement d’erreur d’outil pendant les exécutions heartbeat.
-- `directPolicy` : politique de livraison directe/MP. `allow` (par défaut) permet la livraison directe. `block` la supprime et émet `reason=dm-blocked`.
-- `lightContext` : lorsque true, les exécutions heartbeat utilisent un contexte bootstrap léger et ne conservent que `HEARTBEAT.md` parmi les fichiers bootstrap de l’espace de travail.
-- `isolatedSession` : lorsque true, chaque heartbeat s’exécute dans une session fraîche sans historique de conversation préalable. Même schéma d’isolation que `sessionTarget: "isolated"` pour les cron. Réduit le coût de tokens par heartbeat d’environ 100K à 2–5K tokens.
+- `suppressToolErrorWarnings` : lorsque vrai, supprime les charges d’avertissement d’erreur d’outil pendant les exécutions heartbeat.
+- `directPolicy` : politique de livraison directe/DM. `allow` (par défaut) autorise la livraison à cible directe. `block` supprime la livraison à cible directe et émet `reason=dm-blocked`.
+- `lightContext` : lorsque vrai, les exécutions heartbeat utilisent un contexte bootstrap léger et ne conservent que `HEARTBEAT.md` parmi les fichiers bootstrap du workspace.
+- `isolatedSession` : lorsque vrai, chaque exécution heartbeat se fait dans une session fraîche sans historique de conversation antérieur. Même modèle d’isolation que le cron `sessionTarget: "isolated"`. Réduit le coût en jetons par heartbeat d’environ 100K à environ 2-5K jetons.
- Par agent : définissez `agents.list[].heartbeat`. Lorsqu’un agent définit `heartbeat`, **seuls ces agents** exécutent des heartbeats.
-- Les heartbeats exécutent des tours complets d’agent — des intervalles plus courts consomment plus de tokens.
+- Les heartbeats exécutent des tours complets d’agent — des intervalles plus courts consomment plus de jetons.
### `agents.defaults.compaction`
@@ -1187,19 +1226,19 @@ Exécutions heartbeat périodiques.
}
```
-- `mode` : `default` ou `safeguard` (synthèse par morceaux pour les longs historiques). Voir [Compaction](/fr/concepts/compaction).
-- `provider` : identifiant d’un plugin fournisseur de compaction enregistré. Lorsqu’il est défini, la méthode `summarize()` du fournisseur est appelée à la place de la synthèse LLM intégrée. Revient à l’intégrée en cas d’échec. Définir un fournisseur force `mode: "safeguard"`. Voir [Compaction](/fr/concepts/compaction).
-- `timeoutSeconds` : nombre maximal de secondes autorisées pour une seule opération de compaction avant qu’OpenClaw ne l’abandonne. Par défaut : `900`.
-- `identifierPolicy` : `strict` (par défaut), `off` ou `custom`. `strict` préfixe des consignes intégrées de conservation des identifiants opaques pendant la synthèse de compaction.
-- `identifierInstructions` : texte facultatif personnalisé de préservation des identifiants utilisé lorsque `identifierPolicy=custom`.
-- `postCompactionSections` : noms facultatifs de sections H2/H3 de `AGENTS.md` à réinjecter après la compaction. Par défaut `["Session Startup", "Red Lines"]` ; définissez `[]` pour désactiver la réinjection. Lorsqu’il n’est pas défini ou explicitement défini à cette paire par défaut, les anciens intitulés `Every Session`/`Safety` sont aussi acceptés comme repli hérité.
-- `model` : surcharge facultative `provider/model-id` uniquement pour la synthèse de compaction. Utilisez-la lorsque la session principale doit garder un modèle mais que les résumés de compaction doivent s’exécuter sur un autre ; lorsqu’il n’est pas défini, la compaction utilise le modèle principal de la session.
-- `notifyUser` : lorsque `true`, envoie un bref avis à l’utilisateur quand la compaction commence (par exemple, "Compacting context..."). Désactivé par défaut afin que la compaction reste silencieuse.
-- `memoryFlush` : tour agentique silencieux avant la compaction automatique afin de stocker des mémoires durables. Ignoré lorsque l’espace de travail est en lecture seule.
+- `mode` : `default` ou `safeguard` (résumé par morceaux pour les longs historiques). Voir [Compaction](/fr/concepts/compaction).
+- `provider` : identifiant d’un plugin fournisseur de compaction enregistré. Lorsqu’il est défini, le `summarize()` du fournisseur est appelé à la place du résumé LLM intégré. Revient à l’intégration native en cas d’échec. Définir un fournisseur force `mode: "safeguard"`. Voir [Compaction](/fr/concepts/compaction).
+- `timeoutSeconds` : nombre maximal de secondes autorisées pour une opération unique de compaction avant qu’OpenClaw l’abandonne. Par défaut : `900`.
+- `identifierPolicy` : `strict` (par défaut), `off` ou `custom`. `strict` préfixe des consignes intégrées de conservation des identifiants opaques pendant le résumé de compaction.
+- `identifierInstructions` : texte facultatif de conservation d’identifiants personnalisé utilisé lorsque `identifierPolicy=custom`.
+- `postCompactionSections` : noms facultatifs de sections H2/H3 d’AGENTS.md à réinjecter après compaction. Par défaut `["Session Startup", "Red Lines"]` ; définissez `[]` pour désactiver la réinjection. Lorsqu’il n’est pas défini ou qu’il est explicitement égal à cette paire par défaut, les anciens titres `Every Session`/`Safety` sont aussi acceptés en repli hérité.
+- `model` : remplacement facultatif `provider/model-id` pour le résumé de compaction uniquement. Utilisez-le lorsque la session principale doit conserver un modèle mais que les résumés de compaction doivent s’exécuter sur un autre ; lorsqu’il est absent, la compaction utilise le modèle principal de la session.
+- `notifyUser` : lorsque `true`, envoie un bref avis à l’utilisateur lorsque la compaction démarre (par exemple, « Compacting context... »). Désactivé par défaut afin de garder la compaction silencieuse.
+- `memoryFlush` : tour agentique silencieux avant auto-compaction pour stocker des souvenirs durables. Ignoré lorsque le workspace est en lecture seule.
### `agents.defaults.contextPruning`
-Élague les **anciens résultats d’outils** du contexte en mémoire avant l’envoi au LLM. Ne modifie **pas** l’historique de session sur disque.
+Élague les **anciens résultats d’outils** du contexte en mémoire avant l’envoi au LLM. Cela **ne modifie pas** l’historique de session sur disque.
```json5
{
@@ -1224,24 +1263,24 @@ Exécutions heartbeat périodiques.
- `mode: "cache-ttl"` active les passes d’élagage.
-- `ttl` contrôle la fréquence à laquelle l’élagage peut se réexécuter (après le dernier accès au cache).
-- L’élagage tronque d’abord légèrement les résultats d’outils surdimensionnés, puis efface complètement les plus anciens si nécessaire.
+- `ttl` contrôle à quelle fréquence l’élagage peut de nouveau s’exécuter (après le dernier accès au cache).
+- L’élagage réduit d’abord en douceur les résultats d’outils surdimensionnés, puis efface complètement les plus anciens si nécessaire.
-**Le soft-trim** conserve le début + la fin et insère `...` au milieu.
+**Soft-trim** conserve le début + la fin et insère `...` au milieu.
-**Le hard-clear** remplace l’intégralité du résultat d’outil par le placeholder.
+**Hard-clear** remplace l’intégralité du résultat de l’outil par le placeholder.
Remarques :
-- Les blocs d’image ne sont jamais tronqués/effacés.
-- Les ratios sont basés sur les caractères (approximation), pas sur des comptes de tokens exacts.
-- Si moins de `keepLastAssistants` messages assistant existent, l’élagage est ignoré.
+- Les blocs d’image ne sont jamais réduits/effacés.
+- Les ratios sont basés sur les caractères (approximatifs), pas sur des comptages exacts de jetons.
+- S’il y a moins de `keepLastAssistants` messages d’assistant, l’élagage est ignoré.
-Voir [Élagage de session](/fr/concepts/session-pruning) pour les détails du comportement.
+Voir [Élagage de session](/fr/concepts/session-pruning) pour les détails de comportement.
-### Streaming par blocs
+### Réponses en blocs
```json5
{
@@ -1258,10 +1297,10 @@ Voir [Élagage de session](/fr/concepts/session-pruning) pour les détails du co
```
- Les canaux autres que Telegram nécessitent `*.blockStreaming: true` explicite pour activer les réponses par blocs.
-- Surcharges de canal : `channels..blockStreamingCoalesce` (et variantes par compte). Signal/Slack/Discord/Google Chat utilisent par défaut `minChars: 1500`.
-- `humanDelay` : pause aléatoire entre les réponses par blocs. `natural` = 800–2500 ms. Surcharge par agent : `agents.list[].humanDelay`.
+- Remplacements par canal : `channels..blockStreamingCoalesce` (et variantes par compte). Signal/Slack/Discord/Google Chat utilisent par défaut `minChars: 1500`.
+- `humanDelay` : pause aléatoire entre les réponses par blocs. `natural` = 800–2500ms. Remplacement par agent : `agents.list[].humanDelay`.
-Voir [Streaming](/fr/concepts/streaming) pour le comportement et les détails de découpage.
+Voir [Streaming](/fr/concepts/streaming) pour les détails de comportement + découpage.
### Indicateurs de saisie
@@ -1276,8 +1315,8 @@ Voir [Streaming](/fr/concepts/streaming) pour le comportement et les détails de
}
```
-- Valeurs par défaut : `instant` pour les discussions directes/mentions, `message` pour les groupes sans mention.
-- Surcharges par session : `session.typingMode`, `session.typingIntervalSeconds`.
+- Valeurs par défaut : `instant` pour les chats directs/mentions, `message` pour les discussions de groupe sans mention.
+- Remplacements par session : `session.typingMode`, `session.typingIntervalSeconds`.
Voir [Indicateurs de saisie](/fr/concepts/typing-indicators).
@@ -1384,48 +1423,48 @@ Sandboxing facultatif pour l’agent intégré. Voir [Sandboxing](/fr/gateway/sa
**Backend :**
-- `docker` : runtime Docker local (par défaut)
-- `ssh` : runtime distant générique adossé à SSH
-- `openshell` : runtime OpenShell
+- `docker` : environnement Docker local (par défaut)
+- `ssh` : environnement distant générique adossé à SSH
+- `openshell` : environnement OpenShell
-Lorsque `backend: "openshell"` est sélectionné, les paramètres spécifiques au runtime sont déplacés dans
+Lorsque `backend: "openshell"` est sélectionné, les paramètres spécifiques à l’environnement sont déplacés vers
`plugins.entries.openshell.config`.
**Configuration du backend SSH :**
- `target` : cible SSH au format `user@host[:port]`
-- `command` : commande du client SSH (par défaut : `ssh`)
-- `workspaceRoot` : racine distante absolue utilisée pour les espaces de travail par portée
-- `identityFile` / `certificateFile` / `knownHostsFile` : fichiers locaux existants transmis à OpenSSH
-- `identityData` / `certificateData` / `knownHostsData` : contenus inline ou SecretRef qu’OpenClaw matérialise dans des fichiers temporaires à l’exécution
+- `command` : commande client SSH (par défaut : `ssh`)
+- `workspaceRoot` : racine distante absolue utilisée pour les workspaces par portée
+- `identityFile` / `certificateFile` / `knownHostsFile` : fichiers locaux existants passés à OpenSSH
+- `identityData` / `certificateData` / `knownHostsData` : contenus inline ou SecretRef qu’OpenClaw matérialise en fichiers temporaires à l’exécution
- `strictHostKeyChecking` / `updateHostKeys` : paramètres de politique de clé d’hôte OpenSSH
-**Priorité de l’authentification SSH :**
+**Priorité d’authentification SSH :**
-- `identityData` l’emporte sur `identityFile`
-- `certificateData` l’emporte sur `certificateFile`
-- `knownHostsData` l’emporte sur `knownHostsFile`
-- Les valeurs `*Data` basées sur SecretRef sont résolues à partir de l’instantané actif du runtime des secrets avant le démarrage de la session sandbox
+- `identityData` a priorité sur `identityFile`
+- `certificateData` a priorité sur `certificateFile`
+- `knownHostsData` a priorité sur `knownHostsFile`
+- Les valeurs `*Data` adossées à SecretRef sont résolues depuis l’instantané actif du runtime de secrets avant le démarrage de la session sandbox
**Comportement du backend SSH :**
-- amorce l’espace de travail distant une fois après création ou recréation
-- puis conserve l’espace de travail SSH distant comme canonique
-- route `exec`, les outils de fichiers et les chemins média via SSH
+- initialise le workspace distant une fois après création ou recréation
+- conserve ensuite le workspace SSH distant comme canonique
+- achemine `exec`, les outils de fichiers et les chemins média via SSH
- ne synchronise pas automatiquement les modifications distantes vers l’hôte
-- ne prend pas en charge les conteneurs de navigateur sandbox
+- ne prend pas en charge les conteneurs de navigateur en sandbox
-**Accès à l’espace de travail :**
+**Accès au workspace :**
-- `none` : espace de travail sandbox par portée sous `~/.openclaw/sandboxes`
-- `ro` : espace de travail sandbox à `/workspace`, espace de travail agent monté en lecture seule à `/agent`
-- `rw` : espace de travail agent monté en lecture/écriture à `/workspace`
+- `none` : workspace sandbox par portée sous `~/.openclaw/sandboxes`
+- `ro` : workspace sandbox à `/workspace`, workspace agent monté en lecture seule à `/agent`
+- `rw` : workspace agent monté en lecture/écriture à `/workspace`
**Portée :**
-- `session` : conteneur + espace de travail par session
-- `agent` : un conteneur + espace de travail par agent (par défaut)
-- `shared` : conteneur et espace de travail partagés (pas d’isolation inter-sessions)
+- `session` : conteneur + workspace par session
+- `agent` : un conteneur + workspace par agent (par défaut)
+- `shared` : conteneur et workspace partagés (pas d’isolation inter-sessions)
**Configuration du plugin OpenShell :**
@@ -1455,30 +1494,30 @@ Lorsque `backend: "openshell"` est sélectionné, les paramètres spécifiques a
**Mode OpenShell :**
-- `mirror` : amorcer le distant depuis le local avant `exec`, resynchroniser vers le local après `exec` ; l’espace de travail local reste canonique
-- `remote` : amorcer le distant une fois à la création du sandbox, puis conserver l’espace de travail distant comme canonique
+- `mirror` : initialise le distant depuis le local avant exec, resynchronise ensuite après exec ; le workspace local reste canonique
+- `remote` : initialise le distant une fois lors de la création du sandbox, puis conserve le workspace distant comme canonique
-En mode `remote`, les modifications locales sur l’hôte effectuées hors d’OpenClaw ne sont pas automatiquement synchronisées dans le sandbox après l’étape d’amorçage.
-Le transport se fait par SSH vers le sandbox OpenShell, mais le plugin gère le cycle de vie du sandbox et la synchronisation miroir facultative.
+En mode `remote`, les modifications locales faites sur l’hôte en dehors d’OpenClaw ne sont pas automatiquement synchronisées vers le sandbox après l’étape d’initialisation.
+Le transport utilise SSH vers le sandbox OpenShell, mais le plugin gère le cycle de vie du sandbox et la synchronisation miroir facultative.
-**`setupCommand`** s’exécute une fois après la création du conteneur (via `sh -lc`). Nécessite une sortie réseau, une racine en écriture et un utilisateur root.
+**`setupCommand`** s’exécute une fois après la création du conteneur (via `sh -lc`). Nécessite un accès réseau sortant, une racine inscriptible et l’utilisateur root.
**Les conteneurs utilisent par défaut `network: "none"`** — définissez `"bridge"` (ou un réseau bridge personnalisé) si l’agent a besoin d’un accès sortant.
`"host"` est bloqué. `"container:"` est bloqué par défaut sauf si vous définissez explicitement
-`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (mode d’urgence).
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (mode « break-glass »).
-**Les pièces jointes entrantes** sont préparées dans `media/inbound/*` dans l’espace de travail actif.
+**Les pièces jointes entrantes** sont placées dans `media/inbound/*` dans le workspace actif.
**`docker.binds`** monte des répertoires hôtes supplémentaires ; les montages globaux et par agent sont fusionnés.
**Navigateur sandboxé** (`sandbox.browser.enabled`) : Chromium + CDP dans un conteneur. L’URL noVNC est injectée dans le prompt système. Ne nécessite pas `browser.enabled` dans `openclaw.json`.
-L’accès observateur noVNC utilise par défaut l’authentification VNC et OpenClaw émet une URL à jeton de courte durée (au lieu d’exposer le mot de passe dans l’URL partagée).
+L’accès observateur noVNC utilise l’authentification VNC par défaut et OpenClaw émet une URL à jeton de courte durée (au lieu d’exposer le mot de passe dans l’URL partagée).
- `allowHostControl: false` (par défaut) empêche les sessions sandboxées de cibler le navigateur de l’hôte.
- `network` vaut par défaut `openclaw-sandbox-browser` (réseau bridge dédié). Définissez `bridge` uniquement si vous voulez explicitement une connectivité bridge globale.
-- `cdpSourceRange` permet de restreindre facultativement l’entrée CDP au bord du conteneur à une plage CIDR (par exemple `172.21.0.1/32`).
-- `sandbox.browser.binds` monte des répertoires hôtes supplémentaires dans le conteneur de navigateur sandbox uniquement. Lorsqu’il est défini (y compris `[]`), il remplace `docker.binds` pour le conteneur navigateur.
-- Les valeurs par défaut de lancement sont définies dans `scripts/sandbox-browser-entrypoint.sh` et réglées pour les hôtes conteneurisés :
+- `cdpSourceRange` peut restreindre facultativement l’entrée CDP en bord de conteneur à une plage CIDR (par exemple `172.21.0.1/32`).
+- `sandbox.browser.binds` monte des répertoires hôtes supplémentaires uniquement dans le conteneur du navigateur sandboxé. Lorsqu’il est défini (y compris `[]`), il remplace `docker.binds` pour le conteneur du navigateur.
+- Les valeurs par défaut de lancement sont définies dans `scripts/sandbox-browser-entrypoint.sh` et optimisées pour les hôtes conteneurisés :
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1498,14 +1537,14 @@ L’accès observateur noVNC utilise par défaut l’authentification VNC et Ope
- `--disable-extensions` (activé par défaut)
- `--disable-3d-apis`, `--disable-software-rasterizer` et `--disable-gpu` sont
activés par défaut et peuvent être désactivés avec
- `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` si votre usage WebGL/3D l’exige.
+ `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` si l’utilisation de WebGL/3D l’exige.
- `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` réactive les extensions si votre flux de travail
en dépend.
- `--renderer-process-limit=2` peut être modifié avec
`OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=` ; définissez `0` pour utiliser la
limite de processus par défaut de Chromium.
- plus `--no-sandbox` et `--disable-setuid-sandbox` lorsque `noSandbox` est activé.
- - Ces valeurs par défaut constituent la référence de l’image conteneur ; utilisez une image navigateur personnalisée avec un point d’entrée personnalisé pour les modifier.
+ - Les valeurs par défaut constituent la base de l’image conteneur ; utilisez une image navigateur personnalisée avec un point d’entrée personnalisé pour modifier les valeurs par défaut du conteneur.
@@ -1518,7 +1557,7 @@ scripts/sandbox-setup.sh # main sandbox image
scripts/sandbox-browser-setup.sh # optional browser image
```
-### `agents.list` (surcharges par agent)
+### `agents.list` (remplacements par agent)
```json5
{
@@ -1567,25 +1606,25 @@ scripts/sandbox-browser-setup.sh # optional browser image
```
- `id` : identifiant d’agent stable (obligatoire).
-- `default` : lorsque plusieurs sont définis, le premier l’emporte (un avertissement est enregistré). Si aucun n’est défini, la première entrée de liste est l’agent par défaut.
-- `model` : la forme chaîne remplace uniquement `primary` ; la forme objet `{ primary, fallbacks }` remplace les deux (`[]` désactive les fallbacks globaux). Les tâches cron qui ne remplacent que `primary` héritent toujours des fallbacks par défaut sauf si vous définissez `fallbacks: []`.
-- `params` : paramètres de flux par agent fusionnés au-dessus de l’entrée de modèle sélectionnée dans `agents.defaults.models`. Utilisez-les pour des surcharges spécifiques à un agent comme `cacheRetention`, `temperature` ou `maxTokens` sans dupliquer tout le catalogue de modèles.
-- `skills` : liste d’autorisations facultative des Skills par agent. Si omise, l’agent hérite de `agents.defaults.skills` lorsqu’elle est définie ; une liste explicite remplace les valeurs par défaut au lieu de fusionner, et `[]` signifie aucune Skills.
-- `thinkingDefault` : niveau de thinking par défaut facultatif par agent (`off | minimal | low | medium | high | xhigh | adaptive`). Remplace `agents.defaults.thinkingDefault` pour cet agent lorsqu’aucune surcharge par message ou session n’est définie.
-- `reasoningDefault` : visibilité du raisonnement par défaut facultative par agent (`on | off | stream`). S’applique lorsqu’aucune surcharge de raisonnement par message ou session n’est définie.
-- `fastModeDefault` : valeur par défaut facultative du mode rapide par agent (`true | false`). S’applique lorsqu’aucune surcharge de mode rapide par message ou session n’est définie.
-- `runtime` : descripteur facultatif de runtime par agent. Utilisez `type: "acp"` avec les valeurs par défaut `runtime.acp` (`agent`, `backend`, `mode`, `cwd`) lorsque l’agent doit utiliser par défaut des sessions de harnais ACP.
-- `identity.avatar` : chemin relatif à l’espace de travail, URL `http(s)` ou URI `data:`.
-- `identity` dérive des valeurs par défaut : `ackReaction` depuis `emoji`, `mentionPatterns` depuis `name`/`emoji`.
-- `subagents.allowAgents` : liste d’autorisations des identifiants d’agent pour `sessions_spawn` (`["*"]` = n’importe lequel ; par défaut : même agent uniquement).
-- Garde-fou d’héritage sandbox : si la session demandeuse est sandboxée, `sessions_spawn` rejette les cibles qui s’exécuteraient sans sandbox.
-- `subagents.requireAgentId` : lorsque true, bloque les appels `sessions_spawn` qui omettent `agentId` (force une sélection de profil explicite ; par défaut : false).
+- `default` : lorsque plusieurs agents sont définis, le premier gagne (avertissement consigné). Si aucun n’est défini, la première entrée de la liste est l’agent par défaut.
+- `model` : la forme chaîne remplace seulement `primary` ; la forme objet `{ primary, fallbacks }` remplace les deux (`[]` désactive les secours globaux). Les tâches cron qui ne remplacent que `primary` héritent toujours des secours par défaut sauf si vous définissez `fallbacks: []`.
+- `params` : paramètres de flux par agent fusionnés au-dessus de l’entrée de modèle sélectionnée dans `agents.defaults.models`. Utilisez-les pour des remplacements spécifiques à l’agent comme `cacheRetention`, `temperature` ou `maxTokens` sans dupliquer tout le catalogue de modèles.
+- `skills` : liste d’autorisation facultative de Skills par agent. Si elle est omise, l’agent hérite de `agents.defaults.skills` si défini ; une liste explicite remplace les valeurs par défaut au lieu de fusionner, et `[]` signifie aucune Skills.
+- `thinkingDefault` : niveau de thinking par défaut facultatif pour l’agent (`off | minimal | low | medium | high | xhigh | adaptive`). Remplace `agents.defaults.thinkingDefault` pour cet agent lorsqu’aucun remplacement par message ou session n’est défini.
+- `reasoningDefault` : visibilité par défaut facultative du reasoning (`on | off | stream`). S’applique lorsqu’aucun remplacement du reasoning par message ou session n’est défini.
+- `fastModeDefault` : valeur par défaut facultative pour le mode rapide (`true | false`). S’applique lorsqu’aucun remplacement du mode rapide par message ou session n’est défini.
+- `runtime` : descripteur facultatif du runtime par agent. Utilisez `type: "acp"` avec les valeurs par défaut `runtime.acp` (`agent`, `backend`, `mode`, `cwd`) lorsque l’agent doit utiliser par défaut des sessions de harnais ACP.
+- `identity.avatar` : chemin relatif au workspace, URL `http(s)` ou URI `data:`.
+- `identity` déduit des valeurs par défaut : `ackReaction` depuis `emoji`, `mentionPatterns` depuis `name`/`emoji`.
+- `subagents.allowAgents` : liste d’autorisation d’identifiants d’agent pour `sessions_spawn` (`["*"]` = n’importe lequel ; par défaut : même agent uniquement).
+- Garde d’héritage sandbox : si la session demandeuse est sandboxée, `sessions_spawn` rejette les cibles qui s’exécuteraient sans sandbox.
+- `subagents.requireAgentId` : lorsque vrai, bloque les appels `sessions_spawn` qui omettent `agentId` (force une sélection explicite de profil ; valeur par défaut : false).
---
## Routage multi-agent
-Exécutez plusieurs agents isolés dans une seule passerelle. Voir [Multi-Agent](/fr/concepts/multi-agent).
+Exécutez plusieurs agents isolés dans une même passerelle. Voir [Multi-Agent](/fr/concepts/multi-agent).
```json5
{
@@ -1604,25 +1643,25 @@ Exécutez plusieurs agents isolés dans une seule passerelle. Voir [Multi-Agent]
### Champs de correspondance des liaisons
-- `type` (facultatif) : `route` pour le routage normal (type manquant = route), `acp` pour les liaisons de conversation ACP persistantes.
+- `type` (facultatif) : `route` pour le routage normal (l’absence de type vaut route), `acp` pour les liaisons de conversation ACP persistantes.
- `match.channel` (obligatoire)
- `match.accountId` (facultatif ; `*` = n’importe quel compte ; omis = compte par défaut)
- `match.peer` (facultatif ; `{ kind: direct|group|channel, id }`)
- `match.guildId` / `match.teamId` (facultatif ; spécifique au canal)
-- `acp` (facultatif ; uniquement pour `type: "acp"`) : `{ mode, label, cwd, backend }`
+- `acp` (facultatif ; uniquement pour les entrées `type: "acp"`) : `{ mode, label, cwd, backend }`
**Ordre de correspondance déterministe :**
1. `match.peer`
2. `match.guildId`
3. `match.teamId`
-4. `match.accountId` (exact, sans pair/serveur/équipe)
+4. `match.accountId` (exact, sans pair/guild/team)
5. `match.accountId: "*"` (à l’échelle du canal)
6. Agent par défaut
-Dans chaque niveau, la première entrée `bindings` correspondante l’emporte.
+À l’intérieur de chaque niveau, la première entrée `bindings` correspondante l’emporte.
-Pour les entrées `type: "acp"`, OpenClaw résout selon l’identité exacte de la conversation (`match.channel` + compte + `match.peer.id`) et n’utilise pas l’ordre des niveaux de liaison de route ci-dessus.
+Pour les entrées `type: "acp"`, OpenClaw résout par identité de conversation exacte (`match.channel` + compte + `match.peer.id`) et n’utilise pas l’ordre des niveaux de liaison de route ci-dessus.
### Profils d’accès par agent
@@ -1644,7 +1683,7 @@ Pour les entrées `type: "acp"`, OpenClaw résout selon l’identité exacte de
-
+
```json5
{
@@ -1773,34 +1812,34 @@ Voir [Sandbox et outils multi-agent](/fr/tools/multi-agent-sandbox-tools) pour l
- **`scope`** : stratégie de regroupement de session de base pour les contextes de discussion de groupe.
- - `per-sender` (par défaut) : chaque expéditeur reçoit une session isolée dans un contexte de canal.
- - `global` : tous les participants dans un contexte de canal partagent une seule session (à utiliser uniquement lorsque le contexte partagé est souhaité).
-- **`dmScope`** : manière dont les MP sont regroupés.
- - `main` : tous les MP partagent la session principale.
- - `per-peer` : isolation par identifiant d’expéditeur entre les canaux.
- - `per-channel-peer` : isolation par canal + expéditeur (recommandé pour les boîtes de réception multi-utilisateurs).
- - `per-account-channel-peer` : isolation par compte + canal + expéditeur (recommandé pour le multi-compte).
-- **`identityLinks`** : mappe des identifiants canoniques vers des pairs préfixés par fournisseur pour partager les sessions entre canaux.
-- **`reset`** : politique de réinitialisation principale. `daily` réinitialise à `atHour` heure locale ; `idle` réinitialise après `idleMinutes`. Lorsque les deux sont configurés, celui qui expire en premier l’emporte.
-- **`resetByType`** : surcharges par type (`direct`, `group`, `thread`). L’ancien `dm` est accepté comme alias de `direct`.
-- **`parentForkMaxTokens`** : nombre maximal de `totalTokens` de session parente autorisé lors de la création d’une session de fil forkée (par défaut `100000`).
- - Si `totalTokens` du parent dépasse cette valeur, OpenClaw démarre une nouvelle session de fil au lieu d’hériter de l’historique de transcription parent.
- - Définissez `0` pour désactiver cette garde et toujours autoriser le fork du parent.
-- **`mainKey`** : champ hérité. Le runtime utilise désormais toujours `"main"` pour le bucket principal de discussion directe.
-- **`agentToAgent.maxPingPongTurns`** : nombre maximal de tours de réponse en aller-retour entre agents lors des échanges agent à agent (entier, plage : `0`–`5`). `0` désactive la chaîne ping-pong.
-- **`sendPolicy`** : correspondance par `channel`, `chatType` (`direct|group|channel`, avec alias hérité `dm`), `keyPrefix` ou `rawKeyPrefix`. Le premier refus l’emporte.
-- **`maintenance`** : contrôles de nettoyage + rétention du magasin de sessions.
- - `mode` : `warn` émet uniquement des avertissements ; `enforce` applique le nettoyage.
+ - `per-sender` (par défaut) : chaque expéditeur obtient une session isolée dans un contexte de canal.
+ - `global` : tous les participants dans un contexte de canal partagent une même session (à utiliser seulement lorsqu’un contexte partagé est voulu).
+- **`dmScope`** : comment les DM sont regroupés.
+ - `main` : tous les DM partagent la session principale.
+ - `per-peer` : isole par identifiant d’expéditeur à travers les canaux.
+ - `per-channel-peer` : isole par canal + expéditeur (recommandé pour les boîtes de réception multi-utilisateurs).
+ - `per-account-channel-peer` : isole par compte + canal + expéditeur (recommandé pour le multi-compte).
+- **`identityLinks`** : mappe les identifiants canoniques à des pairs préfixés par fournisseur pour le partage inter-canaux de session.
+- **`reset`** : politique principale de réinitialisation. `daily` réinitialise à `atHour` heure locale ; `idle` réinitialise après `idleMinutes`. Lorsque les deux sont configurés, la première expiration l’emporte.
+- **`resetByType`** : remplacements par type (`direct`, `group`, `thread`). L’ancien alias `dm` est accepté comme alias de `direct`.
+- **`parentForkMaxTokens`** : nombre maximal de `totalTokens` de session parente autorisé lors de la création d’une session de fil dérivée (par défaut `100000`).
+ - Si `totalTokens` du parent est supérieur à cette valeur, OpenClaw démarre une session de fil fraîche au lieu d’hériter de l’historique de transcription du parent.
+ - Définissez `0` pour désactiver cette garde et toujours autoriser la dérivation depuis le parent.
+- **`mainKey`** : champ hérité. Le runtime utilise désormais toujours `"main"` pour le compartiment principal des discussions directes.
+- **`agentToAgent.maxPingPongTurns`** : nombre maximal de tours de réponse en va-et-vient entre agents lors d’échanges agent-à-agent (entier, plage : `0`–`5`). `0` désactive les enchaînements ping-pong.
+- **`sendPolicy`** : correspondance par `channel`, `chatType` (`direct|group|channel`, avec l’ancien alias `dm`), `keyPrefix` ou `rawKeyPrefix`. Le premier refus l’emporte.
+- **`maintenance`** : contrôles de nettoyage + rétention du stockage des sessions.
+ - `mode` : `warn` émet seulement des avertissements ; `enforce` applique le nettoyage.
- `pruneAfter` : seuil d’âge pour les entrées obsolètes (par défaut `30d`).
- `maxEntries` : nombre maximal d’entrées dans `sessions.json` (par défaut `500`).
- - `rotateBytes` : fait pivoter `sessions.json` lorsqu’il dépasse cette taille (par défaut `10mb`).
- - `resetArchiveRetention` : durée de rétention des archives de transcription `*.reset.`. Par défaut = `pruneAfter` ; définissez `false` pour désactiver.
- - `maxDiskBytes` : budget disque facultatif pour le répertoire des sessions. En mode `warn`, journalise des avertissements ; en mode `enforce`, supprime d’abord les artefacts/sessions les plus anciens.
- - `highWaterBytes` : cible facultative après nettoyage budgétaire. Par défaut = `80%` de `maxDiskBytes`.
+ - `rotateBytes` : fait tourner `sessions.json` lorsqu’il dépasse cette taille (par défaut `10mb`).
+ - `resetArchiveRetention` : durée de rétention des archives de transcription `*.reset.`. Par défaut à `pruneAfter` ; définissez `false` pour désactiver.
+ - `maxDiskBytes` : budget disque facultatif pour le répertoire des sessions. En mode `warn`, il consigne des avertissements ; en mode `enforce`, il supprime d’abord les artefacts/sessions les plus anciens.
+ - `highWaterBytes` : cible facultative après nettoyage du budget. Par défaut à `80%` de `maxDiskBytes`.
- **`threadBindings`** : valeurs globales par défaut pour les fonctionnalités de session liées aux fils.
- - `enabled` : commutateur principal par défaut (les fournisseurs peuvent le remplacer ; Discord utilise `channels.discord.threadBindings.enabled`)
- - `idleHours` : durée par défaut d’auto-unfocus après inactivité en heures (`0` désactive ; les fournisseurs peuvent la remplacer)
- - `maxAgeHours` : âge maximal strict par défaut en heures (`0` désactive ; les fournisseurs peuvent le remplacer)
+ - `enabled` : commutateur maître par défaut (les fournisseurs peuvent remplacer ; Discord utilise `channels.discord.threadBindings.enabled`)
+ - `idleHours` : valeur par défaut de désancrage automatique sur inactivité en heures (`0` désactive ; les fournisseurs peuvent remplacer)
+ - `maxAgeHours` : valeur par défaut d’âge maximal strict en heures (`0` désactive ; les fournisseurs peuvent remplacer)
@@ -1838,7 +1877,7 @@ Voir [Sandbox et outils multi-agent](/fr/tools/multi-agent-sandbox-tools) pour l
### Préfixe de réponse
-Surcharges par canal/compte : `channels..responsePrefix`, `channels..accounts..responsePrefix`.
+Remplacements par canal/compte : `channels..responsePrefix`, `channels..accounts..responsePrefix`.
Résolution (le plus spécifique l’emporte) : compte → canal → global. `""` désactive et arrête la cascade. `"auto"` dérive `[{identity.name}]`.
@@ -1850,24 +1889,24 @@ Résolution (le plus spécifique l’emporte) : compte → canal → global. `""
| `{modelFull}` | Identifiant complet du modèle | `anthropic/claude-opus-4-6` |
| `{provider}` | Nom du fournisseur | `anthropic` |
| `{thinkingLevel}` | Niveau de thinking actuel | `high`, `low`, `off` |
-| `{identity.name}` | Nom d’identité de l’agent | (identique à `"auto"`) |
+| `{identity.name}` | Nom de l’identité de l’agent | (identique à `"auto"`) |
Les variables sont insensibles à la casse. `{think}` est un alias de `{thinkingLevel}`.
-### Réaction d’accusé
+### Réaction d’accusé de réception
- Utilise par défaut `identity.emoji` de l’agent actif, sinon `"👀"`. Définissez `""` pour désactiver.
-- Surcharges par canal : `channels..ackReaction`, `channels..accounts..ackReaction`.
-- Ordre de résolution : compte → canal → `messages.ackReaction` → repli identité.
+- Remplacements par canal : `channels..ackReaction`, `channels..accounts..ackReaction`.
+- Ordre de résolution : compte → canal → `messages.ackReaction` → repli d’identité.
- Portée : `group-mentions` (par défaut), `group-all`, `direct`, `all`.
-- `removeAckAfterReply` supprime l’accusé après la réponse sur Slack, Discord et Telegram.
-- `messages.statusReactions.enabled` active les réactions d’état du cycle de vie sur Slack, Discord et Telegram.
- Sur Slack et Discord, une valeur non définie garde les réactions d’état activées lorsque les réactions d’accusé sont actives.
- Sur Telegram, définissez-le explicitement sur `true` pour activer les réactions d’état du cycle de vie.
+- `removeAckAfterReply` supprime l’accusé après réponse sur Slack, Discord et Telegram.
+- `messages.statusReactions.enabled` active les réactions de statut de cycle de vie sur Slack, Discord et Telegram.
+ Sur Slack et Discord, si absent, les réactions de statut restent activées lorsque les réactions d’accusé sont actives.
+ Sur Telegram, définissez-le explicitement à `true` pour activer les réactions de statut de cycle de vie.
### Debounce entrant
-Regroupe les messages texte rapides du même expéditeur en un seul tour d’agent. Les médias/pièces jointes déclenchent un flush immédiat. Les commandes de contrôle contournent le debounce.
+Regroupe les messages textuels rapides provenant du même expéditeur en un seul tour d’agent. Les médias/pièces jointes provoquent un flush immédiat. Les commandes de contrôle contournent le debounce.
### TTS (synthèse vocale)
@@ -1910,18 +1949,18 @@ Regroupe les messages texte rapides du même expéditeur en un seul tour d’age
}
```
-- `auto` contrôle l’auto-TTS. `/tts off|always|inbound|tagged` remplace cela par session.
+- `auto` contrôle le mode auto-TTS par défaut : `off`, `always`, `inbound` ou `tagged`. `/tts on|off` peut remplacer les préférences locales, et `/tts status` affiche l’état effectif.
- `summaryModel` remplace `agents.defaults.model.primary` pour le résumé automatique.
-- `modelOverrides` est activé par défaut ; `modelOverrides.allowProvider` vaut `false` par défaut (activation explicite).
-- Les clés API reviennent à `ELEVENLABS_API_KEY`/`XI_API_KEY` et `OPENAI_API_KEY`.
-- `openai.baseUrl` remplace le point de terminaison TTS OpenAI. L’ordre de résolution est la configuration, puis `OPENAI_TTS_BASE_URL`, puis `https://api.openai.com/v1`.
+- `modelOverrides` est activé par défaut ; `modelOverrides.allowProvider` vaut par défaut `false` (activation explicite requise).
+- Les clés API utilisent `ELEVENLABS_API_KEY`/`XI_API_KEY` et `OPENAI_API_KEY` comme repli.
+- `openai.baseUrl` remplace le point de terminaison OpenAI TTS. L’ordre de résolution est : configuration, puis `OPENAI_TTS_BASE_URL`, puis `https://api.openai.com/v1`.
- Lorsque `openai.baseUrl` pointe vers un point de terminaison non OpenAI, OpenClaw le traite comme un serveur TTS compatible OpenAI et assouplit la validation du modèle/de la voix.
---
## Talk
-Valeurs par défaut pour le mode Talk (macOS/iOS/Android).
+Valeurs par défaut du mode Talk (macOS/iOS/Android).
```json5
{
@@ -1945,13 +1984,13 @@ Valeurs par défaut pour le mode Talk (macOS/iOS/Android).
}
```
-- `talk.provider` doit correspondre à une clé de `talk.providers` lorsque plusieurs fournisseurs Talk sont configurés.
-- Les anciennes clés Talk plates (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) sont uniquement maintenues pour compatibilité et sont automatiquement migrées vers `talk.providers.`.
-- Les identifiants vocaux reviennent à `ELEVENLABS_VOICE_ID` ou `SAG_VOICE_ID`.
+- `talk.provider` doit correspondre à une clé dans `talk.providers` lorsque plusieurs fournisseurs Talk sont configurés.
+- Les anciennes clés Talk plates (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) ne sont conservées que pour compatibilité et sont automatiquement migrées vers `talk.providers.`.
+- Les identifiants de voix utilisent `ELEVENLABS_VOICE_ID` ou `SAG_VOICE_ID` comme repli.
- `providers.*.apiKey` accepte des chaînes en clair ou des objets SecretRef.
- Le repli `ELEVENLABS_API_KEY` ne s’applique que lorsqu’aucune clé API Talk n’est configurée.
- `providers.*.voiceAliases` permet aux directives Talk d’utiliser des noms conviviaux.
-- `silenceTimeoutMs` contrôle combien de temps le mode Talk attend après le silence de l’utilisateur avant d’envoyer la transcription. Si non défini, conserve la fenêtre de pause par défaut de la plateforme (`700 ms sur macOS et Android, 900 ms sur iOS`).
+- `silenceTimeoutMs` contrôle la durée d’attente du mode Talk après le silence utilisateur avant l’envoi de la transcription. Si absent, conserve la fenêtre de pause par défaut de la plateforme (`700 ms sur macOS et Android, 900 ms sur iOS`).
---
@@ -1959,21 +1998,21 @@ Valeurs par défaut pour le mode Talk (macOS/iOS/Android).
### Profils d’outils
-`tools.profile` définit une liste d’autorisations de base avant `tools.allow`/`tools.deny` :
+`tools.profile` définit une liste d’autorisation de base avant `tools.allow`/`tools.deny` :
-L’onboarding local définit par défaut les nouvelles configurations locales sur `tools.profile: "coding"` lorsqu’il n’est pas défini (les profils explicites existants sont conservés).
+L’onboarding local définit par défaut `tools.profile: "coding"` pour les nouvelles configurations locales lorsqu’il est absent (les profils explicites existants sont conservés).
| Profil | Inclut |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `minimal` | `session_status` uniquement |
| `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` |
| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
-| `full` | Aucune restriction (identique à non défini) |
+| `full` | Aucune restriction (identique à absent) |
### Groupes d’outils
-| Groupe | Outils |
-| ------------------ | ------------------------------------------------------------------------------------------------------------------------ |
+| Groupe | Outils |
+| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `group:runtime` | `exec`, `process`, `code_execution` (`bash` est accepté comme alias de `exec`) |
| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` |
@@ -1985,11 +2024,11 @@ L’onboarding local définit par défaut les nouvelles configurations locales s
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Tous les outils intégrés (hors plugins fournisseur) |
+| `group:openclaw` | Tous les outils intégrés (hors plugins de fournisseur) |
### `tools.allow` / `tools.deny`
-Politique globale d’autorisation/refus des outils (le refus l’emporte). Insensible à la casse, prend en charge les jokers `*`. Appliquée même lorsque le sandbox Docker est désactivé.
+Politique globale d’autorisation/refus des outils (le refus l’emporte). Insensible à la casse, prend en charge les jokers `*`. S’applique même lorsque le sandbox Docker est désactivé.
```json5
{
@@ -1999,7 +2038,7 @@ Politique globale d’autorisation/refus des outils (le refus l’emporte). Inse
### `tools.byProvider`
-Restreint davantage les outils pour des fournisseurs ou modèles spécifiques. Ordre : profil de base → profil fournisseur → allow/deny.
+Restreint davantage les outils pour des fournisseurs ou modèles spécifiques. Ordre : profil de base → profil fournisseur → autorisation/refus.
```json5
{
@@ -2031,9 +2070,9 @@ Contrôle l’accès exec élevé en dehors du sandbox :
}
```
-- La surcharge par agent (`agents.list[].tools.elevated`) ne peut qu’ajouter des restrictions.
+- Le remplacement par agent (`agents.list[].tools.elevated`) ne peut que restreindre davantage.
- `/elevated on|off|ask|full` stocke l’état par session ; les directives inline s’appliquent à un seul message.
-- `exec` élevé contourne le sandboxing et utilise le chemin d’échappement configuré (`gateway` par défaut, ou `node` lorsque la cible d’exécution est `node`).
+- `exec` élevé contourne le sandboxing et utilise le chemin d’échappement configuré (`gateway` par défaut, ou `node` lorsque la cible exec est `node`).
### `tools.exec`
@@ -2057,7 +2096,7 @@ Contrôle l’accès exec élevé en dehors du sandbox :
### `tools.loopDetection`
-Les vérifications de sécurité de boucle d’outil sont **désactivées par défaut**. Définissez `enabled: true` pour activer la détection.
+Les vérifications de sécurité contre les boucles d’outils sont **désactivées par défaut**. Définissez `enabled: true` pour activer la détection.
Les paramètres peuvent être définis globalement dans `tools.loopDetection` et remplacés par agent dans `agents.list[].tools.loopDetection`.
```json5
@@ -2079,13 +2118,13 @@ Les paramètres peuvent être définis globalement dans `tools.loopDetection` et
}
```
-- `historySize` : historique maximal des appels d’outils conservé pour l’analyse de boucle.
-- `warningThreshold` : seuil d’avertissement pour les motifs répétés sans progression.
-- `criticalThreshold` : seuil plus élevé pour bloquer les boucles critiques.
+- `historySize` : historique maximal d’appels d’outils conservé pour l’analyse des boucles.
+- `warningThreshold` : seuil de motif répétitif sans progression pour les avertissements.
+- `criticalThreshold` : seuil répétitif plus élevé pour bloquer les boucles critiques.
- `globalCircuitBreakerThreshold` : seuil d’arrêt strict pour toute exécution sans progression.
-- `detectors.genericRepeat` : avertit sur les appels répétés au même outil/avec les mêmes arguments.
+- `detectors.genericRepeat` : avertit en cas d’appels répétés au même outil/aux mêmes arguments.
- `detectors.knownPollNoProgress` : avertit/bloque les outils de polling connus (`process.poll`, `command_status`, etc.).
-- `detectors.pingPong` : avertit/bloque les motifs alternés sans progression.
+- `detectors.pingPong` : avertit/bloque les motifs alternés en paire sans progression.
- Si `warningThreshold >= criticalThreshold` ou `criticalThreshold >= globalCircuitBreakerThreshold`, la validation échoue.
### `tools.web`
@@ -2120,7 +2159,7 @@ Les paramètres peuvent être définis globalement dans `tools.loopDetection` et
### `tools.media`
-Configure la compréhension des médias entrants (image/audio/vidéo) :
+Configure l’analyse des médias entrants (image/audio/vidéo) :
```json5
{
@@ -2157,27 +2196,27 @@ Configure la compréhension des médias entrants (image/audio/vidéo) :
**Entrée fournisseur** (`type: "provider"` ou omis) :
- `provider` : identifiant du fournisseur d’API (`openai`, `anthropic`, `google`/`gemini`, `groq`, etc.)
-- `model` : surcharge de l’identifiant de modèle
-- `profile` / `preferredProfile` : sélection du profil `auth-profiles.json`
+- `model` : remplacement d’identifiant de modèle
+- `profile` / `preferredProfile` : sélection de profil `auth-profiles.json`
**Entrée CLI** (`type: "cli"`) :
- `command` : exécutable à lancer
-- `args` : arguments templatisés (prend en charge `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}`, etc.)
+- `args` : arguments à modèle (prend en charge `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}`, etc.)
**Champs communs :**
-- `capabilities` : liste facultative (`image`, `audio`, `video`). Par défaut : `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
-- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language` : surcharges par entrée.
-- Les échecs reviennent à l’entrée suivante.
+- `capabilities` : liste facultative (`image`, `audio`, `video`). Valeurs par défaut : `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
+- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language` : remplacements par entrée.
+- Les échecs passent à l’entrée suivante.
-L’authentification fournisseur suit l’ordre standard : `auth-profiles.json` → variables d’environnement → `models.providers.*.apiKey`.
+L’authentification du fournisseur suit l’ordre standard : `auth-profiles.json` → variables d’environnement → `models.providers.*.apiKey`.
**Champs de fin asynchrone :**
- `asyncCompletion.directSend` : lorsque `true`, les tâches `music_generate`
- et `video_generate` asynchrones terminées tentent d’abord une livraison directe au canal. Par défaut : `false`
- (ancien chemin de réveil de session demandeuse/livraison modèle).
+ et `video_generate` asynchrones terminées tentent d’abord une livraison directe au canal. Valeur par défaut : `false`
+ (ancien chemin de réveil de session demandeuse/livraison par modèle).
@@ -2198,7 +2237,7 @@ L’authentification fournisseur suit l’ordre standard : `auth-profiles.json`
Contrôle quelles sessions peuvent être ciblées par les outils de session (`sessions_list`, `sessions_history`, `sessions_send`).
-Par défaut : `tree` (session actuelle + sessions qu’elle a lancées, comme les sous-agents).
+Par défaut : `tree` (session actuelle + sessions qu’elle a engendrées, comme les sous-agents).
```json5
{
@@ -2214,10 +2253,10 @@ Par défaut : `tree` (session actuelle + sessions qu’elle a lancées, comme le
Remarques :
- `self` : uniquement la clé de session actuelle.
-- `tree` : session actuelle + sessions lancées par la session actuelle (sous-agents).
-- `agent` : toute session appartenant à l’identifiant d’agent actuel (peut inclure d’autres utilisateurs si vous exécutez des sessions per-sender sous le même identifiant d’agent).
-- `all` : toute session. Le ciblage inter-agents nécessite toujours `tools.agentToAgent`.
-- Restriction sandbox : lorsque la session actuelle est sandboxée et que `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, la visibilité est forcée à `tree` même si `tools.sessions.visibility="all"`.
+- `tree` : session actuelle + sessions engendrées par la session actuelle (sous-agents).
+- `agent` : toute session appartenant à l’identifiant d’agent actuel (peut inclure d’autres utilisateurs si vous exécutez des sessions par expéditeur sous le même identifiant d’agent).
+- `all` : n’importe quelle session. Le ciblage inter-agents nécessite toujours `tools.agentToAgent`.
+- Limitation par sandbox : lorsque la session actuelle est sandboxée et que `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, la visibilité est forcée à `tree` même si `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
@@ -2242,15 +2281,15 @@ Contrôle la prise en charge des pièces jointes inline pour `sessions_spawn`.
Remarques :
- Les pièces jointes ne sont prises en charge que pour `runtime: "subagent"`. Le runtime ACP les rejette.
-- Les fichiers sont matérialisés dans l’espace de travail enfant sous `.openclaw/attachments//` avec un `.manifest.json`.
-- Le contenu des pièces jointes est automatiquement masqué de la persistance des transcriptions.
-- Les entrées Base64 sont validées avec des vérifications strictes d’alphabet/padding et une garde de taille avant décodage.
-- Les permissions de fichiers sont `0700` pour les répertoires et `0600` pour les fichiers.
+- Les fichiers sont matérialisés dans le workspace enfant à `.openclaw/attachments//` avec un `.manifest.json`.
+- Le contenu des pièces jointes est automatiquement masqué de la persistance de transcription.
+- Les entrées base64 sont validées avec des contrôles stricts d’alphabet/remplissage et une garde de taille avant décodage.
+- Les permissions des fichiers sont `0700` pour les répertoires et `0600` pour les fichiers.
- Le nettoyage suit la politique `cleanup` : `delete` supprime toujours les pièces jointes ; `keep` ne les conserve que lorsque `retainOnSessionKeep: true`.
### `tools.experimental`
-Flags d’outils intégrés expérimentaux. Désactivés par défaut sauf si une règle d’auto-activation spécifique au runtime s’applique.
+Indicateurs d’outils intégrés expérimentaux. Désactivés par défaut sauf lorsqu’une règle d’activation automatique spécifique au runtime s’applique.
```json5
{
@@ -2264,9 +2303,9 @@ Flags d’outils intégrés expérimentaux. Désactivés par défaut sauf si une
Remarques :
-- `planTool` : active l’outil structuré expérimental `update_plan` pour le suivi de travaux substantiels à plusieurs étapes.
-- Par défaut : `false` pour les fournisseurs non OpenAI. Les exécutions OpenAI et OpenAI Codex l’activent automatiquement.
-- Lorsqu’il est activé, le prompt système ajoute également des consignes d’utilisation afin que le modèle ne l’utilise que pour des travaux importants et ne conserve au plus qu’une étape `in_progress`.
+- `planTool` : active l’outil structuré `update_plan` pour le suivi du travail non trivial en plusieurs étapes.
+- Valeur par défaut : `false` pour les fournisseurs non OpenAI. Les exécutions OpenAI et OpenAI Codex l’activent automatiquement lorsqu’il est absent ; définissez `false` pour désactiver cette activation automatique.
+- Lorsqu’il est activé, le prompt système ajoute aussi des consignes d’usage afin que le modèle ne l’utilise que pour un travail substantiel et conserve au plus une étape `in_progress`.
### `agents.defaults.subagents`
@@ -2286,16 +2325,16 @@ Remarques :
}
```
-- `model` : modèle par défaut pour les sous-agents lancés. Si omis, les sous-agents héritent du modèle de l’appelant.
-- `allowAgents` : liste d’autorisations par défaut des identifiants d’agent cibles pour `sessions_spawn` lorsque l’agent demandeur ne définit pas sa propre `subagents.allowAgents` (`["*"]` = n’importe lequel ; par défaut : même agent uniquement).
-- `runTimeoutSeconds` : délai maximal par défaut (secondes) pour `sessions_spawn` lorsque l’appel d’outil omet `runTimeoutSeconds`. `0` signifie aucun délai.
-- Politique d’outils par sous-agent : `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
+- `model` : modèle par défaut pour les sous-agents lancés. S’il est omis, les sous-agents héritent du modèle de l’appelant.
+- `allowAgents` : liste d’autorisation par défaut des identifiants d’agent cibles pour `sessions_spawn` lorsque l’agent demandeur ne définit pas son propre `subagents.allowAgents` (`["*"]` = n’importe lequel ; par défaut : même agent uniquement).
+- `runTimeoutSeconds` : délai maximal par défaut (en secondes) pour `sessions_spawn` lorsque l’appel à l’outil omet `runTimeoutSeconds`. `0` signifie aucun délai.
+- Politique d’outil par sous-agent : `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
-## Fournisseurs personnalisés et URLs de base
+## Fournisseurs personnalisés et URL de base
-OpenClaw utilise le catalogue de modèles intégré. Ajoutez des fournisseurs personnalisés via `models.providers` dans la configuration ou `~/.openclaw/agents//agent/models.json`.
+OpenClaw utilise le catalogue intégré de modèles. Ajoutez des fournisseurs personnalisés via `models.providers` dans la configuration ou `~/.openclaw/agents//agent/models.json`.
```json5
{
@@ -2324,47 +2363,47 @@ OpenClaw utilise le catalogue de modèles intégré. Ajoutez des fournisseurs pe
}
```
-- Utilisez `authHeader: true` + `headers` pour des besoins d’authentification personnalisés.
-- Remplacez la racine de configuration de l’agent avec `OPENCLAW_AGENT_DIR` (ou `PI_CODING_AGENT_DIR`, alias hérité de variable d’environnement).
+- Utilisez `authHeader: true` + `headers` pour les besoins d’authentification personnalisés.
+- Remplacez la racine de configuration d’agent avec `OPENCLAW_AGENT_DIR` (ou `PI_CODING_AGENT_DIR`, ancien alias de variable d’environnement).
- Priorité de fusion pour les identifiants de fournisseur correspondants :
- - Les valeurs `baseUrl` non vides dans `models.json` de l’agent l’emportent.
- - Les valeurs `apiKey` non vides de l’agent l’emportent uniquement lorsque ce fournisseur n’est pas géré par SecretRef dans le contexte actuel config/profil d’authentification.
- - Les valeurs `apiKey` des fournisseurs gérés par SecretRef sont rafraîchies à partir des marqueurs de source (`ENV_VAR_NAME` pour les refs env, `secretref-managed` pour les refs file/exec) au lieu de persister les secrets résolus.
- - Les valeurs d’en-têtes de fournisseur gérées par SecretRef sont rafraîchies à partir des marqueurs de source (`secretref-env:ENV_VAR_NAME` pour les refs env, `secretref-managed` pour les refs file/exec).
- - Les `apiKey`/`baseUrl` de l’agent vides ou absents reviennent à `models.providers` dans la configuration.
- - Pour les modèles correspondants, `contextWindow`/`maxTokens` utilisent la valeur la plus élevée entre la configuration explicite et les valeurs implicites du catalogue.
- - `contextTokens` d’un modèle correspondant préserve un plafond d’exécution explicite lorsqu’il est présent ; utilisez-le pour limiter le contexte effectif sans modifier les métadonnées natives du modèle.
- - Utilisez `models.mode: "replace"` lorsque vous voulez que la configuration réécrive entièrement `models.json`.
- - La persistance des marqueurs est pilotée par la source : les marqueurs sont écrits à partir de l’instantané de configuration source actif (avant résolution), pas à partir des valeurs secrètes résolues à l’exécution.
+ - Les valeurs `baseUrl` non vides de `models.json` d’agent ont priorité.
+ - Les valeurs `apiKey` non vides de l’agent ont priorité seulement lorsque ce fournisseur n’est pas géré par SecretRef dans le contexte actuel de configuration/profil d’authentification.
+ - Les valeurs `apiKey` de fournisseur gérées par SecretRef sont rafraîchies à partir des marqueurs de source (`ENV_VAR_NAME` pour les références env, `secretref-managed` pour les références file/exec) au lieu de persister les secrets résolus.
+ - Les valeurs d’en-tête de fournisseur gérées par SecretRef sont rafraîchies à partir des marqueurs de source (`secretref-env:ENV_VAR_NAME` pour les références env, `secretref-managed` pour les références file/exec).
+ - Les `apiKey`/`baseUrl` vides ou absents de l’agent reviennent à `models.providers` dans la configuration.
+ - Les `contextWindow`/`maxTokens` du modèle correspondant utilisent la valeur la plus élevée entre la configuration explicite et les valeurs implicites du catalogue.
+ - Les `contextTokens` du modèle correspondant conservent une limite explicite du runtime lorsqu’elle est présente ; utilisez-la pour limiter le contexte effectif sans changer les métadonnées natives du modèle.
+ - Utilisez `models.mode: "replace"` lorsque vous voulez que la configuration réécrive complètement `models.json`.
+ - La persistance des marqueurs est pilotée par la source : les marqueurs sont écrits depuis l’instantané actif de configuration source (avant résolution), et non depuis les valeurs de secret résolues à l’exécution.
-### Détails des champs fournisseur
+### Détails des champs du fournisseur
- `models.mode` : comportement du catalogue fournisseur (`merge` ou `replace`).
-- `models.providers` : mappe de fournisseurs personnalisés, indexée par identifiant de fournisseur.
+- `models.providers` : map des fournisseurs personnalisés, indexée par identifiant de fournisseur.
- `models.providers.*.api` : adaptateur de requête (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai`, etc.).
-- `models.providers.*.apiKey` : identifiant du fournisseur (préférez SecretRef/substitution d’environnement).
+- `models.providers.*.apiKey` : identifiant fournisseur (préférez SecretRef/substitution d’environnement).
- `models.providers.*.auth` : stratégie d’authentification (`api-key`, `token`, `oauth`, `aws-sdk`).
- `models.providers.*.injectNumCtxForOpenAICompat` : pour Ollama + `openai-completions`, injecte `options.num_ctx` dans les requêtes (par défaut : `true`).
-- `models.providers.*.authHeader` : forcer le transport de l’identifiant dans l’en-tête `Authorization` lorsque nécessaire.
+- `models.providers.*.authHeader` : force le transport de l’identifiant dans l’en-tête `Authorization` lorsque nécessaire.
- `models.providers.*.baseUrl` : URL de base de l’API amont.
-- `models.providers.*.headers` : en-têtes statiques supplémentaires pour le routage proxy/tenant.
-- `models.providers.*.request` : surcharges de transport pour les requêtes HTTP des fournisseurs de modèles.
+- `models.providers.*.headers` : en-têtes statiques supplémentaires pour le routage proxy/locataire.
+- `models.providers.*.request` : remplacements de transport pour les requêtes HTTP du fournisseur de modèles.
- `request.headers` : en-têtes supplémentaires (fusionnés avec les valeurs par défaut du fournisseur). Les valeurs acceptent SecretRef.
- - `request.auth` : surcharge de stratégie d’authentification. Modes : `"provider-default"` (utiliser l’authentification intégrée du fournisseur), `"authorization-bearer"` (avec `token`), `"header"` (avec `headerName`, `value`, `prefix` facultatif).
- - `request.proxy` : surcharge de proxy HTTP. Modes : `"env-proxy"` (utiliser les variables d’environnement `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (avec `url`). Les deux modes acceptent un sous-objet `tls` facultatif.
- - `request.tls` : surcharge TLS pour les connexions directes. Champs : `ca`, `cert`, `key`, `passphrase` (tous acceptent SecretRef), `serverName`, `insecureSkipVerify`.
+ - `request.auth` : remplacement de stratégie d’authentification. Modes : `"provider-default"` (utiliser l’authentification intégrée du fournisseur), `"authorization-bearer"` (avec `token`), `"header"` (avec `headerName`, `value`, `prefix` facultatif).
+ - `request.proxy` : remplacement de proxy HTTP. Modes : `"env-proxy"` (utiliser les variables d’environnement `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (avec `url`). Les deux modes acceptent un sous-objet `tls` facultatif.
+ - `request.tls` : remplacement TLS pour les connexions directes. Champs : `ca`, `cert`, `key`, `passphrase` (tous acceptent SecretRef), `serverName`, `insecureSkipVerify`.
- `models.providers.*.models` : entrées explicites du catalogue de modèles du fournisseur.
-- `models.providers.*.models.*.contextWindow` : métadonnées natives de fenêtre de contexte du modèle.
-- `models.providers.*.models.*.contextTokens` : plafond de contexte d’exécution facultatif. Utilisez-le lorsque vous voulez un budget de contexte effectif plus petit que le `contextWindow` natif du modèle.
-- `models.providers.*.models.*.compat.supportsDeveloperRole` : indice facultatif de compatibilité. Pour `api: "openai-completions"` avec un `baseUrl` non vide non natif (hôte différent de `api.openai.com`), OpenClaw force cette valeur à `false` à l’exécution. Un `baseUrl` vide/omis conserve le comportement OpenAI par défaut.
-- `models.providers.*.models.*.compat.requiresStringContent` : indice facultatif de compatibilité pour les points de terminaison de chat compatibles OpenAI n’acceptant que des chaînes. Lorsque `true`, OpenClaw aplatit les tableaux `messages[].content` de texte pur en chaînes simples avant l’envoi de la requête.
+- `models.providers.*.models.*.contextWindow` : métadonnées de fenêtre de contexte native du modèle.
+- `models.providers.*.models.*.contextTokens` : limite facultative du contexte à l’exécution. Utilisez-la lorsque vous voulez un budget de contexte effectif plus faible que le `contextWindow` natif du modèle.
+- `models.providers.*.models.*.compat.supportsDeveloperRole` : indice facultatif de compatibilité. Pour `api: "openai-completions"` avec un `baseUrl` non natif non vide (hôte différent de `api.openai.com`), OpenClaw le force à `false` à l’exécution. `baseUrl` vide/absent conserve le comportement OpenAI par défaut.
+- `models.providers.*.models.*.compat.requiresStringContent` : indice facultatif de compatibilité pour les points de terminaison chat OpenAI-compatibles n’acceptant que des chaînes. Lorsqu’il vaut `true`, OpenClaw aplatit en chaînes simples les tableaux `messages[].content` de texte pur avant envoi.
- `plugins.entries.amazon-bedrock.config.discovery` : racine des paramètres d’auto-découverte Bedrock.
-- `plugins.entries.amazon-bedrock.config.discovery.enabled` : activer/désactiver la découverte implicite.
+- `plugins.entries.amazon-bedrock.config.discovery.enabled` : active/désactive la découverte implicite.
- `plugins.entries.amazon-bedrock.config.discovery.region` : région AWS pour la découverte.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter` : filtre facultatif d’identifiant de fournisseur pour une découverte ciblée.
-- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval` : intervalle de sondage pour le rafraîchissement de la découverte.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter` : filtre facultatif par identifiant de fournisseur pour une découverte ciblée.
+- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval` : intervalle d’interrogation pour l’actualisation de la découverte.
- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow` : fenêtre de contexte de repli pour les modèles découverts.
-- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens` : nombre maximal de tokens de sortie de repli pour les modèles découverts.
+- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens` : nombre maximal de jetons de sortie de repli pour les modèles découverts.
### Exemples de fournisseurs
@@ -2419,7 +2458,7 @@ Utilisez `cerebras/zai-glm-4.7` pour Cerebras ; `zai/glm-4.7` pour Z.AI direct.
}
```
-Définissez `OPENCODE_API_KEY` (ou `OPENCODE_ZEN_API_KEY`). Utilisez des références `opencode/...` pour le catalogue Zen ou `opencode-go/...` pour le catalogue Go. Raccourci : `openclaw onboard --auth-choice opencode-zen` ou `openclaw onboard --auth-choice opencode-go`.
+Définissez `OPENCODE_API_KEY` (ou `OPENCODE_ZEN_API_KEY`). Utilisez les références `opencode/...` pour le catalogue Zen ou `opencode-go/...` pour le catalogue Go. Raccourci : `openclaw onboard --auth-choice opencode-zen` ou `openclaw onboard --auth-choice opencode-go`.
@@ -2436,11 +2475,11 @@ Définissez `OPENCODE_API_KEY` (ou `OPENCODE_ZEN_API_KEY`). Utilisez des référ
}
```
-Définissez `ZAI_API_KEY`. `z.ai/*` et `z-ai/*` sont acceptés comme alias. Raccourci : `openclaw onboard --auth-choice zai-api-key`.
+Définissez `ZAI_API_KEY`. `z.ai/*` et `z-ai/*` sont des alias acceptés. Raccourci : `openclaw onboard --auth-choice zai-api-key`.
- Point de terminaison général : `https://api.z.ai/api/paas/v4`
-- Point de terminaison coding (par défaut) : `https://api.z.ai/api/coding/paas/v4`
-- Pour le point de terminaison général, définissez un fournisseur personnalisé avec la surcharge d’URL de base.
+- Point de terminaison de code (par défaut) : `https://api.z.ai/api/coding/paas/v4`
+- Pour le point de terminaison général, définissez un fournisseur personnalisé avec remplacement de l’URL de base.
@@ -2481,9 +2520,9 @@ Définissez `ZAI_API_KEY`. `z.ai/*` et `z-ai/*` sont acceptés comme alias. Racc
Pour le point de terminaison Chine : `baseUrl: "https://api.moonshot.cn/v1"` ou `openclaw onboard --auth-choice moonshot-api-key-cn`.
-Les points de terminaison Moonshot natifs annoncent la compatibilité d’usage du streaming sur le transport partagé
-`openai-completions`, et OpenClaw l’indexe désormais sur les capacités du point de terminaison
-plutôt que sur le seul identifiant intégré du fournisseur.
+Les points de terminaison Moonshot natifs annoncent une compatibilité d’usage du streaming sur le transport partagé
+`openai-completions`, et OpenClaw s’appuie désormais sur les capacités du point de terminaison
+plutôt que sur le seul identifiant de fournisseur intégré.
@@ -2583,9 +2622,9 @@ L’URL de base doit omettre `/v1` (le client Anthropic l’ajoute). Raccourci :
Définissez `MINIMAX_API_KEY`. Raccourcis :
`openclaw onboard --auth-choice minimax-global-api` ou
`openclaw onboard --auth-choice minimax-cn-api`.
-Le catalogue de modèles utilise désormais M2.7 uniquement par défaut.
+Le catalogue de modèles utilise désormais M2.7 seul par défaut.
Sur le chemin de streaming compatible Anthropic, OpenClaw désactive le thinking MiniMax
-par défaut sauf si vous définissez explicitement `thinking` vous-même. `/fast on` ou
+par défaut sauf si vous définissez explicitement `thinking`. `/fast on` ou
`params.fastMode: true` réécrit `MiniMax-M2.7` en
`MiniMax-M2.7-highspeed`.
@@ -2593,7 +2632,7 @@ par défaut sauf si vous définissez explicitement `thinking` vous-même. `/fast
-Voir [Modèles locaux](/fr/gateway/local-models). En bref : exécutez un grand modèle local via l’API Responses de LM Studio sur un matériel sérieux ; gardez les modèles hébergés fusionnés pour le repli.
+Voir [Modèles locaux](/fr/gateway/local-models). En bref : exécutez un grand modèle local via l’API LM Studio Responses sur un matériel sérieux ; conservez les modèles hébergés fusionnés pour le secours.
@@ -2624,14 +2663,14 @@ Voir [Modèles locaux](/fr/gateway/local-models). En bref : exécutez un grand m
}
```
-- `allowBundled` : liste d’autorisations facultative pour les Skills groupées uniquement (les Skills gérées/de l’espace de travail ne sont pas affectées).
-- `load.extraDirs` : racines supplémentaires de Skills partagées (priorité la plus basse).
-- `install.preferBrew` : lorsque true, préfère les installateurs Homebrew lorsque `brew` est
- disponible avant de revenir à d’autres types d’installateurs.
-- `install.nodeManager` : préférence du gestionnaire Node pour les spécifications
+- `allowBundled` : liste d’autorisation facultative pour les seules Skills fournies en bundle (les Skills gérées/en workspace ne sont pas affectées).
+- `load.extraDirs` : racines partagées supplémentaires de Skills (priorité la plus basse).
+- `install.preferBrew` : lorsque vrai, préfère les installateurs Homebrew lorsque `brew` est
+ disponible avant de revenir à d’autres types d’installateur.
+- `install.nodeManager` : préférence d’installateur Node pour les spécifications
`metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`).
-- `entries..enabled: false` désactive une skill même si elle est groupée/installée.
-- `entries..apiKey` : champ pratique de clé API pour les Skills qui déclarent une variable d’environnement principale (chaîne en clair ou objet SecretRef).
+- `entries..enabled: false` désactive une Skills même si elle est fournie en bundle/installée.
+- `entries..apiKey` : commodité pour les Skills déclarant une variable d’environnement primaire (chaîne en clair ou objet SecretRef).
---
@@ -2660,32 +2699,38 @@ Voir [Modèles locaux](/fr/gateway/local-models). En bref : exécutez un grand m
```
- Chargés depuis `~/.openclaw/extensions`, `/.openclaw/extensions`, plus `plugins.load.paths`.
-- La découverte accepte les plugins OpenClaw natifs ainsi que les bundles Codex et Claude compatibles, y compris les bundles Claude sans manifeste au format de disposition par défaut.
-- **Les changements de configuration nécessitent un redémarrage de la passerelle.**
-- `allow` : liste d’autorisations facultative (seuls les plugins listés se chargent). `deny` l’emporte.
-- `plugins.entries..apiKey` : champ pratique de clé API au niveau du plugin (lorsque pris en charge par le plugin).
-- `plugins.entries..env` : mappe de variables d’environnement à portée du plugin.
-- `plugins.entries..hooks.allowPromptInjection` : lorsque `false`, le noyau bloque `before_prompt_build` et ignore les champs modifiant le prompt venant de l’ancien `before_agent_start`, tout en conservant `modelOverride` et `providerOverride` hérités. S’applique aux hooks de plugins natifs et aux répertoires de hooks fournis par bundle compatibles.
-- `plugins.entries..subagent.allowModelOverride` : fait explicitement confiance à ce plugin pour demander des surcharges `provider` et `model` par exécution pour les exécutions de sous-agent en arrière-plan.
-- `plugins.entries..subagent.allowedModels` : liste d’autorisations facultative des cibles canoniques `provider/model` pour les surcharges de sous-agent approuvées. Utilisez `"*"` uniquement si vous voulez délibérément autoriser n’importe quel modèle.
-- `plugins.entries..config` : objet de configuration défini par le plugin (validé par le schéma de plugin OpenClaw natif lorsque disponible).
-- `plugins.entries.firecrawl.config.webFetch` : paramètres du fournisseur de récupération web Firecrawl.
+- La découverte accepte les plugins OpenClaw natifs ainsi que les bundles Codex compatibles et les bundles Claude, y compris les bundles Claude sans manifeste au layout par défaut.
+- **Les modifications de configuration nécessitent un redémarrage de la passerelle.**
+- `allow` : liste d’autorisation facultative (seuls les plugins listés sont chargés). `deny` l’emporte.
+- `plugins.entries..apiKey` : champ pratique de clé API au niveau du plugin (quand le plugin le prend en charge).
+- `plugins.entries..env` : map de variables d’environnement à portée du plugin.
+- `plugins.entries..hooks.allowPromptInjection` : lorsque `false`, le noyau bloque `before_prompt_build` et ignore les champs de mutation de prompt des anciens `before_agent_start`, tout en préservant les anciens `modelOverride` et `providerOverride`. S’applique aux hooks de plugins natifs et aux répertoires de hooks fournis par bundle pris en charge.
+- `plugins.entries..subagent.allowModelOverride` : faire explicitement confiance à ce plugin pour demander des remplacements `provider` et `model` par exécution pour les exécutions de sous-agents en arrière-plan.
+- `plugins.entries..subagent.allowedModels` : liste d’autorisation facultative des cibles canoniques `provider/model` pour les remplacements de sous-agents de confiance. Utilisez `"*"` seulement si vous voulez intentionnellement autoriser n’importe quel modèle.
+- `plugins.entries..config` : objet de configuration défini par le plugin (validé par le schéma du plugin OpenClaw natif lorsqu’il est disponible).
+- `plugins.entries.firecrawl.config.webFetch` : paramètres du fournisseur web-fetch Firecrawl.
- `apiKey` : clé API Firecrawl (accepte SecretRef). Revient à `plugins.entries.firecrawl.config.webSearch.apiKey`, à l’ancien `tools.web.fetch.firecrawl.apiKey`, ou à la variable d’environnement `FIRECRAWL_API_KEY`.
- `baseUrl` : URL de base de l’API Firecrawl (par défaut : `https://api.firecrawl.dev`).
- `onlyMainContent` : extraire uniquement le contenu principal des pages (par défaut : `true`).
- `maxAgeMs` : âge maximal du cache en millisecondes (par défaut : `172800000` / 2 jours).
- `timeoutSeconds` : délai maximal de la requête de scraping en secondes (par défaut : `60`).
-- `plugins.entries.xai.config.xSearch` : paramètres xAI X Search (recherche web Grok).
- - `enabled` : activer le fournisseur X Search.
- - `model` : modèle Grok à utiliser pour la recherche (par ex. `"grok-4-1-fast"`).
-- `plugins.entries.memory-core.config.dreaming` : paramètres de rêverie de mémoire (expérimental). Voir [Dreaming](/fr/concepts/dreaming) pour les phases et seuils.
- - `enabled` : commutateur principal de rêverie (par défaut `false`).
- - `frequency` : cadence cron pour chaque balayage complet de rêverie (`"0 3 * * *"` par défaut).
- - la politique des phases et les seuils sont des détails d’implémentation (pas des clés de configuration orientées utilisateur).
-- Les plugins bundle Claude activés peuvent aussi apporter des valeurs par défaut Pi intégrées depuis `settings.json` ; OpenClaw les applique comme paramètres d’agent assainis, pas comme correctifs bruts de configuration OpenClaw.
-- `plugins.slots.memory` : choisit l’identifiant du plugin mémoire actif, ou `"none"` pour désactiver les plugins mémoire.
-- `plugins.slots.contextEngine` : choisit l’identifiant du moteur de contexte actif ; par défaut `"legacy"` sauf si vous en installez et sélectionnez un autre.
-- `plugins.installs` : métadonnées d’installation gérées par la CLI et utilisées par `openclaw plugins update`.
+- `plugins.entries.xai.config.xSearch` : paramètres de xAI X Search (recherche web Grok).
+ - `enabled` : active le fournisseur X Search.
+ - `model` : modèle Grok à utiliser pour la recherche (par exemple `"grok-4-1-fast"`).
+- `plugins.entries.memory-core.config.dreaming` : paramètres expérimentaux de memory dreaming. Voir [Dreaming](/fr/concepts/dreaming) pour les phases et seuils.
+ - `enabled` : commutateur maître du dreaming (par défaut `false`).
+ - `frequency` : cadence cron pour chaque balayage complet de dreaming (`"0 3 * * *"` par défaut).
+ - la politique de phase et les seuils sont des détails d’implémentation (pas des clés de configuration exposées à l’utilisateur).
+- La configuration complète de la mémoire se trouve dans [Référence de configuration de la mémoire](/fr/reference/memory-config) :
+ - `agents.defaults.memorySearch.*`
+ - `memory.backend`
+ - `memory.citations`
+ - `memory.qmd.*`
+ - `plugins.entries.memory-core.config.dreaming`
+- Les plugins bundle Claude activés peuvent aussi fournir des valeurs par défaut Pi embarquées depuis `settings.json` ; OpenClaw les applique comme paramètres d’agent assainis, et non comme correctifs bruts de configuration OpenClaw.
+- `plugins.slots.memory` : choisir l’identifiant du plugin mémoire actif, ou `"none"` pour désactiver les plugins mémoire.
+- `plugins.slots.contextEngine` : choisir l’identifiant du plugin moteur de contexte actif ; par défaut `"legacy"` sauf si vous installez et sélectionnez un autre moteur.
+- `plugins.installs` : métadonnées d’installation gérées par la CLI, utilisées par `openclaw plugins update`.
- Inclut `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
- Traitez `plugins.installs.*` comme un état géré ; préférez les commandes CLI aux modifications manuelles.
@@ -2693,7 +2738,7 @@ Voir [Plugins](/fr/tools/plugin).
---
-## Navigateur
+## Browser
```json5
{
@@ -2731,11 +2776,11 @@ Voir [Plugins](/fr/tools/plugin).
- `evaluateEnabled: false` désactive `act:evaluate` et `wait --fn`.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` vaut par défaut `true` lorsqu’il n’est pas défini (modèle de réseau de confiance).
-- Définissez `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` pour une navigation navigateur stricte limitée au public.
-- En mode strict, les points de terminaison de profils CDP distants (`profiles.*.cdpUrl`) sont soumis au même blocage des réseaux privés lors des vérifications d’accessibilité/découverte.
-- `ssrfPolicy.allowPrivateNetwork` reste pris en charge comme alias hérité.
+- Définissez `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` pour une navigation Browser stricte limitée au réseau public.
+- En mode strict, les points de terminaison de profils CDP distants (`profiles.*.cdpUrl`) sont soumis au même blocage de réseau privé pendant les contrôles de disponibilité/découverte.
+- `ssrfPolicy.allowPrivateNetwork` reste pris en charge comme ancien alias.
- En mode strict, utilisez `ssrfPolicy.hostnameAllowlist` et `ssrfPolicy.allowedHostnames` pour des exceptions explicites.
-- Les profils distants sont en attachement seul (démarrage/arrêt/réinitialisation désactivés).
+- Les profils distants sont en mode attachement uniquement (start/stop/reset désactivés).
- `profiles.*.cdpUrl` accepte `http://`, `https://`, `ws://` et `wss://`.
Utilisez HTTP(S) lorsque vous voulez qu’OpenClaw découvre `/json/version` ; utilisez WS(S)
lorsque votre fournisseur vous donne une URL WebSocket DevTools directe.
@@ -2743,102 +2788,7 @@ Voir [Plugins](/fr/tools/plugin).
- Les profils `existing-session` peuvent définir `userDataDir` pour cibler un profil
spécifique d’un navigateur basé sur Chromium tel que Brave ou Edge.
- Les profils `existing-session` conservent les limites actuelles de la route Chrome MCP :
- actions basées sur instantanés/références au lieu du ciblage par sélecteur CSS, hooks de téléversement de fichier unique, pas de surcharges de délai de boîte de dialogue, pas de `wait --load networkidle`, ni `responsebody`, export PDF, interception des téléchargements ou actions par lot.
-- Les profils locaux gérés `openclaw` attribuent automatiquement `cdpPort` et `cdpUrl` ; ne définissez
- explicitement `cdpUrl` que pour le CDP distant.
-- Ordre d’auto-détection : navigateur par défaut s’il est basé sur Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
-- Service de contrôle : loopback uniquement (port dérivé de `gateway.port`, par défaut `18791`).
-- `extraArgs` ajoute des flags de lancement supplémentaires au démarrage local de Chromium (par exemple
- `--disable-gpu`, taille de fenêtre ou flags de débogage).
-
----
-
-## UI
-
-```json5
-{
- ui: {
- seamColor: "#FF4500",
- assistant: {
- name: "OpenClaw",
- avatar: "CB", // emoji, short text, image URL, or data URI
- },
- },
-}
-```
-
-- `seamColor` : couleur d’accent pour le chrome UI de l’application native (teinte de bulle du mode Talk, etc.).
-- `assistant` : surcharge d’identité du Control UI. Revient à l’identité de l’agent actif.
-
----
-
-## Passerelle
-
-```json5
-{
- gateway: {
- mode: "local", // local | remote
- port: 18789,
- bind: "loopback",
- auth: {
- mode: "token", // none | token | password | trusted-proxy
- token: "your-token",
- // password: "your-password", // or OPENCLAW_GATEWAY_PASSWORD
- // trustedProxy: { userHeader: "x-forwarded-user" }, // for mode=trusted-proxy; see /gateway/trusted-proxy-auth
- allowTailscale: true,
- rateLimit: {
- maxAttempts: 10,
- windowMs: 60000,
- lockoutMs: 300000,
- exemptLoopback: true,
- },
- },
- tailscale: {
- mode: "off", // off | serve | funnel
- resetOnExit: false,
- },
- controlUi: {
- enabled: true,
- basePath: "/openclaw",
- // root: "dist/control-ui",
- // allowedOrigins: ["https://control.example.com"], // required for non-loopback Control UI
- // dangerouslyAllowHostHeaderOriginFallback: false, // dangerous Host-header origin fallback mode
- // allowInsecureAuth: false,
- // dangerouslyDisableDeviceAuth: false,
- },
- remote: {
- url: "ws://gateway.tailnet:18789",
- transport: "ssh", // ssh | direct
- token: "your-token",
- // password: "your-password",
- },
- trustedProxies: ["10.0.0.1"],
- // Optional. Default false.
- allowRealIpFallback: false,
- tools: {
- // Additional /tools/invoke HTTP denies
- deny: ["browser"],
- // Remove tools from the default HTTP deny list
- allow: ["gateway"],
- },
- push: {
- apns: {
- relay: {
- baseUrl: "https://relay.example.com",
- timeoutMs: 10000,
- },
- },
- },
- },
-}
-```
-
-
-
-- `mode` : `local` (exécuter la passerelle) ou `remote` (se connecter à une passerelle distante). La passerelle refuse de démarrer sauf en mode `local`.
-- `port` : port multiplexé unique pour WS + HTTP. Priorité : `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
-- `bind` : `auto`, `loopback` (par défaut), `lan` (`0.0.0.0`), `tailnet` (IP Tailscale uniquement), ou `custom`.
-- **Alias hérités de bind** : utilisez les valeurs du mode bind dans `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), pas les alias d’hôte (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
-- **Remarque Docker** : le bind par défaut `loopback` écoute sur `127.0.0.1` à l’intérieur du conteneur. Avec le réseau bridge Docker (`-p 18789:18789`), le trafic arrive sur `eth0`, la passerelle est donc injoignable. Utilisez `--network host`, ou définissez `bind: "lan"` (ou `bind: "custom"` avec `customBindHost: "0.0.0.0"`) pour écouter sur toutes les interfaces.
-- **Auth** : requise par défaut. Les binds non loopback exigent une authentification de passerelle. En pratique, cela signifie un jeton/mot de passe partagé ou un proxy inverse conscient de l’identité avec `gateway.auth.mode: "trusted-proxy"`. L’assistant d’onboarding génère un jeton par défaut.
-- Si `gateway.auth.token` et `gateway.auth.password` sont tous deux
\ No newline at end of file
+ actions basées sur snapshot/références plutôt que ciblage par sélecteur CSS, hooks
+ d’upload d’un seul fichier, pas de remplacement de délai pour les boîtes de dialogue, pas de `wait --load networkidle`,
+ ni `responsebody`, export PDF, interception de téléchargement ou actions par lots.
+- Les profils locaux gérés `openclaw` attribuent automatiquement `cdpPort` et `
\ No newline at end of file
diff --git a/docs/fr/gateway/configuration.md b/docs/fr/gateway/configuration.md
index cb8907ffb..191b869a0 100644
--- a/docs/fr/gateway/configuration.md
+++ b/docs/fr/gateway/configuration.md
@@ -2,14 +2,14 @@
read_when:
- Configurer OpenClaw pour la première fois
- Rechercher des modèles de configuration courants
- - Naviguer vers des sections de configuration spécifiques
-summary: 'Vue d''ensemble de la configuration : tâches courantes, configuration rapide et liens vers la référence complète'
+ - Accéder à des sections de configuration spécifiques
+summary: 'Vue d’ensemble de la configuration : tâches courantes, configuration rapide et liens vers la référence complète'
title: Configuration
x-i18n:
- generated_at: "2026-04-05T12:42:40Z"
+ generated_at: "2026-04-08T06:01:57Z"
model: gpt-5.4
provider: openai
- source_hash: a39a7de09c5f9540785ec67f37d435a7a86201f0f5f640dae663054f35976712
+ source_hash: 199a1e515bd4003319e71593a2659bb883299a76ff67e273d92583df03c96604
source_path: gateway/configuration.md
workflow: 15
---
@@ -18,16 +18,16 @@ x-i18n:
OpenClaw lit une configuration **JSON5** facultative depuis `~/.openclaw/openclaw.json`.
-Si le fichier est absent, OpenClaw utilise des valeurs par défaut sûres. Raisons courantes d'ajouter une configuration :
+Si le fichier est absent, OpenClaw utilise des valeurs par défaut sûres. Raisons courantes d’ajouter une configuration :
- Connecter des canaux et contrôler qui peut envoyer des messages au bot
-- Définir des modèles, outils, sandboxing ou automatisations (cron, hooks)
-- Ajuster les sessions, médias, réseau ou l'interface utilisateur
+- Définir les modèles, les outils, l’isolation en sandbox ou l’automatisation (cron, hooks)
+- Ajuster les sessions, les médias, le réseau ou l’interface utilisateur
-Voir la [référence complète](/gateway/configuration-reference) pour chaque champ disponible.
+Consultez la [référence complète](/fr/gateway/configuration-reference) pour tous les champs disponibles.
-**Nouveau dans la configuration ?** Commencez avec `openclaw onboard` pour une configuration interactive, ou consultez le guide [Exemples de configuration](/gateway/configuration-examples) pour des configurations complètes prêtes à copier-coller.
+**Vous débutez avec la configuration ?** Commencez par `openclaw onboard` pour une configuration interactive, ou consultez le guide [Exemples de configuration](/fr/gateway/configuration-examples) pour des configurations complètes prêtes à copier-coller.
## Configuration minimale
@@ -40,16 +40,16 @@ Voir la [référence complète](/gateway/configuration-reference) pour chaque ch
}
```
-## Modifier la configuration
+## Modification de la configuration
```bash
- openclaw onboard # flux d'onboarding complet
+ openclaw onboard # flux d’intégration complet
openclaw configure # assistant de configuration
```
-
+
```bash
openclaw config get agents.defaults.workspace
openclaw config set agents.defaults.heartbeat.every "2h"
@@ -57,32 +57,48 @@ Voir la [référence complète](/gateway/configuration-reference) pour chaque ch
```
- Ouvrez [http://127.0.0.1:18789](http://127.0.0.1:18789) et utilisez l'onglet **Config**.
- L'interface utilisateur de contrôle affiche un formulaire à partir du schéma de configuration actif, y compris les métadonnées de documentation des champs `title` / `description` ainsi que les schémas de plugin et de canal lorsqu'ils sont disponibles, avec un éditeur **Raw JSON** comme solution de secours. Pour les interfaces d'exploration détaillée et les autres outils, la gateway expose également `config.schema.lookup` pour récupérer un nœud de schéma limité à un chemin ainsi que les résumés immédiats de ses enfants.
+ Ouvrez [http://127.0.0.1:18789](http://127.0.0.1:18789) et utilisez l’onglet **Config**.
+ L’interface utilisateur de contrôle affiche un formulaire à partir du schéma de configuration actif, y compris les métadonnées de documentation des champs
+ `title` / `description` ainsi que les schémas des plugins et des canaux lorsque
+ disponibles, avec un éditeur **Raw JSON** comme solution de secours. Pour les interfaces
+ détaillées et d’autres outils, la passerelle expose également `config.schema.lookup` pour
+ récupérer un nœud de schéma limité à un chemin ainsi que les résumés immédiats de ses enfants.
- Modifiez directement `~/.openclaw/openclaw.json`. La gateway surveille le fichier et applique les changements automatiquement (voir [rechargement à chaud](#config-hot-reload)).
+ Modifiez directement `~/.openclaw/openclaw.json`. La Gateway surveille le fichier et applique les modifications automatiquement (voir [rechargement à chaud](#config-hot-reload)).
## Validation stricte
-OpenClaw n'accepte que les configurations qui correspondent entièrement au schéma. Les clés inconnues, types mal formés ou valeurs invalides font que la gateway **refuse de démarrer**. La seule exception au niveau racine est `$schema` (chaîne), afin que les éditeurs puissent attacher des métadonnées JSON Schema.
+OpenClaw n’accepte que les configurations qui correspondent entièrement au schéma. Les clés inconnues, les types mal formés ou les valeurs invalides amènent la Gateway à **refuser de démarrer**. La seule exception au niveau racine est `$schema` (chaîne), afin que les éditeurs puissent attacher des métadonnées JSON Schema.
Remarques sur les outils de schéma :
-- `openclaw config schema` affiche la même famille de JSON Schema utilisée par l'interface utilisateur de contrôle et la validation de configuration.
-- Les valeurs de champ `title` et `description` sont reportées dans la sortie du schéma pour les outils d'éditeur et de formulaire.
-- Les entrées d'objet imbriqué, génériques (`*`) et d'élément de tableau (`[]`) héritent des mêmes métadonnées de documentation lorsqu'une documentation de champ correspondante existe.
-- Les branches de composition `anyOf` / `oneOf` / `allOf` héritent également des mêmes métadonnées de documentation, afin que les variantes d'union/intersection conservent la même aide sur les champs.
-- `config.schema.lookup` renvoie un chemin de configuration normalisé avec un nœud de schéma superficiel (`title`, `description`, `type`, `enum`, `const`, bornes communes et champs de validation similaires), les métadonnées d'indication d'interface associées, ainsi que les résumés immédiats de ses enfants pour les outils d'exploration détaillée.
-- Les schémas de plugin/canal runtime sont fusionnés lorsque la gateway peut charger le registre de manifeste actuel.
+- `openclaw config schema` affiche la même famille de JSON Schema utilisée par l’interface utilisateur de contrôle
+ et la validation de la configuration.
+- Considérez cette sortie de schéma comme le contrat canonique lisible par machine pour
+ `openclaw.json` ; cette vue d’ensemble et la référence de configuration la résument.
+- Les valeurs `title` et `description` des champs sont reportées dans la sortie du schéma pour
+ les éditeurs et les outils de formulaires.
+- Les entrées d’objet imbriqué, génériques (`*`) et d’élément de tableau (`[]`) héritent des mêmes
+ métadonnées de documentation lorsqu’une documentation de champ correspondante existe.
+- Les branches de composition `anyOf` / `oneOf` / `allOf` héritent également des mêmes
+ métadonnées de documentation, afin que les variantes d’union/intersection conservent la même aide de champ.
+- `config.schema.lookup` renvoie un chemin de configuration normalisé avec un nœud de
+ schéma superficiel (`title`, `description`, `type`, `enum`, `const`, bornes communes,
+ et champs de validation similaires), les métadonnées d’indication d’interface correspondantes et les résumés immédiats
+ des enfants pour les outils d’exploration détaillée.
+- Les schémas d’exécution des plugins/canaux sont fusionnés lorsque la gateway peut charger le
+ registre de manifestes actuel.
+- `pnpm config:docs:check` détecte les écarts entre les artefacts de base de configuration destinés à la documentation
+ et la surface actuelle du schéma.
Lorsque la validation échoue :
-- La gateway ne démarre pas
+- La Gateway ne démarre pas
- Seules les commandes de diagnostic fonctionnent (`openclaw doctor`, `openclaw logs`, `openclaw health`, `openclaw status`)
- Exécutez `openclaw doctor` pour voir les problèmes exacts
- Exécutez `openclaw doctor --fix` (ou `--yes`) pour appliquer les réparations
@@ -91,20 +107,20 @@ Lorsque la validation échoue :
- Chaque canal possède sa propre section de configuration sous `channels.`. Consultez la page du canal concerné pour les étapes de configuration :
+ Chaque canal a sa propre section de configuration sous `channels.`. Consultez la page dédiée au canal pour les étapes de configuration :
- - [WhatsApp](/channels/whatsapp) — `channels.whatsapp`
- - [Telegram](/channels/telegram) — `channels.telegram`
- - [Discord](/channels/discord) — `channels.discord`
- - [Feishu](/channels/feishu) — `channels.feishu`
- - [Google Chat](/channels/googlechat) — `channels.googlechat`
- - [Microsoft Teams](/channels/msteams) — `channels.msteams`
- - [Slack](/channels/slack) — `channels.slack`
- - [Signal](/channels/signal) — `channels.signal`
- - [iMessage](/channels/imessage) — `channels.imessage`
- - [Mattermost](/channels/mattermost) — `channels.mattermost`
+ - [WhatsApp](/fr/channels/whatsapp) — `channels.whatsapp`
+ - [Telegram](/fr/channels/telegram) — `channels.telegram`
+ - [Discord](/fr/channels/discord) — `channels.discord`
+ - [Feishu](/fr/channels/feishu) — `channels.feishu`
+ - [Google Chat](/fr/channels/googlechat) — `channels.googlechat`
+ - [Microsoft Teams](/fr/channels/msteams) — `channels.msteams`
+ - [Slack](/fr/channels/slack) — `channels.slack`
+ - [Signal](/fr/channels/signal) — `channels.signal`
+ - [iMessage](/fr/channels/imessage) — `channels.imessage`
+ - [Mattermost](/fr/channels/mattermost) — `channels.mattermost`
- Tous les canaux partagent le même modèle de politique DM :
+ Tous les canaux partagent le même modèle de politique de messages directs :
```json5
{
@@ -122,7 +138,7 @@ Lorsque la validation échoue :
- Définissez le modèle principal et des replis facultatifs :
+ Définissez le modèle principal et les secours facultatifs :
```json5
{
@@ -141,30 +157,30 @@ Lorsque la validation échoue :
}
```
- - `agents.defaults.models` définit le catalogue de modèles et agit comme liste d'autorisation pour `/model`.
+ - `agents.defaults.models` définit le catalogue de modèles et sert de liste d’autorisation pour `/model`.
- Les références de modèle utilisent le format `provider/model` (par exemple `anthropic/claude-opus-4-6`).
- - `agents.defaults.imageMaxDimensionPx` contrôle le redimensionnement des images dans les transcriptions/outils (valeur par défaut `1200`) ; des valeurs plus faibles réduisent généralement l'utilisation de jetons de vision lors d'exécutions riches en captures d'écran.
- - Voir [CLI Models](/concepts/models) pour changer de modèle dans le chat et [Bascule de modèle](/concepts/model-failover) pour le comportement de rotation d'authentification et de repli.
- - Pour les fournisseurs personnalisés/autohébergés, voir [Fournisseurs personnalisés](/gateway/configuration-reference#custom-providers-and-base-urls) dans la référence.
+ - `agents.defaults.imageMaxDimensionPx` contrôle la réduction d’échelle des images de transcription/d’outils (valeur par défaut `1200`) ; des valeurs plus faibles réduisent généralement l’utilisation des jetons de vision lors d’exécutions riches en captures d’écran.
+ - Consultez [Models CLI](/fr/concepts/models) pour changer de modèle dans la discussion et [Model Failover](/fr/concepts/model-failover) pour la rotation de l’authentification et le comportement de repli.
+ - Pour les fournisseurs personnalisés/autohébergés, consultez [Custom providers](/fr/gateway/configuration-reference#custom-providers-and-base-urls) dans la référence.
- L'accès DM est contrôlé par canal via `dmPolicy` :
+ L’accès aux messages directs est contrôlé par canal via `dmPolicy` :
- - `"pairing"` (par défaut) : les expéditeurs inconnus reçoivent un code de jumelage à usage unique à approuver
- - `"allowlist"` : seuls les expéditeurs présents dans `allowFrom` (ou le magasin d'autorisations de jumelage)
- - `"open"` : autoriser tous les DMs entrants (nécessite `allowFrom: ["*"]`)
- - `"disabled"` : ignorer tous les DMs
+ - `"pairing"` (par défaut) : les expéditeurs inconnus reçoivent un code d’appairage à usage unique à approuver
+ - `"allowlist"` : seuls les expéditeurs présents dans `allowFrom` (ou dans le magasin d’autorisations appairé)
+ - `"open"` : autorise tous les messages directs entrants (nécessite `allowFrom: ["*"]`)
+ - `"disabled"` : ignore tous les messages directs
- Pour les groupes, utilisez `groupPolicy` + `groupAllowFrom` ou les listes d'autorisation spécifiques au canal.
+ Pour les groupes, utilisez `groupPolicy` + `groupAllowFrom` ou des listes d’autorisation spécifiques au canal.
- Voir la [référence complète](/gateway/configuration-reference#dm-and-group-access) pour les détails par canal.
+ Consultez la [référence complète](/fr/gateway/configuration-reference#dm-and-group-access) pour les détails par canal.
-
- Les messages de groupe nécessitent par défaut une **mention obligatoire**. Configurez des motifs par agent :
+
+ Les messages de groupe exigent par défaut **une mention obligatoire**. Configurez les motifs par agent :
```json5
{
@@ -186,14 +202,15 @@ Lorsque la validation échoue :
}
```
- - **Mentions de métadonnées** : @mentions natives (WhatsApp tap-to-mention, Telegram @bot, etc.)
+ - **Mentions de métadonnées** : mentions natives avec @ (WhatsApp appuyer pour mentionner, Telegram @bot, etc.)
- **Motifs textuels** : motifs regex sûrs dans `mentionPatterns`
- - Voir la [référence complète](/gateway/configuration-reference#group-chat-mention-gating) pour les remplacements par canal et le mode d'auto-chat.
+ - Consultez la [référence complète](/fr/gateway/configuration-reference#group-chat-mention-gating) pour les remplacements par canal et le mode self-chat.
- Utilisez `agents.defaults.skills` comme base partagée, puis remplacez-la pour des agents spécifiques avec `agents.list[].skills` :
+ Utilisez `agents.defaults.skills` pour une base commune, puis remplacez des
+ agents spécifiques avec `agents.list[].skills` :
```json5
{
@@ -210,15 +227,16 @@ Lorsque la validation échoue :
}
```
- - Omettez `agents.defaults.skills` pour autoriser tous les Skills par défaut.
+ - Omettez `agents.defaults.skills` pour autoriser les Skills sans restriction par défaut.
- Omettez `agents.list[].skills` pour hériter des valeurs par défaut.
- - Définissez `agents.list[].skills: []` pour n'autoriser aucun Skill.
- - Voir [Skills](/tools/skills), [Configuration des Skills](/tools/skills-config) et la [Référence de configuration](/gateway/configuration-reference#agentsdefaultsskills).
+ - Définissez `agents.list[].skills: []` pour n’avoir aucun Skills.
+ - Consultez [Skills](/fr/tools/skills), [Configuration de Skills](/fr/tools/skills-config), et
+ la [Référence de configuration](/fr/gateway/configuration-reference#agentsdefaultsskills).
-
- Contrôlez à quel point la gateway redémarre agressivement les canaux qui semblent inactifs :
+
+ Contrôlez l’agressivité avec laquelle la gateway redémarre les canaux qui semblent inactifs :
```json5
{
@@ -240,15 +258,15 @@ Lorsque la validation échoue :
}
```
- - Définissez `gateway.channelHealthCheckMinutes: 0` pour désactiver globalement les redémarrages du moniteur d'état.
- - `channelStaleEventThresholdMinutes` doit être supérieur ou égal à l'intervalle de vérification.
- - Utilisez `channels..healthMonitor.enabled` ou `channels..accounts..healthMonitor.enabled` pour désactiver les redémarrages automatiques pour un canal ou un compte sans désactiver le moniteur global.
- - Voir [Vérifications d'état](/gateway/health) pour le débogage opérationnel et la [référence complète](/gateway/configuration-reference#gateway) pour tous les champs.
+ - Définissez `gateway.channelHealthCheckMinutes: 0` pour désactiver globalement les redémarrages de surveillance de l’état.
+ - `channelStaleEventThresholdMinutes` doit être supérieur ou égal à l’intervalle de vérification.
+ - Utilisez `channels..healthMonitor.enabled` ou `channels..accounts..healthMonitor.enabled` pour désactiver les redémarrages automatiques pour un canal ou un compte sans désactiver la surveillance globale.
+ - Consultez [Health Checks](/fr/gateway/health) pour le débogage opérationnel et la [référence complète](/fr/gateway/configuration-reference#gateway) pour tous les champs.
- Les sessions contrôlent la continuité et l'isolation des conversations :
+ Les sessions contrôlent la continuité et l’isolation des conversations :
```json5
{
@@ -268,15 +286,15 @@ Lorsque la validation échoue :
}
```
- - `dmScope`: `main` (partagé) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
- - `threadBindings`: valeurs par défaut globales pour le routage de sessions liées à un fil (Discord prend en charge `/focus`, `/unfocus`, `/agents`, `/session idle` et `/session max-age`).
- - Voir [Gestion des sessions](/concepts/session) pour la portée, les liens d'identité et la politique d'envoi.
- - Voir la [référence complète](/gateway/configuration-reference#session) pour tous les champs.
+ - `dmScope` : `main` (partagé) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
+ - `threadBindings` : valeurs par défaut globales pour le routage des sessions liées à des fils (Discord prend en charge `/focus`, `/unfocus`, `/agents`, `/session idle`, et `/session max-age`).
+ - Consultez [Session Management](/fr/concepts/session) pour le cadrage, les liens d’identité et la politique d’envoi.
+ - Consultez la [référence complète](/fr/gateway/configuration-reference#session) pour tous les champs.
-
- Exécutez des sessions d'agent dans des conteneurs Docker isolés :
+
+ Exécutez les sessions d’agent dans des conteneurs Docker isolés :
```json5
{
@@ -291,16 +309,16 @@ Lorsque la validation échoue :
}
```
- Construisez d'abord l'image : `scripts/sandbox-setup.sh`
+ Construisez d’abord l’image : `scripts/sandbox-setup.sh`
- Voir [Sandboxing](/gateway/sandboxing) pour le guide complet et la [référence complète](/gateway/configuration-reference#agentsdefaultssandbox) pour toutes les options.
+ Consultez [Sandboxing](/fr/gateway/sandboxing) pour le guide complet et la [référence complète](/fr/gateway/configuration-reference#agentsdefaultssandbox) pour toutes les options.
-
- Le push adossé au relais est configuré dans `openclaw.json`.
+
+ Le push via relais se configure dans `openclaw.json`.
- Définissez ceci dans la configuration gateway :
+ Définissez ceci dans la configuration de la gateway :
```json5
{
@@ -309,7 +327,7 @@ Lorsque la validation échoue :
apns: {
relay: {
baseUrl: "https://relay.example.com",
- // Facultatif. Valeur par défaut : 10000
+ // Optional. Default: 10000
timeoutMs: 10000,
},
},
@@ -326,35 +344,35 @@ Lorsque la validation échoue :
Ce que cela fait :
- - Permet à la gateway d'envoyer `push.test`, des nudges de réveil et des réveils de reconnexion via le relais externe.
- - Utilise une autorisation d'envoi limitée à l'enregistrement transmise par l'application iOS jumelée. La gateway n'a pas besoin d'un jeton de relais déployé à l'échelle de l'installation.
- - Lie chaque enregistrement adossé au relais à l'identité gateway avec laquelle l'application iOS a été jumelée, afin qu'une autre gateway ne puisse pas réutiliser l'enregistrement stocké.
- - Garde les builds iOS locaux/manuels sur APNs direct. Les envois adossés au relais ne s'appliquent qu'aux builds officiels distribués qui se sont enregistrés via le relais.
- - Doit correspondre à l'URL de base du relais intégrée dans le build iOS officiel/TestFlight afin que le trafic d'enregistrement et d'envoi atteigne le même déploiement de relais.
+ - Permet à la gateway d’envoyer `push.test`, les impulsions de réveil et les réveils de reconnexion via le relais externe.
+ - Utilise une autorisation d’envoi limitée à l’inscription, transmise par l’app iOS appairée. La gateway n’a pas besoin d’un jeton de relais valable pour tout le déploiement.
+ - Lie chaque inscription via relais à l’identité de gateway avec laquelle l’app iOS a été appairée, de sorte qu’une autre gateway ne puisse pas réutiliser l’inscription stockée.
+ - Conserve les builds iOS locaux/manuels en APNs direct. Les envois via relais s’appliquent uniquement aux builds distribués officiellement qui se sont inscrits via le relais.
+ - Doit correspondre à l’URL de base du relais intégrée dans le build iOS officiel/TestFlight, afin que l’inscription et le trafic d’envoi atteignent le même déploiement de relais.
Flux de bout en bout :
1. Installez un build iOS officiel/TestFlight compilé avec la même URL de base de relais.
2. Configurez `gateway.push.apns.relay.baseUrl` sur la gateway.
- 3. Jumelez l'application iOS à la gateway et laissez les sessions node et operator se connecter.
- 4. L'application iOS récupère l'identité de la gateway, s'enregistre auprès du relais à l'aide d'App Attest et du reçu de l'application, puis publie la charge utile `push.apns.register` adossée au relais à la gateway jumelée.
- 5. La gateway stocke le handle de relais et l'autorisation d'envoi, puis les utilise pour `push.test`, les nudges de réveil et les réveils de reconnexion.
+ 3. Appairez l’app iOS à la gateway et laissez les sessions de nœud et d’opérateur se connecter.
+ 4. L’app iOS récupère l’identité de la gateway, s’inscrit auprès du relais à l’aide d’App Attest et du reçu de l’app, puis publie la charge utile `push.apns.register` via relais à la gateway appairée.
+ 5. La gateway stocke le handle de relais et l’autorisation d’envoi, puis les utilise pour `push.test`, les impulsions de réveil et les réveils de reconnexion.
Remarques opérationnelles :
- - Si vous basculez l'application iOS vers une autre gateway, reconnectez l'application afin qu'elle puisse publier un nouvel enregistrement de relais lié à cette gateway.
- - Si vous publiez un nouveau build iOS pointant vers un autre déploiement de relais, l'application actualise son enregistrement de relais mis en cache au lieu de réutiliser l'ancienne origine de relais.
+ - Si vous basculez l’app iOS vers une autre gateway, reconnectez l’app afin qu’elle puisse publier une nouvelle inscription de relais liée à cette gateway.
+ - Si vous publiez un nouveau build iOS pointant vers un déploiement de relais différent, l’app actualise son inscription de relais en cache au lieu de réutiliser l’ancienne origine de relais.
Remarque de compatibilité :
- - `OPENCLAW_APNS_RELAY_BASE_URL` et `OPENCLAW_APNS_RELAY_TIMEOUT_MS` fonctionnent toujours comme remplacements d'environnement temporaires.
- - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` reste une solution de développement limitée à local loopback ; ne conservez pas d'URL de relais HTTP dans la configuration.
+ - `OPENCLAW_APNS_RELAY_BASE_URL` et `OPENCLAW_APNS_RELAY_TIMEOUT_MS` fonctionnent toujours comme remplacements temporaires via variables d’environnement.
+ - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` reste une échappatoire de développement limitée au loopback ; ne conservez pas d’URL de relais HTTP dans la configuration.
- Voir [Application iOS](/platforms/ios#relay-backed-push-for-official-builds) pour le flux de bout en bout et [Flux d'authentification et de confiance](/platforms/ios#authentication-and-trust-flow) pour le modèle de sécurité du relais.
+ Consultez [App iOS](/fr/platforms/ios#relay-backed-push-for-official-builds) pour le flux de bout en bout et [Flux d’authentification et de confiance](/fr/platforms/ios#authentication-and-trust-flow) pour le modèle de sécurité du relais.
-
+
```json5
{
agents: {
@@ -368,10 +386,10 @@ Lorsque la validation échoue :
}
```
- - `every`: chaîne de durée (`30m`, `2h`). Définissez `0m` pour désactiver.
- - `target`: `last` | `none` | `` (par exemple `discord`, `matrix`, `telegram` ou `whatsapp`)
- - `directPolicy`: `allow` (par défaut) ou `block` pour les cibles de heartbeat de type DM
- - Voir [Heartbeat](/gateway/heartbeat) pour le guide complet.
+ - `every` : chaîne de durée (`30m`, `2h`). Définissez `0m` pour désactiver.
+ - `target` : `last` | `none` | `` (par exemple `discord`, `matrix`, `telegram`, ou `whatsapp`)
+ - `directPolicy` : `allow` (par défaut) ou `block` pour les cibles de heartbeat de type message direct
+ - Consultez [Heartbeat](/fr/gateway/heartbeat) pour le guide complet.
@@ -390,14 +408,14 @@ Lorsque la validation échoue :
}
```
- - `sessionRetention`: élaguer les sessions d'exécution isolées terminées de `sessions.json` (valeur par défaut `24h` ; définissez `false` pour désactiver).
- - `runLog`: élaguer `cron/runs/.jsonl` selon la taille et le nombre de lignes conservées.
- - Voir [Tâches cron](/automation/cron-jobs) pour la vue d'ensemble de la fonctionnalité et des exemples CLI.
+ - `sessionRetention` : supprime les sessions d’exécution isolées terminées de `sessions.json` (par défaut `24h` ; définissez `false` pour désactiver).
+ - `runLog` : nettoie `cron/runs/.jsonl` selon la taille et le nombre de lignes conservées.
+ - Consultez [Cron jobs](/fr/automation/cron-jobs) pour la vue d’ensemble de la fonctionnalité et des exemples de CLI.
- Activez les points de terminaison webhook HTTP sur la gateway :
+ Activez les points de terminaison de webhook HTTP sur la Gateway :
```json5
{
@@ -421,15 +439,15 @@ Lorsque la validation échoue :
```
Remarque de sécurité :
- - Traitez tout contenu de charge utile hook/webhook comme une entrée non fiable.
- - Utilisez un `hooks.token` dédié ; ne réutilisez pas le jeton partagé de la gateway.
- - L'authentification hook se fait uniquement par en-tête (`Authorization: Bearer ...` ou `x-openclaw-token`) ; les jetons dans la query string sont rejetés.
- - `hooks.path` ne peut pas être `/` ; gardez l'entrée webhook sur un sous-chemin dédié tel que `/hooks`.
- - Gardez désactivés les drapeaux de contournement de contenu non sûr (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`) sauf pour un débogage strictement ciblé.
- - Si vous activez `hooks.allowRequestSessionKey`, définissez également `hooks.allowedSessionKeyPrefixes` pour limiter les clés de session choisies par l'appelant.
- - Pour les agents pilotés par hooks, privilégiez des niveaux de modèle modernes robustes et une politique d'outils stricte (par exemple messagerie uniquement, plus sandboxing lorsque possible).
+ - Traitez tout le contenu des charges utiles hook/webhook comme une entrée non fiable.
+ - Utilisez un `hooks.token` dédié ; ne réutilisez pas le jeton partagé de la Gateway.
+ - L’authentification des hooks se fait uniquement par en-tête (`Authorization: Bearer ...` ou `x-openclaw-token`) ; les jetons dans la chaîne de requête sont rejetés.
+ - `hooks.path` ne peut pas être `/` ; conservez l’entrée webhook sur un sous-chemin dédié tel que `/hooks`.
+ - Gardez désactivés les indicateurs de contournement de contenu non sûr (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`) sauf pour un débogage strictement ciblé.
+ - Si vous activez `hooks.allowRequestSessionKey`, définissez également `hooks.allowedSessionKeyPrefixes` pour borner les clés de session sélectionnées par l’appelant.
+ - Pour les agents pilotés par hook, privilégiez des niveaux de modèle modernes et robustes ainsi qu’une politique d’outils stricte (par exemple messagerie uniquement plus sandboxing lorsque possible).
- Voir la [référence complète](/gateway/configuration-reference#hooks) pour toutes les options de mapping et l'intégration Gmail.
+ Consultez la [référence complète](/fr/gateway/configuration-reference#hooks) pour toutes les options de mappage et l’intégration Gmail.
@@ -451,7 +469,7 @@ Lorsque la validation échoue :
}
```
- Voir [Multi-Agent](/concepts/multi-agent) et la [référence complète](/gateway/configuration-reference#multi-agent-routing) pour les règles de liaison et les profils d'accès par agent.
+ Consultez [Multi-Agent](/fr/concepts/multi-agent) et la [référence complète](/fr/gateway/configuration-reference#multi-agent-routing) pour les règles de liaison et les profils d’accès par agent.
@@ -469,28 +487,28 @@ Lorsque la validation échoue :
}
```
- - **Fichier unique** : remplace l'objet conteneur
- - **Tableau de fichiers** : fusion profonde dans l'ordre (les derniers gagnent)
- - **Clés sœurs** : fusionnées après les inclusions (remplacent les valeurs incluses)
- - **Inclusions imbriquées** : prises en charge jusqu'à 10 niveaux de profondeur
+ - **Fichier unique** : remplace l’objet conteneur
+ - **Tableau de fichiers** : fusion profonde dans l’ordre (le dernier l’emporte)
+ - **Clés voisines** : fusionnées après les inclusions (remplacent les valeurs incluses)
+ - **Inclusions imbriquées** : prises en charge jusqu’à 10 niveaux de profondeur
- **Chemins relatifs** : résolus par rapport au fichier incluant
- - **Gestion des erreurs** : erreurs claires pour les fichiers manquants, erreurs d'analyse et inclusions circulaires
+ - **Gestion des erreurs** : erreurs claires pour les fichiers manquants, les erreurs d’analyse et les inclusions circulaires
## Rechargement à chaud de la configuration
-La gateway surveille `~/.openclaw/openclaw.json` et applique les changements automatiquement — aucun redémarrage manuel n'est nécessaire pour la plupart des paramètres.
+La Gateway surveille `~/.openclaw/openclaw.json` et applique automatiquement les modifications — aucun redémarrage manuel n’est nécessaire pour la plupart des paramètres.
### Modes de rechargement
| Mode | Comportement |
| ---------------------- | --------------------------------------------------------------------------------------- |
-| **`hybrid`** (par défaut) | Applique immédiatement à chaud les changements sûrs. Redémarre automatiquement pour les changements critiques. |
-| **`hot`** | Applique uniquement à chaud les changements sûrs. Consigne un avertissement lorsqu'un redémarrage est nécessaire — à vous de le gérer. |
-| **`restart`** | Redémarre la gateway à chaque changement de configuration, sûr ou non. |
-| **`off`** | Désactive la surveillance de fichier. Les changements prennent effet au prochain redémarrage manuel. |
+| **`hybrid`** (par défaut) | Applique à chaud les modifications sûres instantanément. Redémarre automatiquement pour les modifications critiques. |
+| **`hot`** | Applique à chaud uniquement les modifications sûres. Journalise un avertissement lorsqu’un redémarrage est nécessaire — à vous de le gérer. |
+| **`restart`** | Redémarre la Gateway à chaque modification de la configuration, sûre ou non. |
+| **`off`** | Désactive la surveillance du fichier. Les modifications prennent effet au prochain redémarrage manuel. |
```json5
{
@@ -500,44 +518,46 @@ La gateway surveille `~/.openclaw/openclaw.json` et applique les changements aut
}
```
-### Ce qui s'applique à chaud vs ce qui nécessite un redémarrage
+### Ce qui s’applique à chaud et ce qui nécessite un redémarrage
-La plupart des champs s'appliquent à chaud sans interruption. En mode `hybrid`, les changements nécessitant un redémarrage sont pris en charge automatiquement.
+La plupart des champs s’appliquent à chaud sans interruption. En mode `hybrid`, les modifications nécessitant un redémarrage sont gérées automatiquement.
| Catégorie | Champs | Redémarrage nécessaire ? |
-| ------------------- | -------------------------------------------------------------------- | ------------------------ |
-| Canaux | `channels.*`, `web` (WhatsApp) — tous les canaux intégrés et d'extension | Non |
-| Agent et modèles | `agent`, `agents`, `models`, `routing` | Non |
-| Automatisation | `hooks`, `cron`, `agent.heartbeat` | Non |
-| Sessions et messages | `session`, `messages` | Non |
-| Outils et médias | `tools`, `browser`, `skills`, `audio`, `talk` | Non |
-| UI et divers | `ui`, `logging`, `identity`, `bindings` | Non |
-| Serveur gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Oui** |
-| Infrastructure | `discovery`, `canvasHost`, `plugins` | **Oui** |
+| ------------------- | -------------------------------------------------------------------- | --------------- |
+| Canaux | `channels.*`, `web` (WhatsApp) — tous les canaux intégrés et d’extension | Non |
+| Agent et modèles | `agent`, `agents`, `models`, `routing` | Non |
+| Automatisation | `hooks`, `cron`, `agent.heartbeat` | Non |
+| Sessions et messages | `session`, `messages` | Non |
+| Outils et médias | `tools`, `browser`, `skills`, `audio`, `talk` | Non |
+| Interface utilisateur et divers | `ui`, `logging`, `identity`, `bindings` | Non |
+| Serveur Gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Oui** |
+| Infrastructure | `discovery`, `canvasHost`, `plugins` | **Oui** |
-`gateway.reload` et `gateway.remote` sont des exceptions — leur modification **ne** déclenche **pas** de redémarrage.
+`gateway.reload` et `gateway.remote` sont des exceptions — les modifier **ne** déclenche **pas** de redémarrage.
## RPC de configuration (mises à jour programmatiques)
-Les RPC d'écriture du plan de contrôle (`config.apply`, `config.patch`, `update.run`) sont limités à **3 requêtes par 60 secondes** par `deviceId+clientIp`. Lorsqu'une limite est atteinte, le RPC renvoie `UNAVAILABLE` avec `retryAfterMs`.
+Les RPC d’écriture du plan de contrôle (`config.apply`, `config.patch`, `update.run`) sont limités à **3 requêtes par 60 secondes** par `deviceId+clientIp`. En cas de limitation, le RPC renvoie `UNAVAILABLE` avec `retryAfterMs`.
Flux sûr/par défaut :
-- `config.schema.lookup` : inspecter un sous-arbre de configuration limité à un chemin avec un nœud de schéma superficiel, les métadonnées d'indication associées et les résumés immédiats des enfants
-- `config.get` : récupérer l'instantané actuel + le hash
-- `config.patch` : chemin préféré pour les mises à jour partielles
-- `config.apply` : remplacement de la configuration complète uniquement
-- `update.run` : auto-mise à jour + redémarrage explicites
+- `config.schema.lookup` : inspecter un sous-arbre de configuration limité à un chemin avec un nœud de schéma superficiel,
+ les métadonnées d’indication correspondantes et les résumés immédiats des enfants
+- `config.get` : récupérer l’instantané actuel + le hash
+- `config.patch` : chemin privilégié pour les mises à jour partielles
+- `config.apply` : remplacement complet de la configuration uniquement
+- `update.run` : auto-mise à jour explicite + redémarrage
-Lorsque vous ne remplacez pas la configuration entière, préférez `config.schema.lookup` puis `config.patch`.
+Lorsque vous ne remplacez pas l’intégralité de la configuration, préférez `config.schema.lookup`
+puis `config.patch`.
- Valide + écrit la configuration complète et redémarre la gateway en une seule étape.
+ Valide + écrit la configuration complète et redémarre la Gateway en une seule étape.
`config.apply` remplace la **configuration entière**. Utilisez `config.patch` pour les mises à jour partielles, ou `openclaw config set` pour des clés uniques.
@@ -545,13 +565,13 @@ Lorsque vous ne remplacez pas la configuration entière, préférez `config.sche
Paramètres :
- - `raw` (chaîne) — charge utile JSON5 pour la configuration entière
+ - `raw` (chaîne) — charge utile JSON5 pour l’intégralité de la configuration
- `baseHash` (facultatif) — hash de configuration provenant de `config.get` (requis lorsque la configuration existe)
- `sessionKey` (facultatif) — clé de session pour le ping de réveil après redémarrage
- `note` (facultatif) — note pour le sentinelle de redémarrage
- `restartDelayMs` (facultatif) — délai avant redémarrage (par défaut 2000)
- Les demandes de redémarrage sont coalescentes lorsqu'un redémarrage est déjà en attente/en cours, et un cooldown de 30 secondes s'applique entre les cycles de redémarrage.
+ Les demandes de redémarrage sont regroupées lorsqu’un redémarrage est déjà en attente/en cours, et un délai de récupération de 30 secondes s’applique entre les cycles de redémarrage.
```bash
openclaw gateway call config.get --params '{}' # capture payload.hash
@@ -577,7 +597,7 @@ Lorsque vous ne remplacez pas la configuration entière, préférez `config.sche
- `baseHash` (requis) — hash de configuration provenant de `config.get`
- `sessionKey`, `note`, `restartDelayMs` — identiques à `config.apply`
- Le comportement de redémarrage correspond à celui de `config.apply` : redémarrages en attente coalescents plus un cooldown de 30 secondes entre les cycles de redémarrage.
+ Le comportement de redémarrage correspond à `config.apply` : regroupement des redémarrages en attente plus un délai de récupération de 30 secondes entre les cycles de redémarrage.
```bash
openclaw gateway call config.patch --params '{
@@ -589,14 +609,14 @@ Lorsque vous ne remplacez pas la configuration entière, préférez `config.sche
-## Variables d'environnement
+## Variables d’environnement
-OpenClaw lit les variables d'environnement depuis le processus parent ainsi que :
+OpenClaw lit les variables d’environnement du processus parent ainsi que :
-- `.env` depuis le répertoire de travail actuel (s'il existe)
-- `~/.openclaw/.env` (repli global)
+- `.env` depuis le répertoire de travail actuel (si présent)
+- `~/.openclaw/.env` (solution de secours globale)
-Aucun des deux fichiers ne remplace les variables d'environnement déjà existantes. Vous pouvez également définir des variables inline dans la configuration :
+Aucun de ces fichiers ne remplace les variables d’environnement existantes. Vous pouvez également définir des variables d’environnement en ligne dans la configuration :
```json5
{
@@ -607,8 +627,8 @@ Aucun des deux fichiers ne remplace les variables d'environnement déjà existan
}
```
-
- S'il est activé et que les clés attendues ne sont pas définies, OpenClaw exécute votre shell de connexion et importe uniquement les clés manquantes :
+
+ Si cette option est activée et que les clés attendues ne sont pas définies, OpenClaw exécute votre shell de connexion et importe uniquement les clés manquantes :
```json5
{
@@ -618,11 +638,11 @@ Aucun des deux fichiers ne remplace les variables d'environnement déjà existan
}
```
-Équivalent variable d'environnement : `OPENCLAW_LOAD_SHELL_ENV=1`
+Équivalent en variable d’environnement : `OPENCLAW_LOAD_SHELL_ENV=1`
-
- Référencez des variables d'environnement dans n'importe quelle valeur de chaîne de configuration avec `${VAR_NAME}` :
+
+ Référencez des variables d’environnement dans toute valeur de chaîne de configuration avec `${VAR_NAME}` :
```json5
{
@@ -633,15 +653,15 @@ Aucun des deux fichiers ne remplace les variables d'environnement déjà existan
Règles :
-- Seuls les noms en majuscules sont reconnus : `[A-Z_][A-Z0-9_]*`
+- Seuls les noms en majuscules sont pris en charge : `[A-Z_][A-Z0-9_]*`
- Les variables manquantes/vides provoquent une erreur au chargement
- Échappez avec `$${VAR}` pour une sortie littérale
- Fonctionne dans les fichiers `$include`
-- Substitution inline : `"${BASE}/v1"` → `"https://api.example.com/v1"`
+- Substitution en ligne : `"${BASE}/v1"` → `"https://api.example.com/v1"`
-
+
Pour les champs qui prennent en charge les objets SecretRef, vous pouvez utiliser :
```json5
@@ -674,16 +694,16 @@ Règles :
}
```
-Les détails de SecretRef (y compris `secrets.providers` pour `env`/`file`/`exec`) se trouvent dans [Gestion des secrets](/gateway/secrets).
-Les chemins d'identifiants pris en charge sont listés dans [Surface d'identifiants SecretRef](/reference/secretref-credential-surface).
+Les détails de SecretRef (y compris `secrets.providers` pour `env`/`file`/`exec`) se trouvent dans [Gestion des secrets](/fr/gateway/secrets).
+Les chemins d’identifiants pris en charge sont répertoriés dans [Surface des identifiants SecretRef](/fr/reference/secretref-credential-surface).
-Voir [Environnement](/help/environment) pour la priorité complète et les sources.
+Consultez [Environnement](/fr/help/environment) pour la priorité complète et les sources.
## Référence complète
-Pour la référence complète champ par champ, voir **[Référence de configuration](/gateway/configuration-reference)**.
+Pour la référence complète champ par champ, consultez **[Référence de configuration](/fr/gateway/configuration-reference)**.
---
-_Lié : [Exemples de configuration](/gateway/configuration-examples) · [Référence de configuration](/gateway/configuration-reference) · [Doctor](/gateway/doctor)_
+_Associé : [Exemples de configuration](/fr/gateway/configuration-examples) · [Référence de configuration](/fr/gateway/configuration-reference) · [Doctor](/fr/gateway/doctor)_
diff --git a/docs/fr/plugins/memory-wiki.md b/docs/fr/plugins/memory-wiki.md
new file mode 100644
index 000000000..957b130ab
--- /dev/null
+++ b/docs/fr/plugins/memory-wiki.md
@@ -0,0 +1,364 @@
+---
+read_when:
+ - Vous voulez des connaissances persistantes au-delà de simples notes MEMORY.md
+ - Vous configurez le plugin groupé memory-wiki
+ - Vous voulez comprendre wiki_search, wiki_get ou le mode bridge
+summary: 'memory-wiki : coffre de connaissances compilé avec provenance, affirmations, tableaux de bord et mode bridge'
+title: Wiki mémoire
+x-i18n:
+ generated_at: "2026-04-08T06:01:13Z"
+ model: gpt-5.4
+ provider: openai
+ source_hash: b78dd6a4ef4451dae6b53197bf0c7c2a2ba846b08e4a3a93c1026366b1598d82
+ source_path: plugins/memory-wiki.md
+ workflow: 15
+---
+
+# Wiki mémoire
+
+`memory-wiki` est un plugin groupé qui transforme la mémoire durable en un
+coffre de connaissances compilé.
+
+Il **ne** remplace **pas** le plugin de mémoire actif. Le plugin de mémoire actif
+reste responsable du rappel, de la promotion, de l’indexation et du dreaming. `memory-wiki`
+se place à côté de lui et compile les connaissances durables dans un wiki navigable avec des pages déterministes,
+des affirmations structurées, de la provenance, des tableaux de bord et des condensés lisibles par machine.
+
+Utilisez-le lorsque vous voulez que la mémoire se comporte davantage comme une couche de connaissances maintenue
+et moins comme un empilement de fichiers Markdown.
+
+## Ce qu’il ajoute
+
+- Un coffre wiki dédié avec une disposition de pages déterministe
+- Des métadonnées structurées d’affirmations et de preuves, pas seulement du texte
+- Une provenance, une confiance, des contradictions et des questions ouvertes au niveau des pages
+- Des condensés compilés pour les consommateurs agent/runtime
+- Des outils natifs au wiki pour search/get/apply/lint
+- Un mode bridge facultatif qui importe les artefacts publics du plugin de mémoire actif
+- Un mode de rendu compatible Obsidian et une intégration CLI facultatifs
+
+## Comment il s’intègre à la mémoire
+
+Voyez la séparation ainsi :
+
+| Couche | Responsable de |
+| ------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
+| Plugin de mémoire actif (`memory-core`, QMD, Honcho, etc.) | Rappel, recherche sémantique, promotion, dreaming, runtime de mémoire |
+| `memory-wiki` | Pages wiki compilées, synthèses riches en provenance, tableaux de bord, search/get/apply spécifiques au wiki |
+
+Si le plugin de mémoire actif expose des artefacts de rappel partagés, OpenClaw peut rechercher
+dans les deux couches en un seul passage avec `memory_search corpus=all`.
+
+Lorsque vous avez besoin d’un classement spécifique au wiki, de provenance ou d’un accès direct aux pages, utilisez plutôt les
+outils natifs au wiki.
+
+## Modes de coffre
+
+`memory-wiki` prend en charge trois modes de coffre :
+
+### `isolated`
+
+Propre coffre, propres sources, sans dépendance à `memory-core`.
+
+Utilisez-le lorsque vous voulez que le wiki soit son propre magasin de connaissances organisé.
+
+### `bridge`
+
+Lit les artefacts mémoire publics et les événements de mémoire du plugin de mémoire actif
+via des points d’intégration publics du plugin SDK.
+
+Utilisez-le lorsque vous voulez que le wiki compile et organise les
+artefacts exportés du plugin de mémoire sans accéder aux composants internes privés du plugin.
+
+Le mode bridge peut indexer :
+
+- les artefacts mémoire exportés
+- les rapports de rêve
+- les notes quotidiennes
+- les fichiers racine de la mémoire
+- les journaux d’événements mémoire
+
+### `unsafe-local`
+
+Échappatoire explicite sur la même machine pour les chemins privés locaux.
+
+Ce mode est volontairement expérimental et non portable. Utilisez-le uniquement si vous
+comprenez la frontière de confiance et avez précisément besoin d’un accès au système de fichiers local que
+le mode bridge ne peut pas fournir.
+
+## Structure du coffre
+
+Le plugin initialise un coffre comme ceci :
+
+```text
+/
+ AGENTS.md
+ WIKI.md
+ index.md
+ inbox.md
+ entities/
+ concepts/
+ syntheses/
+ sources/
+ reports/
+ _attachments/
+ _views/
+ .openclaw-wiki/
+```
+
+Le contenu géré reste à l’intérieur de blocs générés. Les blocs de notes humains sont préservés.
+
+Les principaux groupes de pages sont :
+
+- `sources/` pour les matériaux bruts importés et les pages adossées au bridge
+- `entities/` pour les éléments durables, personnes, systèmes, projets et objets
+- `concepts/` pour les idées, abstractions, modèles et politiques
+- `syntheses/` pour les résumés compilés et les consolidations maintenues
+- `reports/` pour les tableaux de bord générés
+
+## Affirmations structurées et preuves
+
+Les pages peuvent contenir des `claims` dans le frontmatter structuré, pas seulement du texte libre.
+
+Chaque affirmation peut inclure :
+
+- `id`
+- `text`
+- `status`
+- `confidence`
+- `evidence[]`
+- `updatedAt`
+
+Les entrées de preuve peuvent inclure :
+
+- `sourceId`
+- `path`
+- `lines`
+- `weight`
+- `note`
+- `updatedAt`
+
+C’est ce qui fait que le wiki agit davantage comme une couche de croyances que comme un simple
+dépôt de notes passif. Les affirmations peuvent être suivies, évaluées, contestées et résolues à partir des sources.
+
+## Pipeline de compilation
+
+L’étape de compilation lit les pages du wiki, normalise les résumés et émet des
+artefacts stables orientés machine sous :
+
+- `.openclaw-wiki/cache/agent-digest.json`
+- `.openclaw-wiki/cache/claims.jsonl`
+
+Ces condensés existent pour que les agents et le code runtime n’aient pas à analyser les
+pages Markdown.
+
+La sortie compilée alimente aussi :
+
+- l’indexation wiki de premier passage pour les flux search/get
+- la recherche de l’identifiant d’affirmation jusqu’à la page propriétaire
+- des compléments d’invite compacts
+- la génération de rapports/tableaux de bord
+
+## Tableaux de bord et rapports de santé
+
+Lorsque `render.createDashboards` est activé, la compilation maintient des tableaux de bord sous
+`reports/`.
+
+Les rapports intégrés incluent :
+
+- `reports/open-questions.md`
+- `reports/contradictions.md`
+- `reports/low-confidence.md`
+- `reports/claim-health.md`
+- `reports/stale-pages.md`
+
+Ces rapports suivent des éléments comme :
+
+- les groupes de notes de contradiction
+- les groupes d’affirmations concurrentes
+- les affirmations sans preuve structurée
+- les pages et affirmations à faible confiance
+- l’ancienneté obsolète ou inconnue
+- les pages avec des questions non résolues
+
+## Recherche et récupération
+
+`memory-wiki` prend en charge deux backends de recherche :
+
+- `shared` : utiliser le flux de recherche mémoire partagé lorsqu’il est disponible
+- `local` : rechercher dans le wiki localement
+
+Il prend également en charge trois corpus :
+
+- `wiki`
+- `memory`
+- `all`
+
+Comportement important :
+
+- `wiki_search` et `wiki_get` utilisent les condensés compilés comme premier passage lorsque c’est possible
+- les identifiants d’affirmation peuvent être résolus jusqu’à la page propriétaire
+- les affirmations contestées/obsolètes/récentes influencent le classement
+- les libellés de provenance peuvent être conservés dans les résultats
+
+Règle pratique :
+
+- utilisez `memory_search corpus=all` pour un passage large de rappel
+- utilisez `wiki_search` + `wiki_get` lorsque le classement spécifique au wiki,
+ la provenance ou la structure de croyance au niveau de la page vous importent
+
+## Outils d’agent
+
+Le plugin enregistre ces outils :
+
+- `wiki_status`
+- `wiki_search`
+- `wiki_get`
+- `wiki_apply`
+- `wiki_lint`
+
+Ce qu’ils font :
+
+- `wiki_status` : mode de coffre actuel, santé, disponibilité de la CLI Obsidian
+- `wiki_search` : rechercher dans les pages wiki et, si configuré, dans les corpus mémoire partagés
+- `wiki_get` : lire une page wiki par id/chemin ou revenir au corpus mémoire partagé
+- `wiki_apply` : mutations ciblées de synthèse/métadonnées sans chirurgie libre des pages
+- `wiki_lint` : vérifications structurelles, lacunes de provenance, contradictions, questions ouvertes
+
+Le plugin enregistre également un complément de corpus mémoire non exclusif, afin que
+`memory_search` et `memory_get` partagés puissent atteindre le wiki lorsque le plugin de mémoire actif
+prend en charge la sélection de corpus.
+
+## Comportement de l’invite et du contexte
+
+Lorsque `context.includeCompiledDigestPrompt` est activé, les sections d’invite mémoire
+ajoutent un instantané compilé compact depuis `agent-digest.json`.
+
+Cet instantané est volontairement petit et à fort signal :
+
+- pages principales uniquement
+- principales affirmations uniquement
+- nombre de contradictions
+- nombre de questions
+- qualificatifs de confiance/ancienneté
+
+Ceci est opt-in car cela modifie la forme de l’invite et est surtout utile pour les
+moteurs de contexte ou l’assemblage d’invites hérité qui consomme explicitement des compléments mémoire.
+
+## Configuration
+
+Placez la configuration sous `plugins.entries.memory-wiki.config` :
+
+```json5
+{
+ plugins: {
+ entries: {
+ "memory-wiki": {
+ enabled: true,
+ config: {
+ vaultMode: "isolated",
+ vault: {
+ path: "~/.openclaw/wiki/main",
+ renderMode: "obsidian",
+ },
+ obsidian: {
+ enabled: true,
+ useOfficialCli: true,
+ vaultName: "OpenClaw Wiki",
+ openAfterWrites: false,
+ },
+ bridge: {
+ enabled: false,
+ readMemoryArtifacts: true,
+ indexDreamReports: true,
+ indexDailyNotes: true,
+ indexMemoryRoot: true,
+ followMemoryEvents: true,
+ },
+ ingest: {
+ autoCompile: true,
+ maxConcurrentJobs: 1,
+ allowUrlIngest: true,
+ },
+ search: {
+ backend: "shared",
+ corpus: "wiki",
+ },
+ context: {
+ includeCompiledDigestPrompt: false,
+ },
+ render: {
+ preserveHumanBlocks: true,
+ createBacklinks: true,
+ createDashboards: true,
+ },
+ },
+ },
+ },
+ },
+}
+```
+
+Principaux paramètres :
+
+- `vaultMode` : `isolated`, `bridge`, `unsafe-local`
+- `vault.renderMode` : `native` ou `obsidian`
+- `bridge.readMemoryArtifacts` : importer les artefacts publics du plugin de mémoire actif
+- `bridge.followMemoryEvents` : inclure les journaux d’événements en mode bridge
+- `search.backend` : `shared` ou `local`
+- `search.corpus` : `wiki`, `memory` ou `all`
+- `context.includeCompiledDigestPrompt` : ajouter un instantané compact du condensé aux sections d’invite mémoire
+- `render.createBacklinks` : générer des blocs liés déterministes
+- `render.createDashboards` : générer des pages de tableau de bord
+
+## CLI
+
+`memory-wiki` expose également une interface CLI de premier niveau :
+
+```bash
+openclaw wiki status
+openclaw wiki doctor
+openclaw wiki init
+openclaw wiki ingest ./notes/alpha.md
+openclaw wiki compile
+openclaw wiki lint
+openclaw wiki search "alpha"
+openclaw wiki get entity.alpha
+openclaw wiki apply synthesis "Alpha Summary" --body "..." --source-id source.alpha
+openclaw wiki bridge import
+openclaw wiki obsidian status
+```
+
+Consultez [CLI : wiki](/cli/wiki) pour la référence complète des commandes.
+
+## Prise en charge d’Obsidian
+
+Lorsque `vault.renderMode` est `obsidian`, le plugin écrit du
+Markdown compatible Obsidian et peut éventuellement utiliser la CLI officielle `obsidian`.
+
+Les flux de travail pris en charge incluent :
+
+- la vérification d’état
+- la recherche dans le coffre
+- l’ouverture d’une page
+- l’invocation d’une commande Obsidian
+- l’accès direct à la note quotidienne
+
+Ceci est facultatif. Le wiki fonctionne toujours en mode natif sans Obsidian.
+
+## Flux de travail recommandé
+
+1. Conservez votre plugin de mémoire actif pour le rappel/la promotion/le dreaming.
+2. Activez `memory-wiki`.
+3. Commencez par le mode `isolated`, sauf si vous voulez explicitement le mode bridge.
+4. Utilisez `wiki_search` / `wiki_get` lorsque la provenance compte.
+5. Utilisez `wiki_apply` pour des synthèses ciblées ou des mises à jour de métadonnées.
+6. Exécutez `wiki_lint` après des changements significatifs.
+7. Activez les tableaux de bord si vous voulez une visibilité sur l’obsolescence/les contradictions.
+
+## Documentation associée
+
+- [Vue d’ensemble de la mémoire](/fr/concepts/memory)
+- [CLI : memory](/cli/memory)
+- [CLI : wiki](/cli/wiki)
+- [Vue d’ensemble du SDK de plugin](/fr/plugins/sdk-overview)
diff --git a/docs/fr/providers/glm.md b/docs/fr/providers/glm.md
index 20266246b..10b8e8cbe 100644
--- a/docs/fr/providers/glm.md
+++ b/docs/fr/providers/glm.md
@@ -1,14 +1,14 @@
---
read_when:
- - Vous souhaitez utiliser des modèles GLM dans OpenClaw
+ - Vous voulez des modèles GLM dans OpenClaw
- Vous avez besoin de la convention de nommage des modèles et de la configuration
-summary: Vue d’ensemble de la famille de modèles GLM + comment l’utiliser dans OpenClaw
+summary: Aperçu de la famille de modèles GLM + comment l’utiliser dans OpenClaw
title: Modèles GLM
x-i18n:
- generated_at: "2026-04-05T12:51:36Z"
+ generated_at: "2026-04-08T06:00:55Z"
model: gpt-5.4
provider: openai
- source_hash: 59622edab5094d991987f9788fbf08b33325e737e7ff88632b0c3ac89412d4c7
+ source_hash: 79a55acfa139847b4b85dbc09f1068cbd2febb1e49f984a23ea9e3b43bc910eb
source_path: providers/glm.md
workflow: 15
---
@@ -16,12 +16,12 @@ x-i18n:
# Modèles GLM
GLM est une **famille de modèles** (et non une entreprise) disponible via la plateforme Z.AI. Dans OpenClaw, les modèles GLM
-sont accessibles via le provider `zai` et des ID de modèle comme `zai/glm-5`.
+sont accessibles via le fournisseur `zai` et des identifiants de modèle comme `zai/glm-5`.
-## Configuration CLI
+## Configuration de la CLI
```bash
-# Configuration générique par clé API avec auto-détection du point de terminaison
+# Configuration générique de clé API avec détection automatique du point de terminaison
openclaw onboard --auth-choice zai-api-key
# Coding Plan Global, recommandé pour les utilisateurs de Coding Plan
@@ -42,17 +42,17 @@ openclaw onboard --auth-choice zai-cn
```json5
{
env: { ZAI_API_KEY: "sk-..." },
- agents: { defaults: { model: { primary: "zai/glm-5" } } },
+ agents: { defaults: { model: { primary: "zai/glm-5.1" } } },
}
```
`zai-api-key` permet à OpenClaw de détecter le point de terminaison Z.AI correspondant à partir de la clé et
-d’appliquer automatiquement la bonne URL de base. Utilisez les choix régionaux explicites lorsque
-vous souhaitez forcer une surface Coding Plan spécifique ou la surface de l’API générale.
+d’appliquer automatiquement l’URL de base correcte. Utilisez les choix régionaux explicites lorsque
+vous souhaitez forcer une surface Coding Plan spécifique ou une surface d’API générale.
-## Modèles GLM intégrés actuels
+## Modèles GLM actuellement inclus
-OpenClaw initialise actuellement le provider `zai` intégré avec ces références GLM :
+OpenClaw initialise actuellement le fournisseur `zai` inclus avec ces références GLM :
- `glm-5.1`
- `glm-5`
@@ -70,6 +70,6 @@ OpenClaw initialise actuellement le provider `zai` intégré avec ces référenc
## Remarques
-- Les versions GLM et leur disponibilité peuvent changer ; consultez la documentation Z.AI pour les dernières informations.
-- La référence de modèle intégrée par défaut est `zai/glm-5`.
-- Pour les détails sur le provider, voir [/providers/zai](/providers/zai).
+- Les versions et la disponibilité de GLM peuvent changer ; consultez la documentation de Z.AI pour les dernières informations.
+- La référence de modèle incluse par défaut est `zai/glm-5.1`.
+- Pour plus de détails sur le fournisseur, voir [/providers/zai](/fr/providers/zai).
diff --git a/docs/fr/providers/zai.md b/docs/fr/providers/zai.md
index dbaea4081..0199b4694 100644
--- a/docs/fr/providers/zai.md
+++ b/docs/fr/providers/zai.md
@@ -1,40 +1,40 @@
---
read_when:
- - Vous voulez utiliser des modèles Z.AI / GLM dans OpenClaw
- - Vous avez besoin d’une configuration simple avec `ZAI_API_KEY`
+ - Vous voulez des modèles Z.AI / GLM dans OpenClaw
+ - Vous avez besoin d’une configuration simple avec ZAI_API_KEY
summary: Utiliser Z.AI (modèles GLM) avec OpenClaw
title: Z.AI
x-i18n:
- generated_at: "2026-04-05T12:52:51Z"
+ generated_at: "2026-04-08T06:01:03Z"
model: gpt-5.4
provider: openai
- source_hash: 48006cdd580484f0c62e2877b27a6a68d7bc44795b3e97a28213d95182d9acf9
+ source_hash: 66cbd9813ee28d202dcae34debab1b0cf9927793acb00743c1c62b48d9e381f9
source_path: providers/zai.md
workflow: 15
---
# Z.AI
-Z.AI est la plateforme API des modèles **GLM**. Elle fournit des API REST pour GLM et utilise des clés API
+Z.AI est la plateforme d’API pour les modèles **GLM**. Elle fournit des API REST pour GLM et utilise des clés API
pour l’authentification. Créez votre clé API dans la console Z.AI. OpenClaw utilise le fournisseur `zai`
avec une clé API Z.AI.
-## Configuration CLI
+## Configuration de la CLI
```bash
-# Generic API-key setup with endpoint auto-detection
+# Configuration générique de clé API avec détection automatique du point de terminaison
openclaw onboard --auth-choice zai-api-key
-# Coding Plan Global, recommended for Coding Plan users
+# Coding Plan Global, recommandé pour les utilisateurs de Coding Plan
openclaw onboard --auth-choice zai-coding-global
-# Coding Plan CN (China region), recommended for Coding Plan users
+# Coding Plan CN (région Chine), recommandé pour les utilisateurs de Coding Plan
openclaw onboard --auth-choice zai-coding-cn
-# General API
+# API générale
openclaw onboard --auth-choice zai-global
-# General API CN (China region)
+# API générale CN (région Chine)
openclaw onboard --auth-choice zai-cn
```
@@ -43,17 +43,17 @@ openclaw onboard --auth-choice zai-cn
```json5
{
env: { ZAI_API_KEY: "sk-..." },
- agents: { defaults: { model: { primary: "zai/glm-5" } } },
+ agents: { defaults: { model: { primary: "zai/glm-5.1" } } },
}
```
`zai-api-key` permet à OpenClaw de détecter le point de terminaison Z.AI correspondant à partir de la clé et
-d’appliquer automatiquement la bonne base URL. Utilisez les choix régionaux explicites lorsque
-vous voulez imposer une surface spécifique Coding Plan ou API générale.
+d’appliquer automatiquement l’URL de base correcte. Utilisez les choix régionaux explicites lorsque
+vous souhaitez forcer une surface Coding Plan spécifique ou une surface d’API générale.
-## Catalogue GLM intégré
+## Catalogue GLM inclus
-OpenClaw initialise actuellement le fournisseur intégré `zai` avec :
+OpenClaw initialise actuellement le fournisseur `zai` inclus avec :
- `glm-5.1`
- `glm-5`
@@ -72,11 +72,8 @@ OpenClaw initialise actuellement le fournisseur intégré `zai` avec :
## Remarques
- Les modèles GLM sont disponibles sous la forme `zai/` (exemple : `zai/glm-5`).
-- Référence de modèle intégrée par défaut : `zai/glm-5`
-- Les IDs inconnus `glm-5*` continuent d’être résolus en avant sur le chemin du fournisseur intégré en
- synthétisant des métadonnées possédées par le fournisseur à partir du modèle `glm-4.7` lorsque l’id
- correspond à la forme actuelle de la famille GLM-5.
-- `tool_stream` est activé par défaut pour le streaming des appels d’outils Z.AI. Définissez
- `agents.defaults.models["zai/"].params.tool_stream` sur `false` pour le désactiver.
-- Voir [/providers/glm](/providers/glm) pour la vue d’ensemble de la famille de modèles.
+- Référence de modèle incluse par défaut : `zai/glm-5.1`
+- Les identifiants `glm-5*` inconnus sont quand même résolus de manière différée sur le chemin du fournisseur inclus en synthétisant des métadonnées propres au fournisseur à partir du modèle `glm-4.7` lorsque l’identifiant correspond à la forme actuelle de la famille GLM-5.
+- `tool_stream` est activé par défaut pour le streaming des appels d’outils Z.AI. Définissez `agents.defaults.models["zai/"].params.tool_stream` sur `false` pour le désactiver.
+- Voir [/providers/glm](/fr/providers/glm) pour un aperçu de la famille de modèles.
- Z.AI utilise l’authentification Bearer avec votre clé API.
diff --git a/docs/fr/refactor/qa.md b/docs/fr/refactor/qa.md
index 323a532a1..21c23baac 100644
--- a/docs/fr/refactor/qa.md
+++ b/docs/fr/refactor/qa.md
@@ -1,134 +1,137 @@
---
x-i18n:
- generated_at: "2026-04-08T02:18:25Z"
+ generated_at: "2026-04-08T06:01:41Z"
model: gpt-5.4
provider: openai
- source_hash: 0e156cc8e2fe946a0423862f937754a7caa1fe7e6863b50a80bff49a1c86e1e8
+ source_hash: 4a9066b2a939c5a9ba69141d75405f0e8097997b523164340e2f0e9a0d5060dd
source_path: refactor/qa.md
workflow: 15
---
-# Refactorisation QA
+# Refactorisation de la QA
-Statut : la migration fondamentale est finalisée.
+Statut : migration fondamentale terminée.
## Objectif
-Faire évoluer la QA d'OpenClaw d'un modèle à définition répartie vers une source de vérité unique :
+Faire évoluer la QA d’OpenClaw d’un modèle à définition répartie vers une source de vérité unique :
-- métadonnées du scénario
+- métadonnées des scénarios
- prompts envoyés au modèle
- configuration et nettoyage
- logique du harnais
- assertions et critères de réussite
-- artefacts et indications de rapport
+- artefacts et indications pour les rapports
-L'état final souhaité est un harnais QA générique qui charge des fichiers de définition de scénario puissants au lieu de coder en dur la majeure partie du comportement en TypeScript.
+L’état final souhaité est un harnais QA générique qui charge de puissants fichiers de définition de scénario au lieu de coder en dur la majeure partie du comportement en TypeScript.
## État actuel
-La source de vérité principale se trouve maintenant dans `qa/scenarios.md`.
+La source principale de vérité se trouve désormais dans `qa/scenarios/index.md` plus un fichier par scénario sous `qa/scenarios/*.md`.
Implémenté :
-- `qa/scenarios.md`
- - pack QA canonique
- - identité de l'opérateur
+- `qa/scenarios/index.md`
+ - métadonnées canoniques du pack QA
+ - identité de l’opérateur
- mission de lancement
+- `qa/scenarios/*.md`
+ - un fichier Markdown par scénario
- métadonnées du scénario
- - liaisons de gestionnaires
+ - liaisons de handlers
+ - configuration d’exécution spécifique au scénario
- `extensions/qa-lab/src/scenario-catalog.ts`
- parseur de pack Markdown + validation zod
- `extensions/qa-lab/src/qa-agent-bootstrap.ts`
- rendu du plan à partir du pack Markdown
- `extensions/qa-lab/src/qa-agent-workspace.ts`
- - initialise les fichiers de compatibilité générés ainsi que `QA_SCENARIOS.md`
+ - génère les fichiers de compatibilité initiaux plus `QA_SCENARIOS.md`
- `extensions/qa-lab/src/suite.ts`
- - sélectionne les scénarios exécutables via des liaisons de gestionnaires définies en Markdown
-- Protocole de bus QA + UI
- - pièces jointes inline génériques pour le rendu d'image/vidéo/audio/fichier
+ - sélectionne les scénarios exécutables via des liaisons de handlers définies en Markdown
+- Protocole QA bus + UI
+ - pièces jointes inline génériques pour le rendu image/vidéo/audio/fichier
Surfaces encore réparties :
- `extensions/qa-lab/src/suite.ts`
- - possède encore la majeure partie de la logique de gestionnaire personnalisé exécutable
+ - possède encore la majeure partie de la logique des handlers exécutables personnalisés
- `extensions/qa-lab/src/report.ts`
- - dérive encore la structure du rapport à partir des sorties runtime
+ - dérive encore la structure du rapport à partir des sorties d’exécution
-Ainsi, la répartition de la source de vérité est corrigée, mais l'exécution reste encore principalement adossée à des gestionnaires plutôt qu'entièrement déclarative.
+Ainsi, la répartition de la source de vérité est corrigée, mais l’exécution reste encore majoritairement appuyée sur des handlers plutôt que pleinement déclarative.
-## À quoi ressemble la vraie surface des scénarios
+## À quoi ressemble réellement la surface des scénarios
La lecture de la suite actuelle montre quelques classes de scénarios distinctes.
### Interaction simple
-- base de référence du canal
-- base de référence des messages privés
-- suivi en fil
+- référence de base du canal
+- référence de base en message direct
+- suivi dans un fil
- changement de modèle
-- poursuite après approbation
+- suivi après approbation
- réaction/modification/suppression
-### Mutation de configuration et de runtime
+### Mutation de configuration et d’exécution
-- désactivation de skill via patch de configuration
-- réveil après redémarrage suite à l'application de la configuration
-- bascule de capacité après redémarrage de configuration
-- vérification de dérive de l'inventaire runtime
+- désactivation de skill par patch de config
+- config apply restart wake-up
+- inversion de capacité après redémarrage de configuration
+- vérification de dérive de l’inventaire d’exécution
-### Assertions sur le système de fichiers et le dépôt
+### Assertions sur système de fichiers et dépôt
- rapport de découverte source/docs
-- build de Lobster Invaders
-- recherche d'artefact d'image générée
+- build Lobster Invaders
+- recherche d’artefact d’image générée
### Orchestration de la mémoire
-- rappel mémoire
-- outils mémoire dans le contexte du canal
-- secours en cas d'échec mémoire
+- rappel de mémoire
+- outils de mémoire dans un contexte de canal
+- repli en cas d’échec de la mémoire
- classement de la mémoire de session
-- isolation mémoire de fil
-- balayage memory dreaming
+- isolation de la mémoire par fil
+- memory dreaming sweep
-### Intégration d'outils et de plugins
+### Intégration d’outils et de plugins
- appel MCP plugin-tools
-- visibilité des skills
+- visibilité des Skills
- installation à chaud de skill
-- génération d'image native
-- aller-retour d'image
-- compréhension d'image depuis une pièce jointe
+- génération d’image native
+- aller-retour d’image
+- compréhension d’image à partir d’une pièce jointe
### Multi-tour et multi-acteur
-- transfert à un sous-agent
-- synthèse par fanout de sous-agent
-- flux de type récupération après redémarrage
+- transfert vers un sous-agent
+- synthèse par fanout de sous-agents
+- flux de style reprise après redémarrage
-Ces catégories sont importantes parce qu'elles déterminent les exigences de la DSL. Une simple liste de prompt + texte attendu n'est pas suffisante.
+Ces catégories sont importantes parce qu’elles pilotent les exigences du DSL. Une simple liste de prompt + texte attendu ne suffit pas.
-## Direction
+## Orientation
### Source de vérité unique
-Utiliser `qa/scenarios.md` comme source de vérité rédigée.
+Utiliser `qa/scenarios/index.md` plus `qa/scenarios/*.md` comme source de vérité rédigée.
Le pack doit rester :
- lisible par un humain en revue
-- analysable par une machine
+- analysable par machine
- suffisamment riche pour piloter :
- - l'exécution de la suite
- - l'initialisation du workspace QA
- - les métadonnées de l'UI QA Lab
+ - l’exécution de la suite
+ - l’initialisation de l’espace de travail QA
+ - les métadonnées de l’UI QA Lab
- les prompts de documentation/découverte
- la génération de rapports
### Format de rédaction préféré
-Utiliser Markdown comme format de premier niveau, avec du YAML structuré à l'intérieur.
+Utiliser Markdown comme format de premier niveau, avec du YAML structuré à l’intérieur.
Forme recommandée :
@@ -139,7 +142,7 @@ Forme recommandée :
- tags
- docs refs
- code refs
- - remplacements de modèle/fournisseur
+ - surcharges de modèle/fournisseur
- prérequis
- sections en prose
- objectif
@@ -153,13 +156,13 @@ Forme recommandée :
Cela apporte :
-- une meilleure lisibilité en PR qu'un énorme JSON
-- un contexte plus riche que du pur YAML
+- une meilleure lisibilité en PR qu’un énorme JSON
+- un contexte plus riche qu’un simple YAML
- une analyse stricte et une validation zod
-Le JSON brut n'est acceptable que comme forme intermédiaire générée.
+Le JSON brut n’est acceptable qu’en tant que forme intermédiaire générée.
-## Forme de fichier de scénario proposée
+## Forme proposée pour un fichier de scénario
Exemple :
@@ -182,11 +185,11 @@ codeRefs:
- src/gateway/chat-attachments.ts
---
-# Objectif
+# Objective
-Vérifier que les médias générés sont rattachés au tour suivant.
+Verify generated media is reattached on the follow-up turn.
-# Configuration
+# Setup
```yaml scenario.setup
- action: config.patch
@@ -199,13 +202,13 @@ Vérifier que les médias générés sont rattachés au tour suivant.
key: agent:qa:image-roundtrip
```
-# Étapes
+# Steps
```yaml scenario.steps
- action: agent.send
session: agent:qa:image-roundtrip
message: |
- Contrôle de génération d'image : génère une image de phare QA et résume-la en une phrase courte.
+ Image generation check: generate a QA lighthouse image and summarize it in one short sentence.
- action: artifact.capture
kind: generated-image
promptSnippet: Image generation check
@@ -213,12 +216,12 @@ Vérifier que les médias générés sont rattachés au tour suivant.
- action: agent.send
session: agent:qa:image-roundtrip
message: |
- Contrôle d'inspection d'image en aller-retour : décris la pièce jointe générée du phare en une phrase courte.
+ Roundtrip image inspection check: describe the generated lighthouse attachment in one short sentence.
attachments:
- fromArtifact: lighthouseImage
```
-# Attendu
+# Expect
```yaml scenario.expect
- assert: outbound.textIncludes
@@ -232,11 +235,11 @@ Vérifier que les médias générés sont rattachés au tour suivant.
```
````
-## Capacités du runner que la DSL doit couvrir
+## Capacités du runner que le DSL doit couvrir
-D'après la suite actuelle, le runner générique doit faire plus qu'exécuter des prompts.
+D’après la suite actuelle, le runner générique a besoin de plus que de l’exécution de prompts.
-### Actions d'environnement et de configuration
+### Actions d’environnement et de configuration
- `bus.reset`
- `gateway.waitHealthy`
@@ -245,14 +248,14 @@ D'après la suite actuelle, le runner générique doit faire plus qu'exécuter d
- `thread.create`
- `workspace.writeSkill`
-### Actions de tour d'agent
+### Actions de tour d’agent
- `agent.send`
- `agent.wait`
- `bus.injectInbound`
- `bus.injectOutbound`
-### Actions de configuration et de runtime
+### Actions de configuration et d’exécution
- `config.get`
- `config.patch`
@@ -270,7 +273,7 @@ D'après la suite actuelle, le runner générique doit faire plus qu'exécuter d
- `artifact.captureGeneratedImage`
- `artifact.capturePath`
-### Actions mémoire et cron
+### Actions de mémoire et de cron
- `memory.indexForce`
- `memory.searchCli`
@@ -300,99 +303,100 @@ D'après la suite actuelle, le runner générique doit faire plus qu'exécuter d
- `cron.managedPresent`
- `artifact.exists`
-## Variables et références d'artefacts
+## Variables et références d’artefacts
-La DSL doit prendre en charge les sorties enregistrées et leurs références ultérieures.
+Le DSL doit prendre en charge les sorties enregistrées et les références ultérieures.
Exemples issus de la suite actuelle :
- créer un fil, puis réutiliser `threadId`
- créer une session, puis réutiliser `sessionKey`
- générer une image, puis joindre le fichier au tour suivant
-- générer une chaîne de marqueur de réveil, puis vérifier qu'elle apparaît plus tard
+- générer une chaîne marqueur de réveil, puis vérifier qu’elle apparaît plus tard
Capacités nécessaires :
- `saveAs`
- `${vars.name}`
- `${artifacts.name}`
-- références typées pour les chemins, clés de session, identifiants de fil, marqueurs, sorties d'outil
+- références typées pour les chemins, clés de session, identifiants de fil, marqueurs, sorties d’outils
-Sans prise en charge des variables, le harnais continuera à faire fuir la logique de scénario vers TypeScript.
+Sans prise en charge des variables, le harnais continuera à faire fuiter la logique des scénarios vers le TypeScript.
## Ce qui doit rester comme échappatoires
-Un runner entièrement déclaratif pur n'est pas réaliste en phase 1.
+Un runner purement déclaratif n’est pas réaliste en phase 1.
Certains scénarios sont intrinsèquement lourds en orchestration :
-- balayage memory dreaming
-- réveil après redémarrage suite à l'application de la configuration
-- bascule de capacité après redémarrage de configuration
-- résolution d'artefact d'image générée par horodatage/chemin
-- évaluation de rapport de découverte
+- memory dreaming sweep
+- config apply restart wake-up
+- config restart capability flip
+- résolution d’artefact d’image générée par horodatage/chemin
+- évaluation du rapport de découverte
-Pour l'instant, ceux-ci doivent utiliser des gestionnaires personnalisés explicites.
+Ils devraient pour l’instant utiliser des handlers personnalisés explicites.
Règle recommandée :
- 85-90 % déclaratif
- étapes `customHandler` explicites pour le reste difficile
-- gestionnaires personnalisés nommés et documentés uniquement
+- uniquement des handlers personnalisés nommés et documentés
- aucun code inline anonyme dans le fichier de scénario
-Cela garde le moteur générique propre tout en permettant d'avancer.
+Cela garde le moteur générique propre tout en permettant d’avancer.
-## Changement d'architecture
+## Changement d’architecture
### Actuel
-Le Markdown de scénario est déjà la source de vérité pour :
+Le Markdown des scénarios est déjà la source de vérité pour :
-- l'exécution de la suite
-- les fichiers bootstrap du workspace
-- le catalogue de scénarios de l'UI QA Lab
+- l’exécution de la suite
+- les fichiers d’initialisation de l’espace de travail
+- le catalogue de scénarios de l’UI QA Lab
- les métadonnées de rapport
- les prompts de découverte
Compatibilité générée :
-- le workspace initialisé inclut encore `QA_KICKOFF_TASK.md`
-- le workspace initialisé inclut encore `QA_SCENARIO_PLAN.md`
-- le workspace initialisé inclut maintenant aussi `QA_SCENARIOS.md`
+- l’espace de travail initial inclut toujours `QA_KICKOFF_TASK.md`
+- l’espace de travail initial inclut toujours `QA_SCENARIO_PLAN.md`
+- l’espace de travail initial inclut désormais aussi `QA_SCENARIOS.md`
## Plan de refactorisation
### Phase 1 : chargeur et schéma
-Fait.
+Terminé.
-- ajout de `qa/scenarios.md`
-- ajout d'un parseur pour le contenu du pack YAML Markdown nommé
+- ajout de `qa/scenarios/index.md`
+- séparation des scénarios dans `qa/scenarios/*.md`
+- ajout d’un parseur pour le contenu YAML Markdown nommé du pack
- validation avec zod
- basculement des consommateurs vers le pack analysé
- suppression de `qa/seed-scenarios.json` et `qa/QA_KICKOFF_TASK.md` au niveau du dépôt
### Phase 2 : moteur générique
-- découper `extensions/qa-lab/src/suite.ts` en :
+- diviser `extensions/qa-lab/src/suite.ts` en :
- chargeur
- moteur
- - registre d'actions
- - registre d'assertions
- - gestionnaires personnalisés
-- conserver les fonctions helper existantes comme opérations du moteur
+ - registre d’actions
+ - registre d’assertions
+ - handlers personnalisés
+- conserver les fonctions utilitaires existantes comme opérations du moteur
Livrable :
- le moteur exécute des scénarios déclaratifs simples
-Commencer par les scénarios qui sont surtout prompt + attente + assertion :
+Commencer par les scénarios qui sont principalement prompt + attente + assertion :
-- suivi en fil
-- compréhension d'image depuis une pièce jointe
-- visibilité et invocation de skill
-- base de référence du canal
+- suivi dans un fil
+- compréhension d’image à partir d’une pièce jointe
+- visibilité et invocation de Skills
+- référence de base du canal
Livrable :
@@ -400,36 +404,36 @@ Livrable :
### Phase 4 : migrer les scénarios intermédiaires
-- aller-retour de génération d'image
-- outils mémoire dans le contexte du canal
+- aller-retour de génération d’image
+- outils de mémoire dans un contexte de canal
- classement de la mémoire de session
-- transfert à un sous-agent
-- synthèse par fanout de sous-agent
+- transfert vers un sous-agent
+- synthèse par fanout de sous-agents
Livrable :
-- variables, artefacts, assertions sur outils, assertions sur journaux de requêtes validés en pratique
+- variables, artefacts, assertions d’outils, assertions de journal de requêtes validés
-### Phase 5 : conserver les scénarios difficiles sur des gestionnaires personnalisés
+### Phase 5 : conserver les scénarios difficiles sur des handlers personnalisés
-- balayage memory dreaming
-- réveil après redémarrage suite à l'application de la configuration
-- bascule de capacité après redémarrage de configuration
-- dérive d'inventaire runtime
+- memory dreaming sweep
+- config apply restart wake-up
+- config restart capability flip
+- dérive d’inventaire d’exécution
Livrable :
-- même format de rédaction, mais avec des blocs d'étapes personnalisées explicites lorsque nécessaire
+- même format de rédaction, mais avec des blocs d’étapes personnalisées explicites là où nécessaire
### Phase 6 : supprimer la map de scénarios codée en dur
-Une fois que la couverture du pack sera suffisante :
+Quand la couverture du pack sera suffisamment bonne :
- supprimer la majeure partie du branchement TypeScript spécifique aux scénarios dans `extensions/qa-lab/src/suite.ts`
-## Prise en charge du faux Slack / des médias enrichis
+## Faux Slack / prise en charge des médias riches
-Le bus QA actuel est d'abord orienté texte.
+Le QA bus actuel est centré sur le texte.
Fichiers concernés :
@@ -439,7 +443,7 @@ Fichiers concernés :
- `extensions/qa-lab/src/bus-server.ts`
- `extensions/qa-lab/web/src/ui-render.ts`
-Aujourd'hui, le bus QA prend en charge :
+Aujourd’hui, le QA bus prend en charge :
- texte
- réactions
@@ -449,7 +453,7 @@ Il ne modélise pas encore les pièces jointes média inline.
### Contrat de transport nécessaire
-Ajouter un modèle générique de pièce jointe de bus QA :
+Ajouter un modèle générique de pièce jointe QA bus :
```ts
type QaBusAttachment = {
@@ -474,61 +478,61 @@ Puis ajouter `attachments?: QaBusAttachment[]` à :
- `QaBusInboundMessageInput`
- `QaBusOutboundMessageInput`
-### Pourquoi générique d'abord
+### Pourquoi commencer par du générique
Ne construisez pas un modèle média réservé à Slack.
À la place :
- un modèle de transport QA générique
-- plusieurs moteurs de rendu au-dessus
- - le chat QA Lab actuel
- - un futur faux web Slack
+- plusieurs moteurs de rendu par-dessus
+ - le chat actuel de QA Lab
+ - un futur faux Slack web
- toute autre vue de faux transport
-Cela évite la duplication de logique et permet aux scénarios média de rester indépendants du transport.
+Cela évite la logique dupliquée et permet aux scénarios média de rester indépendants du transport.
### Travail UI nécessaire
-Mettre à jour l'UI QA pour afficher :
+Mettre à jour l’UI QA pour afficher :
-- aperçu d'image inline
+- aperçu d’image inline
- lecteur audio inline
- lecteur vidéo inline
- puce de pièce jointe de fichier
-L'UI actuelle peut déjà afficher les fils et les réactions, donc le rendu des pièces jointes devrait se superposer au même modèle de carte de message.
+L’UI actuelle peut déjà afficher les fils et les réactions, donc le rendu des pièces jointes devrait pouvoir se superposer au même modèle de carte de message.
-### Travail de scénario rendu possible par le transport média
+### Travail sur les scénarios rendu possible par le transport média
-Une fois que les pièces jointes circulent via le bus QA, nous pouvons ajouter des scénarios de faux chat plus riches :
+Une fois que les pièces jointes circuleront dans le QA bus, nous pourrons ajouter des scénarios de faux chat plus riches :
-- réponse avec image inline dans le faux Slack
-- compréhension de pièce jointe audio
-- compréhension de pièce jointe vidéo
+- réponse avec image inline dans un faux Slack
+- compréhension d’une pièce jointe audio
+- compréhension d’une pièce jointe vidéo
- ordre mixte des pièces jointes
-- réponse en fil avec média conservé
+- réponse dans un fil avec conservation du média
## Recommandation
-Le prochain lot d'implémentation devrait être :
+Le prochain bloc d’implémentation devrait être :
-1. ajouter un chargeur de scénario Markdown + schéma zod
+1. ajouter un chargeur de scénarios Markdown + un schéma zod
2. générer le catalogue actuel à partir du Markdown
-3. migrer d'abord quelques scénarios simples
-4. ajouter la prise en charge générique des pièces jointes du bus QA
-5. afficher une image inline dans l'UI QA
-6. puis étendre à l'audio et à la vidéo
+3. migrer d’abord quelques scénarios simples
+4. ajouter la prise en charge générique des pièces jointes QA bus
+5. afficher une image inline dans l’UI QA
+6. puis étendre à l’audio et à la vidéo
-C'est le plus petit chemin qui prouve les deux objectifs :
+C’est le plus petit chemin qui prouve les deux objectifs :
- QA générique définie en Markdown
-- surfaces de fausse messagerie plus riches
+- surfaces de messagerie simulées plus riches
## Questions ouvertes
-- faut-il autoriser dans les fichiers de scénario des modèles de prompt Markdown embarqués avec interpolation de variables
-- faut-il que setup/cleanup soient des sections nommées ou simplement des listes d'actions ordonnées
-- faut-il que les références d'artefacts soient fortement typées dans le schéma ou basées sur des chaînes
-- faut-il que les gestionnaires personnalisés vivent dans un seul registre ou dans des registres par surface
-- faut-il que le fichier de compatibilité JSON généré reste versionné pendant la migration
+- si les fichiers de scénario doivent autoriser des modèles de prompt Markdown embarqués avec interpolation de variables
+- si setup/cleanup doivent être des sections nommées ou simplement des listes d’actions ordonnées
+- si les références d’artefacts doivent être fortement typées dans le schéma ou basées sur des chaînes
+- si les handlers personnalisés doivent vivre dans un seul registre ou dans des registres par surface
+- si le fichier de compatibilité JSON généré doit rester versionné pendant la migration
diff --git a/docs/fr/tools/slash-commands.md b/docs/fr/tools/slash-commands.md
index ecbd76a40..bf2d105f6 100644
--- a/docs/fr/tools/slash-commands.md
+++ b/docs/fr/tools/slash-commands.md
@@ -5,32 +5,32 @@ read_when:
summary: 'Commandes slash : texte vs natives, configuration et commandes prises en charge'
title: Commandes slash
x-i18n:
- generated_at: "2026-04-06T03:14:23Z"
+ generated_at: "2026-04-08T06:02:06Z"
model: gpt-5.4
provider: openai
- source_hash: 417e35b9ddd87f25f6c019111b55b741046ea11039dde89210948185ced5696d
+ source_hash: 4a7ee7f1a8012058279b9e632889b291d4e659e4ec81209ca8978afbb9ad4b96
source_path: tools/slash-commands.md
workflow: 15
---
# Commandes slash
-Les commandes sont gérées par la passerelle. La plupart des commandes doivent être envoyées comme un message **autonome** qui commence par `/`.
-La commande de chat bash réservée à l'hôte utilise `! ` (avec `/bash ` comme alias).
+Les commandes sont gérées par la Gateway. La plupart des commandes doivent être envoyées sous la forme d’un message **autonome** qui commence par `/`.
+La commande de chat bash réservée à l’hôte utilise `! ` (avec `/bash ` comme alias).
Il existe deux systèmes liés :
- **Commandes** : messages autonomes `/...`.
- **Directives** : `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- - Les directives sont retirées du message avant que le modèle ne le voie.
- - Dans les messages de chat normaux (pas uniquement des directives), elles sont traitées comme des « indications inline » et ne persistent **pas** dans les paramètres de session.
- - Dans les messages contenant uniquement des directives (le message ne contient que des directives), elles persistent dans la session et répondent par un accusé de réception.
- - Les directives ne sont appliquées que pour les **expéditeurs autorisés**. Si `commands.allowFrom` est défini, c'est la seule
- liste d'autorisation utilisée ; sinon, l'autorisation provient des listes d'autorisation/appairages des canaux ainsi que de `commands.useAccessGroups`.
- Pour les expéditeurs non autorisés, les directives sont traitées comme du texte brut.
+ - Les directives sont supprimées du message avant que le modèle ne le voie.
+ - Dans les messages de chat normaux (pas uniquement composés de directives), elles sont traitées comme des « indices en ligne » et ne persistent **pas** les paramètres de session.
+ - Dans les messages composés uniquement de directives (le message ne contient que des directives), elles persistent dans la session et répondent avec un accusé de réception.
+ - Les directives ne sont appliquées que pour les **expéditeurs autorisés**. Si `commands.allowFrom` est défini, c’est la seule
+ liste d’autorisation utilisée ; sinon l’autorisation provient des listes d’autorisation/appairages du canal ainsi que de `commands.useAccessGroups`.
+ Les expéditeurs non autorisés voient les directives traitées comme du texte brut.
-Il existe également quelques **raccourcis inline** (expéditeurs autorisés/sur liste d'autorisation uniquement) : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
-Ils s'exécutent immédiatement, sont retirés avant que le modèle ne voie le message, puis le texte restant continue dans le flux normal.
+Il existe aussi quelques **raccourcis en ligne** (expéditeurs sur liste d’autorisation/autorisés uniquement) : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
+Ils s’exécutent immédiatement, sont supprimés avant que le modèle ne voie le message, et le texte restant suit le flux normal.
## Configuration
@@ -46,7 +46,10 @@ Ils s'exécutent immédiatement, sont retirés avant que le modèle ne voie le m
mcp: false,
plugins: false,
debug: false,
- restart: false,
+ restart: true,
+ ownerAllowFrom: ["discord:123456789012345678"],
+ ownerDisplay: "raw",
+ ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}",
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
@@ -56,144 +59,179 @@ Ils s'exécutent immédiatement, sont retirés avant que le modèle ne voie le m
}
```
-- `commands.text` (par défaut `true`) active l'analyse de `/...` dans les messages de chat.
- - Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), les commandes texte continuent de fonctionner même si vous le définissez sur `false`.
+- `commands.text` (par défaut `true`) active l’analyse de `/...` dans les messages de chat.
+ - Sur les surfaces sans commandes natives (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), les commandes texte continuent de fonctionner même si vous définissez cette option sur `false`.
- `commands.native` (par défaut `"auto"`) enregistre les commandes natives.
- - Auto : activé pour Discord/Telegram ; désactivé pour Slack (jusqu'à ce que vous ajoutiez des commandes slash) ; ignoré pour les fournisseurs sans prise en charge native.
- - Définissez `channels.discord.commands.native`, `channels.telegram.commands.native` ou `channels.slack.commands.native` pour remplacer le comportement par fournisseur (booléen ou `"auto"`).
- - `false` efface les commandes précédemment enregistrées sur Discord/Telegram au démarrage. Les commandes Slack sont gérées dans l'application Slack et ne sont pas supprimées automatiquement.
-- `commands.nativeSkills` (par défaut `"auto"`) enregistre nativement les commandes de **skill** lorsque c'est pris en charge.
- - Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack nécessite la création d'une commande slash par skill).
- - Définissez `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` ou `channels.slack.commands.nativeSkills` pour remplacer le comportement par fournisseur (booléen ou `"auto"`).
-- `commands.bash` (par défaut `false`) active `! ` pour exécuter des commandes shell sur l'hôte (`/bash ` est un alias ; nécessite les listes d'autorisation `tools.elevated`).
+ - Auto : activé pour Discord/Telegram ; désactivé pour Slack (jusqu’à ce que vous ajoutiez des commandes slash) ; ignoré pour les fournisseurs sans prise en charge native.
+ - Définissez `channels.discord.commands.native`, `channels.telegram.commands.native` ou `channels.slack.commands.native` pour remplacer ce paramètre par fournisseur (booléen ou `"auto"`).
+ - `false` efface au démarrage les commandes précédemment enregistrées sur Discord/Telegram. Les commandes Slack sont gérées dans l’application Slack et ne sont pas supprimées automatiquement.
+- `commands.nativeSkills` (par défaut `"auto"`) enregistre nativement les commandes de **Skills** lorsqu’elles sont prises en charge.
+ - Auto : activé pour Discord/Telegram ; désactivé pour Slack (Slack exige la création d’une commande slash par skill).
+ - Définissez `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` ou `channels.slack.commands.nativeSkills` pour remplacer ce paramètre par fournisseur (booléen ou `"auto"`).
+- `commands.bash` (par défaut `false`) active `! ` pour exécuter des commandes shell sur l’hôte (`/bash ` est un alias ; nécessite les listes d’autorisation `tools.elevated`).
- `commands.bashForegroundMs` (par défaut `2000`) contrôle combien de temps bash attend avant de passer en mode arrière-plan (`0` passe immédiatement en arrière-plan).
- `commands.config` (par défaut `false`) active `/config` (lecture/écriture de `openclaw.json`).
- `commands.mcp` (par défaut `false`) active `/mcp` (lecture/écriture de la configuration MCP gérée par OpenClaw sous `mcp.servers`).
-- `commands.plugins` (par défaut `false`) active `/plugins` (découverte/statut des plugins plus contrôles d'installation + activation/désactivation).
-- `commands.debug` (par défaut `false`) active `/debug` (remplacements à l'exécution uniquement).
-- `commands.allowFrom` (facultatif) définit une liste d'autorisation par fournisseur pour l'autorisation des commandes. Lorsqu'elle est configurée, c'est la
- seule source d'autorisation pour les commandes et les directives (`commands.useAccessGroups` et les listes d'autorisation/appairages des canaux
+- `commands.plugins` (par défaut `false`) active `/plugins` (découverte/statut des plugins ainsi que contrôles d’installation + activation/désactivation).
+- `commands.debug` (par défaut `false`) active `/debug` (remplacements à l’exécution uniquement).
+- `commands.restart` (par défaut `true`) active `/restart` ainsi que les actions d’outil de redémarrage de la gateway.
+- `commands.ownerAllowFrom` (facultatif) définit la liste d’autorisation explicite du propriétaire pour les surfaces de commandes/outils réservées au propriétaire. Elle est distincte de `commands.allowFrom`.
+- `commands.ownerDisplay` contrôle la manière dont les identifiants de propriétaire apparaissent dans le prompt système : `raw` ou `hash`.
+- `commands.ownerDisplaySecret` définit éventuellement le secret HMAC utilisé lorsque `commands.ownerDisplay="hash"`.
+- `commands.allowFrom` (facultatif) définit une liste d’autorisation par fournisseur pour l’autorisation des commandes. Lorsqu’elle est configurée, c’est la
+ seule source d’autorisation pour les commandes et les directives (`commands.useAccessGroups` ainsi que les listes d’autorisation/appairages du canal
sont ignorés). Utilisez `"*"` pour une valeur par défaut globale ; les clés spécifiques au fournisseur la remplacent.
-- `commands.useAccessGroups` (par défaut `true`) applique les listes d'autorisation/politiques pour les commandes lorsque `commands.allowFrom` n'est pas défini.
+- `commands.useAccessGroups` (par défaut `true`) applique les listes d’autorisation/politiques aux commandes lorsque `commands.allowFrom` n’est pas défini.
## Liste des commandes
-Texte + natives (quand elles sont activées) :
+Source de vérité actuelle :
-- `/help`
-- `/commands`
-- `/tools [compact|verbose]` (affiche ce que l'agent actuel peut utiliser maintenant ; `verbose` ajoute des descriptions)
-- `/skill [input]` (exécute une skill par nom)
-- `/status` (affiche l'état actuel ; inclut l'utilisation/le quota du fournisseur pour le fournisseur de modèle actuel lorsque disponible)
-- `/tasks` (liste les tâches d'arrière-plan pour la session actuelle ; affiche les détails des tâches actives et récentes avec les comptes de secours locaux à l'agent)
-- `/allowlist` (lister/ajouter/supprimer des entrées de liste d'autorisation)
-- `/approve ` (résout les invites d'approbation exec ; utilisez le message d'approbation en attente pour voir les décisions disponibles)
-- `/context [list|detail|json]` (explique le « contexte » ; `detail` affiche la taille par fichier + par outil + par skill + celle du prompt système)
-- `/btw ` (poser une question latérale éphémère sur la session actuelle sans modifier le contexte futur de la session ; voir [/tools/btw](/fr/tools/btw))
-- `/export-session [path]` (alias : `/export`) (exporte la session actuelle en HTML avec le prompt système complet)
-- `/whoami` (affiche votre identifiant d'expéditeur ; alias : `/id`)
-- `/session idle ` (gère la perte de focus automatique par inactivité pour les associations de fils focalisés)
-- `/session max-age ` (gère la perte de focus automatique par durée maximale stricte pour les associations de fils focalisés)
-- `/subagents list|kill|log|info|send|steer|spawn` (inspecte, contrôle ou lance des exécutions de sous-agents pour la session actuelle)
-- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (inspecte et contrôle les sessions d'exécution ACP)
-- `/agents` (liste les agents liés à un fil pour cette session)
-- `/focus ` (Discord : lie ce fil, ou un nouveau fil, à une cible de session/sous-agent)
-- `/unfocus` (Discord : supprime l'association du fil actuel)
-- `/kill ` (interrompt immédiatement un ou tous les sous-agents en cours pour cette session ; aucun message de confirmation)
-- `/steer ` (redirige immédiatement un sous-agent en cours : pendant l'exécution quand c'est possible, sinon interrompt le travail actuel et redémarre sur le message de redirection)
-- `/tell ` (alias de `/steer`)
-- `/config show|get|set|unset` (persiste la configuration sur disque, propriétaire uniquement ; nécessite `commands.config: true`)
-- `/mcp show|get|set|unset` (gère la configuration du serveur MCP OpenClaw, propriétaire uniquement ; nécessite `commands.mcp: true`)
-- `/plugins list|show|get|install|enable|disable` (inspecte les plugins découverts, installe de nouveaux plugins et bascule leur activation ; propriétaire uniquement pour les écritures ; nécessite `commands.plugins: true`)
- - `/plugin` est un alias de `/plugins`.
- - `/plugin install ` accepte les mêmes spécifications de plugin que `openclaw plugins install` : chemin/archive local, paquet npm ou `clawhub:`.
- - Les écritures d'activation/désactivation répondent toujours avec une indication de redémarrage. Sur une passerelle de premier plan surveillée, OpenClaw peut effectuer ce redémarrage automatiquement juste après l'écriture.
-- `/debug show|set|unset|reset` (remplacements à l'exécution, propriétaire uniquement ; nécessite `commands.debug: true`)
-- `/usage off|tokens|full|cost` (pied de page d'utilisation par réponse ou résumé local des coûts)
-- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (contrôle le TTS ; voir [/tts](/fr/tools/tts))
- - Discord : la commande native est `/voice` (Discord réserve `/tts`) ; la commande texte `/tts` fonctionne toujours.
-- `/stop`
-- `/restart`
-- `/dock-telegram` (alias : `/dock_telegram`) (bascule les réponses vers Telegram)
-- `/dock-discord` (alias : `/dock_discord`) (bascule les réponses vers Discord)
-- `/dock-slack` (alias : `/dock_slack`) (bascule les réponses vers Slack)
-- `/activation mention|always` (groupes uniquement)
-- `/send on|off|inherit` (propriétaire uniquement)
-- `/reset` ou `/new [model]` (indication de modèle facultative ; le reste est transmis)
-- `/think ` (choix dynamiques selon le modèle/fournisseur ; alias : `/thinking`, `/t`)
-- `/fast status|on|off` (si vous omettez l'argument, affiche l'état effectif actuel du mode rapide)
-- `/verbose on|full|off` (alias : `/v`)
-- `/reasoning on|off|stream` (alias : `/reason` ; lorsqu'il est activé, envoie un message séparé préfixé par `Reasoning:` ; `stream` = brouillon Telegram uniquement)
-- `/elevated on|off|ask|full` (alias : `/elev` ; `full` ignore les approbations exec)
-- `/exec host= security= ask= node=` (envoyez `/exec` pour afficher l'état actuel)
-- `/model ` (alias : `/models` ; ou `/` depuis `agents.defaults.models.*.alias`)
-- `/queue ` (plus des options comme `debounce:2s cap:25 drop:summarize` ; envoyez `/queue` pour voir les paramètres actuels)
-- `/bash ` (hôte uniquement ; alias de `! ` ; nécessite `commands.bash: true` + listes d'autorisation `tools.elevated`)
-- `/dreaming [on|off|status|help]` (active/désactive dreaming globalement ou affiche l'état ; voir [Dreaming](/fr/concepts/dreaming))
+- les éléments intégrés du cœur proviennent de `src/auto-reply/commands-registry.shared.ts`
+- les commandes dock générées proviennent de `src/auto-reply/commands-registry.data.ts`
+- les commandes de plugins proviennent des appels de plugin `registerCommand()`
+- la disponibilité réelle sur votre gateway dépend toujours des drapeaux de configuration, de la surface du canal et des plugins installés/activés
-Texte uniquement :
+### Commandes intégrées du cœur
-- `/compact [instructions]` (voir [/concepts/compaction](/fr/concepts/compaction))
-- `! ` (hôte uniquement ; une à la fois ; utilisez `!poll` + `!stop` pour les tâches longues)
-- `!poll` (vérifie la sortie / l'état ; accepte un `sessionId` facultatif ; `/bash poll` fonctionne aussi)
-- `!stop` (arrête la tâche bash en cours ; accepte un `sessionId` facultatif ; `/bash stop` fonctionne aussi)
+Commandes intégrées disponibles aujourd’hui :
+
+- `/new [model]` démarre une nouvelle session ; `/reset` est l’alias de réinitialisation.
+- `/compact [instructions]` compacte le contexte de la session. Voir [/concepts/compaction](/fr/concepts/compaction).
+- `/stop` interrompt l’exécution en cours.
+- `/session idle ` et `/session max-age ` gèrent l’expiration de l’association au fil.
+- `/think ` définit le niveau de réflexion. Alias : `/thinking`, `/t`.
+- `/verbose on|off|full` active ou désactive la sortie détaillée. Alias : `/v`.
+- `/fast [status|on|off]` affiche ou définit le mode rapide.
+- `/reasoning [on|off|stream]` active ou désactive la visibilité du raisonnement. Alias : `/reason`.
+- `/elevated [on|off|ask|full]` active ou désactive le mode élevé. Alias : `/elev`.
+- `/exec host= security= ask= node=` affiche ou définit les valeurs par défaut d’exécution.
+- `/model [name|#|status]` affiche ou définit le modèle.
+- `/models [provider] [page] [limit=|size=|all]` liste les fournisseurs ou les modèles d’un fournisseur.
+- `/queue ` gère le comportement de la file (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) ainsi que des options comme `debounce:2s cap:25 drop:summarize`.
+- `/help` affiche le résumé d’aide court.
+- `/commands` affiche le catalogue de commandes généré.
+- `/tools [compact|verbose]` affiche ce que l’agent actuel peut utiliser à cet instant.
+- `/status` affiche l’état d’exécution, y compris l’utilisation/le quota du fournisseur lorsque disponible.
+- `/tasks` liste les tâches d’arrière-plan actives/récentes pour la session en cours.
+- `/context [list|detail|json]` explique comment le contexte est assemblé.
+- `/export-session [path]` exporte la session en cours en HTML. Alias : `/export`.
+- `/whoami` affiche votre identifiant d’expéditeur. Alias : `/id`.
+- `/skill [input]` exécute une skill par son nom.
+- `/allowlist [list|add|remove] ...` gère les entrées de liste d’autorisation. Texte uniquement.
+- `/approve ` résout les invites d’approbation d’exécution.
+- `/btw ` pose une question annexe sans modifier le contexte futur de la session. Voir [/tools/btw](/fr/tools/btw).
+- `/subagents list|kill|log|info|send|steer|spawn` gère les exécutions de sous-agents pour la session en cours.
+- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` gère les sessions ACP et les options d’exécution.
+- `/focus ` associe le fil Discord ou le sujet/conversation Telegram actuel à une cible de session.
+- `/unfocus` supprime l’association actuelle.
+- `/agents` liste les agents liés au fil pour la session en cours.
+- `/kill ` interrompt un ou tous les sous-agents en cours d’exécution.
+- `/steer ` envoie une instruction à un sous-agent en cours d’exécution. Alias : `/tell`.
+- `/config show|get|set|unset` lit ou écrit `openclaw.json`. Réservé au propriétaire. Nécessite `commands.config: true`.
+- `/mcp show|get|set|unset` lit ou écrit la configuration du serveur MCP gérée par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Nécessite `commands.mcp: true`.
+- `/plugins list|inspect|show|get|install|enable|disable` inspecte ou modifie l’état des plugins. `/plugin` est un alias. Écriture réservée au propriétaire. Nécessite `commands.plugins: true`.
+- `/debug show|set|unset|reset` gère les remplacements de configuration à l’exécution uniquement. Réservé au propriétaire. Nécessite `commands.debug: true`.
+- `/usage off|tokens|full|cost` contrôle le pied de page d’utilisation par réponse ou affiche un résumé local des coûts.
+- `/tts on|off|status|provider|limit|summary|audio|help` contrôle le TTS. Voir [/tools/tts](/fr/tools/tts).
+- `/restart` redémarre OpenClaw lorsqu’il est activé. Par défaut : activé ; définissez `commands.restart: false` pour le désactiver.
+- `/activation mention|always` définit le mode d’activation du groupe.
+- `/send on|off|inherit` définit la politique d’envoi. Réservé au propriétaire.
+- `/bash ` exécute une commande shell sur l’hôte. Texte uniquement. Alias : `! `. Nécessite `commands.bash: true` ainsi que les listes d’autorisation `tools.elevated`.
+- `!poll [sessionId]` vérifie une tâche bash en arrière-plan.
+- `!stop [sessionId]` arrête une tâche bash en arrière-plan.
+
+### Commandes dock générées
+
+Les commandes dock sont générées à partir de plugins de canal avec prise en charge des commandes natives. Ensemble inclus actuel :
+
+- `/dock-discord` (alias : `/dock_discord`)
+- `/dock-mattermost` (alias : `/dock_mattermost`)
+- `/dock-slack` (alias : `/dock_slack`)
+- `/dock-telegram` (alias : `/dock_telegram`)
+
+### Commandes des plugins inclus
+
+Les plugins inclus peuvent ajouter d’autres commandes slash. Commandes incluses actuelles dans ce dépôt :
+
+- `/dreaming [on|off|status|help]` active ou désactive le dreaming de la mémoire. Voir [Dreaming](/fr/concepts/dreaming).
+- `/pair [qr|status|pending|approve|cleanup|notify]` gère le flux d’appairage/configuration des appareils. Voir [Appairage](/fr/channels/pairing).
+- `/phone status|arm [duration]|disarm` arme temporairement les commandes de nœud téléphonique à haut risque.
+- `/voice status|list [limit]|set ` gère la configuration de voix Talk. Sur Discord, le nom de la commande native est `/talkvoice`.
+- `/card ...` envoie des préréglages de cartes riches LINE. Voir [LINE](/fr/channels/line).
+- Commandes réservées à QQBot :
+ - `/bot-ping`
+ - `/bot-version`
+ - `/bot-help`
+ - `/bot-upgrade`
+ - `/bot-logs`
+
+### Commandes de Skills dynamiques
+
+Les Skills invocables par l’utilisateur sont également exposées comme commandes slash :
+
+- `/skill [input]` fonctionne toujours comme point d’entrée générique.
+- les skills peuvent aussi apparaître comme commandes directes telles que `/prose` lorsque la skill/le plugin les enregistre.
+- l’enregistrement natif des commandes de skills est contrôlé par `commands.nativeSkills` et `channels..commands.nativeSkills`.
Remarques :
-- Les commandes acceptent un `:` facultatif entre la commande et les arguments (par ex. `/think: high`, `/send: on`, `/help:`).
-- `/new ` accepte un alias de modèle, `provider/model` ou un nom de fournisseur (correspondance approximative) ; si aucune correspondance n'est trouvée, le texte est traité comme corps du message.
-- Pour le détail complet de l'utilisation par fournisseur, utilisez `openclaw status --usage`.
+- Les commandes acceptent un `:` facultatif entre la commande et ses arguments (par ex. `/think: high`, `/send: on`, `/help:`).
+- `/new ` accepte un alias de modèle, `provider/model` ou un nom de fournisseur (correspondance approximative) ; s’il n’y a pas de correspondance, le texte est traité comme corps du message.
+- Pour la répartition complète de l’utilisation par fournisseur, utilisez `openclaw status --usage`.
- `/allowlist add|remove` nécessite `commands.config=true` et respecte `configWrites` du canal.
-- Dans les canaux multi-comptes, `/allowlist --account ` ciblé configuration et `/config set channels..accounts....` respectent aussi `configWrites` du compte cible.
-- `/usage` contrôle le pied de page d'utilisation par réponse ; `/usage cost` affiche un résumé local des coûts à partir des journaux de session OpenClaw.
+- Dans les canaux multi-comptes, `/allowlist --account ` ciblé sur la configuration et `/config set channels..accounts....` respectent également `configWrites` du compte cible.
+- `/usage` contrôle le pied de page d’utilisation par réponse ; `/usage cost` affiche un résumé local des coûts à partir des journaux de session OpenClaw.
- `/restart` est activé par défaut ; définissez `commands.restart: false` pour le désactiver.
-- Commande native Discord uniquement : `/vc join|leave|status` contrôle les canaux vocaux (nécessite `channels.discord.voice` et les commandes natives ; non disponible en texte).
-- Les commandes de liaison de fils Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) nécessitent que les liaisons de fils effectives soient activées (`session.threadBindings.enabled` et/ou `channels.discord.threadBindings.enabled`).
-- Référence des commandes ACP et comportement à l'exécution : [ACP Agents](/fr/tools/acp-agents).
-- `/verbose` est destiné au débogage et à une visibilité supplémentaire ; laissez-le **désactivé** en usage normal.
-- `/fast on|off` persiste un remplacement au niveau de la session. Utilisez l'option `inherit` de l'interface Sessions pour l'effacer et revenir aux valeurs par défaut de la configuration.
-- `/fast` est spécifique au fournisseur : OpenAI/OpenAI Codex le mappe à `service_tier=priority` sur les endpoints natifs Responses, tandis que les requêtes Anthropic publiques directes, y compris le trafic authentifié par OAuth envoyé à `api.anthropic.com`, le mappent à `service_tier=auto` ou `standard_only`. Voir [OpenAI](/fr/providers/openai) et [Anthropic](/fr/providers/anthropic).
-- Les résumés d'échec d'outil sont toujours affichés lorsqu'ils sont pertinents, mais le texte détaillé de l'échec n'est inclus que lorsque `/verbose` est `on` ou `full`.
-- `/reasoning` (et `/verbose`) sont risqués dans les contextes de groupe : ils peuvent révéler un raisonnement interne ou une sortie d'outil que vous n'aviez pas l'intention d'exposer. Il est préférable de les laisser désactivés, surtout dans les discussions de groupe.
+- `/plugins install ` accepte les mêmes spécifications de plugin que `openclaw plugins install` : chemin/archive local, paquet npm ou `clawhub:`.
+- `/plugins enable|disable` met à jour la configuration du plugin et peut demander un redémarrage.
+- Commande native réservée à Discord : `/vc join|leave|status` contrôle les canaux vocaux (nécessite `channels.discord.voice` et les commandes natives ; non disponible en tant que texte).
+- Les commandes d’association aux fils Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) exigent que les associations effectives aux fils soient activées (`session.threadBindings.enabled` et/ou `channels.discord.threadBindings.enabled`).
+- Référence des commandes ACP et comportement à l’exécution : [Agents ACP](/fr/tools/acp-agents).
+- `/verbose` est destiné au débogage et à une visibilité supplémentaire ; laissez-le **désactivé** en utilisation normale.
+- `/fast on|off` persiste un remplacement de session. Utilisez l’option `inherit` de l’interface Sessions pour l’effacer et revenir aux valeurs par défaut de la configuration.
+- `/fast` est spécifique au fournisseur : OpenAI/OpenAI Codex le mappent à `service_tier=priority` sur les points de terminaison natifs Responses, tandis que les requêtes Anthropic publiques directes, y compris le trafic authentifié par OAuth envoyé à `api.anthropic.com`, le mappent à `service_tier=auto` ou `standard_only`. Voir [OpenAI](/fr/providers/openai) et [Anthropic](/fr/providers/anthropic).
+- Les résumés d’échec d’outil sont toujours affichés lorsque c’est pertinent, mais le texte détaillé d’échec n’est inclus que lorsque `/verbose` est `on` ou `full`.
+- `/reasoning` (et `/verbose`) sont risqués en contexte de groupe : ils peuvent révéler un raisonnement interne ou une sortie d’outil que vous n’aviez pas l’intention d’exposer. Préférez les laisser désactivés, surtout dans les discussions de groupe.
- `/model` persiste immédiatement le nouveau modèle de session.
-- Si l'agent est inactif, l'exécution suivante l'utilise immédiatement.
-- Si une exécution est déjà active, OpenClaw marque un changement à chaud comme en attente et ne redémarre vers le nouveau modèle qu'à un point de reprise propre.
-- Si l'activité des outils ou la sortie de réponse a déjà commencé, le changement en attente peut rester en file jusqu'à une opportunité de reprise ultérieure ou au prochain tour utilisateur.
-- **Chemin rapide :** les messages ne contenant que des commandes envoyés par des expéditeurs sur liste d'autorisation sont traités immédiatement (contournent la file d'attente + le modèle).
-- **Filtrage par mention dans les groupes :** les messages ne contenant que des commandes envoyés par des expéditeurs sur liste d'autorisation contournent les exigences de mention.
-- **Raccourcis inline (expéditeurs sur liste d'autorisation uniquement) :** certaines commandes fonctionnent aussi lorsqu'elles sont intégrées dans un message normal et sont retirées avant que le modèle ne voie le texte restant.
- - Exemple : `hey /status` déclenche une réponse de statut, puis le texte restant continue dans le flux normal.
+- Si l’agent est inactif, l’exécution suivante l’utilise immédiatement.
+- Si une exécution est déjà active, OpenClaw marque un changement en direct comme en attente et ne redémarre sur le nouveau modèle qu’à un point de nouvelle tentative propre.
+- Si l’activité des outils ou la sortie de réponse a déjà commencé, le changement en attente peut rester en file jusqu’à une opportunité de nouvelle tentative ultérieure ou au prochain tour utilisateur.
+- **Chemin rapide :** les messages uniquement composés de commandes provenant d’expéditeurs sur liste d’autorisation sont traités immédiatement (contournent la file + le modèle).
+- **Blocage par mention de groupe :** les messages uniquement composés de commandes provenant d’expéditeurs sur liste d’autorisation contournent les exigences de mention.
+- **Raccourcis en ligne (expéditeurs sur liste d’autorisation uniquement) :** certaines commandes fonctionnent aussi lorsqu’elles sont intégrées dans un message normal et sont supprimées avant que le modèle ne voie le texte restant.
+ - Exemple : `hey /status` déclenche une réponse d’état, et le texte restant continue via le flux normal.
- Actuellement : `/help`, `/commands`, `/status`, `/whoami` (`/id`).
-- Les messages ne contenant que des commandes non autorisés sont ignorés silencieusement, et les jetons inline `/...` sont traités comme du texte brut.
-- **Commandes de skill :** les skills `user-invocable` sont exposées comme commandes slash. Les noms sont normalisés en `a-z0-9_` (32 caractères max) ; les collisions reçoivent des suffixes numériques (par ex. `_2`).
- - `/skill [input]` exécute une skill par nom (utile lorsque les limites de commandes natives empêchent d'avoir une commande par skill).
- - Par défaut, les commandes de skill sont transmises au modèle comme une requête normale.
- - Les skills peuvent déclarer facultativement `command-dispatch: tool` pour router directement la commande vers un outil (déterministe, sans modèle).
+- Les messages uniquement composés de commandes non autorisés sont ignorés silencieusement, et les jetons `/...` en ligne sont traités comme du texte brut.
+- **Commandes de skills :** les skills `user-invocable` sont exposées comme commandes slash. Les noms sont assainis en `a-z0-9_` (32 caractères max) ; les collisions reçoivent des suffixes numériques (par ex. `_2`).
+ - `/skill [input]` exécute une skill par son nom (utile lorsque les limites de commandes natives empêchent les commandes par skill).
+ - Par défaut, les commandes de skills sont transmises au modèle comme une requête normale.
+ - Les skills peuvent déclarer facultativement `command-dispatch: tool` pour acheminer directement la commande vers un outil (déterministe, sans modèle).
- Exemple : `/prose` (plugin OpenProse) — voir [OpenProse](/fr/prose).
-- **Arguments des commandes natives :** Discord utilise l'autocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments obligatoires). Telegram et Slack affichent un menu à boutons lorsqu'une commande prend en charge des choix et que vous omettez l'argument.
+- **Arguments de commandes natives :** Discord utilise l’autocomplétion pour les options dynamiques (et des menus à boutons lorsque vous omettez des arguments requis). Telegram et Slack affichent un menu à boutons lorsqu’une commande prend en charge des choix et que vous omettez l’argument.
## `/tools`
-`/tools` répond à une question d'exécution, pas à une question de configuration : **ce que cet agent peut utiliser maintenant dans
-cette conversation**.
+`/tools` répond à une question d’exécution, pas à une question de configuration : **ce que cet agent peut utiliser à cet instant
+dans cette conversation**.
-- Par défaut, `/tools` est compact et optimisé pour un balayage rapide.
+- La commande `/tools` par défaut est compacte et optimisée pour un balayage rapide.
- `/tools verbose` ajoute de courtes descriptions.
-- Les surfaces à commandes natives qui prennent en charge les arguments exposent le même changement de mode `compact|verbose`.
-- Les résultats sont limités à la session ; ainsi, changer d'agent, de canal, de fil, d'autorisation d'expéditeur ou de modèle peut
+- Les surfaces de commandes natives qui prennent en charge les arguments exposent le même changement de mode via `compact|verbose`.
+- Les résultats sont limités à la session ; changer d’agent, de canal, de fil, d’autorisation de l’expéditeur ou de modèle peut donc
modifier la sortie.
-- `/tools` inclut les outils réellement accessibles à l'exécution, y compris les outils du cœur, les outils de plugins
- connectés et les outils appartenant aux canaux.
+- `/tools` inclut les outils réellement accessibles à l’exécution, y compris les outils du cœur, les outils de plugins
+ connectés et les outils détenus par le canal.
-Pour modifier les profils et les remplacements, utilisez le panneau Tools de l'interface de contrôle ou les surfaces de configuration/catalogue plutôt
-que de traiter `/tools` comme un catalogue statique.
+Pour modifier les profils et les remplacements, utilisez le panneau Tools de la Control UI ou les surfaces de configuration/catalogue au lieu
+de traiter `/tools` comme un catalogue statique.
-## Surfaces d'utilisation (ce qui s'affiche où)
+## Surfaces d’utilisation (ce qui s’affiche où)
-- **Utilisation/quota du fournisseur** (exemple : « Claude 80% left ») s'affiche dans `/status` pour le fournisseur de modèle actuel lorsque le suivi d'utilisation est activé. OpenClaw normalise les fenêtres des fournisseurs en `% left` ; pour MiniMax, les champs de pourcentage « restant uniquement » sont inversés avant affichage, et les réponses `model_remains` privilégient l'entrée du modèle de chat plus un libellé de plan marqué par le modèle.
-- **Lignes tokens/cache** dans `/status` peuvent se rabattre sur la dernière entrée d'utilisation du transcript lorsque l'instantané de session en direct est peu rempli. Les valeurs en direct non nulles existantes restent prioritaires, et ce repli sur le transcript peut aussi récupérer l'étiquette du modèle d'exécution actif ainsi qu'un total plus important orienté prompt lorsque les totaux stockés sont absents ou plus faibles.
-- **Tokens/coût par réponse** est contrôlé par `/usage off|tokens|full` (ajouté aux réponses normales).
-- `/model status` concerne les **modèles/authentification/endpoints**, pas l'utilisation.
+- **Utilisation/quota du fournisseur** (exemple : « Claude 80 % restants ») apparaît dans `/status` pour le fournisseur du modèle actuel lorsque le suivi d’utilisation est activé. OpenClaw normalise les fenêtres des fournisseurs en `% restants` ; pour MiniMax, les champs de pourcentage restants uniquement sont inversés avant l’affichage, et les réponses `model_remains` privilégient l’entrée du modèle de chat avec une étiquette de forfait marquée par le modèle.
+- **Lignes de jetons/cache** dans `/status` peuvent revenir à la dernière entrée d’utilisation de la transcription lorsque l’instantané de session en direct est incomplet. Les valeurs en direct non nulles existantes restent prioritaires, et ce repli sur la transcription peut aussi récupérer l’étiquette du modèle d’exécution actif ainsi qu’un total orienté prompt plus élevé lorsque les totaux stockés sont absents ou plus faibles.
+- **Jetons/coût par réponse** est contrôlé par `/usage off|tokens|full` (ajouté aux réponses normales).
+- `/model status` concerne les **modèles/l’authentification/les points de terminaison**, pas l’utilisation.
## Sélection du modèle (`/model`)
@@ -213,13 +251,13 @@ Exemples :
Remarques :
- `/model` et `/model list` affichent un sélecteur compact numéroté (famille de modèles + fournisseurs disponibles).
-- Sur Discord, `/model` et `/models` ouvrent un sélecteur interactif avec des menus déroulants pour le fournisseur et le modèle, puis une étape Submit.
-- `/model <#>` sélectionne depuis ce sélecteur (et privilégie le fournisseur actuel quand c'est possible).
-- `/model status` affiche la vue détaillée, y compris l'endpoint du fournisseur configuré (`baseUrl`) et le mode API (`api`) lorsque disponibles.
+- Sur Discord, `/model` et `/models` ouvrent un sélecteur interactif avec listes déroulantes de fournisseur et de modèle ainsi qu’une étape Submit.
+- `/model <#>` sélectionne depuis ce sélecteur (et privilégie le fournisseur actuel lorsque c’est possible).
+- `/model status` affiche la vue détaillée, y compris le point de terminaison configuré du fournisseur (`baseUrl`) et le mode API (`api`) lorsque disponibles.
## Remplacements de débogage
-`/debug` vous permet de définir des remplacements de configuration **à l'exécution uniquement** (en mémoire, pas sur disque). Propriétaire uniquement. Désactivé par défaut ; activez-le avec `commands.debug: true`.
+`/debug` vous permet de définir des remplacements de configuration **uniquement à l’exécution** (en mémoire, pas sur disque). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.debug: true`.
Exemples :
@@ -233,12 +271,12 @@ Exemples :
Remarques :
-- Les remplacements s'appliquent immédiatement aux nouvelles lectures de configuration, mais n'écrivent **pas** dans `openclaw.json`.
+- Les remplacements s’appliquent immédiatement aux nouvelles lectures de configuration, mais n’écrivent **pas** dans `openclaw.json`.
- Utilisez `/debug reset` pour effacer tous les remplacements et revenir à la configuration sur disque.
## Mises à jour de configuration
-`/config` écrit dans votre configuration sur disque (`openclaw.json`). Propriétaire uniquement. Désactivé par défaut ; activez-le avec `commands.config: true`.
+`/config` écrit dans votre configuration sur disque (`openclaw.json`). Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.config: true`.
Exemples :
@@ -252,12 +290,12 @@ Exemples :
Remarques :
-- La configuration est validée avant l'écriture ; les modifications invalides sont rejetées.
-- Les mises à jour `/config` persistent après les redémarrages.
+- La configuration est validée avant écriture ; les modifications invalides sont rejetées.
+- Les mises à jour `/config` persistent après redémarrage.
## Mises à jour MCP
-`/mcp` écrit les définitions de serveurs MCP gérées par OpenClaw sous `mcp.servers`. Propriétaire uniquement. Désactivé par défaut ; activez-le avec `commands.mcp: true`.
+`/mcp` écrit les définitions de serveur MCP gérées par OpenClaw sous `mcp.servers`. Réservé au propriétaire. Désactivé par défaut ; activez-le avec `commands.mcp: true`.
Exemples :
@@ -270,12 +308,12 @@ Exemples :
Remarques :
-- `/mcp` stocke la configuration dans la configuration OpenClaw, et non dans les paramètres de projet appartenant à Pi.
-- Les adaptateurs d'exécution déterminent quels transports sont réellement exécutables.
+- `/mcp` stocke la configuration dans la configuration OpenClaw, et non dans les paramètres de projet détenus par Pi.
+- Les adaptateurs d’exécution décident quels transports sont réellement exécutables.
-## Mises à jour des plugins
+## Mises à jour de plugins
-`/plugins` permet aux opérateurs d'inspecter les plugins découverts et de basculer leur activation dans la configuration. Les flux en lecture seule peuvent utiliser `/plugin` comme alias. Désactivé par défaut ; activez-le avec `commands.plugins: true`.
+`/plugins` permet aux opérateurs d’inspecter les plugins découverts et d’activer/désactiver leur statut dans la configuration. Les flux en lecture seule peuvent utiliser `/plugin` comme alias. Désactivé par défaut ; activez-le avec `commands.plugins: true`.
Exemples :
@@ -289,32 +327,32 @@ Exemples :
Remarques :
-- `/plugins list` et `/plugins show` utilisent la vraie découverte de plugins sur l'espace de travail actuel ainsi que la configuration sur disque.
-- `/plugins enable|disable` met à jour uniquement la configuration des plugins ; il n'installe ni ne désinstalle les plugins.
-- Après des changements d'activation/désactivation, redémarrez la passerelle pour les appliquer.
+- `/plugins list` et `/plugins show` utilisent la découverte réelle des plugins par rapport à l’espace de travail actuel et à la configuration sur disque.
+- `/plugins enable|disable` met à jour uniquement la configuration du plugin ; cela n’installe ni ne désinstalle les plugins.
+- Après des modifications d’activation/désactivation, redémarrez la gateway pour les appliquer.
## Remarques sur les surfaces
-- **Les commandes texte** s'exécutent dans la session de chat normale (les messages privés partagent `main`, les groupes ont leur propre session).
-- **Les commandes natives** utilisent des sessions isolées :
+- **Commandes texte** s’exécutent dans la session de chat normale (les DM partagent `main`, les groupes ont leur propre session).
+- **Commandes natives** utilisent des sessions isolées :
- Discord : `agent::discord:slash:`
- Slack : `agent::slack:slash:` (préfixe configurable via `channels.slack.slashCommand.sessionPrefix`)
- - Telegram : `telegram:slash:` (cible la session de chat via `CommandTargetSessionKey`)
-- **`/stop`** cible la session de chat active afin de pouvoir interrompre l'exécution en cours.
-- **Slack :** `channels.slack.slashCommand` reste pris en charge pour une seule commande de type `/openclaw`. Si vous activez `commands.native`, vous devez créer une commande slash Slack par commande intégrée (mêmes noms que `/help`). Les menus d'arguments de commande pour Slack sont fournis sous forme de boutons Block Kit éphémères.
- - Exception native Slack : enregistrez `/agentstatus` (pas `/status`) car Slack réserve `/status`. La commande texte `/status` fonctionne toujours dans les messages Slack.
+ - Telegram : `telegram:slash:` (cible la session du chat via `CommandTargetSessionKey`)
+- **`/stop`** cible la session de chat active afin de pouvoir interrompre l’exécution en cours.
+- **Slack :** `channels.slack.slashCommand` reste pris en charge pour une commande unique de type `/openclaw`. Si vous activez `commands.native`, vous devez créer une commande slash Slack par commande intégrée (mêmes noms que `/help`). Les menus d’arguments de commande pour Slack sont fournis sous forme de boutons Block Kit éphémères.
+ - Exception native Slack : enregistrez `/agentstatus` (et non `/status`) car Slack réserve `/status`. La commande texte `/status` fonctionne toujours dans les messages Slack.
-## Questions latérales BTW
+## Questions annexes BTW
-`/btw` est une **question latérale** rapide à propos de la session actuelle.
+`/btw` est une **question annexe** rapide à propos de la session en cours.
-Contrairement au chat normal :
+Contrairement à un chat normal :
-- il utilise la session actuelle comme contexte de fond,
-- il s'exécute comme un appel ponctuel séparé **sans outils**,
-- il ne modifie pas le contexte futur de la session,
-- il n'est pas écrit dans l'historique du transcript,
-- il est livré comme un résultat latéral en direct plutôt que comme un message assistant normal.
+- elle utilise la session actuelle comme contexte de fond,
+- elle s’exécute comme un appel ponctuel distinct **sans outil**,
+- elle ne modifie pas le contexte futur de la session,
+- elle n’est pas écrite dans l’historique de la transcription,
+- elle est fournie comme résultat annexe en direct au lieu d’un message assistant normal.
Cela rend `/btw` utile lorsque vous voulez une clarification temporaire pendant que la
tâche principale continue.
@@ -322,8 +360,8 @@ tâche principale continue.
Exemple :
```text
-/btw what are we doing right now?
+/btw qu’est-ce qu’on fait en ce moment ?
```
-Consultez [BTW Side Questions](/fr/tools/btw) pour le comportement complet et les détails
-de l'expérience client.
+Voir [Questions annexes BTW](/fr/tools/btw) pour le comportement complet et les
+détails UX côté client.
diff --git a/docs/fr/tools/tts.md b/docs/fr/tools/tts.md
index 2887a8223..29d66c6eb 100644
--- a/docs/fr/tools/tts.md
+++ b/docs/fr/tools/tts.md
@@ -1,22 +1,22 @@
---
read_when:
- - Activation de la synthèse vocale pour les réponses
- - Configuration des fournisseurs TTS ou des limites
- - Utilisation des commandes /tts
+ - Activer la synthèse vocale pour les réponses
+ - Configurer les fournisseurs TTS ou les limites
+ - Utiliser les commandes /tts
summary: Synthèse vocale (TTS) pour les réponses sortantes
title: Synthèse vocale
x-i18n:
- generated_at: "2026-04-05T12:58:15Z"
+ generated_at: "2026-04-08T06:01:59Z"
model: gpt-5.4
provider: openai
- source_hash: 8487c8acef7585bd4eb5e3b39e2a063ebc6b5f0103524abdcbadd3a7781ffc46
+ source_hash: 6e0fbcaf61282733c134f682e05a71f94d2169c03a85131ce9ad233c71a1e533
source_path: tools/tts.md
workflow: 15
---
# Synthèse vocale (TTS)
-OpenClaw peut convertir les réponses sortantes en audio à l’aide de ElevenLabs, Microsoft, MiniMax ou OpenAI.
+OpenClaw peut convertir les réponses sortantes en audio avec ElevenLabs, Microsoft, MiniMax ou OpenAI.
Cela fonctionne partout où OpenClaw peut envoyer de l’audio.
## Services pris en charge
@@ -26,22 +26,22 @@ Cela fonctionne partout où OpenClaw peut envoyer de l’audio.
- **MiniMax** (fournisseur principal ou de secours ; utilise l’API T2A v2)
- **OpenAI** (fournisseur principal ou de secours ; également utilisé pour les résumés)
-### Notes sur la synthèse vocale Microsoft
+### Remarques sur la synthèse vocale Microsoft
Le fournisseur de synthèse vocale Microsoft groupé utilise actuellement le service
TTS neuronal en ligne de Microsoft Edge via la bibliothèque `node-edge-tts`. Il s’agit d’un service hébergé (non
-local), qui utilise des endpoints Microsoft et ne nécessite pas de clé API.
-`node-edge-tts` expose des options de configuration vocale et des formats de sortie, mais
+local), qui utilise les points de terminaison Microsoft et ne nécessite pas de clé API.
+`node-edge-tts` expose des options de configuration de la parole et des formats de sortie, mais
toutes les options ne sont pas prises en charge par le service. La configuration héritée et les entrées de directive
-utilisant `edge` continuent de fonctionner et sont normalisées vers `microsoft`.
+utilisant `edge` fonctionnent toujours et sont normalisées en `microsoft`.
Comme ce chemin repose sur un service web public sans SLA ni quota publiés,
-considérez-le comme un effort au mieux. Si vous avez besoin de limites garanties et d’assistance, utilisez OpenAI
+considérez-le comme du meilleur effort. Si vous avez besoin de limites garanties et d’un support, utilisez OpenAI
ou ElevenLabs.
## Clés facultatives
-Si vous voulez utiliser OpenAI, ElevenLabs ou MiniMax :
+Si vous voulez OpenAI, ElevenLabs ou MiniMax :
- `ELEVENLABS_API_KEY` (ou `XI_API_KEY`)
- `MINIMAX_API_KEY`
@@ -49,11 +49,11 @@ Si vous voulez utiliser OpenAI, ElevenLabs ou MiniMax :
La synthèse vocale Microsoft ne nécessite **pas** de clé API.
-Si plusieurs fournisseurs sont configurés, le fournisseur sélectionné est utilisé en premier et les autres servent de solution de secours.
+Si plusieurs fournisseurs sont configurés, le fournisseur sélectionné est utilisé en premier et les autres servent de solutions de secours.
Le résumé automatique utilise le `summaryModel` configuré (ou `agents.defaults.model.primary`),
donc ce fournisseur doit également être authentifié si vous activez les résumés.
-## Liens de service
+## Liens vers les services
- [Guide OpenAI Text-to-Speech](https://platform.openai.com/docs/guides/text-to-speech)
- [Référence de l’API Audio OpenAI](https://platform.openai.com/docs/api-reference/audio)
@@ -66,15 +66,15 @@ donc ce fournisseur doit également être authentifié si vous activez les résu
## Est-ce activé par défaut ?
Non. L’auto‑TTS est **désactivé** par défaut. Activez-le dans la configuration avec
-`messages.tts.auto` ou par session avec `/tts always` (alias : `/tts on`).
+`messages.tts.auto` ou localement avec `/tts on`.
Lorsque `messages.tts.provider` n’est pas défini, OpenClaw choisit le premier
-fournisseur vocal configuré selon l’ordre de sélection automatique du registre.
+fournisseur de synthèse vocale configuré selon l’ordre d’auto-sélection du registre.
## Configuration
La configuration TTS se trouve sous `messages.tts` dans `openclaw.json`.
-Le schéma complet se trouve dans [Configuration de la gateway](/fr/gateway/configuration).
+Le schéma complet se trouve dans [Configuration de la passerelle](/fr/gateway/configuration).
### Configuration minimale (activation + fournisseur)
@@ -232,56 +232,56 @@ Le schéma complet se trouve dans [Configuration de la gateway](/fr/gateway/conf
}
```
-Puis exécutez :
+Ensuite, exécutez :
```
/tts summary off
```
-### Notes sur les champs
+### Remarques sur les champs
- `auto` : mode auto‑TTS (`off`, `always`, `inbound`, `tagged`).
- - `inbound` n’envoie de l’audio qu’après un message vocal entrant.
- - `tagged` n’envoie de l’audio que lorsque la réponse inclut des balises `[[tts]]`.
+ - `inbound` envoie de l’audio uniquement après un message vocal entrant.
+ - `tagged` envoie de l’audio uniquement lorsque la réponse inclut des balises `[[tts]]`.
- `enabled` : bascule héritée (doctor la migre vers `auto`).
-- `mode` : `"final"` (par défaut) ou `"all"` (inclut les réponses d’outils/blocs).
-- `provider` : id du fournisseur vocal tel que `"elevenlabs"`, `"microsoft"`, `"minimax"` ou `"openai"` (la solution de secours est automatique).
-- Si `provider` n’est **pas défini**, OpenClaw utilise le premier fournisseur vocal configuré selon l’ordre de sélection automatique du registre.
-- L’ancien `provider: "edge"` fonctionne toujours et est normalisé vers `microsoft`.
-- `summaryModel` : modèle économique facultatif pour le résumé automatique ; la valeur par défaut est `agents.defaults.model.primary`.
+- `mode` : `"final"` (par défaut) ou `"all"` (inclut les réponses d’outil/par blocs).
+- `provider` : identifiant du fournisseur vocal tel que `"elevenlabs"`, `"microsoft"`, `"minimax"` ou `"openai"` (le basculement en secours est automatique).
+- Si `provider` n’est **pas défini**, OpenClaw utilise le premier fournisseur vocal configuré selon l’ordre d’auto-sélection du registre.
+- L’ancien `provider: "edge"` fonctionne toujours et est normalisé en `microsoft`.
+- `summaryModel` : modèle économique facultatif pour le résumé automatique ; par défaut `agents.defaults.model.primary`.
- Accepte `provider/model` ou un alias de modèle configuré.
-- `modelOverrides` : autoriser le modèle à émettre des directives TTS (activé par défaut).
- - `allowProvider` vaut par défaut `false` (le changement de fournisseur se fait par adhésion explicite).
-- `providers.` : paramètres détenus par le fournisseur, indexés par id de fournisseur vocal.
-- Les anciens blocs de fournisseur directs (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) sont automatiquement migrés vers `messages.tts.providers.` au chargement.
-- `maxTextLength` : limite stricte pour l’entrée TTS (caractères). `/tts audio` échoue si elle est dépassée.
+- `modelOverrides` : permet au modèle d’émettre des directives TTS (activé par défaut).
+ - `allowProvider` vaut `false` par défaut (le changement de fournisseur est activé explicitement).
+- `providers.` : paramètres appartenant au fournisseur, indexés par identifiant de fournisseur vocal.
+- Les blocs de fournisseur hérités directs (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) sont automatiquement migrés vers `messages.tts.providers.` au chargement.
+- `maxTextLength` : limite stricte de l’entrée TTS (caractères). `/tts audio` échoue si elle est dépassée.
- `timeoutMs` : délai d’expiration de la requête (ms).
-- `prefsPath` : remplace le chemin JSON local des préférences (fournisseur/limite/résumé).
-- Les valeurs `apiKey` reviennent aux variables d’environnement (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`).
+- `prefsPath` : remplace le chemin du JSON local des préférences (fournisseur/limite/résumé).
+- Les valeurs `apiKey` se replient sur les variables d’environnement (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`).
- `providers.elevenlabs.baseUrl` : remplace l’URL de base de l’API ElevenLabs.
-- `providers.openai.baseUrl` : remplace l’endpoint TTS OpenAI.
+- `providers.openai.baseUrl` : remplace le point de terminaison TTS OpenAI.
- Ordre de résolution : `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1`
- - Les valeurs non par défaut sont traitées comme des endpoints TTS compatibles OpenAI, donc les noms personnalisés de modèle et de voix sont acceptés.
+ - Les valeurs non par défaut sont traitées comme des points de terminaison TTS compatibles OpenAI ; les noms de modèle et de voix personnalisés sont donc acceptés.
- `providers.elevenlabs.voiceSettings` :
- `stability`, `similarityBoost`, `style` : `0..1`
- `useSpeakerBoost` : `true|false`
- - `speed` : `0.5..2.0` (`1.0` = normal)
+ - `speed` : `0.5..2.0` (1.0 = normal)
- `providers.elevenlabs.applyTextNormalization` : `auto|on|off`
-- `providers.elevenlabs.languageCode` : ISO 639-1 à 2 lettres (par exemple `en`, `de`)
-- `providers.elevenlabs.seed` : entier `0..4294967295` (déterminisme au mieux)
+- `providers.elevenlabs.languageCode` : ISO 639-1 à 2 lettres (par ex. `en`, `de`)
+- `providers.elevenlabs.seed` : entier `0..4294967295` (déterminisme meilleur effort)
- `providers.minimax.baseUrl` : remplace l’URL de base de l’API MiniMax (par défaut `https://api.minimax.io`, env : `MINIMAX_API_HOST`).
- `providers.minimax.model` : modèle TTS (par défaut `speech-2.8-hd`, env : `MINIMAX_TTS_MODEL`).
- `providers.minimax.voiceId` : identifiant de voix (par défaut `English_expressive_narrator`, env : `MINIMAX_TTS_VOICE_ID`).
- `providers.minimax.speed` : vitesse de lecture `0.5..2.0` (par défaut 1.0).
- `providers.minimax.vol` : volume `(0, 10]` (par défaut 1.0 ; doit être supérieur à 0).
- `providers.minimax.pitch` : décalage de hauteur `-12..12` (par défaut 0).
-- `providers.microsoft.enabled` : autoriser l’utilisation de la synthèse vocale Microsoft (par défaut `true` ; pas de clé API).
-- `providers.microsoft.voice` : nom de voix neurale Microsoft (par exemple `en-US-MichelleNeural`).
-- `providers.microsoft.lang` : code langue (par exemple `en-US`).
-- `providers.microsoft.outputFormat` : format de sortie Microsoft (par exemple `audio-24khz-48kbitrate-mono-mp3`).
- - Voir les formats de sortie Microsoft Speech pour les valeurs valides ; tous les formats ne sont pas pris en charge par le transport groupé adossé à Edge.
-- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume` : chaînes de pourcentage (par exemple `+10%`, `-5%`).
-- `providers.microsoft.saveSubtitles` : écrire des sous-titres JSON à côté du fichier audio.
+- `providers.microsoft.enabled` : autorise l’utilisation de la synthèse vocale Microsoft (par défaut `true` ; sans clé API).
+- `providers.microsoft.voice` : nom de voix neuronale Microsoft (par ex. `en-US-MichelleNeural`).
+- `providers.microsoft.lang` : code de langue (par ex. `en-US`).
+- `providers.microsoft.outputFormat` : format de sortie Microsoft (par ex. `audio-24khz-48kbitrate-mono-mp3`).
+ - Consultez les formats de sortie Microsoft Speech pour connaître les valeurs valides ; tous les formats ne sont pas pris en charge par le transport groupé basé sur Edge.
+- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume` : chaînes de pourcentage (par ex. `+10%`, `-5%`).
+- `providers.microsoft.saveSubtitles` : écrit des sous-titres JSON à côté du fichier audio.
- `providers.microsoft.proxy` : URL de proxy pour les requêtes de synthèse vocale Microsoft.
- `providers.microsoft.timeoutMs` : remplacement du délai d’expiration de la requête (ms).
- `edge.*` : alias hérité pour les mêmes paramètres Microsoft.
@@ -289,16 +289,16 @@ Puis exécutez :
## Remplacements pilotés par le modèle (activés par défaut)
Par défaut, le modèle **peut** émettre des directives TTS pour une seule réponse.
-Lorsque `messages.tts.auto` vaut `tagged`, ces directives sont nécessaires pour déclencher l’audio.
+Lorsque `messages.tts.auto` vaut `tagged`, ces directives sont requises pour déclencher l’audio.
Lorsqu’elle est activée, le modèle peut émettre des directives `[[tts:...]]` pour remplacer la voix
pour une seule réponse, ainsi qu’un bloc facultatif `[[tts:text]]...[[/tts:text]]` pour
-fournir des balises expressives (rire, indications de chant, etc.) qui ne doivent apparaître que dans
+fournir des balises expressives (rires, indications de chant, etc.) qui ne doivent apparaître que dans
l’audio.
Les directives `provider=...` sont ignorées sauf si `modelOverrides.allowProvider: true`.
-Exemple de payload de réponse :
+Exemple de charge utile de réponse :
```
Here you go.
@@ -309,9 +309,9 @@ Here you go.
Clés de directive disponibles (lorsqu’elles sont activées) :
-- `provider` (id de fournisseur vocal enregistré, par exemple `openai`, `elevenlabs`, `minimax` ou `microsoft` ; nécessite `allowProvider: true`)
+- `provider` (identifiant de fournisseur vocal enregistré, par exemple `openai`, `elevenlabs`, `minimax` ou `microsoft` ; nécessite `allowProvider: true`)
- `voice` (voix OpenAI) ou `voiceId` (ElevenLabs / MiniMax)
-- `model` (modèle TTS OpenAI, id de modèle ElevenLabs ou modèle MiniMax)
+- `model` (modèle TTS OpenAI, identifiant de modèle ElevenLabs ou modèle MiniMax)
- `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost`
- `vol` / `volume` (volume MiniMax, 0-10)
- `pitch` (hauteur MiniMax, -12 à 12)
@@ -333,7 +333,7 @@ Désactiver tous les remplacements du modèle :
}
```
-Liste d’autorisation facultative (activer le changement de fournisseur tout en gardant les autres réglages configurables) :
+Liste d’autorisations facultative (activer le changement de fournisseur tout en gardant les autres paramètres configurables) :
```json5
{
@@ -362,31 +362,31 @@ Champs stockés :
- `maxLength` (seuil de résumé ; 1500 caractères par défaut)
- `summarize` (`true` par défaut)
-Ceux-ci remplacent `messages.tts.*` pour cet hôte.
+Ils remplacent `messages.tts.*` pour cet hôte.
## Formats de sortie (fixes)
-- **Feishu / Matrix / Telegram / WhatsApp** : message vocal Opus (`opus_48000_64` provenant de ElevenLabs, `opus` provenant de OpenAI).
- - 48 kHz / 64 kb/s constitue un bon compromis pour les messages vocaux.
-- **Autres canaux** : MP3 (`mp3_44100_128` provenant de ElevenLabs, `mp3` provenant de OpenAI).
- - 44,1 kHz / 128 kb/s est l’équilibre par défaut pour la clarté de la parole.
-- **MiniMax** : MP3 (modèle `speech-2.8-hd`, fréquence d’échantillonnage 32 kHz). Le format note vocale n’est pas pris en charge nativement ; utilisez OpenAI ou ElevenLabs pour des messages vocaux Opus garantis.
+- **Feishu / Matrix / Telegram / WhatsApp** : message vocal Opus (`opus_48000_64` d’ElevenLabs, `opus` d’OpenAI).
+ - 48kHz / 64kbps offre un bon compromis pour un message vocal.
+- **Autres canaux** : MP3 (`mp3_44100_128` d’ElevenLabs, `mp3` d’OpenAI).
+ - 44.1kHz / 128kbps est l’équilibre par défaut pour la clarté de la parole.
+- **MiniMax** : MP3 (modèle `speech-2.8-hd`, fréquence d’échantillonnage 32kHz). Le format note vocale n’est pas pris en charge nativement ; utilisez OpenAI ou ElevenLabs pour des messages vocaux Opus garantis.
- **Microsoft** : utilise `microsoft.outputFormat` (par défaut `audio-24khz-48kbitrate-mono-mp3`).
- Le transport groupé accepte un `outputFormat`, mais tous les formats ne sont pas disponibles depuis le service.
- Les valeurs de format de sortie suivent les formats de sortie Microsoft Speech (y compris Ogg/WebM Opus).
- - Telegram `sendVoice` accepte OGG/MP3/M4A ; utilisez OpenAI/ElevenLabs si vous avez besoin
+ - `sendVoice` de Telegram accepte OGG/MP3/M4A ; utilisez OpenAI/ElevenLabs si vous avez besoin
de messages vocaux Opus garantis.
- Si le format de sortie Microsoft configuré échoue, OpenClaw réessaie avec MP3.
Les formats de sortie OpenAI/ElevenLabs sont fixes par canal (voir ci-dessus).
-## Comportement de l’auto-TTS
+## Comportement auto-TTS
-Lorsqu’il est activé, OpenClaw :
+Lorsqu’elle est activée, OpenClaw :
-- ignore TTS si la réponse contient déjà un média ou une directive `MEDIA:`.
+- ignore la TTS si la réponse contient déjà un média ou une directive `MEDIA:`.
- ignore les réponses très courtes (< 10 caractères).
-- résume les réponses longues lorsque cette option est activée à l’aide de `agents.defaults.model.primary` (ou `summaryModel`).
+- résume les réponses longues lorsqu’elle est activée en utilisant `agents.defaults.model.primary` (ou `summaryModel`).
- joint l’audio généré à la réponse.
Si la réponse dépasse `maxLength` et que le résumé est désactivé (ou qu’il n’y a pas de clé API pour le
@@ -396,31 +396,29 @@ est ignoré et la réponse texte normale est envoyée.
## Diagramme de flux
```
-Réponse -> TTS activé ?
- non -> envoyer le texte
- oui -> contient un média / MEDIA: / court ?
- oui -> envoyer le texte
- non -> longueur > limite ?
- non -> TTS -> joindre l’audio
- oui -> résumé activé ?
- non -> envoyer le texte
- oui -> résumer (summaryModel ou agents.defaults.model.primary)
- -> TTS -> joindre l’audio
+Reply -> TTS enabled?
+ no -> send text
+ yes -> has media / MEDIA: / short?
+ yes -> send text
+ no -> length > limit?
+ no -> TTS -> attach audio
+ yes -> summary enabled?
+ no -> send text
+ yes -> summarize (summaryModel or agents.defaults.model.primary)
+ -> TTS -> attach audio
```
-## Utilisation des commandes slash
+## Utilisation de la commande slash
Il existe une seule commande : `/tts`.
-Voir [Commandes slash](/tools/slash-commands) pour les détails d’activation.
+Voir [Commandes slash](/fr/tools/slash-commands) pour les détails d’activation.
-Note Discord : `/tts` est une commande Discord intégrée, donc OpenClaw enregistre
+Remarque Discord : `/tts` est une commande Discord intégrée, donc OpenClaw enregistre
`/voice` comme commande native à cet endroit. Le texte `/tts ...` fonctionne toujours.
```
/tts off
-/tts always
-/tts inbound
-/tts tagged
+/tts on
/tts status
/tts provider openai
/tts limit 2000
@@ -428,28 +426,30 @@ Note Discord : `/tts` est une commande Discord intégrée, donc OpenClaw enregis
/tts audio Hello from OpenClaw
```
-Notes :
+Remarques :
- Les commandes nécessitent un expéditeur autorisé (les règles de liste d’autorisation/propriétaire s’appliquent toujours).
- `commands.text` ou l’enregistrement de commandes natives doit être activé.
-- `off|always|inbound|tagged` sont des bascules par session (`/tts on` est un alias pour `/tts always`).
+- La configuration `messages.tts.auto` accepte `off|always|inbound|tagged`.
+- `/tts on` écrit la préférence TTS locale sur `always` ; `/tts off` l’écrit sur `off`.
+- Utilisez la configuration si vous voulez des valeurs par défaut `inbound` ou `tagged`.
- `limit` et `summary` sont stockés dans les préférences locales, pas dans la configuration principale.
-- `/tts audio` génère une réponse audio ponctuelle (n’active pas TTS).
-- `/tts status` inclut la visibilité de secours pour la dernière tentative :
+- `/tts audio` génère une réponse audio ponctuelle (cela n’active pas la TTS).
+- `/tts status` inclut la visibilité du secours pour la dernière tentative :
- secours réussi : `Fallback: -> ` plus `Attempts: ...`
- échec : `Error: ...` plus `Attempts: ...`
- diagnostics détaillés : `Attempt details: provider:outcome(reasonCode) latency`
-- Les échecs d’API OpenAI et ElevenLabs incluent désormais le détail d’erreur analysé du fournisseur et l’id de requête (lorsqu’il est renvoyé par le fournisseur), qui apparaissent dans les erreurs/journaux TTS.
+- Les échecs d’API OpenAI et ElevenLabs incluent désormais les détails d’erreur du fournisseur analysés et l’identifiant de requête (lorsqu’il est renvoyé par le fournisseur), qui apparaissent dans les erreurs/journaux TTS.
## Outil d’agent
L’outil `tts` convertit du texte en parole et renvoie une pièce jointe audio pour
-la distribution de la réponse. Lorsque le canal est Feishu, Matrix, Telegram ou WhatsApp,
-l’audio est distribué sous forme de message vocal plutôt que de pièce jointe de fichier.
+la livraison de la réponse. Lorsque le canal est Feishu, Matrix, Telegram ou WhatsApp,
+l’audio est livré comme message vocal plutôt que comme pièce jointe de fichier.
-## RPC gateway
+## RPC Gateway
-Méthodes de gateway :
+Méthodes Gateway :
- `tts.status`
- `tts.enable`