OpenViking guarda el contexto de tus agentes como un sistema de archivos que puedes recorrer con ls, tree y find, en lugar de como embeddings en una base de datos vectorial. Después de instalarlo en mi setup de Claude Code, creo que la diferencia que importa no es cuál de los dos recupera mejor, sino cuál puedes auditar cuando algo sale mal.
OpenViking es una base de datos de contexto de código abierto para agentes de IA, mantenida por Volcengine, el brazo cloud de ByteDance. Al momento de publicar esta nota lleva 35.500 estrellas y 2.700 forks en GitHub, y la versión más reciente es la v0.4.10, publicada el 16 de julio de 2026.
¿Qué es una base de datos de contexto y en qué se diferencia de una vectorial?
Una base de datos vectorial toma tu contexto, lo convierte en embeddings y te devuelve los vecinos más cercanos a una consulta. Funciona. También es opaca: no puedes inspeccionar por qué apareció un fragmento y no otro, y no puedes recorrer el almacén para ver qué contiene.
Una base de datos de contexto invierte esa relación. OpenViking organiza memorias, recursos y skills bajo un esquema viking://, en directorios. El agente los recorre con los mismos verbos que ya usa sobre archivos reales: ls, tree, find. La recuperación deja de ser un puntaje de similitud que tienes que aceptar y pasa a ser una ruta que puedes leer.
Encima de eso va la carga por niveles, que es la parte que me parece realmente inteligente:
- L0 — abstract, unos 100 tokens. Suficiente para decidir si esta rama es relevante.
- L1 — overview, unos 2.000 tokens. Suficiente para planificar.
- L2 — detalle, el contenido original completo, cargado solo cuando el agente se compromete.
Los directorios tienen sus propias capas L0 y L1 antes de que llegues a un archivo. Un agente puede así recorrer un almacén de contexto grande leyendo casi nada de él, que es de lo que se trata todo cuando tu ventana de contexto es el recurso más escaso que tienes.
¿Qué hace exactamente dentro de Claude Code?
Aquí el diseño deja de ser teórico. El plugin registra siete hooks del ciclo de vida:
| Hook | Qué hace |
|---|---|
UserPromptSubmit |
Busca en OpenViking e inyecta el contexto relevante |
Stop |
Captura el turno nuevo cuando Claude termina de responder |
SessionStart |
Trae los resúmenes del archivo al retomar una sesión |
PreCompact |
Confirma los datos pendientes antes de que se reescriba el transcript |
SessionEnd |
Commit final al cerrar la sesión |
SubagentStart / SubagentStop |
Mantiene memoria aislada para los subagentes |
El README del plugin lo dice sin vueltas: “Recall happens automatically before every prompt, capture happens automatically after every turn — no MCP tool calls required from the model.”
Esa frase es la razón por la que esto merece tu atención. La mayoría de las integraciones de memoria exponen herramientas y confían en que el modelo se acuerde de llamarlas. Esta mueve la memoria al ciclo de vida del harness, donde ocurre piense el modelo en ella o no. El hook PreCompact es el detalle que delata a alguien que prestó atención: confirma los datos justo antes de que Claude Code reescriba el transcript, que es exactamente el momento en el que las integraciones ingenuas pierden información.
Las herramientas MCP (search, read, store, forget) siguen disponibles en el endpoint /mcp del servidor para cuando quieras meter mano a propósito.
¿Cómo se instala?
Primero necesitas un servidor de OpenViking corriendo: todas las integraciones se conectan a uno, y la documentación describe solo autohospedaje. Al momento de publicar esta nota no hay una opción gestionada documentada.
pip install openviking --upgrade
openviking-server init
openviking-server doctor
openviking-server
Python 3.10 o superior. init te guía para elegir proveedor de embeddings y visión: Volcengine, OpenAI, Ollama, Kimi, GLM o Codex OAuth. doctor es el paso cuya salida conviene leer de verdad — ahí es donde un proveedor mal configurado aparece antes de convertirse en una falla confusa más adelante. El servidor escucha en http://localhost:1933 por defecto; usarlo en remoto requiere una API key.
Después, el plugin de Claude Code. Hay un instalador de una línea, pero yo usaría la vía del marketplace: es explícita, y encontré dos URLs de instalador distintas entre la documentación y el directorio de ejemplos, una moneda que prefiero no tirar en la máquina de otra persona.
claude plugin marketplace add https://raw.githubusercontent.com/volcengine/OpenViking/main/.claude-plugin/marketplace.json
claude plugin install openviking-memory@openviking
Los datos de conexión van en ~/.openviking/ovcli.conf (url, api_key, y opcionalmente account y user). La configuración se resuelve por prioridad: variables de entorno, después ovcli.conf, después ov.conf, después los valores por defecto. Las variables que vale la pena conocer son OPENVIKING_URL, OPENVIKING_API_KEY, OPENVIKING_RECALL_LIMIT y OPENVIKING_AUTO_CAPTURE.
Para verificar, dentro de Claude Code:
/pluginslistaopenviking-memorycomo instalado, con el MCPopenvikingconectado/mcpmuestra la URL del servidor con autenticación válida/openviking-memory:ovimprime el estado y las estadísticas del servidor
Si la activación falla, configura OPENVIKING_DEBUG=1 y revisa ~/.openviking/logs/cc-hooks.log.
Si estás armando Claude Code desde cero, nuestra guía de configuración en terminal cubre el terreno que esto da por sentado.
¿Los números se sostienen?
Son autoreportados, y fueron medidos sobre la v0.3.22 — una versión anterior a la que instalarías hoy. Léelos como el relato del propio proyecto sobre su diseño funcionando, no como validación independiente.
En LoCoMo, un benchmark de memoria en conversaciones largas, el proyecto reporta que la precisión sube a 80–83% en tres integraciones de agentes, desde una base de 24–57%, con los tokens de entrada bajando entre 34,3% y 91,0% y la latencia de consulta entre 58,45% y 66,10%. En tau2-bench, el éxito de tarea mejora 6,87 puntos porcentuales en el split de retail y 11,87 en el de aerolíneas.
La reducción de tokens es el número que yo querría reproducir antes de creerlo, porque es el que justificaría el costo operativo de mantener otro servidor corriendo. Un piso de 34% es plausible solo con la carga por niveles. Un techo de 91% está haciendo mucho trabajo dentro de ese rango.
¿Dónde encaja en tu stack?
Hoy hay más de quince integraciones, y la lista es la señal real: Claude Code, Codex, OpenCode, Cursor, TRAE, DeepSeek Harness, OpenClaw, Hermes, LangChain y LangGraph. Si ya corres OpenClaw o Hermes, esto es una capa de memoria que le habla a los dos, en vez de un parche por agente.
Esa amplitud también es el punto estratégico. OpenViking no está tratando de ser una mejor base de datos vectorial: está tratando de ser el lugar donde vive el contexto de tus agentes, sea cual sea el harness que estés usando este trimestre. Es una posición más ambiciosa de lo que parece a primera vista, y es la razón para evaluarlo ahora y no después de que sea el default en tres de las herramientas que usas.
Si vienes siguiendo el tema, ya cubrimos dos aproximaciones distintas al mismo problema: claude-mem y AgentMemory. OpenViking se diferencia de ambos en que no es un plugin de memoria para Claude Code: es un almacén de contexto con un plugin de Claude Code encima.
Dos advertencias antes de confiarle algo importante. Está en pre-1.0, en la v0.4.10 y con 90 issues abiertos al momento de escribir esto, así que trata el formato de almacenamiento como algo que todavía puede moverse debajo de ti. Y el core está bajo AGPLv3 — la CLI (crates/ov_cli) y los ejemplos son Apache 2.0 — algo que conviene que mire quien lleve licencias en tu empresa si planeas modificarlo y exponerlo por red.
¿Conviene instalarlo hoy?
Si usas Claude Code todos los días y estás cansado de volver a explicar tu codebase en cada sesión, sí: los diez minutos valen la pena, y los hooks hacen que no tengas que acordarte de que está ahí. Si buscas una capa de memoria para un sistema en producción que importa, evalúalo ahora y adóptalo después del 1.0.
Lo que no haría es despacharlo como un wrapper más de RAG. El paradigma de filesystem es una apuesta real sobre cómo deberían navegar el contexto los agentes, y la está haciendo un equipo con recursos para sostenerla.