agent-knowledge
agent-knowledge
Memoria y recuperación entre sesiones para asistentes de codificación de IA -- funciona con Claude Code, Cursor, OpenCode, Cline, Continue.dev y Aider sin configuración adicional. Base de conocimiento sincronizada con Git, búsqueda híbrida semántica+TF-IDF, auto-destilación con limpieza de secretos.
Benchmark: R@5 = 97.2% (sparse) / 98.8% (hybrid) en longmemeval_s y 86.0% (sparse) / 88.4% (hybrid) en la división más difícil longmemeval_m — el benchmark académico público LongMemEval (Wu et al. 2024, ICLR 2025), 500 preguntas completas por división, sin LLM, sin clave API, se ejecuta completamente sin conexión. +8.6pp a +13.2pp R@5 sobre la línea base oficial flat-bm25 del artículo en reproducción comparable. Tabla completa por categoría, instrucciones de reproducción y detalles de comparación con el artículo en bench/README.md.
Por qué
Las sesiones de codificación de IA son efímeras. Cuando una sesión termina, todo lo que aprendió (decisiones de arquitectura, ideas de depuración, contexto del proyecto) desaparece. La siguiente sesión comienza desde cero.
agent-knowledge resuelve esto con dos sistemas complementarios:
Base de conocimiento -- un repositorio de markdown sincronizado con Git de entradas estructuradas (decisiones, flujos de trabajo, contexto del proyecto) que persiste entre sesiones y máquinas.
Búsqueda de sesiones -- búsqueda de texto completo clasificada por TF-IDF en las transcripciones de sesiones de todas tus herramientas de codificación, para que los agentes puedan recordar lo que sucedió antes, independientemente de la herramienta utilizada.
Related MCP server: Memory-MCP
Herramientas compatibles
Las sesiones de todos los principales asistentes de codificación de IA se auto-descubren: si una herramienta está instalada, sus sesiones aparecen automáticamente.
Herramienta | Formato | Ruta auto-detectada |
Claude Code | JSONL |
|
Cursor | JSONL |
|
Codex CLI | JSONL |
|
Aider | Markdown/JSONL |
|
Continue.dev | JSON |
|
Cline | JSON | VS Code globalStorage |
OpenCode | SQLite |
|
No se necesita configuración. Se pueden agregar raíces de sesión adicionales mediante la variable de entorno AGENT_KNOWLEDGE_EXTRA_SESSION_ROOTS (rutas separadas por comas).
Características
Búsqueda de sesiones independiente del host -- búsqueda unificada en todos los principales asistentes de codificación de IA (Claude Code, Cursor, Codex CLI, Aider, Continue.dev, Cline, OpenCode). Ningún nombre de host está integrado en la configuración: el registro de adaptadores sondea las raíces de host instaladas al inicio.
Búsqueda híbrida -- similitud semántica de vectores combinada con clasificación de palabras clave TF-IDF.
Base de conocimiento sincronizada con Git -- repositorio de markdown con frontmatter YAML, commit y push automáticos al escribir.
Detección automática de obsolescencia --
knowledge_analyze(action: "stale_by_code_activity")cruza las rutas de archivo mencionadas en el cuerpo de cada entrada confilesModifieden los resúmenes de sesiones recientes. Se combina con una capa de precisión de presencia de símbolos: los identificadores que la entrada cita (backticks en línea + bloques delimitados) se verifican en el archivo modificado; si aún existen, la confianza se reduce ×0.3. Las entradas conevergreen: trueestán exentas.Seguimiento de brechas de búsqueda --
knowledge_analyze(action: "search_gaps")muestra consultas sin resultados en los últimossince_days, agrupadas por similitud de token-Jaccard. La señal más clara de "¿qué entradas debería escribir a continuación?".Empaquetador de contexto por prioridad de sección --
knowledge(action: "wakeup")ensambla un paquete de múltiples secciones (identity→active_tasks→recent_decisions→known_gotchas→last_session_summary→top_weighted→semantic_fallback) dentro de un presupuesto de tokens (por defecto 800, anulable mediantetoken_budgetoAGENT_KNOWLEDGE_WAKEUP_BUDGET). El presupuesto de sección no utilizado se redistribuye a secciones posteriores.Promotor puntuado y con compuertas -- las ideas de sesión se promueven mediante un puntuador ponderado de 6 señales con tres compuertas independientes (
minScore,minRecallCount,minUniqueQueries). Se ejecuta automáticamente en segundo plano, a demanda medianteknowledge_admin(action: "promote"), o se puede evaluar sin conexión connpm run bench:promote. Emite un diario auditable.dreams/YYYY-MM-DD.mden cada ejecución.Sistema de adaptadores conectables -- agrega soporte para nuevas herramientas implementando la interfaz
SessionAdapter.Embeddings -- proveedores locales (Hugging Face), OpenAI, Claude/Voyage o Gemini.
Coincidencia difusa -- búsqueda tolerante a errores tipográficos usando distancia de Levenshtein.
6 ámbitos de búsqueda -- errores, planes, configuraciones, herramientas, archivos, decisiones.
6 herramientas MCP -- interfaz consolidada basada en acciones (
knowledge,knowledge_search,knowledge_session,knowledge_graph,knowledge_analyze,knowledge_admin).Entradas perennes --
evergreen: trueen el frontmatter exime a una entrada de la decadencia en la clasificación Y la hace de solo agregar bajo promoción. El panel muestra una insignia de chincheta en estas tarjetas.Atribución de autor -- el frontmatter opcional
author: <string>se muestra como una etiqueta atenuada en cada tarjeta.Resolución de grafo de código -- tipos de arista
calls,imports,inheritspara estructura de código; recorrido BFS dirigido (outbound/inbound/both);bulk_linkpara ingesta eficiente;unlink_by_originpara limpiar aristas de código obsoletas antes de re-ingestar; IDs de nodo con prefijocode:distinguen código de conocimiento.Grafo de conocimiento temporal -- las aristas admiten ventanas de validez
valid_from/valid_to; las consultasas_ofdevuelven instantáneas en un punto del tiempo; la accióninvalidatemarca hechos como finalizados sin eliminarlos.Impulsos de puntuación híbrida -- impulsos de nombres propios y proximidad temporal sobre la combinación TF-IDF + semántica, limitados a +66.7%, con cortocircuito cuando no hay señales presentes.
Categoría como impulso (no filtro) -- opta por
category_mode: "boost"para que una suposición de categoría incorrecta reduzca la clasificación en lugar de descartar la respuesta correcta.Indexación de sesiones verbatim -- fragmentos por mensaje (≥30 caracteres) incrustados en el almacén de vectores para que la conversación cruda sea recuperable; se alterna con
AGENT_KNOWLEDGE_INDEX_VERBATIM=false.URL de git configurable --
knowledge_admin(action: "config")para configuración en tiempo de ejecución, persistida en la ubicación XDG/AppData.Persistencia entre máquinas -- el conocimiento se sincroniza mediante git, las sesiones se leen del almacenamiento local de cada herramienta.
Panel en tiempo real -- explora, busca y administra en
localhost:3423.Limpieza de secretos -- claves API, tokens, contraseñas y claves privadas se redactan automáticamente antes del push de git.
Grafo de conocimiento -- aristas de relación entre entradas (related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on) con recorrido BFS.
Puntuación de confianza/decadencia -- entradas puntuadas por frecuencia y recencia de acceso; auto-promoción de candidata a establecida a probada.
Consolidación de memoria -- detección de duplicados TF-IDF al escribir (advierte de entradas similares) más
knowledge_analyze(action: "consolidate")para escaneo de deduplicación por lotes.Ciclo de reflexión --
knowledge_analyze(action: "reflect")muestra entradas no conectadas y genera indicaciones estructuradas para que el agente identifique nuevas conexiones de grafo.Auto-enlace al escribir -- las nuevas entradas se enlazan automáticamente a las 3 entradas existentes más similares cuando la similitud de coseno > 0.7.
Metadatos de confianza — entradas etiquetadas como
extracted(escritas por el usuario) oinferred(auto-destiladas, multiplicador de clasificación de búsqueda 0.85×); el campoconfidence_scorelleva la certeza del modelo 0-1.Análisis de conocimiento — acciones de
knowledge_analyzegod_nodes(entradas más conectadas),bridges(conectores entre categorías),gaps(entradas aisladas).Resumen de conocimiento —
knowledge_analyze(action: "brief")devuelve un resumen en caché de ~200 tokens (conceptos centrales, proyectos activos, decisiones recientes, recuentos de obsoletos y brechas) para la orientación al inicio de sesión.Procedencia de aristas -- las aristas del grafo rastrean
origin(manual, auto-link, distill, reflect) para que el análisis pueda distinguir el juicio del usuario de las heurísticas automatizadas.Pre-extracción determinista en destilación -- los resúmenes de sesión ahora incluyen commits de git, patrones de error, URLs accedidas y paquetes modificados extraídos mediante regex de la salida de bash/herramientas (sin costo de LLM).
Metadatos de frescura en cada resultado de búsqueda -- cada resultado de conocimiento lleva
freshness: { body_age_days, last_accessed, access_count, verified_at, verification_age_days, evergreen }. El agente lee la señal de confianza y decide; no imponemos degradación de política.Ventanas de decadencia por categoría -- el filtro "No usado" y el gráfico por tipo respetan umbrales por categoría (proyectos 180d, personas 365d, decisiones 90d, flujos de trabajo 60d, notas 30d) para que el contenido con forma de identidad no parezca obsoleto solo porque no se relee semanalmente.
Ganchos de ciclo de vida --
SessionStartauto-despertar + verificación de frescura de ingesta,UserPromptSubmitinyección dirigida del primer prompt,PreCompactaviso de vaciado de memoria + destilación,SessionEnddestilación. Seis scripts de gancho en total, todos con fallo abierto, cada uno activable mediante una variable de entornoAGENT_KNOWLEDGE_*. Verdocs/HOOKS.md.Reemplaza la auto-memoria del host -- en hosts con un sistema de memoria por sesión (el
~/.claude/projects/*/memory/de Claude Code, similar en otros IDEs), enruta los hechos y comentarios duraderos del usuario a agent-knowledge en su lugar. La auto-memoria es local a la máquina e invisible para otras máquinas; agent-knowledge está sincronizado con git, es entre máquinas, buscable y aparece en el despertar. Ver la nota de integración de Claude Code endocs/USER-MANUAL.md.
Ingesta de código
La habilidad knowledge-ingest puebla o actualiza la base de conocimiento desde un directorio de código. Utiliza tree-sitter para la extracción estructural de cero tokens (clases, funciones, importaciones, grafos de llamadas, comentarios de justificación), luego agrupa archivos en subsistemas y crea entradas de conocimiento + aristas de grafo mediante las herramientas MCP existentes. Las ejecuciones posteriores son incrementales: solo se reprocesan los archivos modificados.
/knowledge-ingest ./my-projectUtiliza el estándar Agent Skills — funciona con Claude Code, OpenCode, Cursor, Codex CLI y Gemini CLI. Consulta la Guía de ingesta para más detalles.
Lenguajes compatibles: TypeScript, JavaScript, Python, Go, Rust, Java, C, C++.
Inicio rápido
Instalar desde npm
npm install -g agent-knowledgeO clonar desde el código fuente
git clone https://github.com/keshrath/agent-knowledge.git
cd agent-knowledge
npm install && npm run buildOpción 1: Servidor MCP (para agentes de IA)
Agrega a tu configuración de cliente MCP (Claude Code, Cline, etc.):
{
"mcpServers": {
"agent-knowledge": {
"command": "npx",
"args": ["agent-knowledge"]
}
}
}El panel se inicia automáticamente en http://localhost:3423 en la primera conexión MCP.
Consulta la Guía de configuración para instrucciones específicas por cliente (Claude Code, Cursor, Windsurf, OpenCode).
Opción 2: Servidor independiente (para clientes REST/WebSocket)
node dist/server.js --port 3423Herramientas MCP (6)
Base de conocimiento
Herramienta | Acción | Descripción | Parámetros |
|
| Listar entradas por categoría y/o etiqueta |
|
| Leer una entrada específica |
| |
| Crear/actualizar entrada (sincronización git automática) |
| |
| Eliminar una entrada (sincronización git automática) |
| |
| git pull + push manual | -- | |
| Devolver identidad L0 + entradas ponderadas L1 (con presupuesto de tokens) |
|
Búsqueda
Herramienta | Descripción | Parámetros |
| Híbrido general TF-IDF + semántico (sin |
|
Recuperación limitada a sesión (cuando |
|
Forma de la respuesta: {mode: "general" | "scoped", sessions, knowledge}. El modo scoped devuelve knowledge: [] por diseño.
Ámbitos (scopes): errors, plans, configs, tools, files, decisions, all.
Controles de búsqueda:
mmr: trueaplica reordenación por Relevancia Marginal Máxima (elimina clústeres casi duplicados en el top-K).mmr_lambda0-1, por defecto 0.7.category_mode: "boost"(por defecto) otorga a las entradas de la categoría coincidente un multiplicador de puntuación de 1.25× en lugar de descartar las que no coinciden. Pasa"filter"para un comportamiento de filtro estricto.explain: trueadjuntascore_components: {bm25, decay, maturity, confidence, category_boost, mmr_penalty}a cada resultado de conocimiento.
Sesiones
Herramienta | Acción | Descripción | Parámetros |
|
| Listar sesiones con metadatos |
|
| Recuperar conversación completa de sesión |
| |
| Resumen de sesión (temas, herramientas, archivos) |
|
Grafo de conocimiento
Herramienta | Acción | Descripción | Parámetros |
|
| Crear/actualizar arista entre entradas |
|
| Eliminar aristas entre entradas |
| |
| Marcar aristas como caducadas (definir valid_to) |
| |
| Listar aristas |
| |
| Recorrido BFS dirigido desde una entrada |
| |
| Crear aristas por lotes (ingesta de grafo de código) |
| |
| Eliminar todas las aristas por origen |
|
Tipos de conocimiento: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
Tipos de estructura de código: calls, imports, inherits
Direcciones de recorrido: outbound (source→target), inbound (target→source), both (por defecto, no dirigido)
Análisis
Herramienta | Acción | Descripción | Parámetros |
|
| Buscar entradas casi duplicadas |
|
| Buscar entradas no conectadas para enlazar |
| |
| Entradas más conectadas (centralidad de grado) |
| |
| Conectores entre categorías (intermediación) |
| |
| Entradas aisladas (0-1 aristas) por madurez |
| |
| Resumen de base de conocimiento en caché (~200 tokens) | -- |
Administración
Herramienta | Acción | Descripción | Parámetros |
|
| Estadísticas del almacén vectorial | -- |
| Ver o actualizar configuración |
| |
| Re-embedding de todas las entradas de conocimiento (útil al cambiar de proveedor) | -- | |
| Eliminar embeddings de sesiones que ya no están en disco |
| |
| Recuperar páginas libres en el almacén vectorial | -- | |
| Promotor puntuado y con compuertas |
|
Promotor puntuado
Cada candidato a nivel de proyecto se puntúa según seis señales (relevancia 0.30, frecuencia 0.24, diversidad de consultas 0.15, actualidad 0.15, consolidación 0.10, riqueza conceptual 0.06) y se somete a compuertas con minScore ≥ 0.5, minRecallCount ≥ 2, minUniqueQueries ≥ 2. Las tres compuertas deben superarse. La auto-promoción en segundo plano se controla con el mismo indicador de configuración auto_distill; invócala bajo demanda con knowledge_admin(action: "promote").
promote_mode: "explain"(por defecto) — puntúa y aplica compuertas a los candidatos, escribe un diario, NO toca la base de conocimiento.promote_mode: "apply"— promueve los candidatos que superan las compuertas, escribe un diario, hace git-commit.Cada ejecución deja
~/agent-knowledge/.dreams/YYYY-MM-DD.mdcon desgloses de señales por candidato y resultados de compuertas. El directorio con prefijo.está rastreado por git pero excluido de listado/búsqueda.Rehidratación fundamentada: se omite un candidato si su archivo de sesión de origen ya no existe en disco (evita promover contenido eliminado).
Las entradas con frontmatter
evergreen: truenunca se sobrescriben mediante promoción — la actividad se añade.
Banco de pruebas de escritura: npm run bench:promote — reproducción sin conexión con autoetiquetado por "referenciado en sesiones posteriores". Compara el promotor con compuertas con una línea base ingenua de "enviar todo", e informa de precisión / recall / F1. Úsalo para validar cambios de ponderación de señales o umbrales antes de implementarlos.
API REST
Método | Endpoint | Descripción |
GET |
| Listar entradas de conocimiento |
GET |
| Buscar en la base de conocimiento |
GET |
| Leer una entrada específica |
GET |
| Entradas más conectadas |
GET |
| Conectores entre categorías |
GET |
| Entradas aisladas |
GET |
| Resumen de la base de conocimiento |
GET |
| Listar sesiones |
GET |
| Buscar sesiones (TF-IDF) |
GET |
| Recuperación limitada |
GET |
| Leer una sesión |
GET |
| Resumen de sesión |
POST |
| Escribir entrada (clientes HTTP) |
GET |
| Comprobación de estado |
Arquitectura
graph LR
subgraph Storage
KB[(Knowledge Base<br/>~/agent-knowledge<br/>Git Repository)]
end
subgraph Session Sources
CC[(Claude Code<br/>JSONL)]
CU[(Cursor<br/>JSONL)]
OC[(OpenCode<br/>SQLite)]
CL[(Cline<br/>JSON)]
CD[(Continue.dev<br/>JSON)]
AI[(Aider<br/>MD / JSONL)]
end
subgraph agent-knowledge
KM[Knowledge Module<br/>store / search / git]
AD[Session Adapters<br/>auto-discovery]
SE[Search Engine<br/>TF-IDF + Fuzzy]
DS[Dashboard<br/>:3423]
MCP[MCP Server<br/>stdio]
end
subgraph Clients
AG[Agent Sessions]
WB[Web Browser]
end
KB <-->|git pull/push| KM
CC --> AD
CU --> AD
OC --> AD
CL --> AD
CD --> AD
AI --> AD
AD --> SE
KM --> MCP
SE --> MCP
KM --> DS
SE --> DS
MCP --> AG
DS --> WBGrafo de conocimiento
Las entradas y los símbolos de código pueden conectarse mediante aristas tipadas y ponderadas almacenadas en una tabla SQLite dedicada edges. Se admiten once tipos de relación: 8 para aristas de conocimiento y 3 para estructura de código:
Conocimiento: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
Estructura de código: calls, imports, inherits
knowledge_graph(action: "link")crea o actualiza una arista (con fuerza opcional 0-1)knowledge_graph(action: "unlink")elimina aristas (opcionalmente filtradas por tipo)knowledge_graph(action: "list")lista aristas para una entrada o tipo de relaciónknowledge_graph(action: "traverse")realiza un recorrido BFS dirigido desde una entrada inicial. Admitedirection(outbound,inbound,both) y filtrorel_typeknowledge_graph(action: "bulk_link")crea aristas por lotes en una sola transacción (para ingesta de grafo de código)knowledge_graph(action: "unlink_by_origin")elimina todas las aristas con un origen específico (para limpiar aristas de código obsoletas antes de re-ingestar)
Grafo de código
Las aristas de estructura de código las crea la habilidad knowledge-ingest durante la ingesta del código base. Usan IDs de nodo con prefijo code::
code:src/auth/middleware.ts # file node
code:src/auth/middleware.ts::validateToken # symbol nodeEjemplos de consulta:
# Who calls validateToken?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 3 })
# What breaks if I change this function?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 5 })
# Combined: callers + knowledge context (decisions, design rationale)
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", depth: 2 })Enlazado automático
Cuando knowledge con action: "write" crea o actualiza una entrada, automáticamente encuentra las 3 entradas existentes más similares mediante similitud coseno y crea aristas related_to para cualquier par que puntúe por encima de 0.7.
Puntuación de confianza y decadencia
Cada entrada de conocimiento tiene una puntuación de confianza registrada en la tabla SQLite entry_scores. Los resultados de búsqueda se clasifican usando:
finalScore = baseRelevance * 0.5^(daysSinceLastAccess / 90) * maturityMultiplierLas entradas maduran automáticamente según el recuento de accesos:
Etapa | Accesos | Multiplicador |
| < 5 | 0.5x |
| 5-19 | 1.0x |
| 20+ | 1.5x |
Las entradas consultadas con frecuencia suben en los rankings de búsqueda; las entradas obsoletas decaen con el tiempo.
Capacidades de búsqueda
TF-IDF Ranking -- resultados puntuados por frecuencia de término-frecuencia inversa de documento. Los términos poco frecuentes aumentan la relevancia. Índice global en caché durante 60 segundos.
Fuzzy Matching -- distancia de edición de Levenshtein con ventana deslizante. Umbral configurable (por defecto 0.7).
Scoped Recall mediante knowledge_search con el parámetro scope:
Ámbito | Coincidencias |
| Trazas de pila, excepciones, comandos fallidos |
| Arquitectura, TODOs, pasos de implementación |
| Ajustes, variables de entorno, archivos de configuración |
| Llamadas a herramientas MCP, comandos CLI |
| Rutas de archivo, modificaciones |
| Compensaciones, justificación, decisiones |
Integraciones
Endpoint de escritura REST
POST /api/knowledge acepta { category, filename, content } y ejecuta el pipeline completo de escritura: git pull → escritura de archivo → índice de embeddings → auto-enlace → git push → comprobación de duplicados. Devuelve { path, autoLinks?, duplicateWarnings?, git } con estado 201.
Esto permite escrituras basadas en HTTP desde otros servicios sin una conexión MCP.
agent-tasks KnowledgeBridge
agent-tasks tiene un KnowledgeBridge integrado que envía automáticamente los artefactos de learning y decision a agent-knowledge al completar la tarea. Las entradas se guardan en decisions/ con etiquetas de frontmatter (agent-tasks, nombre del proyecto, tipo de artefacto), se indexan automáticamente con embeddings y se enlazan automáticamente a entradas similares. No se necesita configuración: si agent-knowledge se está ejecutando en localhost:3423, funciona.
Pruebas
npm test # 563 tests across 35 files
npm run test:watch # Watch mode
npm run lint # ESLint on src/ and tests/
npm run typecheck # tsc --noEmit
npm run check # typecheck + lint + format + testVariables de entorno
Todas las variables de entorno viven bajo el prefijo AGENT_KNOWLEDGE_*. No hay ningún nombre de host fijo: el registro de adaptadores detecta automáticamente los hosts de codificación de IA instalados (.claude, .cursor, .codex, .aider, .continue, OpenCode) sin configuración.
Núcleo
Variable | Por defecto | Descripción |
|
| Directorio de base de conocimiento sincronizado con Git |
| -- | URL remota de Git (clona automáticamente si falta el directorio) |
|
| Destila automáticamente los conocimientos de la sesión en la base de conocimiento |
|
| Indexa fragmentos de mensajes de sesión sin procesar en el almacén vectorial para que la conversación se pueda recuperar más tarde. Establece |
| (config. de plataforma) | Anula la raíz de datos principal del host. Déjalo sin establecer en el caso común: los adaptadores detectan automáticamente todas las raíces de host conocidas bajo |
| -- | Directorios de sesión adicionales, separados por comas. Se añaden a lo que encuentre la detección automática. |
|
| Puerto HTTP/WebSocket del panel |
Embeddings
Variable | Por defecto | Descripción |
|
|
|
|
| Peso de mezcla TF-IDF vs semántico ( |
| -- | Anula el modelo predeterminado del proveedor |
|
| Segundos antes de descargar el modelo local ( |
| (automático) | Número de hilos ONNX / OMP para el proveedor local |
Claves de API
Las anulaciones con ámbito de proyecto prevalecen sobre las claves estándar. Establece cualquiera de las dos; la forma con ámbito te permite ejecutar agent-knowledge con una clave diferente a la del resto de tu entorno.
Variable | Respaldo | Descripción |
|
| Embeddings de OpenAI |
|
| Embeddings de Claude / Voyage |
|
| Embeddings de Gemini |
Hooks
Variable | Por defecto | Descripción |
|
| Inyecta automáticamente un paquete |
|
| Tokens para el paquete de activación |
|
| Ejecuta una |
|
| Tokens para la inyección del primer prompt (límite |
|
| Máximo de resultados de conocimiento adjuntos al primer prompt (límite |
|
| Antes de la pre-compactación, incita al agente a guardar el contexto mediante |
Anulaciones de herramientas externas
Variable | Por defecto | Descripción |
|
| Anula dónde vive la base de datos de sesiones de OpenCode (variable propia de OpenCode, respetada por nuestro adaptador) |
Documentación
Guía de configuración — instalación, configuración del cliente (Claude Code, OpenCode, Cursor, Windsurf), hooks, skills
Guía de ingesta — skill de ingesta de código, extracción con tree-sitter, actualizaciones incrementales
Arquitectura — estructura del código fuente, principios de diseño, esquema de base de datos
Panel — vistas y funciones de la interfaz web
Licencia
Available Tools
6 toolsknowledgeA
Knowledge base CRUD, sync, and session-start hydration. Actions: "list" (browse entries), "read" (get entry content), "write" (create/update entry, auto git sync), "delete" (remove entry, auto git sync), "sync" (manual git pull + push), "wakeup" (return token-budgeted section-priority context bundle — identity, active_tasks, recent_decisions, known_gotchas, last_session_summary, top_weighted, semantic_fallback — call once at session start).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag (action=list) | |
| path | No | Relative path to the entry, e.g. 'projects/my-project.md' (action=read, delete) | |
| action | Yes | Action to perform | |
| content | No | Full markdown content for the entry (action=write) | |
| category | No | Category (action=list: filter; action=write: target directory). One of: projects, people, decisions, workflows, notes | |
| filename | No | Filename with or without .md extension (action=write), e.g. 'my-project.md' | |
| sections | No | [wakeup] Comma-separated, ordered section list. Valid: identity, active_tasks, recent_decisions, known_gotchas, last_session_summary, top_weighted, semantic_fallback. Default: all seven in that order. Omit to preserve v1.8.0 behaviour. | |
| token_budget | No | [wakeup] Max tokens to render (chars/4 estimate, default 800) | |
| section_budgets | No | [wakeup] Per-section token-budget overrides, e.g. {"identity": 200, "top_weighted": 400}. Unspecified sections split the remainder evenly. Unused budget redistributes to later sections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden — and it does disclose meaningful side effects: write/delete trigger auto git sync, sync is a manual git pull+push, and wakeup returns a token-budgeted section-priority bundle. This is solid disclosure for a mutation-capable tool; it only omits reversibility (e.g., whether delete is recoverable from git history) and confirmation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the content is dense and informative, but it is presented as one long run-on sentence without line breaks or structural separation, making the six actions and their caveats harder to parse at a glance. Fewer words could be used; the parentheticals are useful but poorly delimited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity tool (9 params, 6 actions, enums, nested objects) with no output schema, the description explains wakeup's return bundle but not the return values for the other five actions (e.g., what list returns, what read returns on success/failure). The schema covers parameter semantics well, but the absence of output descriptions for the remaining actions leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all nine parameters with action-scoped descriptions. The description adds value on top by explaining wakeup semantics — section ordering, defaults, budget behavior — but does not substantially enrich the other parameters beyond what the schema states. A baseline of 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose ('Knowledge base CRUD, sync, and session-start hydration') and enumerates six concrete actions with brief one-line definitions. It implicitly distinguishes from siblings (search, graph, analyze) by being the CRUD/sync/wakeup orchestrator, though it never names the siblings or their differing responsibilities explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is conveyed per-action ('call once at session start' for wakeup, 'auto git sync' for write/delete) and the verb definitions imply when each is appropriate. However, with five siblings present, there is no explicit when-to-use-versus-alternative guidance (e.g., when to prefer knowledge_search over this tool's list action), and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_adminB
Admin operations: view vector store stats, view/update configuration, rebuild embeddings, prune orphan session embeddings, or VACUUM the database. Use action "status" for index stats, "config" to view or update settings, "rebuild_embeddings" to re-embed all knowledge entries (useful when switching providers), "prune_orphans" to delete embeddings for sessions no longer present on disk, "vacuum" to reclaim free pages.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: status (vector store stats), config (view/update settings), rebuild_embeddings (re-embed all entries), prune_orphans (delete embeddings for missing sessions), vacuum (reclaim free pages), promote (run the scored promoter — see promote_mode) | |
| vacuum | No | Run VACUUM after pruning (action=prune_orphans, default true) | |
| git_url | No | Git remote URL (action=config). Set to empty string to remove. | |
| min_score | No | [promote] Minimum composite score to promote (default: 0.5). | |
| memory_dir | No | Local knowledge base directory (action=config). Empty to reset. | |
| auto_distill | No | Enable/disable scheduled promotion (action=config) | |
| force_vacuum | No | Run VACUUM even if no orphans were pruned (action=prune_orphans) | |
| promote_mode | No | action=promote mode (default: explain). "explain" returns score breakdowns without writing; "apply" promotes candidates that pass all gates. | |
| min_recall_count | No | [promote] Minimum recall count gate (default: 2). | |
| min_unique_queries | No | [promote] Minimum unique-query gate (default: 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does disclose destructive effects for prune_orphans ('delete embeddings') and vacuum ('reclaim free pages'). However, it understates rebuild_embeddings' destructive rewriting of existing embeddings, and it completely omits the 'promote' action's behavior (apply vs explain modes, write behavior vs read-only). For a tool with several destructive operations, the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operations are front-loaded in the opening sentence, with each action's purpose expanded in a single subsequent sentence. The structure is efficient and scannable. Minor deduction for the slightly run-on single-sentence expansion and for leaving out promote, which makes the list feel incomplete rather than intentionally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex admin tool with 10 parameters, 6 actions, no output schema, and no annotations, the description should be comprehensive — but it covers only 5 of 6 actions and omits the entire promote workflow with its 4 dedicated parameters (promote_mode, min_score, min_recall_count, min_unique_queries). An agent reading only the description would never learn a whole callable mode exists, which is a significant completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 10 parameters, giving a baseline of 3. The description adds marginal value by linking rebuild_embeddings to the provider-switching use case, but it adds no semantics beyond the schema for the config params (git_url, memory_dir, auto_distill) and leaves the promote-related parameters entirely unexplained in prose despite them being a substantial cluster of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose — administrative operations on the knowledge/vector store — and enumerates five concrete actions (status, config, rebuild_embeddings, prune_orphans, vacuum) with their effects. It clearly distinguishes itself from the read/search siblings. However, it silently omits the 'promote' action that exists in the schema enum, and the umbrella phrase 'Admin operations' is vague until the action list clarifies it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives actionable when-to-use context for rebuild_embeddings ('useful when switching providers') and explains what each action accomplishes, which implicitly routes the agent to the right action. But it provides no guidance for the 'promote' action (its dedicated params min_score, min_recall_count, min_unique_queries, promote_mode are never narrated), and it never states when NOT to use the tool or how it differs from siblings beyond 'admin' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_analyzeA
Analysis tools: find duplicates, unconnected entries, most-connected concepts (god nodes), bridge entries, knowledge gaps, zero-result search queries, stale-by-code-activity entries, or generate a compact knowledge brief. Actions: consolidate, reflect, god_nodes, bridges, gaps, brief, search_gaps, stale_by_code_activity.
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | Number of results (action=god_nodes default: 10, action=bridges default: 5) | |
| action | Yes | Action: consolidate (find duplicates), reflect (find unconnected entries), god_nodes (most-connected entries), bridges (cross-cluster connectors), gaps (entries with 0-1 edges), brief (compact knowledge base summary), search_gaps (zero-result knowledge_search queries grouped by similarity — the single best signal for "what entries should I write next?"), stale_by_code_activity (entries whose referenced file paths were modified in recent sessions after the entry body was last edited — automatic staleness signal, v1.8.1). | |
| category | No | Scan only this category (omit for all) | |
| min_count | No | [search_gaps] Minimum occurrence count per merged group (default: 1). Raise to surface only repeated misses. | |
| threshold | No | Similarity threshold 0-1 (action=consolidate, default: 0.5) | |
| since_days | No | [search_gaps] Lookback window in days (default: 30). Only queries logged within this window are considered. | |
| max_entries | No | Max unconnected entries to include (action=reflect, default: 20) | |
| group_similarity | No | [search_gaps] Jaccard token similarity threshold for merging near-duplicate queries (default: 0.35, range 0-1). Low because short queries yield low Jaccard even when topically related. | |
| min_touching_sessions | No | [stale_by_code_activity] Minimum distinct sessions that must have modified one of the entry's referenced files for it to be flagged (default: 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full disclosure burden, yet it is internally contradictory on the consolidate action: the verb implies merging/mutation while the gloss '(find duplicates)' implies read-only discovery. There is no statement about whether any action mutates entries, what output shape results, or performance implications — a real gap for a multi-action analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the whole description runs roughly 60 words with no filler. The trailing 'Actions:' enumeration is partially redundant with the schema enum but serves as a useful name→semantic mapping, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool — 9 parameters, 8 actions, no output schema, no annotations. All action semantics are enumerated, but the description is silent on per-action return formats and on whether any action (notably consolidate) has side effects, both material for an analysis surface of this breadth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's parameter descriptions are unusually rich (per-action defaults, the Jaccard rationale for group_similarity, min_count semantics). The tool description adds little beyond re-listing action names, so the schema-carrying baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates eight distinct analyses with denotative glosses (duplicates, unconnected entries, god nodes, bridges, gaps, zero-result queries, stale-by-code-activity, brief), clearly binding the tool to knowledge-base entry analysis. This differentiates it from siblings like knowledge_search (querying) and knowledge_admin (admin actions) without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action carries clear context, e.g., 'gaps (entries with 0-1 edges)', 'bridges (cross-cluster connectors)', and search_gaps is explicitly framed as 'the single best signal for what entries should I write next?'. Missing, however, are explicit when-not or alternative statements that route selection against sibling tools at the tool level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_graphB
Knowledge graph operations with temporal validity and code structure support. Create/remove edges, traverse via directed BFS, bulk-import code graph edges. Relationship types: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on, calls, imports, inherits. Code structure types (calls/imports/inherits) are created by knowledge-ingest and use "code:" prefixed node IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ISO date — only return edges valid at this date (action=list/traverse, optional) | |
| depth | No | Max traversal depth in hops (action=traverse, default: 2) | |
| edges | No | Array of edges to create (action=bulk_link). Each: { source, target, rel_type, strength?, origin? } | |
| entry | No | Entry path for filtering (action=list) or BFS start (action=traverse) | |
| action | Yes | Action: link (create edge), unlink (remove edge), invalidate (set valid_to), list (list edges), traverse (directed BFS), bulk_link (batch-create edges), unlink_by_origin (delete all edges from a specific origin) | |
| origin | No | Edge origin to delete (action=unlink_by_origin). E.g. "tree-sitter" to clear code graph before re-ingest. | |
| source | No | Source entry path (action=link/unlink/invalidate), e.g. 'projects/my-project.md' | |
| target | No | Target entry path (action=link/unlink/invalidate), e.g. 'decisions/architecture.md' | |
| rel_type | No | Relationship type (required for link, optional filter for unlink/invalidate/list) | |
| strength | No | Edge strength 0-1 (action=link, default: 0.5) | |
| valid_to | No | ISO date the fact stopped being true (action=link/invalidate). For invalidate, defaults to today. | |
| direction | No | Traversal direction (action=traverse, default: both). outbound: follow source→target (what does X call?). inbound: follow target→source (who calls X?). both: undirected (default, preserves legacy behavior). | |
| valid_from | No | ISO date the fact became true (action=link, optional). Null/omitted = unbounded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses temporal validity and that code structure edges are created by knowledge-ingest, which is useful. However, it does not warn about destructive side effects of unlink/invalidate or the scope of bulk operations, leaving behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise, using three sentences to cover operations, relationship types, and code structure nuance. It could tighten by omitting the redundant relationship list from the enum, but it remains front-loaded and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, and the description does not describe return values for actions like list or traverse. It also omits details about state mutations (e.g., irreversibility of unlink). Given the tool's complexity and no annotations, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal value: it re-lists relationship types (already in the enum) and notes the 'code:' prefix for node IDs. It does not explain parameter interactions beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs knowledge graph operations: create/remove edges, traverse via BFS, bulk-import code edges. It also lists relationship types and code structure specifics. However, it does not explicitly contrast with sibling tools like knowledge_search or knowledge_analyze, so differentiation relies on the implicit 'graph' focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. It does not mention when not to use it, nor does it reference alternative tools. The code structure note implies a use case, but there is no clear routing or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_searchA
Search across sessions AND knowledge entries. Returns {mode, sessions, knowledge}. General mode (no scope): hybrid TF-IDF + semantic over both sources, with optional MMR diversity and category boost. Scoped mode (scope set): sessions-only filtered recall for a specific domain (errors, plans, configs, tools, files, decisions).
| Name | Required | Description | Default |
|---|---|---|---|
| mmr | No | Apply Maximal Marginal Relevance re-ranking to knowledge results (default: false). Trades a small amount of top-1 relevance for diversity in the top-K. | |
| role | No | Filter by message role (default: all, ignored when scope is set) | |
| query | Yes | Search query -- supports keywords and phrases | |
| scope | No | Search scope (optional): errors (stack traces), plans (architecture, TODOs), configs (settings, env vars), tools (MCP tool calls), files (file paths, code refs), decisions (trade-offs, choices), all (no filter). When set, response mode switches to "scoped" and results are sessions-only. | |
| ranked | No | Use TF-IDF ranking (default: true, ignored when scope is set). Set false for regex mode. | |
| explain | No | When true, each knowledge hit carries `score_components` (bm25, decay, maturity, confidence, category_boost, mmr_penalty). | |
| project | No | Restrict search to sessions from this project | |
| category | No | Knowledge category hint (optional). By default applied as a boost (non-matching kept, matching +25%). Pass category_mode="filter" for the legacy hard-filter behavior. | |
| semantic | No | Blend semantic vector similarity with TF-IDF (default: true). Falls back to pure TF-IDF if embeddings unavailable. | |
| mmr_lambda | No | MMR tradeoff 0-1 (default: 0.7). 1.0 = pure relevance; 0.0 = pure diversity. | |
| max_results | No | Maximum number of results to return (default: 20) | |
| category_mode | No | How `category` is applied to knowledge results (default: "boost"). "boost" keeps all entries but gives matching-category entries a 25% score boost; "filter" restricts to matching category only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it excels. It reveals the return shape ({mode, sessions, knowledge}), explains the hybrid ranking (TF-IDF + semantic), discloses fallback behavior (pure TF-IDF if embeddings unavailable), details the boost/filter semantics of category, and even mentions the 'score_components' breakdown when explain=true. This is comprehensive transparency for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it leads with the core action and return format, then systematically explains the two modes and key behaviors. Every sentence adds distinct information (modes, ranking, fallback, category handling) with no filler. It is long, but each phrase earns its place given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, 4 enums, and no output schema, the description covers the critical decision points: mode selection, source scope, ranking approach, category application, and MMR parameter meaning. It explains the return envelope and the score breakdown for explain mode. No essential usage context appears missing; the schema handles parameter-level details, and the description supplies the higher-level orchestration model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already described. The description adds meaningful context beyond the schema by explaining how scope switches modes, how category boost/filter interacts with category_mode, the MMR tradeoff (lambda 1.0 = pure relevance, 0.0 = diversity), and that 'role' is ignored in scoped mode. This is valuable semantic glue, though it doesn't cover every parameter explicitly – some are only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search across sessions AND knowledge entries.' It immediately clarifies the dual-source nature and then distinguishes two modes (general vs. scoped) with clear scope semantics. This cleanly differentiates it from sibling tools like knowledge_session or knowledge_graph, which are likely more specialized.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use general mode (no scope) vs. scoped mode ('scope' set), including that scoped mode is sessions-only and filtered by domain. It mentions the behavior of parameters like 'role' being ignored when scope is set. However, it does not name any sibling tools as alternatives or give exclusion conditions, so the guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_sessionA
Session operations: list sessions, get a full conversation, or get a summary. Use action "list" to browse sessions, "get" to retrieve messages, "summary" for a quick overview.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | Only return the last N messages (action=get) | |
| limit | No | Max sessions to return (action=list, default: 20, max: 500) | |
| action | Yes | Action to perform | |
| offset | No | Skip first N sessions (action=list, default: 0) | |
| project | No | Filter by project name (substring match) | |
| session_id | No | Session UUID (required for get, summary) | |
| include_tools | No | Include tool_use and tool_result messages (action=get, default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the actions but does not mention whether operations are read-only, side effects, required permissions, error behavior (e.g., invalid session_id), or any rate limits. For a tool with three read-like actions, this is a notable gap; the agent is left to infer safety and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero waste. It front-loads the core concept 'Session operations' and immediately explains the three actions. Every sentence contributes to understanding the tool, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough to invoke the tool correctly for the three actions, but it omits the response format entirely. Since there is no output schema, the agent is unaware of what each action returns (e.g., list returns an array, get returns messages). For a multi-action tool, this is a moderate gap, though the actions are simple enough that an agent might infer typical behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All seven parameters are fully described in the schema (100% coverage), so the schema carries the heavy lifting. The description adds context for how the action parameter drives behavior (list vs get vs summary) and clarifies the purpose of some parameters indirectly (e.g., tail for get, limit for list), but it does not add new semantic detail beyond the schema. This aligns with the coverage baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Session operations: list sessions, get a full conversation, or get a summary.' It identifies three distinct actions (list, get, summary) and explicitly differentiates from sibling tools by focusing on session operations, which none of the sibling names (knowledge, knowledge_search, knowledge_admin, knowledge_graph, knowledge_analyze) cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides per-action guidance: 'Use action list to browse sessions, get to retrieve messages, summary for a quick overview.' This clarifies when to use each action, but it does not mention when to favor this tool over siblings such as knowledge_search or knowledge_analyze. There is no explicit exclusion or alternative routing at the tool level, though the action-level guidance is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.9.7- First observed
knowledge - First observed
knowledge_admin - First observed
knowledge_analyze - First observed
knowledge_graph - First observed
knowledge_search - First observed
knowledge_session
TDQS
Scored across 6 tools
Each tool targets a distinct functional domain: CRUD operations, cross-source search, session management, admin/maintenance, graph relationships, and analysis/insights. The action-based sub-operations are clearly scoped, and there is no meaningful overlap between tools.
All tool names follow the consistent pattern `knowledge_<verb_noun>` using snake_case throughout. The naming convention is uniform, with descriptive suffixes (search, session, admin, graph, analyze) that clearly differentiate purposes.
Six tools is an ideal count for a knowledge-management server. Each tool encapsulates a distinct set of related operations (CRUD, search, sessions, admin, graph, analysis), providing comprehensive functionality without overwhelming the agent.
The toolset covers the full lifecycle of a knowledge base: creating/reading/updating/deleting entries, searching across sessions and entries, managing session history, performing administrative tasks (embeddings, vacuum), maintaining knowledge graph relationships, and deriving analytical insights. No obvious gaps exist; even advanced features like bulk graph import and orphan pruning are included.
Maintenance
Related MCP Connectors
Shared memory for coding agents. Stop re-explaining your codebase every session.
- EngramOAuthtools.engram
Memory for AI agent teams across tools, sessions, repositories, and teammates.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceProvides persistent memory for AI coding assistants, storing and retrieving architectural decisions, patterns, and solutions across sessions using semantic search, while also offering git integration for commit messages and code expertise mapping.MIT- AlicenseAqualityDmaintenanceProvides persistent memory for AI agents using hybrid search (vector embeddings + BM25) with neural reranking, enabling storage and retrieval of insights, debugging solutions, and patterns across coding sessions.8MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI coding assistants with persistent, context-rich memory of a codebase, including documentation and git history, enabling recall across sessions.105Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.MIT