Skip to main content
Glama
WhimsicalityLabs

whimsicality-db

Official

whimsicality-db

Un diario de trabajo para agentes de larga duración. Servidor MCP respaldado por SQLite con seguimiento de sesiones, registro de eventos y búsqueda FTS5, para que los agentes que trabajan en múltiples ventanas de contexto puedan recordar decisiones, buscar eventos pasados y realizar un seguimiento de su propio progreso.

Por qué existe esto

Los agentes que realizan trabajos de largo alcance tienen un problema: cuando la ventana de contexto se llena, pierden la noción de lo que decidieron, lo que probaron y lo que queda por hacer. El historial de conversación se desplaza y el agente vuelve a derivar conclusiones que ya había alcanzado.

whimsicality-db resuelve esto con un diario de trabajo persistente:

  1. Crea una sesión para la tarea: db_session_create({ id: "refactor-auth", name: "Refactor auth system" })

  2. Registra eventos a medida que ocurren: db_event_log({ session_id: "refactor-auth", event_type: "decision", content: "Chose JWT over session cookies for stateless auth" })

  3. Busca decisiones pasadas: db_search({ query: "auth decision", collections: ["events"] })

  4. Realiza un seguimiento de las tareas pendientes entre ventanas de contexto: db_todo_add({ title: "Implement JWT verification", session_id: "refactor-auth" })

Cuando el agente regresa después de un reinicio de la ventana de contexto, busca en el registro de sesión y continúa donde lo dejó, sin tener que releer toda la conversación.

Related MCP server: MCP Tools

Inicio rápido

{
  "mcpServers": {
    "whimsicality-db": {
      "command": "npx",
      "args": ["whimsicality-db"]
    }
  }
}

Los datos se almacenan en ~/.whimsicality/db-storage/whimsicality.db (SQLite, modo WAL). Establece WHIMSICALITY_DB_DIR para anularlo.

Migración desde whimsicality-mcp

Si usaste el paquete obsoleto whimsicality-mcp, importa tus datos:

db_import({ source_dir: "~/.whimsicality/mcp-storage" })

Importa entradas de memoria, documentos y fragmentos de caché comprimidos en la tabla de entradas unificada.

Herramientas (21 en total, ~2,700 tokens de esquema)

Memoria — hechos clave-valor (4)

Tool

Description

db_memory_set

Almacena un hecho clave-valor. Con espacio de nombres.

db_memory_get

Recupera un valor por clave.

db_memory_list

Lista las claves en un espacio de nombres.

db_memory_delete

Elimina una clave de memoria.

Entradas — almacén de texto unificado con compresión automática (5)

Reemplaza las antiguas colecciones de docs, cache y context. El texto pequeño se almacena tal cual y se indexa con FTS5. El texto grande (>64KB) se comprime automáticamente con brotli y se pagina al leer. Las etiquetas y la fuente son opcionales.

Tool

Description

db_entry_save

Almacena texto. Se comprime automáticamente si es grande. Etiquetas y fuente opcionales.

db_entry_read

Lee una entrada por ID. Admite paginación mediante offset+length.

db_entry_list

Lista entradas. Filtro opcional por etiqueta.

db_entry_by_tags

Obtiene entradas que coincidan con cualquiera de las etiquetas dadas.

db_entry_delete

Elimina una entrada.

Tareas pendientes — seguimiento de tareas entre ventanas de contexto (4)

Tool

Description

db_todo_add

Añade una tarea pendiente con prioridad, etiquetas y enlace de sesión.

db_todo_list

Lista tareas pendientes. Filtra por estado/etiqueta/sesión.

db_todo_update

Actualiza una tarea pendiente. Una cadena vacía borra un campo.

db_todo_delete

Elimina una tarea pendiente.

Sesiones — contenedores de tareas de largo alcance (3)

Tool

Description

db_session_create

Crea o actualiza una sesión para tareas de largo alcance.

db_session_list

Lista sesiones. Filtro opcional por estado. Pasa el id para obtener una.

db_session_update

Actualiza la sesión. Una cadena vacía borra nombre/descripción.

Eventos — registro de sesión (2)

Tool

Description

db_event_log

Registra un evento en una sesión. Buscable con FTS5.

db_event_list

Lista eventos. Filtra por sesión/tipo.

Búsqueda + estadísticas + importación (3)

Tool

Description

db_search

Búsqueda FTS5 unificada en todas las colecciones. Devuelve resultados clasificados con puntuaciones BM25.

db_stats

Estadísticas de la base de datos: recuentos y tamaño.

db_import

Importa datos del directorio de almacenamiento de whimsicality-mcp.

Arquitectura

┌──────────────────────────────────────────────────────────┐
│ SQLite Database (WAL mode)                               │
│                                                          │
│  memory       ─── memory_fts (FTS5)                     │
│  entries      ─── entries_fts (FTS5)                    │
│    ├─ small:  content_text (plain, FTS5-indexed)        │
│    └─ large:  content (brotli BLOB) + title (FTS5)      │
│  entry_tags   ── normalized tag join table               │
│  todos        ─── todos_fts  (FTS5)                     │
│  todo_tags    ── normalized tag join table               │
│  sessions     (no FTS — small, direct query)            │
│  events       ─── events_fts (FTS5)                     │
│                                                          │
│  Triggers keep FTS5 indexes in sync automatically.      │
│  WAL mode: concurrent readers + 1 writer.               │
│  CHECK constraints on status columns.                   │
│  Schema version migrations (v1→v2→v3).                  │
└──────────────────────────────────────────────────────────┘

Búsqueda unificada

db_search({ query, collections, top_k }) busca en memoria, entradas, tareas pendientes y eventos en una sola llamada. Los resultados se fusionan y clasifican por puntuación BM25 (mayor = mejor). Cada resultado incluye su colección, ID, puntuación y un extracto centrado en la coincidencia cuando corresponde.

Compresión automática

Las entradas de más de 64KB se comprimen automáticamente con brotli. El título/resumen se almacena como texto plano para la indexación FTS5. db_entry_read descomprime bajo demanda con paginación offset+length.

Nota sobre el módulo nativo

Este paquete depende de better-sqlite3, un complemento nativo de Node.js. npm install normalmente encuentra binarios precompilados automáticamente. Si no, node-gyp compila desde el código fuente; necesitarás Python 3 y un compilador de C++. Node 22.5+ incluye node:sqlite con FTS5 integrado, que es una futura ruta sin dependencias.

Migraciones de esquema

La tabla schema_version realiza un seguimiento de la versión del esquema de la base de datos. Al abrir, el servidor lee la versión y aplica las migraciones secuencialmente: v1→v2 (tablas de unión de etiquetas), v2→v3 (tabla de entradas unificada que fusiona docs/cache/context).

Cuándo usar cada colección

  • Memoria: pares clave-valor pequeños que quieras recuperar por clave exacta (hechos, configuración)

  • Entradas: cualquier contenido de texto — documentos, referencias, contenido grande. Compresión automática, etiquetas opcionales, lecturas paginadas

  • Tareas pendientes: tareas que el modelo está siguiendo entre ventanas de contexto

  • Sesiones: contenedores de tareas de largo alcance (agrupan eventos y tareas pendientes)

  • Eventos: registro cronológico dentro de una sesión (decisiones, hitos, errores)

Configuración

Variable

Default

Description

WHIMSICALITY_DB_DIR

~/.whimsicality/db-storage

Directorio de almacenamiento de la base de datos

Desarrollo

git clone https://github.com/WhimsicalityLabs/Whimsicality-DB.git
cd Whimsicality-DB
npm install
npm test

67 pruebas: 64 en proceso (almacenamiento, búsqueda, entradas, tareas pendientes, sesiones, eventos, validación, importación) + 3 pruebas de humo de bin (ejecuta el punto de entrada real bin/whimsicality-db.js).

Licencia

MIT

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
    -
  • A
    license
    B
    quality
    B
    maintenance
    Provides context management and todo persistence with AI second opinions from ChatGPT and Claude. Enables saving code snippets, conversations, and todos across sessions with full-text search capabilities.
    3
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables persistent multimodal context storage for LLM agents with thread-based scoping, metadata filtering, and hybrid search capabilities.
    9
    Elastic 2.0