Gateway
Configuración: herramientas y proveedores personalizados
Claves de configuración de tools.* y configuración de proveedores personalizados o URL base. Para agentes, canales y otras claves de configuración de nivel superior, consulte 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, ask_user, skill_workshop, image, image_generate, music_generate, video_generate |
messaging |
group:messaging, sessions, sessions_list, sessions_history, sessions_search, conversations_list, conversations_send, conversations_turn, sessions_send, sessions_spawn, sessions_yield, subagents, session_status, ask_user |
full |
Sin restricciones (igual que si no se establece) |
coding y messaging también permiten implícitamente bundle-mcp (servidores MCP configurados).
Grupos de herramientas
| Grupo | Herramientas |
|---|---|
group:runtime |
exec, process, code_execution (se acepta bash como alias de exec) |
group:fs |
read, write, edit, apply_patch |
group:sessions |
sessions, sessions_list, sessions_history, sessions_search, conversations_list, conversations_send, conversations_turn, 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, screen, terminal, canvas, show_widget |
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, ask_user, 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 un chip procesable; una TUI respaldada por el Gateway muestra una solicitud interactiva equivalente. Al aceptar cualquiera de ellos, se crea una nueva sesión de árbol de trabajo administrado y se envía allí la solicitud 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 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 la configuración normal de las políticas tools.allow y tools.deny las configura 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 de plugin bundle-mcp. Los perfiles normales de herramientas pueden permitirlas, pero tools.sandbox.tools es una barrera adicional para las sesiones en entornos aislados. Si el modo del entorno aislado es "all" o "non-main", incluya una de estas entradas en la lista de herramientas permitidas del entorno aislado cuando deban estar visibles las herramientas de MCP o plugins:
bundle-mcppara los servidores MCP administrados por OpenClaw desdemcp.servers- el identificador de plugin de 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 servidores, como
outlook__send_mailooutlook__*, cuando solo se desea un servidor
Los patrones globales de servidor utilizan el prefijo del servidor MCP seguro para el proveedor, que no coincide necesariamente con la clave mcp.servers sin procesar. Los caracteres distintos de [A-Za-z0-9_-] se convierten en -, los nombres que no comienzan por una letra reciben el prefijo mcp-, y los prefijos largos o duplicados pueden truncarse o recibir un sufijo; por ejemplo, mcp.servers["Outlook Graph"] utiliza 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 cargarse correctamente, aunque sus herramientas se filtren antes de la solicitud al proveedor. Utilice openclaw doctor para detectar esta situació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 utilizan la misma barrera del entorno aislado, pero este diagnóstico aún no enumera esas fuentes; utilice las mismas entradas de la lista de permitidos si sus herramientas desaparecen en turnos ejecutados en entornos 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 están disponibles mediante
el espacio de nombres MCP generado. El modelo normalmente 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 de archivos de la API virtual 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 de estilo TypeScript antes de
llamar a MCP.<server>.<tool>(). Consulte 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 para permitir o denegar 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 herramienta 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 realiza 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 → permitir/denegar.
{ 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 de solicitante específica. Esta es una defensa en profundidad adicional al 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+id, id, e164, nombre de usuario, nombre y, por último, comodín.
La configuración agents.entries.*.tools.toolsBySender por agente prevalece sobre 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 configuración por agente (
agents.entries.*.tools.elevated) solo puede aplicar restricciones adicionales. /elevated on|off|ask|fullalmacena el estado por sesión; las directivas insertadas se aplican a un único mensaje.- La ejecución
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/sin definir 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 tarda mucho; 0 lo desactiva.
tools.loopDetection
Las comprobaciones de seguridad del bucle de herramientas están desactivadas de forma predeterminada. Defina enabled: true para activar la detección. La configuración puede definirse globalmente en tools.loopDetection y sobrescribirse por agente en agents.entries.*.tools.loopDetection.
{ tools: { loopDetection: { enabled: true, }, },}tools.web
{ tools: { web: { search: { enabled: true, apiKey: "brave_api_key", // o la variable de entorno BRAVE_API_KEY (proveedor Brave) maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, fetch: { enabled: true, provider: "firecrawl", // opcional; omítalo para la detección automática 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 limita el valor a 32000–10000000; maxChars lo limita a maxCharsCap (aumente maxCharsCap para permitir respuestas más grandes).
tools.media
Configura la comprensión de contenido multimedia entrante (imagen/audio/vídeo):
{ tools: { media: { concurrency: 2, models: [ { provider: "openai", model: "gpt-4o-mini-transcribe", capabilities: ["audio"] }, { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"], capabilities: ["audio"], }, { provider: "ollama", model: "gemma4:26b", capabilities: ["image"] }, { provider: "google", model: "gemini-3-flash-preview", capabilities: ["video"] }, ], audio: { enabled: true, preferredModel: "openai/gpt-4o-mini-transcribe" }, image: { enabled: true, preferredModel: "ollama/gemma4:26b" }, video: { enabled: true }, }, },}tools.media.models es la única lista de modelos configurada. Cada entrada declara las capacidades que gestiona. El selector opcional preferredModel acepta provider/model, un identificador de modelo, provider:<id> para entradas predeterminadas del proveedor o cli:command; las entradas coincidentes se mueven al principio del orden de respaldo de esa capacidad. Las instrucciones, los límites, la configuración de solicitudes, el ámbito, la política de archivos adjuntos y la repetición de transcripciones de audio por capacidad conservan sus valores predeterminados para los modelos configurados y detectados automáticamente; una entrada de modelo puede sobrescribir campos específicos del modelo.
Campos de las entradas de modelos multimedia
Entrada de proveedor (type: "provider" u omitida):
provider: identificador del proveedor de API (openai,anthropic,google/gemini,groq, etc.)model: sobrescritura del identificador de modeloprofile/preferredProfile: selección del perfilauth-profiles.json
Entrada de CLI (type: "cli"):
command: ejecutable que se ejecutaráargs: argumentos con plantilla (admite{{MediaPath}},{{Prompt}},{{MaxChars}}, etc.;openclaw doctor --fixmigra los marcadores de posición obsoletos{input}a{{MediaPath}})
Campos comunes:
capabilities: lista que contiene uno o varios deimage,audioyvideo.prompt,maxChars,maxBytes,timeoutSeconds,language: sobrescrituras por entrada.- Las entradas
timeoutSecondscoincidentes 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 propia solicitud y no se reduce por el trabajo de preparación anterior. - En caso de fallo, 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.
tools.agentToAgent
{ tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, },}tools.sessions
Controla qué sesiones pueden seleccionarse como destino mediante las herramientas de sesión (sessions_list, sessions_history, sessions_send).
Valor predeterminado: tree (la sesión actual + las sesiones que esta inicia, como los subagentes, además de las sesiones de grupo
observadas de forma ambiental para el mismo agente).
{ 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 + las sesiones iniciadas por la sesión actual (subagentes). Para las operaciones de lectura, también incluye las sesiones de grupo del mismo agente que la sesión actual observa mediante el conocimiento ambiental de los grupos.agent: cualquier sesión perteneciente al identificador del agente actual (puede incluir a otros usuarios si se ejecutan sesiones por remitente con el mismo identificador de agente).all: cualquier sesión. La selección de sesiones de 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 pueden omitirse fuera del ámbito actual.
Con el valor predeterminado session.dmScope: "main", la actividad humana en un grupo hace que esa sesión de grupo
del mismo agente sea visible de forma ambiental para la sesión principal del agente. En una configuración multiusuario, "main" también comparte
una sesión de mensajes directos entre usuarios, por lo que cada usuario dirigido allí puede leer los grupos observados de forma ambiental,
incluso mediante memory_search de la memoria de sesión. Use un dmScope por interlocutor para aislar los mensajes directos, o defina
tools.sessions.visibility: "self" para excluirse de las lecturas de sesiones observadas de forma ambiental.
tools.sessions_spawn
Controla la compatibilidad con archivos adjuntos insertados para sessions_spawn.
{ tools: { sessions_spawn: { attachments: { enabled: false, // participación opcional: defina true para permitir archivos adjuntos insertados maxTotalBytes: 5242880, // 5 MB en total entre todos los archivos maxFiles: 50, maxFileBytes: 1048576, // 1 MB por archivo retainOnSessionKeep: false, // conservar los archivos adjuntos cuando 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.manifest.json. - Los archivos adjuntos de ACP se limitan a 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 elimina automáticamente de la persistencia de transcripciones.
- Las entradas Base64 se validan mediante comprobaciones estrictas del alfabeto y del relleno, así como una comprobación de tamaño previa a la descodificació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. Desactivados de forma predeterminada, salvo que se aplique una regla de activación automática de GPT-5 con comportamiento agéntico estricto.
{ tools: { experimental: { planTool: true, // activar la herramienta experimental update_plan }, },}planTool: activa la herramienta estructuradaupdate_planpara realizar el seguimiento de trabajos no triviales con varios pasos.- Valor predeterminado:
false, salvo queagents.defaults.embeddedAgent.executionContract(o una sobrescritura por agente) se defina como"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 la autenticación y el enrutamiento de modelos de Codex pertenecen al proveedoropenai). Definatruepara forzar la activación de la herramienta fuera de ese ámbito, ofalsepara mantenerla desactivada incluso en ejecuciones de GPT-5 con comportamiento agéntico estricto. - Cuando está activada, la instrucción del sistema también añade orientación de uso para que el modelo solo la utilice en trabajos sustanciales y mantenga como máximo un paso
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 iniciados. Si se omite, los subagentes heredan el modelo del invocador.allowAgents: lista de permitidos predeterminada de identificadores de agentes de destino configurados parasessions_spawncuando el agente solicitante no establece su propiosubagents.allowAgents(["*"]= cualquier destino configurado; valor predeterminado: solo el mismo agente). Las entradas obsoletas cuya configuración de agente se haya eliminado son rechazadas porsessions_spawny se omiten deagents_list; ejecuteopenclaw doctor --fixpara limpiarlas.maxConcurrent: número máximo de ejecuciones simultáneas de subagentes. Valor predeterminado:8.runTimeoutSeconds: tiempo de espera (segundos) parasessions_spawncuando el invocador no pasa su propia sustitución. Valor predeterminado:0(sin tiempo de espera); el900mostrado anteriormente es un valor opcional habitual, no el valor predeterminado integrado.announceTimeoutMs: tiempo de espera por llamada (milisegundos) para los intentos de entrega de anuncios deagentdel Gateway. Valor predeterminado:120000. Los reintentos transitorios pueden hacer que la espera total del anuncio sea mayor que un tiempo de espera configurado.archiveAfterMinutes: minutos que transcurren desde que finaliza 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 el baseUrl de un proveedor personalizado/local también constituye la decisión específica de confianza de red para las solicitudes HTTP de modelos: 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", // combinar (predeterminado) | reemplazar 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. - Sustituya la raíz de configuración del agente mediante
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 solo tienen prioridad cuando ese proveedor no está gestionado mediante SecretRef en el contexto actual de configuración/perfil de autenticación. - Los valores
apiKeyde proveedores gestionados mediante SecretRef se actualizan a partir de marcadores de origen (ENV_VAR_NAMEpara referencias de entorno,secretref-managedpara referencias de archivo/ejecución), en lugar de conservar secretos resueltos. - Los valores de cabecera de proveedores gestionados mediante SecretRef se actualizan a partir de marcadores de origen (
secretref-env:ENV_VAR_NAMEpara referencias de entorno,secretref-managedpara referencias de archivo/ejecución). - Los valores
apiKey/baseUrlvacíos o ausentes del agente recurren amodels.providersen la configuración. - Para
contextWindow/maxTokensde modelos coincidentes: el valor explícito de la configuración tiene prioridad cuando está presente y es válido (un número finito positivo); de lo contrario, se utiliza el valor implícito/generado del catálogo. - El
contextTokensde modelos coincidentes sigue la misma regla de prioridad del valor explícito y, en su defecto, del implícito; utilícelo 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 propiedad del plugin en el estado de plugins del agente.
- Use
models.mode: "replace"cuando quiera que la configuración reescriba por completomodels.jsony omita la combinación con fragmentos de catálogo propiedad de plugins. - La persistencia de marcadores se rige por el origen: los marcadores se escriben desde la instantánea de configuración de origen activa (antes de la resolución), no desde los valores de secretos resueltos en tiempo de ejecución.
- Los valores
Detalles de los campos de proveedor
Catálogo de nivel superior
models.mode: comportamiento del catálogo de proveedores (mergeoreplace).models.providers: mapa de proveedores personalizados 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/v1/chat/completionsautoalojados, como MLX, vLLM, SGLang y la mayoría de los servidores locales compatibles con OpenAI, useopenai-completions. Un proveedor personalizado conbaseUrl, pero sinapi, utiliza de forma predeterminadaopenai-completions; 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 de contexto efectivo predeterminado 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 opcional por proveedor, en segundos, para solicitudes HTTP de modelos, incluida la gestión de conexión, cabeceras, cuerpo y cancelación total de la solicitud.models.providers.*.injectNumCtxForOpenAICompat: para Ollama +openai-completions, inyectaoptions.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 ascendente.models.providers.*.headers: cabeceras estáticas adicionales para el enrutamiento de proxy/inquilino.
Sustituciones del transporte de solicitudes
models.providers.*.request: sustituciones del transporte para solicitudes HTTP a proveedores de modelos.
request.headers: cabeceras adicionales (combinadas con los valores predeterminados del proveedor). Los valores admiten SecretRef.request.auth: sustitución de la estrategia de autenticación. Modos:"provider-default"(usar la autenticación integrada del proveedor),"authorization-bearer"(contoken),"header"(conheaderName,valueyprefixopcional).request.proxy: sustitución del proxy HTTP. Modos:"env-proxy"(usar las variables de entornoHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(conurl). Ambos modos admiten un subobjetotlsopcional.request.tls: sustitución de TLS para conexiones directas. Campos:ca,cert,key,passphrase(todos admiten SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: cuando seatrue, permite que las solicitudes HTTP a proveedores 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, salvo los orígenes de metadatos/enlace local, que permanecen bloqueados sin una activación explícita. Establezca este valor enfalsepara renunciar a la confianza en el origen exacto. WebSocket utiliza el mismorequestpara 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 de solo texto y["text", "image"]para modelos nativos de imagen/visión. Los archivos adjuntos de imagen solo se incorporan a 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. Sustituye elcontextWindowdel proveedor para ese modelo.models.providers.*.models.*.contextTokens: límite de contexto opcional en tiempo de ejecución. Sustituye elcontextTokensdel proveedor; utilícelo cuando quiera un presupuesto de contexto efectivo menor que elcontextWindownativo del modelo;openclaw models listmuestra ambos valores cuando difieren.
Declaraciones de capacidades de proveedores personalizados
Los catálogos de proveedores son propietarios de compat para las rutas de modelos incluidos y conocidos por el catálogo. No copie esas marcas en la configuración: OpenClaw utiliza la fila del catálogo cuando los valores configurados de api y baseUrl siguen identificando esa ruta. openclaw doctor --fix elimina las sustituciones heredadas coincidentes e informa de los valores divergentes para su revisión.
Se sigue admitiendo un bloque compat para un proveedor verdaderamente personalizado, un modelo personalizado o un modelo del catálogo enrutado a un endpoint diferente. Establezca únicamente las capacidades verificadas con ese endpoint:
| Clave de ruta personalizada | Contrato de tiempo de ejecución |
|---|---|
supportsStore |
Acepta el campo de solicitud store de OpenAI. |
supportsPromptCacheKey |
Acepta claves de afinidad de caché de prompts/sesión de OpenAI. |
supportsDeveloperRole |
Acepta mensajes developer en lugar de requerir system. |
supportsReasoningEffort |
Acepta un control del esfuerzo de razonamiento. |
supportsTemperature |
Acepta temperature para este modelo y adaptador. |
supportsUsageInStreaming |
Emite metadatos de uso en respuestas transmitidas. |
supportsTools |
Admite llamadas estructuradas a herramientas/funciones. Establezca false para desactivar las herramientas. |
supportsStrictMode |
Acepta esquemas estrictos de herramientas. |
requiresStringContent |
Requiere contenido de mensajes de Chat Completions como cadenas simples. |
strictMessageKeys |
Requiere que los mensajes salientes contengan únicamente claves aceptadas. |
visibleReasoningDetailTypes |
Indica los tipos de bloques de detalles de razonamiento que se pueden mostrar de forma segura en las transcripciones. |
supportedReasoningEfforts |
Enumera las etiquetas de razonamiento aceptadas por el endpoint. |
reasoningEffortMap |
Asigna las etiquetas de pensamiento de OpenClaw a etiquetas específicas del endpoint. |
maxTokensField |
Selecciona max_tokens o max_completion_tokens. |
thinkingFormat |
Selecciona el dialecto de la carga útil de razonamiento del endpoint. |
requiresToolResultName |
Requiere un nombre de herramienta en los mensajes de resultados de herramientas. |
requiresAssistantAfterToolResult |
Requiere un mensaje del asistente después de los resultados de herramientas. |
requiresThinkingAsText |
Reproduce el razonamiento como texto en lugar de como contenido estructurado. |
requiresReasoningContentOnAssistantMessages |
Conserva reasoning_content al estilo de DeepSeek durante la reproducción. |
toolSchemaProfile |
Selecciona un perfil de normalización de esquemas de herramientas definido por el proveedor. |
unsupportedToolSchemaKeywords |
Elimina palabras clave con nombre de JSON Schema rechazadas por el endpoint. |
toolCallArgumentsEncoding |
Selecciona la codificación de argumentos de llamadas a herramientas del endpoint. |
requiresOpenAiAnthropicToolPayload |
Convierte las llamadas a herramientas con formato OpenAI en cargas útiles de la familia Anthropic. |
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 o 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 de respaldo para los modelos descubiertos.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: cantidad máxima de tokens de salida de respaldo para los modelos descubiertos.
La incorporación interactiva de proveedores personalizados infiere 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 sin un sufijo vl/vision). Para los identificadores de modelos desconocidos, se sigue preguntando por la compatibilidad con imágenes. La incorporación no interactiva usa la misma inferencia; se debe pasar --custom-image-input para forzar metadatos compatibles con imágenes o --custom-text-input para forzar metadatos que solo admiten 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 conectarse directamente a 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)
Consulte Modelos locales. En resumen: ejecute un modelo local grande mediante la API Responses de LM Studio en hardware potente; mantenga combinados los modelos alojados para usarlos como respaldo.
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, }, ], }, }, },}Establezca MINIMAX_API_KEY. Atajos: openclaw onboard --auth-choice minimax-global-api o openclaw onboard --auth-choice minimax-cn-api. El catálogo de modelos usa M3 de forma predeterminada y también incluye las variantes M2.7. En la ruta de streaming compatible con Anthropic, OpenClaw desactiva de forma predeterminada el razonamiento de MiniMax M2.x, salvo que se establezca explícitamente thinking; MiniMax-M3 (y M3.x) permanece de forma predeterminada en la ruta de razonamiento omitido/adaptativo del proveedor. /fast on o params.fastMode: true reescribe MiniMax-M2.7 como 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" o openclaw onboard --auth-choice moonshot-api-key-cn.
Los endpoints nativos de Moonshot anuncian compatibilidad con el uso de streaming en el transporte compartido openai-completions, y OpenClaw la determina a partir de las capacidades del endpoint, no solo del identificador del proveedor integrado.
OpenCode
{ agents: { defaults: { model: { primary: "opencode/claude-opus-4-6" }, models: { "opencode/claude-opus-4-6": { alias: "Opus" } }, }, },}Establezca OPENCODE_API_KEY (o OPENCODE_ZEN_API_KEY). Use referencias opencode/... para el catálogo Zen o referencias opencode-go/... para el catálogo Go. Atajo: openclaw onboard --auth-choice opencode-zen o openclaw onboard --auth-choice opencode-go.
Synthetic (compatible con Anthropic)
{ env: { SYNTHETIC_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "synthetic/hf:MiniMaxAI/MiniMax-M3" }, models: { "synthetic/hf:MiniMaxAI/MiniMax-M3": { alias: "MiniMax M3" } }, }, }, models: { mode: "merge", providers: { synthetic: { baseUrl: "https://api.synthetic.new/anthropic", apiKey: "${SYNTHETIC_API_KEY}", api: "anthropic-messages", models: [ { id: "hf:MiniMaxAI/MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 262144, 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": {} }, }, },}Establezca ZAI_API_KEY. Las referencias de modelos usan el identificador de proveedor canónico 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-keycomprueba la clave y detecta automáticamente a qué endpoint pertenece (si la detección no es concluyente, solicita una elección y usa 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, defina un proveedor personalizado con la URL base sobrescrita.
Contenido relacionado
- Configuración — agentes
- Configuración — canales
- Referencia de configuración — otras claves de nivel superior
- Herramientas y plugins