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.
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.
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.
arun · turno del modelo
loop/agent_loop.pydatos: propuesta de paradaparada entregable · natural, etc.loop/_guards.py · models.pyCuando 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.
parada entregable · natural, etc.
loop/_guards.py · models.pydatos: candidato de finalizaciónfinalize_and_return_asyncloop/_lifecycle.pySolo natural, forced_text y actionable_partial son paradas entregables, y solo estas pasan a la verificación pública.
finalize_and_return_async
loop/_lifecycle.pyejecutar · decidir: PreVerifyPreVerify · STRENGTHENcore/hooks/public.pyCon STRENGTHEN, el hook PreVerify solo puede añadir requisitos y códigos de omisión. Puede hacer más estricto el veredicto, nunca aprobarlo.
finalize_and_return_async
loop/_lifecycle.pyejecutar · decidir: verify_turn_asynccomprobación estructural · empty_turncore/agent/verify.pyPrimero 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.
juicio semántico · LLM o Jev
core/agent/verify.pydatos: solicitud de juicioModelo juezEl 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.
juicio semántico · LLM o Jev
core/agent/verify.pydatos: passed · rubric_missespolicy_action · lectura del veredictoloop/_lifecycle.pyEl 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.
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyEl 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).
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySolo 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.
policy_action · lectura del veredicto
loop/_lifecycle.pydatos: completed · guardadocheckpoint · estado de sesiónmemory · observabilityCon un aprobado y un accept, se fusionan los intentos continuados, se guarda el resultado y la sesión se registra como completed.
finalize_and_return_async
loop/_lifecycle.pydatos: respuestaIPC · llamador de CLIDevuelve 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.
juicio semántico · LLM o Jev
core/agent/verify.pydatos: passed · rubric_missespolicy_action · lectura del veredictoloop/_lifecycle.pyEl 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.
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyEl 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).
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySolo 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.
presupuesto de continuación · 2 por defecto
loop/_lifecycle.pyejecutar · decidir: reparación · intento +1_arun_once · continuación de reparaciónloop/agent_loop.pyCon 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.
verification_error · cerrado ante fallo
core/agent/verify.pyfallo · sin veredicto: verification_errorpolicy_action · lectura del veredictoloop/_lifecycle.pyUn 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.
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: decisión de PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyEl 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).
policy_action · lectura del veredicto
loop/_lifecycle.pyejecutar · decidir: ESCALATE · pendingRevisor externoEl 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.
policy_action · lectura del veredicto
loop/_lifecycle.pyregistrar · observar: veredicto · filas de evidenciatimeline · filas de decisión del ledgermemory · observabilityLa 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.
arun · turno del modelo
loop/agent_loop.pyejecutar · decidir: guardas · límitesparada por fallo · límite · cancelaciónloop/_guards.py · models.pyGuardas 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.
parada por fallo · límite · cancelación
loop/_guards.py · models.pyfallo · sin veredicto: parada por fallo · cancelaciónfinalize_and_return_asyncloop/_lifecycle.pyLas paradas por cancelación, infraestructura y límite no tienen candidato que verificar, así que se guardan sin verificación pública.
control workflow · omitir la verificación pública
ipc_server/poller.pyejecutar · decidir: omitir la verificación públicafinalize_and_return_asyncloop/_lifecycle.pyCuando 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.
finalize_and_return_async
loop/_lifecycle.pydatos: solo guardar · sin verificacióncheckpoint · estado de sesiónmemory · observabilityUna parada sin verificación igualmente guarda su resultado y su checkpoint y emite los eventos de fin de sesión.
finalize_and_return_async
loop/_lifecycle.pydatos: respuestaIPC · llamador de CLIDevuelve 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.