Skip to content

Alcance y Ciclo de Vida de la Memoria: Gestión de tu Cerebro Digital

Lo que podrás hacer al terminar

  • Distinguir alcances: Entender qué memorias son "que te siguen" (entre proyectos) y cuáles son "que siguen al proyecto" (específicas del proyecto).
  • Gestionar memoria: Aprender a ver manualmente, agregar y eliminar memorias, manteniendo la cognición del Agent limpia.
  • Depurar el Agent: Cuando el Agent "recuerda" incorrectamente, saber dónde corregir.

Idea Central

opencode-supermemory divide la memoria en dos alcances (Scope) aislados, similar a las variables globales y locales en lenguajes de programación.

1. Dos alcances

AlcanceIdentificador (Scope ID)Ciclo de vidaCaso de uso típico
User Scope
(Alcance de usuario)
userTe sigue permanentemente
Compartido entre todos los proyectos
• Preferencias de estilo de codificación (ej: "prefiere TypeScript")
• Hábitos personales (ej: "siempre escribe comentarios")
• Conocimiento general
Project Scope
(Alcance del proyecto)
projectSolo para el proyecto actual
Deja de funcionar al cambiar de directorio
• Diseño de arquitectura del proyecto
• Explicación de lógica de negocio
• Solución para Bug específico

¿Cómo se generan los alcances?

El plugin genera automáticamente etiquetas únicas a través de src/services/tags.ts:

  • User Scope: Basado en hash de tu correo de Git (opencode_user_{hash}).
  • Project Scope: Basado en hash de la ruta del proyecto actual (opencode_project_{hash}).

2. Ciclo de vida de la memoria

  1. Crear (Add): Escrito a través de inicialización CLI o conversación con Agent (Remember this...).
  2. Activar (Inject): Al iniciar cada nueva sesión, el plugin extrae automáticamente memorias User y Project relevantes y las inyecta en el contexto.
  3. Buscar (Search): El Agent puede buscar activamente memorias específicas durante la conversación.
  4. Olvidar (Forget): Cuando la memoria está obsoleta o es incorrecta, elimínala por ID.

Sígueme: gestiona tu memoria

A través de la conversación con el Agent, gestionaremos manualmente memorias de ambos alcances.

Paso 1: Ver memorias existentes

Primero, ve qué recuerda el Agent ahora.

Operación: En el cuadro de chat de OpenCode, ingresa:

text
Por favor lista todas las memorias del proyecto actual (List memories in project scope)

Deberías ver: El Agent llama al modo list de la herramienta supermemory y devuelve una lista:

json
// Ejemplo de salida
{
  "success": true,
  "scope": "project",
  "count": 3,
  "memories": [
    {
      "id": "mem_123456",
      "content": "El proyecto usa arquitectura MVC, la capa Service es responsable de la lógica de negocio",
      "createdAt": "2023-10-01T10:00:00Z"
    }
    // ...
  ]
}

Paso 2: Agregar memoria entre proyectos (User Scope)

Supongamos que deseas que el Agent responda en chino en todos los proyectos. Esta es una memoria adecuada para User Scope.

Operación: Ingresa la siguiente instrucción:

text
Por favor recuerda mi preferencia personal: sin importar en qué proyecto, siempre respóndeme en chino.
Por favor guárdalo en User Scope.

Deberías ver: El Agent llama la herramienta add, parámetro scope: "user":

json
{
  "mode": "add",
  "content": "User prefers responses in Chinese across all projects",
  "scope": "user",
  "type": "preference"
}

El sistema confirma que la memoria se agregó y devuelve un id.

Paso 3: Agregar memoria específica del proyecto (Project Scope)

Ahora, agreguemos una regla específica para el proyecto actual.

Operación: Ingresa la siguiente instrucción:

text
Por favor recuerda: en este proyecto, todos los formatos de fecha deben ser YYYY-MM-DD.
Guardar en Project Scope.

Deberías ver: El Agent llama la herramienta add, parámetro scope: "project" (este es el valor predeterminado, el Agent puede omitirlo):

json
{
  "mode": "add",
  "content": "Date format must be YYYY-MM-DD in this project",
  "scope": "project",
  "type": "project-config"
}

Paso 4: Verificar aislamiento

Para verificar si el alcance está en efecto, podemos intentar buscar.

Operación: Ingresa:

text
Buscar memorias sobre "formato de fecha"

Deberías ver: El Agent llama la herramienta search. Si especifica scope: "project" o realiza búsqueda mixta, debería poder encontrar esa memoria.

Verificar capacidad entre proyectos

Si abres una nueva ventana de terminal, entras a un directorio de proyecto diferente, y preguntas nuevamente sobre "formato de fecha", el Agent debería no encontrar esa memoria (porque está aislada en el Project Scope del proyecto original). Pero si preguntas "qué idioma prefiero para respuestas", debería poder recuperar la preferencia "responder en chino" del User Scope.

Paso 5: Eliminar memoria obsoleta

Si las normas del proyecto cambian, necesitamos eliminar la memoria antigua.

Operación:

  1. Primero ejecuta el Paso 1 para obtener el ID de la memoria (ej: mem_987654).
  2. Ingresa la instrucción:
text
Por favor olvida la memoria con ID mem_987654 sobre el formato de fecha.

Deberías ver: El Agent llama la herramienta forget:

json
{
  "mode": "forget",
  "memoryId": "mem_987654"
}

El sistema devuelve success: true.


Preguntas frecuentes (FAQ)

Q: Si cambio de computadora, ¿las memorias de User Scope siguen ahí?

A: Depende de tu configuración de Git. User Scope se genera basado en git config user.email. Si usas el mismo correo de Git en dos computadoras y te conectas a la misma cuenta de Supermemory (usando la misma API Key), entonces las memorias están sincronizadas.

Q: ¿Por qué no puedo ver la memoria que acabo de agregar?

A: Puede ser caché o retraso de indexación. La indexación vectorial de Supermemory suele ser de nivel de segundo, pero puede haber un breve retraso en fluctuaciones de red. Además, el contexto que el Agent inyecta al inicio de la sesión es estático (instantánea), las memorias recién agregadas pueden necesitar reiniciar la sesión (/clear o reiniciar OpenCode) para entrar en vigor en "inyección automática", pero se pueden encontrar inmediatamente a través de la herramienta search.


Apéndice: Referencia del código fuente

Clic para expandir y ver ubicación del código fuente

Fecha de actualización: 2026-01-23

FunciónRuta del archivoNúmero de línea
Lógica de generación de Scopesrc/services/tags.ts18-36
Definición de herramientas de memoriasrc/index.ts183-485
Definición de tipos de memoriasrc/types/index.ts-
Implementación del clientesrc/services/client.ts23-182

Funciones clave:

  • getUserTag(): Genera etiqueta de usuario basada en correo de Git
  • getProjectTag(): Genera etiqueta de proyecto basada en ruta de directorio
  • supermemoryClient.addMemory(): Llamada API para agregar memoria
  • supermemoryClient.deleteMemory(): Llamada API para eliminar memoria

Próxima lección

En la siguiente lección aprenderemos Principio de Compresión Preventiva.

Aprenderás:

  • Por qué el Agent "pierde memoria" (desbordamiento de contexto)
  • Cómo el plugin detecta automáticamente la tasa de uso de Tokens
  • Cómo comprimir sesiones sin perder información clave