Sobre el proyecto

AIForge es un cliente de IA nativo para terminal en C++23 diseñado en torno a un núcleo de tiempo de ejecución neutral al proveedor. Admite interacciones por streaming a través de Venice (vía venice-cpp), flujos de trabajo de IA de un solo paso y basados en tuberías (pipes), y sesiones de chat persistentes y reanudables. La interfaz interactiva de Chat está construida sobre TermForge para un renderizado robusto de la terminal. Las características clave incluyen: - **Núcleo Neutral al Proveedor**: La lógica central está desacoplada de los proveedores de IA, lo que permite ejecuciones y proyecciones duraderas y reproducibles. - **Sesiones Duraderas**: El estado de la sesión, los eventos y las transcripciones se almacenan de forma persistente utilizando SQLite; las sesiones pueden reanudarse o continuarse. - **Planificación de Tareas Reproducible**: Admite el uso de la herramienta estructurada `ask_user`, revisiones de planes, grafos de tareas y decisiones de revisión exacta con análisis de conflictos y seguimiento de backlog respaldado por repositorio. - **Personas Basadas en Archivos**: Instrucciones del sistema cargadas desde archivos `.md` o `.txt` en la configuración XDG; gestionadas de forma segura con hashing de contenido y actualizaciones atómicas. - **Descubrimiento y Selección de Modelos**: Enumera los modelos disponibles con sus capacidades, precios y tamaño de contexto; permite el filtrado y la selección a través de la CLI o el comando interactivo `/model`. - **Selección de Personajes Transitorios**: Selección en tiempo de ejecución de personajes específicos del proveedor sin alterar la configuración central. - **Soporte de Audio Local (Linux)**: Captura y reproducción a través de ALSA (RtAudio), con manejo seguro y sin exposición a los modelos de IA. - **Manejo de Imágenes**: Genera, visualiza y exporta imágenes con almacenamiento direccionado por contenido y validación (PNG, JPEG, WebP a través de RasterForge). - **Ejecución Acotada**: Ejecución de procesos regulada por políticas, límites de tamaño de entrada/salida y restricciones de capacidad para mejorar la seguridad. - **Control de Uso y Gasto**: Rastrea el uso de tokens y el costo monetario por sesión; impone techos de gasto configurables. - **Sistema de Comandos Slash**: Registro de comandos unificado y extensible con ayuda, autocompletado y comprobaciones de disponibilidad. - **Análisis Estático y Estilo**: Formateo de código obligatorio (clang-format 20) y análisis estático (clang-tidy 20) con políticas documentadas. Se compila mediante CMake (3.28+) con GCC 13+ o Clang 17+, y depende de TermForge, venice-cpp y RasterForge para su funcionalidad principal. SQLite proporciona el almacenamiento duradero de sesiones. Las pruebas y el linting están integrados en el sistema de construcción. La arquitectura enfatiza la seguridad, el determinismo y la auditabilidad, con decisiones arquitectónicas gobernadas por ADRs (Architecture Decision Records) y documentos de diseño. Las restricciones notables incluyen la validación UTF-8, artefactos direccionados por contenido y el rechazo estricto de entradas inseguras o enlaces simbólicos. Funciona tanto en modo headless (CLI) como en modo interactivo TUI. Cuando se inicia sin argumentos en una terminal, abre el espacio de trabajo interactivo de Chat. Admite el canalizado de stdin para revisiones de diff, análisis de código y automatización. Licenciado bajo BSD 3-clause.