ODD en cada runtime

Por: Artiko
oddruntimesclaude-codecodexopencodepigentle-shell

ODD en cada runtime

Objetivos

  • Explicar cómo llega el texto del protocolo a cada agente.
  • Identificar qué cambia entre runtimes.
  • Entender el régimen especial de Pi y Gentle Shell.
  • Distinguir entre paridad de texto y paridad de comportamiento.

Una fuente, muchas proyecciones

El bloque ## Implementation Routing se renderiza desde internal/components/agentguidance/routing.go y se proyecta a cada adaptador.

flowchart TD
    A["capabilitymanifest<br/>datos de rutas"] --> B["routing.go<br/>RenderRouting"]
    B --> C["Bloque agent-routing en el archivo<br/>de sistema del adaptador"]
    B --> D["agent.gentle-orchestrator.prompt<br/>en opencode.json"]
    B --> E["Módulo agent-routing.md<br/>para plantillas Jinja"]
    B --> F["routing/pi.md<br/>en el contrato de proveedor"]
    C --> G["Adaptadores estándar"]
    D --> H["OpenCode y Kilocode"]
    E --> I["Adaptadores con plantillas"]
    F --> J["gentle-pi lo espeja"]

gentle-ai install y gentle-ai sync proyectan las mismas reglas canónicas. El refresco es idempotente: la proyección gestionada se reemplaza sin duplicarse.

El orquestador de cada agente se ensambla por separado a partir de secciones compartidas, en internal/assets/skills/_shared/odd-orchestrator-sections.md. Cada archivo en internal/assets/<agente>/orchestrator.md referencia esas secciones.


Qué cambia entre runtimes

RDD: un conjunto cerrado

var receiptDrivenDevelopmentAgents = []AgentID{
	AgentClaudeCode,
	AgentCodex,
	AgentOpenCode,
	AgentPi,
}

Es la única fuente de verdad para esa puerta, según su propio comentario, y una prueba de paridad falla si se desincroniza. Todos los demás runtimes reciben el mismo protocolo ODD con verificación ordinaria.

Elemento del textoCon RDDSin RDD
Paso 7Candidato de revisión nativa”Verification covers a work-unit commit or a PR slice”
Commit de alto riesgoPara que la revisión nativa lo tome soloPara que la verificación lo tome solo
Delegación por acciónIncluye actores de revisiónIncluye actores de verificación
Sección del interruptorPresenteAusente
Comprobacionesreview assess y transicionesSegún la verificación proporcional

Delegación: depende del cliente

docs/agents.md describe la capacidad de cada uno:

AgenteIDMecanismo
Claude Codeclaude-codeSubagentes Task, MCP, skills, hooks
OpenCodeopencodeSubagentes task nativos, plugins de revisión
CodexcodexMultiagente nativo cuando está disponible, con respaldo en solitario
CursorcursorSubagentes nativos, reglas, skills y MCP
VS Code Copilotvscode-copilotrunSubagent, instrucciones de usuario
Gemini CLIgemini-cliAgentes nativos experimentales
Kilo CodekilocodeConfiguración compatible con OpenCode
WindsurfwindsurfSkills nativos, reglas globales y MCP
AntigravityantigravityAgentes personalizados y Mission Control
Kimi CodekimiAgentes personalizados, skills y MCP
Qwen Codeqwen-codeSubagentes nativos, skills y MCP
Kiro IDEkiro-ideAgentes nativos, steering, skills y MCP
OpenClawopenclawInstrucciones de espacio de trabajo, skills y MCP global
Traetrae-ideReglas de usuario, skills y MCP
GitHub Copilot CLIgithub-copilot-cliInstrucciones de usuario, skills y MCP
PipiRuntime del paquete Gentle Shell
HermeshermesWorkers efímeros con delegate_task
ConductorconductorHereda la configuración de Claude Code: solo detección y catálogo

El README habla de 17 agentes, y la tabla de docs/agents.md suma 18 filas al contar a Conductor, que solo se detecta y se cataloga.

La documentación aclara que la disponibilidad nativa no da permiso para escrituras adicionales. Un cliente sin delegación hace trabajo más pequeño inline, con la forma reducida de verificación del capítulo 13.

Hermes: workers efímeros

Hermes tiene su propio skill, hermes-ephemeral-delegation. Cada delegate_task crea un contexto nuevo sin memoria de la conversación, así que se le entrega una misión autónoma. La salida del worker se considera un autoinforme: las escrituras, pruebas, URL e IDs se comprueban antes de darlas por buenas.

Kiro: sin sdd-*

docs/kiro.md tiene una sección ODD Execution Model: el orquestador permanece en el archivo de steering, trabaja inline y delega a subagentes nativos solo por motivo con nombre. Gentle AI ya no enruta trabajo por .kiro/specs/.


Pi y Gentle Shell: un régimen aparte

Pi es el único caso cuya propiedad cambia:

Gentle AI configures Pi support, but the separate Gentle Shell (gentle-pi) package owns Pi’s runtime prompts, persona, model assignments, delegation, and ODD behavior.

docs/pi.md

ComponenteDueñoPropósito
gentle-pi (Gentle Shell)Paquete aparteArnés de Pi, guía ODD, persona, modelos, skills, delegación
gentle-engramPaquete aparteMemoria de sesión y herramientas de Engram
pi-web-access, pi-btwPaquetes aparteAcceso web y flujo complementario

Gentle AI no escribe en el prompt de sistema de Pi. Publica el bloque renderizado como routing/pi.md en el contrato de proveedor, para que gentle-pi lo espeje.

Las diferencias del texto de Pi

Sus pasos difieren del canónico. Estos son los agregados más visibles:

ElementoEn Pi
Lista visiblePaso 5 crea o reconstruye una lista todo desde las tareas conciliadas
EnrutamientoPor los Mechanisms del orquestador
PruebasDetalla stdout y stderr exactos, y entradas rechazadas que dejan intactos datos y contadores
Fase visibleEtiqueta exploring, implementing, checking, deciding inferida de la actividad
Herramienta adicionalgentle_odd_phase, para fases que las herramientas no muestran: authorizing, researching, deciding, closing
Detalleorchestrator-delegation.md y orchestrator-memory.md

gentle_odd_phase se llama solo cuando la fase de la sesión principal cambia de verdad, nunca por llamada ni desde un subagente.

Paridad de comportamiento

El proyecto hace una distinción importante:

Updating Gentle AI’s shared renderer does not establish Pi parity; parity requires observing the same file, memory, update, and resume behavior in Pi, not merely matching prompt text.

docs/usage.md


Las pruebas contra la desviación

Mantener esto alineado en 17 agentes requiere pruebas específicas. El repositorio tiene, por ejemplo:

Prueba o archivoQué protege
routing_test.go, routing_golden_test.goEl texto renderizado por agente
rdd_gating_test.goQue solo los runtimes con RDD reciban sus cláusulas
orchestrator_parity_test.goLa paridad entre orquestadores
orchestrator_drift_ratchet_test.goQue no aumente la desviación
language_contract_test.goEl contrato de idioma de los artefactos
e2e/organicruntime/organic_runtime_test.goUn agente real con el binario real

El contrato de idioma

Una regla que afecta directamente a quienes trabajan en español:

  • La persona activa controla solo la conversación directa.
  • Los artefactos técnicos generados son en inglés por defecto, sea cual sea la persona o el idioma de conversación. Esto incluye tareas, comentarios de código, textos de interfaz, pruebas y fixtures.
  • Si se piden en otro idioma, se usa un registro neutro o profesional, salvo instrucción contraria.
  • Los comentarios públicos siguen el idioma del contexto de destino.
  • Al delegar, se reenvía este contrato.

Por otra parte, las especificaciones citan tus palabras textualmente en tu idioma: un documento de feature en inglés puede tener citas en español. Los documentos reales del repositorio lo muestran.


Personas

La persona afecta al tono de la conversación, no al protocolo.

PersonaIDDescripción
GentlemangentlemanMentor orientado a enseñar, que cuestiona malas prácticas y explica el porqué
NeutralneutralLa misma filosofía, sin lenguaje regional
CustomcustomMantiene tu configuración sin gestionar, y no inyecta una persona

Actividad

Si tienes Gentle AI instalado en tu agente, abre el archivo donde quedó el bloque gestionado. Búscalo con ## Implementation Routing y comprueba:

  1. ¿Incluye la sección Receipt-driven development is user-owned? ¿Coincide con la lista cerrada?
  2. ¿Qué dice el paso 7 sobre el candidato?
  3. ¿Cuáles son los valores numéricos del Mapping trigger?

Autoevaluación

  1. ¿Qué runtimes reciben RDD?

    • A. Todos los que tienen subagentes
    • B. Los 17 soportados
    • C. Claude Code, Codex, OpenCode y Pi
    • D. Solo Claude Code
  2. ¿Quién es dueño del comportamiento de ODD en Pi?

    • A. Gentle Shell (gentle-pi)
    • B. El binario gentle-ai
    • C. Engram
    • D. El archivo opencode.json
  3. ¿Qué establece la paridad con Pi según la documentación?

    • A. Que el texto del prompt coincida
    • B. Una ejecución de gentle-ai sync
    • C. Observar el mismo comportamiento de archivo, memoria, actualización y reanudación
    • D. Que pasen las pruebas de Go
  4. Un agente conversa en español. ¿En qué idioma escribe por defecto los comentarios de código?

    • A. En español
    • B. En el idioma del usuario más reciente
    • C. En el que defina la persona
    • D. En inglés, salvo que se pida otro
Respuestas
  1. C. Es el conjunto cerrado de internal/model/rdd.go.
  2. A. docs/pi.md lo indica de forma explícita.
  3. C. Coincidir en el texto no basta.
  4. D. Es el contrato de idioma, y la persona solo afecta a la conversación.

Lista de control

  • Sé dónde se genera el texto y cómo llega a mi agente.
  • Sé si mi runtime recibe RDD.
  • Conozco la frontera entre Gentle AI y Gentle Shell.
  • Entiendo el contrato de idioma de los artefactos.

Fuentes

internal/components/agentguidance/routing.go, internal/model/rdd.go, docs/trigger-rules.md, docs/agents.md, docs/pi.md, docs/kiro.md, docs/usage.md, internal/assets/skills/_shared/odd-orchestrator-sections.md, internal/assets/skills/hermes-ephemeral-delegation/SKILL.md.