Cómo se reparte el gasto del framework y qué palancas hay para reducirlo sin perder capacidad de resolver la box. Resumen: el grueso del coste está en el Orquestador, no en los subagentes.
| Componente | Por qué pesa |
|---|---|
Orquestador (sesión principal del bot / claude -p) |
Corre en cada turno con el contexto creciente (AGENTS.md + preset + blackboard). Es el término dominante. |
| Subagentes | Uno por Task; coste acotado a su tarea. 9 mecánicos en haiku, 11 en sonnet, 7 en opus. |
| Prompt caching | Automático en Claude Code / Agent SDK (system prompt + tools + defs de agente + contexto estático). No hay que activarlo. Cambiar de modelo/effort a media sesión invalida la caché. |
El bot ya imprime el coste real al terminar cada orden:
✅ Completado · N turnos · $X.XX(bot/intel/runner.py). Re-medir = correr un engagement y leer esa línea. No hace falta instrumentar nada.
Para un desglose histórico y por agente (más allá del total por orden que imprime el bot), la
suite integra agentsview: analítica local-first que lee
~/.claude/projects/ y calcula coste/tokens por sesión, día, modelo y agente. El auto-deploy
instala el binario (versión fijada + verificación SHA256); el daemon se arranca a propósito:
./deploy/agentsview.sh up # dashboard en http://127.0.0.1:8080 (local-only, telemetria off)
./deploy/agentsview.sh usage # desglose de coste/uso por dia en la terminal (--agent, --since…)Higiene (innegociable): los transcripts de ~/.claude/projects/ contienen datos de cliente en
claro → agentsview se usa siempre local (vincula a 127.0.0.1, telemetría off con
AGENTSVIEW_TELEMETRY_ENABLED=0), nunca con --public-url, y en una máquina del operador. Es
read-only sobre los transcripts. Decláralo en el NDA/ROE como índice local de sesiones.
| Tier | Agentes | Criterio |
|---|---|---|
claude-opus-4-8 |
web-exploit, api-exploit, mobile-exploit, firmware-exploit, post-exploit, ai-security, reporting | razonamiento profundo que rompe la box / calidad del informe |
claude-sonnet-4-6 |
vuln-triage, sqlmap, metasploit, netexec, ad-enum, kerberos, adcs, sliver, lateral-discovery, c2-exfil, network-exploit | tool-driving con juicio; el RAG hace el trabajo pesado |
claude-haiku-4-5 |
osint-recon, recon-suite, active-recon, api-recon, mobile-recon, firmware-recon, web-fuzzing, nuclei, knowledge-postmortem | recon/escaneo/parseo mecánico (sin effort: Haiku da 400) |
Principio: opus solo donde un peor razonamiento te hace fallar la box (y gastar MÁS turnos rehaciendo). Bajar de tier un agente mecánico no cambia el resultado y abarata cada llamada.
| Variable | Efecto | Defecto |
|---|---|---|
ORCH_MODEL |
Modelo del Orquestador | claude-opus-4-8 |
ORCH_EFFORT |
effort del Orquestador (low…max); más bajo = menos tokens y menos preámbulo |
medium |
ORCH_MAX_USD |
Techo de coste por orden en USD; corta al alcanzarlo | sin techo |
Se aplican de forma defensiva: si la versión instalada del SDK no expone effort/max_budget_usd,
el runner degrada (effort → flag CLI; techo USD se omite) sin romper la sesión.
- Free cloud no-train (perfil ACTIVO).
tools/routing.jsonenruta los 5 agentes mecánicos (recon/escaneo/parseo) a Groq y Cerebras, providers gratuitos que no entrenan con los prompts. Solo afecta al runtime opencode — sirve para practicar/desarrollar contra laboratorios propios sin gastar. Claves por entorno (GROQ_API_KEY/CEREBRAS_API_KEY, ver.opencode/opencode.example.env); opencode las lee con{env:VAR}, sinauth login. - Más catálogo (opt-in manual).
DeepSeek,MiniMax,GLM (zhipu)yOpenRouter :freeestán declarados en.opencode/opencode.jsonpero NO enrutados (entrenan/residencia sensible). Para usar uno: pon suprovider/modelenrouting.jsony exporta su clave. Detalle y gotchas (IDs con/, Anthropic-compatible vs OpenAI-compatible) en.opencode/README.md. - Alternativa offline. Cambia la ruta a
ollama/<modelo>(coste cero, el dato no sale del equipo; requiereollama serve+ollama pull). - Reglas duras (innegociables). Todo lo anterior es LAB-ONLY: jamás datos de cliente,
nunca en E2/E3. En el perfil ACTIVO solo van a free los agentes mecánicos (nunca
triage/explotación/reporting): el riesgo de fuga es mayor en providers que entrenan. La única
excepción es el perfil NVIDIA LAB completo (ver abajo) — NVIDIA no entrena (s/ ToS) y se usa solo
para smoke-test de cableado contra labs sintéticos (la medición oficial del GATE sigue en Claude).
Revertir a 100% Anthropic = vaciar
routes({}) +python tools/sync_opencode.py. - El bot real sigue 100% Anthropic. El free cloud en el bot sigue sin implementar (decisión deliberada): los free-tier tienen rate-limits agresivos, Claude Code no tiene fallback (si el proveedor corta, la llamada muere a mitad de run) y los modelos no-Claude dan quirks de tool-protocol. Para engagements con datos de cliente → 100% Anthropic.
Groq/Cerebras solo ofrecen modelos no-razonadores, por eso el perfil activo solo enruta los 5
agentes mecánicos. NVIDIA NIM cambia eso: una sola clave (NVIDIA_API_KEY) da modelos de
razonamiento gratis (DeepSeek-R1, Llama-3.3-Nemotron-Super-49B) + generalistas (Llama-3.3-70B,
GPT-OSS-120B). Eso permite, en laboratorio, llevar a free toda la cadena —no solo recon— para
smoke-test del pipeline del GATE sin gastar Anthropic.
Análisis modelo↔agente (qué modelo NVIDIA encaja con cada tier):
| Tier (modelo Anthropic) | Agentes | Modelo NVIDIA free recomendado | Por qué |
|---|---|---|---|
| haiku (mecánico) | osint-recon, active-recon, recon-suite, api-recon, mobile-recon, firmware-recon, web-fuzzing, nuclei | meta/llama-3.3-70b-instruct |
recon/escaneo/parseo: rápido y suficiente |
| sonnet (tool-driving) | sqlmap, metasploit, netexec, sliver, c2-exfil | openai/gpt-oss-120b |
conduce tools con juicio; el RAG hace lo pesado |
| sonnet (razona-medio) | vuln-triage, lateral-discovery, network-exploit | nvidia/llama-3.3-nemotron-super-49b-v1 |
correlación/decisión con razonamiento |
| opus (razona-profundo) | web-exploit, api-exploit, mobile-exploit, firmware-exploit, post-exploit, ai-security | deepseek-ai/deepseek-r1 |
razonamiento que rompe la box |
| opus (informe) | reporting | nvidia/llama-3.3-nemotron-super-49b-v1 |
redacción estructurada |
| — (memoria) | knowledge-postmortem | (se queda en Anthropic) | escribe lecciones a memoria; no arriesgar calidad |
Caveat innegociable. Este perfil "NVIDIA LAB completo" es solo para smoke-test del cableado del pipeline contra laboratorios sintéticos propios (validar que el flujo end-to-end corre sin errores). La medición OFICIAL de capacidad del GATE se corre con Claude — los free-tier degradan calidad y tienen rate-limits (~40 RPM). Sigue siendo LAB-ONLY: jamás datos de cliente, nunca E2/E3; el bot real de engagements es 100% Anthropic. El espejo opencode NO ejecuta los hooks deterministas (scope_guard/C1–C23) ni el bus A2A (es inherente a opencode, no a NVIDIA): corrobora el cableado, no es la medición oficial. El perfil vive en el fichero versionado
tools/routing.nvidia-lab.json; aplícalo conpython tools/apply_routing.py nvidia-lab(revierte conpython tools/apply_routing.py default), o elauto-deploy.shlo ofrece (--opencode-nvidia/ interactivo). El Orquestador yknowledge-postmortemse quedan en Anthropic.
El gate de alcance (scope_guard), los guardarraíles deterministas (C11–C21) y la aprobación humana
por acción quedan intactos. La optimización es de coste, no de seguridad.