openprompt-lang 1.2.7 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +62 -8
  2. package/bin/cli.js +2 -0
  3. package/docs/00-ARCHITECTURE/OPL-BOOST-MULTI-AGENT.md +406 -0
  4. package/docs/02-STANDARDS/AGENTS.template.md +89 -0
  5. package/docs/02-STANDARDS/ticket-driven-development.md +99 -0
  6. package/docs/04-TICKETS/BOOST-001-profile-registry.md +66 -0
  7. package/docs/04-TICKETS/BOOST-002-context-compression.md +58 -0
  8. package/docs/04-TICKETS/BOOST-003-template-hydration.md +69 -0
  9. package/docs/04-TICKETS/BOOST-004-fewshot-engine.md +58 -0
  10. package/docs/04-TICKETS/BOOST-005-agent-pool.md +69 -0
  11. package/docs/04-TICKETS/BOOST-006-specialized-agents.md +53 -0
  12. package/docs/04-TICKETS/BOOST-007-validation-loop.md +56 -0
  13. package/docs/04-TICKETS/BOOST-008-orchestrator.md +71 -0
  14. package/docs/04-TICKETS/BOOST-009-cache-system.md +56 -0
  15. package/docs/04-TICKETS/BOOST-010-cli-mcp.md +67 -0
  16. package/docs/04-TICKETS/BOOST-011-self-learning.md +50 -0
  17. package/docs/04-TICKETS/BOOST-012-prompt-preamble.md +109 -0
  18. package/docs/04-TICKETS/BOOST-013-hydrator-duplicate-code.md +132 -0
  19. package/docs/04-TICKETS/BOOST-014-multiagent-missing-parts.md +87 -0
  20. package/docs/04-TICKETS/BOOST-015-skeleton-type-missing.md +76 -0
  21. package/docs/04-TICKETS/BOOST-016-output-path-duplicate.md +68 -0
  22. package/docs/04-TICKETS/INDEX.md +89 -0
  23. package/docs/04-TICKETS/_archive/BOOST-005-micro-tasking.md +67 -0
  24. package/docs/04-TICKETS/_archive/BOOST-006-validation-loop.md +66 -0
  25. package/docs/04-TICKETS/_archive/BOOST-007-progressive-pipeline.md +69 -0
  26. package/docs/04-TICKETS/_archive/BOOST-008-cli-mcp-integration.md +74 -0
  27. package/docs/AI_CONTEXT.md +16 -0
  28. package/docs/EMBEDDINGS.md +214 -0
  29. package/docs/ONBOARDING_WORKFLOW.md +151 -0
  30. package/docs/OPL_ACADEMIC_ISSUES.md +158 -0
  31. package/docs/WEB_SCRAPER_PLAN.md +454 -0
  32. package/package.json +9 -2
  33. package/scripts/postinstall.js +37 -0
  34. package/src/boost/agent-pool.js +442 -0
  35. package/src/boost/agents/index.js +79 -0
  36. package/src/boost/cache.js +241 -0
  37. package/src/boost/context-compressor.js +354 -0
  38. package/src/boost/fewshot-retriever.js +332 -0
  39. package/src/boost/hardware-detector.js +486 -0
  40. package/src/boost/hydrator.js +398 -0
  41. package/src/boost/index.js +60 -0
  42. package/src/boost/orchestrator.js +615 -0
  43. package/src/boost/preamble.js +217 -0
  44. package/src/boost/profile-registry.js +264 -0
  45. package/src/boost/self-learn.js +247 -0
  46. package/src/boost/skeletons/component.skeleton.js +24 -0
  47. package/src/boost/skeletons/hook.skeleton.js +27 -0
  48. package/src/boost/skeletons/index.js +67 -0
  49. package/src/boost/skeletons/page.skeleton.js +22 -0
  50. package/src/boost/skeletons/service.skeleton.js +20 -0
  51. package/src/boost/skeletons/store.skeleton.js +18 -0
  52. package/src/boost/skeletons/type.skeleton.js +11 -0
  53. package/src/boost/task-dispatcher.js +142 -0
  54. package/src/boost/validation-loop.js +495 -0
  55. package/src/cli/commands-boost.js +394 -0
  56. package/src/cli/commands-knowledge.js +1 -0
  57. package/src/cli/commands-opl.js +79 -1
  58. package/src/cli/commands-workflow.js +125 -6
  59. package/src/commands/init-core.js +169 -5
  60. package/src/commands/knowledge-ops.js +52 -0
  61. package/src/commands/opl-embeddings.js +556 -0
  62. package/src/commands/opl-help.js +26 -2
  63. package/src/commands/opl-search.js +106 -2
  64. package/src/commands/opl-webscrape.js +390 -0
  65. package/src/commands/workflow/epic-cli.js +192 -0
  66. package/src/commands/workflow/select.js +146 -0
  67. package/src/commands/workflow/sprint-cli.js +174 -0
  68. package/src/core/webscrape/analyzer.js +481 -0
  69. package/src/core/webscrape/deep-scraper.js +1027 -0
  70. package/src/core/workflow/epic-manager.js +845 -0
  71. package/src/core/workflow/gates.js +180 -1
  72. package/src/core/workflow/selector.js +707 -0
  73. package/src/embeddings/chunker.js +450 -0
  74. package/src/embeddings/embedder.js +431 -0
  75. package/src/embeddings/index-pipeline.js +320 -0
  76. package/src/embeddings/vector-store.js +505 -0
  77. package/src/mcp-refactor/handlers/boost.js +295 -0
  78. package/src/mcp-refactor/router.js +19 -0
  79. package/src/mcp-refactor/tools.js +113 -0
package/README.md CHANGED
@@ -30,6 +30,25 @@ Guarda conceptos visuales o técnicos para que la IA los entienda como tú los e
30
30
  ### Repositorio de Conocimiento (Knowledge)
31
31
  Almacena, indexa y procesa documentos PDF y fuentes web técnicas. Detecta capítulos automáticamente y los divide en secciones de lectura rápida para que la IA los use. Incluye **33 libros y guías pre-empaquetados** (JavaScript, TypeScript, Rust, React, Node.js, Python, Scrum, accesibilidad, algoritmos, API de pagos, etc.) accesibles sin configuración previa vía MCP (`knowledge_search`, `knowledge_list`, `knowledge_read`, `knowledge_concept`) o CLI (`knowledge search`, `knowledge sync --all`). Genera automáticamente `.openprompt/FRAMEWORK.md` con el manual operativo restrictivo para la IA.
32
32
 
33
+ ### Búsqueda Semántica por Embeddings (Vector Search)
34
+ Reemplaza el mapa semántico manual con vectores numéricos generados por IA local. Divide documentos en chunks semánticos, los convierte en vectores (768d con Ollama o 384d con Transformers.js), y busca por similitud de coseno. Incluye un pipeline completo: chunker (3 estrategias), embedder (Ollama + Transformers.js con auto-fallback), vector store (SQLite + FTS5), y soporte de búsqueda híbrida (FTS5 + reordenamiento semántico). Se integra con `opl search --mode vector` y el indexado automático tras la ingesta de PDFs.
35
+
36
+ **Requisitos:**
37
+ - **Primario**: [Ollama](https://ollama.com) con `ollama pull nomic-embed-text` (recomendado)
38
+ - **Fallback**: `@xenova/transformers` (incluido como dependencia opcional, se activa automáticamente si Ollama no está disponible)
39
+
40
+ **Comandos:**
41
+ ```bash
42
+ opl embeddings status # Ver estado del índice vectorial
43
+ opl embeddings index <docId> # Indexar un documento
44
+ opl embeddings remove <docId> # Eliminar embeddings
45
+ opl embeddings config # Ver/configurar proveedor
46
+ opl search "consulta" --mode vector # Búsqueda semántica
47
+ opl search "consulta" --mode hybrid # Híbrido (incluye vectorial)
48
+ opl webscrape <url> --domain frontend # Scrapear web e indexar
49
+ knowledge ingest doc.pdf # Ingesta PDF + auto-embedding
50
+ ```
51
+
33
52
  ### IA Local (Local Setup)
34
53
  Configura un entorno de desarrollo completamente local y desconectado. Prepara la integración con modelos locales en Ollama (como Llama 3 o Qwen 2.5 Coder) y la suite de herramientas OpenCode, permitiendo trabajar sin internet ni costos de API, pero manteniendo el 100% de la precisión del framework.
35
54
 
@@ -582,6 +601,25 @@ openPrompt-Lang component list --validated
582
601
  | `openPrompt-Lang knowledge rebuild` | Reconstruye el índice general desde metadatos individuales |
583
602
  | `openPrompt-Lang knowledge sync [--all]` | Sincroniza libros de la biblioteca empaquetada al proyecto local |
584
603
  | `openPrompt-Lang local-setup` | Configura integración con IA local (Ollama + OpenCode) |
604
+ | `opl workflow select <desc>` | Selecciona workflow óptimo según descripción de la tarea (usar SIEMPRE primero) |
605
+ | `opl workflow delivery` | Inicia desarrollo por tickets (E.3) |
606
+ | `opl workflow close` | Cierra sesión activa y genera reporte (E.4) |
607
+ | `opl epic create --title "..." --desc "..."` | Crea épica con tickets generados automáticamente |
608
+ | `opl epic list` | Lista épicas con métricas de progreso |
609
+ | `opl epic show <id>` | Muestra detalle de épica y sus tickets |
610
+ | `opl epic close <id>` | Cierra épica |
611
+ | `opl sprint create <name> --goal "..."` | Crea sprint con duración configurable |
612
+ | `opl sprint list` | Lista sprints con métricas |
613
+ | `opl sprint plan <id> --capacity N` | Planifica sprint automáticamente desde épicas activas |
614
+ | `opl sprint close <id>` | Cierra sprint |
615
+ | `opl ticket create --title "..." --severity ...` | Crea ticket de bug/tarea |
616
+ | `opl ticket list` | Lista tickets del proyecto |
617
+ | `opl ticket close <id>` | Cierra ticket como fixed |
618
+ | `opl embeddings status` | Ver estado del índice vectorial semántico |
619
+ | `opl embeddings index <docId>` | Indexa un documento en el vector store |
620
+ | `opl embeddings remove <docId>` | Elimina embeddings de un documento |
621
+ | `opl embeddings config` | Ver/configurar proveedor de embeddings |
622
+ | `opl webscrape <url>` | Extrae contenido web y lo indexa en knowledge + embeddings |
585
623
 
586
624
  ### Base de Conocimiento Empaquetada
587
625
 
@@ -1128,17 +1166,33 @@ El **Work Context** es un sistema integrado de trazabilidad obligatoria que regi
1128
1166
  | `openPrompt-Lang work-context check` | Verifica consistencia del work-context: valida que `SESSION.json` exista y tenga estructura correcta, detecta sesiones activas olvidadas (>24h), confirma que los planes referenciados existen en disco, valida que `LOG.json` sea un array válido |
1129
1167
  | `validate --work-context` | Incluye la verificación de work-context dentro del pipeline de validación estándar |
1130
1168
 
1131
- ### Flujo de trabajo obligatorio
1169
+ ### Flujo de trabajo obligatorio (v1.3.0)
1132
1170
 
1133
- La IA debe seguir este ciclo en **cada sesión de trabajo**:
1171
+ La IA debe seguir este ciclo en **cada sesión de trabajo**. No hay excepciones:
1134
1172
 
1135
1173
  ```
1136
- 1. CONTEXT.md + SESSION.json restaurar estado o iniciar nuevo
1137
- 2. ANALYZE request → clasificar tipo de tarea
1138
- 3. PLAN`work-context plan new <name> --task "<desc>"` → PLANS/, log en LOG
1139
- 4. VALIDATE plan → contra @kind, @contract, @limit
1140
- 5. IMPLEMENT codificar, log cada acción
1141
- 6. VALIDATE código validate + validate --work-context
1174
+ 1. workflow_select "opl workflow select <descripción>"
1175
+ La IA describe su tarea, el sistema selecciona workflow óptimo
1176
+ 2. create_ticket "opl ticket create --title ... --severity ..."
1177
+ TODO cambio requiere ticket ANTES de implementar
1178
+ 3. → check_gates → workflow_selected ✓, ticket_created ✓, plan_approved ✓
1179
+ 4. work_context_plan Planificar usando work-context con búsqueda de conocimiento
1180
+ 5. → implement → Codificar con anotaciones OPL primero (@kind → @contract → @limit)
1181
+ 6. → validate → "opl validate" antes de cerrar
1182
+ 7. → docs_updated → Actualizar documentación (OBLIGATORIO antes de cerrar)
1183
+ 8. → work_context_close → Cerrar sesión y generar reporte
1184
+ ```
1185
+
1186
+ **Reglas inquebrantables:**
1187
+ - **Regla #1**: `workflow select` primero — Sin workflow seleccionado no hay implementación
1188
+ - **Regla #2**: `ticket create` antes de código — Sin ticket no se escribe código
1189
+ - **Regla #3**: `docs_updated` antes de cerrar — Sin documentación actualizada no se cierra sesión
1190
+
1191
+ El sistema de gates (`workflow_selected`, `ticket_created`, `plan_approved`, `docs_updated`)
1192
+ bloquea herramientas automáticamente si no se cumplen los prerrequisitos (configurable en
1193
+ `prompt-lang.json` → `workflow.enforcement`).
1194
+
1195
+ Ver también: `AGENTS.md` para instrucciones detalladas de cada paso.
1142
1196
  7. INTEGRATE → actualizar AGENTS.md si toca
1143
1197
  8. LEARN + REFERENCES.md → checklist de referencias seguras
1144
1198
  9. CLOSE → reporte, métricas finales
package/bin/cli.js CHANGED
@@ -21,6 +21,7 @@ import { register as registerOpl } from "../src/cli/commands-opl.js"
21
21
  import { register as registerMisc } from "../src/cli/commands-misc.js"
22
22
  import { register as registerWorkflow } from "../src/cli/commands-workflow.js"
23
23
  import { register as registerTeach } from "../src/cli/commands-teach.js"
24
+ import { register as registerBoost } from "../src/cli/commands-boost.js"
24
25
 
25
26
  import { handleUncaughtErrors, EXIT_CODES } from "../src/utils/errors.js"
26
27
 
@@ -67,6 +68,7 @@ registerLearning(program)
67
68
  registerMisc(program)
68
69
  registerWorkflow(program)
69
70
  registerTeach(program)
71
+ registerBoost(program)
70
72
 
71
73
  try {
72
74
  await program.parseAsync(process.argv)
@@ -0,0 +1,406 @@
1
+ # OPL Boost — Arquitectura Multi-Agente (MoA)
2
+
3
+ > **Documento de diseño** — Versión borrador para discusión
4
+ > Última actualización: 2026-05-26
5
+
6
+ ---
7
+
8
+ ## 1. Concepto Central
9
+
10
+ **Modelos pequeños colaborando pueden superar a uno grande.** Es el principio de **Mixture of Agents (MoA)** validado por Together AI (2024): tres modelos de 7B especializados y coordinados pueden igualar o superar a GPT-4 en tareas específicas de generación de código.
11
+
12
+ La clave está en que **cada modelo solo necesita resolver la parte del problema que cabe en su ventana de contexto**.
13
+
14
+ ### Analogía: Fábrica de código
15
+
16
+ ```
17
+ [ Modelo Grande ] → Un artesano que lo hace todo, pero caro y escaso
18
+ [ Boost Multi-Agente ] → Una línea de ensamblaje con 5 operarios baratos, cada uno especializado
19
+ ```
20
+
21
+ | Aspecto | Modelo grande único | Boost Multi-Agente |
22
+ |---------|-------------------|-------------------|
23
+ | RAM requerida | ~20-40 GB | ~4-12 GB |
24
+ | Velocidad | Secuencial, un paso a la vez | Paralelo, varios pasos simultáneos |
25
+ | Costo operativo | Alto (GPU grande) | Bajo (varias GPUs chicas o una sola con cola) |
26
+ | Especialización | Generalista | Agentes especializados por rol |
27
+ | Respaldo científico | — | MoA (Together AI, 2024) |
28
+ | Degradación | Si falla, todo falla | Si un agente falla, se reasigna |
29
+
30
+ ---
31
+
32
+ ## 2. Arquitectura
33
+
34
+ ```
35
+ ┌─────────────────────────────────────────────────────────────────────┐
36
+ │ Boost Orchestrator │
37
+ │ (src/boost/index.js + orchestrator.js) │
38
+ │ │
39
+ │ 1. Recibe tarea → "crea hook useAuth" │
40
+ │ 2. Descompone en DAG de pasos │
41
+ │ 3. Asigna agentes según dependencias │
42
+ │ 4. Ejecuta en paralelo o secuencial según DAG │
43
+ │ 5. Recolecta resultados parciales │
44
+ │ 6. Ensambla resultado final │
45
+ │ 7. Pasa por validation loop │
46
+ └──────┬────────────────────────────────────┬──────────────────────────┘
47
+ │ │
48
+ │ Fase 1: Paralela │ Fase 2: Secuencial
49
+ │ (tareas independientes) │ (tareas con dependencias)
50
+ ▼ ▼
51
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
52
+ │ Agent A │ │ Agent B │ │ Agent D │
53
+ │ Tipos │ │ Estado │ │ Lógica │
54
+ │ "Define │ │ "Diseña el │ │ "Implementa │
55
+ │ interfaces"│ │ estado y │ │ la función"│
56
+ └──────┬──────┘ │ efectos" │ └──────┬──────┘
57
+ │ └──────┬──────┘ │
58
+ │ │ │
59
+ └────────┬───────┘ │
60
+ │ │
61
+ ▼ ▼
62
+ ┌──────────────┐ ┌──────────────┐
63
+ │ Agent C │ │ Agent E │
64
+ │ Props/Contract│ │ Validación │
65
+ │ (paralelo a │ │ (último paso)│
66
+ │ A y B) │ │ │
67
+ └──────────────┘ └──────────────┘
68
+ ```
69
+
70
+ ### 2.1 Componentes del Sistema
71
+
72
+ ```
73
+ src/boost/
74
+ ├── index.js → Punto de entrada (orquestador general)
75
+ ├── orchestrator.js → Motor de planificación + scheduling de agentes
76
+ ├── agent-pool.js → Pool de agentes: gestión, cola, paralelismo
77
+ ├── task-dispatcher.js → Descompone tarea en DAG + asigna
78
+ ├── agents/ → Agentes especializados
79
+ │ ├── agent-types.js → Prompt + validator por rol
80
+ │ ├── agent-types.js → Define interfaces de tipos/tipado
81
+ │ ├── agent-state.js → Diseña estado y efectos
82
+ │ ├── agent-logic.js → Implementa lógica de negocio
83
+ │ ├── agent-validate.js → Corre validación + retroalimentación
84
+ │ └── agent-cleaner.js → Comprime/pule contexto (AI Cleaner)
85
+ ├── context-cache/ → Contexto limpio cacheado por tipo de tarea
86
+ ├── profile-registry.js → ✅ Ya existe (Ticket 1)
87
+ ├── context-compressor.js → Capa 1: determinística (Ticket 2)
88
+ ├── hydrator.js → Hidratación de skeletons (Ticket 3)
89
+ ├── fewshot-retriever.js → Búsqueda de ejemplos (Ticket 4)
90
+ └── validation-loop.js → Feedback loop post-generación (Ticket 6)
91
+ ```
92
+
93
+ ### 2.2 Pool de Agentes vs Instancias de Modelo
94
+
95
+ El pool de agentes es **lógico**, no necesariamente físico:
96
+
97
+ ```
98
+ ┌──────────────────────────────────┐
99
+ │ Agent Pool │
100
+ │ (gestiona tareas vs instancias) │
101
+ │ │
102
+ │ ┌──────────┐ ┌──────────┐ │
103
+ │ │ Agent A │ │ Agent B │ │ ← Agentes lógicos (roles)
104
+ │ │ (Tipos) │ │ (Estado) │ │
105
+ │ └────┬─────┘ └────┬─────┘ │
106
+ │ │ │ │
107
+ │ ▼ ▼ │
108
+ │ ┌──────────────────────────┐ │
109
+ │ │ Instancia de modelo │ │ ← Física (Ollama, API)
110
+ │ │ deepseek-coder-7b │ │ Se reusa entre agentes
111
+ │ └──────────────────────────┘ │
112
+ └──────────────────────────────────┘
113
+ ```
114
+
115
+ Un solo modelo físico puede servir múltiples agentes lógicos en serie (no en paralelo real si no hay GPU suficiente):
116
+
117
+ - **Modo paralelo real**: varias instancias del modelo en GPUs diferentes (o misma con batching)
118
+ - **Modo cola**: una sola instancia atiende agentes en secuencia, como si fuera un solo núcleo compartido
119
+
120
+ ---
121
+
122
+ ## 3. Agentes Especializados
123
+
124
+ Cada agente tiene:
125
+
126
+ | Rol | Nombre | Input | Output | Prompt característico |
127
+ |-----|--------|-------|--------|----------------------|
128
+ | **Tipos** | `agent-types` | Descripción de la tarea | Interfaces, types, DTOs | _"Define solo los tipos. Sin implementación."_ |
129
+ | **Estado** | `agent-state` | Descripción de la tarea + tipos | Estado, hooks, efectos | _"Diseña el estado y efectos. Sin JSX."_ |
130
+ | **Contrato** | `agent-contract` | Descripción de la tarea + tipos | Props, anotaciones @contract | _"Define el contrato del componente."_ |
131
+ | **Lógica** | `agent-logic` | tipos + estado + contrato | Lógica de negocio completa | _"Implementa la función usando tipos y estado ya definidos."_ |
132
+ | **Validación** | `agent-validate` | Código completo | Versión corregida o reporte | _"Este código falló en X línea. Corrígelo."_ |
133
+ | **Cleaner** | `agent-cleaner` | Contexto completo | Contexto comprimido minimal | _"Comprime este contexto a solo lo esencial para generar un hook."_ |
134
+
135
+ **Cada prompt es 3-5 líneas máximo.** Un modelo de 8K procesa esto sin saturarse.
136
+
137
+ ### 3.1 Prompt de ejemplo para Agent-Cleaner
138
+
139
+ ```
140
+ Eres un compresor de contexto para un asistente de código.
141
+ Recibe estas reglas y devuélvelas en su forma más compacta.
142
+
143
+ Reglas críticas a preservar:
144
+ - @kind limits (hook:80, component:120, page:200)
145
+ - @limit NO es sugerencia, bloquea commit
146
+ - @use() obligatorio al inicio
147
+ - Named exports sobre default exports
148
+ - NUNCA: any types, modificar *.template.*, eliminar @use
149
+
150
+ Tarea actual: generar un hook useDebounce
151
+ Contexto a comprimir:
152
+ [CONTEXTO AQUÍ]
153
+
154
+ Output: solo las reglas relevantes para hooks, en formato minimal.
155
+ ```
156
+
157
+ ---
158
+
159
+ ## 4. Modos de Ejecución
160
+
161
+ ### 4.1 Modo Paralelo (múltiples GPUs/instancias)
162
+
163
+ ```
164
+ Tiempo: 0s ─────────────────────────────────────►
165
+
166
+ Agent A (Tipos): ████████░░░░░░░░░░░░░░░░░░░░ 2s
167
+ Agent B (Estado): ██████████░░░░░░░░░░░░░░░░░░ 2.5s
168
+ Agent C (Contrato): ██████░░░░░░░░░░░░░░░░░░░░░░ 1.5s
169
+ │ paralelo
170
+
171
+ Agent D (Lógica): ░░░░░░░░░░░████████░░░░░░░░░░ 2s
172
+ │ secuencial
173
+
174
+ Agent E (Validar): ░░░░░░░░░░░░░░░░░░████████░░ 2s
175
+
176
+ Total: ~6.5s (vs ~10s secuencial, vs ~8s un modelo grande)
177
+ ```
178
+
179
+ ### 4.2 Modo Cola (una sola instancia de modelo)
180
+
181
+ ```
182
+ Agent A → B → C → (paralelo lógico) → D → E
183
+
184
+ Tiempo: ~10s pero con ~4GB RAM en lugar de ~24GB
185
+ Vs un modelo grande: 8s pero necesita 24GB de RAM
186
+ ```
187
+
188
+ ### 4.3 Comparación de costos
189
+
190
+ | Config | RAM | VRAM | Tiempo | Tokens/s | Puede correr en |
191
+ |--------|-----|------|--------|----------|-----------------|
192
+ | 1× Qwen 32B | 24 GB | 20 GB | 8s | ~15 tok/s | RTX 4090, Mac M2 Ultra |
193
+ | 3× DeepSeek 7B (cola) | 12 GB | 8 GB | 10s | ~25 tok/s (compartido) | RTX 3060, Mac M1 Pro |
194
+ | 3× DeepSeek 7B (paralelo) | 12 GB | 24 GB | 6s | ~75 tok/s (3 instancias) | RTX 4090, 2× RTX 3060 |
195
+ | 5× DeepSeek 7B (cola, con cache) | 8 GB | 4 GB | 12s | ~35 tok/s (cuantizado) | Laptop con GPU modesta |
196
+
197
+ La conclusión: **3 modelos chicos en cola en una RTX 3060 dan resultados competitivos vs un modelo grande en RTX 4090**, con un costo de hardware 3-4× menor.
198
+
199
+ ---
200
+
201
+ ## 5. DAG de Tareas (Task Dispatcher)
202
+
203
+ El dispatcher convierte una descripción tipo _"crea hook useAuth"_ en un grafo dirigido:
204
+
205
+ ```json
206
+ {
207
+ "task": "crea hook useAuth con Supabase y Zustand",
208
+ "kind": "hook",
209
+ "dag": {
210
+ "nodes": [
211
+ { "id": "types", "agent": "agent-types", "deps": [] },
212
+ { "id": "state", "agent": "agent-state", "deps": [] },
213
+ { "id": "effects", "agent": "agent-logic", "deps": ["types", "state"] },
214
+ { "id": "final", "agent": "agent-validate", "deps": ["effects"] }
215
+ ]
216
+ }
217
+ }
218
+ ```
219
+
220
+ Reglas del DAG:
221
+ - **Nodos sin dependencias** → se ejecutan en paralelo
222
+ - **Nodos con dependencias** → esperan a que sus predecesores terminen
223
+ - **Si un nodo falla** → se reintenta (según perfil) o se reasigna a otro agente
224
+ - **El DAG es serializable** → se puede cachear y re-ejecutar
225
+
226
+ El DAG se puede representar como Mermaid para visualización:
227
+
228
+ ```mermaid
229
+ graph TD
230
+ Task["hook useAuth"] --> Types[Agent: Tipos]
231
+ Task --> State[Agent: Estado]
232
+ Types --> Logic[Agent: Lógica]
233
+ State --> Logic
234
+ Logic --> Validate[Agent: Validación]
235
+ ```
236
+
237
+ ---
238
+
239
+ ## 6. Integración con el Pipeline Existente
240
+
241
+ Boost no reemplaza el flujo actual de OPL — lo envuelve:
242
+
243
+ ```
244
+ Flujo normal OPL:
245
+ workflow select → ticket → plan → implement → validate → close
246
+
247
+ Con Boost Multi-Agente:
248
+ boost generate "hook useAuth"
249
+
250
+ ├── 1. Profile Registry → detecta small (activa Boost)
251
+ ├── 2. Context Compressor → reduce AGENTS.md
252
+ ├── 3. FewShot Retriever → busca ejemplos
253
+ ├── 4. Task Dispatcher → DAG de agentes
254
+ ├── 5. Agent Pool → ejecuta DAG (paralelo/cola)
255
+ ├── 6. Hydrator → ensambla código final con anotaciones
256
+ ├── 7. Validation Loop → corrige errores
257
+ └── 8. Output → archivo listo para validar
258
+ ```
259
+
260
+ El `opl boost generate` se convierte en el **punto de entrada único** que dispara todo el pipeline multi-agente. Funciona igual para MCP vía `OPL_Boost_microtask`.
261
+
262
+ ---
263
+
264
+ ## 7. Modelo de Datos
265
+
266
+ ### Profile → define capacidades
267
+ ```json
268
+ {
269
+ "name": "small",
270
+ "agentPool": {
271
+ "mode": "queue", // "parallel" | "queue"
272
+ "maxConcurrency": 3, // paralelo máximo
273
+ "modelName": "deepseek-coder-7b",
274
+ "modelProvider": "ollama",
275
+ "modelEndpoint": "http://localhost:11434",
276
+ "contextWindow": 8000,
277
+ "temperature": 0.2,
278
+ "cacheEnabled": true
279
+ },
280
+ "features": {
281
+ "compress": true,
282
+ "fewShot": true,
283
+ "agents": true,
284
+ "hydration": true,
285
+ "validation": true
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### Agent → define un worker
291
+ ```json
292
+ {
293
+ "id": "agent-types",
294
+ "role": "types",
295
+ "modelName": "deepseek-coder-7b",
296
+ "systemPrompt": "Define solo tipos e interfaces. Sin implementación.",
297
+ "inputSchema": { "description": "string" },
298
+ "outputSchema": { "types": "string", "interfaces": "string" },
299
+ "timeoutMs": 30000,
300
+ "retries": 2,
301
+ "cacheTtl": 3600
302
+ }
303
+ ```
304
+
305
+ ### Task → instancia de trabajo
306
+ ```json
307
+ {
308
+ "id": "task_001",
309
+ "description": "crea hook useAuth con Supabase",
310
+ "kind": "hook",
311
+ "dag": { "nodes": [...] },
312
+ "profile": "small",
313
+ "status": "running",
314
+ "startedAt": "2026-05-26T14:00:00Z",
315
+ "agents": {
316
+ "agent-types": { "status": "completed", "output": "..." },
317
+ "agent-state": { "status": "running", "output": null },
318
+ "agent-logic": { "status": "pending", "output": null },
319
+ "agent-validate":{ "status": "pending", "output": null }
320
+ },
321
+ "metadata": {
322
+ "totalTime": 0,
323
+ "tokenCount": 0,
324
+ "retries": 0
325
+ }
326
+ }
327
+ ```
328
+
329
+ ---
330
+
331
+ ## 8. Cache Inteligente
332
+
333
+ Resultados de agentes se cachean para reúso:
334
+
335
+ | Clave de caché | Se cachea | TTL | Beneficio |
336
+ |---------------|-----------|-----|-----------|
337
+ | `compress:{task.kind}` | Contexto comprimido | 1 hora | No re-comprimir por cada generate |
338
+ | `fewshot:{kind}:{domain}` | Ejemplos encontrados | 1 día | No re-buscar en knowledge-repo |
339
+ | `agent:{role}:{input_hash}` | Output del agente | 5 min | No re-ejecutar idéntico input |
340
+ | `dag:{task_hash}` | Plan de tareas | 5 min | No re-planificar tarea idéntica |
341
+
342
+ La caché vive en `.opencode/boost/cache/` y se limpia automáticamente.
343
+
344
+ ---
345
+
346
+ ## 9. Comparación: Plan Original vs Multi-Agente
347
+
348
+ | Aspecto | Plan original (micro-tasking) | Multi-agente |
349
+ |---------|------------------------------|--------------|
350
+ | Modelo subyacente | 1 modelo principal | Múltiples modelos pequeños |
351
+ | Paralelismo | Solo secuencial | Paralelo + secuencial |
352
+ | Especialización | El mismo modelo hace todo | Agentes especializados |
353
+ | Tolerancia a fallos | Si falla, reinicia | Reasigna agente |
354
+ | Cache | No | Sí, por agente |
355
+ | Costo hardware | GPU grande (24GB+) | GPU modesta (8-12GB) |
356
+ | DAG | Lineal | Grafo dirigido con dependencias |
357
+ | AI Cleaner | No | Sí (agente dedicado) |
358
+
359
+ ---
360
+
361
+ ## 10. Tickets Actualizados (versión Multi-Agente)
362
+
363
+ | ID | Título | Depende de |
364
+ |----|--------|------------|
365
+ | BOOST-001 | ✅ Profile Registry + Config Base | — |
366
+ | BOOST-002 | Context Compressor (Capa 1 + AI Cleaner) | BOOST-001 |
367
+ | BOOST-003 | Template Hydration System | BOOST-001 |
368
+ | BOOST-004 | Few-Shot Engine | BOOST-001 |
369
+ | BOOST-005 | Agent Pool + Task Dispatcher | BOOST-001 |
370
+ | BOOST-006 | Agentes Especializados (types, state, logic) | BOOST-005 |
371
+ | BOOST-007 | Validation Loop + Agent Validate | BOOST-006 |
372
+ | BOOST-008 | Orchestrator (index.js + progressive pipeline) | BOOST-007 |
373
+ | BOOST-009 | Cache System | BOOST-008 |
374
+ | BOOST-010 | CLI + MCP Integration | BOOST-009 |
375
+ | BOOST-011 | Auto-aprendizaje: feedback entre sesiones | BOOST-010 |
376
+
377
+ ---
378
+
379
+ ## 11. Preguntas Abiertas para Discutir
380
+
381
+ 1. **¿Paralelismo real o cola?** — ¿Vale la pena tener múltiples instancias del modelo, o basta una en cola (más lento pero menos RAM)?
382
+
383
+ 2. **¿Cuántos agentes simultáneos?** — 3 en paralelo? 5? ¿El usuario configura?
384
+
385
+ 3. **¿Soporte para diferentes providers?** — Solo Ollama? ¿O también OpenAI API, Anthropic? Podríamos mezclar: un agente barato (local) + otro caro (API) solo para validación.
386
+
387
+ 4. **¿Cache por sesión o persistente?** — TTL de 1 hora parece razonable, pero ¿el usuario puede limpiar manualmente?
388
+
389
+ 5. **¿Cuándo activar Boost automáticamente?** — ¿Solo cuando el perfil es "small"? ¿O también como opción voluntaria en "medium"?
390
+
391
+ 6. **¿El AI Cleaner debe ser obligatorio?** — ¿O el usuario decide si quiere usar un modelo para comprimir contexto (más preciso) o la capa determinística (más rápido)?
392
+
393
+ 7. **¿Cómo exponer el DAG al usuario?** — Un `opl boost microtask --dag` que muestre el grafo antes de ejecutar, para que el usuario entienda qué va a pasar.
394
+
395
+ ---
396
+
397
+ ## 12. Recursos Relacionados
398
+
399
+ - **Paper**: Mixture-of-Agents Enhances Large Language Model Capabilities (Together AI, 2024)
400
+ - **Tecnología base**: Ollama (`ollama run deepseek-coder-7b`)
401
+ - **Proyecto OPL existente**: `src/boost/` (en construcción), `src/cli/commands-boost.js`
402
+ - **Tickets activos**: `docs/04-TICKETS/INDEX.md`
403
+
404
+ ---
405
+
406
+ *Este documento es un diseño vivo. Se actualiza a medida que evoluciona el módulo Boost.*
@@ -0,0 +1,89 @@
1
+ # AGENTS.template.md — Plantilla Universal para Proyectos
2
+
3
+ > **Versión:** 1.0
4
+ > **Uso:** La IA debe ejecutar el Protocolo de Inicialización al detectar un proyecto sin AGENTS.md o con AGENTS.md incompleto.
5
+
6
+ ---
7
+
8
+ ## Protocolo de Inicialización — EJECUTAR AUTOMÁTICAMENTE
9
+
10
+ Cuando la IA detecte un proyecto NUEVO o un proyecto EXISTENTE sin AGENTS.md completo, DEBE ejecutar los siguientes pasos EN ORDEN:
11
+
12
+ ### Paso 1: Detectar el stack del proyecto
13
+ ```
14
+ Leer package.json:
15
+ - Buscar en dependencies/devDependencies: react, vue, angular, next, svelte, etc.
16
+ - Buscar runtime: node, deno, bun
17
+ - Buscar DB: supabase, firebase, prisma, mongoose, etc.
18
+ - Buscar CSS: tailwind, styled-components, emotion, etc.
19
+ - Buscar lenguaje: typescript (tsconfig.json), javascript
20
+ - Buscar plataforma: ionic, capacitor, tauri, electron, etc.
21
+ ```
22
+
23
+ ### Paso 2: Inicializar openPrompt-Lang
24
+ ```
25
+ ejecutar: opl init → Crea prompt-lang.json y estructura base docs/
26
+ ```
27
+
28
+ ### Paso 3: Generar AGENTS.md con el stack detectado
29
+ ```
30
+ Copiar ESTE archivo como AGENTS.md en la raíz del proyecto.
31
+ Reemplazar "## Stack" con las tecnologías detectadas.
32
+ Reemplazar "## Perfil" según nivel (senior por defecto).
33
+ ```
34
+
35
+ ### Paso 4: Detectar archivos fuente sin anotaciones
36
+ ```
37
+ ejecutar: npx openprompt-lang validate
38
+ Archivos que DEBEN tener @use: service, hook, page, context, component
39
+ ```
40
+
41
+ ### Paso 5: Verificar cobertura
42
+ ```
43
+ Calcular: (archivos con @use / archivos que deben tener @use) * 100
44
+ Si cobertura < 80% → seguir agregando anotaciones
45
+ ```
46
+
47
+ ### Paso 6: Verificar estado del proyecto
48
+ ```
49
+ ejecutar: npx tsc --noEmit → 0 errores
50
+ ejecutar: npx openprompt-lang validate → 0 errores
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Stack
56
+ <!-- COMPLETAR con tecnologías del proyecto -->
57
+ - react
58
+ - tailwind
59
+ - typescript
60
+
61
+ ## Convenciones
62
+ - Anotaciones OPL con @kind, @contract, @limit
63
+ - NO usar any
64
+ - NO superar límites de líneas sin refactorizar
65
+ - TODO list para tareas >3 pasos
66
+
67
+ ## Enforcement — REGLAS QUE SE CUMPLEN O SE BLOQUEA
68
+
69
+ ```
70
+ PRE-COMMIT HOOK ACTIVO:
71
+ npx openprompt-lang validate --strict + tsc --noEmit
72
+ Bloquea commits si hay violaciones @limit
73
+
74
+ REGLA FUNDAMENTAL:
75
+ @limit(lines: N) NO es una sugerencia — es un LÍMITE que bloquea el commit.
76
+ Si un archivo supera su @limit, refactorizar ANTES de committear.
77
+
78
+ LECCIÓN APRENDIDA (RULES-001):
79
+ Las reglas sin enforcement son aspiraciones.
80
+ Las reglas CON enforcement son restricciones. Este proyecto usa enforcement.
81
+ ```
82
+
83
+ ## Perfil
84
+ <!-- COMPLETAR: senior, mid, junior -->
85
+ senior
86
+
87
+ ## Referencias
88
+ - Framework: openPrompt-Lang
89
+ - Tickets OPL: `opl ticket list`