Saltar al contenido
Menú

Producto

Soluciones

Integraciones

Desarrolladores

Idioma

Producto

Más cosas que puedes hacer

Los traspasos y la búsqueda son el uso diario. Esto es lo demás que puede hacer por ti una memoria que vive en un solo servidor, desde pasar trabajo entre proyectos hasta mantener la memoria de un cliente separada de la de otro.

Un agente le pide algo al agente de otro proyecto

Dos repositorios que se hablan por una API, cada uno con su agente y su memoria. El agente del frontend conoce el protocolo. En vez de leer el repositorio entero de la API, escribe una petición completa y la deja en la bandeja de entrada de ese proyecto.

Diagrama: un agente del proyecto A envía una petición sellada a través del servidor de memoria a la bandeja de entrada del proyecto B, donde un agente la reclama una sola vez y lee una especificación de API. Un muro entre los proyectos marca que no se comparte contexto, y el mensaje recibido se trata como entrada no confiable.
Solo cruza el sobre. El proyecto A nunca lee los archivos del proyecto B, y el proyecto B nunca lee los del A.

Cómo se ve

  1. En el repositorio del frontend

    > Pídele al agente de default/api que añada un endpoint /v1/export que envíe NDJSON en streaming, que mantenga el middleware de auth actual, y mándaselo por ai-memory.

    El agente llama a memory_message_send con un cuerpo autocontenido. La petición tiene que sostenerse sola, porque quien la lee no ve este proyecto.

  2. Más tarde, en el repositorio de la API

    📬 ai-memory: 1 mensaje de otro proyecto esperando en la bandeja de entrada de este proyecto.

    > Revisa mi bandeja de entrada de ai-memory.

    El agente llama a memory_message_pop, recibe la petición con quién la envió y trabaja a partir de ella. Un segundo pop no devuelve nada.

desde la terminal
# Enviar desde el proyecto actual
ai-memory message send --to-workspace default --to-project api \
    --subject "export endpoint" "Add a /v1/export endpoint that streams NDJSON…"

# En el otro proyecto: listar sin consumir, o reclamar el más antiguo
ai-memory message list
ai-memory message pop

# Cambiar de idea antes de que lo reclamen
ai-memory message cancel --id <message-id>

La guía de mensajería

  • Dirigido a un proyecto

    Un mensaje va a un workspace y un proyecto, y cualquier sesión de ese proyecto puede reclamarlo. Una vez reclamado, desaparece de la cola, como un traspaso.

  • Nada entra al contexto por sí solo

    El aviso al arrancar la sesión solo lleva un recuento. El texto del mensaje llega al agente con un pop deliberado, delimitado y marcado como no confiable, con el remitente fuera de la delimitación.

  • Falla cerrado

    El proyecto destinatario tiene que existir, así que una errata se rechaza en vez de caer en una bandeja que nadie lee. Cada bandeja admite como máximo 256 mensajes pendientes.

  • Se puede retirar, queda auditado

    El remitente puede cancelar un mensaje hasta que alguien lo reclama. Los secretos se limpian al enviar, el cuerpo tiene un tamaño máximo y en un servidor compartido cada mensaje registra quién lo envió.

Separa clientes, monorepos y trabajo personal

La memoria se archiva por workspace y proyecto. Un checkout con un remoto de git se archiva por ese remoto, así que el mismo repositorio clonado dos veces comparte una memoria, y una carpeta sin remoto usa su nombre. Un archivo pequeño cambia el resto.

Diagrama: tres carpetas, cada una con un marcador .ai-memory.toml, se asignan a workspaces separados dentro de un mismo servidor de memoria. Un workspace contiene un monorepo cuyos directorios comparten un proyecto. A un lado hay una página de reglas fijada, una nota que caduca el viernes y una página con feedback.
Un servidor, estantes separados. El archivo marcador decide en qué estante cae un directorio.
  • Un workspace por cliente

    Deja un .ai-memory.toml en ~/work/client-a/ y todos los repositorios que cuelgan de ahí se archivan en ese workspace. Nada del cliente A aparece mientras trabajas para el cliente B.

  • Un monorepo como un solo proyecto

    Un marcador que nombra un proyecto fija todos los subdirectorios a él, así que los paquetes comparten una memoria. Omite el proyecto y cada paquete conserva la suya.

  • Worktrees de git

    Los worktrees enlazados se resuelven al repositorio principal, así que una rama con checkout en otro sitio conserva la misma memoria.

  • Dos agentes en un proyecto

    El puntero de proyecto actual está aislado por cada llamador, así que Claude Code y Codex pueden correr a la vez en el mismo directorio sin confundirse entre sí.

  • Un portátil, dos empleadores

    Registra cada servidor con ai-memory server add y nómbralo en el marcador con server = "team-b". Los hooks de ese árbol van ahí y a ningún otro sitio, y un nombre que no se resuelve no envía nada.

  • Fija una identidad

    identity = "acme/platform" archiva un checkout bajo esa clave donde sea que viva, incluso sin remoto.

.ai-memory.toml en ~/work/client-a/
# Todos los repositorios bajo este directorio se archivan en el workspace client-a
workspace = "client-a"

La guía del archivo marcador

Reglas que llegan a todas las sesiones

Dile al agente que recuerde algo de forma permanente y se convierte en una página de la wiki. Las reglas se archivan aparte de los hechos, y el resumen de sesión puede ponerlas delante del agente antes del primer prompt.

  • Dilo una vez

    “Recuerda: antes de tocar el código de pagos, lee las notas de PCI.” El agente escribe una página duradera. Pídela como regla global y se aplica a todos tus proyectos.

  • El resumen las trae

    Con inject_on_session_start = true en el archivo marcador del proyecto, las páginas fijadas, las reglas y los espacios se anteponen al contexto de cada sesión nueva.

  • El lint sugiere promoverlas

    Cuando una regla parece bastante duradera, memory_lint sugiere copiarla a CLAUDE.md o AGENTS.md. ai-memory nunca edita esos archivos por su cuenta.

  • Los registros de decisiones siguen siendo tuyos

    ai-memory nunca escribe en tu repositorio. Mantén un directorio de ADR y ponlo en [capture] ignore_paths para que la wiki no guarde una copia obsoleta.

.ai-memory.toml
# Anteponer páginas fijadas, reglas y espacios a cada sesión
[briefing]
inject_on_session_start = true

Notas que caducan y feedback que reordena

  • Recuerda esto hasta el viernes

    Una página escrita con expires_at sale de la búsqueda después de esa fecha. Sigue ahí para una búsqueda que pida páginas caducadas.

  • Esa página estaba mal

    memory_feedback registra en una página si fue útil, no útil, obsoleta o incorrecta. Obsoleta e incorrecta la bajan en los próximos rankings y aceleran su envejecimiento. El feedback nunca borra nada.

  • Mover una sesión

    Una sesión capturada en el proyecto equivocado, tras un cd a un directorio temporal, se puede reasignar con ai-memory move-session. Sus observaciones y su página se mueven con ella.

  • Recuperarse de una compactación

    Cuando Claude Code o Codex compactan su contexto, un hook escribe antes una página de sesión nueva, para que se pueda recordar lo que la compactación dejó fuera.

Léelo en el navegador, llévatelo a donde quieras

  • Una interfaz web de solo lectura

    Arranca el servidor con --enable-web y las páginas de todos los proyectos se pueden navegar, agrupadas en conceptos, decisiones, gotchas y sesiones, con una API JSON en /api/v1.

  • Un formato abierto

    Cada proyecto es un bundle de Open Knowledge Format. ai-memory export-okf lo empaqueta para cualquier herramienta que lea OKF, y para todo lo demás los archivos son markdown plano.

  • Skills para tu agente

    ai-memory install-mcp instala también un fragmento corto de enrutamiento y Agent Skills gestionadas, para que el agente sepa qué herramienta responde a “¿hemos hablado de esto?” y cuál envía mensajes.

Tareas que asume el lanzador

ai-memory run arranca el agente a través del servidor de memoria. También mantiene el binario al día, cierra las sesiones y avisa antes de desarmar nada.

Diagrama: una terminal ejecutando ai-memory run en el centro. Alrededor: un sandbox que el lanzador ofrece antes de desarmar los avisos de seguridad, una descarga con un checksum para la autoactualización, una página de sesión que se cierra cuando el agente sale, y un inicio de sesión de navegador para la interfaz web.
Un comando en el medio. El resto pasa alrededor sin una segunda herramienta.
  • Actualiza con un solo comando

    ai-memory upgrade descarga la versión correspondiente, comprueba el checksum, cambia el binario y renueva los hooks. Las instalaciones de Docker, Homebrew, AUR y RPM siguen su propia ruta.

  • Un aviso antes de quitar los guardarraíles

    ai-memory run --yolo dice qué está a punto de desarmar y, en Linux y macOS con ai-jail disponible, ofrece volver a ejecutar la sesión dentro del sandbox con un checklist de lo que el jail puede ver. --jail entra directo con valores predeterminados razonables.

    ai-jail en GitHub
  • Entorno para el harness

    --env KEY=VALUE y --env-file llegan tanto al agente lanzado como a la búsqueda de sesión propia de ai-memory, así que un CLAUDE_CONFIG_DIR por cuenta no necesita ningún script wrapper.

  • Las sesiones se cierran al salir

    Los agentes sin hook de fin de sesión (Command Code, Kiro CLI, Antigravity CLI) reciben su resumen y su traspaso cuando el lanzador sale. finalize-session --reopen cubre una conversación que continuó después.

  • Inicia sesión en la interfaz web

    La wiki integrada tiene páginas de inicio de sesión y de cambio de contraseña para los usuarios con contraseña, y una página solo para root donde aprobar o rechazar propuestas pendientes de auto-mejora en todos los proyectos.

  • Stopwords en tu idioma

    [search.fts] stopwords enumera las palabras funcionales de tu idioma, para que el ranking de búsqueda de texto completo en una wiki en portugués no se desvíe por de y que.

Preguntas y respuestas

¿Puede un agente de un proyecto leer la memoria de otro?

No. La memoria se archiva por proyecto, y la mensajería es el único cruce deliberado: un proyecto solo ve los mensajes dirigidos a él o enviados por él. El cuerpo del mensaje tiene que ser autocontenido porque quien lo lee no ve los archivos del remitente.

¿Un mensaje recibido se trata como instrucciones?

No. Un mensaje sacado con pop va delimitado como entrada no confiable de otro proyecto y lleva un aviso que lo dice. El agente lo evalúa contigo como una petición de tarea, y el remitente aparece fuera de la delimitación para que puedas juzgar primero si te fías.

¿Qué pasa si dos sesiones revisan la misma bandeja?

El primer pop reclama el mensaje y el segundo no recibe nada. Un mensaje se reclama exactamente una vez, la misma regla que siguen los traspasos.

¿Tengo que configurar workspaces?

No. Sin archivo marcador, todo se archiva en un workspace llamado default, con el remoto de git como proyecto, o el nombre del directorio cuando no lo hay. Añade .ai-memory.toml solo cuando quieras separar clientes, tratar un monorepo como un solo proyecto, mantener aparte la memoria del trabajo y la personal, o usar un segundo servidor.

Dale memoria a tus agentes hoy.

Gratis y de código abierto bajo la licencia MIT. No necesitas cuenta ni clave de API.