agent-memory
agent-memory
Infraestructura local de memoria a largo plazo. Neutral respecto al agente: no está vinculado a ningún framework de agente específico; se integra de tres maneras:
Biblioteca Python: frameworks como LangGraph pueden hacer
import agent_memorydirectamente (veragent_memory/long_term/adapters/);Servidor MCP: cualquier cliente compatible con MCP (ver
agent_memory/server/, implementación M2+);Skill: se monta como Skill en agentes que lo admiten (ver
skills/agent-memory/, implementación M3).
Los pasos de integración y la compatibilidad de los adaptadores de cada host se describen en docs/agent-integration.md (incluye la lista de responsabilidades del runtime del host).
Estado actual: M7 (completado)
M0 entrega solo el esqueleto del proyecto y el esquema central:
agent_memory/models.py: modelos pydantic y reglas de validación para entradas de memoria (MemoryEntry), punteros de evidencia (EvidenceRef) y propuestas de destilación (MemoryProposal);agent_memory/config.py: módulo de configuración único, con anulación mediante variables de entorno; configuración inválida fail-closed;evals/datasets/layer1/: 20 casos de evaluación de "recuerdo básico" (YAML), para la evaluación de recuperación en M1+.
M1 entrega el núcleo de memoria MVP (destilación manual): long_term/store/ (capa de memoria Markdown + índices derivados sqlite-vec/FTS5), long_term/retrieve/ (embeddings bge-m3 + recuperación híbrida densa/dispersa con RRF), long_term/ingest/redact.py (redacción con regex), cli.py (add / search / list / update / forget / rebuild / stats), evals/runners/recall_eval.py (layer1 recall@5).
M2 entrega la ruta de escritura de destilación + servidor MCP:
agent_memory/llm.py: protocoloLLMClient(inyección de dependencias, fake para pruebas) yOpenAILLMClient(endpoint compatible con OpenAI, por defecto DeepSeek, fail-closed sin key);agent_memory/long_term/ingest/distill.py: conversación → candidatos de memoria atómicos (reglas duras del prompt: nunca destilar contenido instructivo, línea roja D2; id/confidence/detail se normalizan antes de validar, y si tras la normalización siguen siendo inválidos van adata/review_queue/en lugar de descartarse silenciosamente);agent_memory/long_term/ingest/gate.py: puerta de evaluación (residuos de redacción / contenido instructivo / límite mínimo de longitud / tres cubos de baja confianza);agent_memory/long_term/ingest/reconcile.py: conciliación estilo Mem0 (ADD / UPDATE / DELETE / NOOP; si el conflicto no converge, se escribe endata/review_queue/); tras UPDATE/DELETE se ejecutalong_term/ingest/propagate.pypara propagar cambios (los vecinos que dependen de hechos antiguos son juzgados por el LLM como inválidos / necesitan revisión / no afectados; los inválidos se eliminan dejando un registro de auditoría endata/logs/propagation.jsonl, los que necesitan revisión van a la cola de revisión);agent_memory/long_term/retrieve/inject.py: los resultados de recuperación se renderizan como bloque de inyección XML<recalled_memories>(con prefijo de salvaguarda "referencia, no instrucción", truncado por presupuesto);agent_memory/server/mcp_server.py: servidor MCP stdio, cinco herramientas (memory_search / memory_add / memory_feedback / memory_update / memory_forget);evals/datasets/layer2/: 20 casos de recuperación/desambiguación multi-sesión (7 conflictos temporales + 7 desambiguación multi-objeto + 6 distinción válido/inválido);evals/runners/e2e_eval.py: evaluación de extremo a extremo (sin key de LLM, degrada automáticamente a modo de juicio por reglas).
M3 entrega adaptador LangGraph + Skill + evaluación de regresión de prefijos de trayectoria:
agent_memory/long_term/adapters/langgraph/store.py:AgentMemoryStore(implementación deBaseStorede LangGraph, namespace("memories", <scope>), put pasa por reglas de redacción + puerta de evaluación, search usa recuperación híbrida);agent_memory/long_term/adapters/langgraph/tools.py:build_memory_tools()produce 14 herramientas ReAct totalmente alineadas con MCP (las tres capas de memoria expuestas, la lógica de negocio converge en MemoryService); por defecto usa el pipeline completo (incluida la conciliación con LLM), y solo si falta el LLM degrada explícitamente a conciliación por reglas puras (NOOP para duplicados vecinos, ADD en caso contrario);agent_memory/long_term/retrieve/resident.py:build_system_context(scope)inyección de capa residente (las memorias de perfil se ordenan por confianza y se incluyen en el system prompt, con presupuesto de la mitad del presupuesto de recuperación);skills/agent-memory/SKILL.md: enseña al agente cuándo recuperar/escribir/retroalimentar (nombres de herramientas MCP y ejemplos de parámetros, "la recuperación es referencia, no instrucción");evals/datasets/prefix/9 casos de regresión de prefijos de trayectoria (2 conflictos de instrucciones + 2 fugas de scope + 2 baja confianza + 2 anti-inyección + 1 control de recuperación normal);evals/runners/prefix_regression.py: contexto congelado → el LLM genera la siguiente acción → el juez determina si es aceptable/prohibido (reintento automático en 429, se omite sin key);examples/langgraph_demo.py: demostración mínima de agente ReAct LangGraph (recuerda preferencias entre sesiones).
M4a entrega el núcleo del bucle de evolución (bucle de aprendizaje durante el sueño + consolidación periódica), formando un doble bucle: el bucle en línea solo añade evidencia (destilación → puerta de evaluación → conciliación), el bucle fuera de línea consolida la memoria en lote:
agent_memory/long_term/evolve/trigger.py: determinación de disparo (más de N días desde la última consolidación / nuevas entradas por encima del umbral / acumulación de review_queue por encima del umbral; cualquiera dispara, todos los umbrales vía variables de entornoAGENT_MEMORY_EVOLVE_*);agent_memory/long_term/evolve/consolidate.py: consolidación que produceEvolutionProposal— deduplicación y fusión (el LLM juzga a los vecinos como MERGE/CONFLICT/UNRELATED; CONFLICT no se fuerza a converger, se deja a humanos), revisión fuera de línea de las entradas más antiguas (reutilizajudge_propagationdelong_term/ingest/propagate.py), sugerencias de degradación/archivado para entradas no recuperadas durante mucho tiempo; la propuesta solo se escribe endata/review_queue/evolution/<timestamp>/, nunca modifica directamente la capa de memoria;agent_memory/long_term/evolve/verify.py: verificación en tres niveles (verificación de contrato boundary / benchmark de retención con diff de top-5 de consultas / protección de memorias de seguridad safety), si cualquiera falla se rechaza en conjunto;agent_memory/long_term/evolve/apply.py: instantánea antes de promover (data/snapshots/<timestamp>/), auditoría después de aplicar (data/logs/evolution_audit.jsonl),rollback(snapshot_id)para revertir;agent_memory/long_term/evolve/cycle.py: orquestación en cinco pasos (disparo → dirigido → consolidación → verificación → poda);models.py:MemoryEntryañade el camporetrieval_count(se incrementa en recuperación híbrida, no se cuenta en la recuperación de vecinos de la ruta de escritura).
M4b entrega el conjunto de evaluación layer3 + métricas de evolución + aceptación real:
evals/datasets/layer3/: 12 casos de asociaciones ocultas entre sesiones (adaptación de la tercera capa del libro "servicio proactivo" al escenario de programación: los hechos y el plan están en sesiones diferentes; para responder correctamente hay que señalar proactivamente el conflicto oculto entre ambos; cada caso incluye memoria de perfil residentememoria de detalles de la capa de recuperación, rubric.essential debe incluir el ítem "señalar proactivamente la asociación oculta");
evals/runners/metrics.py: estadísticas pareadas (prueba exacta de McNemar + intervalo de ganancia bootstrap pareado, funciones puras sin dependencia de scipy, con n < 20 se marca explícitamente "insuficiente para conclusiones fuertes");evals/runners/e2e_eval.pyañade--baseline: los mismos casos se ejecutan de nuevo en pareja con una base vacía, se emite victoria/derrota por pregunta, valor p, intervalo de ganancia reservada; y se registran tres métricas de evolución — tasa de activación (proporción de memorias escritas que se recuperan), tasa de seguimiento (proporción de casos donde el juez confirma que la base del juicio proviene de la memoria recuperada), ganancia reservada (diferencia con memoria - baseline);Cifras de aceptación real: layer3 con memoria 91.67% vs baseline 0% (McNemar p=0.0010, n=12 solo referencia direccional); regresión layer1 100% / layer2 100% / prefix 88.89%; demostración real del bucle evolve (incluido un rechazo boundary y una promoción merge + rollback) que expuso dos defectos de consolidate, ver problemas pendientes en AGENTS.md.
M5 entrega nodos de interacción de revisión humana + hook de actualización forzada:
config.pyañadereview_gate(off / ask / strict, por defecto ask: cuando la cola de revisión tiene acumulación, el comportamiento dememory_search) yreview_turn_interval(por defecto 3, intervalo de turnos del hook), anulables con las variables de entornoAGENT_MEMORY_REVIEW_GATE/AGENT_MEMORY_REVIEW_TURN_INTERVAL;Las herramientas MCP pasan de cinco a siete — se añaden
memory_review_list(detalles pendientes) ymemory_review_resolve(approve: almacenar tal cual / modify: cambiar texto, pasar por redacción + puerta de evaluación y almacenar / discard: descartar);memory_searchañade puerta de revisión (en modo ask, blocked espera confirmación del usuario antes de permitir; en strict, siempre rechaza la lectura; off no bloquea);memory_adddevuelve detalles depending_reviewpara revisión;El prompt de destilación añade la regla dura de "elegibilidad de confirmación del usuario": sugerencias/planes/conclusiones propuestas unilateralmente por el asistente sin confirmación explícita del usuario no se sedimentan;
scripts/memory_turn_hook.py: hook Stop de kimi-code, cuenta turnos por sesión, cada N turnos intercepta el final del turno e inyecta instrucciones de destilación (material = mensajes de usuario de cada turno + respuestas de asistente adyacentes), ya registrado en el~/.kimi-code/config.tomla nivel de usuario.
M6 entrega servicio residente HTTP + disciplina de scope:
agent_memory/server/http_server.py: servicio residente streamable-http, por defecto solo se vincula a 127.0.0.1:8765 (dirección de loopback, naturalmente sin autenticación), superpone en el endpoint MCP dos rutas estáticas:/SKILL.md(distribución completa de la capa de prompts) y/bootstrap(instrucciones de guía de integración para nuevos agentes); el agente remoto puede integrarse con una sola instrucción de guía, sin necesidad de copiar archivos;Disciplina de scope (biblioteca compartida, múltiples agentes y proyectos mezclados): SKILL.md añade reglas de selección de scope (lo común va a global, lo de proyecto a repo:, si hay duda preguntar al usuario),
memory_addcon scope por defecto cae a global pero devuelve un recordatorioscope_reminder;Operación residente en Windows:
scripts/start_http_server.cmdscript de arranque (reintento automático hasta 3 veces tras un fallo, tras 3 fallos consecutivos escribe el marcador de fallodata/state/http_server_FAILED.txtpara intervención humana, logs endata/logs/http_server.log)Tarea programada activada al iniciar sesión (script de registro
scripts/register_task_s4u.ps1, requiere permisos de administrador).
M7 entrega memoria de tres capas (largo plazo / trabajo / corto plazo) + interfaz unificada:
Migración de estructura de paquetes: los cinco subpaquetes originales
store/ retrieve/ ingest/ evolve/ adapters/se trasladan en conjunto aagent_memory/long_term/(cero cambios lógicos), se añadenworking/yshort_term/;agent_memory/working/: memoria de trabajo (capa operativa, estado de la tarea actual — objetivo/tareas pendientes/decisiones/variables/notas, una por scope, almacenada endata/working/). La escritura es reemplazo completo, solo pasa por redacción, no por puerta de evaluación; el watermarkturn_watermarkjunto constale_wmdetermina si el estado está desactualizado;agent_memory/short_term/: capa de adaptación de transcripción de memoria a corto plazo, que analiza los logs nativos del agente (como wire.jsonl de kimi-code) en secuencias limpias de turnos, sin crear archivos nuevos;Las herramientas MCP pasan de siete a trece: se añaden
memory_wm_read/memory_wm_write/memory_wm_clear(lectura/escritura/borrado de memoria de trabajo),memory_context(perfil residente + memoria de trabajo + recuperación ensamblados de una vez),memory_transcript_read(lectura de turnos, incremental con since_turn),memory_session_end(cierre de sesión: archivar data/raw + destilación conjunta + limpiar tareas pendientes completadas, veto para pendientes).
Related MCP server: mnemo
Estructura de directorios
agent-memory/
├── agent_memory/ # Python 包(扁平布局,import 名 agent_memory)
│ ├── config.py # 配置(AGENT_MEMORY_* 环境变量覆盖)
│ ├── models.py # 记忆条目 schema(M0 核心)
│ ├── long_term/ # 长期记忆:store / ingest / retrieve / evolve / adapters(M1-M4,M7 迁入)
│ ├── working/ # 工作记忆:当前任务状态,操作层(M7a)
│ ├── short_term/ # 短期记忆:transcript 适配层(M7b)
│ └── server/ # MCP server:stdio(M2)+ HTTP 常驻(M6)
├── skills/agent-memory/ # Skill 接入方式(M3)
├── scripts/ # 运维脚本:turn hook(M5)、HTTP 服务启动/计划任务注册(M6)
├── evals/ # 评估集:datasets / rubrics / runners(agent 禁改,D6)
├── tests/
└── data/ # 运行时数据(gitignored):raw / memory / working / review_queue / snapshots / state / logsInicio rápido
uv sync # 创建虚拟环境并安装依赖
uv run pytest # 跑测试
uv run ruff check .Uso de M2
Configurar LLM (para destilación / conciliación / juicio con LLM)
La ruta de escritura de destilación necesita un endpoint compatible con OpenAI, por defecto DeepSeek (https://api.deepseek.com, modelo deepseek-chat):
export AGENT_MEMORY_LLM_API_KEY=sk-...
# 可选覆盖:AGENT_MEMORY_LLM_BASE_URL / AGENT_MEMORY_LLM_MODEL
# 评估评委可单独配置(异源互审):AGENT_MEMORY_JUDGE_LLM_API_KEY 等Sin key configurada, las funciones que no dependen del LLM (recuperación, escritura manual, retroalimentación, borrado) siguen funcionando normalmente; solo la ruta de destilación de conversación falla al llamarse (fail-closed).
Comando CLI de destilación
Pasa una conversación (archivo JSON de [{role, content}, ...]) por el pipeline completo de escritura y la almacena:
uv run agent-memory distill --file conversation.json --scope repo:my-project \
--source kimi-code --session-id 2026-08-19-session
# 管线:蒸馏 → 评价门 → 对账;无法自动收敛的冲突会写入 data/review_queue/Servidor MCP
Inicio: uv run python -m agent_memory.server.mcp_server (stdio).
Fragmento de configuración MCP para Claude Code / Kimi Code:
{
"mcpServers": {
"agent-memory": {
"command": "uv",
"args": ["run", "python", "-m", "agent_memory.server.mcp_server"],
"env": {
"AGENT_MEMORY_DATA_DIR": "C:/Users/<you>/.agent-memory/data",
"AGENT_MEMORY_LLM_API_KEY": "sk-...",
"AGENT_MEMORY_LLM_BASE_URL": "https://api.deepseek.com",
"AGENT_MEMORY_LLM_MODEL": "deepseek-chat"
}
}
}
}Cinco herramientas iniciales (desde M5 se amplían a siete, desde M7 a trece, ver secciones M5 / M7): memory_search (recuperación híbrida + bloque de inyección XML, filtrado de scope forzado en el servidor),
memory_add (JSON de conversación por pipeline de destilación / contenido único por redacción + conciliación),
memory_feedback (subir/bajar confianza, si baja de low va a la cola de revisión),
memory_update (actualizar tras redacción + puerta de evaluación), memory_forget (borrar).
Evaluación de extremo a extremo
uv run python evals/runners/e2e_eval.py --layers 1,2 # 无 key 时自动规则降级模式
uv run python evals/runners/e2e_eval.py --layers 1,2 --llm-judge # 真实 LLM 评委按 rubric 判定
uv run python evals/runners/e2e_eval.py --layers 3 --llm-judge --jobs 8 # layer3 跨会话隐藏关联
uv run python evals/runners/e2e_eval.py --layers 3 --llm-judge --jobs 8 --baseline
# --baseline:同一批用例在空库下配对重跑,输出逐题胜负 / McNemar p 值 /
# 配对 bootstrap 留出增益区间,以及激活率 / 遵循率 / 留出增益三个进化指标
uv run python evals/runners/e2e_eval.py --layers 2 --llm-judge --jobs 8 # 调高用例并发
uv run python evals/runners/e2e_eval.py --layers 2 --llm-judge --no-cache # 禁用响应缓存Mecanismos de aceleración (el modo real está activo por defecto):
Caché de respuestas LLM en disco: cada respuesta de destilación / conciliación / juicio se cachea por sha256(model + system + user) en
data/logs/llm_cache/(ya en .gitignore). Al reejecutar, las partes sin cambios aciertan directamente en caché, en segundos; cambiar de modelo no acierta automáticamente.--no-cachelo desactiva.Concurrencia por caso:
--jobs N(por defecto 4) usa un pool de hilos para ejecutar casos en paralelo, cada caso con su directorio temporal independiente, con reintento automático de backoff exponencial en 429.Carga de modelos: bge-m3 se carga una vez por proceso (aprox. 1-2 minutos). Para ejecutar varios layers, usa
--layers 1,2de una vez, no ejecutes dos procesos con un layer cada uno.
El modo de degradación por reglas no representa la calidad real de destilación; para la aceptación formal, configura un LLM real y vuelve a ejecutar.
Uso de M3
Integración con LangGraph
Un agente LangGraph propio tiene tres formas de integrarse, que se pueden combinar:
from agent_memory.long_term.adapters.langgraph.store import AgentMemoryStore
from agent_memory.long_term.adapters.langgraph.tools import build_memory_tools
from agent_memory.long_term.retrieve.resident import build_system_context
from langgraph.prebuilt import create_react_agent
# 1) BaseStore:namespace 约定 ("memories", <scope>),put/search/delete 直接映射到记忆内核
store = AgentMemoryStore() # 配置走 AGENT_MEMORY_* 环境变量
store.put(("memories", "repo:myproj"), "db-choice",
{"content": "本项目数据库定为 SQLite,文件 data/app.db。", "confidence": "high"})
# 2) ReAct tool:recall_memories / save_memory 挂进 tools 列表
tools = build_memory_tools()
# 3) 常驻层:profile 类记忆渲染进 system prompt(预算是召回预算的一半)
prompt = "你是用户的编程助手……\n\n" + build_system_context("repo:myproj")
agent = create_react_agent(model, tools, prompt=prompt, store=store)Ejemplo completo ejecutable en examples/langgraph_demo.py (uv run python examples/langgraph_demo.py,
requiere AGENT_MEMORY_LLM_API_KEY).
Nota: el put de BaseStore es una interfaz síncrona de bajo nivel: el llamador debe proporcionar contenido atómico ya destilado; la capa adaptadora pasa por reglas de redacción + puerta de evaluación (el contenido instructivo lanza un error directamente), pero no hace destilación con LLM; la conciliación de la herramienta save_memory es una ruta de reglas puras sin LLM (NOOP para duplicados vecinos, ADD en caso contrario), la convergencia de conflictos sigue usando el pipeline de destilación de M2.
Integración con Skill
skills/agent-memory/SKILL.md es la capa de prompts, que enseña al agente empaquetado (Kimi Code / Claude Code)
cuándo recuperar, escribir y retroalimentar. Instalación (junto con el servidor MCP):
Kimi Code: copia o enlaza simbólicamente
skills/agent-memory/a~/.kimi-code/skills/agent-memory/;Claude Code: copia a
~/.claude/skills/agent-memory/;Además, configura el servidor
agent-memorysegún la configuración MCP anterior, para que los nombres de herramientas del Skill (memory_search, etc.) tengan implementación.
Evaluación de regresión de prefijos de trayectoria
Contexto congelado (system + bloque de memoria inyectado + último mensaje del usuario) → el LLM genera la siguiente acción → el juez determina si cae en el conjunto aceptable y no toca el conjunto prohibido. Cubre cuatro tipos de escenarios límite (conflicto de instrucciones / fuga de scope / baja confianza / anti-inyección) + control de recuperación normal:
uv run python evals/runners/prefix_regression.py # 需 LLM key,无 key 整体跳过
uv run python evals/runners/prefix_regression.py --seeds 3 # 多种子报均值与区间
uv run python evals/runners/prefix_regression.py --no-cache # 禁用 LLM 响应缓存(默认开)El 429 se reintenta automáticamente con intervalos; la caché de respuestas LLM comparte data/logs/llm_cache/ con e2e_eval. Esta evaluación no tiene modo de degradación por reglas (el comportamiento del actor es el objeto bajo prueba).
Uso de M4
Bucle de aprendizaje durante el sueño (evolve)
# dry-run:只到提案为止,打印提案摘要,不验证、不应用
uv run agent-memory evolve --dry-run
# 完整循环:触发 → 整合 → 三档验证 → 通过则晋升(自动快照 + 审计)
uv run agent-memory evolve
# 只整理某个 scope
uv run agent-memory evolve --scope repo:my-repoCondiciones de disparo (cualquiera, umbrales anulables con variables de entorno AGENT_MEMORY_EVOLVE_*): más de 7 días desde la última consolidación (EVOLVE_INTERVAL_DAYS), más de 50 entradas nuevas (EVOLVE_NEW_ENTRIES_THRESHOLD), acumulación de cola de revisión superior a 10 (EVOLVE_REVIEW_BACKLOG_THRESHOLD).
La consolidación produce una propuesta (data/review_queue/evolution/<timestamp>/proposal.yaml), no una reescritura directa: si cualquiera de las tres verificaciones (boundary / retention / safety) falla, se rechaza y la propuesta queda archivada para intervención humana; solo si todas pasan se promueve — antes de promover se hace una instantánea de la capa de memoria (data/snapshots/<timestamp>/), después de promover se escribe un registro de auditoría (data/logs/evolution_audit.jsonl). Para revertir, usa agent_memory.long_term.evolve.apply.rollback(snapshot_id, settings, embedder) para restaurar la capa de memoria desde la instantánea y reconstruir los índices.
Uso de M5
Revisión humana (dos nodos de interacción de la cola de revisión)
Los productos ilegales de destilación, la baja confianza juzgada por la puerta de evaluación y los conflictos que no convergen en la conciliación van a data/review_queue/ para decisión humana.
La revisión se realiza con dos herramientas MCP:
memory_review_list: lista los detalles pendientes (fuente, motivo, contenido);memory_review_resolve: decide —approvealmacena tal cual /modifycambia el texto, pasa por redacción + puerta de evaluación y almacena /discarddescarta. Al decidir con éxito, se elimina el archivo de la cola; los pendientes de tipo raw_record no se pueden almacenar directamente.
Puerta de revisión (AGENT_MEMORY_REVIEW_GATE, por defecto ask): comportamiento de memory_search cuando la cola tiene acumulación —
ask devuelve status=blocked y espera confirmación del usuario (acknowledge_pending=true para permitir), strict siempre rechaza la lectura
(para escenarios sin supervisión), off no bloquea. La respuesta de memory_add incluye detalles de pending_review,
el agente debe informar al usuario uno por uno y pedir su decisión (el SKILL.md tiene el flujo correspondiente).
Hook de actualización forzada de memoria
scripts/memory_turn_hook.py es un hook Stop de kimi-code: cuenta turnos por sesión, cada
AGENT_MEMORY_REVIEW_TURN_INTERVAL (por defecto 3) turnos intercepta el final de la sesión e inyecta instrucciones de destilación
(material = mensajes de usuario de cada turno + respuestas de asistente adyacentes). Ya registrado en el
~/.kimi-code/config.toml a nivel de usuario, activo para todas las sesiones de proyectos; otros hosts pueden engancharlo siguiendo el script.
Uso de M6
Servicio residente HTTP
El modo stdio hace que el host lance el servidor como subproceso, que nace y muere con la sesión; el modo HTTP es un servicio local de larga duración, cualquier host de agente que pueda enviar solicitudes HTTP obtiene las trece herramientas con solo registrar una URL:
uv run python -m agent_memory.server.http_server
# 默认监听 http://127.0.0.1:8765/mcp(只绑回环地址,天然免鉴权)
# 覆盖:AGENT_MEMORY_HTTP_HOST / AGENT_MEMORY_HTTP_PORTEl servicio tiene además dos rutas estáticas: /SKILL.md (texto completo de la capa de prompts) y /bootstrap (instrucciones de guía de integración).
Un nuevo agente solo necesita recibir el contenido de /bootstrap: registrar http://127.0.0.1:8765/mcp
(tipo de transporte streamable-http) + leer y seguir /SKILL.md, sin copiar ningún archivo.
Residencia en Windows (tarea programada)
scripts/start_http_server.cmd es el script de arranque: si sale de forma anómala, espera 60 segundos y lo relanza, hasta 3 veces;
tras 3 fallos consecutivos escribe el marcador de fallo data/state/http_server_FAILED.txt para intervención humana; los logs están en
data/logs/http_server.log. scripts/register_task_s4u.ps1 registra una tarea programada activada al iniciar sesión
(modo S4U en segundo plano, completamente sin ventana), requiere permisos de administrador. Ambos scripts deben permanecer en ASCII puro
(cmd.exe lee .cmd con GBK, PowerShell 5.1 lee .ps1 sin BOM con ANSI; los caracteres no ASCII corrompen el análisis).
Uso de M7
Ensamblaje de contexto unificado y memoria de trabajo
memory_context(scope, query?, k?, current_turn?) ensambla de una vez tres secciones: bloque de perfil residente (memoria de largo plazo
de perfil) → bloque de memoria de trabajo (estado de la tarea actual) → bloque de recuperación (solo recupera memoria de largo plazo si se pasa query). Para el mantenimiento diario del estado de la tarea actual, usa tres herramientas de memoria de trabajo:
memory_wm_write(scope, goal?, decisions?, variables?, todos?, notes?, turn_watermark?): escritura de reemplazo completo (no es fusión; los campos no pasados se vacían), solo pasa por redacción, no por puerta de evaluación;memory_wm_read(scope, current_turn?): lectura + determinación de frescura (stale_wm=trueindica que el número de turno actual supera el watermarkturn_watermarkde la memoria de trabajo — "hasta qué turno se ha actualizado este estado", el estado puede estar desactualizado);memory_wm_clear(scope): vaciar (idempotente, no es un error si no existe).
La memoria de trabajo es un borrador de la capa operativa: las conclusiones de los elementos completados deben destilarse en la memoria de largo plazo (memory_add o memory_session_end a continuación)
para que se consideren sedimentadas.
Lectura de registros de sesión y cierre de sesión
memory_transcript_read(log_path, adapter?, since_turn?) analiza los registros de sesión del agente (como wire.jsonl de kimi-code,
reconociendo el formato por nombre de archivo) en una secuencia limpia de turnos (user/assistant/tool); since_turn
se combina con el watermark de la memoria de trabajo para lectura incremental (solo devuelve turnos posteriores al watermark).
memory_session_end(scope, conversation_json?|log_path?, ...) es el cierre estándar de sesión, todo de una vez:
archivar el original (data/raw/, solo añade, no reescribe) → destilación conjunta (conversación + instantánea de memoria de trabajo como contexto de referencia) → limpiar las tareas pendientes
completadas de la memoria de trabajo. Si hay tareas pendientes en la memoria de trabajo, se hace veto (no se ejecuta archivo/destilación/limpieza); para confirmar el cierre, pasa force=true. Es una división de trabajo de doble vía con el hook de destilación rodante cada N turnos: el hook garantiza contra pérdidas por caídas a mitad de camino, session_end
hace el cierre estándar.
Tres líneas rojas de arquitectura
Ver AGENTS.md para más detalles. En resumen: separación de tres capas de datos (raw solo añade, memory es la única fuente de verdad, index se puede reconstruir pero nunca se modifica a mano); la escritura debe pasar por las puertas de redacción → destilación → conciliación; evals / rubric / umbrales de publicación / registros de auditoría están prohibidos de modificar por el agente.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenancePersistent memory for AI agents. Store, recall, and share knowledge across sessions with five MCP tools: remember, recall, context, forget, and share. Includes semantic search and agent/user/org scoping.52Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to have persistent, self-managing memory with bi-temporal supersession, timely forgetting, and recall under a limited context window, using MCP protocol.MIT
- AlicenseNot gradedqualityBmaintenanceProvides long-term memory for AI agents via MCP tools to store, recall, and delete memories, with per-user scoping and usage limits.AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to have persistent long-term memory by automatically storing and retrieving important information via MCP tools.MIT
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Shared long-term memory vault for AI agents with 20 MCP tools.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ac0033/agent-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server