Knowl

Memoria local-primero siempre actualizada para agentes de IA

Documentación

Knowl — the knowledge operating system for AI agents: memory, knowledge, context, continuity

Tu CLAUDE.md solo crece. Knowl retira los hechos cuando cambian.

npm CI license node MCP

Join the Knowl Discord

Scores 90 on MemoryAgentBench FactConsolidation single-hop at 262K 0 API keys needed 28 MCP tools 100% local, no egress

Inicio rápido · Por qué la supersesión · Qué se almacena · Características · Configuración del agente · Visor · Requisitos · Referencia completa →


Tu agente comienza cada sesión en blanco, por eso mantienes un CLAUDE.md. Solo crece. Seis meses después todavía menciona la base de datos de la que migraste la primavera pasada, y ahora el agente obtiene ambas respuestas.

Knowl es memoria persistente para Claude Code, Cursor y Codex, mediante MCP o la CLI. Cuando un hecho se reemplaza, el anterior se retira en lugar de competir con el nuevo. No se necesita clave de API. Cuando Knowl no está seguro de que el hecho nuevo reemplace al anterior, deja ambos activos y te entrega el comando knowl supersede para que lo indiques.

Desactiva eso y la recuperación cae del 98% al 47%. De extremo a extremo, de 90 a 73. Cómo se midió ↓

Cuarenta segundos, una decisión, tres agentes:

Claude Code answers which database the project uses from memory, records the move to Postgres and retires the MySQL decision; Codex answers the same question from that memory in a second terminal; the Claude app answers from the same store over the hosted connector

Inicio rápido

Requiere Node.js 22 o posterior. macOS, Linux y Windows.

npm install -g @dat999zx/knowl
cd your-project
knowl init
Otros gestores de paquetes

El paquete publicado es el mismo en todos los casos; cada uno de estos lo instala y coloca knowl en tu PATH.

pnpm add -g @dat999zx/knowl
yarn global add @dat999zx/knowl
bun add -g @dat999zx/knowl

O ejecútalo sin instalarlo:

npx @dat999zx/knowl init

Knowl se ejecuta en Node.js en todos estos casos — Bun lo instala, Node lo ejecuta. Incluye complementos nativos (SQLite, tree-sitter, el runtime de embeddings), por lo que ejecutar la CLI directamente bajo el runtime de Bun o Deno no es compatible.

knowl init crea .knowl/, instala los archivos de guía del proyecto, actualiza .gitignore y registra Knowl con los agentes que detecte. También calienta un modelo de embeddings local (~53 MB) en segundo plano — init tiene éxito de cualquier manera, y sin él aún obtienes búsqueda por palabras clave.

Esa es toda la configuración. No registras memoria a mano: tu agente la lee y escribe mientras trabaja.

Conexión de un agente

Claude Code
Claude Code
MCP · ciclo de vida · compuerta
Codex
Codex
MCP · ciclo de vida · compuerta
Hermes Agent
Hermes
MCP · ciclo de vida · compuerta
OpenClaw
OpenClaw
en proceso · plugin · compuerta
Copilot
Copilot
MCP · ciclo de vida · compuerta
Cursor
Cursor
MCP · ciclo de vida · compuerta
OpenHands
OpenHands
MCP · ciclo de vida · compuerta
Antigravity
Antigravity
MCP · ciclo de vida · compuerta
Windsurf
Windsurf
MCP · ciclo de vida · compuerta
Cline
Cline
MCP · ciclo de vida · plugin
Zed
Zed
MCP · captura · ACP
JetBrains
JetBrains
MCP · captura · ACP
OpenCode
OpenCode
MCP · bucle manual
Claude Desktop
Claude Desktop
MCP · bucle manual

knowl init registra el servidor MCP para cada host que encuentre. Inicia una nueva sesión después para que el agente recoja su guía, y consultará y escribirá memoria por sí solo.

compuerta significa que Knowl puede rechazar una edición que invalide código que otra sesión está sosteniendo. Neovim y Kiro funcionan igual que Zed y JetBrains, mediante knowl acp. Cline necesita una línea que lo apunte al plugin incluido. Hermes Agent recibe un plugin de Python, instalado por ti, que funciona tanto en la terminal como en Hermes Desktop, y además puede seleccionarse como proveedor de memoria de Hermes. OpenClaw se ejecuta en proceso dentro de su gateway mediante un plugin de extensión, evaluando compuertas de escritura sin la sobrecarga de subprocesos — knowl init openclaw lo copia e imprime los dos comandos que lo registran. Cualquier otro cliente MCP funciona sin integración alguna.

¿Ejecutas agentes en paralelo? Cada git worktree se resuelve al almacén del checkout principal — los espacios de trabajo de Conductor, el isolation: "worktree" de Claude Code, o tus propios scripts comparten una sola memoria, sin nada que configurar. Cómo funciona y su único límite →

→ Cada host y lo que puede hacer · Cómo lo usan los agentes · Herramientas y recursos MCP

La idea: memoria que se retira sola

La mayoría de los sistemas de memoria son de solo añadido. Almacenar "nos mudamos a SQLite" deja "usamos PostgreSQL" activo y recuperable, así que el agente obtiene ambos y elige por rango. Knowl trata una escritura del mismo tema como una corrección: el predecesor se marca como superseded, sale de la recuperación normal y permanece consultable mediante knowl timeline.

A write naming a subject the store already holds: the replacement takes the active lane, the predecessor is stamped superseded and moved into history, and a later query sweep matches only the current decision

Ese único comportamiento es la mayor parte de la diferencia de precisión. En el corpus de Resolución de Conflictos de MemoryAgentBench — 455 hechos, 100 preguntas sobre qué hecho es el actual, recuperación top-5, sin lector LLM:

Conflict-resolution retrieval ablation: supersession on reached 98 percent top-1 with 2 stale returns; supersession off reached 47 percent top-1 with 62 stale returns
ConfiguraciónTop-1Retornos obsoletosÁtomos activos
Supersesión ACTIVADA98.0%2 / 100306
Supersesión DESACTIVADA47.0%62 / 100455

Mismo corpus, mismo clasificador, misma ruta de consulta. La única variable es si el hecho desactualizado sigue activo. Esta es una medición a nivel de recuperación en el propio entorno de Knowl: pregunta si el hecho actual vuelve primero, sin ningún modelo en el bucle.

Verificado de extremo a extremo, en el propio entorno del benchmark

Como un número que te puntúas a ti mismo vale menos que uno que puntúa otro, la misma afirmación se volvió a ejecutar dentro del entorno de MemoryAgentBench, puntuada por su propio código, con un LLM leyendo lo que Knowl devolvió — la configuración más difícil, completamente de extremo a extremo, en el contexto más grande que ofrece la tarea:

MemoryAgentBench FactConsolidation single-hop at 262K context, substring exact match, gpt-4o-mini reader: Knowl 90, agentmemory 79, GPT-4o long-context 60, HippoRAG-v2 54, BM25 48, GPT-4o-mini long-context 45, Qwen3-Embedding-4B 29, Cognee 28, MemGPT 28, Mem0 18, MIRIX 14, Zep 7
SistemaFactConsolidation-SH @262K
Knowl90
agentmemory79
GPT-4o (contexto largo)60
HippoRAG-v254
BM2548
GPT-4o-mini (contexto largo)45
Qwen3-Embedding-4B29
Cognee28
MemGPT28
Mem018
MIRIX14
Zep7

18,332 hechos, 100 preguntas, coincidencia exacta de subcadena. Cada fila usa gpt-4o-mini como lector, incluida la de Knowl — el artículo lo declara para todos los agentes RAG y de memoria, así que estas son comparaciones equivalentes. Knowl y agentmemory se midieron aquí; todas las demás cifras provienen del artículo de MemoryAgentBench, arXiv 2507.05257v4, Tabla 3. agentmemory no se evalúa en ese artículo — sus cifras publicadas son recall de recuperación de LongMemEval-S, una tarea diferente — así que se ejecutó a través del mismo entorno con la misma configuración, y ambos adaptadores comparten una única ruta de código de lector para que ninguno pueda desviarse del manejador RAG del propio artículo. Método, mecanismo y pasos de reproducción: FINDINGS.md.

De lo contrario, se muestran todos los sistemas de memoria comerciales que evalúa el artículo, más el puntaje más alto de cada familia de línea base. La tabla del artículo ha cambiado entre versiones — BM25 leía 56 en v1 y lee 48 en v4 — así que se cita la versión, no solo la tabla.

El 90 de Knowl se midió el 2026-08-08 y se reprodujo de forma independiente en 89.0 el 2026-08-19 con el adaptador incluido; el 79 de agentmemory es una sola ejecución. Cada cifra aquí es una ejecución en temperature: 0.7, y la brecha de ablación se movió 4 puntos entre dos ejecuciones de la misma celda de 6k, así que léelas por el punto en lugar del decimal.

Desactivar la supersesión en ese mismo entorno reduce Knowl a 73, y la brecha se mantiene en un cambio de 40× en el tamaño del corpus:

Supersession ablation in MemoryAgentBench's own harness: at 262K context, supersession on scores 90 and off scores 73, a 17 point gap; at 6K context, on scores 94 and off scores 78, a 16 point gap
ContextoSupersesión ACTIVADADESACTIVADABrecha
262K9073+17
6K9478+16

Las dos secciones miden cosas diferentes y no son comparables entre sí: 98% es recuperación top-1 en 6K sin lector, 90 es precisión de extremo a extremo en 262K con uno. Solo la segunda es comparable con los sistemas publicados anteriores. Consulta benchmarks para el protocolo, los resultados incluidos y lo que la tarea no cubre — incluido multi-hop, donde Knowl puntúa 7 contra un techo de recuperación de 14 puntos.

La supersesión es una corrección, no un borrado: el elemento, sus afirmaciones y su historial sobreviven todos.

No es una maqueta — la misma secuencia contra la CLI publicada, grabada desde demo.tape:

Terminal recording: knowl decide records a database decision, a second decide on the same subject reports Superseded older decision, and knowl status then reports one active item and one superseded

Compartir memoria en un equipo: knowl.cloud

Todo lo anterior es local y no requiere cuenta. knowl.cloud es la capa opcional alojada para cuando una sola máquina no es suficiente:

  • Espacios de trabajo compartidos. El conocimiento escrito en un checkout llega a los agentes de los compañeros, y cada repositorio sigue siendo dueño de lo que publica.
  • Agentes de navegador. claude.ai y chatgpt.com no pueden ejecutar un proceso local, así que se conectan mediante un endpoint MCP remoto con un token limitado a un espacio de trabajo.

The knowl.cloud explorer: every repository in the workspace on one graph, clustered by repo with unlinked atoms on the rim, filtered by category, status, freshness and owning repository, with graph, list and timeline views over a workspace-wide search

El modo solo local sigue siendo una forma de primera clase de ejecutar Knowl. Nada de lo anterior es necesario para usar nada de lo que está arriba.

Qué se almacena

Cada átomo tiene exactamente una de siete categorías:

CategoríaÚsala para
factVerdades estables del proyecto, convenciones y comportamiento verificado
decisionUna opción seleccionada con su razonamiento y alternativas
goalUn resultado previsto que guía el trabajo futuro
constraintUna regla o límite que debe seguir cumpliéndose
architectureCómo están dispuestos los componentes y cómo interactúan
stateProgreso actual, preparación, bloqueos o estado operativo
skillUn procedimiento reutilizable o una descripción de flujo de trabajo aprendido
A decision atom with its governed fields: status, freshness, confidence, tags, source commit, affected paths, and evidence — one evidence locator shown gone stale

Junto al contenido, cada átomo mantiene un estado (active, deprecated, rejected, archived, superseded), una marca de frescura, confianza, etiquetas, commit de origen, rutas afectadas y evidencia opcional que apunta a archivos, commits, pruebas, comandos, URLs o símbolos de código indexados. La evidencia de archivos y símbolos queda obsoleta por sí sola cuando el código se mueve, que es como un átomo admite que puede estar desactualizado en lugar de afirmar una versión del repositorio que ya no existe.

Lo que Knowl deliberadamente no almacena son tus conversaciones. La captura del ciclo de vida registra eventos acotados y resúmenes — nunca prompts, transcripciones, salida estándar ni variables de entorno. La búsqueda de transcripciones crudas existe como un índice que puedes desactivar sobre archivos que el host ya escribió.

→ Referencia del modelo de conocimiento

Cómo lo usan los agentes

knowl serve expone el almacén mediante MCP sobre stdio; knowl init lo registra por ti. El flujo de trabajo que la guía instalada pide a los agentes seguir es breve:

  1. Consulta la memoria con las palabras que nombran el tema antes de leer archivos del repositorio.
  2. Usa un resultado activo directamente; inspecciona archivos solo ante un fallo, conflicto o resultado obsoleto.
  3. Almacena hallazgos duraderos, objetivos declarados y diagnósticos recurrentes sobre la marcha, y corrige la memoria contradicha en lugar de duplicarla.

En la práctica se ve así — una sesión nueva, sin contexto, sin nada pegado:

You     why did we pick SQLite over Postgres?

Agent   → knowl_query "sqlite postgres database choice"
        ← decision · Use SQLite · active · fresh
          "Keeps storage repository-local and simple to operate."
          alternatives: PostgreSQL, MongoDB
          tags: database, local-first

        SQLite keeps the store repository-local and simple to operate.
        Postgres and MongoDB were both considered and rejected on that
        basis.

El agente respondió antes de abrir un solo archivo, y sabía las opciones que rechazaste — que el código no puede decirle, porque las alternativas rechazadas no dejan rastro en un codebase.

HostMCPCiclo de vida automáticoPuerta de escrituraAviso de capturaNotas
Claude CodeSíSíSíSíLa guía de prompts también se instala
Codex CLISíSíSíSíLos hooks necesitan codex_hooks; no en Windows
GitHub CopilotSíSíSíSíReutiliza el formato de hooks de Claude Code
OpenHandsSíSíSíSíLa entrada MCP se añade a mano
AntigravitySíSíSíSíEl contexto viaja en injectSteps
WindsurfSíSíSíSíEl aviso viaja por MCP; sin hook de detención
CursorSíSíSíSíFinaliza en cada turno
ClineSíSíNoSíCiclo de vida mediante el plugin incluido
Hermes AgentSíSíSíSíPlugin de Python, incl. Hermes Desktop; aviso mediante pre_verify en turnos de edición
Zed, JetBrains, Neovim, KiroSíSíNoSíMediante knowl acp --
Claude Desktop, OpenCode, Roo, …SíNoNoSíMCP más el bucle de trabajo manual

Detalle completo, y por qué existe cada brecha, en docs/hosts.md.

Session lifecycle: bootstrap injects relevant memory, capture records bounded events, checkpoints record milestones, finalization distills durable candidates

Donde hay hooks disponibles, ellos gestionan el ciclo de vida de la sesión: el contexto de arranque, la captura, los puntos de control y la finalización ocurren sin que se lo pidan al agente. Donde no los hay, knowl task run, task start, task checkpoint y task finish cubren el mismo terreno manualmente.

knowl init escribe el registro MCP para cada host que detecta. Para conectarlo a mano, la entrada es la misma en todas partes:

{
  "mcpServers": {
    "knowl": { "command": "knowl", "args": ["serve"] }
  }
}

Usa knowl.cmd como comando en Windows. Codex lee la misma entrada bajo mcp_servers.

→ Herramientas y recursos MCP · Referencia del ciclo de vida

Para qué sirve Knowl

Knowl hace un solo trabajo: mantener el conocimiento asentado de un proyecto preciso para los agentes que trabajan en él. No preferencias de usuario, no historial de chat — las decisiones, restricciones y arquitectura sobre las que un proyecto funciona, y cuáles de ellas siguen siendo ciertas hoy. La mayoría de los almacenes viven en un codebase, y las herramientas de deriva y evidencia apuntan allí, pero nada en el modelo de conocimiento lo exige.

One question answered four times over two years: append-only keeps every answer true forever so a query today matches four contradicting ones, while a governed store ends each replaced answer and matches one

Tres decisiones se derivan de eso:

  • Tipado, no texto libre. Una decisión lleva razonamiento y las alternativas que rechazaste. Una restricción es una regla que debe seguir cumpliéndose. Un átomo de state se espera que quede obsoleto. La recuperación puede clasificar según esas diferencias; no puede clasificar según párrafos en un archivo de notas.
  • Gobernado, no solo añadir. Estado, frescura, procedencia, identidad de conflicto y sustitución permiten que el almacén te diga que algo dejó de ser cierto. Esa es toda la diferencia entre memoria y una pila de notas que crece sin fin.
  • Local al repositorio, no un servicio. La base de datos está junto al proyecto que describe. Sin cuenta, sin salida de datos, sin proveedor entre tú y tu propio historial de proyecto.

Knowl no es deliberadamente una capa de personalización. No tiene opinión sobre tus usuarios y no guarda transcripciones propias.

Funciones

Todo lo siguiente funciona desde la CLI y desde cualquier agente conectado por MCP, contra la misma base de datos local. Sin cuenta, sin servidor, sin clave API. Cada elemento enlaza con la referencia completa para el detalle — y para los límites.

♻️ Conocimiento que se corrige solo

Siete tipos de átomos tipados, donde una escritura sobre el mismo tema retira a su predecesor en lugar de quedarse a su lado. Ese único comportamiento es la diferencia 90-vs-73. La evidencia adjunta a un archivo o símbolo queda obsoleta por sí sola cuando el código se mueve.

conflicts · timeline · query --as-of · pr --since · index-code

🎯 Recuperación ajustada para agentes

Primaria por vectores con un respaldo acotado de BM25, reordenada por frescura, estado y confianza, para que gane la respuesta actual en lugar de la meramente similar. El modelo de embeddings es local y opcional — sin él sigues teniendo recuperación por palabras clave, y nada sale de la máquina.

query · context --token-budget · config set-model · access

⏱️ Trabajo que sobrevive a la sesión

En Claude Code, Codex y Cursor, los hooks gestionan el arranque, la captura, los puntos de control y la finalización sin que se lo pidan al agente. Un cierre limpio destila hasta ocho candidatos duraderos. Deja un flujo de trabajo en pausa bajo una clave y retómalo en cualquier sesión, desde cualquier directorio.

knowl posture maximal activa la mitad vigilante con un solo comando — buscar en sesiones pasadas ante un fallo, marcar átomos cuyos archivos se movieron y preguntar de vez en cuando en qué se apoya la sesión pero nunca verificó. Todo apagado hasta que lo pidas.

task run · handoff · park · resume <key> · posture

🔗 Espacios de trabajo

Tu repositorio de API aprendió algo que el repositorio del frontend necesita. Enlázalos y una consulta se distribuye, mientras cada repositorio mantiene su propia base de datos y su propio límite de propiedad. Abre un átomo compartido de un peer completo por id, o termina el trabajo de ese repositorio desde aquí nombrándolo en la llamada. El conocimiento que un repositorio ya tiene solo se comparte cuando lo promueves.

workspace init · workspace add · workspace promote --apply

📦 Procedimientos reutilizables

Empaqueta un procedimiento con sus scripts bajo .knowl/skills/ y luego léelo antes de que se ejecute. Combina varios átomos en un resumen de arquitectura determinista, sin ningún proveedor de IA involucrado.

skill list · skill read · skill run · synthesize

💾 Tus datos, y cómo recuperarlos

Exportación e importación JSONL con suma de verificación y cuatro políticas explícitas para cuando el mismo átomo cambió en dos lugares. La restauración verifica esquema, tamaño, SHA-256 e integridad de SQLite antes de tocar nada, y toma una instantánea previa a la restauración primero.

export · import --on-divergence · snapshot create · gc · doctor

🛰️ Las sesiones en esta máquina se ven entre sí

Veinte agentes en cuatro repositorios, y ninguno sabía que los otros existían — así que dos chocan con el mismo fallo y ambos empiezan a arreglarlo, y un tercero actualiza el motor sobre el que se apoyan los demás. Knowl registra en qué está cada sesión, qué escribió en este turno y qué fallo ha reclamado, y luego lo dice antes de que la segunda sesión empiece el mismo arreglo. Cada host con hooks de Knowl está dentro y se ven entre sí, Codex junto a Claude Code. No imprime nada cuando eres el único en ejecución.

fleet · knowl_fleet

Los comandos que vale la pena conocer desde el primer día:

knowl query "auth design"              # search project memory
knowl list --unread                    # browse it — and see what nothing ever reads
knowl edit <item-id>                   # open one memory in the viewer to fix it
knowl state                            # the active memory, as a hierarchy
knowl conflicts                        # items that contradict each other
knowl timeline <item-id>               # every version an atom ever had
knowl context --token-budget 1500      # a fixed-size briefing for an agent
knowl pr --since origin/main           # knowledge your diff may invalidate
knowl fleet                            # every agent session live on this machine, and what it is on
knowl config list                      # every setting, its value, and how to change it
knowl doctor                           # setup, retrieval, and registration
Conocimiento que se corrige solo — siete tipos de átomos tipados, y una escritura que retira lo que reemplaza
- **Siete tipos de átomos** — [enumerados arriba](#what-gets-stored). Estructura en lugar de un único archivo de notas que crece sin fin. - **Supersesión automática** — una escritura sobre el mismo tema retira a su predecesor. Esta es la [diferencia 90-vs-73](#the-idea-memory-that-retires-itself) mencionada arriba. Está protegida: una escritura automática (captura, ingesta) nunca retira un hecho verificado, una escritura que omite la clave de un elemento exclusivo nunca retira ese elemento, y una escritura que solo elimina los valores del hecho anterior no retira nada. Esos se mantienen lado a lado, y `knowl conflicts` los lista con cada hecho verificado retirado en los últimos 14 días. [Las reglas](docs/reference.md#governed-writes-and-current-truth) - **Identidad de conflicto** — marca un átomo como exclusivo y Knowl rechaza una segunda respuesta activa a la misma pregunta, en lugar de mantener ambas silenciosamente. `knowl conflicts` - **Historial completo** — cada versión que un átomo haya tenido sobrevive como una aserción inmutable. `knowl timeline ` - **Viaje en el tiempo** — pregunta qué creía el proyecto en una fecha pasada: `knowl query "auth design" --as-of 2026-01-01T00:00:00Z` - **Evidencia** — adjunta archivos, símbolos, commits, pruebas, comandos o URLs a un átomo. La evidencia de archivos y símbolos queda obsoleta *por sí sola* cuando el código se mueve. - **Detección de deriva** — `knowl pr --since origin/main` señala conocimiento que tu diff podría haber invalidado, antes de fusionarlo, y `knowl_drift` hace la misma pregunta desde dentro del agente que escribió la rama. Lo que reporta es una ruta citada que *ya no existe*, no una meramente editada — esa distinción es lo que mantiene la señal legible. - **La deriva que no puede alcanzar las afirmaciones** — la deriva observa archivos, y aproximadamente la mitad del almacén no cita ninguno. `knowl status` fechas esas en su lugar, por cuánto tiempo ha pasado desde que alguien las *reafirmó* por última vez, y nombra las que están más allá del ritmo de su propia categoría. Clasifica en lugar de marcar: para prosa no hay evidencia de que una afirmación se haya vuelto falsa, solo la ausencia de que alguien la reafirme. - **Inteligencia de código** — índice incremental Tree-sitter sobre TypeScript, JavaScript, Python y Go, para que la evidencia pueda apuntar a localizadores `symbol://`, no solo números de línea. `knowl index-code` - **Escrituras seguras contra secretos** — cada escritura se examina en busca de secretos detectados, rutas sensibles y contenido sobredimensionado antes de que se registre. La memoria de larga duración es el último lugar donde una credencial debería terminar.

→ Modelo de conocimiento · Evidencia y deriva

Recuperación ajustada para agentes — la respuesta actual gana, no solo la similar
  • Clasificación primaria por vectores con un respaldo acotado de BM25, re-clasificada por frescura, estado, confianza y actualidad — para que la respuesta actual gane, no solo la similar. (Este es el camino agente/MCP; una knowl query de un solo repositorio desde la CLI es léxica.)
  • Funciona sin conexión. El modelo de incrustación es local y opcional; sin él aún obtienes recuperación por palabras clave. La recuperación nunca envía tu consulta a ningún lugar.
  • Cinco ajustes de incrustación incluidos, incluido uno multilingüe que cubre más de 200 idiomas, además de custom para tu propio modelo ONNX. knowl config set-model <model>
  • Soporte de identificadores exactos — nombres de archivo, IDs de elementos y localizadores symbol:// siguen funcionando incluso cuando la similitud semántica es débil.
  • Paquetes de contexto con presupuesto de tokens — entrega a un agente un informe de tamaño fijo con las restricciones fijadas primero, para que las reglas innegociables nunca se trunquen: knowl context --query "auth rollout" --token-budget 1500
  • Retroalimentación de uso — los agentes informan si un resultado fue útil, y knowl access muestra qué se usa mucho, qué está obsoleto y qué sigue causando correcciones.

→ Recuperación y contexto

Trabajo que sobrevive al final de una sesión — hooks, bucles de trabajo, testigos de traspaso y claves de reanudación
  • Ciclo de vida automático en Claude Code, Codex y Cursor — el arranque, la captura, los puntos de control y la finalización ocurren a través de hooks sin que se le pida al agente.
  • Bucles de trabajo para todo lo demás — knowl task start, checkpoint, finish, o envuelve un solo comando con knowl task run "Run tests" -- npm test.
  • Promoción al final de la sesión — un cierre limpio destila hasta ocho candidatos duraderos de la sesión, y un comando que ha tenido éxito tres veces se convierte en un átomo skill que lo describe.
  • Traspaso — deja un testigo para la próxima sesión en este repositorio. Se entrega una vez y luego se archiva.
  • Claves de reanudación — estaciona un flujo de trabajo bajo una clave corta que conservas, y recógelo en cualquier sesión, desde cualquier directorio, cualquier número de veces después. knowl resume <key>
  • Búsqueda de transcripciones — activada por defecto, y desactivada significa que no existe nada en disco. Con ella activada, la prosa de sesiones pasadas es buscable, de modo que un fallo de memoria se degrada a una búsqueda más lenta en lugar de amnesia. La indexación por palabras clave se mantiene sola; la cobertura semántica se completa con knowl reindex --transcripts, porque un modelo de incrustación no pertenece a un hook por turno.
  • La brecha de recuerdo — con qué frecuencia un agente editó un archivo del que este almacén ya sabía algo sin recuperarlo nunca. Invisible desde dentro de una sesión, porque un agente que nunca recuperó un átomo no puede notar que el átomo existe. Se cuenta en cada llamada de herramienta, se muestra solo a ti, en knowl status — y se divide entre el hilo principal y los subagentes, porque un subagente no recibe recordatorio de prompt ni instrucciones del servidor, así que su parte es la única lectura que obtienes sobre si la tarjeta de arranque por sí sola mantiene el hábito.
  • La propia puntuación de la puerta de escritura — con el impacto de cambios activado, la puerta que rechazaría una edición al código que otra sesión cambió se ejecuta primero en modo sombra, registrando cada rechazo que contuvo. knowl status imprime la precisión que produjo, junto a la barra que debe superar antes de que se le permita bloquear algo (≥95% sobre ≥40 hallazgos adjudicados) — para que la decisión de armarla se tome contra un número en lugar de una corazonada. Ausente por completo hasta que la puerta haya retenido algo: un repositorio que nunca la ejecutó no ha puntuado 0%, no ha medido nada.

→ Tareas, sesiones y ciclo de vida

Las sesiones en esta máquina pueden verse entre sí — un solo registro, en cada host

La otra mitad del mismo problema: no una sesión a lo largo del tiempo, sino varias a la vez. Claude Code mantiene un registro de sus sesiones activas y permite que una se comunique con otra; no registra nada sobre lo que cualquiera de ellas está haciendo, y ningún otro host registra nada en absoluto.

  • Un registro al inicio de la sesión — quién más está ejecutándose, agrupado por repositorio, el propio primero. Vacío cuando estás solo, para que un usuario de sesión única nunca vea una línea sobre nada de esto.
  • Cada host con hooks de Knowl está en él, y se ven entre sí. Una sesión de Codex aparece en el registro de una sesión de Claude y viceversa. La actividad proviene del registro de sesiones del propio host cuando lo publica, y de la actualidad cuando no lo hace.
  • "Otra sesión ya está en este problema" — dos sesiones nunca ven salida byte-idéntica, por lo que los fallos se comparan con una firma normalizada en lugar de texto bruto, y una afirmación se vincula al problema en lugar del archivo. La tarjeta nombra al par, sus archivos y la llamada exacta a realizar; un anuncio desnudo de una edición conflictiva no es mediblemente mejor que no decir nada.
  • Una verificación previa antes de que una superficie compartida se mueva — hooks, configuraciones del host, migraciones, archivos de bloqueo y la instalación knowl sobre la que se ejecutan los hooks de todas las demás sesiones. Consejo en un canal que el agente ya recibe, nunca un rechazo.
  • Un empujón al momento de detenerse cuando las escrituras de este turno invalidaron un archivo que otra sesión activa había leído, unido a través del conjunto de lecturas en lugar de adivinado. Sombra por defecto — registra lo que habría dicho, porque entregarlo retiene una detención y eso cuesta un turno.
  • Solo se ofrecen como mensaje los pares alcanzables. Una sesión en otro host o bajo otro directorio de configuración se lista y se marca, y la tarjeta te pregunta a ti en su lugar — una tarjeta que le dijo al agente que enviara un mensaje a una sesión que no puede abordar le enseña a saltarse la siguiente.
  • A nivel de máquina, no por repositorio. ~/.knowl/fleet.db, junto a las claves de reanudación: una sesión en ~/work/api actualizando el motor es un hecho que ~/work/web necesita. knowl fleet lo lee desde cualquier terminal, dentro de un proyecto o no.
  • fleet.enabled se envía activado, y también las tarjetas — el registro cuesta un listado de directorio y no dice nada cuando estás solo, y una tarjeta es consejo en un canal que el agente ya lee. Lo que se envía silencioso es lo que te costaría algo: el resumen por turno, y el empujón al momento de detenerse que retiene una detención.

→ Quién más está ejecutándose

Espacios de trabajo: muchos repositorios, una memoria compartida — tú decides qué comparte cada repositorio

Tu repositorio de API aprendió algo que el repositorio de frontend necesita. Vincúlalos, y una consulta se expande — mientras cada repositorio mantiene su propia base de datos y su propio límite de propiedad.

knowl workspace init product      # create the workspace
knowl workspace add product       # run inside each repo that joins it
                                  # ...or --default-visibility repo to keep its writes private

knowl workspace promote                               # pick what to share from a list
knowl workspace promote --category decision --apply   # or name it outright

Unirse a un espacio de trabajo comparte lo que el repositorio escribe a partir de entonces, y lo dice cuando lo hace; pasa --default-visibility repo para rechazarlo. Lo que el repositorio ya sabe se comparte solo cuando lo promueves. Los resultados de pares se etiquetan con el repositorio que los posee, y uno compartido se puede abrir completo por id — sin su affectedPaths ni evidencia, que se resuelven contra un checkout en el que no estás parado. Un par que falta o es ilegible se omite y se divulga, nunca una razón para que tu búsqueda local falle.

Escribir en un repositorio hermano es deliberado en lugar de incidental. Un agente nombra el repositorio en la llamada y esa única llamada se ejecuta como ese repositorio — su almacén, su configuración, sus reglas de propiedad, sellado como propio — exactamente como cd-ing allí siempre se ha comportado para la CLI. No nombres nada y un id extranjero se rechaza como antes. De cualquier manera, el conocimiento privado de un repositorio permanece privado hasta que se promueve.

→ Espacios de trabajo

Procedimientos reutilizables — habilidades respaldadas por archivos que puedes inspeccionar antes de que se ejecuten
  • Habilidades respaldadas por archivos — empaqueta un procedimiento con sus scripts bajo .knowl/skills/, luego inspecciónalo antes de que se ejecute. knowl skill list · read · run
  • Manuales globales — un procedimiento que es el mismo en todas partes vive una vez en ~/.knowl/skills/, y cada repositorio proporciona sus propios comandos y rutas a través de un enlace en .knowl/config.json. Un manual y un enlace son dos claves: ninguno ejecuta nada solo, un manual sin enlazar lista y lee pero se niega a ejecutar, y una habilidad de proyecto con el mismo nombre eclipsa la global.
  • Lo que se ejecuta se muestra antes de ejecutarse — un manifiesto declara su inputs, su capabilities y su preconditions de cierre ante fallo (clean_worktree, on_branch:, command_exists:), una condición previa no reconocida se niega en lugar de pasar, y el banner de ejecución imprime el comando completamente resuelto. La aprobación es por conjunto de bytes y se re-verifica en cada ejecución; un repositorio no puede enviar una habilidad y su propia aprobación. Las capacidades son declaraciones, no una caja de arena, y lo dicen.
  • Síntesis determinista — combina varios átomos en un resumen de arquitectura sin proveedor de IA involucrado: knowl synthesize --scope storage

→ Habilidades y síntesis

Tus datos, y cómo recuperarlos — exportación portátil, instantáneas verificadas y un comando de diagnóstico
- **Exportación/importación portátil** — JSONL con checksum y cuatro políticas explícitas de divergencia para cuando el mismo átomo cambió en dos lugares. `knowl export` · `knowl import --on-divergence newer` - **Instantáneas verificadas** — `knowl snapshot create` escribe un manifiesto de checksum; la restauración verifica la versión del esquema, el tamaño, SHA-256 y la integridad de SQLite *antes* de tocar nada, y toma una instantánea previa a la restauración primero. - **Recolección de basura** que previsualiza por defecto y protege cualquier cosa usada recientemente. `knowl gc` - **`knowl doctor`** — un comando que verifica configuración, ajustes, integridad, esquema, recuperación, cobertura de vectores, registro de agentes y salud del espacio de trabajo. - **IA opcional** — configura un proveedor para `knowl ask` e ingesta de texto sin procesar. Cada función anterior funciona sin uno.

→ Portabilidad y mantenimiento · IA opcional

Véalo: el visor local

knowl view inicia un editor en 127.0.0.1 con un token de acceso nuevo por cada lanzamiento — saber el puerto no es suficiente para leer nada, y las escrituras además requieren que la solicitud nombre a este visor como su origen, por lo que otra página que tengas abierta no puede escribir aquí.

knowl view

The Knowl local viewer: the memory graph, each atom a lit point coloured by kind, linked only through tags few atoms share, with unlinked atoms scattered on the rim The Knowl local viewer list: every atom with an unread mark in the margin, and one atom open in the inspector with its markdown, tags and timeline rendered

Déjalo abierto mientras trabajas y te muestra el razonamiento del agente. Una recuperación ilumina los átomos con los que respondió, en orden de rango, y deja caer el resto del grafo. Una escritura llega a un escenario despejado. Una retirada se oscurece y permanece oscura. Cada átomo cambiado tiene un pie de foto con lo que le sucedió — NEW, UPDATED, SUPERSEDED.

The Knowl viewer during a supersede: the retired atom marked SUPERSEDED and drawn dark at the edge of the graph, its replacement marked NEW and lit at the lower right, and a feed naming both events

Observa la base de datos en lugar del agente, por lo que no importa qué herramienta esté trabajando: Claude Code, Codex, Cursor, o tú ejecutando knowl query en otra terminal iluminan el mismo grafo. No se agregó nada a ninguna ruta de escritura para que esto funcione, así que cuando no hay visor abierto, nada de eso se ejecuta.

Aquí también es donde corriges lo que tus agentes hicieron mal. Abre cualquier átomo para leer su evidencia y línea de tiempo, luego edítalo, archívalo o escribe uno nuevo a mano. El archivado es reversible — Restaurar está en el mismo panel. Los átomos retirados permanecen en el grafo como puntos oscuros: son la historia, y ya no pretenden ser actuales.

Junto al grafo hay una lista, con una lente para lo que nada ha leído nunca. Esa se gana su lugar: la búsqueda solo alcanza memoria que ya sospechas que existe, y un átomo sin información es precisamente el que nadie piensa en buscar. Ordenada de más antigua a más reciente, aparece por sí sola. knowl list --unread hace la misma pregunta desde la terminal.

El grafo enlaza átomos solo a través de etiquetas que pocos átomos comparten — una etiqueta en docenas de ellos es una categoría, y el carril ya filtra por esas. Un átomo sobre el que nada más trata permanece sin enlazar en lugar de estar atado a un vecino arbitrario. Es una ayuda de navegación, no un grafo causal o de evidencia. Muestra contenido local completo en cada estado, por lo que el enlace de bucle local es el límite de privacidad: no lo pongas detrás de un proxy público o un túnel.

→ Visor local

Memoria que es verdadera de ti, no de un repositorio

Algunas cosas no pertenecen a ningún repositorio: que prefieres pnpm, que el controlador de esta máquina se rompe con CUDA 12, que cada proyecto aquí usa commits convencionales. Knowl guarda esas en un almacén a nivel de máquina en ~/.knowl/global.db, separado de la memoria de cualquier proyecto.

knowl link global        # this project may read and write it; reversible with --off
knowl store "I prefer pnpm over npm" --title "Package manager" --category constraint --namespace global

Tu proyecto siempre responde primero. El enlazado nunca cambia lo que un repositorio dice sobre sí mismo — las entradas globales se sitúan detrás de las del proyecto, y nunca pueden desplazarlas. Y una sesión sin repositorio en absoluto, como una ventana de Hermes Desktop sin carpeta abierta, lee el almacén global solo en lugar de no tener memoria. Un proyecto que existe pero no se abre sigue siendo un error: lo global son preferencias personales, nunca un respaldo para un almacén roto.

Te sigue a otra máquina. El almacén de la máquina se sincroniza con un espacio de trabajo en la nube de la misma manera que un proyecto — no es un proyecto, pero se aborda como uno:

knowl cloud connect --global   # then push and pull with --global

Ejecuta cualquier comando knowl cloud fuera de un repositorio y usa el almacén de la máquina por sí solo, diciéndolo. Esa inferencia es estrecha a propósito: solo cuando no hay proyecto por encima del directorio en absoluto. Un proyecto cuya configuración no se puede analizar es un error sobre ese proyecto, nunca respondido en silencio desde tus preferencias personales.

→ Espacios de nombres de memoria y la capa global

Todo lo demás

28 herramientas MCP (más 3 cuando la búsqueda de transcripciones está activada, 1 cuando está conectado a un espacio de trabajo en la nube, 2 cuando está vinculado a un espacio de trabajo local, 1 cuando el impacto de cambios está activado, 1 para conciencia de flota a menos que esté desactivado, y 1 cuando los hooks se ejecutan sobre MCP)

y dos URI de recursos · la CLI completa, desde knowl status hasta knowl audit · una auditoría de integridad de solo lectura · evaluación de recuperación que puedes ejecutar tú mismo contra la gobernanza incluida y las suites de regresión de 500 casos con knowl eval.

→ Referencia de CLI · Herramientas MCP · Benchmarks

Requisitos y datos locales

Node.js 22 o posterior. Todo lo que Knowl escribe para un proyecto vive bajo .knowl/, que knowl init agrega a .gitignore:

RutaContiene
.knowl/config.jsonConfiguración de proyecto, búsqueda, seguridad, IA y espacio de trabajo
.knowl/knowl.dbÁtomos, aserciones, commits de conocimiento, índice de texto completo, retroalimentación, embeddings
.knowl/skills/Paquetes de habilidades respaldados por archivos

Un poco vive junto a tu directorio de inicio en su lugar, bajo ~/.knowl/, porque es verdadero de la máquina en lugar de cualquier repositorio: el almacén de preferencias personales a nivel de máquina (~/.knowl/global.db), claves de reanudación, el registro de la flota de las sesiones que se ejecutan ahora mismo, tu credencial en la nube y el espejo local de un espacio de trabajo en la nube. Los manifiestos de espacio de trabajo viven fuera de los repositorios miembros por la misma razón — sus rutas de checkout son locales a la máquina. Las exportaciones e instantáneas se escriben solo cuando las pides.

Documentación

Todo lo anterior es el resumen. La referencia completa es un documento que cubre cada subsistema en profundidad — incluidas las partes que están deliberadamente limitadas, que es generalmente lo que realmente necesitas saber.

Si quieres saber…Ve a
Qué es un átomo y qué significa cada campoModelo de conocimiento
Cómo se clasifica una consulta y qué gana los empatesRecuperación y contexto
Qué registra un hook y cuándoTareas, sesiones, ciclo de vida
Qué están haciendo las otras sesiones en esta máquinaLa flota
Cómo un átomo nota que el código se movióEvidencia y deriva
Cómo varios repos comparten memoria de forma seguraEspacios de trabajo
Cómo un procedimiento se vuelve reutilizableHabilidades y síntesis
Cómo exportar, hacer instantáneas o restaurarPortabilidad y mantenimiento
Cómo leer, corregir y agregar memoria a manoVisor local
Cómo encajan las piezas y dónde están los límites de confianzaArquitectura
Cómo conectar un host específicoConfiguración de agentes
Cómo se midieron los números en esta páginaBenchmarks
Cada comando y cada banderaReferencia de CLI
Cada herramienta y recurso MCPHerramientas MCP
Qué necesita un proveedor y qué nunca lo haceIA opcional
Exactamente qué aterriza en el discoDatos locales

Contribuir

Consulta CONTRIBUTING.md para la configuración, las verificaciones a ejecutar antes de una solicitud de extracción y las convenciones que sigue este código base. Se pide a los contribuyentes que acepten el Acuerdo de Licencia de Contribuyente una vez, en su primera solicitud de extracción.

Licencia

Knowl está licenciado bajo la Licencia Apache 2.0. Apache-2.0 no otorga derechos de marca comercial.


knowl MCP server