Skip to main content

OpenClaw

Usa los modelos de Alibaba Cloud Model Studio en OpenClaw.

Inicio rápido

  1. 1

    Instala el plugin de Qwen

    openclaw plugins install @openclaw/qwen-provider
    
    Si no se puede instalar el plugin, consulta Configura con un archivo de configuración.
  2. 2

    Obtén una clave de API

    • Token Plan
    • Pago por uso
    • Coding Plan
    Obtén una clave de API de Token Plan según tu edición:
  3. 3

    Configura el modelo

    Ejecuta el comando correspondiente a tu plan de facturación e introduce la clave de API cuando se te solicite.
    • Token Plan
    • Pago por uso
    • Coding Plan
    openclaw onboard --auth-choice qwen-token-plan-cn
    
  4. 4

    Verifica

    Ejecuta los siguientes comandos para comprobar la lista de modelos y realizar una llamada de prueba:
    openclaw models list --provider qwen-token-plan
    openclaw agent --model qwen-token-plan/qwen3.8-max --message "Reply with: ok"
    

Configura con un archivo de configuración

Usa este método si no se puede instalar el plugin de Qwen o si prefieres administrar la configuración manualmente.
  1. 1

    Abre o crea el archivo de configuración

    ~/.openclaw/openclaw.jsonActualiza solo los campos relevantes de models, agents y gateway. No reemplaces el archivo completo.
  2. 2

    Escribe la configuración

    • Token Plan Personal Edition
    • Token Plan Team Edition
    • Pago por uso
    • Coding Plan
    Reemplaza YOUR_API_KEY por tu clave de API de Token Plan Personal Edition.
    {
      "models": {
        "mode": "merge",
        "providers": {
          "bailian-token-plan": {
            "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
            "apiKey": "YOUR_API_KEY",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "auto",
                "name": "auto",
                "reasoning": false,
                "input": [
                  "text"
                ],
                "contextWindow": 1000000,
                "maxTokens": 393216,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen4-max-preview",
                "name": "qwen4-max-preview",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 131072,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen3.8-max",
                "name": "qwen3.8-max",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 131072,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen3.8-flash",
                "name": "qwen3.8-flash",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 131072,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen3.7-max",
                "name": "qwen3.7-max",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen3.7-plus",
                "name": "qwen3.7-plus",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "qwen3.6-flash",
                "name": "qwen3.6-flash",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "deepseek-v4.1-flash",
                "name": "deepseek-v4.1-flash",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "deepseek-v4.1-flash-1017",
                "name": "deepseek-v4.1-flash-1017",
                "reasoning": true,
                "input": [
                  "text",
                  "image"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "deepseek-v4-pro",
                "name": "deepseek-v4-pro",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "deepseek-v4-pro-0813",
                "name": "deepseek-v4-pro-0813",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "deepseek-v4-flash-0731",
                "name": "deepseek-v4-flash-0731",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 1000000,
                "maxTokens": 65536,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "glm-5.3",
                "name": "glm-5.3",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              },
              {
                "id": "glm-5.2",
                "name": "glm-5.2",
                "reasoning": true,
                "input": [
                  "text"
                ],
                "contextWindow": 202752,
                "maxTokens": 16384,
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                }
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "bailian-token-plan/auto"
          }
        }
      },
      "gateway": {
        "mode": "local",
        "auth": {
          "mode": "none"
        }
      }
    }
    
    Al usar qwen4-max-preview, usa params.cacheRetention para establecer short, long o none; long usa un TTL de 1 hora.
gateway.auth.mode: none solo es adecuado para uso local en una sola máquina. Para compartir o acceder de forma remota, ejecuta openclaw doctor --generate-gateway-token para generar un token y, a continuación, reinicia el Gateway.

Conecta canales de mensajería

  • DingTalk
  • WeChat
  • QQ
Si implementas OpenClaw con Simple Application Server o Elastic Desktop Service, el plugin de DingTalk suele estar preinstalado y se puede configurar en la interfaz gráfica.
  1. 1

    Crea una aplicación de DingTalk y obtén las credenciales

    1. Inicia sesión en la DingTalk Open Platform, selecciona una organización para la que tengas permisos de desarrollador o crea una organización y, a continuación, obtén permisos de desarrollador.
    2. En la barra de menús superior, selecciona Application Development, haz clic en Create Application, introduce un nombre y una descripción para la aplicación y, a continuación, haz clic en Save.
    3. En la página Add Application Capabilities, agrega un Bot. Habilita Bot Configuration, completa los campos obligatorios, mantén el valor predeterminado Stream mode en message receiving mode y haz clic en Publish.
    4. En la página Credentials and Basic Information, obtén el Client ID y el Client Secret.
    5. En la página Version Management and Release, crea una versión, define el rango de visibilidad, guarda y publica.
  2. 2

    Instala el plugin de canal de DingTalk

    openclaw plugins install @soimy/dingtalk
    openclaw plugins list
    
    La salida debe incluir el plugin dingtalk con el estado loaded.
  3. 3

    Configura el canal de DingTalk

    Agrega las siguientes configuraciones a ~/.openclaw/openclaw.json. Reemplaza YOUR_DINGTALK_APPKEY y YOUR_DINGTALK_APPSECRET por las credenciales del paso 1. No sobrescribas las configuraciones existentes, como models y agents.
    {
      "channels": {
        "dingtalk": {
          "enabled": true,
          "clientId": "YOUR_DINGTALK_APPKEY",
          "clientSecret": "YOUR_DINGTALK_APPSECRET",
          "robotCode": "YOUR_DINGTALK_APPKEY",
          "dmPolicy": "open",
          "groupPolicy": "open",
          "messageType": "markdown"
        }
      },
      "plugins": {
        "allow": ["dingtalk"],
        "entries": {
          "dingtalk": {
            "enabled": true
          }
        }
      }
    }
    
    Establecer dmPolicy y groupPolicy en open es adecuado para pruebas o uso personal. En un entorno de producción, establécelos en allowlist y agrega el campo allowFrom:
    "dmPolicy": "allowlist",
    "groupPolicy": "allowlist",
    "allowFrom": ["your-employee-id", "group-id"]
    
  4. 4

    Verifica

    openclaw gateway restart
    openclaw status
    
    En la sección Channels, DingTalk debe aparecer como ON con el estado OK - configured. Envía un mensaje al bot en un chat de grupo de DingTalk para probar la conexión.

Lark

  1. 1

    Crea una aplicación de Lark

    1. Ve a la Lark Open Platform, haz clic en Create Custom Enterprise App, introduce un nombre y una descripción para la aplicación, selecciona un icono y, a continuación, haz clic en Create.
    2. En la página Credentials and Basic Information, copia el App ID (con el formato cli_xxx) y el App Secret.
    3. En la página Permission Management, haz clic en Batch Import/Export Permissions, pega el siguiente JSON, haz clic en Next, Confirm New Permissions y, a continuación, haz clic en Apply for Activation.
    {
      "scopes": {
        "tenant": [
          "aily:file:read",
          "aily:file:write",
          "application:application.app_message_stats.overview:readonly",
          "application:application:self_manage",
          "application:bot.menu:write",
          "cardkit:card:write",
          "contact:user.employee_id:readonly",
          "corehr:file:download",
          "docs:document.content:read",
          "event:ip_list",
          "im:chat",
          "im:chat.access_event.bot_p2p_chat:read",
          "im:chat.members:bot_access",
          "im:message",
          "im:message.group_at_msg:readonly",
          "im:message.group_msg",
          "im:message.p2p_msg:readonly",
          "im:message:readonly",
          "im:message:send_as_bot",
          "im:resource",
          "sheets:spreadsheet",
          "wiki:wiki:readonly"
        ],
        "user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
      }
    }
    
    1. En la página Add Application Capabilities, selecciona la pestaña Add by Capability, busca la tarjeta Robot y haz clic en Configure.
    2. En Events & Callbacks, en la pestaña Event Configuration, establece Subscription Method en Use long-lived connection to receive events y guarda. A continuación, agrega el evento im.message.receive_v1.
    3. En la página Version Management and Release, crea una versión, introduce el número de versión y la descripción de la actualización, guarda y envía para revisión y publicación.
  2. 2

    Configura el bot de Lark

    Ejecuta openclaw channels add, selecciona Feishu e introduce el App ID y el App Secret. A continuación, reinicia el gateway:
    openclaw gateway restart
    
    Agrega el bot a un chat de grupo de Lark o envía un mensaje al bot. El bot responde con un mensaje que contiene un código de emparejamiento. Copia la última línea y envíala en el chat de OpenClaw para completar el emparejamiento.
  3. 3

    Verifica

    openclaw status
    
    En la sección Channels, Lark debe aparecer como ON con el estado OK. Envía un mensaje en Lark para probar la conexión.

Códigos de error

Si encuentras errores durante la configuración, consulta la documentación de preguntas frecuentes correspondiente a tu plan de facturación:

Preguntas frecuentes

La configuración de pago por uso no cambia: use la clave de API general de Model Studio y la Base URL. Después de comprar un plan de ahorro, se activa automáticamente y el uso elegible se descuenta automáticamente. Consulte Planes de ahorro.
Introduce openclaw tui en el terminal para iniciar la línea de comandos del terminal de OpenClaw y, a continuación, introduce /model para ver la lista de modelos. Pulsa Enter para seleccionar un modelo y Esc para salir de la lista.
Posibles causas:
  1. La clave de API no es válida, ha caducado, está vacía, tiene un formato incorrecto o corresponde a un endpoint incorrecto. Asegúrate de que la clave de API coincida con tu método de pago, se haya copiado por completo sin espacios adicionales y de que tu suscripción esté activa.
  2. OpenClaw está usando una configuración incorrecta y obsoleta de su caché de configuración. Elimina el elemento de configuración providers de ~/.openclaw/agents/main/agent/models.json y reinicia OpenClaw.
  3. invalid_iam_token indica que la clave de API no superó la autenticación de IAM. Los escenarios comunes incluyen: la clave de API se ha revocado o deshabilitado; la región de la clave de API no coincide con la región de la URL base (por ejemplo, la clave de API se creó en Singapur, pero la URL base apunta a otra región); o una credencial temporal de STS ha caducado. Verifica que la clave de API y la URL base pertenezcan a la misma región y que el estado de la clave de API sea activo.
  • No uses una función de reemplazo total. Sobrescribe las configuraciones personalizadas. Modifica solo las secciones relevantes.
  • Si OpenClaw responde con normalidad, introduce los comandos directamente en un chat de OpenClaw para combinar la configuración.
  • Si OpenClaw no tiene modelos configurados o no responde, edita manualmente ~/.openclaw/openclaw.json. Modifica solo los campos relevantes y deja la configuración existente sin cambios.
Después de reiniciar el gateway, es posible que las sesiones existentes no funcionen correctamente. Inicia una sesión nueva.
Mensaje de error:
http://127.0.0.1:18791/15:05:56 [ws] closed before connect conn=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=n/a code=1008 reason=device identity required
Causa:Un cliente se conectó al gateway sin proporcionar una identidad de dispositivo. Las causas comunes incluyen:
  • Estás accediendo a la URL en un navegador por primera vez y el emparejamiento del dispositivo no se ha completado.
  • Se borró la caché del navegador, lo que provocó la pérdida de la clave del dispositivo.
  • Después de reinstalar o actualizar OpenClaw, falta el archivo de clave en el directorio ~/.openclaw/identity/.
Solución:Ejecuta los siguientes comandos para aprobar el dispositivo actual y generar una nueva URL de acceso para el navegador:
openclaw devices approve --latest
openclaw dashboard --no-open
Si el problema persiste, borra los registros de dispositivos anómalos y vuelve a intentarlo:
openclaw devices clear --pending --yes
openclaw dashboard --no-open
Ejecuta openclaw devices list para confirmar que el dispositivo aparece en la lista Paired.
Causa: OpenClaw incluye un mecanismo de latido integrado. Mientras el gateway está en ejecución, llama automáticamente al modelo configurado a intervalos fijos (cada 30 minutos de forma predeterminada) para comprobar si hay tareas pendientes. Cada latido consume una pequeña cantidad de tokens.Cómo verificarlo: Revisa los archivos de registro de sesión (.jsonl) en ~/.openclaw/agents/main/sessions/. Las llamadas de latido se marcan con [OpenClaw heartbeat poll].Soluciones:
  • Detén el gateway: ejecuta openclaw gateway stop cuando no lo uses. Esto detiene el latido de inmediato.
  • Aumenta el intervalo de latido: establece agents.defaults.heartbeat.every en ~/.openclaw/openclaw.json. Por ejemplo, "2h" establece el intervalo en cada 2 horas.