Cómo Regenesis creó el ciclo de autorreparación de MedShift con VectorAI DB
Principales conclusiones
- Regenesis utiliza la base de datos Actian VectorAI como memoria persistente para que su agente de autorreparación pueda reconocer los fallos que ya ha solucionado.
- El agente comprueba la memoria antes de cada parche, reutilizando las soluciones verificadas para los fallos conocidos en lugar de repetir el ciclo completo de diagnóstico.
- Solo se recogen las soluciones con el resultado «éxito», lo que evita que las reparaciones fallidas vuelvan a aparecer como soluciones.
- Replay Loop QA verifica de forma independiente cada reparación antes de que memory_remember almacene la solución correcta para su uso futuro.
- Este enfoque presenta tres patrones reutilizables: detectar fallos en el índice por estructura, filtrar la memoria en la fase de recuperación y verificar cada corrección antes de almacenarla.
Esta creación se presentó originalmente en el Hackathon de Agentes Autoevolutivos
Un agente que recuerda cómo aplicó esa norma ayer cambia la forma en que se lleva a cabo la recuperación.
Ese fue el problema con el que se topó Regenesis con MedShift, una aplicación de planificación de turnos hospitalarios diseñada en torno a una plantilla clínica de 26 personas. El sistema debe respetar los plazos de certificación, los requisitos de descanso, los límites de horas extras y las normas de cobertura. Cuando se incumple alguna de esas normas, el agente debe localizar el problema, solucionarlo y asegurarse de que la solución ha funcionado realmente.
Sin memoria, el agente no tenía forma de saber si ya había detectado ese mismo fallo anteriormente. Cada nueva infracción suponía volver a empezar el diagnóstico desde cero. La misma causa raíz podía aparecer a través de un punto de entrada diferente y seguir pareciendo nueva. El sistema podía recuperarse, pero la recuperación por sí sola no bastaba. Cada incidente comenzaba desde cero.
Lai, el chino creador de Regenesis, explica qué es lo que marca la diferencia: «Actian es la memoria del agente, lo que hace que se trate de una evolución y no de un simple intento».
TL;DR
- MedShift es una solución SaaS para la planificación de turnos hospitalarios que detecta infracciones de seguridad, corrige la norma que las ha provocado y verifica cada corrección antes de su implementación.
- Actian VectorAI DBes la capa de memoria. El agente integra cada fallo como un vector, lo consulta antes de cada parche y recupera las soluciones verificadas anteriormente, en lugar de volver a realizar el diagnóstico desde cero.
- En el primer encuentro, VectorAI DB devuelve un valor de coseno igual a 0,00 y el agente ejecuta un ciclo de diagnóstico completo. En el segundo encuentro con el mismo fallo, devuelve un valor de coseno igual a 1,00 y lo resuelve en un solo paso.
- Las correcciones fallidas nunca se consideran soluciones. El filtro de recuperación se aplica cuando el resultado es «éxito», y ninguna corrección se almacena en la memoria hasta que el control de calidad del bucle de reproducción confirme que la reparación se ha mantenido.
- Hay tres patrones que se aplican a cualquier agente de autorreparación: registrar los fallos según la estructura, no según el vocabulario; filtrar la memoria en la recuperación, no en la escritura; y nunca almacenar una corrección antes de que un verificador independiente confirme que es válida.
Lo que cambió con Regenesis
Para probar el bucle, Regenesis desactivó el mecanismo de protección de certificación de MedShift. El oráculo detectó 14 infracciones reales de programación, cada una de ellas calculada a partir de la programación en tiempo real. El agente de Guild consultó la base de datos Actian VectorAI, obtuvo un resultado de coseno = 0,00 sin ningún registro previo en la memoria, tras lo cual diagnosticó el fallo desde su causa raíz, corrigió el mecanismo de protección defectuoso, verificó la reparación y almacenó la solución.
Cuando volvió a aparecer el mismo defecto, VectorAI DB devolvió un valor de coseno igual a 1,00, recuperó la solución anterior y solucionó las 14 infracciones de una sola vez.
Eso es lo que ofrece la memoria persistente, y Lai describió Medshift como «una solución SaaS de gestión de turnos que detecta, diagnostica y repara sus propios fallos de seguridad, y se vuelve más rápida cada vez que detecta uno».
Aquí es donde entra en juego Actian VectorAI DB
VectorAI DB es la capa de memoria que permite distinguir entre el reintento y la evolución.
El agente incorpora cada forma de fallo como un vector y consulta la base de datos VectorAI antes de cada parche. Cuando la consulta devuelve warm=true, el agente recupera la corrección verificada y la aplica de inmediato. Cuando vuelve warm=false, el agente considera que se trata de un fallo nuevo, diagnostica la causa raíz y solo almacena la solución una vez que el control de calidad externo haya confirmado que la reparación ha sido eficaz.
Cada punto de memoria tiene un estado que comienza como pending. El filtro de recuperación se ejecuta en outcome: "success", de modo que las soluciones fallidas quedan excluidas de los resultados de forma permanente. Sin esa memoria persistente y consultable, cada fallo parece nuevo, por muchas veces que El agente ya lo ha arreglado en otras ocasiones.
Cómo funciona el ciclo de autocuración
Regenesis ha creado un ciclo de cuatro etapas: detección, consulta de memoria, aplicación de parches y verificación externa. El oráculo pone de manifiesto la infracción. El agente de Guild consulta la base de datos de VectorAI en busca de una solución previa; si existe, recupera una reparación verificada, y si no, marca el fallo como nuevo. El parche restaura la protección dañada, y se activa el «Replay Loop QA», que es la puerta de control de calidad autónoma de Guild que valida la solución antes de que se lance nada. Cada etapa es independiente; por lo tanto, sustituir el oráculo, cambiar la puerta de control de calidad o modificar el marco del agente no requiere reconstruir las demás.

El bucle de autorreparación de MedShift. Oracle, Guild Agent, VectorAI DB, Rules Config (Genome) y Replay Loop QA como puerta de acceso externa. Las flechas muestran el ciclo completo, incluida la escritura en memoria tras la confirmación de la corrección.
El Oráculo
El oráculo es determinista y realiza comprobaciones basadas en reglas, en lugar de inferencias. Comprueba el horario en tiempo real comparándolo con una especificación inmutable que abarca los periodos de certificación, los requisitos de descanso, los límites de horas extras y los mínimos de cobertura. La especificación se aprueba una sola vez y el agente nunca la modifica. Solo la configuración de las reglas es modificable.
Esa separación es lo que hace que el bucle sea fiable. Si se sabotea la configuración de las reglas, el oráculo detecta infracciones reales en la programación en tiempo real, calculadas a partir de los datos. Tal y como indica el archivo README: «Cada error se calcula de forma genuina, nunca está programado». La demostración desactiva el control de certificación y genera 14 infracciones, cada una de ellas un conflicto de programación real en la programación en tiempo real, calculado en función de las especificaciones fijas.
La consulta de memoria
Antes de que el agente aplique ningún parche, integra la forma del fallo y consulta regenesis_memory, una colección de cosenos de 96 dimensiones en la base de datos VectorAI. La consulta se filtra por outcome: "success", excluyendo de los resultados las soluciones que no han funcionado. VectorAI DB ofrece una búsqueda por similitud vectorial en lugar de una búsqueda híbrida, por lo que Regenesis ha creado su propia capa de «Reciprocal Rank Fusion». Se ejecutan varias consultas de redes neuronales artificiales (ANN) por cada vista de defecto y la capa fusiona sus clasificaciones antes de devolver el resultado más relevante.
// lib/sponsors/actian.ts — LiveActianClient
// The agent calls search() with must: { outcome: "success" }
// so failed fixes are never surfaced as solutions.
async search(
vector: number[],
opts: { topK?: number; filter?: VectorFilter } = {},
): Promise<VectorHit[]> {
const { hits } = await this.post<{ hits: VectorHit[] }>("/api/memory/search", {
vector,
topK: opts.topK ?? 5,
filter: opts.filter,
});
return hits;
}
function fuse(rankings: VectorHit[][], topK: number): VectorHit[] {
const fused = new Map<string, { hit: VectorHit; score: number }>();
for (const ranked of rankings) {
ranked.forEach((hit, rank) => {
const prev = fused.get(hit.id);
const contribution = 1 / (RRF_K + rank + 1);
if (prev) prev.score += contribution;
else fused.set(hit.id, { hit, score: contribution });
});
}
return [...fused.values()]
.sort((a, b) => b.score - a.score)
.slice(0, topK)
.map(({ hit, score }) => ({ ...hit, score }));
}
search() devoluciones VectorHit[] ordenados por similitud coseno, de mayor a menor. cosine=0.00 es un fallo inédito. cosine=1.00 es una coincidencia exacta. El agente toma una decisión en función de la situación: aplicar la solución previa de inmediato o diagnosticar la causa raíz. El perfil del fallo recoge qué regla de seguridad se ha infringido y en qué contexto, por lo que la búsqueda se basa en el patrón y no en el vocabulario.
Eso, cosine=1.00 En el segundo intento, es donde el bucle demuestra que está aprendiendo: un paso en lugar del ciclo completo.
El parche y la puerta
La aplicación de un parche restablece la condición implicada a la política. La función de reparación asocia un hallazgo a la condición que lo generó y restablece dicha condición a su valor de especificación, gestionando cualquier tipo de fallo dentro del ámbito del oráculo.
Tras la aplicación del parche, el agente vuelve a realizar una comprobación. Una comprobación con resultado satisfactorio activa memory_remember, que expresa la incrustación del fallo como el vector y {guard, outcome: "success", generation, timesReinforced} como carga útil en la base de datos de VectorAI.
await client.upsert([{
id: pointIdFor(failureHash),
vector: embed(failureShape),
payload: {
guard,
outcome: "success",
generation,
timesReinforced: 1,
},
}]);
Una prueba fallida genera un ejemplo negativo con outcome: "failure", que el filtro de recuperación excluye de forma permanente. A continuación, el control de calidad de Replay Loop controla el despliegue, y la corrección no se implementa hasta que Replay confirme que está libre de errores. Según la visión de Lai: «El genoma es una configuración de reglas mutable; la memoria es una colección de vectores; la selección natural es un control de calidad evaluado externamente».
Un fallo compuesto es el mejor ejemplo. Una sola pulsación rompió dos protecciones diferentes y generó 27 infracciones. El agente recuperó ambos hallazgos, aplicó ambos parches, verificó una vez y guardó ambas correcciones. Analizó, razonó sobre lo que había encontrado y continuó hasta que el programa quedó limpio.
Lo que puedes aplicar de todo esto a tu propio sistema
Los agentes pueden generar soluciones. Lo que muestra Regenesis es lo que ocurre una vez que una solución ha surtido efecto. El sistema registra el fallo, almacena la solución verificada y la reconoce la próxima vez que se produzca. Esa es la diferencia entre recuperarse de un incidente y aprender de él.
Tres patrones de esta versión se pueden aplicar directamente.
| Patrón | Lo que hizo Regenesis | Qué hay que poner en práctica |
| Clasificar los errores de índice por forma, no por el vocabulario del dominio | Incrustación coseno de 96 dimensiones de la estructura de fallos, no de texto libre | Incorpora la representación estructurada de cada tipo de fallo, no las palabras utilizadas para describirlo |
| Filtrar la memoria según el resultado en el momento de la recuperación, no en el de la escritura | must: {outcome: "success"} en la consulta de recuperación |
Asigna un resultado a cada punto almacenado; aplica el filtro en el momento de la recuperación, no al escribir los datos. |
| Comprueba externamente cada pieza antes de guardarla | Replay Loop QA verifica la implementación en producción; memory_remember solo funciona con una sonda de paso |
Nunca grabes una corrección en la memoria hasta que un verificador independiente confirme que la reparación se ha mantenido. |
El tercer patrón es el que la mayoría de los sistemas omiten. Escribir una solución en la memoria antes de verificarla implica que, en la siguiente consulta, podría aparecer una solución no verificada. En MedShift, esto significa que el agente aplica una solución cuyo funcionamiento nunca ha confirmado, la almacena como correcta y repite el error en la siguiente consulta. La puerta externa es lo que hace que la memoria sea fiable.
En Regenesis, VectorAI DB proporciona la capa de memoria persistente que hace posible este bucle. Puedes ejecutarlo localmente con Docker en cuestión de minutos.
docker run -d --name vectorai -p 6573-6575:6573-6575 \
-e ACTIAN_VECTORAI_ACCEPT_EULA=YES \
-v vectorai_data:/var/lib/actian-vectorai actian/vectorai:latest
Regístrate en VectorAI DB Community Edition para empezar. Únete a la comunidad de Actian en Discord para hacer preguntas y ver lo que están creando los demás.
Esta versión se presentó originalmente en el Hack de Agentes Autoevolutivos. Puedes consultar el proyecto Regenesis en GitHub.