[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 statusymemory indexfallan - 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
- 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. - 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.
- 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 desconocidoLa 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:latestDespués (corregido):
memory:
embedding:
provider: openai-compat
model: nomic-embed-text:latest
apiKey: not-required
baseURL: http://localhost:11434/v1Opció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:latestOpció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 statusVerificació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: ConnectedEsperado: 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: 45msPaso 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 memoryLa 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), noopenaiCompatniOpenAI-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. UsaapiKey: not-requiredoapiKey: "". - 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/tagspara 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) o172.17.0.1(Linux) en lugar delocalhost. - Discrepancia de Dimensiones:
nomic-embed-textproduce vectores de 768 dimensiones. Si tu base de datos de vectores espera un conteo de dimensiones diferente, especificadimensions: 768explí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 mediantenpm install -g @openclaw/provider-ollamasi falta. - Ubicación del Archivo de Configuración: Asegúrate de que la configuración esté en la ubicación correcta:
~/.openclaw/config.yamlo/etc/openclaw/config.yaml. Ejecutaopenclaw config showpara 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.