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|full stocke 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é (gateway par défaut, ou node lorsque la cible d’exécution est node).

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,
      },
    },
  },
}
historySizenumber

Historique maximal des appels d’outils conservé pour l’analyse des boucles.

warningThresholdnumber

Seuil de motif répété sans progression pour les avertissements.

criticalThresholdnumber

Seuil de répétition plus élevé pour bloquer les boucles critiques.

globalCircuitBreakerThresholdnumber

Seuil d’arrêt strict pour toute exécution sans progression.

detectors.genericRepeatboolean

Avertir en cas d’appels répétés au même outil avec les mêmes arguments.

detectors.knownPollNoProgressboolean

Avertir/bloquer sur les outils de sondage connus (process.poll, command_status, etc.).

detectors.pingPongboolean

Avertir/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èle
  • profile / preferredProfile : sélection du profil auth-profiles.json

Entrée CLI (type: "cli") :

  • command : exécutable à lancer
  • args : arguments modélisés (prend en charge {{MediaPath}}, {{Prompt}}, {{MaxChars}}, etc. ; openclaw doctor --fix migre 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.timeoutSeconds et les entrées timeoutSeconds correspondantes du modèle d’image s’appliquent aussi lorsque l’agent appelle l’outil explicite image.
  • 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 toujours tools.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 à tree même si tools.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 0700 pour les répertoires et 0600 pour les fichiers.
  • Le nettoyage suit la stratégie cleanup : delete supprime toujours les pièces jointes ; keep les conserve uniquement lorsque retainOnSessionKeep: 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_plan pour le suivi des travaux non triviaux en plusieurs étapes.
  • Par défaut : false, sauf si agents.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éfinissez true pour forcer l’activation de l’outil hors de ce périmètre, ou false pour 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 pour sessions_spawn lorsque l’agent demandeur ne définit pas son propre subagents.allowAgents (["*"] = n’importe lequel ; par défaut : uniquement le même agent).
  • runTimeoutSeconds : délai d’expiration par défaut (secondes) pour sessions_spawn lorsque l’appel d’outil omet runTimeoutSeconds. 0 signifie 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 + headers pour les besoins d’authentification personnalisés.
  • Remplacez la racine de configuration de l’agent avec OPENCLAW_AGENT_DIR (ou PI_CODING_AGENT_DIR, un alias hérité de variable d’environnement).
  • Priorité de fusion pour les ID de fournisseurs correspondants :
    • Les valeurs baseUrl non vides du 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 de configuration/profil d’authentification.
    • Les valeurs apiKey des fournisseurs gérés par SecretRef sont actualisées depuis les marqueurs sources (ENV_VAR_NAME pour les références d’environnement, secretref-managed pour 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_NAME pour les références d’environnement, secretref-managed pour les références de fichier/exec).
    • Les valeurs apiKey/baseUrl vides ou manquantes de l’agent se rabattent sur models.providers dans la configuration.
    • Les modèles correspondants contextWindow/maxTokens utilisent la valeur la plus élevée entre la configuration explicite et les valeurs implicites du catalogue.
    • Le modèle correspondant contextTokens conserve 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 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.

Détails des champs du fournisseur

Catalogue de niveau supérieur
  • models.mode : comportement du catalogue de fournisseurs (merge ou replace).
  • 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 --merge ou openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge pour les mises à jour additives. config set refuse les remplacements destructeurs sauf si vous passez --replace.
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/completions auto-hébergés tels que MLX, vLLM, SGLang et la plupart des serveurs locaux compatibles OpenAI, utilisez openai-completions. Un fournisseur personnalisé avec baseUrl mais sans api utilise par défaut openai-completions ; définissez openai-responses uniquement 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 pas contextWindow.
  • 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 pas contextTokens.
  • 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 pas maxTokens.
  • 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, injecte options.num_ctx dans les requêtes (par défaut : true).
  • models.providers.*.authHeader : force le transport des identifiants secrets dans l’en-tête Authorization lorsque 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" (avec token), "header" (avec headerName, value, prefix facultatif).
  • request.proxy : substitution du 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 : substitution TLS pour les connexions directes. Champs : ca, cert, key, passphrase (acceptent tous SecretRef), serverName, insecureSkipVerify.
  • request.allowPrivateNetwork : lorsque true, autorise HTTPS vers baseUrl lorsque 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 que localhost, 127.0.0.1 et [::1], sont autorisées automatiquement sauf si cette valeur est explicitement définie sur false ; les hôtes LAN, tailnet et DNS privés nécessitent toujours un opt-in. WebSocket utilise le même request pour les en-têtes/TLS, mais pas cette garde SSRF de fetch. Par défaut false.
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 le contextWindow au niveau du fournisseur pour ce modèle.
  • models.providers.*.models.*.contextTokens : plafond de contexte facultatif à l’exécution. Cela remplace le contextTokens au niveau du fournisseur ; utilisez-le lorsque vous voulez un budget de contexte effectif plus petit que le contextWindow natif du modèle ; openclaw models list affiche les deux valeurs lorsqu’elles diffèrent.
  • models.providers.*.models.*.compat.supportsDeveloperRole : indice de compatibilité facultatif. Pour api: "openai-completions" avec une baseUrl non native et non vide (hôte différent de api.openai.com), OpenClaw force cette valeur à false à l’exécution. Une baseUrl vide/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. Lorsque true, OpenClaw aplatit les tableaux messages[].content de 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