devin-memory
Memoria local-primero anti-envenenamiento para agentes de codificación: procedencia, versionado, puerta de cuarentena y verificación.
Documentación
Parte del ecosistema DEVIN
Ruta: Build · Naturaleza: producto
Para: Ingenieros de IA, Desarrolladores, Científicos de datos
Interfaz: CLI / biblioteca Python / servidor MCP / servicio
Ruta: Ingenieros de IA · paso 3/3 — después dedevin-orchestrator
Dónde encaja
- Trabajo: Build
- Producto:
devin-brain - Paquetes:
devin-memory - Modo: mixto
- Fundación:
devin-internals-spec - Ecosistema:
awesome-devin· registro:devin-powerups
devin-memory
Renombrado (octubre de 2026): este repositorio se movió de
Icaro0310/devin-memoryaIcaro0310/devin-brain— el paquete PyPI, los comandos CLI y el nombre del servidor MCP siguen siendodevin-memory; las estrellas, los problemas y el historial se conservan mediante la redirección de GitHub.
Proyecto comunitario no oficial. No está afiliado, respaldado ni patrocinado por Cognition AI. "Devin" es una marca comercial de Cognition AI.
Linux · Windows personal · Windows corporativo
Parte del ecosistema awesome-devin: el centro curado para las herramientas devin-*.
Un almacén de memoria anti-envenenamiento para Devin: hechos duraderos con procedencia, versionado y una puerta de cuarentena — para que la memoria del agente no pueda ser corrompida silenciosamente por una sesión defectuosa o contenido inyectado.
El problema
La memoria del agente es un vector de envenenamiento. Cualquier herramienta que persista "hechos" entre sesiones puede ser corrompida por una sola sesión defectuosa — una instrucción inyectada o un secreto pegado se convierte en una creencia confiable en cada sesión futura, sin paso de revisión y sin forma de responder "¿de dónde salió esto?".
Trabajo previo
- El MCP de memoria de Devin (
retain/recall/reflectsobre.devin/memory/memories.jsonl) — solo añade, sin filtrado, sin procedencia de sesión.devin-memoryexporta a esa forma de línea exacta. - Memoria de MemGPT / LangChain — capas de persistencia que optimizan para el recuerdo, no para auditar o desconfiar de lo almacenado.
devin-memory adapta la idea del almacén de memoria; añade las partes que esas herramientas
no tienen: una puerta de cuarentena y procedencia hasta las filas reales de sesión.
Qué lo hace nativo de Devin
- Lado a lado: cada entrada puede llevar
source_session_id+source_rowid, auditable contra elsessions.dbde Devin mediante el almacén de solo lectura dedevin-internals— el MCP de memoria no puede verificar que una sesión fuente reclamada (o una fila de mensaje específica) haya existido alguna vez. La puerta de cuarentena también filtra cada escritura en busca de formas de secretos e inyección. - Sin Devin: sin
sessions.dbno hay procedencia de sesión que auditar — el extra desaparece. - Una frase: es un almacén de memoria que recuerda de dónde vino cada memoria — y pone en cuarentena las sospechosas hasta que un humano las libera.
Instalación
Se requiere Python ≥ 3.10; instala con uv (recomendado) o pipx.
uv tool install 'devin-memory[mcp]'
o con pipx (alternativa):
pipx install 'devin-memory[mcp]'
Para desarrollo:
pip install -e ".[dev]"
pytest
Uso
# Store a fact (screened on write; suspect content lands in quarantine)
devin-memory retain "CI is green on Windows + Linux" --tags ci,status
devin-memory retain "..." --source-session <session-id> --source-rowid <n>
devin-memory retain "..." --workspace /path/to/project # scope to a workspace
# Keyword-ranked recall — returns active entries only
devin-memory recall "ci status" [--json] [--limit 5] [--tags a,b]
# Quarantine lane: list, mark an existing entry, or release one
devin-memory quarantine # list with reasons
devin-memory quarantine <id> [--reason manual:x] # mark entry as quarantined
devin-memory quarantine --release <id> # human override -> active
# Contradictions: a conflicting retain is linked, not overwritten
devin-memory conflicts [--json] # (newer, older) pairs; resolve with
# supersede / retract / quarantine <id>
# Mine a session for durable knowledge -> proposed entries (inactive
# until reviewed); extraction is heuristic — see "Limitations"
devin-memory extract <session-id> --sessions-db path/to/sessions.db
devin-memory extract --latest --sessions-db path/to/sessions.db [--auto-approve]
devin-memory list --status proposed # review queue
devin-memory approve <id> # proposed -> active
# Context block for a UserPromptSubmit hook — active entries only,
# filtered by workspace + machine profile, bounded by ~4 chars/token
devin-memory prime [--workspace PATH] [--max-tokens N]
# Versioning and housekeeping
devin-memory supersede <id> "corrected fact"
devin-memory retract <id>
devin-memory list [--status active|proposed|quarantined|retracted] [--json]
# Audit an entry's provenance against a real sessions.db (read-only)
devin-memory verify <id> --sessions-db path/to/sessions.db
# Export active memories to a memory-MCP-compatible JSONL
devin-memory export --out memories.jsonl
Servidor MCP
devin-memory también es un servidor MCP real (stdio) — el mismo pipeline de retención/recuperación
con la puerta de cuarentena en cada escritura, invocable desde Devin,
Claude Desktop, Cursor o cualquier cliente MCP:
pipx install "devin-memory-mcp"
Configuración del cliente:
{
"mcpServers": {
"devin-memory": {
"command": "devin-memory-mcp",
"args": ["--db", "/path/to/memory.db"]
}
}
}
Herramientas: retain, recall, screen (prueba en seco de la puerta, sin escritura), list,
retract, supersede, quarantine, release, approve, conflicts,
prime, verify, extract. Cada herramienta devuelve datos estructurados o un
objeto {"error", "detail"} — nada se lanza a través del transporte.
DEVIN_MEMORY_DB funciona como alternativa a --db.
Aprende de sesiones con devin-learning
Este CLI complementario extrae lecciones candidatas de un sessions.db y escribe
borradores de habilidades revisables. No instala borradores en un espacio de trabajo por defecto.
devin-learning extract --sessions-db path/to/sessions.db --out ./learning-drafts
devin-learning review --out ./learning-drafts
# After reviewing drafts, explicitly allow output to a live skill directory:
devin-learning extract --sessions-db path/to/sessions.db --out .devin/skills --apply
review es una prueba en seco a menos que se dé --apply; review --apply mueve los borradores
rechazados bajo _rejected/. El extractor lee el contenido de la sesión, así que mantén su
salida privada hasta que se revise.
Estados de memoria
active · proposed (extraído, en espera de approve) · quarantined
(filtrado o marcado manualmente, en espera de release) · retracted (retirado o
reemplazado). Solo las entradas active aparecen en recall/prime/export —
el contenido en cuarentena nunca se imprime ni se recuerda.
Conflictos, extracción y prime (heurísticas)
- Conflictos — un
retainque da la directiva opuesta sobre el mismo sujeto normalizado que una entrada activa existente se almacena junto a ella con un enlaceconflicts_with(devin-memory conflicts). La heurística compara una "clave de sujeto" sin palabras vacías más la polaridad afirmativa/prohibitiva — deliberadamente omite contradicciones reformuladas en lugar de vincular hechos incorrectamente. extractescanea elmessage_nodesde una sesión (solo lectura mediante devin-internals) en busca de señales de conocimiento duradero — correcciones del usuario ("na verdade", "actually", "the right way"), preferencias ("always", "never", "sempre", "nunca"), comandos descubiertos (herramientas conocidas entre comillas invertidas) y rutas. Los candidatos se filtran como cualquier escritura: los limpios aterrizan enproposed, los sospechosos enquarantined.--auto-approveomite el paso de revisión.primeemite un bloque compacto# devin-memory: recalled context (heuristic)dimensionado para un gancho de prompt. Las entradas con alcanceretain --workspacesolo hacen prime dentro de ese espacio de trabajo; las entradas escritas bajo un perfil de máquina diferente nunca hacen prime (el perfil por defecto escorporate— falla cerrada).
El almacén es ./memory.db por defecto — anula con --db o
DEVIN_MEMORY_DB. Es el único almacén al que esta herramienta escribe; el
sessions.db, acp-messages/*.db y state.vscdb de Devin solo se leen.
Funciona solo con Devin (modo solo Devin)
devin-memory mantiene un almacén de memoria local (JSONL) con seguimiento de procedencia y
un carril de cuarentena — sin servicio de memoria externo, sin llamadas de red. Ambos scripts
de consola (devin-memory y devin-learning) se ejecutan solo en tu máquina.
Advertencia honesta: el filtrado en tiempo de escritura es una heurística, no una garantía — las entradas sospechosas aterrizan en cuarentena para revisión humana, así que mantén ese hábito.
Soporte de plataforma
El almacén de memoria usa una ruta SQLite local explícita y la base de datos de sesión se
proporciona con --sessions-db; no se asume ninguna ruta específica de plataforma. Windows
y Linux son compatibles y están cubiertos por CI.
Limitaciones
- La extracción es heurística y se propone por defecto.
extracteleva frases con forma de palabra clave de una sesión a una cola de revisiónproposed— nada se vuelve activo sinapprove(o--auto-approve). Para un pipeline de lecciones más rico, consultadevin-learning. - El filtro es un filtro, no una garantía. La detección de secretos basada en patrones
y las heurísticas de inyección tienen tanto falsos positivos (→ cuarentena, un
comando para liberar) como falsos negativos. Ejecuta también escáneres dedicados
(gitleaks,
devin-redact) — esto los complementa. - La clasificación de recuperación se basa en palabras clave, es determinista y está documentada — sin incrustaciones ni búsqueda semántica en M1.
- La procedencia se registra, no se autoverifica.
retainalmacena elsource_session_id/source_rowidreclamado;verifylo audita contra unsessions.dbreal después. Un actor malintencionado puede reclamar procedencia falsa — el punto es que es verificable. - Las supersesiones en cuarentena aún retiran la versión anterior. Si el
reemplazo entra en cuarentena, revisa la cola (
quarantine --release). - Distribuciones PyPI:
devin-memorypara el CLI y el extra MCP opcional;devin-memory-mcpes el paquete independiente del registro MCP.
Cuándo usar esto
- Persistes memoria de agente entre sesiones y quieres desconfianza por defecto: cada escritura filtrada, entradas sospechosas en cuarentena para liberación humana.
- Necesitas responder "¿de dónde vino esta memoria?" — las entradas llevan
source_session_id/source_rowid, auditables medianteverify. - Quieres versionado de memoria —
supersede/retractmantienen un historial en lugar de ediciones silenciosas. - Quieres mantener la compatibilidad:
exportescribe la forma de líneamemories.jsonldel MCP de memoria de Devin.
Cuándo NO usar esto
- Necesitas recuperación semántica — la clasificación se basa en palabras clave, sin incrustaciones.
- Esperas que el filtro atrape todo — es un filtro heurístico; ejecuta escáneres dedicados (gitleaks, devin-redact) junto a él.
- Esperas que
extractlea la intención — coincide con señales de palabras clave y por defecto esproposedprecisamente porque las heurísticas fallan.
Preguntas frecuentes
¿Cómo evito que la memoria del agente sea envenenada por una sesión defectuosa? Usa devin-memory retain en lugar de añadir a un almacén sin procesar. Cada escritura se filtra en busca de formas de secretos e inyección — las entradas sospechosas aterrizan en cuarentena y solo se vuelven activas después de que un humano ejecute quarantine --release <id>.
¿Puede devin-memory probar que una memoria vino de una sesión real? Sí, mediante procedencia registrada. retain --source-session <id> --source-rowid <n> almacena el origen reclamado, y devin-memory verify <id> --sessions-db <path> lo audita de solo lectura contra el sessions.db real de Devin — una fuente fabricada es verificable, no confiada silenciosamente.
¿Reemplaza devin-memory al MCP de memoria de Devin? Lo complementa. El MCP solo añade sin filtrado; devin-memory añade cuarentena, procedencia y versionado, y devin-memory export --out memories.jsonl produce la forma de línea exacta que el MCP lee.
Licencia
MIT — consulta LICENSE.