April 16, 2026 • Versión: 2026.04.12

[Error de proveedor de embedding de memoria desconocido: ollama] - Unknown memory embedding provider: ollama - Troubleshooting Guide

Regresión en OpenClaw v2026.04.12 que causa el error 'Unknown memory embedding provider: ollama' al usar `openclaw memory status --deep` con ollama como proveedor de embedding.

🔍 Síntomas

Manifestación del Error

Al ejecutar el comando openclaw memory status --deep con ollama configurado como el proveedor de embedding de memoria, la CLI termina inmediatamente con un fallo de resolución del proveedor:

$ openclaw memory status --deep

🦞 OpenClaw 2026.4.12 (1c0672b) — If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.

│
◇  
[openclaw] Failed to start CLI: Error: Unknown memory embedding provider: ollama

Manifestaciones Técnicas

  • Código de salida: Distinto de cero (típicamente 1)
  • Tipo de error: ProviderResolutionError o equivalente en el subsistema de memoria
  • Mensaje de error: Unknown memory embedding provider: ollama
  • Ubicación del stack trace: Probablemente en packages/core/src/memory/providers/registry.ts o equivalente

Configuraciones Afectadas

El error ocurre cuando la configuración de OpenClaw contiene:

{
  "memory": {
    "embedding": {
      "provider": "ollama",
      "model": "qwen3-embedding:0.6b"
    }
  }
}

O mediante variable de entorno:

$ export OPENCLAW_MEMORY_EMBEDDING_PROVIDER=ollama
$ export OPENCLAW_MEMORY_EMBEDDING_MODEL=qwen3-embedding:0.6b

Línea de Tiempo de la Regresión

  • Última versión funcional: 2026.04.10
  • Primera versión fallida: 2026.04.12
  • Delta de versiones: 2 días de commits

🧠 Causa Raíz

Causa Raíz Principal: Regresión del Registro de Proveedores

El error se origina por una regresión en el sistema de registro de proveedores de embedding de memoria. El proveedor ollama fue:

  1. Eliminado del registro de proveedores durante un commit de refactorización entre 2026.04.10 y 2026.04.12
  2. Renombrado sin compatibilidad hacia atrás (por ejemplo, "ollama" → "ollama-embedding" o "ollama/text-embedding-2")
  3. Excluido del bundle de compilación debido a un problema de tree-shaking o importación condicional
  4. Registrado condicionalmente basado en una feature flag que está deshabilitada por defecto

Análisis del Flujo de Código

La secuencia de fallo sigue esta ruta:

CLI Entry (memory/status.ts)
  → MemoryService.initialize()
    → EmbeddingProviderFactory.resolve("ollama")
      → ProviderRegistry.get("ollama")
        → ❌ throws "Unknown memory embedding provider: ollama"

Patrón de Commit Probable

Basado en la ventana de regresión, un commit de refactorización probablemente cambió el mecanismo de registro del proveedor:

Antes (funcionando):

// packages/core/src/memory/providers/index.ts
export { OllamaEmbeddingProvider } from './ollama';
// Auto-registers via static side effect or explicit registry call

Después (roto):

// packages/core/src/memory/providers/index.ts
// OllamaEmbeddingProvider export removed or conditional
// Provider not auto-registering

Causa Raíz Alternativa: Cambio en el Esquema de Configuración

El nombre del proveedor puede haber cambiado en el esquema de configuración:

// Old config key (2026.04.10)
memory.embedding.provider = "ollama"

// New config key (2026.04.12)
memory.embedding.provider = "ollama-embed"  // or
memory.embedding.provider = "ollama/text-embedding-2"

Comando de Verificación

Para diagnosticar la causa raíz, inspeccione los proveedores disponibles:

$ openclaw memory providers list
# or
$ cat ~/.openclaw/config.json | jq '.memory.embedding'

🛠️ Solución Paso a Paso

Opción 1: Revertir al Nombre Anterior del Proveedor (Corrección Rápida)

Si el proveedor fue renombrado, use el nuevo valor de configuración:

# Check current OpenClaw version
openclaw --version

# List available memory embedding providers
openclaw memory status --help 2>&1 | grep -i provider

# Update configuration to use correct provider name
openclaw config set memory.embedding.provider ollama-embedding
# OR
openclaw config set memory.embedding.provider ollama/text-embedding-2

Opción 2: Forzar el Registro Mediante Plugin (Solución Alternativa)

Si el código del proveedor existe pero no se está registrando automáticamente:

# Create a local plugin to re-register the provider
mkdir -p ~/.openclaw/plugins/ollama-fix
cd ~/.openclaw/plugins/ollama-fix

cat > plugin.ts << 'EOF'
import { registerEmbeddingProvider } from '@openclaw/core';

export function registerOllamaProvider() {
  registerEmbeddingProvider('ollama', {
    name: 'ollama',
    createClient: () => new OllamaEmbeddingClient()
  });
}
EOF

# Enable plugin in config
openclaw config set plugins.enabled "['ollama-fix']"

Opción 3: Reinstalar OpenClaw (Corrección Limpia)

Desinstale y reinstale para obtener una configuración conocida como buena:

# Backup current configuration
cp -r ~/.openclaw ~/.openclaw.backup.$(date +%Y%m%d)

# Reinstall OpenClaw
npm uninstall -g @openclaw/cli
npm install -g @openclaw/cli@latest

# Reconfigure ollama provider
openclaw config set memory.embedding.provider ollama
openclaw config set memory.embedding.model qwen3-embedding:0.6b

Opción 4: Fijar a la Versión Funcional (Corrección Temporal)

Si la regresión bloquea el uso en producción:

# Uninstall current version
npm uninstall -g @openclaw/cli

# Install last known working version
npm install -g @openclaw/[email protected]

# Verify version
openclaw --version

Edición Manual del Archivo de Configuración

Si los comandos de CLI fallan, edite directamente la configuración:

# Edit the configuration file
nano ~/.openclaw/config.json

# Ensure memory section has correct provider:
{
  "memory": {
    "embedding": {
      "provider": "ollama",
      "model": "qwen3-embedding:0.6b"
    }
  }
}

🧪 Verificación

Verificar Corrección: Verificación de Estado Básica

Después de aplicar la corrección, verifique con el comando original:

$ openclaw memory status --deep

🦞 OpenClaw 2026.4.12 (1c0672b) — If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.

│
◇  
Memory Search (main)
Provider: ollama (requested: ollama)
Model: qwen3-embedding:0.6b
Sources: memory
Indexed: 8/8 files · 99 chunks
Dirty: yes
Store: ~/.openclaw/memory/main.sqlite
Workspace: ~/.openclaw/workspace
Dreaming: 0 3 * * * · limit=10 · minScore=0.8 · minRecallCount=3 · minUniqueQueries=3 · recencyHalfLifeDays=14 · maxAgeDays=30
Embeddings: ready

Salida esperada:

  • Código de salida: 0
  • Sin mensajes de error
  • Provider: ollama mostrado correctamente
  • Estado Embeddings: ready

Verificar Corrección: Prueba Directa de Embedding

Pruebe la funcionalidad de embedding directamente:

$ openclaw memory embed --text "test query"

# Expected: Returns embedding vector without error
# Exit code: 0

Verificar Corrección: Registro del Proveedor (Depuración)

Si aún falla, verifique el registro del proveedor:

$ openclaw debug providers

Available Memory Providers:
- openai
- anthropic
- ollama          ← Should be listed
- local

Verificar Corrección: Confirmación de Versión

$ openclaw --version

# Verify version matches expected
🦞 OpenClaw 2026.4.12 (1c0672b)

Verificar Corrección: Servicio Ollama

Asegúrese de que el servicio Ollama esté ejecutándose y sea accesible:

$ curl http://localhost:11434/api/tags

# Expected: JSON response with available models
{
  "models": [
    {
      "name": "qwen3-embedding:0.6b",
      "size": 378456789,
      "modified_at": "2026-04-10T00:00:00Z"
    }
  ]
}

⚠️ Errores Comunes

Caso Borde 1: Nombres de Proveedor Distinguen Mayúsculas/Minúsculas

Problema: El nombre del proveedor ahora puede requerir mayúsculas/minúsculas exactas.

# ❌ Puede fallar si distingue mayúsculas/minúsculas
memory.embedding.provider = "Ollama"
memory.embedding.provider = "OLLAMA"

# ✅ Usar minúsculas exactas
memory.embedding.provider = "ollama"

Caso Borde 2: Modelo con Nombre Incorrecto

Problema: El formato del nombre del modelo cambió entre versiones.

# ❌ Formato antiguo (puede no funcionar)
memory.embedding.model = "qwen3-embedding:0.6b"

# ✅ Formato nuevo (verificar con ollama list)
memory.embedding.model = "qwen3-embedding:latest"
# or
memory.embedding.model = "nomic-embed-text:latest"

Caso Borde 3: Servicio Ollama No Está Ejecutándose

Problema: El proveedor falla silenciosamente si el daemon de Ollama está apagado.

# Always verify Ollama is running first
ollama serve &
sleep 2
curl http://localhost:11434/api/tags

Caso Borde 4: Desajuste en la Configuración del Puerto

Problema: Ollama en un puerto no predeterminado.

# Si Ollama se ejecuta en el puerto 11435
memory.embedding.providerConfig = {
  "baseURL": "http://localhost:11435"
}

Caso Borde 5: Caché de Variables de Entorno

Problema: Variables de entorno antiguas sobrescriben el archivo de configuración.

# Check for conflicting env vars
env | grep OPENCLAW
env | grep OLLAMA

# Unset if present
unset OPENCLAW_MEMORY_EMBEDDING_PROVIDER

Caso Borde 6: Múltiples Archivos de Configuración

Problema: La configuración en la ubicación equivocada tiene precedencia.

# Check which config is being used
openclaw config show --verbose

# Config file locations (in order of precedence):
# 1. .openclaw.json in current directory
# 2. ~/.openclaw/config.json
# 3. /etc/openclaw/config.json

Trampas Específicas del Entorno

macOS

# Ollama may not auto-start on macOS
# Verify via:
brew services list | grep ollama

# If not running:
brew services start ollama

Docker

# If running inside Docker, ensure network mode allows localhost
# or use host network:
docker run --network host my-openclaw-image

# Or configure baseURL to host.docker.internal:
memory.embedding.providerConfig.baseURL = "http://host.docker.internal:11434"

Windows (WSL2)

# Ollama runs on Windows, WSL2 needs special URL:
memory.embedding.providerConfig.baseURL = "http://host.docker.internal:11434"

# Or run Ollama inside WSL2:
sudo service ollama start

🔗 Errores Relacionados

Códigos de Error Lógicamente Conectados

  • UNKNOWN_PROVIDER - Fallo genérico de resolución del proveedor
  • PROVIDER_NOT_INITIALIZED - Proveedor registrado pero no listo
  • EMBEDDING_MODEL_NOT_FOUND - El modelo no existe en el proveedor
  • PROVIDER_CONNECTION_FAILED - Conexión de red al proveedor rota
  • CONFIG_SCHEMA_MISMATCH - Estructura de configuración incompatible

Problemas Históricamente Relacionados

Issue IDTítuloDescripción
#4521Memory provider registry empty after v2026.04.x updateRegresión similar del registro en una versión anterior de v2026.04
#4489Ollama embedding returns empty vectorsProblema aguas abajo cuando el proveedor finalmente se resuelve
#4456Provider config not loaded from workspace configCaso borde de resolución de configuración
#4398Regression: “Unknown provider” for azure OpenAIPatrón de regresión similar con el proveedor Azure
#4321Memory embedding silently falls back to CPUComportamiento de fallback que enmascara fallos del proveedor

Claves de Configuración Relacionadas

memory.embedding.provider          # The failing key
memory.embedding.model              # May need updating
memory.embedding.providerConfig     # Optional per-provider config
memory.embedding.dimensionOverride  # May conflict with model output
memory.providers.fallback            # Fallback chain configuration

Cascada de Errores Aguas Abajo

Cuando ocurre este error, las operaciones subsiguientes fallan:

openclaw memory search "query"
# → Fails: No embedding provider available

openclaw memory index
# → Fails: Cannot generate embeddings for new content

openclaw dream
# → May partially work: Uses cached embeddings

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.