BookinglyTech News
Software

Foremerge intenta resolver el cuelgue de cuello de botella al coordinar múltiples agentes de IA

La herramienta open source actúa como árbitro semántico para detectar conflictos entre agentes antes de que el código se escriba.

2 min de lecturaDev.to0 vistas

Dos agentes de IA trabajando en paralelo sobre el mismo repositorio pueden generar un desastre silencioso. El primero sustituye la clase PaymentService por una implementación específica de Stripe. El segundo añade soporte para PayPal a esa misma clase. Git fusiona ambas ramas sin conflicto porque tocan líneas diferentes, pero el diseño queda roto: el segundo agente construyó sobre un punto de extensión que el primero eliminó. Ninguna capa de la pila actual lo detecta, porque Git compara diffs y no intenciones. Este es el problema que intenta resolver Foremerge, una herramienta open source escrita en Rust y publicada bajo licencia Apache-2.0.

La premisa es que la pila de desarrollo ha crecido en capas rápidas: agentes (Claude Code, Codex), contexto (archivos CLAUDE.md), herramientas (MCP), aislamiento (worktrees) y orquestación. Foremerge añade la capa de coordinación. No crea planes, sino que actúa como un registro y un árbitro. Antes de escribir código, cada agente declara su intención usando sintaxis estructurada, como symbol:PaymentService=replace. Las reglas deterministas comparan estas declaraciones. Si una operación destructiva choca con una aditiva en el mismo alcance semántico, se levanta una alerta mientras ambos siguen siendo solo planes. No se usan rutas de archivo, porque esas no capturan colisiones de API, esquemas o configuración.

La segunda parte de la herramienta es la verificación. La aceptación del trabajo no se basa en que el agente diga que las pruebas pasan, sino en que Foremerge ejecute comandos de verificación contra la huella exacta del cambio. Si el árbol de archivos cambia tras la validación, el intento no cuenta. En otras palabras, la evidencia supera a la afirmación.

Lecciones de implementación

Los autores destacan tres aprendizajes clave. Primero, declarar supera a inferir: intentar adivinar la intención del agente desde su prosa generaba falsos positivos (por ejemplo, interpretar "eliminar la prueba de ThumbnailCache" como borrar la caché completa). Exigir una declaración estructurada elimina esa clase de errores. Segundo, los avisos superan a los bloqueos: la mayoría de las solapamientos son compatibles, y usar bloqueos serializaría innecesariamente el trabajo. Por eso, los reclamos son advertencias, reservando la severidad alta solo para conflictos genuinamente incompatibles. Tercero, reclamos suaves pero puerta dura: todo el proceso previo es aconsejable, pero la aceptación final es rígida; nada se integra si hay un hallazgo crítico pendiente.

Esta capa no es necesaria si solo usas un agente. Pero si ejecutas dos o más en el mismo repositorio, ya has vivido esta falla silenciosa. Setup es sencillo: un pegado en la configuración de tu agente favorito. La herramienta funciona localmente, por encima de Git, y su detección es 100% determinista.