POCLI rechaza los prompts monolíticos inflados. Cada especialista se ejecuta en un proceso Linux aislado con herramientas acotadas por rol, gobernanza SDLC determinista y latencia inicial sub-segundo.
Inspirado en Pi (pi-mono) y en los hallazgos empíricos de Harness Engineering (arXiv:2609.00006), POCLI sustituye prompts monol...
Construido sobre Node.js Native SQLite (node:sqlite) en modo WAL + FTS5, POCLI almacena todo el historial de ingeniería en $HOM...
Siguiendo el principio estricto de “No Auto-Revisión”, el Senior Developer jamás valida su propio código. Cuando las pruebas un...
El Project Manager (PM) ofrece visibilidad unificada de todos los especialistas virtuales sin interferir nunca en contratos téc...
POCLI adapta las investigaciones sobre citas verificables (arXiv:2311.09533) y el paradigma NotebookLM / Open Notebook directam...
Cada especialista virtual se ejecuta en un proceso hijo independiente en Linux comunicándose por JSON-RPC 2.0 sobre stdio delim...
Taxonomía arquitectónica consolidada de los 9 pilares indispensables de un AI Agent Harness, qué problemática resuelven frente a una llamada directa a la API del LLM y su estado exacto en POCLI.
| Pilar / Capacidad Fundamental | ¿Qué es? (Definición) | Problemática que resuelve | Componentes clave / Conceptos | Nivel de prioridad | Estado e Implementación en POCLI |
|---|---|---|---|---|---|
|
01
Bucle operativo y control de ejecución
|
Orquesta el ciclo maestro (prompt -> inferencia -> despacho de herramientas -> observación), con streaming hacia la interfaz y límites estrictos de iteración y tiempo. |
Llamar directamente a la API impide autocorregirse ante fallos, provoca bucles infinitos, bloquea la UI y deja peticiones colgadas sin control de salida. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
PoCliOrchestrator gobierna cada turno vía JSON-RPC 2.0 sobre stdio hacia procesos worker (PersistentAgentRuntime), retransmite salida incremental por agent.streamChunk al TUI (CommandCenterApp), limita el bucle DEV<->QA a MAX_QA_CORRECTION_CYCLES = 3 y aplica timeouts de 120s por turno.
Pendiente:
Detector semántico de estancamiento (stuck loop detector ante fallos repetidos idénticos) y streaming HTTP SSE nativo token a token en todos los adaptadores.
|
|
|
02
Pasarela y enrutamiento de modelos
|
Capa unificada multi-proveedor que normaliza peticiones LLM, controla cuotas en ventanas deslizantes, puntúa candidatos y ejecuta failover automático. |
Acoplar el agente a una sola API provoca caídas ante errores HTTP 429/503, latencias impredecibles, bloqueo de proveedor y gestión frágil de credenciales. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
LLMGateway y LLMRouter (llm-router.ts) unifican OpenRouter, Groq, Cerebras, Gemini, Pollinations, Ollama, Anthropic y OpenAI con presets inteligentes, control de cuotas y cooldown, failover en cascada ante HTTP 429/503 o timeouts y saneamiento con cleanModelOutput().
Pendiente:
Reintentos con exponential backoff + jitter por código de error antes de conmutar de proveedor y evaluación shadow/canary automatizada.
|
|
|
03
Sistema de herramientas tipadas
|
Registro y ejecutor determinista de capacidades (archivos, artefactos, tests, QA) acotadas por rol mediante contratos validados y carga controlada. |
Permitir salida de texto libre rompe la automatización, expone ficheros fuera del workspace e infla el contexto cargando herramientas innecesarias. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
harnesses.ts define el subconjunto allowedTools por rol (architect, developer, qa, pm) y PoCliOrchestrator.executeAgentToolCalls() ejecuta herramientas tipadas de artefactos, código, tests, entorno QA (install_qa_tool, run_qa_suite) y handoffs. LLMGateway combina choiceMsg.tool_calls nativos con extractToolCalls() y contratos Zod.
Pendiente:
Inyección nativa del array JSON Schema tools[] en el payload HTTP de todos los proveedores y carga diferida Just-In-Time (JIT) para catálogos extensos.
|
|
|
04
Ingeniería de contexto y memoria
|
Ensamblador determinista que combina prefijos normativos cacheables, memoria en capas, checkpoints de compactación sin pérdida e indexación RAG híbrida local. |
Un historial sin poda sufre context rot (lost in the middle), olvida requisitos y ADR aprobados y dispara el gasto de tokens en cada turno. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
PoCliDatabase.assembleAgentContextWindow() ensambla 3 niveles: (T1) prefijo normativo cacheable, (T2) memoria en 4 capas + último checkpoint de context_compactions vía /compact (marca compacted_into_id preservando el historial) y (T3) turnos activos. NotebookRagEngine indexa conocimiento con hash SHA-256 + SQLite FTS5 + similitud vectorial y citas trazables.
Pendiente:
Disparo automático de la compactación al superar un umbral porcentual de la ventana del modelo sin necesidad de invocar /compact manualmente.
|
|
|
05
Gobernanza, seguridad y límites
|
Controles duros policy-as-code, integridad de escritura centralizada, puertas humanas (HITL) y aislamiento del SO para evitar acciones destructivas o fuera de rol. |
Sin barreras deterministas, un modelo puede modificar artefactos ajenos, saltarse fases críticas, corromper la base de datos o ejecutar comandos peligrosos en el host. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
AuthorityGuard (workflow.ts) valida transiciones de fase y permisos de artefactos por rol; PoCliCoordinator actúa como Sole Write Owner en SQLite con idempotencia (requestId), concurrencia optimista (expectedVersion) y coordinator_audit_log; LinuxAgentProcessRunner aísla workers con /usr/bin/bwrap (--unshare-pid) o Podman OCI, y el PO controla las puertas humanas con /approve y /accept.
Pendiente:
Perfiles seccomp obligatorios por defecto y denegación granular de red por herramienta individual incluso en modo ligero local.
|
|
|
06
Persistencia, estado y durabilidad
|
Almacenamiento transaccional ACID de sesiones, artefactos versionados, memoria y checkpoints para recuperar cierres inesperados y auditar todo el ciclo de vida. |
Guardar el estado solo en memoria RAM provoca pérdida total ante caídas del proceso, impide auditar decisiones y bloquea proyectos de varias sesiones. |
Imprescindible (MVP) |
Implementado
Cómo se implementa en POCLI:
PoCliDatabase (database.ts) persiste proyectos, mensajes, artefactos versionados, memoria en 4 capas, checkpoints de compactación y logs de auditoría en $HOME/.pocli/pocli.sqlite mediante SQLite WAL nativo de Node.js. Incluye consola interactiva pocli db y consultas CLI.
Pendiente:
Reproducción determinista paso a paso (time-travel replay) de cualquier turno pasado y bifurcación/retroceso (branch/rewind) desde snapshots inmutables.
|
|
|
07
Orquestación multi-agente y delegación
|
Ejecución coordinada de especialistas aislados en procesos independientes con transferencia estructurada de contexto y bucles autónomos de verificación. |
Un único agente generalista acaba evaluando su propio código, mezcla responsabilidades incompatibles y contamina su ventana con ruido de otras tareas. |
Avanzado / Producción |
Implementado
Cómo se implementa en POCLI:
PersistentAgentRuntime levanta workers aislados por (projectId, role) entre architect, developer, qa y pm. Cada rol recibe solo su contexto ensamblado y citas RAG sin ruido cruzado. PoCliOrchestrator automatiza los handoffs [ARQ->DEV], [DEV->QA], el ciclo DEV<->QA y la validación externa con Robot Framework y Mutation Testing (TC-MUT-001).
Pendiente:
Ejecución paralela simultánea (fan-out / fan-in) de múltiples subagentes developer sobre submódulos disjuntos del repositorio.
|
|
|
08
Extensibilidad y estándares
|
Puntos de extensión estandarizados para acoplar servidores de herramientas externas, plugins empaquetables, overrides de rol y habilidades reutilizables sin tocar el núcleo. |
Programar integraciones ad-hoc para cada servicio externo convierte el arnés en un monolito rígido difícil de extender entre equipos y repositorios. |
Avanzado / Producción |
Parcial
Cómo se implementa en POCLI:
McpRegistry (mcp-client.ts) descubre e invoca servidores Model Context Protocol (MCP) sobre JSON-RPC 2.0 stdio aplicando listas blancas por rol (allowedRoles), y harnesses.ts permite sobreescribir el comportamiento de cada especialista desde $HOME/.pocli/behavior/system/
Pendiente:
Cargador declarativo de paquetes/plugins de terceros, registro dinámico de skills (SKILL.md / lifecycle hooks) y transporte MCP remoto por HTTP/SSE.
|
|
|
09
Telemetría, costes y evaluación
|
Observabilidad cuantitativa de latencia, presupuestos de tokens, logs rotativos, informes ejecutivos y batería de evaluaciones E2E del propio arnés. |
Sin métricas ni evals reproducibles del arnés es imposible detectar regresiones al cambiar de modelo o prompt, ni controlar cuellos de botella y costes reales. |
Avanzado / Producción |
Parcial
Cómo se implementa en POCLI:
Logger mantiene anillo en memoria y rotación en archivo ($HOME/.pocli/logs/pocli.log); LLMRouter mide latencyMs por proveedor; PoCliDatabase contabiliza tokens activos y ahorrados; PmReporter genera informes HTML en deliveries/; y pocli e2e / pocli tui-test junto a Vitest + Mutation Testing verifican el arnés de extremo a extremo.
Pendiente:
Medición desglosada de TTFT (Time-To-First-Token) en el TUI, libro de costes USD por modelo y exportador estándar OpenTelemetry (OTLP).
|