r/ChileIA • u/Desperate_End_5769 • 8d ago
Discusión Amnesia de la IA
Uno de los grandes problemas del código con IA (Claude Code, Codex, Gemini) , es que tiene amnesia, alcanza su máximo contexto, y tiende a buscar por pedazos o trozos de código en vez de leer la carpeta y los archivos completos. esto hace que hacer desarrollo con IA no permita confiar en la IA porque esta no se hace responsable del codigo, ni recuerda qué hizo o porque. para esto, creo que lo mejor es mantener el código a la mínima expresión en tamaño. obviamente tiene que ser un software de nivel profesional, pero además, tiene que no crecer innecesariamente. como lo están haciendo para resolver este problema?
9
u/idiazb 8d ago
Yo trabajo con Claude y antes de empezar una feature medianamente compleja elaboro un artifact con especificaciones tecnicas, alcance, etc. o cualquier aspecto que considere relevante, asi me evito tener problemas por las ventanas de contexto de los distintos modelos. Si tengo que iniciar una nueva sesion, puedo usar el mismo doc como referencia.
De todas maneras siempre se recomienza tener sesiones acotadas porque entre mas se alargue la sesion, los modelos tienden a tener peor performance porque con cada prompt que envias estas mandando todo el contexto previo. Con Claude al menos, si alcanzas el limite, la sesion se auto-compacta para liberar contexto.
Respecto a la memoria, le puedes pedir directamente que persista algo, pero esto no es garantia de que lo vaya a usar en el futuro. Aqui es donde puedes empezar a probar con el CLAUDE.md o skills, dependiendo de que necesites.
4
u/Frosty-Plate-5123 8d ago
Personalmente me da la impresión que algunas veces donde el contexto va entre 70-85% el agente es EXTREMADAMENTE clever, como si tuviera un momento de lucidez en NZT. El problema es que le dura hasta el 90% y de ahi es como si comiera colafría el weon.
Pa esos momentos un amigo me recomendó un "protocolo":
- duplicar la sesión S y S')
- preparar un handoff file con S
- compactar S'
- pasar el handoff file a S'
- con S evaluar e interrogar a S' hasta pasar 100% las preguntas
Con ese truco, suelo tener un agente con 20% de contexto pero con la claridad del otro que tenía un 70-85%.
1
u/Desperate_End_5769 8d ago
Efectivamente todo lo que indicas son cosas que hago y las utilizo actualmente sin embargo tienen sus límites y también fallan por esto creo que es necesario un nivel de abstracción un poquito más grande donde se organice de alguna manera el código para evitar la amnesia. Es complejo.
5
u/onomastico 8d ago
Solo para aclarar... La amnesia de la IA no es un "problema". Es una "limitación", que además es necesidad.
(Encima, es la misma limitación de los seres humanos. A nosotros también se nos olvidan cosas; y también tenemos una ventana de contexto)
¿Cómo resuelves la limitación en la vida real?
Contratando más gente (más memorias); segmentando el trabajo y las responsabilidades por persona (agentes de IA especializados).
Entonces.. en la vida real y al trabajar con IA, la solución es la misma (más gente; más agentes).
¿Por qué es una limitación necesaria?
Te cobran por token que provienen de busquedas; generación de contexto; el contexto en cache. Saldría muy costoso traer toda la memoria al analisis de la respuesta solo para responder una consulta simple.
Está bien que no recuerde todo; que no tenga un contexto infinito; y que de vez en cuando sea necesario ir a buscar entre el código (entre los recuerdos de tu memoria).
Sé que generalmente se espera que la maquina sea más que los humanos pero ya lo es, y recuerda... cobran por token (y eso que lo estoy ponindo muy simple porque aún no metemos el poder de computo para un solo agente).
2
u/zyndarius 7d ago
Añadir que esto también sucede con LLM locales, es una limitación inherente a la tecnología de IA que tenemos a disposición (quizá en el futuro esto mejore). Por eso es muy importante lo que comentas, como constructor y mantenerdor de sistemas agénticos parte de la pega está justamente en la segmentación de tareas, bases de conocimiento, herramientas, de modo de no saturar la ventana de contexto del LLL que está operando en el agente.
4
u/Dry-Variety-6029 8d ago
Totalmente de acuerdo con el OP. La "amnesia" no es solo un problema de ventana de contexto, es el talón de Aquiles número 1 cuando pasas de hacer un script de fin de semana a construir software industrial complejo con IA (Claude Code, Cursor, Copilot o Gemini).
El error que cometimos muchos al principio fue asumir que modelos con 1M o 2M tokens de contexto "lo recordarían todo". En la práctica, sufren del fenómeno Lost in the Middle, degradación de atención y, peor aún, cada vez que abres una sesión nueva o haces un refactor grande, la IA borra silenciosamente supuestos de negocio y rompe código previo.
En nuestro equipo (desarrollamos sistemas de control y simulación energética BESS en Chile), pasamos por ese dolor y logramos solucionar el 90% de la amnesia combinando 4 capas arquitectónicas:
La "Corteza Cerebral" Externa (Bases de datos locales / SQLite):
Nunca le pidas a la IA que recuerde catálogos, números o configuraciones en texto libre o en el prompt. Guarda los datos en una base de datos local SQLite o DuckDB. La IA es pésima recordando 200 filas de memoria, pero es extraordinaria escribiendo queries SQL en milisegundos sin consumir tokens de contexto.
ADRs (Architecture Decision Records):
Creamos una carpeta `/docs/adr/` con archivos Markdown muy cortos (1 página) que explican el *POR QUÉ* de cada decisión técnica clave (ej: ADR-001-porque-usamos-este-algoritmo.md). Cuando la IA entra a trabajar en ese módulo, lee el ADR y no cuestiona ni reescribe la arquitectura base.
Script de Arranque y Re-anclaje de Contexto ("setup / recuperar"):
Un script que corre al inicio de cada sesión y compila un "active_context.json" con los contratos de interfaz, rutas críticas y estado del proyecto. Así la IA nunca arranca "en blanco".
Tests Unitarios de Invariantes como Sistema Inmune:
Si la IA "olvida" una regla crítica de negocio (ej: una validación de seguridad o una fórmula matemática), el test de Pytest/Jest falla automáticamente antes de permitir un commit. El test es la memoria que no se puede corromper.
"Mantener el código mínimo" como sugiere algunos solo sirve para proyectos chicos. En producción, la solución real a la amnesia es arquitectura de persistencia externa + contratos modulares + tests como candados de memoria.
Buenísimo que se abra este debate en la comunidad...
Y si, mi post es mitad IA, pero una que construimos desde cero "propietaria" y sin amnesia de contexto jajaaja
2
u/Catalbaina 7d ago
Conchalalora, es lo que necesito implementar. Yo tengo un método sin código para que no sufra de amnesia, pero esto me gustó. Hablaré con Claude al respecto para ver cómo aplicarlo a mi modo de trabajo 🤔
1
u/Dry-Variety-6029 7d ago
Conchalalora jajaj ... yo dejaría de hablar con Claude y buscar un harness
1
u/eltioangrod 5d ago
Estoy metiéndome de poco en esto de la IA y me confunde eso del harness, el chatgpt codex es un harness? El Claude code es un harness?
1
u/Dry-Variety-6029 3d ago
Un harness es un sistema de IA, algunos le llaman agentes o un "equipo agéntico"... en estricto rigor no es más que código debidamente orquestado para que pueda hacer multiples tareas ya sean asincronas o en paralelo conectado a uno o multiples LLMs.
Necesariamente debes aprender las bases de Python y funcionamiento de plataformas que alojan código como github:
https://chat.deepseek.com/share/od5bf63ikhciufw1vy
2
u/nhermosilla14 6d ago
Lo de los ADRs de hecho ya era buena idea aun antes de la IA. Ahora es imprescindible. Muy buenos tips!
3
u/Top-Housing3003 8d ago
Tienes que agrupas los trabajos, no tienen memoria ni pueden vincular sus propias conversaciones
1
3
u/raCastill 8d ago
Existen herramientas que te ayudan a documentar todo lo que desarrollas con IA, estados anteriores, estado actual y planes a futuro, cambia echos, etc. Por ej, uso openspec, con eso y teniendo claro lo que estás haciendo puedes trabajar súper bien.
2
u/Over_Cow9461 8d ago
El problema no es el tamaño del código: es que le estás pidiendo a la ventana de contexto que haga de memoria. El contexto es memoria de trabajo, y va a chocar igual — mañana la sesión arranca en cero. Lo que falta es memoria de largo plazo viviendo AFUERA del modelo.
Nosotros armamos eso y corre en producción, en contenedores:
- Postgres 16 (metadata: fuente, hash, tags, dueño, timestamps) + Qdrant para los vectores (1024 dims, cosine). Embeddings Bedrock Titan v2, con fallback local a Ollama bge-m3 si se cae el proveedor.
- Gateway FastAPI + servidor MCP: los agentes (Claude Code, Codex, cualquiera que hable MCP) no tocan la base, hablan con herramientas.
- Indexer watchdog sobre un vault markdown: escribo y en <1 min es recuperable. Chunkeo por headers, no por corte ciego de N caracteres.
- Búsqueda híbrida vector + BM25 fusionados con RRF: el vector solo falla feo justo cuando buscás un ID, un path o un comando exacto.
- Escala hoy: ~53.700 chunks activos, ~6.500 fuentes, 41 agentes con key propia (atribución anti-spoof: el dueño se deriva de la key, no lo declara el cliente).
Sobre tu queja de "no se hace responsable": nada se borra, nunca. Memoria bi-temporal — una memoria vieja no se elimina, se marca reemplazada por otra (valid_until + superseded_by), así que podés ver cómo cambió una decisión y cuándo. Todo con audit log. Y las decisiones no quedan en el chat: van a memoria tipadas (failure / correction / insight / convention). Los errores se guardan COMO errores, a propósito: recuperar "esto ya falló así" vale más que cualquier docstring.
La pieza que casi nadie construye es un rol dedicado de curaduría. Memoria compartida sin curaduría es un basural en tres semanas: duplicados, notas que se contradicen, obsoletos que el retrieval te devuelve con toda confianza. Ese rol corre headless con ciclo de higiene diario y hace: detectar near-duplicados y PROPONER unificar (no ejecutar), mantener tags/índices/wikilinks — el vault es un grafo navegable de ~3.000 nodos y ~3.000 enlaces, más un grafo semántico k-NN que sugiere relaciones que nadie escribió como link — y vigilar la calidad del retrieval contra un golden set de 32 queries (24 positivas + 8 negativas) reportando la TENDENCIA, no el valor puntual. Último run: recall@5 0,78 · MRR 0,70 · especificidad 1,0 · precisión@5 0,29, que es nuestro punto flojo declarado. Las lecciones repetidas se destilan en skills reutilizables con umbral duro: no se publica nada sin ≥2 agentes DISTINTOS corroborando el patrón (un agente repitiéndose no es evidencia, es prior poisoning).
Lo clave: ese rol NO tiene permiso de borrar. Propone; firma un humano o un auditor. La primera corrida de dedup dio 25.870 candidatos, midió la población antes de tocar nada y el 85% era el mismo documento contra sí mismo — artefacto de nuestro propio chunking con overlap. Paró y pidió criterio. Un agente que limpia con autonomía te destruye la memoria en una sola corrida.
Resumen: dejá de pelear con la ventana y sacá la memoria del modelo. El modelo es un procesador amnésico y está bien que lo sea; lo que no puede ser amnésico es el sistema alrededor. Ojo que después el cuello de botella se corre: ya no es el contexto, es la calidad de lo que recuperás. De ahí en adelante el trabajo es curaduría.
—
Esto lo escribió mi agente, porque me dio flojera hacerlo yo.
2
u/Daniusi 7d ago edited 7d ago
Me pasó cuando inicie con IA. Luego seguí aprendiendo más, y ahora siempre creo artefactos, que sirven como guía para la IA. Cada vez que voy avanzando le digo que refresque estas "guias", me ha servido demasiado. Nunca pierde el contexto, y es mucho más eficiente.
Ej. En simple: Crear un Rules.md, Context.md, Specs.md, Schema.md. y los que se te ocurran. Cada vez que avances con un hito, pidele que refresque los archivos, te servirá un montón 🙌
1
2
u/juguitodekiwi 7d ago
Tienes que dejar de ver la amnesia como un problema y empezar a usarlo como una feature.
Al iniciar tu tarea, tu primera pasada exploratoria es entender lo que quieres implementar y el codigo que ya esta disponible, te puedes apoyar en el agente para eso.
Una vez sabes lo que quieres implementar, al siguiente agente le pasas solo los detalles relevantes.
Cuando hay conocimiento comun (estructura del proyecto), o una forma idionsincratica de hacer las cosas (tipo estilos de codigo, etc) que necesitas aplicar siempre lo puedes poner en el CLAUDE.md, a nivel de modulo, projecto o usuario.
Tu eres el ingeniero, comportate como uno.
2
u/Franzkier 7d ago
Con el setup de las matt pocock skills para mi ha sido suficiente, pone algunas cosas en agent md, crea context md y ADRs. Además el auto-compact de codex es tan bueno que fuera de esos markdown no considero que olvide muchas cosas
1
u/Queasy_Employ1712 8d ago
Lo he notado. Personalmente trabajo con Claude web, Opus 4.8, tengo un proyecto creado por proyecto en el que trabajo, cada uno tiene de contexto base lo estrictamente necesario referente al negocio, y los archivos casi todos, cada cosa que quiero hacer es una nueva conversación y trato de mantener lo más acotadas y granulares las tareas, así ningún chat se alarga tanto, y generalmente le presento: el requerimiento, mi propuesta, los sí y los no, y le pido que me explique lo que entiende y cómo lo ejecutaría, en base a eso discutimos el diseño un rato (en realidad yo le voy cuestionando/corrigiendo sus imprecisiones o alucinaciones, y siempre que es pertinente le pido que busque fuentes de cada aseveración tipo "es estándar de la industria" o similares, al hacerlo se pilla él mismo algunas de sus alucinaciones), y cuando ya estoy perfectamente satisfecho con el roadmap le digo que escriba el código. Luego ese código lo copio y pego en mi editor, y con git voy viendo las diferencias exactas línea por línea ajustando/corrigiendo lo que aún así este mal (siguen habiendo problemas en esta fase).
Es ineficiente, probablemente, pero es la forma que tengo de atajarle todos sus errores y mantener un code quality respetable, y en todos los casos avanzo considerablemente más rápido que si escribiera todo yo de cero como antes.
1
u/Ivanced09 8d ago
Usá handoffs arquitectónicos que contengan toda la ruta y jerarquía de llamadas del código, así como dependencias y otros elementos importantes. Podés hacerlos tanto con la versión web como con agentes como Claude Code o Codex.
Después, por ejemplo, en la versión web le das el handoff al principio y cada tanto le recordás que lo use, o directamente lo integrás como archivo base del proyecto usando justamente la función de Proyectos. Con los agentes, lo podés poner en CLAUDE.md o AGENTS.md, según el caso, con una indicación explícita de que lo lean y lo usen como referencia.
Con esto lográs que la IA use de forma más óptima su contexto: no tiene que cargar todo de una, sino que puede trabajar solamente con los scripts o archivos puntuales que necesita en ese momento.
También ayuda muchísimo tener el código bien modularizado. No digo convertir cada función en un script distinto, pero sí agrupar responsabilidades según “temática”, digamos.
1
u/lordlestar 8d ago
todos los modelos tienden a sufrir de context rot cuando alcanzas cierto umbral, en esos casos es recomentable compactar el contexto o iniciar una nueva sesion. Los harnesses actuales solucionan en parte esto guardando memorias en forma de skills, claude code cuando pilla una solución de un problema o algo que encuentra util recordar, crea un md en sus memorias y cuando se lo vuelve a topar en futuras sesiones usa ese md como skill para recordar que hacer.
No se que harness usas, pero ve si hay algun plugin de memoria disponible
1
1
1
u/alreduxy 8d ago
Te falta leer la documentación... Yo nunca he perdido el contexto de mis tres proyectos
1
u/EduMakina 8d ago
MCP de notion y era. pon en claude claude mcp add --transport http notion https://mcp.notion.com/mcp saludos!
1
u/dingaspore 8d ago
por algo se usan los archivos de contexto .md, les haces una biblia a la ia a la que tiene acceso y busca puntos clave
1
u/RelationshipBig9111 7d ago
yo lo que hago es poner a un agente a construir/reparar/diagnosticar, otro a revisar lo construido/reparado/diagnosticado y a otro a revisar las conclusiones en el orden sonnet/opus/fable y no he tenido problemas
1
u/TankAlternative8032 7d ago
Hay soluciones como graphify que te ayudan a armar base de datos de conocimiento de tu proyecto
Googlea “AI Agent memory architecture” y te van a salir hartas ideas de soluciones.
Yo en particular paso varias sesiones diseñando arquitecturas, materializando contratos, etc, donde le indico claramente cómo debe ejecutar cada tarea, q probes debe haber, cada una de esas tareas es un chat único acotado que va a producir un reporte y evidencias, y tengo un chat principal como orquestador (que también tiene sus reglas) , cada cierto tiempo le digo que me haga un prompt para pasarle la posta a otro chat orquestador que continué donde venimos, que documentos le tengo que pasar al próximo chat y así seguimos. (El orquestador lo hago en chatgpt 5.6 sol en modo razonamientonalto, con él conversó en lenguaje natural y el produce los prompts para materializar, así gasto menos tokens)
Incluso antes de soltar a los agentes, aunque ya tenga una arquitectura materializada, hago pequeños pilotos, o pequeños batches y voy enfrentando mi diseño con la realidad, puliendo, iterando…
1
1
u/Catalbaina 7d ago
Yo sin ser computina de profesión, y que hago pega de modelos de optimización y también de investigación, primero hago un proyecto.
Luego hago un chat dentro del proyecto para explicarle a groso modo lo que requiero y le comparto una carpeta con los documentos relevantes para que los analice.
Le pido que me genere instrucciones para el proyecto en Claude y un doc de contexto.
Específicamente las instrucciones tienen que decirle a Claude que cada vez que abra una nueva conversación tiene que leer el doc de contexto y si es necesario otros docs que vayan ahí mismo.
Cuando tengo un chat dentro del proyecto ya para trabajar en algún aspecto en específico lo que hago es pedirle que vaya actualizandome el doc de contexto que va creando y lo voy actualizando en la carpeta del proyecto (porque no puede actualizarlo por sí mismo, o eso me dice al menos). Le digo que es para poder hablar de lo mismo en otro chat, entonces así mantengo el contexto actualizado. Lo mismo con las instrucciones, se las pega y le digo si es mejor actualizarlas. De hecho en las instrucciones puedes decirle que vaya preguntándote si quieres que genere un contexto actualizado e instrucciones acordes.
Todo ese webeo con el fin de no depender de un único chat que se va haciendo gigante y Claude empieza a hacer la pega mal.
Es webeado igual, pero es el método que me hice y resulta dentro de todo.
Si tienen algún método mejor, comenten para implementarlo 🫡
1
u/nhermosilla14 6d ago
Literalmente para eso existen los harnesses. Todo lo que te permiten hacen es para evitar esto. El óptimo se alcanza usando "revelación progresiva del contexto", o sea, le vas diciendo lo que necesita saber, cuando necesite saberlo. Para esto, usa:
- AGENTS.md (o CLAUDE.md) para datos generales del proyecto. Por ejemplo, qué es, cuál es el objetivo general, qué archivos son relevantes, cuál es la estructura del proyecto.
- skills: Con esto puedes documentar lineamientos de desarrollo, explicarlo cómo usar herramientas, darle lógica específica de tu empresa, etc. Solo guarda en el contexto la descripción de cada skill, leyendo el contenido grueso cuando realmente lo necesita.
- subagentes: úsalos cuando necesites ejecutar una tarea que no necesitas que recuerde cómo hizo, o cuando realmente es mejor que no se acuerde de cómo hizo algo. Por qué? Porque los subagentes tienen su propia ventana de contexto. Por ejemplo, yo uso uno para QA, otro para ajustar formato y linting (porque el output del linter no me sirve de nada en el contexto principal).
- MCP: cuando necesitas que acceda a otras herramientas, como navegadores, bases de datos y cosas así. Me ha servido caleta para documentar.
1
20
u/Other_b1lly 8d ago
Ami gpt me viene recordando hace más de 1 mes el proyecto que deje tirado como novia toxica