April 16, 2026 • Versión: 2026.4.5 - 2026.4.8

[Error de regresión con proveedor ollama no reconocido] - Unknown memory embedding provider: ollama — Regression in v2026.4.x

OpenClaw falla al inicializar los embeddings de memoria cuando está configurado con el proveedor ollama, lanzando el error 'Unknown memory embedding provider: ollama' debido a una regresión en el registro de proveedores.

🔍 Síntomas

El subsistema de memoria de OpenClaw falla al inicializarse cuando se utiliza ollama como proveedor de embedding. El error se manifiesta de manera idéntica en los contextos de CLI y runtime del gateway.

  • Fallo en la Ejecución CLI:
$ openclaw memory status

🦞 OpenClaw 2026.4.8 (9ece252) — iMessage green bubble energy, but for everyone.

[openclaw] Failed to start CLI: Error: Unknown memory embedding provider: ollama
    at getAdapter (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:317:22)
    at createEmbeddingProvider (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:369:25)
    at MemoryIndexManager.loadProviderResult (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:2706:16)
    at file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:2811:52)
    at MemoryIndexManager.ensureProviderInitialized (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:2819:5)
    at MemoryIndexManager.probeVectorAvailability (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/manager-BRmgtjii.js:3168:14)
    at Object.run (file:///home/openclaw/.npm-global/lib/node_modules/openclaw/dist/cli.runtime-CN0Ckcb_.js:325:25)
  • Fallo en el Proceso del Gateway:
23:28:54+00:00 error Memory index failed (main): Unknown memory embedding provider: ollama
  • Indicadores de Diagnóstico:
  • Instalaciones previas con configuración idéntica funcionaban en versiones anteriores a la 2026.4.5
  • Ambos comandos CLI memory status y memory index fallan
  • Las tareas programadas de índice de memoria del gateway fallan silenciosamente con registro de errores
  • Otras operaciones de ollama no relacionadas con memoria (chat completions) continúan funcionando normalmente

🧠 Causa raíz

El stack trace revela un fallo en la búsqueda del registro de proveedores en la cadena de inicialización del embedding de memoria. El error se origina en:

getAdapter (manager-BRmgtjii.js:317:22)
createEmbeddingProvider (manager-BRmgtjii.js:369:25)

Análisis Técnico

  1. Aislamiento del Registro de Proveedores: En las versiones afectadas, el registro de proveedores de embedding utiliza una tabla de búsqueda separada del registro de proveedores LLM. La cadena "ollama" es válida para chat completions pero no estaba registrada en el mapa de adaptadores específico para embeddings.
  2. Regresión en el Mapeo Silencioso de Proveedores: Antes de v2026.4.5, el subsistema de memoria realizaba una normalización implícita del proveedor—mapeando el nombre del proveedor en tiempo de ejecución al adaptador de embedding correcto. Esta normalización fue eliminada o refactorizada en la regresión, rompiendo la conexión.
  3. Análisis de la Ruta del Código:
MemoryIndexManager.probeVectorAvailability()
  → ensureProviderInitialized()
    → loadProviderResult()         // Línea 2706
      → createEmbeddingProvider()  // Línea 369 — FALLA AQUÍ
        → getAdapter()             // Línea 317 — Búsqueda de proveedor desconocido

La función getAdapter() realiza una búsqueda directa en el mapa contra ADAPTER_REGISTRY. Dado que “ollama” nunca fue añadido a este registro (o fue eliminado durante la refactorización), la búsqueda devuelve undefined, desencadenando el error.

Patrones de Configuración Afectados

Los usuarios con los siguientes patrones de configuración están afectados:

// openclaw.yaml o openclaw.json
memory:
  embedding:
    provider: ollama
    model: nomic-embed-text:latest
  // ...

El subsistema de memoria espera un proveedor que exista en el registro de adaptadores de embedding, pero ollama fue registrado solo en el registro de adaptadores LLM, no en el específico para embeddings.

🛠️ Solución paso a paso

Opción A: Usar el Proveedor OpenAI-Compat (Recomendado)

La API de Ollama es compatible con OpenAI. Configura los embeddings de memoria para usar el proveedor openai-compat apuntando a tu endpoint local de ollama:

Antes (roto):

memory:
  embedding:
    provider: ollama
    model: nomic-embed-text:latest

Después (corregido):

memory:
  embedding:
    provider: openai-compat
    model: nomic-embed-text:latest
    apiKey: not-required
    baseURL: http://localhost:11434/v1

Opción B: Usar el Proveedor Ollama con Ruta Completa

Si tu instalación incluye el plugin de ollama, especifica la ruta completa del proveedor:

memory:
  embedding:
    provider: @openclaw/provider-ollama
    model: nomic-embed-text:latest

Opción C: Sobrescritura por Variable de Entorno

Sobrescribe el proveedor en tiempo de ejecución sin modificar los archivos de configuración:

$ OPENCLAW_MEMORY_EMBEDDING_PROVIDER=openai-compat \
  OPENCLAW_MEMORY_EMBEDDING_BASE_URL=http://localhost:11434/v1 \
  openclaw memory status

Verificación de la Configuración

Asegúrate de que tu configuración de memoria completa coincida con esta estructura:

memory:
  enabled: true
  embedding:
    provider: openai-compat
    model: nomic-embed-text:latest
    apiKey: not-required
    baseURL: http://localhost:11434/v1
    dimensions: 768  # Requerido para nomic-embed-text
  index:
    enabled: true
    chunkSize: 512
    overlap: 64

🧪 Verificación

Paso 1: Verificar la Conectividad del Proveedor

$ curl -s http://localhost:11434/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{"model": "nomic-embed-text:latest", "input": "test"}' \
  | jq '.data[0].embedding[:5]'

Salida esperada:

[
  -0.02187623,
  0.04312847,
  -0.05898431,
  0.02345612,
  -0.03456789
]

Paso 2: Probar el Estado de Memoria del CLI

$ openclaw memory status

🦞 OpenClaw 2026.4.8 (9ece252) — iMessage green bubble energy, but for everyone.

✅ Memory System Ready
   Provider: openai-compat
   Model: nomic-embed-text:latest
   Dimensions: 768
   Status: Connected

Esperado: Código de salida 0 sin errores.

Paso 3: Verificar la Disponibilidad de Vectores

$ openclaw memory index --dry-run

✅ Embedding provider verified
   Vector dimensions: 768
   Average latency: 45ms

Paso 4: Confirmar la Operación del Gateway

Reinicia el gateway y verifica los logs para una inicialización exitosa de la memoria:

$ systemctl restart openclaw-gateway
$ journalctl -u openclaw-gateway -n 20 --no-pager | grep -i memory

La salida esperada no debe contener errores y debe confirmar la inicialización del proveedor.

⚠️ Errores comunes

  • Mayúsculas y Minúsculas: El nombre del proveedor es sensible a mayúsculas. Usa openai-compat (minúsculas, con guiones), no openaiCompat ni OpenAI-Compat.
  • Conflictos de Puerto: Asegúrate de que el puerto 11434 no esté en uso por otro servicio. Verifica con ss -tlnp | grep 11434.
  • Discrepancia de Clave API: Ollama no requiere claves API. Usar placeholders sk-... puede causar fallos de autenticación. Usa apiKey: not-required o apiKey: "".
  • Discrepancia de Nombre de Modelo: Asegúrate de que el nombre del modelo coincida exactamente con lo que reporta ollama. Ejecuta curl http://localhost:11434/api/tags para listar los modelos disponibles y verificar la cadena exacta.
  • Red Docker: Si ejecutas OpenClaw en Docker y ollama en el host, usa host.docker.internal (macOS) o 172.17.0.1 (Linux) en lugar de localhost.
  • Discrepancia de Dimensiones: nomic-embed-text produce vectores de 768 dimensiones. Si tu base de datos de vectores espera un conteo de dimensiones diferente, especifica dimensions: 768 explícitamente.
  • Carga de Plugins: Si usas la Opción B, asegúrate de que el plugin esté instalado: npm list @openclaw/provider-ollama. Instálalo mediante npm install -g @openclaw/provider-ollama si falta.
  • Ubicación del Archivo de Configuración: Asegúrate de que la configuración esté en la ubicación correcta: ~/.openclaw/config.yaml o /etc/openclaw/config.yaml. Ejecuta openclaw config show para verificar la configuración cargada.

🔗 Errores relacionados

  • E_PROVIDER_NOT_FOUND — Fallo genérico en la resolución del proveedor, a menudo indica un plugin faltante o un error tipográfico en el nombre del proveedor.
  • E_EMBEDDING_INIT_FAILED — El proveedor de embedding se inicializó pero falló durante la primera generación de embedding (autenticación, red, modelo no encontrado).
  • E_VECTOR_DIMENSION_MISMATCH — Las dimensiones de los vectores devueltas por el proveedor no coinciden con las expectativas del esquema de la base de datos.
  • Issue #62282 — Reporte previo del mismo error, supuestamente corregido en 2026.4.8. Los usuarios reportan que la regresión persiste tanto en 2026.4.5 como en 2026.4.8.
  • Unknown memory embedding provider: azure-openai — El mismo patrón afecta a los embeddings de Azure OpenAI; la solución alternativa (usando openai-compat con el endpoint de Azure) aplica.
  • Unknown memory embedding provider: bedrock — Los embeddings de AWS Bedrock están afectados por el mismo problema de aislamiento del registro.

Evidencia y fuentes

Esta guía de solución de problemas fue sintetizada automáticamente por la tubería de inteligencia de FixClaw a partir de las discusiones de la comunidad.