Gateway
Configuration — outils et fournisseurs personnalisés
tools.* clés de configuration et configuration d’un fournisseur personnalisé / URL de base. Pour les agents, les canaux et les autres clés de configuration de premier niveau, consultez la référence de configuration.
Outils
Profils d’outils
tools.profile définit une liste d’autorisation de base avant tools.allow/tools.deny :
| 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) |
Groupes d’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 |
group:memory |
memory_search, memory_get |
group:web |
web_search, x_search, web_fetch |
group:ui |
browser, canvas |
group:automation |
heartbeat_respond, cron, gateway |
group:messaging |
message |
group:nodes |
nodes |
group:agents |
agents_list, update_plan |
group:media |
image, image_generate, music_generate, video_generate, tts |
group:openclaw |
Tous les outils intégrés (exclut les 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 caractères génériques *. Appliquée même lorsque le bac à sable Docker est désactivé.
{
tools: { deny: ["browser", "canvas"] },
}
write et apply_patch sont des identifiants d’outil distincts. allow: ["write"] active également apply_patch pour les modèles compatibles, mais deny: ["write"] ne refuse pas apply_patch. Pour bloquer toute mutation de fichier, refusez group:fs ou indiquez explicitement chaque outil de mutation :
{
tools: { deny: ["write", "edit", "apply_patch"] },
}
tools.byProvider
Restreint davantage les outils pour des fournisseurs ou des modèles spécifiques. Ordre : profil de base → profil du fournisseur → autorisation/refus.
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
"openai/gpt-5.4": { allow: ["group:fs", "sessions_list"] },
},
},
}
tools.elevated
Contrôle l’accès exec élevé hors du bac à sable :
{
tools: {
elevated: {
enabled: true,
allowFrom: {
whatsapp: ["+15555550123"],
discord: ["1234567890123", "987654321098765432"],
},
},
},
}
- Le remplacement par agent (
agents.list[].tools.elevated) ne peut que restreindre davantage. /elevated on|off|ask|fullstocke l’état par session ; les directives en ligne s’appliquent à un seul message.execélevé contourne le bac à sable et utilise le chemin d’échappement configuré (gatewaypar défaut, ounodelorsque la cible d’exécution estnode).
tools.exec
{
tools: {
exec: {
backgroundMs: 10000,
timeoutSec: 1800,
cleanupMs: 1800000,
notifyOnExit: true,
notifyOnExitEmptySuccess: false,
applyPatch: {
enabled: false,
allowModels: ["gpt-5.5"],
},
},
},
}
tools.loopDetection
Les contrôles de sécurité des boucles d’outils sont désactivés 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.
{
tools: {
loopDetection: {
enabled: true,
historySize: 30,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
historySizenumberHistorique maximal des appels d’outils conservé pour l’analyse des boucles.
warningThresholdnumberSeuil de motif répété sans progression pour les avertissements.
criticalThresholdnumberSeuil de répétition plus élevé pour bloquer les boucles critiques.
globalCircuitBreakerThresholdnumberSeuil d’arrêt strict pour toute exécution sans progression.
detectors.genericRepeatbooleanAvertir en cas d’appels répétés au même outil avec les mêmes arguments.
detectors.knownPollNoProgressbooleanAvertir/bloquer sur les outils de sondage connus (process.poll, command_status, etc.).
detectors.pingPongbooleanAvertir/bloquer sur les motifs de paires alternées sans progression.
tools.web
{
tools: {
web: {
search: {
enabled: true,
apiKey: "brave_api_key", // or BRAVE_API_KEY env
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
provider: "firecrawl", // optional; omit for auto-detect
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
maxRedirects: 3,
readability: true,
userAgent: "custom-ua",
},
},
},
}
tools.media
Configure la compréhension des médias entrants (image/audio/vidéo) :
{
tools: {
media: {
concurrency: 2,
asyncCompletion: {
directSend: false, // deprecated: completions stay agent-mediated
},
audio: {
enabled: true,
maxBytes: 20971520,
scope: {
default: "deny",
rules: [{ action: "allow", match: { chatType: "direct" } }],
},
models: [
{ provider: "openai", model: "gpt-4o-mini-transcribe" },
{ type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"] },
],
},
image: {
enabled: true,
timeoutSeconds: 180,
models: [{ provider: "ollama", model: "gemma4:26b", timeoutSeconds: 300 }],
},
video: {
enabled: true,
maxBytes: 52428800,
models: [{ provider: "google", model: "gemini-3-flash-preview" }],
},
},
},
}
Media model entry fields
Entrée de fournisseur (type: "provider" ou omis) :
provider: identifiant du fournisseur d’API (openai,anthropic,google/gemini,groq, etc.)model: remplacement de l’identifiant du modèleprofile/preferredProfile: sélection du profilauth-profiles.json
Entrée CLI (type: "cli") :
command: exécutable à lancerargs: arguments modélisés (prend en charge{{MediaPath}},{{Prompt}},{{MaxChars}}, etc. ;openclaw doctor --fixmigre les placeholders{input}obsolètes vers{{MediaPath}})
Champs communs :
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.tools.media.image.timeoutSecondset les entréestimeoutSecondscorrespondantes du modèle d’image s’appliquent aussi lorsque l’agent appelle l’outil expliciteimage.- Les échecs basculent vers l’entrée suivante.
L’authentification du fournisseur suit l’ordre standard : auth-profiles.json → variables d’environnement → models.providers.*.apiKey.
Champs d’achèvement asynchrone :
asyncCompletion.directSend: indicateur de compatibilité obsolète. Les tâches de média asynchrones terminées restent médiées par la session demandeuse afin que l’agent reçoive le résultat, décide comment en informer l’utilisateur et utilise l’outil de message lorsque la livraison source l’exige.
tools.agentToAgent
{
tools: {
agentToAgent: {
enabled: false,
allow: ["home", "work"],
},
},
}
tools.sessions
Contrôle quelles sessions peuvent être ciblées par les outils de session (sessions_list, sessions_history, sessions_send).
Valeur par défaut : tree (session actuelle + sessions qu’elle a lancées, comme les sous-agents).
{
tools: {
sessions: {
// "self" | "tree" | "agent" | "all"
visibility: "tree",
},
},
}
Visibility scopes
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 de l’agent actuel (peut inclure d’autres utilisateurs si vous exécutez des sessions par expéditeur sous le même identifiant d’agent).all: toute session. Le ciblage inter-agents nécessite toujourstools.agentToAgent.- Limitation du bac à sable : lorsque la session actuelle est en bac à sable et que
agents.defaults.sandbox.sessionToolsVisibility="spawned", la visibilité est forcée àtreemême sitools.sessions.visibility="all".
tools.sessions_spawn
Contrôle la prise en charge des pièces jointes intégrées pour sessions_spawn.
{
tools: {
sessions_spawn: {
attachments: {
enabled: false, // opt-in: set true to allow inline file attachments
maxTotalBytes: 5242880, // 5 MB total across all files
maxFiles: 50,
maxFileBytes: 1048576, // 1 MB per file
retainOnSessionKeep: false, // keep attachments when cleanup="keep"
},
},
},
}
Notes sur les pièces jointes
- 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 à
.openclaw/attachments/<uuid>/avec un.manifest.json. - Le contenu des pièces jointes est automatiquement expurgé de la persistance des transcriptions.
- Les entrées Base64 sont validées avec des contrôles stricts de l’alphabet et du remplissage, ainsi qu’une garde de taille avant décodage.
- Les permissions de fichiers sont
0700pour les répertoires et0600pour les fichiers. - Le nettoyage suit la stratégie
cleanup:deletesupprime toujours les pièces jointes ;keeples conserve uniquement lorsqueretainOnSessionKeep: true.
tools.experimental
Indicateurs expérimentaux des outils intégrés. Désactivé par défaut, sauf si une règle d’activation automatique stricte et agentique GPT-5 s’applique.
{
tools: {
experimental: {
planTool: true, // enable experimental update_plan
},
},
}
planTool: active l’outil structuréupdate_planpour le suivi des travaux non triviaux en plusieurs étapes.- Par défaut :
false, sauf siagents.defaults.embeddedPi.executionContract(ou une substitution par agent) est défini sur"strict-agentic"pour une exécution de la famille GPT-5 avec OpenAI ou OpenAI Codex. Définisseztruepour forcer l’activation de l’outil hors de ce périmètre, oufalsepour le garder désactivé même pour les exécutions GPT-5 strictes et agentiques. - Lorsqu’il est activé, le prompt système ajoute aussi des consignes d’utilisation afin que le modèle ne l’utilise que pour les travaux substantiels et garde au plus une étape
in_progress.
agents.defaults.subagents
{
agents: {
defaults: {
subagents: {
allowAgents: ["research"],
model: "minimax/MiniMax-M2.7",
maxConcurrent: 8,
runTimeoutSeconds: 900,
archiveAfterMinutes: 60,
},
},
},
}
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’agents cibles poursessions_spawnlorsque l’agent demandeur ne définit pas son propresubagents.allowAgents(["*"]= n’importe lequel ; par défaut : uniquement le même agent).runTimeoutSeconds: délai d’expiration par défaut (secondes) poursessions_spawnlorsque l’appel d’outil ometrunTimeoutSeconds.0signifie aucun délai d’expiration.- Stratégie d’outils par sous-agent :
tools.subagents.tools.allow/tools.subagents.tools.deny.
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/<agentId>/agent/models.json.
{
models: {
mode: "merge", // merge (default) | replace
providers: {
"custom-proxy": {
baseUrl: "http://localhost:4000/v1",
apiKey: "LITELLM_KEY",
api: "openai-completions", // openai-completions | openai-responses | anthropic-messages | google-generative-ai
models: [
{
id: "llama-3.1-8b",
name: "Llama 3.1 8B",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 128000,
contextTokens: 96000,
maxTokens: 32000,
},
],
},
},
},
}
Authentification et priorité de fusion
- Utilisez
authHeader: true+headerspour les besoins d’authentification personnalisés. - Remplacez la racine de configuration de l’agent avec
OPENCLAW_AGENT_DIR(ouPI_CODING_AGENT_DIR, un alias hérité de variable d’environnement). - Priorité de fusion pour les ID de fournisseurs correspondants :
- Les valeurs
baseUrlnon vides dumodels.jsonde l’agent l’emportent. - Les valeurs
apiKeynon vides de l’agent l’emportent uniquement lorsque ce fournisseur n’est pas géré par SecretRef dans le contexte actuel de configuration/profil d’authentification. - Les valeurs
apiKeydes fournisseurs gérés par SecretRef sont actualisées depuis les marqueurs sources (ENV_VAR_NAMEpour les références d’environnement,secretref-managedpour les références de fichier/exec) au lieu de persister les secrets résolus. - Les valeurs d’en-tête des fournisseurs gérés par SecretRef sont actualisées depuis les marqueurs sources (
secretref-env:ENV_VAR_NAMEpour les références d’environnement,secretref-managedpour les références de fichier/exec). - Les valeurs
apiKey/baseUrlvides ou manquantes de l’agent se rabattent surmodels.providersdans la configuration. - Les modèles correspondants
contextWindow/maxTokensutilisent la valeur la plus élevée entre la configuration explicite et les valeurs implicites du catalogue. - Le modèle correspondant
contextTokensconserve 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èrementmodels.json. - La persistance des marqueurs fait autorité côté source : les marqueurs sont écrits depuis l’instantané de configuration source actif (avant résolution), pas depuis les valeurs de secrets résolues à l’exécution.
- Les valeurs
Détails des champs du fournisseur
Catalogue de niveau supérieur
models.mode: comportement du catalogue de fournisseurs (mergeoureplace).models.providers: carte des fournisseurs personnalisés indexée par identifiant de fournisseur.- Modifications sûres : utilisez
openclaw config set models.providers.<id> '<json>' --strict-json --mergeouopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergepour les mises à jour additives.config setrefuse les remplacements destructeurs sauf si vous passez--replace.
- Modifications sûres : utilisez
Connexion et authentification du fournisseur
models.providers.*.api: adaptateur de requête (openai-completions,openai-responses,anthropic-messages,google-generative-ai, etc.). Pour les backends/v1/chat/completionsauto-hébergés tels que MLX, vLLM, SGLang et la plupart des serveurs locaux compatibles OpenAI, utilisezopenai-completions. Un fournisseur personnalisé avecbaseUrlmais sansapiutilise par défautopenai-completions; définissezopenai-responsesuniquement lorsque le backend prend en charge/v1/responses.models.providers.*.apiKey: identifiant secret du fournisseur (préférez la substitution SecretRef/env).models.providers.*.auth: stratégie d’authentification (api-key,token,oauth,aws-sdk).models.providers.*.contextWindow: fenêtre de contexte native par défaut pour les modèles de ce fournisseur lorsque l’entrée du modèle ne définit pascontextWindow.models.providers.*.contextTokens: plafond de contexte effectif par défaut à l’exécution pour les modèles de ce fournisseur lorsque l’entrée du modèle ne définit pascontextTokens.models.providers.*.maxTokens: plafond par défaut de jetons de sortie pour les modèles de ce fournisseur lorsque l’entrée du modèle ne définit pasmaxTokens.models.providers.*.timeoutSeconds: délai d’expiration HTTP facultatif, par fournisseur et par modèle, en secondes, incluant la connexion, les en-têtes, le corps et la gestion de l’abandon total de la requête.models.providers.*.injectNumCtxForOpenAICompat: pour Ollama +openai-completions, injecteoptions.num_ctxdans les requêtes (par défaut :true).models.providers.*.authHeader: force le transport des identifiants secrets dans l’en-têteAuthorizationlorsque cela est requis.models.providers.*.baseUrl: URL de base de l’API amont.models.providers.*.headers: en-têtes statiques supplémentaires pour le routage proxy/locataire.
Substitutions du transport de requête
models.providers.*.request : substitutions 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: substitution de stratégie d’authentification. Modes :"provider-default"(utiliser l’authentification intégrée du fournisseur),"authorization-bearer"(avectoken),"header"(avecheaderName,value,prefixfacultatif).request.proxy: substitution du proxy HTTP. Modes :"env-proxy"(utiliser les variables d’environnementHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(avecurl). Les deux modes acceptent un sous-objettlsfacultatif.request.tls: substitution TLS pour les connexions directes. Champs :ca,cert,key,passphrase(acceptent tous SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: lorsquetrue, autorise HTTPS versbaseUrllorsque DNS se résout vers des plages privées, CGNAT ou similaires, via la garde HTTP fetch du fournisseur (opt-in opérateur pour les points de terminaison auto-hébergés compatibles OpenAI et approuvés). Les URL de flux du fournisseur de modèles en local loopback, telles quelocalhost,127.0.0.1et[::1], sont autorisées automatiquement sauf si cette valeur est explicitement définie surfalse; les hôtes LAN, tailnet et DNS privés nécessitent toujours un opt-in. WebSocket utilise le mêmerequestpour les en-têtes/TLS, mais pas cette garde SSRF de fetch. Par défautfalse.
Entrées du catalogue de modèles
models.providers.*.models: entrées explicites du catalogue de modèles du fournisseur.models.providers.*.models.*.input: modalités d’entrée du modèle. Utilisez["text"]pour les modèles texte uniquement et["text", "image"]pour les modèles natifs image/vision. Les pièces jointes image ne sont injectées dans les tours d’agent que lorsque le modèle sélectionné est marqué comme compatible image.models.providers.*.models.*.contextWindow: métadonnées de fenêtre de contexte native du modèle. Cela remplace lecontextWindowau niveau du fournisseur pour ce modèle.models.providers.*.models.*.contextTokens: plafond de contexte facultatif à l’exécution. Cela remplace lecontextTokensau niveau du fournisseur ; utilisez-le lorsque vous voulez un budget de contexte effectif plus petit que lecontextWindownatif du modèle ;openclaw models listaffiche les deux valeurs lorsqu’elles diffèrent.models.providers.*.models.*.compat.supportsDeveloperRole: indice de compatibilité facultatif. Pourapi: "openai-completions"avec unebaseUrlnon native et non vide (hôte différent deapi.openai.com), OpenClaw force cette valeur àfalseà l’exécution. UnebaseUrlvide/omise conserve le comportement OpenAI par défaut.models.providers.*.models.*.compat.requiresStringContent: indice de compatibilité facultatif pour les points de terminaison de chat compatibles OpenAI acceptant uniquement des chaînes. Lorsquetrue, OpenClaw aplatit les tableauxmessages[].contentde texte pur en chaînes simples avant d’envoyer la requête.
Découverte Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: racine des paramètres de découverte automatique Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: activer/désactiver 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 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 jetons de sortie de repli pour les modèles découverts.
L’intégration interactive de fournisseurs personnalisés déduit l’entrée image pour les ID de modèles de vision courants tels que GPT-4o, Claude, Gemini, Qwen-VL, LLaVA, Pixtral, InternVL, Mllama, MiniCPM-V et GLM-4V, et ignore la question supplémentaire pour les familles connues comme texte uniquement. Les ID de modèles inconnus demandent toujours la prise en charge de l’image. L’intégration non interactive utilise la même inférence ; passez --custom-image-input pour forcer les métadonnées compatibles image ou --custom-text-input pour forcer les métadonnées texte uniquement.
Exemples de fournisseurs
Cerebras (GLM 4.7 / GPT OSS)
Le Plugin fournisseur cerebras inclus peut configurer cela via openclaw onboard --auth-choice cerebras-api-key. Utilisez une configuration explicite du fournisseur uniquement lors de la substitution des valeurs par défaut.
{
env: { CEREBRAS_API_KEY: "sk-..." },
agents: {
defaults: {
model: {
primary: "cerebras/zai-glm-4.7",
fallbacks: ["cerebras/gpt-oss-120b"],
},
models: {
"cerebras/zai-glm-4.7": { alias: "GLM 4.7 (Cerebras)" },
"cerebras/gpt-oss-120b": { alias: "GPT OSS 120B (Cerebras)" },
},
},
},
models: {
mode: "merge",
providers: {
cerebras: {
baseUrl: "https://api.cerebras.ai/v1",
apiKey: "${CEREBRAS_API_KEY}",
api: "openai-completions",
models: [
{ id: "zai-glm-4.7", name: "GLM 4.7 (Cerebras)" },
{ id: "gpt-oss-120b", name: "GPT OSS 120B (Cerebras)" },
],
},
},
},
}
Utilisez cerebras/zai-glm-4.7 pour Cerebras ; zai/glm-4.7 pour Z.AI direct.
Kimi Coding
{
env: { KIMI_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "kimi/kimi-code" },
models: { "kimi/kimi-code": { alias: "Kimi Code" } },
},
},
}
Fournisseur intégré compatible avec Anthropic. Raccourci : openclaw onboard --auth-choice kimi-code-api-key.
Local models (LM Studio)
Consultez Modèles locaux. En bref : exécutez un grand modèle local via l’API Responses de LM Studio sur du matériel sérieux ; conservez les modèles hébergés fusionnés pour le repli.
MiniMax M2.7 (direct)
{
agents: {
defaults: {
model: { primary: "minimax/MiniMax-M2.7" },
models: {
"minimax/MiniMax-M2.7": { alias: "Minimax" },
},
},
},
models: {
mode: "merge",
providers: {
minimax: {
baseUrl: "https://api.minimax.io/anthropic",
apiKey: "${MINIMAX_API_KEY}",
api: "anthropic-messages",
models: [
{
id: "MiniMax-M2.7",
name: "MiniMax M2.7",
reasoning: true,
input: ["text"],
cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 },
contextWindow: 204800,
maxTokens: 131072,
},
],
},
},
},
}
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 M2.7 uniquement par défaut. Sur le chemin de streaming compatible avec Anthropic, OpenClaw désactive la réflexion MiniMax par défaut, sauf si vous définissez explicitement thinking vous-même. /fast on ou params.fastMode: true réécrit MiniMax-M2.7 en MiniMax-M2.7-highspeed.
Moonshot AI (Kimi)
{
env: { MOONSHOT_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "moonshot/kimi-k2.6" },
models: { "moonshot/kimi-k2.6": { alias: "Kimi K2.6" } },
},
},
models: {
mode: "merge",
providers: {
moonshot: {
baseUrl: "https://api.moonshot.ai/v1",
apiKey: "${MOONSHOT_API_KEY}",
api: "openai-completions",
models: [
{
id: "kimi-k2.6",
name: "Kimi K2.6",
reasoning: false,
input: ["text", "image"],
cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 },
contextWindow: 262144,
maxTokens: 262144,
},
],
},
},
},
}
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 natifs Moonshot annoncent la compatibilité d’utilisation en streaming sur le transport partagé openai-completions, et OpenClaw s’appuie sur les capacités du point de terminaison plutôt que sur le seul identifiant du fournisseur intégré.
OpenCode
{
agents: {
defaults: {
model: { primary: "opencode/claude-opus-4-6" },
models: { "opencode/claude-opus-4-6": { alias: "Opus" } },
},
},
}
Définissez OPENCODE_API_KEY (ou OPENCODE_ZEN_API_KEY). Utilisez les références opencode/... pour le catalogue Zen ou les références opencode-go/... pour le catalogue Go. Raccourci : openclaw onboard --auth-choice opencode-zen ou openclaw onboard --auth-choice opencode-go.
Synthetic (Anthropic-compatible)
{
env: { SYNTHETIC_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "synthetic/hf:MiniMaxAI/MiniMax-M2.5" },
models: { "synthetic/hf:MiniMaxAI/MiniMax-M2.5": { alias: "MiniMax M2.5" } },
},
},
models: {
mode: "merge",
providers: {
synthetic: {
baseUrl: "https://api.synthetic.new/anthropic",
apiKey: "${SYNTHETIC_API_KEY}",
api: "anthropic-messages",
models: [
{
id: "hf:MiniMaxAI/MiniMax-M2.5",
name: "MiniMax M2.5",
reasoning: true,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 192000,
maxTokens: 65536,
},
],
},
},
},
}
L’URL de base doit omettre /v1 (le client Anthropic l’ajoute). Raccourci : openclaw onboard --auth-choice synthetic-api-key.
Z.AI (GLM-4.7)
{
agents: {
defaults: {
model: { primary: "zai/glm-4.7" },
models: { "zai/glm-4.7": {} },
},
},
}
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 de codage (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 le remplacement de l’URL de base.
Connexe
- Configuration — agents
- Configuration — canaux
- Référence de configuration — autres clés de premier niveau
- Outils et plugins