Sobre el proyecto

core-agent es un sustrato de Go de nivel producción para agentes LLM multiturno, construido sobre el Agent Development Kit (ADK) de Google. Incluye el cableado fundamental — proveedores, MCP, skills, permisos, sesiones durables, conexión remota, una TUI Bubble Tea en proceso y una CLI headless — para que los proyectos derivados puedan centrarse en sus propias herramientas y lógica de producto. **Runtime**: Conversación multiturno mediante el runner de ADK con despacho paralelo de llamadas a herramientas. Incluye una TUI Bubble Tea en proceso como superficie TTY predeterminada, un REPL de línea de respaldo con --no-tui y una etiqueta de compilación slim que elimina el árbol de la TUI. El modo autónomo admite workers desatendidos con presupuestos de turnos/tokens/coste/tiempo de reloj, terminación dirigida por el modelo y recuperación ante fallos mediante checkpoints durables. La supervivencia en sesiones largas incluye compactación automática del contexto tras cada turno al ~85% de utilización, subtareas con envoltorios de herramientas agénticas que mantienen la salida masiva de herramientas fuera del contexto padre, y checkpoints en los límites de tarea. **Proveedores**: Gemini API y Vertex AI (con GoogleSearch y URLContext del lado del servidor), Anthropic Claude vía api.anthropic.com y vía Vertex AI como adaptador de modelo nativo. Los proveedores mock (echo, reproducción de JSONL con guion, grabación de sesión) permiten pruebas sin credenciales. Un sistema de control tri-estado neutral respecto al proveedor para herramientas integradas del lado del servidor (web_search, url_context, code_execution) permite que la postura de accesibilidad a internet sobreviva a los cambios de proveedor. **Instrucciones, herramientas, MCP, skills**: Instrucciones primarias en AGENTS.md con un directorio de superposición, directiva @include para composición multifichero y tres ámbitos (usuario, user-home, proyecto) con respaldos CLAUDE.md/GEMINI.md. El catálogo de herramientas integradas cubre operaciones de ficheros (read, write, edit, delete, outline), búsqueda (glob, grep), datos/red (json_query, fetch_url), shell (bash), planificación (todo, record_plan), verificación (wait_and_verify) y solicitud interactiva (ask_user). Servidores MCP declarados en mcp.json con transportes stdio y Streamable HTTP, herramientas con espacio de nombres y enrutamiento controlado por permisos. Skills compatibles con Claude autodescubiertas a partir de ficheros SKILL.md con declaraciones de requisitos (p. ej., shell, kubectl, gcloud) que se retienen en el arranque si no se cumplen. **Permisos**: Modos ask/allow/yolo con listas de permitidos/denegados basadas en patrones, aplicación del ámbito de rutas en las herramientas de ficheros, lista de permitidos de ámbito de URL para fetch_url y una lista de denegados de bash no anulable. La aplicación de plan-primero puede exigir un plan registrado antes de llamadas a herramientas mutadoras (modo required) o registrar planes sin bloquear (modo advisory para ejecuciones desatendidas). La interfaz Prompter conectable funciona en TTY, headless, TUI o frontends web personalizados. **Persistencia y observabilidad**: Sesiones durables y registro de auditoría mediante SQLite (Go puro, sin CGO), Postgres o MySQL con seq monotónico, replay, watch en vivo y bloqueo de sesión para reanudación segura ante fallos en múltiples procesos. Exportación opcional de OpenTelemetry (consola/OTLP, desactivada por defecto). Seguimiento de tokens y coste por modelo con precios por capas (actualización diaria de LiteLLM, anulaciones por configuración). **Conexión remota y superficie del operador**: HTTP + SSE con tail en vivo y endpoints de inject/wake sobre mTLS + autenticación bearer. Controles de retención/interrupción/pausa del operador para cancelación de turnos en vuelo y estacionamiento de bucles. Cliente TUI remoto (binario con versionado independiente) con paridad total de comandos slash, pie de coste por turno, modales de aprobación de herramientas en vivo y cambio de sesión. Daemon multis sesión con identidad por llamador, ACLs (Owner/Viewers/Contributors), concesiones de permisos, superposiciones de instrucciones y atribución de auditoría; las sesiones sobreviven a reinicios del daemon. Descubrimiento de agent-card mediante /.well-known/agent-card.json con la forma A2A AgentCard. Registro de pares para descubrimiento de flota en topología hub-and-spoke. **Subagentes**: Delegación síncrona en proceso mediante agent.WithSubagents, subagentes en segundo plano mediante spawn_agent/stop_agent con resultados devueltos como informes Background. Creación remota mediante RemoteAgentSpawner proporcionado por el consumidor para gRPC, K8s Jobs o Cloud Run. Los eventos de subagentes se transmiten al registro de auditoría del padre bajo una etiqueta Branch. **Sidecar de triaje de Kubernetes**: lookout-watch observa eventos de Kubernetes, filtra y deduplica, e inyecta incidentes coincidentes en sesiones por incidente para bucles de diagnóstico-corrección-verificación mediante el GKE MCP, controlado por la aplicación de plan-primero. **Instalación**: Go install (requiere Go 1.26+), binarios precompilados firmados con Sigstore (linux/darwin × amd64/arm64) e imágenes de contenedor distroless multiarquitectura (daemon+TUI completo, headless slim, solo cliente TUI). Licencia Apache-2.0.