Gateway
Configuración: herramientas y proveedores personalizados
Claves de configuración tools.* y configuración personalizada del proveedor o de la URL base. Para agentes, canales y otras claves de configuración de nivel superior, consulta la referencia de configuración.
Herramientas
Perfiles de herramientas
tools.profile establece una lista de permitidos base antes de tools.allow/tools.deny:
| Perfil | Incluye |
|---|---|
minimal |
Solo session_status |
coding |
group:fs, group:runtime, group:web, group:sessions, group:memory, cron, get_goal, create_goal, update_goal, update_plan, skill_workshop, image, image_generate, music_generate, video_generate |
messaging |
group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full |
Sin restricciones (igual que cuando no está definido) |
coding y messaging también permiten implícitamente bundle-mcp (servidores MCP configurados).
Grupos de herramientas
| Grupo | Herramientas |
|---|---|
group:runtime |
exec, process, code_execution (bash se acepta como 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, spawn_task, dismiss_task |
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, computer |
group:agents |
agents_list, get_goal, create_goal, update_goal, update_plan, skill_workshop |
group:media |
image, image_generate, music_generate, video_generate, tts |
group:openclaw |
Todas las herramientas integradas anteriores, excepto read/write/edit/apply_patch/exec/process/canvas (excluye las herramientas de plugins) |
group:plugins |
Herramientas pertenecientes a los plugins cargados, incluidos los servidores MCP configurados expuestos mediante bundle-mcp |
spawn_task permite que un agente de programación proponga trabajo de seguimiento confirmado sin iniciarlo. La interfaz de control muestra el título y el resumen como una ficha procesable; una TUI respaldada por el Gateway muestra una indicación interactiva equivalente. Al aceptar cualquiera de las dos, se crea una nueva sesión de árbol de trabajo administrado y se envía allí la indicación completa mientras continúa el turno actual. dismiss_task retira una sugerencia aún pendiente mediante el task_id efímero devuelto por spawn_task.
Las herramientas solo se ofrecen cuando la superficie del operador que inicia la acción puede recibir y procesar eventos de sugerencia de tareas del Gateway. Las sesiones de canal y las sesiones de TUI locales o integradas no los reciben; los transportes de canal necesitan una acción de tarea tipada y portable antes de poder exponer este flujo de forma segura. Las sugerencias son locales al proceso y desaparecen cuando se reinicia el Gateway. Ambas herramientas permanecen en el perfil coding y en group:sessions, por lo que las políticas habituales tools.allow y tools.deny las configuran automáticamente cuando la superficie las admite.
Herramientas de MCP y plugins dentro de la política de herramientas del entorno aislado
Los servidores MCP configurados se exponen como herramientas pertenecientes al plugin con el identificador bundle-mcp. Los perfiles normales de herramientas pueden permitirlas, pero tools.sandbox.tools constituye una restricción adicional para las sesiones aisladas. Si el modo del entorno aislado es "all" o "non-main", incluye una de estas entradas en la lista de herramientas permitidas del entorno aislado cuando las herramientas de MCP o plugins deban ser visibles:
bundle-mcppara los servidores MCP administrados por OpenClaw desdemcp.servers- el identificador del plugin para un plugin nativo específico
group:pluginspara todas las herramientas pertenecientes a los plugins cargados- nombres exactos de herramientas de servidores MCP o patrones globales de servidor, como
outlook__send_mailuoutlook__*, cuando solo quieras un servidor
Los patrones globales de servidor usan el prefijo de servidor MCP seguro para el proveedor, que no es necesariamente la clave sin procesar de mcp.servers. Los caracteres que no sean [A-Za-z0-9_-] se convierten en -, los nombres que no comienzan con una letra reciben el prefijo mcp- y los prefijos largos o duplicados pueden truncarse o recibir un sufijo; por ejemplo, mcp.servers["Outlook Graph"] usa un patrón global como outlook-graph__*.
{ agents: { defaults: { sandbox: { mode: "all" } } }, mcp: { servers: { outlook: { command: "node", args: ["./outlook-mcp.js"] }, }, }, tools: { sandbox: { tools: { alsoAllow: ["web_search", "web_fetch", "memory_search", "memory_get", "bundle-mcp"], }, }, },}Sin esa entrada en la capa del entorno aislado, el servidor MCP puede seguir cargándose correctamente mientras sus herramientas se filtran antes de la solicitud al proveedor. Usa openclaw doctor para detectar esta configuración en los servidores administrados por OpenClaw en mcp.servers. Los servidores MCP cargados desde manifiestos de plugins incluidos o desde .mcp.json de Claude usan la misma restricción del entorno aislado, pero este diagnóstico aún no enumera esas fuentes; usa las mismas entradas de la lista de permitidos si sus herramientas desaparecen en turnos aislados.
tools.codeMode
tools.codeMode habilita la superficie genérica del modo de código de OpenClaw. Cuando se habilita
para una ejecución con herramientas, las herramientas normales de OpenClaw pasan a estar detrás del puente de catálogo tools.*
dentro del entorno aislado, y las herramientas MCP quedan disponibles mediante el espacio de nombres MCP
generado. Normalmente, el modelo ve exec y wait; las herramientas como computer
cuyos resultados estructurados no pueden atravesar el puente exclusivo de JSON permanecen directas.
{ tools: { codeMode: { enabled: true, }, },}También se acepta la forma abreviada:
{ tools: { codeMode: true },}Las declaraciones de MCP se exponen mediante la superficie virtual de archivos de API de solo lectura en
el modo de código. El código invitado puede llamar a API.list("mcp") y
API.read("mcp/<server>.d.ts") para inspeccionar firmas al estilo de TypeScript antes de
llamar a MCP.<server>.<tool>(). Consulta Modo de código para conocer el
contrato de ejecución, los límites y los pasos de depuración.
tools.allow / tools.deny
Política global de permisos y denegaciones de herramientas (la denegación prevalece). No distingue entre mayúsculas y minúsculas y admite comodines *. Se aplica incluso cuando el entorno aislado de Docker está desactivado.
{ tools: { deny: ["browser", "canvas"] },}write y apply_patch son identificadores de herramientas distintos. allow: ["write"] también habilita apply_patch para los modelos compatibles, pero deny: ["write"] no deniega apply_patch. Para bloquear todas las modificaciones de archivos, deniegue group:fs o enumere explícitamente cada herramienta que pueda realizar modificaciones:
{ tools: { deny: ["write", "edit", "apply_patch"] },}tools.byProvider
Restringe aún más las herramientas para proveedores o modelos específicos. Orden: perfil base → perfil del proveedor → permisos/denegaciones.
{ tools: { profile: "coding", byProvider: { "google-antigravity": { profile: "minimal" }, "openai/gpt-5.4": { allow: ["group:fs", "sessions_list"] }, }, },}tools.toolsBySender
Restringe las herramientas para una identidad solicitante específica. Se trata de una defensa en profundidad que complementa el control de acceso del canal; los valores del remitente deben proceder del adaptador del canal, no del texto del mensaje.
{ tools: { toolsBySender: { "channel:discord:1234567890123": { alsoAllow: ["group:fs"] }, "id:guest-user-id": { deny: ["group:runtime", "group:fs"] }, "*": { deny: ["exec", "process", "write", "edit", "apply_patch"] }, }, },}Las claves usan prefijos explícitos: channel:<channelId>:<senderId>, id:<senderId>, e164:<phone>, username:<handle>, name:<displayName> o "*". Los identificadores de canal son identificadores canónicos de OpenClaw; los alias como teams se normalizan a msteams. Las claves heredadas sin prefijo solo se aceptan como id:. El orden de coincidencia es canal+identificador, identificador, e164, nombre de usuario, nombre y, por último, comodín.
La configuración por agente agents.list[].tools.toolsBySender sustituye la coincidencia global del remitente cuando coincide, incluso con una política {} vacía.
tools.elevated
Controla el acceso de ejecución con privilegios elevados fuera del entorno aislado:
{ tools: { elevated: { enabled: true, allowFrom: { whatsapp: ["+15555550123"], discord: ["1234567890123", "987654321098765432"], }, }, },}- La sustitución por agente (
agents.list[].tools.elevated) solo puede aplicar restricciones adicionales. /elevated on|off|ask|fullalmacena el estado por sesión; las directivas insertadas en el mensaje se aplican a un único mensaje.- La herramienta
execcon privilegios elevados omite el aislamiento y usa la ruta de escape configurada (gatewayde forma predeterminada, onodecuando el destino de ejecución esnode).
tools.exec
{ tools: { exec: { backgroundMs: 10000, timeoutSec: 1800, cleanupMs: 1800000, approvalRunningNoticeMs: 10000, notifyOnExit: true, notifyOnExitEmptySuccess: false, commandHighlighting: false, applyPatch: { enabled: true, allowModels: ["gpt-5.6-sol"], }, }, },}Los valores mostrados son los predeterminados, excepto applyPatch.allowModels (vacío o sin configurar de forma predeterminada, lo que significa que cualquier modelo compatible puede usar apply_patch). approvalRunningNoticeMs emite un aviso de ejecución cuando una ejecución respaldada por aprobación se prolonga; 0 lo desactiva.
tools.loopDetection
Las comprobaciones de seguridad para bucles de herramientas están desactivadas de forma predeterminada. Establezca enabled: true para activar la detección. La configuración puede definirse globalmente en tools.loopDetection y sustituirse por agente en agents.list[].tools.loopDetection.
{ tools: { loopDetection: { enabled: true, historySize: 30, warningThreshold: 10, unknownToolThreshold: 10, criticalThreshold: 20, globalCircuitBreakerThreshold: 30, detectors: { genericRepeat: true, knownPollNoProgress: true, pingPong: true, }, postCompactionGuard: { windowSize: 3, }, }, },}historySizenumberHistorial máximo de llamadas a herramientas conservado para el análisis de bucles.
warningThresholdnumberUmbral del patrón repetitivo sin progreso para las advertencias.
unknownToolThresholdnumberBloquea las llamadas repetidas al mismo nombre de herramienta no disponible o desconocida después de esta cantidad de intentos fallidos.
criticalThresholdnumberUmbral de repetición más alto para bloquear bucles críticos.
globalCircuitBreakerThresholdnumberUmbral de detención forzosa para cualquier ejecución sin progreso.
detectors.genericRepeatbooleanAdvierte sobre llamadas repetidas con la misma herramienta y los mismos argumentos.
detectors.knownPollNoProgressbooleanAdvierte o bloquea herramientas de sondeo conocidas (process.poll, command_status, etc.).
detectors.pingPongbooleanAdvierte o bloquea patrones alternantes de pares sin progreso.
postCompactionGuard.windowSizenumberCantidad de intentos durante los cuales la protección permanece activa después de la compactación automática; aborta si el agente repite la misma combinación de herramienta, argumentos y resultado dentro de esa ventana.
tools.web
{ tools: { web: { search: { enabled: true, apiKey: "brave_api_key", // or BRAVE_API_KEY env (Brave provider) maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, fetch: { enabled: true, provider: "firecrawl", // optional; omit for auto-detect maxChars: 20000, maxCharsCap: 20000, maxResponseBytes: 750000, timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, readability: true, userAgent: "custom-ua", }, }, },}Los valores mostrados son los predeterminados, excepto provider y userAgent. maxResponseBytes se limita al intervalo 32000–10000000; maxChars se limita a maxCharsCap (aumente maxCharsCap para permitir respuestas más grandes).
tools.media
Configura la comprensión de medios entrantes (imagen, audio y vídeo):
{ 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" }], }, }, },}concurrency (valor predeterminado: 2), audio.maxBytes (valor predeterminado: 20 MB) y video.maxBytes (valor predeterminado: 50 MB) se muestran con sus valores predeterminados; el valor predeterminado de image.maxBytes es 10 MB. Valores predeterminados del tiempo de espera por solicitud para cada capacidad: 60 s para imagen y audio, y 120 s para vídeo.
Campos de las entradas de modelos multimedia
Entrada de proveedor (type: "provider" u omitido):
provider: identificador del proveedor de API (openai,anthropic,google/gemini,groq, etc.)model: sustitución del identificador del modeloprofile/preferredProfile: selección del perfil deauth-profiles.json
Entrada de CLI (type: "cli"):
command: ejecutable que se debe ejecutarargs: argumentos con plantilla (admite{{MediaPath}},{{Prompt}},{{MaxChars}}, etc.;openclaw doctor --fixmigra los marcadores de posición obsoletos{input}a{{MediaPath}})
Campos comunes:
capabilities: lista opcional (image,audio,video). Cada Plugin de proveedor declara su propio conjunto predeterminado de capacidades; por ejemplo, el proveedoropenaiincluido usa de forma predeterminada imagen y audio,anthropic/minimaxusa imagen,googleusa imagen, audio y vídeo, ygroqusa audio.prompt,maxChars,maxBytes,timeoutSeconds,language: sustituciones específicas de cada entrada.tools.media.image.timeoutSecondsy las entradastimeoutSecondscorrespondientes del modelo de imagen también se aplican cuando el agente llama a la herramienta explícitaimage. Para la comprensión de imágenes, este tiempo de espera se aplica a la solicitud en sí y no se reduce por el trabajo de preparación anterior.- En caso de error, se recurre a la siguiente entrada.
La autenticación del proveedor sigue el orden estándar: auth-profiles.json → variables de entorno → models.providers.*.apiKey.
Campos de finalización asíncrona:
asyncCompletion.directSend: indicador de compatibilidad obsoleto. Las tareas multimedia asíncronas completadas siguen mediadas por la sesión solicitante para que el agente reciba el resultado, decida cómo comunicárselo al usuario y utilice la herramienta de mensajes cuando la entrega al origen lo requiera.
tools.agentToAgent
{ tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, },}tools.sessions
Controla qué sesiones pueden ser el destino de las herramientas de sesión (sessions_list, sessions_history, sessions_send).
Valor predeterminado: tree (la sesión actual y las sesiones que esta genera, como los subagentes).
{ tools: { sessions: { // "self" | "tree" | "agent" | "all" visibility: "tree", }, },}Ámbitos de visibilidad
self: solo la clave de la sesión actual.tree: la sesión actual y las sesiones generadas por ella (subagentes).agent: cualquier sesión que pertenezca al identificador del agente actual (puede incluir otros usuarios si ejecuta sesiones por remitente con el mismo identificador de agente).all: cualquier sesión. Dirigirse a otros agentes sigue requiriendotools.agentToAgent.- Restricción del entorno aislado: cuando la sesión actual está aislada y
agents.defaults.sandbox.sessionToolsVisibility="spawned"(el valor predeterminado), la visibilidad se fuerza atree, incluso sitools.sessions.visibility="all". - Cuando no es
all,sessions_listincluye un campo compactovisibilityque describe el modo efectivo y una advertencia de que algunas sesiones fuera del ámbito actual pueden omitirse.
tools.sessions_spawn
Controla la compatibilidad con archivos adjuntos insertados para 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" }, }, },}Notas sobre los archivos adjuntos
- Los archivos adjuntos requieren
enabled: true. - Los archivos adjuntos de los subagentes se materializan en el espacio de trabajo secundario en
.openclaw/attachments/<uuid>/con un archivo.manifest.json. - Los archivos adjuntos de ACP solo pueden ser imágenes y se reenvían insertados al entorno de ejecución de ACP después de superar los mismos límites de cantidad de archivos, bytes por archivo y bytes totales.
- El contenido de los archivos adjuntos se censura automáticamente al conservar la transcripción.
- Las entradas Base64 se validan mediante comprobaciones estrictas del alfabeto y del relleno, además de una protección de tamaño previa a la decodificación.
- Los permisos de los archivos adjuntos de los subagentes son
0700para los directorios y0600para los archivos. - La limpieza de los subagentes sigue la política
cleanup:deletesiempre elimina los archivos adjuntos;keepsolo los conserva cuandoretainOnSessionKeep: true.
tools.experimental
Indicadores experimentales de herramientas integradas. Están desactivados de forma predeterminada, salvo que se aplique una regla de activación automática de GPT-5 con contrato strict-agentic.
{ tools: { experimental: { planTool: true, // enable experimental update_plan }, },}planTool: activa la herramienta estructuradaupdate_planpara realizar el seguimiento de trabajos no triviales de varios pasos.- Valor predeterminado:
false, salvo queagents.defaults.embeddedAgent.executionContract(o una sustitución por agente) esté establecido en"strict-agentic"para una ejecución del proveedoropenaicon un identificador de modelo de la familia GPT-5 (esto también abarca las ejecuciones de OpenAI Codex CLI, ya que el enrutamiento de autenticación y modelos de Codex se encuentra bajo el proveedoropenai). Establézcalo entruepara forzar la activación de la herramienta fuera de ese ámbito, o enfalsepara mantenerla desactivada incluso en ejecuciones de GPT-5 constrict-agentic. - Cuando está activada, el mensaje del sistema también añade instrucciones de uso para que el modelo solo la utilice en trabajos sustanciales y mantenga como máximo un paso con el estado
in_progress.
agents.defaults.subagents
{ agents: { defaults: { subagents: { allowAgents: ["research"], model: "minimax/MiniMax-M2.7", maxConcurrent: 8, runTimeoutSeconds: 900, announceTimeoutMs: 120000, archiveAfterMinutes: 60, }, }, },}model: modelo predeterminado para los subagentes generados. Si se omite, los subagentes heredan el modelo del solicitante.allowAgents: lista predeterminada de identificadores de agentes de destino configurados permitidos parasessions_spawncuando el agente solicitante no establece su propia opciónsubagents.allowAgents(["*"]= cualquier destino configurado; valor predeterminado: solo el mismo agente).sessions_spawnrechaza las entradas obsoletas cuya configuración de agente se haya eliminado yagents_listlas omite; ejecuteopenclaw doctor --fixpara limpiarlas.maxConcurrent: cantidad máxima de ejecuciones simultáneas de subagentes. Valor predeterminado:8.runTimeoutSeconds: tiempo de espera en segundos parasessions_spawncuando el solicitante no proporciona su propia sustitución. Valor predeterminado:0(sin tiempo de espera); el valor900mostrado anteriormente es un valor opcional habitual, no el valor predeterminado integrado.announceTimeoutMs: tiempo de espera por llamada, en milisegundos, para los intentos de entrega de anunciosagentdel Gateway. Valor predeterminado:120000. Los reintentos transitorios pueden hacer que la espera total del anuncio supere un tiempo de espera configurado.archiveAfterMinutes: minutos que deben transcurrir desde que se completa una sesión de subagente hasta que se archiva automáticamente. Valor predeterminado:60;0desactiva el archivado automático.- Política de herramientas por subagente:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Proveedores personalizados y URL base
Los Plugins de proveedores publican sus propias filas del catálogo de modelos. Añada proveedores personalizados mediante models.providers en la configuración o ~/.openclaw/agents/<agentId>/agent/models.json.
Configurar un baseUrl de un proveedor personalizado o local también constituye la decisión específica de confianza de red para las solicitudes HTTP del modelo: OpenClaw permite ese origen scheme://host:port exacto a través de la ruta de obtención protegida, sin añadir una opción de configuración independiente ni confiar en otros orígenes privados.
{ 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 | etc. 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, }, ], }, }, },}Autenticación y precedencia de combinación
- Use
authHeader: true+headerspara necesidades de autenticación personalizadas. - Sobrescriba la raíz de configuración del agente con
OPENCLAW_AGENT_DIR. - Precedencia de combinación para identificadores de proveedor coincidentes:
- Los valores
baseUrlno vacíos demodels.jsondel agente tienen prioridad. - Los valores
apiKeyno vacíos del agente tienen prioridad solo cuando ese proveedor no está administrado mediante SecretRef en el contexto actual de configuración/perfil de autenticación. - Los valores
apiKeyde proveedores administrados mediante SecretRef se actualizan desde marcadores de origen (ENV_VAR_NAMEpara referencias de entorno,secretref-managedpara referencias de archivo/ejecución), en lugar de conservar los secretos resueltos. - Los valores de cabecera de proveedores administrados mediante SecretRef se actualizan desde marcadores de origen (
secretref-env:ENV_VAR_NAMEpara referencias de entorno,secretref-managedpara referencias de archivo/ejecución). - Los valores
apiKey/baseUrldel agente vacíos o ausentes recurren amodels.providersen la configuración. - Para
contextWindow/maxTokensde modelos coincidentes: el valor explícito de configuración tiene prioridad cuando está presente y es válido (un número finito positivo); de lo contrario, se usa el valor implícito/generado del catálogo. contextTokensde modelos coincidentes sigue la misma regla de prioridad del valor explícito y, en su ausencia, del implícito; úselo para limitar el contexto efectivo sin cambiar los metadatos nativos del modelo.- Los catálogos de plugins de proveedores se almacenan como fragmentos de catálogo generados y pertenecientes al plugin dentro del estado de plugins del agente.
- Use
models.mode: "replace"cuando quiera que la configuración reescriba por completomodels.jsony omita la combinación de fragmentos de catálogo pertenecientes a plugins. - La persistencia de marcadores toma el origen como autoridad: los marcadores se escriben a partir de la instantánea activa de la configuración de origen (antes de la resolución), no a partir de los valores secretos resueltos en tiempo de ejecución.
- Los valores
Detalles de los campos del proveedor
Catálogo de nivel superior
models.mode: comportamiento del catálogo de proveedores (mergeoreplace).models.providers: mapa personalizado de proveedores indexado por identificador de proveedor.- Ediciones seguras: use
openclaw config set models.providers.<id> '<json>' --strict-json --mergeoopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergepara actualizaciones aditivas.config setrechaza los reemplazos destructivos a menos que pase--replace.
- Ediciones seguras: use
Conexión y autenticación del proveedor
models.providers.*.api: adaptador de solicitudes (openai-completions,openai-responses,openai-chatgpt-responses,anthropic-messages,google-generative-ai,google-vertex,github-copilot,bedrock-converse-stream,ollama,azure-openai-responses). Para backends autoalojados de/v1/chat/completions, como MLX, vLLM, SGLang y la mayoría de los servidores locales compatibles con OpenAI, useopenai-completions. Un proveedor personalizado conbaseUrlpero sinapiusaopenai-completionsde forma predeterminada; establezcaopenai-responsessolo cuando el backend admita/v1/responses.models.providers.*.apiKey: credencial del proveedor (se recomienda la sustitución mediante SecretRef/entorno).models.providers.*.auth: estrategia de autenticación (api-key,token,oauth,aws-sdk).models.providers.*.contextWindow: ventana de contexto nativa predeterminada para los modelos de este proveedor cuando la entrada del modelo no establececontextWindow.models.providers.*.contextTokens: límite efectivo predeterminado del contexto en tiempo de ejecución para los modelos de este proveedor cuando la entrada del modelo no establececontextTokens.models.providers.*.maxTokens: límite predeterminado de tokens de salida para los modelos de este proveedor cuando la entrada del modelo no establecemaxTokens.models.providers.*.timeoutSeconds: tiempo de espera HTTP opcional, por proveedor y en segundos, para solicitudes al modelo, incluidos la conexión, las cabeceras, el cuerpo y la gestión de la cancelación total de la solicitud.models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, insertaoptions.num_ctxen las solicitudes (valor predeterminado:true).models.providers.*.authHeader: fuerza el transporte de credenciales en la cabeceraAuthorizationcuando sea necesario.models.providers.*.baseUrl: URL base de la API de origen.models.providers.*.headers: cabeceras estáticas adicionales para el enrutamiento por proxy/inquilino.
Sobrescrituras del transporte de solicitudes
models.providers.*.request: sobrescrituras del transporte para solicitudes HTTP al proveedor de modelos.
request.headers: cabeceras adicionales (combinadas con los valores predeterminados del proveedor). Los valores aceptan SecretRef.request.auth: sobrescritura de la estrategia de autenticación. Modos:"provider-default"(usa la autenticación integrada del proveedor),"authorization-bearer"(contoken),"header"(conheaderName,valueyprefixopcional).request.proxy: sobrescritura del proxy HTTP. Modos:"env-proxy"(usa las variables de entornoHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(conurl). Ambos modos aceptan un subobjetotlsopcional.request.tls: sobrescritura de TLS para conexiones directas. Campos:ca,cert,key,passphrase(todos aceptan SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: cuando estrue, permite que las solicitudes HTTP al proveedor de modelos accedan a rangos privados, CGNAT o similares a través de la protección de obtención HTTP del proveedor. Las URL base de proveedores personalizados/locales ya confían en el origen configurado exacto, excepto los orígenes de metadatos/enlace local, que permanecen bloqueados sin una aceptación explícita. Establezca este valor enfalsepara desactivar la confianza en el origen exacto. WebSocket usa el mismorequestpara las cabeceras/TLS, pero no esa protección SSRF de obtención. Valor predeterminado:false.
Entradas del catálogo de modelos
models.providers.*.models: entradas explícitas del catálogo de modelos del proveedor.models.providers.*.models.*.input: modalidades de entrada del modelo. Use["text"]para modelos que solo admiten texto y["text", "image"]para modelos nativos de imagen/visión. Los archivos adjuntos de imagen solo se insertan en los turnos del agente cuando el modelo seleccionado está marcado como compatible con imágenes.models.providers.*.models.*.contextWindow: metadatos de la ventana de contexto nativa del modelo. Este valor sobrescribecontextWindowa nivel de proveedor para ese modelo.models.providers.*.models.*.contextTokens: límite opcional del contexto en tiempo de ejecución. Este valor sobrescribecontextTokensa nivel de proveedor; úselo cuando quiera un presupuesto de contexto efectivo menor que elcontextWindownativo del modelo;openclaw models listmuestra ambos valores cuando difieren.models.providers.*.models.*.compat.supportsDeveloperRole: indicación opcional de compatibilidad. Paraapi: "openai-completions"con unbaseUrlno nativo y no vacío (el host no esapi.openai.com), OpenClaw fuerza este valor afalseen tiempo de ejecución. UnbaseUrlvacío/omitido conserva el comportamiento predeterminado de OpenAI.models.providers.*.models.*.compat.requiresStringContent: indicación opcional de compatibilidad para endpoints de chat compatibles con OpenAI que solo admiten cadenas. Cuando estrue, OpenClaw aplana los arreglosmessages[].contentde texto puro y los convierte en cadenas simples antes de enviar la solicitud.models.providers.*.models.*.compat.strictMessageKeys: indicación opcional de compatibilidad para endpoints de chat compatibles con OpenAI que aplican validación estricta. Cuando estrue, OpenClaw reduce los objetos de mensajes salientes de Chat Completions aroleycontentantes de enviar la solicitud.models.providers.*.models.*.compat.thinkingFormat: indicación opcional sobre la carga útil de razonamiento. Use"together"parareasoning.enabledal estilo de Together,"qwen"paraenable_thinkingen el nivel superior o"qwen-chat-template"parachat_template_kwargs.enable_thinkingen servidores compatibles con OpenAI de la familia Qwen que admitan argumentos de palabra clave de plantilla de chat a nivel de solicitud, como vLLM. Los modelos Qwen de vLLM configurados exponen opciones binarias de/think(off,on) para estos formatos.models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages: indicación opcional de compatibilidad para backends de Chat Completions al estilo de DeepSeek que requieren que los mensajes anteriores del asistente conservenreasoning_contental reproducirse. Cuando estrue, OpenClaw conserva ese campo en los mensajes salientes del asistente. Úselo al conectar un proxy personalizado compatible con DeepSeek que rechace solicitudes después de eliminar el razonamiento. Valor predeterminado:false.
Descubrimiento de Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: raíz de la configuración de descubrimiento automático de Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: activa/desactiva el descubrimiento implícito.plugins.entries.amazon-bedrock.config.discovery.region: región de AWS para el descubrimiento.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filtro opcional por identificador de proveedor para el descubrimiento dirigido.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: intervalo de sondeo para actualizar el descubrimiento.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: ventana de contexto alternativa para los modelos descubiertos.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: máximo alternativo de tokens de salida para los modelos descubiertos.
La incorporación interactiva de proveedores personalizados deduce la entrada de imágenes para patrones conocidos de identificadores de modelos de visión, incluidos GPT-4o/GPT-4.1/GPT-5+, las familias de razonamiento o1/o3/o4, Claude, Gemini, cualquier identificador con el sufijo -vl (Qwen-VL y similares) y familias con nombre como LLaVA, Pixtral, InternVL, Mllama, MiniCPM-V y GLM-4V; omite la pregunta adicional para familias conocidas que solo admiten texto (Llama, DeepSeek, Mistral/Mixtral, Kimi/Moonshot, Codestral, Devstral, Phi, QwQ, CodeLlama e identificadores Qwen simples sin un sufijo vl/vision). Los identificadores de modelos desconocidos siguen solicitando información sobre la compatibilidad con imágenes. La incorporación no interactiva usa la misma deducción; pase --custom-image-input para forzar metadatos compatibles con imágenes o --custom-text-input para forzar metadatos de solo texto.
Ejemplos de proveedores
Cerebras (GLM 4.7 / GPT OSS)
El Plugin de proveedor externo oficial cerebras puede configurar esto mediante openclaw onboard --auth-choice cerebras-api-key. Use una configuración explícita del proveedor solo al sobrescribir los valores predeterminados.
{ 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)" }, ], }, }, },}Use cerebras/zai-glm-4.7 para Cerebras; zai/glm-4.7 para la conexión directa con Z.AI.
Kimi Coding
{ env: { KIMI_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "kimi/kimi-for-coding" }, models: { "kimi/kimi-for-coding": { alias: "Kimi Code" } }, }, },}Proveedor integrado compatible con Anthropic. Atajo: openclaw onboard --auth-choice kimi-code-api-key.
Modelos locales (LM Studio)
Consulta Modelos locales. En resumen: ejecuta un modelo local grande mediante la API Responses de LM Studio en hardware potente; mantén combinados los modelos alojados como alternativa.
MiniMax M3 (directo)
{ agents: { defaults: { model: { primary: "minimax/MiniMax-M3" }, models: { "minimax/MiniMax-M3": { alias: "Minimax" }, }, }, }, models: { mode: "merge", providers: { minimax: { baseUrl: "https://api.minimax.io/anthropic", apiKey: "${MINIMAX_API_KEY}", api: "anthropic-messages", models: [ { id: "MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 }, contextWindow: 1000000, maxTokens: 131072, }, ], }, }, },}Define MINIMAX_API_KEY. Atajos: openclaw onboard --auth-choice minimax-global-api u openclaw onboard --auth-choice minimax-cn-api. El catálogo de modelos usa M3 de forma predeterminada y también incluye las variantes de M2.7. En la ruta de transmisión compatible con Anthropic, OpenClaw desactiva de forma predeterminada el razonamiento de MiniMax M2.x, a menos que configures thinking explícitamente; MiniMax-M3 (y M3.x) permanece de forma predeterminada en la ruta de razonamiento omitido/adaptativo del proveedor. /fast on o params.fastMode: true sustituye MiniMax-M2.7 por 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, }, ], }, }, },}Para el endpoint de China: baseUrl: "https://api.moonshot.cn/v1" u openclaw onboard --auth-choice moonshot-api-key-cn.
Los endpoints nativos de Moonshot anuncian compatibilidad con el uso de transmisión en el transporte compartido openai-completions, y OpenClaw la activa según las capacidades del endpoint, en lugar de basarse únicamente en el identificador del proveedor integrado.
OpenCode
{ agents: { defaults: { model: { primary: "opencode/claude-opus-4-6" }, models: { "opencode/claude-opus-4-6": { alias: "Opus" } }, }, },}Define OPENCODE_API_KEY (u OPENCODE_ZEN_API_KEY). Usa referencias opencode/... para el catálogo Zen o referencias opencode-go/... para el catálogo Go. Atajo: openclaw onboard --auth-choice opencode-zen u openclaw onboard --auth-choice opencode-go.
Synthetic (compatible con Anthropic)
{ 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, }, ], }, }, },}La URL base debe omitir /v1 (el cliente de Anthropic lo añade). Atajo: 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": {} }, }, },}Define ZAI_API_KEY. Las referencias de modelos usan el identificador canónico del proveedor zai/*. Atajo: openclaw onboard --auth-choice zai-api-key.
- Endpoint general:
https://api.z.ai/api/paas/v4 - Endpoint de programación:
https://api.z.ai/api/coding/paas/v4 - La opción de autenticación predeterminada
zai-api-keyprueba tu clave y detecta automáticamente a qué endpoint pertenece (si la detección no es concluyente, solicita que elijas uno y selecciona Global de forma predeterminada). También hay opciones de autenticación específicas para CN y Coding-Plan que permiten seleccionarlas explícitamente. - Para el endpoint general, define un proveedor personalizado con la sobrescritura de la URL base.
Contenido relacionado
- Configuración — agentes
- Configuración — canales
- Referencia de configuración — otras claves de nivel superior
- Herramientas y plugins