Geodi, el personaje oficial de GEODE en pixel art
Volver a la sala

GEODE

Autonomous Agent Harness

De la observación a la siguiente acción.

Un arnés local de agentes autónomos al que se pueden encargar investigación, trabajo con archivos y tareas programadas.

2026.02.21 — present

Diseño, juicio, verificación: Author · implementación: Claude · revisión: Codex

  • CLIPublicado · PyPI
  • Servidor MCPImplementado

La propuesta de parada del modelo solo se convierte en finalización mediante la verificación.

En una parada entregable, un modelo que pide parar pasa igualmente por la verificación de finalización. El resultado es terminado, continuar dentro del presupuesto o en espera de revisión; los límites de ejecución, la cancelación y los errores terminan en un estado de parada aparte.

Mapa de finalización · trazado a partir de las rutas de código en el commit fijado 9e2c041
Mapa de finalización de GEODECómo la propuesta de parada de un modelo se convierte en finalización. Solo las paradas entregables (natural, forced_text, actionable_partial) pasan por el hook PreVerify, una comprobación estructural y el juez seleccionado (juez LLM por defecto, Jev si se elige), y por los hooks PostVerify y Stop. Un aprobado se guarda como completado; un fallo reparable continúa la misma solicitud dentro de un presupuesto por defecto de dos intentos. Un veredicto inutilizable, un intento de convertir un fallo en aprobado o un presupuesto agotado retiene al candidato y pausa la sesión. Las paradas por cancelación, límite e infraestructura y las ejecuciones de control workflow se guardan sin verificación.IPC · llamador de CLIrespuesta · estado de sesiónRevisor externopending · sin contactarModelo juezLLM judge · Jev Choiceipc_server/poller.pycontrol workflow · omitir la verificación públicaloop/agent_loop.pyarun · turno del modelo_arun_once · continuación de reparaciónloop/_guards.py · models.pyparada entregable · natural, etc.parada por fallo · límite · cancelaciónloop/_lifecycle.pyfinalize_and_return_asyncpolicy_action · lectura del veredictopresupuesto de continuación · 2 por defectocore/hooks/public.pyPreVerify · STRENGTHENPostVerify · ACCEPT · REVISE · ESCALATEStop · CONTINUEmemory · observabilitycheckpoint · estado de sesióntimeline · filas de decisión del ledgercore/agent/verify.pycomprobación estructural · empty_turnjuicio semántico · LLM o Jevverification_error · cerrado ante falloProceso del runtime de GEODEfin de un turno de AgenticLoopbucle · candidatos de paradafinalization · veredicto1 propuesta de parada · arun · turno del modelo → parada entregable · natural, etc.12candidato de finalización3 PreVerify · finalize_and_return_async → PreVerify · STRENGTHEN34verify_turn_async5solicitud de juicio6passed · rubric_misses7 decisión de PostVerify · policy_action · lectura del veredicto → PostVerify · ACCEPT · REVISE · ESCALATE78Stop · CONTINUE9completed · guardado10respuesta1passed · rubric_misses2 decisión de PostVerify · policy_action · lectura del veredicto → PostVerify · ACCEPT · REVISE · ESCALATE23Stop · CONTINUE4reparación · intento +11verification_error2 decisión de PostVerify · policy_action · lectura del veredicto → PostVerify · ACCEPT · REVISE · ESCALATE23ESCALATE · pending4veredicto · filas de evidencia1 guardas · límites · arun · turno del modelo → parada por fallo · límite · cancelación12parada por fallo · cancelación3omitir la verificación pública4solo guardar · sin verificación5respuesta

Verificar → completar

Solo una parada entregable pasa por PreVerify → juicio → PostVerify → Stop. Ni la propuesta de parada del modelo ni una instrucción de hook son por sí solas una finalización.

  1. arun · turno del modeloloop/agent_loop.pydatos: propuesta de paradaparada entregable · natural, etc.loop/_guards.py · models.py

    Cuando el modelo responde con texto sin llamar a una herramienta, el turno se convierte en candidato de parada natural (forced_text en la última ronda permitida). La propuesta de parada de un modelo aún no es una finalización.

  2. parada entregable · natural, etc.loop/_guards.py · models.pydatos: candidato de finalizaciónfinalize_and_return_asyncloop/_lifecycle.py

    Solo natural, forced_text y actionable_partial son paradas entregables, y solo estas pasan a la verificación pública.

  3. finalize_and_return_asyncloop/_lifecycle.pyejecutar · decidir: PreVerifyPreVerify · STRENGTHENcore/hooks/public.py

    Con STRENGTHEN, el hook PreVerify solo puede añadir requisitos y códigos de omisión. Puede hacer más estricto el veredicto, nunca aprobarlo.

  4. finalize_and_return_asyncloop/_lifecycle.pyejecutar · decidir: verify_turn_asynccomprobación estructural · empty_turncore/agent/verify.py

    Primero va una comprobación estructural (turno vacío, model_action_required); un fallo estructural irreparable omite el juicio semántico. Configuraciones antiguas como off o rule_based se resuelven como llm_judge y no pueden desactivar el veredicto.

  5. juicio semántico · LLM o Jevcore/agent/verify.pydatos: solicitud de juicioModelo juez

    El juez seleccionado (juez LLM por defecto, Jev Choice si se elige) se llama una vez, sin herramientas, durante 120 segundos como máximo y nunca más allá del presupuesto de tiempo restante. Un candidato que pueda contener observaciones personales no se envía a un juez auxiliar.

  6. juicio semántico · LLM o Jevcore/agent/verify.pydatos: passed · rubric_missespolicy_action · lectura del veredictoloop/_lifecycle.py

    El veredicto incluye aprobado o fallo, códigos de omisión, una reflexión para el siguiente intento y si conviene reintentar. Un aprobado semántico nunca cubre una comprobación estructural fallida.

  7. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    El hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT de un candidato que no superó la verificación se convierte en escalate. Sin decisión, se aplica el valor por defecto del runtime (aprobado → accept, reintentable → revise, si no, escalate).

  8. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Solo cuando no se escala puede la instrucción CONTINUE del hook Stop pedir una continuación de reparación. Una instrucción de hook es una entrada para el siguiente intento, no una autoridad.

  9. policy_action · lectura del veredictoloop/_lifecycle.pydatos: completed · guardadocheckpoint · estado de sesiónmemory · observability

    Con un aprobado y un accept, se fusionan los intentos continuados, se guarda el resultado y la sesión se registra como completed.

  10. finalize_and_return_asyncloop/_lifecycle.pydatos: respuestaIPC · llamador de CLI

    Devuelve la respuesta final si está completado; una respuesta vacía con EXTERNAL_VERIFICATION_REQUIRED si espera revisión; el motivo de parada en una parada sin verificación.

Reparación dentro del presupuesto

Un fallo reparable continúa la misma solicitud. El presupuesto por defecto es de dos intentos; cuando se agota, el candidato queda en espera de revisión.

  1. juicio semántico · LLM o Jevcore/agent/verify.pydatos: passed · rubric_missespolicy_action · lectura del veredictoloop/_lifecycle.py

    El veredicto incluye aprobado o fallo, códigos de omisión, una reflexión para el siguiente intento y si conviene reintentar. Un aprobado semántico nunca cubre una comprobación estructural fallida.

  2. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    El hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT de un candidato que no superó la verificación se convierte en escalate. Sin decisión, se aplica el valor por defecto del runtime (aprobado → accept, reintentable → revise, si no, escalate).

  3. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Solo cuando no se escala puede la instrucción CONTINUE del hook Stop pedir una continuación de reparación. Una instrucción de hook es una entrada para el siguiente intento, no una autoridad.

  4. presupuesto de continuación · 2 por defectoloop/_lifecycle.pyejecutar · decidir: reparación · intento +1_arun_once · continuación de reparaciónloop/agent_loop.py

    Con una instrucción de reparación, y solo mientras el número de intento esté por debajo del presupuesto (dos por defecto), la misma solicitud continúa. Al llegar al presupuesto pasa a escalate_budget_exhausted y queda en espera de revisión.

En espera de revisión

Un veredicto inutilizable, un intento de convertir un fallo en aprobado o un presupuesto agotado retiene al candidato y pausa la sesión.

  1. verification_error · cerrado ante fallocore/agent/verify.pyfallo · sin veredicto: verification_errorpolicy_action · lectura del veredictoloop/_lifecycle.py

    Un juez ausente, un tiempo de espera agotado o una respuesta inválida se convierte en verification_error: ni aprobado ni señal de reparación. Un veredicto inutilizable nunca sustituye al éxito.

  2. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    El hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT de un candidato que no superó la verificación se convierte en escalate. Sin decisión, se aplica el valor por defecto del runtime (aprobado → accept, reintentable → revise, si no, escalate).

  3. policy_action · lectura del veredictoloop/_lifecycle.pyejecutar · decidir: ESCALATE · pendingRevisor externo

    El candidato se conserva como pending_text y se retiene de las respuestas ordinarias, se guarda el checkpoint y se pausa la sesión. No se contacta automáticamente a ningún revisor externo.

  4. policy_action · lectura del veredictoloop/_lifecycle.pyregistrar · observar: veredicto · filas de evidenciatimeline · filas de decisión del ledgermemory · observability

    La timeline recibe filas de decisión, de evidencia y pending, y el evidence ledger una fila verification_policy. Son registros best-effort, no prueba de un efecto externo.

Paradas sin verificación

Las paradas por cancelación, límite e infraestructura y las ejecuciones de control workflow se guardan sin verificación pública.

  1. arun · turno del modeloloop/agent_loop.pyejecutar · decidir: guardas · límitesparada por fallo · límite · cancelaciónloop/_guards.py · models.py

    Guardas como los límites de rondas, tiempo, costo y contexto, la cancelación y la detección de fallos repetidos terminan el turno con un miembro del conjunto cerrado TerminationReason. Un límite desactivado en la configuración no siempre se aplica.

  2. parada por fallo · límite · cancelaciónloop/_guards.py · models.pyfallo · sin veredicto: parada por fallo · cancelaciónfinalize_and_return_asyncloop/_lifecycle.py

    Las paradas por cancelación, infraestructura y límite no tienen candidato que verificar, así que se guardan sin verificación pública.

  3. control workflow · omitir la verificación públicaipc_server/poller.pyejecutar · decidir: omitir la verificación públicafinalize_and_return_asyncloop/_lifecycle.py

    Cuando una llamada IPC pide omitir la verificación pública o hay un control workflow activo, la verificación pública se desactiva solo para esa ejecución y después se restaura el valor anterior.

  4. finalize_and_return_asyncloop/_lifecycle.pydatos: solo guardar · sin verificacióncheckpoint · estado de sesiónmemory · observability

    Una parada sin verificación igualmente guarda su resultado y su checkpoint y emite los eventos de fin de sesión.

  5. finalize_and_return_asyncloop/_lifecycle.pydatos: respuestaIPC · llamador de CLI

    Devuelve la respuesta final si está completado; una respuesta vacía con EXTERNAL_VERIFICATION_REQUIRED si espera revisión; el motivo de parada en una parada sin verificación.

Todas las conexiones con el mismo grosor. Elija un flujo para resaltar solo su recorrido, con pasos numerados.

  • Continua · dirección en que fluyen solicitudes, candidatos y resultados
  • Discontinua · ejecutar, decidir, autorizar, configurar
  • Raya larga y punto · registros y observación, aparte del veredicto
  • Guion corto · fallo o veredicto inutilizable
  • Línea negra gruesa · el flujo seleccionado; los números dan el orden
  • Recuadro · frontera de código o de registro, con su ruta en la cabecera
  • Chip interior · componente de esa frontera
  • Recuadro discontinuo · fuera de esa frontera
  • bucle · finalization
  • paradas · hooks · veredicto
  • guardado · registros
  • entrada IPC

Solo se dibujan las rutas de llamada del commit fijado 9e2c041. El aprobado de un juez es distinto del éxito de un verificador de benchmark externo; aquí la finalización es una decisión dentro del runtime.

Motor de juicio
Por defecto es el juez LLM; Jev Choice solo juzga cuando judgment_engine se fija en jev. En ambos casos, un juez inutilizable da verification_error, nunca éxito.
Qué pueden hacer los hooks
PreVerify solo puede hacer más estricto el veredicto, PostVerify no puede aprobar a un candidato fallido y Stop solo puede pedir una continuación cuando no se escala.
En espera de revisión
La espera de revisión registra que se necesita una decisión externa. No notifica a nadie ni significa que el resultado se haya aprobado.