>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
TypeScript

Cómo convertir agentes de IA de consola en una oficina pixelada de The Office

Hace poco me encontré con un repositorio que es difícil de ignorar si alguna vez has ejecutado utilidades de consola autónomas como Claude Code y te has quedado pensando que gestionar docenas de pestañas de terminal abiertas es increíblemente inconveniente. El proyecto se llama Munder Difflin.

Munder Difflin Logo

Los autores abordaron la orquestación de agentes de terminal con un humor inesperado. Envolvieron los procesos de consola en una aplicación de escritorio construida con Electron y Pixi.js, donde cada agente en ejecución camina por una oficina pixelada, lleva sobres virtuales y se comunica con sus colegas a través del sistema de archivos local. Supervisándolo todo está tu clon llamado Michael, sentado en una oficina separada.

Parece un juguete gracioso, pero bajo el capó hay una estructura seria para ejecutar Claude Code, Antigravity, OpenAI Codex, Kimi, Qwen y modelos locales en paralelo a través de Ollama.

Munder Difflin Overview

Qué es esto en realidad

En lugar de inventar un cliente API personalizado para cada modelo, Munder Difflin toma las herramientas CLI ya hechas que ya ejecutas en la terminal. La aplicación genera un pseudo-terminal real para cada agente a través de node-pty y lo renderiza en la interfaz usando xterm.js.

Como resultado, el agente trabaja en su entorno nativo. Conserva acceso a archivos locales, ejecuta pruebas, hace commits y lee la salida de compilación exactamente como si lo hubieras lanzado manualmente en una pestaña normal de iTerm o Alacritty.

La diferencia principal es que los procesos están unidos en una red compartida. Le das una tarea de alto nivel al agente orquestador principal (agente GOD), que distribuye subtareas entre agentes especializados, monitorea su estado y solo pide tu permiso antes de operaciones peligrosas.

Cómo funciona la interacción entre agentes

Toda la arquitectura está construida sobre archivos locales y el protocolo Git, sin bases de datos externas en la nube.

Buzones y memoria compartida

Cuando los agentes necesitan pasar contexto o resultados de trabajo, no llaman a RPCs remotos complejos. El sistema usa una arquitectura de buzón directamente en disco:

  1. El agente escribe un mensaje o artefacto en su directorio local outbox/.
  2. Un router interno mueve el archivo a la carpeta del destinatario inbox/.
  3. El destinatario se activa a través de un evento del sistema de archivos, lee el mensaje y recoge la tarea.
  4. La memoria a largo plazo se almacena en Markdown plano e indexada por búsqueda semántica local para una recuperación rápida de contexto entre sesiones.

Para evitar que procesos paralelos bloqueen index.lock en el repositorio, las escrituras en el historial de commits pasan por un proceso de commit único.

Protección contra bucles infinitos y sobrecostos

Uno de los principales problemas con los agentes CLI autónomos es el riesgo de bucles, cuando un script comienza a corregir repetidamente la misma prueba o bombardear la API con cientos de solicitudes.

Munder Difflin tiene un mecanismo de Circuit Breaker integrado:

  • Cada agente tiene un límite duro de tokens y monitoreo de costos en tiempo real de las solicitudes desde los logs.
  • El sistema rastrea errores en cascada y reintentos de comandos fallidos.
  • Al exceder el presupuesto o exhibir comportamiento anormal, el agente primero recibe una advertencia y limitación de contexto, y si los fallos continúan, se detiene forzosamente.
  • Las acciones destructivas, cambios de alcance y gastos de dinero requieren confirmación a través del panel de Aprobaciones.

Qué hay adentro: stack técnico

Arquitectónicamente, la aplicación está dividida en dos planos aislados que convergen en Electron:

┌───────────────────────────────────────────────────────────────┐
                     Electron Renderer (React)                 
   ┌──────────────────┐    ┌──────────────────────────────┐    
    Office Floor          Terminal + Command Bar           
    (Pixi.js)             Files + Git tabs (xterm.js)      
   └─────────▲────────┘    └────────────▲─────────────────┘    
              avatar state              pty bytes / fs / git 
└─────────────┼──────────────────────────┼──────────────────────┘
               IPC (contextBridge: window.cth)
       ┌──────┴──────────┐        ┌──────┴─────────────┐
         Event Plane              Terminal Plane    
         hooks / hive             node-pty PTYs     
         router + GOD             + fs + git        
       └────────▲────────┘        └──────▲─────────────┘
                 hook payloads           stdin / stdout
                └─────────┬──────────────┘
                   ┌──────┴──────────────┐
                    claude / agy / codex│
                   └─────────────────────┘

El proceso principal de Node.js gestiona el ciclo de vida de la terminal, el enrutamiento de archivos y una base de datos SQLite para la persistencia del historial de sesiones. El renderer en React y Pixi.js recibe datos a través de un puente IPC tipado window.cth.

Más allá de la oficina visual, el cliente de escritorio incluye un editor Monaco integrado, un tablero kanban de tareas con dependencias, un visor de diff de Git e integración con webhooks de Slack. Puedes enviar una tarea a un chat de trabajo, Michael creará un agente temporal en segundo plano, resolverá el problema y devolverá la respuesta al hilo.

Cómo desplegarlo y probarlo

Para ejecutarlo, necesitarás Node.js 18+, un compilador de C/C++ para construir el módulo nativo node-pty (en macOS, Xcode Command Line Tools es suficiente) y al menos un agente de consola instalado.

Clona el repositorio y ejecuta el proyecto en modo desarrollo:

git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install
npm run dev

En el primer inicio, se abrirá un asistente de configuración. Allí puedes especificar rutas a los binarios claude, codex, copilot o establecer direcciones para servidores locales de LM Studio / Ollama / vLLM.

Si el binario requerido no está en el sistema, la aplicación puede ejecutar la auto-instalación directamente en la ventana de terminal integrada.

A quién le será útil este proyecto

Munder Difflin es difícil de llamar una utilidad ligera para el día a día—Electron y el renderizado de sprites a través de Pixi.js predeciblemente requieren recursos. Pero si experimentas frecuentemente con escenarios multi-agente, escribes refactorizaciones complejas impulsadas por múltiples modelos, o estás cansado de controlar manualmente lanzamientos paralelos de Claude Code en tmux, hay mucho que aprender aquí.

El concepto de gestionar procesos a través de archivos Markdown, aislamiento de ramas a través de git worktrees y control visual amigable de lo que está sucediendo hacen de este proyecto uno de los hacks de código abierto más originales alrededor de los agentes de IA locales. El repositorio tiene commits activos, el código está escrito en TypeScript limpio, así que explorar los hooks internos y manejadores de PTY definitivamente vale la pena.

Proyectos relacionados