Configuration
OpenClaw lit une configuration 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 :
- 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
Configuration minimale
Modifier la configuration
- Assistant interactif
- CLI (une ligne)
- Interface utilisateur de contrôle
- Modification directe
Validation stricte
Remarques sur les outils de schéma :openclaw config schemaaffiche 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
titleetdescriptionsont 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/allOfhé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.lookuprenvoie 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.
- La gateway ne démarre pas
- Seules les commandes de diagnostic fonctionnent (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Exécutez
openclaw doctorpour voir les problèmes exacts - Exécutez
openclaw doctor --fix(ou--yes) pour appliquer les réparations
Tâches courantes
Configurer un canal (WhatsApp, Telegram, Discord, etc.)
Configurer un canal (WhatsApp, Telegram, Discord, etc.)
channels.<provider>. Consultez la page du canal concerné pour les étapes de configuration :- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Choisir et configurer des modèles
Choisir et configurer des modèles
agents.defaults.modelsdéfinit le catalogue de modèles et agit comme liste d’autorisation pour/model.- Les références de modèle utilisent le format
provider/model(par exempleanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxcontrôle le redimensionnement des images dans les transcriptions/outils (valeur par défaut1200) ; 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 pour changer de modèle dans le chat et Bascule de modèle pour le comportement de rotation d’authentification et de repli.
- Pour les fournisseurs personnalisés/autohébergés, voir Fournisseurs personnalisés dans la référence.
Contrôler qui peut envoyer des messages au bot
Contrôler qui peut envoyer des messages au bot
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 dansallowFrom(ou le magasin d’autorisations de jumelage)"open": autoriser tous les DMs entrants (nécessiteallowFrom: ["*"])"disabled": ignorer tous les DMs
groupPolicy + groupAllowFrom ou les listes d’autorisation spécifiques au canal.Voir la référence complète pour les détails par canal.Configurer le filtrage par mention dans les discussions de groupe
Configurer le filtrage par mention dans les discussions de groupe
- Mentions de métadonnées : @mentions natives (WhatsApp tap-to-mention, Telegram @bot, etc.)
- Motifs textuels : motifs regex sûrs dans
mentionPatterns - Voir la référence complète pour les remplacements par canal et le mode d’auto-chat.
Restreindre les Skills par agent
Restreindre les Skills par agent
agents.defaults.skills comme base partagée, puis remplacez-la pour des agents spécifiques avec agents.list[].skills :- Omettez
agents.defaults.skillspour autoriser tous les Skills par défaut. - Omettez
agents.list[].skillspour hériter des valeurs par défaut. - Définissez
agents.list[].skills: []pour n’autoriser aucun Skill. - Voir Skills, Configuration des Skills et la Référence de configuration.
Ajuster la surveillance de l'état des canaux de la gateway
Ajuster la surveillance de l'état des canaux de la gateway
- Définissez
gateway.channelHealthCheckMinutes: 0pour désactiver globalement les redémarrages du moniteur d’état. channelStaleEventThresholdMinutesdoit être supérieur ou égal à l’intervalle de vérification.- Utilisez
channels.<provider>.healthMonitor.enabledouchannels.<provider>.accounts.<id>.healthMonitor.enabledpour désactiver les redémarrages automatiques pour un canal ou un compte sans désactiver le moniteur global. - Voir Vérifications d’état pour le débogage opérationnel et la référence complète pour tous les champs.
Configurer les sessions et les réinitialisations
Configurer les sessions et les réinitialisations
dmScope:main(partagé) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: valeurs par défaut globales pour le routage de sessions liées à un fil (Discord prend en charge/focus,/unfocus,/agents,/session idleet/session max-age).- Voir Gestion des sessions pour la portée, les liens d’identité et la politique d’envoi.
- Voir la référence complète pour tous les champs.
Activer le sandboxing
Activer le sandboxing
scripts/sandbox-setup.shVoir Sandboxing pour le guide complet et la référence complète pour toutes les options.Activer le push adossé au relais pour les builds iOS officiels
Activer le push adossé au relais pour les builds iOS officiels
openclaw.json.Définissez ceci dans la configuration gateway :- 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.
- Installez un build iOS officiel/TestFlight compilé avec la même URL de base de relais.
- Configurez
gateway.push.apns.relay.baseUrlsur la gateway. - Jumelez l’application iOS à la gateway et laissez les sessions node et operator se connecter.
- 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.registeradossée au relais à la gateway jumelée. - 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.
- 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.
OPENCLAW_APNS_RELAY_BASE_URLetOPENCLAW_APNS_RELAY_TIMEOUT_MSfonctionnent toujours comme remplacements d’environnement temporaires.OPENCLAW_APNS_RELAY_ALLOW_HTTP=truereste une solution de développement limitée à local loopback ; ne conservez pas d’URL de relais HTTP dans la configuration.
Configurer heartbeat (check-ins périodiques)
Configurer heartbeat (check-ins périodiques)
every: chaîne de durée (30m,2h). Définissez0mpour désactiver.target:last|none|<channel-id>(par exemplediscord,matrix,telegramouwhatsapp)directPolicy:allow(par défaut) oublockpour les cibles de heartbeat de type DM- Voir Heartbeat pour le guide complet.
Configurer des tâches cron
Configurer des tâches cron
sessionRetention: élaguer les sessions d’exécution isolées terminées desessions.json(valeur par défaut24h; définissezfalsepour désactiver).runLog: élaguercron/runs/<jobId>.jsonlselon la taille et le nombre de lignes conservées.- Voir Tâches cron pour la vue d’ensemble de la fonctionnalité et des exemples CLI.
Configurer des webhooks (hooks)
Configurer des webhooks (hooks)
- Traitez tout contenu de charge utile hook/webhook comme une entrée non fiable.
- Utilisez un
hooks.tokendédié ; ne réutilisez pas le jeton partagé de la gateway. - L’authentification hook se fait uniquement par en-tête (
Authorization: Bearer ...oux-openclaw-token) ; les jetons dans la query string sont rejetés. hooks.pathne 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 égalementhooks.allowedSessionKeyPrefixespour 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).
Configurer le routage multi-agent
Configurer le routage multi-agent
Fractionner la configuration en plusieurs fichiers ($include)
Fractionner la configuration en plusieurs fichiers ($include)
$include pour organiser les grandes configurations :- 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
- Chemins relatifs : résolus par rapport au fichier incluant
- Gestion des erreurs : erreurs claires pour les fichiers manquants, erreurs d’analyse et 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.
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. |
Ce qui s’applique à chaud vs ce qui nécessite un redémarrage
La plupart des champs s’appliquent à chaud sans interruption. En modehybrid, les changements nécessitant un redémarrage sont pris en charge 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 |
gateway.reload et gateway.remote sont des exceptions — leur modification ne déclenche pas de redémarrage.RPC de configuration (mises à jour programmatiques)
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.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 enfantsconfig.get: récupérer l’instantané actuel + le hashconfig.patch: chemin préféré pour les mises à jour partiellesconfig.apply: remplacement de la configuration complète uniquementupdate.run: auto-mise à jour + redémarrage explicites
config.schema.lookup puis config.patch.
config.apply (remplacement complet)
config.apply (remplacement complet)
raw(chaîne) — charge utile JSON5 pour la configuration entièrebaseHash(facultatif) — hash de configuration provenant deconfig.get(requis lorsque la configuration existe)sessionKey(facultatif) — clé de session pour le ping de réveil après redémarragenote(facultatif) — note pour le sentinelle de redémarragerestartDelayMs(facultatif) — délai avant redémarrage (par défaut 2000)
config.patch (mise à jour partielle)
config.patch (mise à jour partielle)
- Les objets fusionnent récursivement
nullsupprime une clé- Les tableaux remplacent
raw(chaîne) — JSON5 avec uniquement les clés à modifierbaseHash(requis) — hash de configuration provenant deconfig.getsessionKey,note,restartDelayMs— identiques àconfig.apply
config.apply : redémarrages en attente coalescents plus un cooldown de 30 secondes entre les cycles de redémarrage.Variables d’environnement
OpenClaw lit les variables d’environnement depuis le processus parent ainsi que :.envdepuis le répertoire de travail actuel (s’il existe)~/.openclaw/.env(repli global)
Import de l'environnement shell (facultatif)
Import de l'environnement shell (facultatif)
OPENCLAW_LOAD_SHELL_ENV=1Substitution de variables d'environnement dans les valeurs de configuration
Substitution de variables d'environnement dans les valeurs de configuration
${VAR_NAME} :- Seuls les noms en majuscules sont reconnus :
[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"
Références de secret (env, file, exec)
Références de secret (env, file, exec)
secrets.providers pour env/file/exec) se trouvent dans Gestion des secrets.
Les chemins d’identifiants pris en charge sont listés dans Surface d’identifiants SecretRef.Référence complète
Pour la référence complète champ par champ, voir Référence de configuration.Lié : Exemples de configuration · Référence de configuration · Doctor