Fable 5 + GPT-5.6: La guía completa de la A a la Z para construir un stack de agentes que trabaja mientras duermes
Esta es la construcción completa, en orden, con un punto de control después de cada pieza.
Guarda estas 12 construcciones antes de que las olvides.
Introducción
Tienes los dos modelos más capaces jamás creados y disponibles para el público, y aún así los usas de a uno por vez, manualmente.
Tres cosas cambiaron en el último mes.
- Claude Fable 5 planifica a través de etapas, despliega sus propios subagentes y verifica su propio resultado. $10 por millón de tokens de entrada, $50 de salida.
- GPT-5.6 se lanzó el 9 de julio en tres niveles permanentes. Sol a $5 y $30, Terra a la mitad de Sol, Luna a $1 y $6. OpenAI ahora vende la decisión de enrutamiento como producto.
- Fable 5 estuvo 19 días de junio suspendido bajo una orden de exportación. La disponibilidad ahora es algo que te pasa.
Usados al azar, estos modelos son una forma costosa de generar cosas impresionantes pero incorrectas.
Usados dentro de un sistema, son lo más parecido a un empleado que puedes alquilar. Las cifras empresariales de Anthropic sitúan a Claude Code en unos $13 por desarrollador por día activo. OpenAI sitúa a Codex entre $100 y $200 al mes.
Esta guía construye ese sistema en doce construcciones: los archivos reales, en orden, cada uno probado antes de publicar, con un punto de control después de cada uno para que sepas que una pieza funciona antes de apilar la siguiente.
Es para cualquiera que tenga un repositorio, una terminal y acceso a cualquiera de las dos CLI. Los ejemplos tienen sabor a código porque los bucles crecieron alrededor del código, pero el enrutador, el asesor y la puerta funcionan igual con facturas e informes.
Léelo en orden, haciendo las comprobaciones. Cada construcción toma de 10 a 20 minutos, unas dos horas en total. Los 30 días al final son el cronograma durante el cual el sistema gana el derecho a funcionar sin ti.
Tres principios predicen cada decisión de diseño a continuación:
- Enruta en los límites. Esfuerzo antes que modelo. Un cambio de modelo a mitad de sesión quema un descuento de caché del 90 por ciento. Aumentar el esfuerzo de razonamiento en el mismo modelo no cuesta nada extra en la plomería.
- Nadie califica su propia tarea. Escritor, enrutador, asesor y revisor son partes diferentes, de linajes diferentes cuando sea posible, y el voto final es un script de bash.
- "Hecho" es un hecho sobre el entorno. Un conjunto de pruebas que pasa, un archivo de tareas marcado, una línea de veredicto. Nunca la opinión del modelo sobre sí mismo.
El mapa, y por qué el habitual está mal
La ingeniería de bucles es un flujo de trabajo de agentes con una condición de parada explícita y lógica de reintento. El arnés decide cuándo el trabajo está terminado, en lugar de dejarle al modelo la pregunta "¿terminé?"
La imagen estándar es el stack Loopcraft de swyx: cinco bucles anidados unos dentro de otros, ejecución dentro de tarea dentro de producto dentro de sistema dentro de supervisión, cada uno con su propia salida. Es el mejor que nadie ha dibujado.
Lo usé durante semanas. Luego intenté construir contra él, y se rompió en cuatro lugares.
1) Problema uno: los bucles no se anidan.
Anidar significa que una vuelta del bucle exterior equivale a una ejecución completa del bucle interior. Eso no es lo que sucede. El bucle del sistema no espera a que el bucle del producto termine. Se ejecuta el domingo haya o no haya envíos.
Puedes interrumpir un flujo de tokens manualmente sin desenrollar cuatro capas. Es una imagen de contención dibujada sobre un sistema que hace transferencias.
2) Problema dos: un bucle dibujado como infinito es una factura.
El original dibuja el bucle del producto de esa manera. En la práctica termina por un presupuesto, por un punto de control o porque alguien pierde la paciencia.
Llamar a eso "ninguno por diseño" oculta el lugar exacto por donde se escapa el dinero de un sistema de agentes: un bucle al que nadie le dijo cómo salir.
3) Problema tres: no hay una interrupción de emergencia.
Cada capa tiene un final feliz y ninguno infeliz. Los bucles reales necesitan ambos: cómo se cierra cuando funciona, y cómo se detiene cuando no puede.
Cada factura descontrolada que he visto era un bucle con una salida definida y una interrupción indefinida.
4) Problema cuatro: falta la verificación, y es todo el juego.
La verificación es el contrato entre capas. Cuando un bucle inferior entrega un informe en lugar de un hecho a un bucle superior, el bucle superior se cierra con una mentira.
Esa única brecha es la razón por la que un bucle puede alcanzar su condición de parada y seguir estando equivocado.
Esta es la versión contra la que construyo.
La Escalera de Evidencia
Seis peldaños, dos salidas cada uno, y una regla: el control fluye hacia abajo como objetivos, la evidencia fluye hacia arriba como hechos, y ningún peldaño puede cerrarse con un informe del peldaño inferior.

Cinco leyes se derivan de la forma.
Cada peldaño tiene una interrupción, o es una factura. Si no puedes nombrar cómo termina mal un bucle, has construido una suscripción. Por eso ralph.sh lleva dos límites y el enjambre lleva un límite de ciclos.
La evidencia fluye hacia arriba y el control fluye hacia abajo. Un peldaño se cierra con un hecho producido debajo de él, nunca con un resumen escrito debajo de él.
La puerta de la fábrica es esta ley en SQL. Dos revisores dijeron verde. La puerta aún se negó, porque nadie había producido una fila de prueba que pasara.
Un veredicto es una opinión. Una fila es evidencia.
El costo por vuelta se multiplica aproximadamente por diez por peldaño.
Un error que escapa del peldaño 2 cuesta diez veces más detectarlo en el peldaño 3, y cien veces más en el peldaño 4.
Ese es el argumento completo para poner tu mejor verificación tan abajo en la escalera como sea posible, por lo que la puerta es un script de bash y no una reunión.
La escala de tiempo pertenece al modelo, no al peldaño.
El peldaño 2 tomaba minutos en 2024, toma horas en 2026, y pronto tomará días. Diseña en función de la condición de salida, nunca en función del reloj. Aquí es donde la imagen antigua envejece más rápido.
Solo el peldaño 5 no tiene condición de salida, y eso es lo que significa humano.
Tú vives allí. La escalera existe para ganarse una frase: un bucle puede alcanzar su condición de parada y seguir estando equivocado.
Las pruebas pasan, la puerta se pone verde, ambos revisores firman, y el último commit sigue siendo un error. Cada peldaño debajo de ti existe para hacer esa comprobación más pequeña. Ninguno puede quitártela.
Requisitos previos
1claude CLI (Claude Code) with Fable 5 access2codex CLI with GPT-5.6 access # or the official plugin inside Claude Code3python3, jq, git, gh, make, cron4a repo with a test command that works today56# optional, for mixed fleets (BUILD 7):7openai/codex-plugin-cc # official: run Codex inside Claude Code8claude-model-switch # local proxy: any provider behind Claude Code9CLIProxyAPI # wrap CLI subscriptions as API endpoints
Lo que estás construyendo
1tu-repo/2 CLAUDE.md # BUILD 1: constitución del lado de Claude3 AGENTS.md # BUILD 1: constitución del lado de Codex4 .claude/5 skills/model-bench/SKILL.md # BUILD 0: precios, IDs de API, respaldos. el único archivo con números6 skills/model-router/SKILL.md # BUILD 47 skills/stuck-protocol/SKILL.md # BUILD 58 skills/ship-gate/SKILL.md # BUILD 29 agents/fable-expert.md # BUILD 510 agents/fresh-eyes-reviewer.md # BUILD 611 agents/sol-reviewer.md # BUILD 612 agents/scout.md # BUILD 713 loop/14 ralph.sh # BUILD 3: el latido15 two_lane.sh # BUILD 6: bucle de revisión entre proveedores16 PROMPT.md TASKS.md # BUILD 3: el protocolo de trabajo17 gate/18 verify.sh # BUILD 2: voto final determinista19 eval_gate.py eval/cases.jsonl # BUILD 2: puerta de cambios de enrutamiento20 router/21 router.py # BUILD 422 advisor_loop.py # BUILD 523 ~/.codex/24 config.toml # BUILD 0: perfiles luna/terra/sol25 prompts/effort.md # /effort puntúa la tarea, nombra el asiento26 prompts/plan-stop.md # /plan-stop planifica, ponle precio, luego para27 prompts/fable-advice.md # /fable-advice consulta de experto entre proveedores28 prompts/review-hostile.md # /review-hostile veredicto de contexto limpio29 prompts/compost.md # /compost los fallos se convierten en leyes, semanalmente30 factory/31 factory_gate.py # BUILD 8: pizarra + puerta de finalización32 factory.sh # BUILD 8: brief -> implementar -> revisar -> puerta33 factory.db # BUILD 8: las filas que deciden34 swarm/35 swarm.sh # BUILD 9: planificar -> despachar -> puntuar -> replanificar36 goals.jsonl # BUILD 9: un objetivo por línea, cada uno con su verificación37 system/38 verify_goals.py # BUILD 10: reverificación diaria, para siempre39 goals/ # BUILD 10: un archivo por cosa terminada40 ROUTING.md # BUILD 12: la política de enrutamiento completa, ambos arneses41 progress.log # cada construcción añade aquí42 # opcional (BUILD 7): proxy claude-model-switch en localhost:4000,43 # CLIProxyAPI para envolver suscripciones CLI como endpoints de API
BUILD 0: Configurar los Motores
Configura estos antes de escribir cualquier archivo propio. Cada número a continuación fue verificado contra las páginas de precios oficiales la semana de la publicación.
El banco: cada asiento, julio de 2026
La plantilla de la que el sistema contrata.
Los precios viven en un solo archivo de skill, .claude/skills/model-bench/SKILL.md, cargado bajo demanda antes de cualquier pregunta de enrutamiento o costo. Ningún otro archivo tiene un número fijo.
Los precios se movieron tres veces en las seis semanas anteriores a la redacción de esto. Un precio en un artículo está desactualizado en el momento de la publicación. Un precio en un archivo de skill es una edición.

La división que lo decide todo río abajo:
- Fable 5 lidera el trabajo de software complejo. 80 por ciento en SWE-Bench Pro frente al 64.6 de Sol, y supera a Sol en inteligencia general.
- Sol lidera el trabajo de terminal y agentes. 88.8 por ciento en Terminal-Bench 2.1, y encabeza el índice de agentes de codificación a aproximadamente un tercio del costo de Fable por tarea.
Esa división es la razón por la que este sistema es de dos proveedores. Fable juzga y planifica, Sol revisa y maneja terminales, y ninguno de los dos hace la mayor parte de la escritura.

Dos asientos que la gente malinterpreta.
Opus 4.8 no es el buque insignia antiguo acumulando polvo. Es el respaldo automático de Fable y el valor predeterminado recomendado para codificación de agentes compleja. Tu sistema lo hereda, lo planifiques o no.
Sonnet 5 a precio de introducción es la mejor relación calidad-precio del mercado. Cerca de Opus 4.8 en capacidad a una fracción del precio de entrada de Fable, por lo que es el ejecutor predeterminado en todas partes de esta construcción. Esa tarifa vence el 31 de agosto, y el archivo de skill ya lo sabe.
Ese archivo de skill es el único archivo en el sistema que contiene un número:
1---2name: model-bench3description: La hoja de precios actual, los IDs de modelo de API y la cadena de respaldo para cada4 modelo que este sistema puede contratar. Cargar antes de cualquier decisión de enrutamiento, estimación de costos,5 pregunta de presupuesto, comparación de modelos, o cuando el usuario pregunte cuánto cuesta algo.6---78# Banco de modelos910Fuente única de verdad para precios e identificadores de API. Nada más en este repositorio11tiene un precio fijo, así que cuando los laboratorios cambien sus tarifas, editas este archivo y12nada más. Verificado el 2026-07-13. Los precios cambian. Vuelve a verificar antes de presupuestar.1314## Anthropic (API de Mensajes, /v1/messages)1516Esfuerzo: output_config {"effort": "low|medium|high|xhigh|max"}. El pensamiento adaptativo17siempre está activo para Fable 5 y no se puede deshabilitar. max_tokens limita el pensamiento MÁS18el texto de respuesta, así que establécela grande (empieza cerca de 64k) en alta y superior, o el modelo19se queda sin espacio a mitad del pensamiento.2021| Modelo | Entrada/Salida por Mtok | Lectura de caché | Asiento |22|---|---|---|---|23| claude-fable-5 | $10/$50 | $1.00 | director, planificador, asesor, juez. Vuelve a opus-4-8 automáticamente |24| claude-opus-4-8 | $5/$25 | $0.50 | director bajo reglas de retención |25| claude-sonnet-5 | $2/$10 (hasta el 31 de agosto, luego $3/$15) | n/d | ejecutor de codificación predeterminado |26| claude-haiku-4-5 | $1/$5 | $0.10 | exploradores, subagentes, trabajo mecánico |27281M de contexto en Fable, Opus 4.8, Sonnet 5, con precio FIJO en contexto largo, por lo que29las lecturas largas se enrutan aquí. Salida máxima 128K.3031## OpenAI (API de Respuestas, /v1/responses)3233| Modelo | Entrada/Salida por Mtok | En caché | Asiento |34|---|---|---|---|35| gpt-5.6-sol | $5/$30 | $0.50 | revisor entre proveedores, trabajo de terminal |36| gpt-5.6-terra | $2.50/$15 | $0.25 | controlador diario de Codex (probar primero contra Luna) |37| gpt-5.6-luna | $1/$6 | $0.10 | trabajo mecánico, ticks silenciosos |3839El contexto largo por encima del umbral aproximadamente DUPLICA el precio de entrada, a diferencia de los niveles40planos de 1M de Anthropic. Primera familia con puntos de ruptura de caché explícitos; las escrituras cuestan 1.25x.4142## Pesos abiertos (trabajadores masivos)4344| Modelo | Entrada/Salida por Mtok | Acierto de caché |45|---|---|---|46| deepseek-v4-flash | $0.14/$0.28 | $0.0028 (aproximadamente 98 por ciento de descuento) |47| deepseek-v4-pro | $0.435/$0.87 | n/d |48| kimi-k2.7-code | $0.95/$4.00 | $0.19 |4950## Descuentos que se acumulan51 - las lecturas de caché cuestan una décima parte de la entrada nueva en ambos laboratorios (aproximadamente 90 por ciento de descuento)52 - las escrituras de caché se amortizan después de una lectura (5m) o dos (1h)53 - las API por lotes tienen un 50 por ciento de descuento en ambas direcciones54 - lote + lectura de caché en un prefijo repetido alcanza cerca del 95 por ciento de descuento55 - el tokenizador más nuevo de Anthropic genera aproximadamente un 30 por ciento más de tokens por el mismo56 texto, por lo que el costo efectivo está por encima del precio de etiqueta. Presupuesta sobre el efectivo.5758## Cómo responder a una pregunta de costo59 1. Estima la entrada y la salida por separado. Los agentes leen aproximadamente 100 tokens por cada60 1 que escriben, por lo que la entrada domina y la tasa de aciertos de caché decide la factura.61 2. Aplica la tasa de lectura de caché al prefijo repetido, no a la tasa base.62 3. Multiplica las cifras de Anthropic por aproximadamente 1.3 para el tokenizador.63 4. Cotiza un rango, nombra los supuestos, di qué línea de este archivo usaste.64 5. Si el número supera el límite diario del repositorio, dilo ANTES de ejecutar algo.6566Nunca presentes un precio que no hayas leído de este archivo. Un modelo no listado aquí no está67en el banco, y agregar uno es un cambio de enrutamiento que pasa por la puerta.
Siete datos que cambian la forma de construir:
- La entrada en caché tiene un 90 por ciento de descuento en ambos laboratorios. Una marca de tiempo en tu prompt del sistema lo quema en cada llamada. Prefijo estable, historial de solo añadir, siempre. Los agentes leen aproximadamente 100 tokens por cada 1 que escriben, por lo que este descuento es la mayor parte de tu factura.
- Las escrituras en caché cuestan más pero se amortizan rápido. La escritura de 5 minutos de Anthropic factura 1.25x y se equilibra después de una sola lectura. GPT-5.6 es la primera familia de OpenAI con puntos de ruptura de caché explícitos y escrituras con precio. Arquitectura alrededor de la caché como un programador de sistemas arquitectura alrededor de una jerarquía de memoria.
- El tokenizador más nuevo de Anthropic genera aproximadamente un 30 por ciento más de tokens por el mismo texto. El precio efectivo está por encima del precio de etiqueta. Presupuesta sobre el efectivo.
- Un rechazo de seguridad de Fable 5 no es un error. La llamada tiene éxito y el trabajo cae en Opus 4.8, por diseño, en menos del 5 por ciento de las sesiones. Lee lo que sucedió, no solo el código de salida, y configura la cadena de respaldo antes de necesitarla.
- No uses el nivel medio por defecto. Pruebas independientes encontraron que algún ajuste de Luna o Sol siempre supera a Terra en la frontera costo-calidad. Prueba Terra contra Luna con tu propio tráfico antes de pagar por ello.
- Las API por lotes reducen a la mitad cualquier cosa que pueda esperar hasta el día siguiente, y el descuento se acumula con el almacenamiento en caché: los prefijos repetidos en trabajo por lotes rondan el 95 por ciento de descuento. El quemador nocturno en BUILD 7 existe para explotarlo.
- La disponibilidad es un riesgo operativo, no una hipótesis. Fable 5 perdió 19 días en junio. Cada referencia de modelo aquí tiene un respaldo: fable-5 cae a opus, sol cae a terra, y cada respaldo se registra.
El segundo medidor: un asiento no es una clave de API
Cada número anterior tiene precio en dólares por millón de tokens. Esa es la moneda correcta si pagas por llamada.
Es la incorrecta si ejecutas esto en un asiento de Codex Pro de $200 o un asiento de Claude Max.
En un asiento, el medidor es una ventana de cinco horas y una ventana semanal, evaluadas juntas, y una solicitud cuenta contra ambas.
Puedes estar sobrado en la semana y aún así bloqueado durante cuatro horas, porque un solo mensaje consumió la ventana corta.
Misma doctrina. Moneda diferente. Tres ajustes deciden cuánto de una ventana puede tomar un mensaje:

El modo rápido es el caro, porque multiplica un número que acaba de hacerse más grande.
GPT-5.6 se ejecuta mucho más tiempo por mensaje que 5.5. En su mayoría es un regalo. También hace que el consumo sea impredecible.
- Theo informa haber quemado más de $200,000 en tokens de Sol
- Ha visto un solo mensaje de 5.6 tomar el 15 por ciento de una ventana de cinco horas
- Con el multiplicador, eso es el 40 por ciento de la ventana en un solo mensaje
La velocidad no es gratis. Lo que te cobra son los tokens que ibas a quemar de todos modos. Vuelve a leer el multiplicador en la documentación de velocidad antes de confiar en él: se publica por modelo, y se mueve.
Ultra es la trampa más sutil, porque la interfaz lo archiva donde viven los niveles de esfuerzo y no es uno de ellos.
- Max es profundidad. Un modelo, un problema, más tiempo en una sola cadena de razonamiento.
- Ultra es amplitud. El trabajo se divide en cuatro agentes, luego se sintetiza.
- Ejes diferentes. Ultra no es "más que max".
Apuntado a una tarea que no se divide realmente, ultra compra cuatro agentes duplicando una investigación.
Vale aproximadamente 3.1 puntos en Terminal-Bench 2.1, de 88.8 a 91.9, por el consumo de toda una flota. Apagado hasta que los límites entre los subproblemas sean reales.
Por qué Sol y Terra son ambos valores predeterminados correctos
Un informe de campo ejecuta Sol para casi todo. El banco anterior hace de Terra el controlador diario de Codex. Ambos tienen razón, y el medidor es la razón.
- La tarjeta de tarifas dice que el costo de salida de Sol es el doble que el de Terra
- El asiento dice que ya pagaste
- Por lo tanto, la única pregunta activa es cuántas vueltas se necesitan para llegar a verde
- Un modelo más fuerte con un esfuerzo menor generalmente necesita menos
La tarifa no es el costo. El costo es la tarifa multiplicada por las vueltas hasta el verde, y el segundo término es el que se mueve.
Lo cual es la ley de BUILD 4 llegando desde la otra dirección: actualiza el asiento antes de tocar el dial. En un asiento que se lee como Sol en alto en el nivel de $200, Sol en bajo debajo de él. Mide antes de creer en cualquiera de los dos.
Configura los niveles de Codex ahora:
1# ~/.codex/config.toml2model = "gpt-5.6-terra" # controlador diario3model_reasoning_effort = "medium"4# service_tier = "fast" # DÉJALO COMENTADO. el modo rápido factura 2.5x5 # créditos. ejecuta /fast status para confirmar que6 # no estás ya en él.78[profiles.fast] # trabajo mecánico. NO es "modo rápido": este9model = "gpt-5.6-luna" # perfil es un modelo más barato, no un medidor 2.5x10model_reasoning_effort = "low" # dos cosas diferentes, una palabra.1112[profiles.deep] # planificación, errores difíciles, revisiones13model = "gpt-5.6-sol"14model_reasoning_effort = "high"
COMPROBACIÓN 0: ambas CLI se autentican, y tu comando de prueba sale con 0 en el repositorio actual.
BUILD 1: Las Constituciones
Estos modelos siguen leyes y optimizan en torno a consejos, por lo que cada línea necesita un número, un "nunca" o un comando que lo verifique.
Crea CLAUDE.md:
1# CLAUDE.md23## NUNCA (las excepciones requieren preguntar primero)4- Nunca cambies de modelo a mitad de sesión. El enrutamiento ocurre solo en los límites de sesión y5 subagente. Los cambios a mitad de tarea queman el caché.6- Nunca revises tu propio diff. La revisión proviene de un contexto nuevo o un7 linaje diferente. El revisor de Devin atrapa 2 errores por PR de agente8 precisamente porque no comparte nada con el escritor.9- Nunca edites, debilites o elimines una prueba para que pase. FALLO automático.10- Nunca informes "hecho" desde una autoevaluación. Hecho = gate/verify.sh pasó.11- Nunca tomes una cuarta consulta de asesor. Tres fallos = BLOQUEADO, turno del humano.12- Nunca fusiones un cambio de enrutamiento o prompt que eval_gate.py haya BLOQUEADO.13- Nunca ejecutes ningún bucle sin ambos límites establecidos: MAX_ITERS y BUDGET_USD.14- Nunca asumas que un modelo de frontera está activo. Respaldos: fable-5 -> opus,15 sol -> terra. Registra cada respaldo en progress.log.16- Nunca generes un subagente que no te hayan pedido. Los hijos heredan el17 modelo Y esfuerzo del padre, por lo que una flota entusiasta hereda el asiento caro.1819## DESPACHO (la primera coincidencia gana)20| # | Tarea | Asiento |21|---|---|---|22| 1 | planificar / arquitecturar / migrar | fable-5 planifica, sonnet ejecuta |23| 2 | extraer / formatear / pruebas / docs | haiku o luna |24| 3 | contexto de más de 60k tokens | nivel de precio fijo de 1M de Anthropic |25| 4 | revisión de código escrito por agente | sol a través de codex, arnés nativo |26| 5 | ambiguo | puntuación de dificultad: 0-1 barato, 2 sonnet, 3+ frontera |27| 6 | aún inseguro | ejecuta barato una vez, verifica, escala una vez si falla |2829## HECHO30- Cada tarea lleva un done_when verificable por máquina antes de que comience el trabajo.31- Un revisor de contexto nuevo juzga la especificación contra el diff, nada más.32- gate/verify.sh tiene el voto final. Dos desacuerdos33 hacedor/verificador en un mismo elemento -> detente, pon en cola para un humano.
Crea AGENTS.md en la raíz del repositorio, las mismas leyes en el dialecto de Codex. Mantenlo cerca de 100 líneas, un índice de contenidos, no una enciclopedia:
1# AGENTS.md23## Comandos4| Propósito | Comando |5|---|---|6| Prueba | make test (este comando es la definición de "hecho") |7| Lint | make lint |89## Protocolo de sesión101. Lee progress.log y TASKS.md primero. 2. UNA tarea sin marcar.113. Implementa, ejecuta la suite COMPLETA, haz commit solo si está verde, mensaje descriptivo.124. Marca la tarea, añade una línea a progress.log, detente.13Las pruebas definen "hecho". Nunca debilites, omitas o elimines una. Prueba incorrecta =14marca la tarea como BLOQUEADA y di por qué.1516## Política de modelo17Predeterminado: terra, esfuerzo medio. Mecánico: perfil fast (luna, bajo).18Planificación y errores difíciles: perfil deep (sol, alto).19Esfuerzo antes que modelo. Perfil elegido al inicio de la sesión, nunca a mitad de tarea.20Modo rápido APAGADO (2.5x créditos). Ultra APAGADO. Ninguno de los dos es un nivel de esfuerzo.21Solo genera un subagente cuando te lo pida. Los hijos heredan el modelo Y el nivel de razonamiento de esta sesión,22por lo que una generación entusiasta con esfuerzo alto es toda una flota con esfuerzo alto.2324## Atascado25Señales: el mismo error dos veces; dos pasos sin progreso; una prueba que sobrevive a dos26soluciones distintas. Luego /fable-advice. Máximo 3 consultas, luego BLOQUEADO.2728## Revisión29/review-hostile en una sesión NUEVA antes de cualquier fusión, o el carril entre proveedores30del lado de Claude. Nunca fusiones tu propio trabajo sin revisar.
Una doctrina debe vivir en ambos lados, o el arnés que tenga los hábitos más laxos gana cada vez que cambias de herramienta.
COMPROBACIÓN 1: para cada línea, pregúntate si el modelo podría cumplir al 80 por ciento y afirmar éxito. Si es así, reescríbela con un número o un "nunca". wc -l CLAUDE.md por debajo de 60.
BUILD 2: La Puerta
Un script de bash debe tener el voto final antes de que exista cualquier otra cosa, porque cada construcción posterior asume que existe.
Crea gate/verify.sh para tu stack:
1#!/usr/bin/env bash2set -e3npm run typecheck --if-present4npm test --if-present5npm run lint --if-present
Crea gate/eval_gate.py, el cinturón de seguridad para cada cambio futuro de enrutamiento o prompt. Ejecuta de 50 a 500 casos de prueba retenidos a través de la configuración actual y la propuesta, con solo comprobaciones deterministas:
1for case in cases: # {prompt, must_include, must_not_include, max_words}2 hits += passes(case, run_config(case.prompt))3verdict = "SHIP" if new_score >= old_score - 0.02 else "BLOCKED"
Luego haz que la puerta sea imposible de saltar como una skill, .claude/skills/ship-gate/SKILL.md:
1---2name: ship-gate3description: Ejecute la compuerta de evaluación antes de que cualquier cambio en el enrutamiento, modelo o instrucción se ponga en producción.4 Úselo cuando el usuario solicite cambiar reglas de enrutamiento, intercambiar un nivel de modelo, editar una instrucción de sistema,5 ajustar niveles de esfuerzo o fusionar cualquier cosa que afecte al enrutador, instrucciones o configuración del modelo.6---78# Compuerta de producción910Cualquier cambio en el enrutamiento o las instrucciones es una apuesta a la calidad hasta que la compuerta diga lo contrario. Esta habilidad existe para que la apuesta nunca se envíe en silencio.1112 1. Localice eval/cases.jsonl. Si no existe, DETÉNGASE e indique al usuario que13 primero construya entre 50 y 500 casos representativos, a partir del tráfico real.14 No improvise casos usted mismo.15 2. Ejecute: python3 eval_gate.py eval/cases.jsonl, con la configuración actual vs. la propuesta.16 3. BLOQUEADO: reporte ambas puntuaciones, enumere qué casos retrocedieron, no aplique el17 cambio, sugiera la reversión más pequeña que despeje la compuerta.18 4. ENVIAR: aplique y agregue una línea a progress.log con ambas puntuaciones.1920Reglas estrictas:21 - Nunca anule un veredicto de BLOQUEADO, incluso si se lo piden amablemente. Escale al humano22 con los casos fallidos adjuntos.23 - Nunca edite el archivo de casos en la misma sesión que un cambio de enrutamiento. La compuerta24 y el cambio no deben compartir autor.25 - Los números de costo no son una defensa contra una caída de calidad. La compuerta gana.
La compuerta utiliza solo comprobaciones deterministas, porque nunca debe heredar el problema de quién-verifica-al-verificador. Un cambio de enrutamiento sin una compuerta de evaluación es un experimento de costos que está ejecutando sobre sus clientes.
CHECK 2: ./gate/verify.sh sale con 0 hoy, y eval_gate.py imprime ENVIAR en su demostración. Si verify.sh falla ahora, arréglelo antes de cualquier otra cosa. El sistema se sostiene sobre este script.
CONSTRUCCIÓN 3: El Latido
El modelo trae inteligencia. El bucle trae disciplina.
- Contexto fresco por iteración mata la podredumbre del contexto
- El repositorio lleva toda la memoria
- Dos topes convierten un agente desbocado en una lección de diez dólares
Esta es la forma exacta detrás de la ejecución de 16 bucles de Anthropic que construyó un compilador de C de 100,000 líneas por unos $20,000, sin ningún modelo orquestador en ninguna parte.
Cree loop/PROMPT.md:
1Lea progress.log y TASKS.md. Seleccione EXACTAMENTE UNA tarea sin marcar.2Impleméntela. Ejecute las pruebas. Si está en verde: haga commit con un mensaje3descriptivo, marque la tarea, agregue una línea a progress.log, deténgase.4Si la misma tarea falla dos veces, márquela como BLOQUEADA con el error y deténgase.5Cree un archivo llamado DONE solo cuando cada tarea esté marcada Y el conjunto6completo de pruebas pase. Nunca edite una prueba para que pase.
Cree loop/ralph.sh:
1#!/usr/bin/env bash2set -u3MAX_ITERS="${MAX_ITERS:-25}" # tope uno: iteraciones4BUDGET_USD="${BUDGET_USD:-10}" # tope dos: dólares5MAX_FAILS=3; fails=0; spent=0; i=067while [ ! -f DONE ] && [ "$i" -lt "$MAX_ITERS" ]; do8 i=$((i + 1))9 # sesión nueva en cada iteración: sin memoria excepto el propio repositorio10 claude -p "$(cat PROMPT.md)" --max-turns 30 \11 --output-format json > out.json 2> err.log \12 && fails=0 || fails=$((fails + 1))13 [ "$fails" -ge "$MAX_FAILS" ] && exit 2 # cortacircuitos14 cost=$(jq -r '.total_cost_usd // 0' out.json)15 spent=$(awk -v a="$spent" -v b="$cost" 'BEGIN{printf "%.4f", a+b}')16 awk -v s="$spent" -v c="$BUDGET_USD" 'BEGIN{exit !(s>c)}' && exit 3 # tope17 sleep 218done19[ -f DONE ] && echo "completado en $i ticks, \$$spent" || echo "tope alcanzado, \$$spent"
Intercambie la línea de claude por codex exec y el mismo bucle impulsa GPT-5.6.
El mapa de salida es deliberado: 0 completado o silencioso, 2 cortacircuitos, 3 presupuesto. Cada alarma en CONSTRUCCIÓN 12 se basa en estos.
La línea de costo lee el propio informe de costo JSON de la sesión, por lo que el tope se aplica mediante el arnés contra el gasto real, no una estimación.
Cuente las paradas en esa instrucción. Cada rama termina en una, y eso es el diseño, no un tic.
Esta generación ejecuta mucho más tiempo por mensaje que la anterior. Sobre todo un regalo. Ocasionalmente una factura, porque un modelo que ya no necesita aliento para continuar llevará una tarea cuatro pasos más allá del punto donde usted quería revisarla.
El bucle lo resuelve estructuralmente: una tarea por tic, parada forzosa al final.
Interactivamente tiene que decirlo en voz alta. Dos instrucciones hacen el trabajo:
- "escribe el plan, luego detente y muéstramelo antes de construir cualquier parte"
- una vez que el plan es bueno: "constrúyelo, pruébalo, abre el PR, maneja la primera ronda de comentarios de revisión, luego detente"
Un modelo que se ejecuta mucho solo es peligroso cuando nadie le dijo dónde estaba el borde.
Las tareas largas fallan como falla el contexto, así que las iteraciones se mantienen cortas y el entorno hace el recordatorio. Fable 5 y los modelos Codex ahora compactan su propio contexto a mitad de ejecución, así que resista la tentación de agregar una tubería de memoria ingeniosa; la cantidad correcta se reduce cada trimestre.
CHECK 3: dos tareas reales diminutas en TASKS.md, un tic ejecutado manualmente con BUDGET_USD=2. Confirme un commit, una tarea marcada, una línea de registro, y que el bucle salga en lugar de iniciar una segunda tarea.
CONSTRUCCIÓN 4: El Enrutador Que Se Gana Su Trabajo (modelo, luego esfuerzo)
El punto de referencia de enrutamiento más riguroso de 2026, LLMRouterBench, encontró que muchos enrutadores, incluidos los comerciales, no logran superar de manera confiable la elección del mejor modelo único. Por lo tanto, el enrutador es culpable hasta que demuestre su inocencia en su propio tráfico.
La regla de decisión, antes de cualquier código. Agregue un enrutador solo cuando ambas condiciones sean verdaderas:
- Los niveles económico y frontera muestran aproximadamente una brecha de cinco veces en capacidad por dólar en su tráfico
- El conjunto de evaluación de la CONSTRUCCIÓN 2 existe para supervisarlo
Si un modelo bien elegido supera a su enrutador en esas evaluaciones, elimine el enrutador y quédese con la simplicidad.
Una vez que supera el listón, router/router.py ejecuta tres capas, la decisión más barata primero. Tenga en cuenta que los niveles nombran asientos, nunca precios: las tarifas provienen de la habilidad de banco en tiempo de ejecución, por lo que un cambio de precio nunca toca su enrutador.
1TIERS = { # asientos, no números2 "cheap": "gpt-5.6-luna", # o claude-haiku-4-53 "mid": "claude-sonnet-5",4 "frontier": "claude-fable-5", # o gpt-5.6-sol5}6PRICES = load_bench(".claude/skills/model-bench/SKILL.md") # única fuente de verdad78RULES = [9 (kind in {"extract", "format", "summarize"}, "cheap"),10 (kind in {"plan", "architect", "migrate"}, "frontier"),11 (context_length > 60_000, "mid"),12]13tier = layer1_rules(task) or layer2_classifier(task)14if tier: return call(TIERS[tier], task)15return cascade(task) # barato primero, verificar, escalar UNA VEZ en caso de fallo
La capa intermedia puntúa la dificultad en marcadores que puede leer: por qué, depurar, carrera, punto muerto, refactorizar, seguridad, más código en la instrucción, un intento fallido anterior, y más de un subsistema afectado.
Cero o un punto va a barato. Dos a medio. Tres o más a frontera. El verificador de la cascada es determinista y escala exactamente una vez.
Conecte las mismas decisiones en el arnés para que se activen sin ser invocadas, .claude/skills/model-router/SKILL.md. Tenga en cuenta que la habilidad no reexpone las reglas, las lee, el mismo truco de fuente única de verdad que usa el banco para los precios:
1---2name: model-router3description: Enrute cada tarea al asiento y esfuerzo correctos antes de comenzar a trabajar.4 Úselo al inicio de la sesión, antes de generar subagentes, cuando el usuario pregunte qué modelo5 usar, o cuando una tarea mezcle planificación y ejecución.6---78# Enrutador de modelos910Lea ROUTING.md y aplíquelo. No improvise una política y no redacte una aquí:11este archivo se pudriría, y el archivo de política es el que está bajo la compuerta de evaluación.1213Tres cosas que esta habilidad aplica además de ese archivo:1415 1. Enrute solo en los límites. Inicio de sesión y generación de subagentes. Un intercambio16 a mitad de tarea invalida el caché y vuelve a facturar el contexto a diez veces la tasa en caché.17 2. Al final de la sesión, agregue la proporción del nivel económico a progress.log. Los ahorros18 se acumulan solo una vez que la mayor parte del tráfico va a lo económico, así que ese número es el que hay que vigilar.19 3. Cualquier cambio en ROUTING.md se envía a través de la habilidad ship-gate. Sin excepciones.
El orden de decisión refleja el costo: una verificación gratuita primero, una suposición puntuada después, un experimento pago al final.
El dinero está en la división del tráfico, no en la inteligencia.
- Envíe el 70 por ciento del trabajo a un nivel a una décima parte del precio y la factura baja aproximadamente dos tercios
- Los informes de producción se agrupan entre el 40 y el 85 por ciento de ahorro, y la dispersión se debe casi por completo a la división
- Los ahorros se acumulan solo después de que la mayor parte del tráfico va a lo económico
Por eso la proporción económica en progress.log es el único número que este sistema le obliga a vigilar.
El esfuerzo es el segundo dial
El esfuerzo es el enrutamiento un nivel más abajo: la misma habilidad, aplicada a cuánto tiempo piensa el modelo en lugar de qué modelo se ejecuta.
Cada herramienta entierra el dial en un valor predeterminado diferente. Alto en Claude Code. Medio en Codex. Oculto en la mayoría de las aplicaciones. Por lo tanto, la gente deja un ajuste para todo, y o pagan de más o piensan de menos.

Por defecto, use alto y trate el máximo como último recurso, no como un alarde.
- La propia documentación de esfuerzo de Anthropic sitúa el punto óptimo en alto, y advierte que el máximo tiende a pensar de más
- Un punto de referencia público de 26 tareas de codificación encontró que alto aproximadamente triplicaba la calidad de bajo
- El mismo punto de referencia encontró que el esfuerzo extra alto costaba más del doble por una ganancia que rara vez se recuperaba
El modelo importa al menos tanto como el dial. Fable 5 con esfuerzo más bajo a menudo supera a modelos más antiguos ejecutándose en extra alto, así que alcance el mejor modelo antes que el ajuste más alto.
Dos ajustes se confunden con peldaños superiores de esta escalera. Ninguno lo está.
- Máximo es profundidad. Un modelo, un problema, más tiempo.
- Ultra es amplitud. Una tarea desplegada en cuatro agentes paralelos, luego sintetizada.
Ejes diferentes. Ultra no es "más que máximo", y apuntarlo a una tarea que realmente no se divide compra cuatro agentes duplicando una investigación.
La escalera no se transfiere entre versiones. La misma palabra compra una cantidad diferente de pensamiento en un modelo nuevo que en el anterior.
Al mover una tarea familiar a un nuevo asiento, comience un peldaño por debajo del ajuste que confiaba. Suba solo si la salida lo pide.
Una trampa pertenece específicamente a los enjambres.
Los subagentes heredan el modelo del padre y el esfuerzo del padre. Una flota generada desde un conductor de esfuerzo máximo es una flota de esfuerzo máximo, y drena una ventana en un solo mensaje.
Fíjelos en su propio frontmatter, y sepa en qué arnés se encuentra cuando lo haga, porque el fijador es tan bueno como el generador que lo lee.
- Lado Claude. El frontmatter a continuación es el control.
- Lado Codex. 5.6 genera hijos al mismo nivel de modelo y razonamiento del padre, y los genera con entusiasmo. El dial del padre es el dial de la flota.
En el lado Codex los únicos controles reales son el ajuste con el que abrió la sesión y una línea en AGENTS.md que dice no generar a menos que se le pida. Verifique cuál tiene antes de confiar en cualquiera:
1name: scout2model: haiku3effort: low # los subagentes heredan del padre. un enjambre de esfuerzo máximo4 # vacía una ventana en un mensaje. fíjelos.
Ajústelo por herramienta: /effort en Claude Code y la TUI de Codex, una bandera como codex -e high, una línea en la configuración, o el campo effort en la API.
El enrutamiento de modelos decide quién piensa. El enrutamiento de esfuerzo decide cuánto tiempo, y el segundo dial es más barato de girar porque nada más en la configuración cambia y el caché se mantiene caliente. Invierta esfuerzo donde el bucle se ramifica. En cualquier otro lugar es un impuesto.
Siga el número semanalmente:
1grep '^route' progress.log | awk -F'\t' \2 '{r++; if($3!="frontier")c++} END{printf "proporción económica: %.0f%%\n", c/r*100}'
ROUTING.md, la política que ambos arneses leen
Todo lo anterior se condensa en un archivo en la raíz del repositorio.
1# ROUTING.md23El enrutamiento son cuatro decisiones, y el orden es el punto:4 1. DÓNDE: qué arnés ejecuta el trabajo5 2. CUÁNDO: en qué límite se toma la decisión6 3. QUIÉN: qué modelo ocupa el asiento7 4. QUÉ TANTO: qué nivel de esfuerzo ejecuta ese modelo8La mayoría de los equipos solo discuten sobre 3. El dinero está en 2 y 4.910## 1. DÓNDE: arnés antes que modelo11Un modelo post-entrenado dentro de un arnés funciona fuera de distribución en cualquier otro lugar.12Diferencia medida: 20.2 por ciento nativo frente a 7.7 por ciento externo, mismos pesos.1314| Trabajo | Arnés | Por qué |15|---|---|---|16| escribir código | el arnés nativo del modelo | los escritores se degradan fuera de distribución |17| revisar código | el arnés nativo del revisor | una revisión débil es peor que ninguna |18| leer, explorar | cualquier lugar | las lecturas son baratas y verificables |19| transformaciones mecánicas | cualquier lugar | si la comprobación es determinista, el arnés apenas importa |2021LEY: reasigne libremente los carriles de lector y revisor. El carril del escritor permanece nativo del arnés22hasta que su propio conjunto de evaluación diga lo contrario. Esa anulación debe ser una medición, no23una preferencia.2425## 2. CUÁNDO: enrute en los límites, nunca dentro de ellos26Un intercambio a mitad de sesión descarta el caché de instrucciones. La entrada en caché cuesta una décima parte de27la entrada nueva, por lo que un intercambio innecesario vuelve a facturar todo el contexto a diez veces el precio28y no compra nada.2930Límites legales, los ÚNICOS lugares donde puede ocurrir una decisión de enrutamiento:31 - inicio de sesión32 - generación de subagente33 - un nuevo objetivo en el enjambre34 - una transferencia de revisión a la otra línea35 - una retirada activada por una interrupción o una salvaguarda3637Ilegal en cualquier otro lugar. Sin enrutamiento por turno. Sin intercambio adaptativo a mitad de tarea.38La cascada obtiene EXACTAMENTE UNA escalada, y abre un nuevo límite.3940LEY: elija el asiento cuando se abre el límite, luego quédese hasta el siguiente.4142## 3. QUIÉN: el procedimiento de decisión (primera coincidencia gana, registre el resultado)4344Capa 1, reglas. Gratis. Siempre verifique primero.4546| Señal | Asiento |47|---|---|48| extraer / formatear / resumir / clasificar / pruebas | Haiku o Luna, esfuerzo bajo |49| planificar / arquitecturar / migrar / causa raíz | Fable planifica, Sonnet ejecuta |50| contexto de más de 60k tokens | nivel Anthropic 1M (precio fijo) |51| revisar código escrito por agente | la otra línea, arnés nativo |52| el objetivo se divide en partes independientes | enjambre: Fable escribe y puntúa |5354Capa 2, la puntuación. Un punto cada uno:55 - contiene por qué / depurar / carrera / punto muerto / refactorizar / seguridad / optimizar56 - afecta a más de un subsistema57 - un intento anterior ya falló58 - el cambio es irreversible o visible para el usuario59 0-1 -> nivel económico, esfuerzo bajo. 2 -> Sonnet, medio. 3+ -> frontera, alto.6061Capa 3, la cascada. Ejecute barato, verifique de forma determinista, escale EXACTAMENTE UNA VEZ.62Nunca dos veces. Un segundo fallo es un problema de especificación, y un modelo más grande no arreglará63su especificación.6465Los asientos y retiradas están en .claude/skills/model-bench/SKILL.md. Sin precios aquí.6667## 4. QUÉ TANTO: enrutamiento de esfuerzo68El esfuerzo es el enrutamiento un nivel más abajo. El dial más barato en este archivo: nada más69cambia y el caché se mantiene caliente.7071| Esfuerzo | Úselo para |72|---|---|73| bajo | errores tipográficos, renombres, ordenamiento, extracción, TODOS los subagentes por defecto |74| medio | código rutinario a partir de una especificación clara, resúmenes, escritura estándar |75| alto | desmontajes, migraciones, errores difíciles, todo el trabajo del conductor (POR DEFECTO) |76| máximo | solo el problema que alto ya no pudo resolver |77| ultra | NO EN ESTA ESCALERA. amplitud, no profundidad: 4 agentes en paralelo. desactivado por defecto |7879 1. Por defecto, use alto. El punto óptimo está ahí; el máximo tiende a pensar de más.80 2. Mejor modelo supera a dial más alto. Mejore el asiento antes que el ajuste.81 3. Los subagentes HEREDAN el modelo Y el esfuerzo del padre. Una flota generada desde un82 conductor de esfuerzo máximo se ejecuta al máximo y vacía una ventana en un mensaje. Fije83 cada subagente en su propio frontmatter: effort: low. Donde el generador84 ignore el fijador, el dial del padre ES el dial de la flota. Verifique cuál tiene.85 4. Máximo es profundidad. Ultra es amplitud. Ultra solo cuando los subproblemas son genuinamente86 independientes, nunca como valor predeterminado, y no en absoluto mientras el arnés genere en exceso.87 5. La escalera no se transfiere entre versiones. En un modelo nuevo, comience un peldaño88 por debajo del ajuste que confiaba en el anterior.89 6. El modo rápido tampoco es un nivel de esfuerzo. Compra latencia a 2.5x créditos en90 tokens que de todas formas estaba quemando. Desactivado.9192El dial vive en cuatro lugares: /effort en Claude Code y la TUI de Codex, codex -e high,93model_reasoning_effort en la configuración, el campo effort en la API. Claude Code94predetermina alto, Codex predetermina medio, la mayoría de las aplicaciones lo ocultan por completo, por lo que95los equipos ejecutan accidentalmente un nivel para todo.9697## 5. Retiradas: asuma que la frontera está caída98La disponibilidad de la frontera no está garantizada, y una salvaguarda puede redirigir una llamada a99Opus 4.8 a mitad de ejecución, en menos del 5 por ciento de las sesiones, sin error.100 - Cada asiento tiene una retirada nombrada. Sin excepciones.101 - Cada retirada se registra. Una redirección silenciosa es un error, porque puede estar102 leyendo la salida de un modelo que no eligió.103 - NUNCA itere sobre la salida de un modelo que no eligió.104105## 6. El número que decide si todo esto funcionó106El costo combinado es su división de tráfico, nada más. El 70 por ciento económico reduce la factura107en aproximadamente dos tercios. El 10 por ciento ahorra calderilla. La precisión del enrutador vale108mucho más que la inteligencia del enrutador.109110Síguelo con la línea de una sola instrucción en CONSTRUCCIÓN 4. Por debajo del 50 por ciento, los ahorros no111han comenzado a acumularse. Arregle la división antes de tocar cualquier otra cosa aquí.112113## 7. La compuerta en este archivo114LEY: ningún cambio en este archivo se envía sin que eval_gate.py pase en 50 a 500115casos reservados. Un veredicto de BLOQUEADO es definitivo y no se puede anular en la sesión.116La compuerta y el cambio no deben compartir autor.117118## 8. Cuándo eliminar este archivo119Si un solo modelo bien elegido supera a toda esta pila en sus evaluaciones, elimine el120enrutador y mantenga la simplicidad. El punto de referencia de enrutamiento más riguroso de 2026 encontró121que muchos enrutadores, incluidos los comerciales, no logran superar de manera confiable la elección del mejor modelo único.122Mida primero. Enrute después. Elimine con gusto.
CHECK 4: router.py se ejecuta sin conexión e imprime una decisión, una razón y la división. Sus notas contienen la medición de la brecha de 5x, o una nota con fecha que dice que el enrutador aún no está justificado.
CONSTRUCCIÓN 5: La Inversión del Asesor
El patrón clásico pone al modelo inteligente a cargo y quema tokens de frontera en ejecución masiva. Invirtamoslo.
Los resultados de asesor de Anthropic: Haiku con un asesor de clase Opus más que duplicó su puntuación en un punto de referencia de navegación difícil, 41.2 frente a 19.7 solo, con un 85 por ciento menos de costo por tarea que el nivel medio.
La ejecución es volumen. El consejo es gramos.
El arnés decide cuándo el conductor está atascado, nunca el conductor, .claude/skills/stuck-protocol/SKILL.md:
1---2name: stuck-protocol3description: Escale al asesor experto en fable cuando el progreso se estanque. Úselo cuando4 el mismo error aparezca dos veces, cuando dos pasos consecutivos no cambien ningún archivo mientras5 persisten los errores, cuando una prueba falle después de dos intentos de corrección distintos, o cuando6 el usuario diga que el agente está dando vueltas en círculos.7---89# Protocolo de atasco (la inversión del asesor)1011Usted es el conductor barato y eso es una característica: la ejecución es volumen, el consejo es12gramos. Pero los modelos pequeños son demasiado confiados, por lo que usted no decide que está bien.13En su lugar, verifique las señales deterministas.1415Señales de atasco (cualquiera activa el protocolo):16 1. La misma cadena de error en dos pasos consecutivos.17 2. Dos pasos consecutivos con cero archivos cambiados mientras persisten los errores.18 3. La misma prueba fallando después de dos intentos de corrección genuinamente diferentes.1920Procedimiento:21 1. Cuente las consultas en esta sesión. En 3, DETÉNGASE: marque la tarea como BLOQUEADA con el22 error adjunto, resuma para el humano, continúe. Nunca una cuarta consulta.23 2. Construya el resumen, no ponga nada más en él:24 OBJETIVO: una línea25 INTENTO x2: los últimos dos intentos, 200 caracteres cada uno26 ERROR: el error exacto, 300 caracteres27 3. Genere fable-expert con el resumen. Devuelve orientación, no código.28 4. Aplique la orientación en el siguiente paso, antes de cualquier cosa propia.29 5. Agregue una línea a progress.log: consulta #N, qué dijo, si funcionó.3031Reglas estrictas:32 - Nunca le pida al experto que haga el trabajo. Si la respuesta contiene una implementación33 completa, tome la idea y descarte el código.34 - Nunca alargue el resumen con su historial de razonamiento. El valor del experto es un contexto35 limpio; un resumen largo lo envenena.36 - Si la orientación falla, eso cuenta como uno de sus dos intentos hacia la siguiente consulta. Tres37 consultas fallidas significan que la tarea está por encima del nivel de esta sesión,38 y decirlo es la salida correcta.
El asiento del experto, .claude/agents/fable-expert.md:
1---2name: fable-expert3description: Asesor de frontera para momentos de atasco. Recibe un resumen compacto de4 stuck-protocol, devuelve orientación en menos de 600 tokens, nunca hace el trabajo en sí.5model: claude-fable-5 # cambie a opus si las reglas de retención muerden6effort: high7tools: Read, Grep, Glob # puede leer, nunca puede editar8---910Usted es el consultor experto, no el contratista. Un modelo más barato está conduciendo y ha11chocado contra una pared. Su valor es el juicio en gramos, y el contexto limpio: usted no sabe12nada de cómo llegó el conductor aquí, que es exactamente por qué su lectura es más precisa.1314Recibe un resumen: OBJETIVO, los últimos dos INTENTOS, y el ERROR. Si el resumen15menciona archivos específicos, puede leerlos. No puede editar nada.1617 1. Si al resumen le falta algo que necesita, responda con UNA línea nombrando lo que18 falta. No adivine alrededor de un vacío.19 2. Diagnostique antes de prescribir: una o dos oraciones sobre lo que realmente está mal.20 3. Luego responda en este formato y nada después:21 ORIENTACIÓN:22 1. (la corrección más probable: qué probar, y por qué debería funcionar)23 2. (plan de respaldo si 1 falla)24 3. (solo si hay un camino genuinamente distinto)25 CONFIANZA: alta | media | baja26 4. Menos de 600 tokens. Sin bloques de código de más de 10 líneas. Dé la idea, no la27 implementación. Si su respuesta contiene una solución completa, falló en el rol.28 5. Si la tarea en sí está mal concebida, dígalo en el punto 1 y recomiende qué29 decirle al humano.3031Nota del operador: si su organización no puede aceptar la retención de clase Mythos, cambie la línea32del modelo a opus. El rol funciona igual; el resultado del asesor se demostró por primera vez33con asesores de clase Opus.
Y el mismo carril en reversa para sesiones de Codex, ~/.codex/prompts/fable-advice.md:
1claude --model claude-fable-5 -p "Eres un asesor experto.2 Un modelo más barato está conduciendo y está atascado. RESUMEN: <objetivo, dos3 intentos, error>. Responde ORIENTACIÓN: hasta 3 elementos numerados,4 en menos de 600 tokens. No hagas el trabajo."
Los modelos pequeños son demasiado confiados, por lo que el arnés observa el comportamiento en lugar de preguntar.
El resumen se mantiene pequeño, porque el valor del experto es un contexto limpio y un resumen largo lo envenena.
Cada consulta ejecuta unos pocos cientos de tokens de orientación. Por eso la economía colapsa: la ejecución de millones viaja en el nivel de $1, y el juicio llega por gramos a $50 por millón.
Cognition publicó el fallo primero. El techo lo establece el conductor, no el asesor, y el patrón solo dio frutos después de que su conductor mejorara una generación.
El problema abierto es que un conductor note que está atascado. Por eso las señales anteriores son conductuales, y por eso viven en el arnés.
CHECK 5: advisor_loop.py pasa sus aserciones: el conductor falla dos veces de la misma manera, se activa una consulta, la tarea se completa, las consultas se mantienen por debajo del límite.
CONSTRUCCIÓN 6: El Banco de Dos Carriles
Nada califica su propia tarea es una ley, y esta construcción la aplica entre proveedores.
Los mismos pesos en un arnés externo caen fuerte. Una medición de 2026 mostró 20.2 por ciento nativo frente a 7.7 por ciento de terceros.
Por lo tanto, cada revisor se ejecuta en su propio hogar. Claude revisa en Claude Code. Sol revisa a través de la CLI de Codex.
El juez interno, .claude/agents/fresh-eyes-reviewer.md:
1---2name: fresh-eyes-reviewer3description: Revisor de código con contexto limpio. Invocar después de cualquier cambio hecho por un agente.4 No comparte historial con el escritor, lee el diff por sí mismo y no puede editar.5model: haiku # cambiar a opus cuando el diff sea crítico6effort: medium7tools: Read, Grep, Glob, Bash8---910No tienes memoria de cómo se escribió este cambio, y ese es el punto. No preguntes11por el razonamiento del autor. No confíes en ningún resumen. Solo evidencia.1213 1. git diff HEAD~1 (o el rango dado) y lee cada hunk.14 2. Lee el contenido COMPLETO de cada archivo modificado, no solo los hunks. Los errores se esconden en15 las líneas sin cambios alrededor de un cambio.16 3. Ejecuta el conjunto de pruebas mencionado en README o CLAUDE.md.17 4. Busca las tres fallas clásicas de los agentes:18 pereza: implementaciones parciales, TODOs, manejados solo para un caso19 autoevaluación: pruebas debilitadas, aserciones eliminadas, suites omitidas20 desviación: cambios fuera del alcance de la tarea establecida21 5. Veredicto, exactamente en este formato:22 VEREDICTO: APROBADO o RECHAZADO23 ERRORES: numerados, cada uno con archivo:línea y una razón de una oración24 RIESGO: una oración sobre lo más riesgoso que toca este cambio2526Reglas estrictas: no puedes editar archivos, no puedes volver a ejecutar la tarea del escritor, y una27lista de ERRORES vacía con VEREDICTO: RECHAZADO no es válida. Si las pruebas no se pueden ejecutar, eso es un28RECHAZADO automático con la razón.
El juez multiplataforma, .claude/agents/sol-reviewer.md, es una tubería que ejecuta un comando y retransmite el veredicto textualmente. Sol es el revisor; este archivo lo pone en su propio arnés:
1---2name: sol-reviewer3description: Revisor multiplataforma. Envía el último commit a GPT-5.6 Sol a través de4 Codex CLI, en el arnés nativo de Sol, y retransmite el veredicto sin cambios.5model: haiku # solo tubería. Sol es el revisor.6effort: low7tools: Bash, Read8---910Eres tubería, no el revisor. Los modelos de una misma familia comparten puntos ciegos; este11camino existe porque Sol no comparte los de Claude.1213 1. Verifica la CLI: codex --version. Si falta, emite VEREDICTO: RECHAZADO con la razón14 "codex CLI no instalado" más la ruta de configuración (o el plugin oficial:15 /plugin marketplace add openai/codex-plugin-cc, /plugin install, /codex:review).16 2. Ejecuta la revisión con alto esfuerzo, en el arnés propio de Sol:1718 codex --profile deep exec "Revisa el último commit (git show HEAD) como un19 ingeniero senior hostil que nunca ha conocido al autor. Lee cada archivo20 modificado EN SU TOTALIDAD, no solo los hunks. Busca: implementaciones parciales,21 pruebas debilitadas o eliminadas, cambios fuera del alcance de la tarea. Termina exactamente con22 'VEREDICTO: APROBADO' o 'VEREDICTO: RECHAZADO' seguido de hallazgos numerados, cada uno con23 archivo:línea y una razón de una oración."2425 3. Guarda la salida completa en .review_sol_<hash-corto>.md.26 4. Transmite hacia arriba: primero la línea de VEREDICTO, luego los hallazgos TEXTUALMENTE. No27 resumas hallazgos, no añadas tranquilidad, no discutas con Sol.28 Si el veredicto es RECHAZADO, el padre decide qué corregir. Tú no decides nada.2930Reglas estrictas: nunca edites archivos, nunca vuelvas a ejecutar la tarea del escritor, nunca sustituyas31tu propia revisión. Si codex falla a mitad de la ejecución, repórtalo como RECHAZADO con stderr adjunto32en lugar de reintentar silenciosamente más de una vez.
Para CI, loop/two_lane.sh maneja todo el intercambio, máximo tres rondas:
1claude -p "Implementa: $TAREA. Ejecuta las pruebas. Haz commit cuando esté en verde."2review=$(codex exec "Revisa HEAD ... VEREDICTO: APROBADO o RECHAZADO más hallazgos.")3grep -q "VEREDICTO: APROBADO" <<< "$review" && exit 04claude -p "Un revisor de otra familia de modelos encontró estos problemas.5 Corrige cada uno, vuelve a ejecutar pruebas, haz commit: $review"
Dentro de Claude Code puedes omitir el script por completo.
OpenAI ofrece un plugin oficial de Codex para Claude Code, activo desde marzo de 2026 y con aproximadamente veinte mil estrellas en GitHub en nueve semanas. Eso es el mercado diciéndote que la revisión entre proveedores se volvió mainstream. Instálalo una vez:
1/plugin marketplace add openai/codex-plugin-cc2/plugin install codex@openai-codex3/codex:setup
Tres movimientos dentro de cualquier sesión de Claude:
- /codex:review para una revisión estándar
- modo adversarial, que ataca tus decisiones de diseño a propósito
- transferencia en segundo plano a Codex
Usa el modo adversarial en cualquier cosa crítica. Usa la transferencia cuando el trabajo sea intensivo en terminal, donde Sol es más fuerte.
Cada vez más desarrolladores ahora ejecutan GPT-5.6 Sol dentro de Claude Code, a través del proxy de BUILD 7, y lo prefieren a Codex para el trabajo diario.
Demuestra la tesis: alquila los pesos, posee el arnés.
La trampa es la ley del arnés nativo, ya que Sol en Claude Code se ejecuta fuera de su hogar. Confírmalo en tu propio conjunto de evaluación. Si tus evaluaciones dicen que el arnés extranjero gana, tus evaluaciones están por encima del benchmark.
Tres propiedades hacen que el revisor valga la pena:
- Contexto limpio. Llega sin ningún historial del escritor.
- Linaje diferente. No comparte los puntos ciegos del escritor.
- Arnés nativo. Juzga con toda su fuerza.
Un veredicto suavizado es un verificador roto, por lo que la retransmisión es textual. Un tercer RECHAZADO notifica a un humano en lugar de tomar un cuarto intento.
COMPROBACIÓN 6: ejecuta two_lane.sh, o /codex:review en tu último commit. Un VEREDICTO cae en un archivo .review, y un RECHAZADO regresa al carril del escritor.
BUILD 7: Despliegues Opcionales (instala cuando aparezca la condición)
Enjambre explorador. Instálalo cuando la investigación o la arqueología del código base consuma más de 30 minutos de tu día. Genera tres en paralelo en fragmentos separados:
1---2name: scout3description: Lector paralelo barato para despliegues de investigación. Genera varios a la vez4 para estudios del código base, auditorías de dependencias, arqueología de logs, investigación de documentación.5 Solo lectura por doctrina; las lecturas se despliegan, las escrituras permanecen de un solo hilo.6model: haiku7effort: low # guardia de herencia (BUILD 4): un enjambre que hereda8 # el esfuerzo máximo vacía una ventana en un mensaje9tools: Read, Grep, Glob, Bash10---1112Eres uno de los muchos lectores que se ejecutan en paralelo. Examina tu fragmento e13informa de forma pequeña y precisa. Solo tu mensaje final regresa al padre, así que14mantenlo por debajo de 400 palabras y haz que cada palabra se gane su lugar.1516 1. Limita tu asignación a un fragmento tú mismo (un directorio, un subsistema,17 una pregunta), y di a qué te limitaste.18 2. Solo lecturas: Read, Grep, Glob y shell de solo lectura (ls, git log, git show, rg).19 Nunca edites, instales o elimines. Si la tarea necesita una escritura, repórtala, no la20 hagas.21 3. Primero amplitud, luego profundidad en los dos o tres puntos más calientes.2223Formato de informe, nada más:24 HALLAZGOS: hasta 10 viñetas, cada una un hecho con su evidencia (archivo:línea, hash de commit25 o URL)26 VACÍOS: lo que no pudiste determinar y por qué, para que el padre sepa qué sigue oscuro27 PUNTO CALIENTE: el único archivo o función que más merece una mirada más profunda, una línea28 sobre por qué2930No editorialices, no propongas implementaciones, no añadas relleno. Un explorador que31devuelve 300 palabras útiles vence a uno que devuelve 3,000 palabras mezcladas, porque32todo lo que emites termina en la ventana de contexto del padre y el padre lo paga.
Las lecturas se despliegan porque los lectores paralelos se multiplican. El límite de palabras existe porque cada informe termina en una ventana de contexto que el padre paga.
Las escrituras nunca se despliegan. Un estudio de 2026 con presupuesto igualado encontró que los agentes individuales igualan a las configuraciones multiagente en razonamiento cuando los tokens se mantienen constantes. Este carril es solo para lectura.
Quemador nocturno. Instálalo cuando TASKS.md tenga diez o más elementos pequeños verificables. La habilidad del quemador nocturno configura los archivos, confirma ambos límites, verifica que el comando de prueba se ejecute, luego lanza ralph.sh. Interfaz matutina: git log, progress.log, marcas de verificación.
División del plan. Instálalo cuando los tokens de planificación dominen la factura de una sesión. Una configuración en Claude Code ejecuta un modelo de clase Opus para el plan y Sonnet para la ejecución. Planifica en la frontera por gramo, ejecuta en volumen.
Banco de trío. Instálalo cuando un cambio complicado merezca tres perspectivas. Dos roles leen y uno escribe, y el cuarto panel es una trampa. La tubería está debajo.
La tubería para flotas mixtas
Dos piezas de código abierto convierten una configuración de dos proveedores en una de cualquier proveedor. Instálalas solo cuando una condición requiera un tercer proveedor.
claude-model-switch (código abierto, Rust, se ejecuta en localhost:4000). Un proxy local entre Claude Code y cualquier endpoint compatible con Anthropic o OpenAI.
- Reasigna los tres niveles internos de Claude Code (haiku, sonnet, opus) a los modelos que ofrezca tu proveedor
- Cambia de proveedor sin reiniciar, mediante recarga de configuración
- Se distribuye como un plugin de Claude Code con comandos de barra
1claude-model-switch init # apunta Claude Code al proxy2claude-model-switch add openrouter sk-or-xxx3claude-model-switch add glm \4 --haiku glm-4.5-air --sonnet glm-4.7 --opus glm-55claude-model-switch use glm # por sesión, nunca a mitad de tarea6claude-model-switch orchestrate start --preset trio # planificador/codificador/revisor
El preset trio es el banco de BUILD 7 hecho físico: tres paneles tmux, cada rol en un proveedor diferente, cada uno direccionable (orchestrate send coder "implementa el hito 1"), con reasignación de roles a mitad de sesión si un proveedor se degrada.
CLIProxyAPI (código abierto). El mismo truco, apuntado en la dirección opuesta.
Envuelve los inicios de sesión OAuth de ChatGPT Codex, Claude Code, Gemini y Grok como endpoints de API compatibles con OpenAI, Claude y Gemini.
Traducción: los asientos de suscripción que ya pagas se convierten en objetivos de API enrutables para scripts como ralph.sh y two_lane.sh, sin claves API separadas. Las bifurcaciones de la comunidad lo extienden a Factory y Amp, y envoltorios como ccs añaden cambio entre múltiples cuentas.
La ley que gobierna a ambos, de los datos de BUILD 6: un modelo reasignado se ejecuta en un arnés extranjero.
Reasigna los carriles de lector y revisor libremente. Son baratos y verificables.
Mantén el carril que escribe código en un modelo nativo de su arnés, hasta que tu propio conjunto de evaluación demuestre lo contrario.
COMPROBACIÓN 7: cada despliegue instalado tiene su condición de activación escrita al lado. Instalar cualquiera de esto de forma especulativa es cómo se inflan las pilas.
BUILD 8: La Fábrica (la finalización se convierte en un hecho de base de datos)
Todo lo hasta ahora demuestra el trabajo en el momento. La puerta, el veredicto y el conjunto de evaluación se activan durante la ejecución.
Una vez que más de un agente toca un proyecto en más de una sesión, necesitas una prueba que sobreviva a la ejecución: quién trabajó qué, en qué orden, y si el último ciclo de revisión se completó.

El patrón proviene de la demostración de pi-factory (github.com/xpriment626/pi-factory). La idea central es una oración:
Un hilo es un rastro. Una fila es evidencia. La puerta lee filas.
progress.log es un diario. La pizarra es un libro mayor. SQLite es el libro mayor porque se puede consultar después de que todos dejen de hablar.
Crea factory/factory_gate.py. Contiene cuatro tablas (tickets, briefs, evidence, verdicts), un comando record que cada agente llama mientras trabaja, y la puerta de finalización. Las condiciones de fallo de la puerta se asignan al trabajo en sí:
1checks = [2 (tickets == 0, "No se registraron tickets."),3 (done != tickets, "No todos los tickets están hechos."),4 (first_brief is None, "No se registró un brief de arquitectura."),5 (first_brief > first_code, "La evidencia de implementación precede al brief."),6 (code_ev == 0, "No se registró evidencia de código del implementador."),7 (build_ok == 0, "No se registró evidencia de comando de construcción exitoso."),8 (test_ok == 0, "No se registró evidencia de comando de prueba exitoso."),9 (latest("architect") != "green", "El último veredicto del arquitecto no es verde."),10 (latest("reviewer") != "green", "El último veredicto del revisor no es verde."),11]
Esa lista codifica toda la doctrina.
- El orden se aplica. Un brief que postdata la primera evidencia de código es una violación, lo que convierte "planificar antes de construir" en un hecho verificable en lugar de un hábito.
- Ambos asientos de juez deben estar en verde en el mismo ciclo más reciente. Una aprobación desactualizada no puede respaldar un diff más nuevo.
- La finalización sin filas de prueba exitosas es imposible, sin importar lo seguro que suene la transcripción.
Crea factory/factory.sh, que conecta los asientos que ya construiste en el orden de ejecución y registra filas entre cada paso:
1G ticket "tablero kanban" "las columnas renderizan, el arrastre persiste" # filas del planificador2G brief "$BRIEF" # ANTES de cualquier código3../loop/ralph.sh && G evidence code pass "bucle completado" # BUILD 3 funciona4npm test && G evidence test pass "npm test verde"5G verdict 1 architect green "el diseño coincide con el brief" # Asiento Claude6G verdict 1 reviewer green "pruebas pasan, alcance limpio" # Asiento Sol, vía codex7python3 factory_gate.py gate factory.db # las filas deciden
Nada nuevo se contrata.
Fable corta tickets y escribe el brief, solo lectura. El bucle de BUILD 3 implementa. Claude y Sol devuelven cada uno un veredicto desde su propio arnés. El ciclo se repite hasta tres veces hasta que ambos estén en verde.
La fábrica es el organigrama de los empleados que ya tienes.
Una ejecución real, no un simulacro. La segunda llamada a la puerta es todo el argumento de esta build:
1$ factory_gate.py record demo.db ticket "tablero-kanban" "las columnas renderizan, el arrastre persiste"23$ factory_gate.py gate demo.db4PUERTA: RECHAZADA5 - No todos los tickets están hechos.6 - No se registró un brief de arquitectura.7 - No se registró evidencia de código del implementador.8 - No se registró evidencia de comando de construcción exitoso.9 - No se registró evidencia de comando de prueba exitoso.10 - No se registró un ciclo de revisión.11 exit: 11213... los agentes trabajan. cada paso escribe una fila ...1415$ factory_gate.py record demo.db brief "Pila: node+sqlite. CRUD /tasks."16$ factory_gate.py record demo.db evidence code pass "src/board.js escrito"17$ factory_gate.py record demo.db evidence build pass "npm run build exit 0"18$ factory_gate.py record demo.db done "tablero-kanban"19$ factory_gate.py record demo.db verdict 1 architect green "el diseño coincide con el brief"20$ factory_gate.py record demo.db verdict 1 reviewer green "alcance limpio"2122$ factory_gate.py gate demo.db23PUERTA: RECHAZADA24 - No se registró evidencia de comando de prueba exitoso.25 exit: 12627$ factory_gate.py record demo.db evidence test pass "npm test 33/33"2829$ factory_gate.py gate demo.db30PUERTA: COMPLETA (1/1 tickets, ciclo 1 verde x2)31 exit: 0
Ambos revisores dijeron verde. El arquitecto confirmó que el diseño coincidía con el brief. El revisor confirmó que el alcance estaba limpio.
Y la puerta aún rechazó, con una línea: no se registró evidencia de comando de prueba exitoso. Nadie había ejecutado las pruebas.
Un veredicto es una opinión. Dos opiniones siguen sin ser un hecho. Una fila de evidencia de prueba exitosa después, la misma puerta devuelve COMPLETA y sale 0.
Los modelos argumentan convincentemente por su trabajo, y una transcripción captura el argumento en lugar de la verdad. Las filas no se pueden discutir.
Cuando la puerta rechaza, nombra el artefacto faltante exacto. Eso convierte "la ejecución falló" en "produce una fila de prueba exitosa". Una tarea, no un misterio.
Condición de instalación: más de una sesión de escritor por día, ciclos de revisión que abarcan días, o la necesidad de probar después qué sucedió. Para un repositorio individual con un bucle nocturno, BUILD 3 es suficiente y esto es inflado.
COMPROBACIÓN 8: reproduce la captura de pantalla. Registra todo excepto una fila de prueba, y la puerta debe rechazar con exactamente una razón. Añade la fila y devuelve COMPLETA. Una puerta que pasa sin ella es un lector de transcripciones.
BUILD 9: El Enjambre (Fable planifica, la flota ejecuta, Fable puntúa)
Un conductor con un asesor cubre una tarea. Un objetivo que se divide en cuatro piezas independientes quiere cuatro trabajadores.
Pero una flota solo mantiene su dirección si un modelo planifica cada objetivo y puntúa cada resultado. Esa es toda la razón de esta build, y la razón por la que los enjambres suelen fallar sin ella.
El peldaño 3 hecho literal. Fable escribe los objetivos, la flota los ejecuta, Fable puntúa cada resultado contra su propia verificación, y el siguiente ciclo replanifica solo los fallos.
Su aborto es el límite de ciclos. Cuando el límite se activa con fallos pendientes, eso es un problema de especificación que va a un humano, no una razón para ejecutar un cuarto ciclo.
Crea swarm/swarm.sh. Tres ajustes llevan la doctrina:
1FLOTA=4 # las escrituras nunca chocan: un árbol de trabajo cada uno2WORKER_MODEL=claude-sonnet-5 # o haiku / luna / kimi para ejecución pura3WORKER_EFFORT=low # NUNCA heredar el esfuerzo del conductor4CONDUCTOR=claude-fable-5 # o opus-4-8 si las reglas de retención muerden
Esas tres líneas son explícitas porque el valor predeterminado no lo es.
Una flota que hereda toma el modelo del conductor y el esfuerzo del conductor. Un conductor Fable-alto generando cuatro trabajadores Fable-alto para hacer trabajo mecánico es la forma más cara posible de hacer lo más barato posible.
Establécelos. Nunca los dejes por defecto.
El despliegue entre arneses es legal, y no es la excepción a la primera ley de ROUTING.md que parece.
- Un conductor Fable que invoca codex exec ejecuta Sol dentro de Codex, de forma nativa. Eso es la ley obedecida, no doblada.
- Lo que rompe la ley es un subagente del lado de Claude usando una cadena de modelo GPT, o viceversa.
El arnés viaja con el trabajador, no con el conductor.
El conductor escribe objetivos, nunca código, y cada objetivo lleva su propio comando de verificación, por lo que "hecho" sigue siendo un hecho:
1{"id":"eliminar-auth-legacy","spec":"eliminar la ruta de autenticación v1 de routes/","check":"npm test -- tests/auth"}2{"id":"migrar-sesiones","spec":"mover el almacén de sesiones al nuevo adaptador","check":"npm test -- tests/session"}
Luego despacha, puntúa y replanifica:
1# despacho: un árbol de trabajo por objetivo, limitado a FLOTA en paralelo2claude --model "$WORKER_MODEL" --effort "$WORKER_EFFORT" -p "Ejecuta esta especificación3 exactamente. No amplíes el alcance. Ejecuta las pruebas. Haz commit solo cuando esté en verde."45# puntuación: el conductor califica cada objetivo contra su PROPIO comando de verificación.6# la confianza del trabajador no es evidencia. el código de salida lo es.7bash -c "$chk" && echo "$id" >> passed.txt || misses=$((misses+1))89# replanificación: el siguiente ciclo ve passed.txt y replanifica solo lo que falló
Asiento por asiento:
- Sonnet 5 para ejecución de codificación
- Haiku o Luna para trabajo mecánico puro
- Un trabajador de peso abierto como Kimi cuando el trabajo es repetitivo y los pesos son gratuitos
- Sol cuando el trabajo es intensivo en terminal
- Opus 4.8 en el asiento de trabajador, solo cuando un subagente necesita razonar
Reserva a Fable para los dos trabajos que ningún modelo barato puede hacer: escribir los objetivos y calificarlos.
Una flota es una estrategia de costos, nunca una estrategia de inteligencia.
Las ejecuciones multiagente queman de 3 a 10 veces los tokens por trabajo equivalente, y un estudio de 2026 con presupuesto igualado encontró que los agentes individuales igualan a las configuraciones multiagente en razonamiento cuando los tokens se mantienen constantes.
Un enjambre se justifica solo cuando los objetivos son independientes y en su mayoría mecánicos. Las escrituras permanecen de un solo hilo por árbol de trabajo, las fusiones ocurren en serie, y un humano toma el último commit.
COMPROBACIÓN 9: ejecuta el enjambre en un objetivo que se divida en tres partes. Un objetivo roto debe regresar como RECHAZADO en results.tsv y ser replanificado en el ciclo 2, nunca declarado como hecho.
BUILD 10: Peldaño 4 (nada que pasó una vez queda sin vigilancia)
Todo lo hasta ahora verifica el trabajo mientras se está haciendo. Nada hasta ahora nota cuando el trabajo terminado deja de ser cierto seis semanas después. Un objetivo que verificas una vez es una suposición con una marca de tiempo.
El peldaño 4 tiene dos mitades, y su aborto importa tanto como su salida: si ninguna propuesta pasa la puerta esta semana, el sistema no cambia, y eso es un éxito.
Mitad uno, objetivos permanentes. Cada cosa terminada se gradúa a un invariante con un predicado, re-verificado diariamente, para siempre. Crea un archivo por cada cosa terminada en goals/:
1predicate: npm test -- tests/auth 2>&1 | tail -1 | grep -q passing2born: 2026-07-133status: satisfecho4last-pass: 2026-07-135on-violation: avísame. no corrijas automáticamente.
Luego system/verify_goals.py ejecuta todo y sale 1 si algún invariante se rompe, nombrando el objetivo, la fecha en que se mantuvo por última vez y la política que estableciste:
1held = subprocess.run(["bash","-c",predicate], timeout=60).returncode == 02g["status"] = "satisfecho" if held else "VIOLATED"3# un timeout es una violación, no un pase: un predicado costoso es uno roto
Las reglas de predicado son estrictas a propósito: un comando de shell, salida 0 significa que el invariante se mantiene, barato y solo lectura.
Los adjetivos están prohibidos. Si un shell no puede verificarlo, un modelo tampoco.
Los objetivos que no son de código funcionan de la misma manera. test -s reports/$(date +%Y-%m)-review.md es un objetivo permanente perfecto para un informe mensual.
Mitad dos, compost. Una vez a la semana, lee el excremento que el sistema ya produjo: tareas BLOQUEADAS, ejecuciones de puerta fallidas, puertas de fábrica rechazadas, PR revertidos, objetivos violados.
Luego propón como máximo tres cambios. Una nueva ley para la constitución. Una corrección a una habilidad que sigue fallando de la misma manera. O un objetivo permanente que te faltaba.
Solo propón. Tú firmas.
1claude --model claude-fable-5 --effort high --allowedTools "Read,Grep,Glob" \2 -p "Lee el excremento de esta semana: líneas BLOQUEADAS en progress.log, entradas de PUERTA RECHAZADA,3 objetivos VIOLADOS, PR cerrados sin fusionar. Extrae MÁXIMO 3 propuestas:4 una nueva ley (cita los incidentes), una corrección de habilidad (mismo fallo repitiéndose), o5 un objetivo permanente que nos faltaba. Solo propón, no edites nada. Una semana limpia es una6 respuesta válida, dila y detente."
Este peldaño se cierra solo cuando las evaluaciones y los jueces dicen que el sistema mejoró. Lo que significa que el sistema necesita una memoria de sus propios fallos para mejorar contra ellos.
La ejecución de compost es lo que convierte un script en una institución.
Los objetivos permanentes son lo que hace seguro terminar. El centinela detecta, el pipeline normal corrige, y nada se pudre en silencio.
COMPROBACIÓN 10: verify_goals.py demo nombra el invariante roto con su fecha de último pase y deja solo el sano. Luego escribe un objetivo permanente real para la última cosa que terminaste.
BUILD 11: Peldaño 5 (tu asiento, y por qué nunca se vacía)
El peldaño 5 tiene tu nombre por una razón mecánica, no sentimental.
Un bucle puede alcanzar su condición de parada y seguir siendo incorrecto. Las pruebas pasan, la puerta se pone verde, ambos revisores firman, y el último commit sigue siendo un error.
Cada build por debajo de esta existe para reducir ese riesgo. Ninguna lo elimina.
Tus deberes permanentes, todos baratos:
- Lee la cola con café: tareas BLOQUEADAS, líneas de PUERTA RECHAZADA, objetivos VIOLADOS, la parte de bajo costo. Diez minutos.
- Verifica el último commit antes de fusionarlo. No todos los diffs, el último, aquel del que el sistema estaba más seguro.
- Firma o rechaza las tres propuestas de compost. Esa es la única forma en que las leyes entran en la constitución.
Tres jugadas se ejecutan en un ritmo en lugar de a demanda, porque cuestan dinero real y pagan en dirección en lugar de diffs:
Jugada uno, el bucle de retroalimentación del proyecto, mensual.
Apunta a Fable a lo que ya enviaste, solo lectura, y haz que escriba un plan de mejora detallado. Luego entrega la ejecución de ese plan a Opus 4.8 o Sol.
El modelo caro hace la parte que se multiplica, el juicio sobre qué cambiar, y nunca la parte que no, escribir.
1claude --model claude-fable-5 --effort high --allowedTools "Read,Grep,Glob" \2 -p "Revisa este proyecto de principio a fin. Escribe un plan de mejora ordenado por3 apalancamiento: qué es frágil, qué está sobreconstruido, qué falta, qué debería4 eliminarse. No escribas código. Genera tareas con criterios de aceptación." \5 > plans/$(date +%F)-improvement.md
Jugada dos, el análisis de comportamiento, mensual.
Alimenta tu propio historial de sesiones y proyectos en ambos arneses, y pídele que mapee cómo construyes y dónde te estancas.
Este es el único informe del sistema cuyo sujeto eres tú. Suele ser el que más cambia.
Jugada tres, la auditoría del segundo cerebro, trimestral. Apúntalo a tus notas, documentos y backlog, y pregúntale qué dice tu propio pensamiento que vale la pena construir a continuación y qué vale la pena eliminar. Trata el resultado como una propuesta, exactamente como el compost.
Los peldaños siguientes optimizan la ejecución, y la ejecución es la parte barata ahora. La dirección es el insumo escaso, y la dirección es por lo que vale la pena pagar a un modelo de frontera. Compra criterio por gramos, ejecución por toneladas, y guarda la última firma.
CHECK 11: ejecuta la jugada uno en tu propio repositorio. Si el plan no nombra nada que ya supieras que era frágil, tus archivos de contexto son demasiado delgados, lo cual es un problema de BUILD 1.
BUILD 12: Operaciones
Los agentes queman de 10 a 100 veces los tokens de una llamada de chat, y la entrada domina aproximadamente 100 a 1.
Apila las cuatro palancas de BUILD 0 (dividir, cachear, lotificar, compactar) y los equipos reportan estar entre un 70 y un 90 por ciento por debajo de su línea base no optimizada.
Para tener claridad: $13 por desarrollador por día activo es el promedio empresarial de Claude Code, y el 90 por ciento de los usuarios se mantiene por debajo de $30.
Una línea de disciplina en lugar de un nuevo subsistema: una clase de tarea puede auto-fusionarse solo después de 20 ejecuciones registradas con una tasa de aprobación del 95 por ciento, y una sola caída por debajo del 90 por ciento la revoca de forma notoria.
1awk -F'\t' '$2=="fix-lint"{r++; if($3=="pass")p++}2 END{printf "%d runs, %.0f%%\n", r, (r?p/r*100:0)}' progress.log
Gasto semanal, a partir de los costos por tick que ralph.sh ya registra:
1grep '^cost' progress.log | awk -F'\t' \2 -v d="$(date -d '7 days ago' +%F)" \3 '$2>=d{s+=$3} END{printf "week: $%.2f\n", s}'
Calcula el metabolismo antes de programar el cron. El costo diario es los ticks multiplicados por el costo promedio del tick.
El asiento que maneja el tick silencioso de "no hay trabajo" decide la factura. Centavos en el nivel barato, dólares en un modelo de frontera con esfuerzo alto, para la respuesta idéntica de "nada que hacer".
Operando dentro de tus límites
Estos modelos queman tokens rápidamente, y cómo los ejecutes decide cuánto trabajo del día logras antes de chocar contra una pared.
Primero, conoce cuál pared.
- Con una clave de API, la pared es la factura. progress.log ya la vigila.
- Con un asiento de suscripción, la pared es una ventana de cinco horas y una ventana semanal juzgadas en conjunto. Ninguna de las dos aparece en ningún lado en el registro anterior.
Vigila el medidor en el que realmente estás: el panel de uso en la configuración de Codex, /usage en el lado de Claude, o un monitor como ccusage o codexbar colocado en una esquina de la pantalla.
Un límite que nunca lees es un límite que descubres al chocar contra él, con cuatro horas restantes en el reloj y nada para ejecutar.
Seis palancas, de la más barata primero. La mayoría actúa en los peldaños 0 a 2, donde se queman los tokens:
- Reduce CLAUDE.md y AGENTS.md a lo esencial. Cada mensaje los lee, además de cada habilidad y herramienta que tengas habilitada. Apaga lo que no estés usando; un servidor MCP no utilizado es un impuesto en cada mensaje.
- Baja el esfuerzo cuando no necesites la parte superior de la escalera. Por defecto, medio o alto. Guarda 'max' para problemas que lo necesiten. Y confirma que el modo rápido esté desactivado mientras estés ahí, porque multiplica lo que sea que tengas configurado.
- Dale al modelo puntos de parada claros. Estos modelos se ejecutan largo por diseño. Haz que terminen el plan y confirmen antes de ejecutar, que es el trabajo real del modo plan.
- Mantén a los subagentes con esfuerzo más bajo. Heredan el modelo del padre y su dial también, y un enjambre en 'max' vacía una ventana en un mensaje. La solución barata es una ley en ambas constituciones: no generar a menos que se solicite.
- Mantén el modelo caro fuera del trabajo masivo. Ya sea que Fable esté encima como un conductor de bajo token o a disposición como asesor, gana su precio en los puntos de decisión, nunca mientras escribe la línea número mil.
- Lee lo que cuesta un mensaje, luego ajusta las cinco anteriores contra ese número. Esta es la única palanca que te dice cuál de las otras cinco es tu problema.
Juntas, estas palancas establecen cuánto tiempo puedes ejecutar los mejores modelos antes de que el límite te detenga.
Cron, cuando comience la Semana 2:
1# bucle de tareas: el tick diario, ambos límites establecidos20 7 * * 1-5 cd /path/to/repo/loop && BUDGET_USD=5 ./ralph.sh >> ../progress.log 2>&134# bucle del sistema: nada que haya pasado una vez queda sin vigilancia530 7 * * * cd /path/to/repo && python3 system/verify_goals.py goals/ >> progress.log 2>&167# bucle del sistema: los fallos se convierten en leyes, una vez por semana, solo propuestas80 9 * * 1 cd /path/to/repo && codex --profile deep exec \9 "$(cat ~/.codex/prompts/compost.md)" >> proposals/$(date +\%F).md 2>&1
El manual de operaciones. Cada alarma, y qué hacer al respecto:

El cronograma de 30 días. No te saltes las graduaciones; cada una desbloquea la siguiente.

La Consola de Mando
Cada bucle aquí es accesible desde una pulsación de tecla. Los comandos de barra viven en ~/.codex/prompts/ en el lado de Codex, donde el nombre del archivo se convierte en el comando, y en .claude/skills/ en el lado de Claude. Los clips de CLI son las versiones sin interfaz gráfica que ejecutan cron y CI.
Comandos de barra de Codex

/plan-stop y /effort se pagan solos más rápido. Ambos gastan unos cientos de tokens para evitar que gastes unos cientos de miles.
Estos modelos se ejecutan largo, así que el punto de control que quieres viene antes del gasto. /plan-stop devuelve el plan, los comandos de "listo-cuando", el radio de impacto, el costo y la única pregunta que le haría a un humano. Luego se detiene.
Coloca ambos archivos en ~/.codex/prompts/, donde el nombre del archivo se convierte en el comando.
effort.md se convierte en /effort, el dial de enrutamiento hecho explícito:
1# /effort - elige el nivel de esfuerzo antes de gastarlo23No respondas la tarea aún. Primero, enrútala.45Puntúala. Un punto por cada uno:6 - contiene un "por qué", un debug, una condición de carrera, un punto muerto,7 una refactorización, un problema de seguridad o una optimización8 - toca más de un subsistema9 - un intento previo ya falló10 - el cambio es irreversible o llega a los usuarios1112Luego mapea:1314| Puntaje | Esfuerzo | Asiento |15|---|---|---|16| 0-1 | bajo | codex -e low, o perfil fast (Luna). Nunca pongas un asiento de frontera en esto. |17| 2 | medio | Terra en medio es el asiento. |18| 3+ | alto | el valor por defecto para trabajo real, y donde está el punto ideal. |1920Solo si alto YA ha sido probado y falló: recomienda 'max', y di claramente21qué se espera que compre el pensamiento extra. La tasa base contra la que22estás argumentando es aproximadamente el doble del costo por una ganancia que generalmente no se amortiza.2324Dos recordatorios antes de recomendar una actualización:25 1. Un mejor modelo con esfuerzo más bajo generalmente supera a un modelo más débil26 en 'max'. Cambia el asiento antes que el dial.27 2. Si esta tarea genera subagentes, indica su esfuerzo explícitamente (bajo a28 menos que se demuestre lo contrario). Los subagentes heredan del padre, y una29 flota en 'max' vacía una ventana de contexto en un mensaje.3031Salida exacta:32 ESFUERZO: bajo | medio | alto | max33 ASIENTO: <modelo>34 PORQUÉ: <una línea, nombrando los puntos que puntuaron>35 SUBAGENTES: <esfuerzo a fijar, o ninguno>36Luego detente. El humano ejecuta la tarea al nivel que nombraste.
Una respuesta en vivo se ve así, y cuesta unos cientos de tokens para evitar unos cientos de miles:
1ESFUERZO: alto2ASIENTO: gpt-5.6-sol3PORQUÉ: contiene "por qué", toca autenticación y sesiones, intento previo falló4SUBAGENTES: bajo
plan-stop.md se convierte en /plan-stop, el punto de control antes del gasto:
1# /plan-stop - planifica el trabajo, luego detente23Estos modelos se ejecutan largo. Eso es una característica cuando el plan es4correcto y una forma costosa de estar equivocado cuando no lo es. Este comando5compra el punto de control antes del gasto.67Planifica la tarea. No edites ni un solo archivo. No ejecutes una compilación.8No empieces.910Produce:11 OBJETIVO: <una línea>12 SUPUESTOS: <lo que das por sentado; si estos están equivocados, el plan también lo está>13 PASOS: <numerados, cada uno equivalentes a un commit de trabajo>14 LISTO_CUANDO: <el comando de shell exacto que prueba que cada paso se realizó>15 RADIO DE IMPACTO: <archivos y sistemas tocados; nombra autenticación, pagos,16 migraciones, configuración de producción explícitamente>17 COSTO: <tokens o dólares aproximados, y qué asiento ejecuta cada paso>18 INCÓGNITAS: <lo que le preguntarías a un humano si pudieras hacer exactamente19 una pregunta>2021Luego detente y espera.2223Reglas mientras planificas:24 - La ambigüedad va en INCÓGNITAS. No la resuelvas adivinando y continuando. Una25 suposición que sobrevive hasta la ejecución cuesta cien veces más que una26 pregunta.27 - Si el plan necesita una credencial, un endpoint o una convención que no esté28 escrita en este repositorio, detente y dilo. Nunca inventes una.29 - Si algún LISTO_CUANDO no es un comando de shell, reescribe ese paso hasta que30 lo sea. Si un shell no puede verificarlo, tampoco puede hacerlo un revisor.31 - Si el radio de impacto toca la lista de "nunca" en AGENTS.md, dila al32 principio y recomienda ponerlo en cola para un humano.3334Te pagan por el plan aquí, no por el diff. Un plan corto y honesto con35incógnitas reales supera a un plan confiado que asumió silenciosamente lo incorrecto.
fable-advice.md y review-hostile.md se convierten en /fable-advice y /review-hostile. Ambos son los espejos del lado de Codex de archivos que ya escribiste: el resumen del asesor de BUILD 5 y el contrato del revisor hostil de BUILD 6. Mismas reglas, mismos límites, apuntando al otro lado de la línea del proveedor.
compost.md se convierte en /compost, el constructor de instituciones semanal del peldaño 4:
1# /compost - convierte los fracasos de esta semana en las leyes de la próxima23Lee el agotamiento de esta semana, todo, y nada más:4 - Líneas BLOQUEADAS en progress.log (tareas que superaron tres consultas al asesor)5 - Entradas de PUERTA: RECHAZADO (una ejecución que no pudo probar que estaba terminada)6 - Objetivos permanentes VIOLADOS (algo terminado dejó de ser cierto)7 - Salidas por cortacircuitos y presupuesto (códigos 2 y 3)8 - PRs abiertos por el bucle y cerrados sin fusionar (el humano estuvo en desacuerdo en silencio)9 - Cualquier clase de tarea cuya tasa de aprobación cayó por debajo del 90 por ciento1011Extrae COMO MÁXIMO tres propuestas. Tres es un límite estricto, no un objetivo. Una12semana limpia es un hallazgo válido, y decirlo es más útil que fabricar trabajo.1314Cada propuesta es exactamente una de:15 1. Una NUEVA LEY para CLAUDE.md o AGENTS.md. Cita los incidentes que habría16 prevenido. Una ley con un solo incidente detrás es una coincidencia; espera al17 segundo.18 2. Una CORRECCIÓN DE HABILIDAD, cuando el mismo fallo se repite en el mismo lugar.19 Nombra la habilidad, el patrón y la edición más pequeña que lo resuelve.20 3. Un OBJETIVO PERMANENTE que te faltaba, cuando algo se pudrió en silencio.21 Escribe el predicado como un comando de shell, o no lo propongas.2223Salida:24 SEMANA: <fechas>25 AGOTAMIENTO: <recuentos: bloqueados, rechazados, violados, revertidos>26 PROPUESTA n: <ley | corrección de habilidad | objetivo permanente>27 EVIDENCIA: <los incidentes, citados>28 CAMBIO: <el texto exacto o predicado a añadir>29 COSTO DE NO HACERLO: <una línea>30 VEREDICTO: <qué harías primero si solo pudieras hacer una cosa>3132Reglas estrictas:33 - Solo PROPÓN. No edites CLAUDE.md, AGENTS.md, ninguna habilidad ni ningún34 archivo de objetivos. El humano firma, o no sucede.35 - No propongas una ley que suavice una puerta, aumente un presupuesto o relaje36 un "nunca". Esos son el sistema pidiendo que se le permita fallar más37 cómodamente.38 - Agotamiento vacío: di "semana limpia" y detente. No busques trabajo para39 justificar la ejecución.
Clips de CLI
Mantenlos en un archivo de notas. Son todo el sistema accesible desde una terminal:
1# el tick diario, con límite en ambas dimensiones2BUDGET_USD=5 MAX_ITERS=20 ./loop/ralph.sh34# planificar primero, gastar después (el hábito de mayor apalancamiento aquí)5codex -e high exec "$(cat ~/.codex/prompts/plan-stop.md)67TAREA: migrar el almacén de sesiones del adaptador heredado"89# revisión cruzada de proveedores del último commit, en el arnés nativo de Sol10codex --profile deep exec "$(cat ~/.codex/prompts/review-hostile.md)"1112# el carril reflejado: Codex atascado, Claude asesora13claude --model claude-fable-5 --effort high -p "$(cat ~/.codex/prompts/fable-advice.md)"1415# el bucle de objetivos: Fable planifica, la flota ejecuta, Fable puntúa16CYCLES=3 FLEET=4 WORKER_EFFORT=low ./swarm/swarm.sh "dividir la migración de autenticación"1718# el bucle del sistema: nada que haya pasado una vez queda sin vigilancia19python3 system/verify_goals.py goals/ # exit 1 nombra lo que se pudrió20python3 gate/eval_gate.py eval/cases.jsonl # exit 1 bloquea el cambio de enrutamiento2122# peldaño 3, la fábrica: las filas deciden, no las transcripciones23./factory/factory.sh "construir la aplicación de kanban y notas según PRD.md"24python3 factory/factory_gate.py gate factory.db2526# la ejecución semanal de construcción de instituciones27codex --profile deep exec "$(cat ~/.codex/prompts/compost.md)"2829# el único número que dice si algo de esto funcionó30grep '^route' progress.log | awk -F'\t' \31 '{n++; if($3!="frontier") c++} END{printf "cheap share: %.0f%%\n", c/n*100}'
La política completa vive en ROUTING.md de BUILD 4, que ambos arneses leen.
Las Reglas (imprime esto)
- Leyes, no consejos: un número, un "nunca" o un comando que lo verifique.
- El modelo se alquila. El bucle es tuyo. Tú vives en el peldaño 5.
- Un bucle sin aborto es una factura. Dos límites en cada uno: iteraciones y dólares.
- La evidencia fluye hacia arriba, el control fluye hacia abajo. Ningún peldaño se cierra con un informe de un peldaño inferior.
- Un bucle puede detenerse y seguir estando equivocado. Verifica el último commit antes de que se fusione.
- Enruta en los límites. Esfuerzo antes que modelo. El caché vota en contra de cambiar.
- Por defecto, alto. 'Max' es profundidad, 'ultra' es anchura, el modo rápido es un impuesto de 2.5x, y los subagentes heredan el asiento y el dial del padre.
- El enrutador es culpable hasta que supere al mejor modelo único en tus evaluaciones.
- Los ahorros son la división del tráfico. Observa la participación barata, no la tarifa.
- La ejecución es a granel, el consejo es en gramos. Limita las consultas a tres.
- Nada califica su propia tarea. Contexto nuevo, otro linaje, arnés nativo.
- Un hilo es un rastro. Una fila es evidencia. La puerta lee filas.
- Nunca edites una prueba para que pase. Nunca fusiones más allá de una puerta BLOQUEADA.
- Un objetivo que verificas una vez es una suposición con una marca de tiempo.
- Una graduación a la vez. Cada mes, elimina algo.
Cierre
Treinta días a partir de ahora, si hiciste las verificaciones:
- Un bucle envía trabajo aburrido sin supervisión, detrás de una puerta determinista
- Un controlador barato llama a un experto de frontera solo cuando se estanca
- Cada diff significativo es juzgado por un modelo que no lo escribió
- Un número en progress.log te dice si la economía se compone
Los modelos nunca fueron la parte difícil. Un sistema que se mantiene honesto cuando dejas de mirar es la parte difícil, y es por eso que el peldaño 5 todavía tiene tu nombre.
Empieza esta noche con los veinte minutos que lo prueban. verify.sh de BUILD 2. Un tick ejecutado a mano de BUILD 3. Una revisión del otro linaje en tu último commit.
La primera vez que un revisor que no comparte contexto con el escritor encuentra un error real en un trabajo que estabas seguro de que estaba terminado, no necesitarás que te convenzan sobre el resto.
Construye la puerta esta noche. Responde con lo que atrapó en la primera ejecución.
Aviso Legal
Escrito a partir de las notas de investigación del autor y fuentes verificadas, con asistencia de redacción y verificación de datos de Claude. Todos los precios y comportamientos de los modelos fueron verificados contra las páginas oficiales de precios y documentación en la semana de publicación; cambian, así que verifica antes de presupuestar.
Este artículo fue escrito a partir de las notas del autor como se menciona en el párrafo anterior y editado con Claude Opus 4.7.
Si deseas añadir alguna otra corrección, por favor agrégalo en los comentarios.





