feedback-memory
Recuerda por qué aprobaste, editaste o rechazaste los borradores de tu agente y añade las correcciones pasadas más cercanas antes del siguiente borrador. Servidor MCP + plugin de Claude Code, Postgres local + pgvector.
Documentación
Configuración de Agente de Autoaprendizaje
Un patrón pequeño y práctico para hacer que un agente de IA recuerde tu negocio y aprenda de cada corrección que le des. Sin necesidad de frameworks: una carpeta de archivos de marca, tu base de datos existente y una tabla de retroalimentación.
Dirijo un negocio educativo unipersonal en Corea de esta manera. Los agentes (Claude Code, Codex) redactan publicaciones y respuestas. Yo apruebo, edito o rechazo desde mi teléfono. Cada decisión va a una base de datos, y el siguiente borrador lee ese historial antes de escribir una palabra.
Este repositorio contiene el esquema mínimo y los prompts. La guía completa es una guía de campo gratuita de 23 páginas (enlace al final).
Pruébalo en un minuto
En tu navegador, sin instalación: https://ssap-pa.github.io/self-learning-agent-setup/ (Postgres + pgvector mediante PGlite y el modelo de embeddings all-MiniLM-L6-v2 mediante Transformers.js, todo ejecutándose en la pestaña, sin clave API).

Localmente:
git clone https://github.com/ssap-pa/self-learning-agent-setup
cd self-learning-agent-setup/demo
npm install
npm run demo
Inicia un Postgres en memoria (PGlite + pgvector), introduce tres días de retroalimentación para una tienda de velas ficticia (una edición, un rechazo, una aprobación simple) y luego imprime lo que el agente leería antes de sus próximos borradores. No se necesita base de datos ni clave API. npm test ejecuta las pruebas de la misma manera.
Day 3 new comment: "How long does shipping to Canada take for the lavender set?"
before drafting, the agent reads:
Feedback on similar past tasks (most similar first):
- task: "Do you ship to Canada? Love the lavender candle" -> edited to: "We do! Canada usually takes 5-7 days." (why: don't promise speed, give the real shipping time)
Day 3 new comment: "Could you gift wrap a candle for a birthday?"
before drafting, the agent reads:
Feedback on similar past tasks (most similar first):
- task: "Can you gift wrap the vanilla set for my mom?" -> rejected (why: we don't gift wrap, offer the gift note instead)
Day 3 new comment: "What wax do you use?"
before drafting, the agent reads:
(nothing yet: no feedback on anything similar)
La demo incrusta texto mediante hash de palabras, así que "similar" aquí significa palabras compartidas. Ejecuta EMBED=openai OPENAI_API_KEY=... npm run demo para usar embeddings reales, o apunta Loop a tu propio Postgres / Supabase con pg.
Úsalo en Claude Code, Cursor o Claude Desktop (servidor MCP)
feedback-memory es un pequeño servidor MCP construido sobre el mismo bucle. Tu agente llama a recall_corrections antes de redactar y a record_decision después de que apruebes, edites o rechaces. Todo vive en un Postgres local (PGlite + pgvector) en ~/.feedback-memory, así que no hay nada que alojar.
Claude Code, como plugin (la forma más fácil). Tus reglas permanentes se cargan cuando comienza una sesión (y de nuevo después de /clear o compactación), y las correcciones pasadas más cercanas se añaden a cada prompt mediante un hook, de modo que se aplican incluso cuando Claude no llama a una herramienta:
/plugin marketplace add https://github.com/ssap-pa/self-learning-agent-setup.git
/plugin install feedback-memory@ssap-pa
(La forma corta /plugin marketplace add ssap-pa/self-learning-agent-setup también funciona si tienes una clave SSH configurada para GitHub.)
En una ejecución real con el plugin, Claude no hizo llamadas a herramientas y aun así respondió a un nuevo comentario de "¿cuánto tarda el envío a Canadá?" con "Gracias por preguntar. El envío a Canadá suele tardar de 5 a 7 días hábiles para el set de lavanda.": el tiempo de envío de una edición pasada (razón: no prometas rapidez) y sin signos de exclamación, de una regla almacenada.

Claude Code, solo servidor MCP:
claude mcp add feedback-memory -- npx -y github:ssap-pa/self-learning-agent-setup
Claude Desktop, con un clic: descarga feedback-memory.mcpb y ábrelo. El campo de clave de OpenAI es opcional.
Cursor, o Claude Desktop manualmente (bajo mcpServers en el JSON de configuración):
"feedback-memory": { "command": "npx", "args": ["-y", "github:ssap-pa/self-learning-agent-setup"] }
Luego dile al agente cuándo usarlo, por ejemplo, dos líneas en CLAUDE.md / AGENTS.md:
Before drafting anything I'll review, call recall_corrections with the task and follow what comes back.
When I approve, edit or reject your draft, call record_decision with my reason.

Herramientas: recall_corrections, record_decision, add_rule (reglas permanentes que siempre vuelven primero), list_memory, forget. Establece OPENAI_API_KEY en el entorno del servidor para que coincida por significado (text-embedding-3-small); sin ello, las palabras se procesan con hash sin conexión (con derivación ligera, de modo que "shipping" coincide con "ship") y solo coinciden palabras compartidas. Una carpeta de base de datos por cliente en ejecución (establece FEEDBACK_MEMORY_DIR si ejecutas varios), así que instálalo de una sola manera, no como plugin y servidor MCP separado a la vez. npm test ejecuta una prueba de extremo a extremo sobre stdio, y npm run bundle compila el paquete de Claude Desktop.
Si ayuda, una estrella en el repositorio ayuda a que otras personas lo encuentren, y un issue sobre lo que no funcionó me ayuda a arreglarlo.
El problema
Cualquiera puede pagar por el mismo modelo que usas. Lo que nadie más puede comprar es:
- lo que tu agente sabe sobre tu negocio, y
- el registro de cada corrección que le has dado.
La mayoría de la gente da retroalimentación en el chat y la pierde. La siguiente sesión empieza desde cero, y corriges "flores impresionantes" por décima vez.
Capa 1: la capa de conocimiento (lo que sabe)

| Tipo | Ejemplo | Dónde vive |
|---|---|---|
| Constantes | Marca, voz, cliente, historia del fundador | Archivos Markdown en una carpeta brand/ |
| Variables | Precio, stock, asientos, horario | La base de datos de tu sitio, leída en vivo |
| Conocimiento amplio | Lecciones, libros electrónicos, FAQs | La misma base de datos, incrustada para búsqueda (RAG) |
Reglas que importan:
- Archivos para quién eres, base de datos para lo que es verdad ahora mismo. Los precios en un archivo de texto se vuelven obsoletos, y el agente cita la promoción del mes pasado con confianza.
- El agente solo puede decir lo que tu página de administración almacena. "Quedan 3 asientos" requiere un campo de asientos.
- Hazlo cumplir en código. Una regla que solo vive en
AGENTS.mdpuede omitirse. Los programas que se ejecutan solos deberían llamar a la base de datos y buscar directamente.
Capa 2: el bucle de aprendizaje (cómo mejora)

- Almacena cada aprobación (+1), rechazo (−1) y edición (0, con la corrección), vinculados a la ejecución que juzgan.
- Genera candidatos. La retroalimentación repetida se convierte en una regla propuesta, no activa.
- Puntúa con una rúbrica por objetivo.
- Compara el candidato contra el comportamiento actual.
- Promueve o descarta.
Además, dos detalles que hicieron que realmente funcionara para mí:
- Reglas vs. memoria. "Tu tono suena robótico" siempre aplica (regla). "Para pedidos funerarios, sin emojis" solo aplica cuando la situación coincide (memoria). Las memorias que se repiten se promueven.
- Busca retroalimentación por significado. La búsqueda por palabras clave perdía retroalimentación expresada de manera diferente. Los embeddings traen correcciones de situaciones similares.
Y la parte humana: un bot de Telegram envía cada borrador a mi teléfono con botones Aprobar / Rechazar / Editar, y los toques caen en la base de datos de aprendizaje (no solo en el registro del bot). Verifica que realmente lo hagan. El mío silenciosamente no almacenaba aprobaciones al principio.
Qué hay aquí
schema.sql: tablas de Postgres / Supabase (runs,feedbackcon embeddings de situación y razón,rules) ymatch_feedback()para búsqueda de similitud, con pgvectordemo/loop.ts: el bucle central en unas 100 líneas de TypeScript: almacena cada decisión, trae retroalimentación de tareas pasadas similares al siguiente prompt. Funciona conpgo PGlitedemo/demo.tsydemo/loop.test.ts: la demo de un minuto y las pruebasprompts.md: los prompts que uso con Claude Code / Codex para construir y verificar cada capa
Empieza pequeño
- Ejecuta un objetivo con límites bajos (el mío: 1 publicación y hasta 3 respuestas al día durante dos semanas).
- Mantén la aprobación activa hasta que no quede nada por corregir.
- Mide compras o registros, no me gusta.
Más
- ¿Lo necesitas en varias máquinas o en equipo, o aprobaciones desde tu teléfono? El plugin gratuito mantiene su memoria en una carpeta en una máquina. El Self-Learning Agent Kit ejecuta el mismo bucle en tu propio Postgres / Supabase para que cada máquina y compañero compartan una memoria, añade un bot de Telegram para aprobar / editar / rechazar desde tu teléfono (cada toque se almacena antes de que se publique nada), propone reglas a partir de razones que siguen apareciendo, e incluye versiones en Python y TypeScript de la biblioteca + CLI, un servidor MCP y su propio plugin de Claude Code cuyos hooks leen esa base de datos compartida (por significado, con embeddings de OpenAI), un ejemplo de extremo a extremo y 28 pruebas ($39): https://payhip.com/b/grc25
- ¿Prefieres video? Una lección gratuita de 22 minutos donde construyo este sistema con un agente (audio en coreano, subtítulos en inglés, sin cuenta): https://ssapable.com/courses/ai-agent?lang=en&utm_source=github&utm_medium=readme#free-preview
- Guía de campo gratuita (23 páginas, PDF): el recorrido completo con un ejemplo trabajado y un plan de 7 días: https://payhip.com/b/QHgfJ
- El libro: Just Say "Do It", un manual de 11 pasos para dirigir un negocio unipersonal con agentes de IA (edición en inglés de mi curso en coreano): https://payhip.com/b/xmZvu. Paga lo que quieras hasta el domingo 4 de octubre (hora del Pacífico de EE. UU.), y $0 está bien; si lo lees, una reseña honesta en esa página ayuda mucho.
- ¿Quieres que lo configuren alrededor de tu negocio? Plano de automatización hecho a tu medida: https://payhip.com/b/BzSRC
Texto y diagramas (este README, prompts.md, img/) © 2026 AI SSAPABLE, compartidos bajo CC BY-NC 4.0. La Licencia MIT en LICENSE cubre el código: schema.sql, demo/, docs/, mcp/, hooks/, bundle/ y .claude-plugin/.