Sobre el proyecto

Longe es un entorno de ejecución (harness) de binario único y automejorable para cualquier LLM, escrito en Rust. Basado en ideas de las charlas del YC Harness Club (2026), trata los pesos del modelo como el motor y el entorno de ejecución (runtime) como el automóvil, convirtiendo un modelo de pesos fijos en un agente persistente. Arquitectura: Longe ejecuta un demonio en segundo plano (`longed`) que gestiona un árbol de sesiones. Cada sesión tiene un historial, un estado de REPL de Lua 5.4, un entorno aislado (sandbox) y un presupuesto configurable. La jerarquía de memoria tiene tres niveles: L1 es la ventana de contexto del modelo (con compactación automática al 70%); L2 es el REPL persistente de Lua donde las variables sobreviven entre turnos; L3 es un almacén de archivos versionado con git que contiene habilidades, memoria, prompts, especificaciones de subagentes y trayectorias. El modelo ve solo una herramienta: `exec(code)`, que ejecuta Lua. Las vinculaciones nativas (bindings) dentro de la máquina virtual de Lua exponen E/S de archivos (confinada al espacio de trabajo), comandos de shell (aislados mediante Seatbelt en macOS, Landlock en Linux, tokens restringidos en Windows), manipulación de memoria, CRUD de habilidades y subagentes, edición de prompts, consultas LLM recursivas sin estado, cambio de modelo entre proveedores, compactación de contexto, verificación externa y una llamada a `done()` que se rechaza hasta que se cumplan un presupuesto mínimo y la aprobación de un verificador. Proveedores: Anthropic, API compatibles con OpenAI (incluyendo DeepSeek, OpenRouter) y Ollama para modelos locales. El modelo puede cambiar de proveedor a mitad de la sesión sin perder el estado, lo que permite que un modelo local económico gestione el trabajo rutinario mientras que una API de vanguardia maneje los pasos difíciles. Subagentes: Sesiones persistentes que finalizan, quedan inactivas en RAM, se descargan al disco y se activan al recibir mensajes. Los padres, hijos y hermanos se comunican a través de un bus de mensajes compartiendo contexto directamente. Entorno aislado (sandbox): Tres modos (solo lectura, escritura en espacio de trabajo, acceso total). Las reglas fijas siempre ocultan el almacén, ~/.ssh, credenciales, .env y el propio binario. Los secretos se depuran del entorno; el acceso a la red se deniega a menos que esté configurado. Presupuesto: Un límite inferior antes de ser un techo. `done()` se rechaza antes de `min_seconds` y `min_turns`; se fuerza una salida limpia en `max_turns`/`max_tokens`. Reflexión: Después de cada finalización aceptada (y mediante cron), el entorno de ejecución condensa la trayectoria completa y solicita a un modelo que proponga diferencias (diffs) en las habilidades, memoria, especificaciones de subagentes, prompt y configuración. Los cambios se aplican a una rama de git, se vuelve a ejecutar un comando de aptitud (fitness) y la rama se fusiona solo si la puntuación no baja, o bien se mantiene para revisión humana en la cabina de mando (cockpit). Cabina de mando (Cockpit): Una TUI (`longe cockpit`) muestra el árbol de sesiones, el presupuesto, el estado del verificador, la cola de la trayectoria y las diferencias de reflexión pendientes. Una superficie JSON por HTTP en el puerto 7878 permite el acceso remoto, por ejemplo, a través de Tailscale. Compilación: `cargo build --release` (Rust 1.85+, sin código inseguro / unsafe). Las pruebas incluyen 91 casos unitarios y de extremo a extremo impulsados por un servidor de modelos simulado mediante scripts. Licencia: MIT. Repositorio: edouard-claude/longe.