Ir al contenido

Investigación11 de octubre de 20266 min de lectura

Benchmark de Continuidad: lo que el RAG simple no hace

Un benchmark abierto para el ciclo de vida de la memoria de agentes: decisiones reemplazadas, reglas vencidas, handoffs concluidos y notas privadas. ValorBrain y un RAG vectorial simple indexan los mismos textos y la evaluación es por exact match, sin LLM juez. Primera ronda: staging, 3 runs × 42 preguntas.

Equipo ValorBrain

Los benchmarks de recall como LoCoMo, BEAM y LongMemEval preguntan si la memoria encuentra un dato. No preguntan si le entrega al agente el dato correcto en el momento correcto: la decisión vigente y no la reemplazada, la regla que sigue en vigor y no la vencida, el handoff todavía abierto y no el concluido, y solo lo que quien pregunta puede leer. Ese ciclo de vida es lo que separa la memoria de agentes de un índice vectorial. Por eso construimos un benchmark que lo mide y publicamos el harness.

Código, generador de datos, salidas crudas y comandos de reproducción: github.com/ValorBrain/valorbrain-amb/tree/main/continuity.

Escenarios

EscenarioQué se grabaQué se pregunta
Supersesión2 o 3 versiones de una decisión, cada una declara supersedes sobre la anterior. La mitad de los textos lleva fecha y "reemplaza a la anterior", la otra mitad no. Una decisión de control nunca se revisa"¿Qué código usa X ahora?"
Regla vencidaUna regla grabada como dato con clave, con valid_until hace 10 días (vencida) o dentro de 90 días (vigente), con y sin fechas en el texto"¿Está en vigor hoy? ¿Qué código permite?"
HandoffEl agente le pasa el trabajo a su próxima sesión, concluye ese handoff y deja uno más nuevo. Después también concluye el nuevo"¿Qué sigue pendiente para mí?"
PermisosAlice graba una nota privada y una decisión compartida. El agente del workspace graba una observación sin indicar visibilidadBob y Alice preguntan por cada código

Cada respuesta es un código único (o "ninguno"). La pregunta también puede listar los códigos viejos que no deben entregarse: la versión reemplazada, la regla vencida, el handoff concluido o la nota privada de otra persona.

Método

  • ValorBrain (flujo del producto): memory_prepare (MCP) al iniciar la sesión y memory_retrieve en cada pregunta, siempre con el token propio de quien pregunta.
  • Baseline: RAG vectorial simple sobre los mismos textos (bge-small-en-v1.5, coseno, top 8, un índice por workspace), más una variante con un índice por autor. La baseline ve todos los textos pero ningún metadato de ciclo de vida, y eso es justamente lo que se evalúa.
  • Juez: exact match determinístico sobre la respuesta del lector, sin LLM juez. El lector usa el mismo prompt para todos los sistemas, con temperatura 0. También evaluamos el contexto entregado: el código correcto presente y ningún código viejo o prohibido. Esa medida no depende de ningún modelo.

Primer resultado

Motor de staging af530899, 11/10/2026, dataset continuity-v1 (seed 20261011, 42 preguntas), 3 runs con workspaces nuevos, 126 respuestas por sistema. El lector servido por nuestro gateway fue longcat-2.5-preview-free.

EscenarioValorBrainRAG vectorial simpleRAG con un índice por autor
Supersesión27/2725/27—
Regla vencida36/3627/36—
Handoff27/278/27—
Permisos36/3627/3618/36
Total (respuestas correctas)126/12687/12618/36
Nota privada de otra persona en el contexto0/99/90/9
Contexto con el código correcto y sin código viejo126/12654/12618/36

Los números dicen cuatro cosas:

  • El handoff no es un problema de búsqueda. Para un embedding, el handoff concluido y el abierto se parecen. El RAG acertó 8 de 27, porque el estado vive en el handoff, no en el texto. ValorBrain entrega los handoffs pendientes al iniciar la sesión.
  • El RAG filtra o queda ciego. Con un índice compartido, la nota privada de Alice llegó a Bob 9 veces de 9. Con un índice por autor la filtración se detuvo, pero el equipo tampoco vio las decisiones compartidas ni las notas del agente (18 de 36).
  • El contexto viejo es el costo oculto. El RAG acertó muchas preguntas de supersesión porque el lector adivinó la versión más nueva. Midiendo solo el contexto, entregó la versión vieja junto con la vigente en 18 de 27 casos.
  • Las escrituras de agente quedaron internas. Las 150 escrituras hechas con credencial de agente en esta ronda se grabaron como internal: visibles para el equipo, nunca públicas.

Límites

N pequeño: 9 preguntas por variante, 3 runs. Las tablas por variante, con intervalo de 95%, están en el repositorio. También hay un dataset de referencia más grande, de 140 preguntas, ya commiteado. Llamado solo, memory_prepare todavía traía la versión superada en el bloque de recall del contexto en 18 de 27 preguntas de supersesión, y aun así el lector respondió bien. La corrección (PR #380 del motor) todavía no estaba en staging en esta ronda, y publicaremos la nueva ronda. Los escenarios los escribió nuestro equipo. Abrir el harness sirve justamente para que cualquiera pueda correrlo, modificarlo y apuntarlo a otro sistema.

Reproducir

git clone https://github.com/ValorBrain/valorbrain-amb && cd valorbrain-amb/continuity
uv run --extra test pytest -q tests
uv run continuity-bench run --dataset data/continuity-v1-n3.json --runs 3 --out results/mi-ronda
uv run continuity-bench report --results results/mi-ronda

La URL del motor, las credenciales y el endpoint del lector van en variables de entorno, descritas en el README de la suite.

Próximo paso

Menos volver a empezar. Más continuidad

Trae un proyecto real. En una conversación mapeamos dónde se pierde el contexto entre las personas y los agentes de tu equipo, y por dónde empezar.

Probar con un proyecto