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.
GEODE runtime vocabulary
- reasoning
- action
- observation
- plan
- memory
- tools
- hook
- reflexion
- rollouts
- data curation
- data governance
- evaluation
- scaffold search
- promotion
Reasoning: SYSTEM PROMPT · CONVERSATION · RUNTIME HINTS · MODEL · ADAPTER CALL · NEXT ACTION · TOOL SCHEMA · TEXT-ONLY TURN · CURRENT STEP · PROJECT MEMORY · RUNTIME RULES · EFFORT · thinking_budget · reasoning_effort · adaptive_thinking · effort_values · default_effort · binds_thinking · none · minimal · low · medium · high · xhigh · max · MODEL ROUTEAction: ACT · TOOL_USE · TOOLCALLPROCESSOR · DISPATCH · RESEARCH · BASH · COMPUTER USE · FILE · GIT · PROCESS · EFFECT RECEIPT · TOOLEXECUTORObservation: NEXT ACTION · RESEARCH · OBSERVE · TOOL_RESULT · RESULT · ERROR · CODE · DOCUMENT · SOURCE · EVIDENCE · EXCERPTPlan: CURRENT STEP · OBJECTIVE · PLANSTEP · EXPECTED OUTCOME · REMAINING STEPS · COMPLETED · ABANDONED · REVISION · UPDATE_PLAN · /PLAN · REPLAN · VERIFY FAILED · LOW CONFIDENCEMemory: SYSTEM PROMPT · CONVERSATION · PROJECT MEMORY · RUNTIME RULES · TOOL_RESULT · CONVERSATIONCONTEXT · MESSAGES · CONTEXT WINDOW · COMPACTION · CHECKPOINT · SESSION · RECOVERY · SQLITE · STATE.JSON · PreCompact · PostCompact · SessionStart · SessionEndTools: TOOL SCHEMA · TOOL_USE · TOOLCALLPROCESSOR · DISPATCH · BASH · COMPUTER USE · EFFECT RECEIPT · TOOL_RESULT · BOUNDTOOLPLAN · GENERATION · HASH · TOOLEXECUTOR · SCOPE · POLICY · HOOK · APPROVAL · HITL · PreToolUse · PostToolUse · MCP CLIENT · PermissionRequestHook: DISPATCH · HOOK · PreToolUse · PostToolUse · UserPromptSubmit · PermissionRequest · PreCompact · PostCompact · SessionStart · SessionEnd · SubagentStart · SubagentStop · PreVerify · tool_request · tool_execution · llm_request · llm_execution · REQUEST TRANSFORM · next_call · WRAPPER · REGISTRY · PostVerify · StopReflexion: NEXT ACTION · EVIDENCE · REPLAN · VERIFY FAILED · LOW CONFIDENCE · HOOK · PreVerify · HYPOTHESES · CONFIDENCE · NEXT_ACTION_HINT · RECORD_REFLECTION · CONTRADICTION · REPAIR · VERIFY · PostVerify · Stop · COMPLETION · CONTINUE · TIME · TOKEN BUDGET · CANCELLATIONRollouts: SESSION · ROLLOUT · EXAMPLE · SEED · REPETITION · ATTEMPT · TRAJECTORY · REWARD · OUTCOME · TRACE · RUN IDData Curation: TASK SYNTHESIS · SEED GENERATION · PROXIMITY · RANKING · META-REVIEW · ELO TOURNAMENT · PILOT · DEDUPLICATION · SURVIVOR SELECTION · FROZEN POOLData Governance: PROVENANCE · LINEAGE · SCHEMA VERSION · SOURCE DIGEST · PRIVACY REVIEW · ALLOWLIST · IMMUTABLE RELEASE · SPLIT ISOLATION · SEALED HOLDOUTEvaluation: TRAJECTORY · OUTCOME · TRACE · EVALUATION HARNESS · TASK · RUBRIC · GRADER · VERIFIER · VALIDITY · FITNESS · REPLICATION · TASK COVERAGEScaffold Search: RECOVERY · FITNESS · CANDIDATE · HYPOTHESIS · MUTATION POLICY · BASELINE · FROZEN EVALUATOR · POLICY INJECTION · SEARCH SPACE · PROMOTION GATEPromotion: SEALED HOLDOUT · PROMOTION GATE · CRUCIBLE · PAIRED TRIALS · BOOTSTRAP BOUND · FROZEN CONTRACT · TASK-PACK HASH · TRAIN · SEALED TEST · SAFETY VETO · KEEP · REJECT · INVALID
Recorded evaluation · MCPMark PostgreSQL · 2026-07-04
Antes de cambiar nada, encontró lo que ya existía.
La tarea: seguridad a nivel de fila para un servicio social con cinco tablas.
- InvestigaciónLeyó las cinco tablas, cuatro funciones auxiliares ya existentes, RLS desactivado en las cinco, y las políticas, privilegios y roles.
- AcciónUna sola transacción: 20 políticas y RLS activado, reutilizando 3 funciones auxiliares existentes y añadiendo 3 funciones.
- Verificación18 aprobadas, 0 fallidas. Las 13 respuestas de herramientas en 9 turnos volvieron todas sin error.
Salida del verificador, 18 líneas (textual)
- RLS enabled on users
- RLS enabled on channels
- RLS enabled on channel_moderators
- RLS enabled on posts
- RLS enabled on comments
- Users can update their own profile
- Users blocked from updating other users' profiles
- Channel owners can update their channels
- Non-owners blocked from updating channels
- Post authors can update their posts
- Channel moderators can update posts in their channels
- Unauthorized users blocked from updating posts
- Comment authors can update their comments
- Post authors can moderate comments on their posts
- Channel owners can add moderators
- Non-owners blocked from adding moderators
- Content visibility varies correctly based on user context
- Anonymous users can see 3 public user profiles (correct)
Una ejecución pasada en un entorno de evaluación configurado, no una base de datos en producción ni un incidente de seguridad real. El número de filas antes de las políticas no figura en el registro, así que no se muestra. Registro público de la ejecución (meta.json, commit 23e3428)
Revisar un resultado y repararlo (inspirado en Reflexion, dentro de la misma tarea) es una capacidad del runtime actual de GEODE. En este registro no aparece ninguna reparación de ese tipo: todas las respuestas de herramientas volvieron sin error. Documentación del runtime (hook-system.md)
El modelo elige la siguiente acción; el host mantiene la frontera de ejecución.
El runtime, desde que una solicitud entra en una sesión, pasando por la llamada al modelo y las comprobaciones de autoridad de cada llamada a herramienta propuesta, hasta la ejecución, los resultados y los registros. Al elegir un flujo se resalta solo su ruta, con pasos numerados.
El modelo elige la siguiente acción; el runtime comprueba los permisos de las herramientas y decide cuándo el trabajo está terminado.
Los experimentos externos Scaffold Search / SIL comenzaron el May 15, 2026
Se instala desde el paquete geode-agent de PyPI o desde el repositorio público y se ejecuta en una terminal local. También se puede usar como servidor MCP.
Solicitud → llamada al modelo
Una solicitud de terminal llega por IPC, se compone una sesión y el bucle llama al modelo con el prompt del sistema, la conversación y los esquemas de herramientas.
Usuario de terminalflujo de datos: prompt · cli.sockCLIPoller · socket IPC
core/serverLa CLI ligera envía la solicitud al socket IPC del daemon serve (~/.geode/cli.sock). El REPL ejecuta la misma composición de sesión dentro del proceso.
CLIPoller · socket IPC
core/serverautoridad · composición: create_session(IPC)SharedServices.create_sessionsupervised/services.pyCada conexión compone una sesión. El modo fija el nivel de HITL, el presupuesto de tiempo y las herramientas denegadas, y proyecta el BoundToolPlan sobre el proveedor elegido.
CLIPoller · socket IPC
core/serverautoridad · composición: carril por solicitudLaneQueue · session · globalsupervised/services.pyAntes de ejecutar una solicitud se toman tanto el carril de sesión como el carril global, lo que limita las ejecuciones concurrentes.
SharedServices.create_session
supervised/services.pyautoridad · composición: ToolExecutor · AgenticLoopAgenticLoop · seis fasescore/agent/loopConstruye el ejecutor y el bucle como un par que comparte los hooks, MCP, las skills y los bloqueos de recursos.
LaneQueue · session · global
supervised/services.pyflujo de datos: arun(prompt)AgenticLoop · seis fasescore/agent/loopEjecuta un turno de usuario en seis fases: preparar la entrada, preparar la llamada, llamar al proveedor, procesar herramientas, observar y compactar, terminar.
prompt del sistema · fuentes declaradas
core/agent/loopflujo de datos: prompt del sistemaadapter.acomplete · clases de errorcore/llm/adaptersSe construye en cada turno a partir de fuentes declaradas, como secciones elegidas de GEODE.md y reglas. La fachada de cinco niveles de ContextAssembler solo se usa cuando se la llama explícitamente; no es la entrada del bucle por defecto.
mensajes · ConversationContext
core/agent/loopflujo de datos: mensajesadapter.acomplete · clases de errorcore/llm/adaptersLa conversación y los resultados de herramientas anteriores viajan aparte del prompt del sistema.
BoundToolPlan · inmutable
core/tools/plan.pyautoridad · composición: esquemas de herramientasadapter.acomplete · clases de errorcore/llm/adaptersSolo las herramientas del BoundToolPlan vinculado a este paso son visibles para el modelo. Es una instantánea inmutable con una generación y un hash de contenido.
AgenticLoop · seis fases
core/agent/loopflujo de datos: StepSnapshot · solicitudadapter.acomplete · clases de errorcore/llm/adaptersEl StepSnapshot fija el modelo, las herramientas y los ID de correlación de esta llamada. El middleware de LLM no puede cambiar un adaptador vinculado.
adapter.acomplete · clases de error
core/llm/adaptersflujo de datos: HTTPSProveedores de LLMUn adaptador por proveedor hace la llamada. Los fallos se clasifican y se reintentan solo dentro de un límite fijado, o terminan el turno con un motivo de terminación.
adapter.acomplete · clases de error
core/llm/adaptersflujo de datos: respuesta · tool_useAgenticLoop · seis fasescore/agent/loopEl texto solo va a la terminación; tool_use va al procesamiento de herramientas.
Autoridad de la herramienta → efecto → resultado
Una propuesta tool_use solo se ejecuta tras superar todas las comprobaciones; denegaciones, resultados y errores vuelven todos del ejecutor y se convierten en la siguiente entrada del modelo.
AgenticLoop · seis fases
core/agent/loopflujo de datos: lote pendiente · guardado por rondaSQLite messages · state.jsonmemory/session_checkpoint.pyEn una sesión con checkpointing configurado (un checkpoint y un session id), el lote propuesto se guarda antes de que se ejecute ninguna herramienta, y el lote no se ejecuta si no se puede guardar. El lote completado se guarda de nuevo. Quienes llaman sin checkpoint no tienen esta garantía.
AgenticLoop · seis fases
core/agent/loopflujo de datos: bloques tool_useToolCallProcessortool_executor/processor.pyUna propuesta del modelo no es un permiso. Cada llamada recibe un ToolContext con la identidad del modelo y del adaptador del bucle.
ToolCallProcessor
tool_executor/processor.pyflujo de datos: aexecutealcance · política · esquematool_executor/executor.pyComprueba en orden el alcance de la sesión, las reescrituras del middleware de solicitudes, la política y el esquema. Se deniega una reescritura que rebaje el nivel de seguridad o la clase de datos personales.
BoundToolPlan · inmutable
core/tools/plan.pyautoridad · composición: permitido · nivel de seguridadalcance · política · esquematool_executor/executor.pyLos handlers ejecutables y los niveles de seguridad provienen del BoundToolPlan proyectado para la sesión.
PreToolUse · PostToolUse
tool_executor/executor.pyautoridad · composición: PreToolUse · PostToolUseHookRegistry · decisionescore/hooksLos hooks públicos deciden bloqueo, reescritura de argumentos o solicitud de permiso, y tras una reescritura se repiten las comprobaciones de alcance, política y esquema. Después de la ejecución, un hook puede añadir contexto o retener el resultado.
aprobación · HITL
tool_executor/executor.pyautoridad · composición: solicitud de aprobaciónUsuario de terminalEn una sesión IPC, la solicitud de aprobación se transmite a la CLI ligera. Los modos sin una persona aplican por defecto la política de denegación; la única excepción es el computer use en DAEMON, cuando un operador lo habilita por separado (bloqueado en caso contrario).
tool_executor/executor.pydenegación antes de la ejecución: denegado antes de la ejecuciónToolCallProcessor
tool_executor/processor.pyUn rechazo de alcance, política o esquema, un bloqueo de PreToolUse o una aprobación denegada vuelve como resultado de error sin dispatch. En ese caso, no comenzó ningún efecto de esta llamada.
effect receipt
tool_executor/executor.pyflujo de datos: admisión del efecto · confirmaciónEffectReceiptStorememory/effect_receipts.pyEfectos como cambios de archivos, mensajes salientes o acciones administrativas se admiten antes de ejecutarse. Un resultado incierto no se vuelve a ejecutar; pide una conciliación.
bloqueo de recursos · dispatch
tool_executor/executor.pyflujo de datos: llamada al handlerhandlers de herramientas · bash · computercore/toolsDespacha al handler vinculado tras bloquear sus claves de recurso. Una llamada abortada al vencer su plazo puede seguir ejecutándose fuera.
bloqueo de recursos · dispatch
tool_executor/executor.pyflujo de datos: llamada MCPMCPServerManagercore/mcp/manager.pySolo se llaman las herramientas MCP con una política de recursos declarada.
MCPServerManager
core/mcp/manager.pyflujo de datos: tools/callServidores MCPEl catálogo de servidores proviene de la configuración global y de la configuración de proyecto que superó la comprobación de confianza; esa comprobación solo se aplica a las entradas de proyecto. El gestor MCP aplica su política de extensiones y recursos.
handlers de herramientas · bash · computer
core/toolsflujo de datos: cambios de archivos · git · procesosArchivos · git · procesosLos cambios ejecutados quedan como estado externo. El checkpoint solo recupera la conversación y no los deshace.
tool_executor/executor.pyflujo de datos: resultado · error tras el dispatchToolCallProcessor
tool_executor/processor.pyTras el dispatch, los resultados normales y los errores (incluidos tiempos de espera agotados y resultados inciertos) vuelven a través de PostToolUse. Un error o un tiempo de espera agotado no significa que el trabajo externo se detuviera o se deshiciera.
ToolCallProcessor
tool_executor/processor.pyflujo de datos: tool_resultmensajes · ConversationContextcore/agent/loopResultados, denegaciones y errores se serializan por igual como tool_result y se convierten en mensajes de la siguiente entrada del modelo.
ToolCallProcessor
tool_executor/processor.pyregistro · observación: observación de llamada · resultadoSessionTimeline · append-onlyobservability/session_timeline.pyEscribe la llamada y su resultado (ok o error) en la timeline, incluidas las llamadas denegadas antes de la ejecución. El registro es observación; no prueba que un efecto externo comenzara o tuviera éxito.
Registros · recuperación · finalización
El checkpoint, la timeline y las filas de evidencia se escriben por separado. No hay una transacción compartida, y el checkpoint solo recupera la conversación.
AgenticLoop · seis fases
core/agent/loopflujo de datos: lote pendiente · guardado por rondaSQLite messages · state.jsonmemory/session_checkpoint.pyEn una sesión con checkpointing configurado (un checkpoint y un session id), el lote propuesto se guarda antes de que se ejecute ninguna herramienta, y el lote no se ejecuta si no se puede guardar. El lote completado se guarda de nuevo. Quienes llaman sin checkpoint no tienen esta garantía.
SQLite messages · state.json
memory/session_checkpoint.pyflujo de datos: restauración al reanudarAgenticLoop · seis fasescore/agent/loopUna sola ruta de restauración recupera los mensajes, el estado cognitivo y los contadores de guardas. El TaskGraph local del proceso no se recupera.
AgenticLoop · seis fases
core/agent/loopregistro · observación: registro del turnoSessionTimeline · append-onlyobservability/session_timeline.pyUn historial de ejecución de solo anexado, nunca reproducido como estado.
AgenticLoop · seis fases
core/agent/loopautoridad · composición: comprobación de finalizaciónverify_turn_asynccore/agent/verify.pyLa propuesta de parada del modelo solo se convierte en finalización a través de Verify.
verify_turn_async
core/agent/verify.pyautoridad · composición: PostVerify · StopHookRegistry · decisionescore/hooksLas decisiones de los hooks públicos indican si se continúa con una reparación, y las reparaciones solo ocurren dentro de un presupuesto fijado (dos por defecto).
AgenticLoop · seis fases
core/agent/loopregistro · observación: filas de evidencia · best-effortEvidenceLedger · JSONLagent/evidence_ledger.pyFilas de diagnóstico con datos ocultos. Los hashes sirven para la correlación; una fila no prueba que un efecto ocurriera, y no se escribe en una misma transacción con la timeline o el checkpoint.
AgenticLoop · seis fases
core/agent/loopregistro · observación: eventos cognitivos · de ciclo de vidaHookSystem · observacióncore/hooksLos hooks de observación reciben y registran eventos; no deciden la ejecución.
Otras rutas de entrada
Las mensajerías entran como sesiones DAEMON del daemon serve; el run_agent de un host MCP externo entra en un bucle headless de ejecución única construido aparte.
Canal de mensajeríaflujo de datos: mensaje de canalpollers de mensajería
core/serverLos pollers del daemon serve solo procesan mensajes de canales vinculados.
pollers de mensajería
core/serverautoridad · composición: create_session(DAEMON)SharedServices.create_sessionsupervised/services.pyUn modo sin una persona que apruebe: se aplican la política de denegación por defecto y un presupuesto de tiempo. Solo el computer use puede habilitarlo por separado un operador; si no, sigue bloqueado.
pollers de mensajería
core/serverflujo de datos: arun(message)AgenticLoop · seis fasescore/agent/loopUn hilo conserva un session id fijo y continúa una sola cadena de checkpoints.
Host MCP externoflujo de datos: run_agent(prompt)run_agent · ejecución única
core/mcp_server.pyUn host MCP externo llama a GEODE como herramienta.
run_agent · ejecución única
core/mcp_server.pyflujo de datos: bucle headless de ejecución únicaAgenticLoop · seis fasescore/agent/loopUn ejecutor y un bucle headless construidos aparte que evitan SharedServices. La lista de denegación por defecto se aplica tal cual, así que se quitan herramientas como run_bash, delegate_task y computer; la excepción de computer use de DAEMON no existe aquí.
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, mensajes y resultados de herramientas
- Discontinua · composición de sesión, autoridad o veredicto; no es una ruta de datos
- Raya larga y punto · registros y observación; nunca se reproducen como estado
- Guion corto · denegación antes de la ejecución, sin efecto
- Línea negra gruesa · el flujo seleccionado; los números dan el orden
- Recuadro · frontera dueña del código, con su ruta de origen en la cabecera
- Chip interior · componente de esa frontera
- Recuadro discontinuo · fuera del proceso del runtime
- Contorno naranja · donde decide un modelo
- Bucle de ejecución
- Autoridad · veredictos
- Almacenes de registros
- Entrada · conexión · ejecución
Solo se dibujan las conexiones cuyas llamadas se confirmaron. La fachada de cinco niveles de ContextAssembler, el TaskGraph y experimentos de investigación como Jev, SIL y Crucible no están en esta ruta del runtime. La cancelación asíncrona no detiene el trabajo síncrono ya iniciado ni deshace los efectos ocurridos.
Modelos compatibles · por proveedor
Las opciones del catálogo del código y los valores por defecto incluidos, no una lista en la que cada modelo haya superado una llamada real a la API. Las cadenas de fallback configuradas están vacías por defecto, y los ID exactos nunca se actualizan automáticamente a versiones más nuevas.
Anthropic
API
- PrincipalClaude Opus 5.5
claude-opus-5-5Por defecto - SecundarioClaude Sonnet 5
claude-sonnet-5Por defecto - EconómicoClaude Haiku 4.5
claude-haiku-4-5-20251001Por defecto
Mostrar los 12 ID del catálogo
API
claude-fable-5-1claude-opus-5-5por defectoclaude-opus-5claude-sonnet-5por defectoclaude-haiku-4-5-20251001por defectoclaude-fable-5claude-opus-4-8claude-opus-4-7claude-opus-4-6claude-opus-4-5claude-sonnet-4-6claude-sonnet-4-5-20250929
El código rechaza la vía OAuth por suscripción.
- PrincipalClaude Opus 5.5
OpenAI
API · suscripción a Codex
- Predeterminado de API y CodexGPT-6 Sol
gpt-6-solPor defecto
Mostrar los 11 ID del catálogo
API · suscripción a Codex
gpt-6-astragpt-6-solpor defectogpt-6-lunagpt-5.6-solgpt-5.6-terragpt-5.6-luna
Solo API
gpt-5.5gpt-5.3-codexgpt-5.4gpt-5.4-minigpt-5.4-nano
Dos vías de acceso a un mismo proveedor; el catálogo fija qué vías admite cada modelo.
- Predeterminado de API y CodexGPT-6 Sol
Z.ai / GLM
PAYG
- PredeterminadoGLM-5.3
glm-5.3Por defecto
Mostrar los 9 ID del catálogo
PAYG
glm-5.3por defectoglm-5.3-flashglm-5.3-flashxglm-5.2glm-5.1glm-5glm-4.7glm-4.7-flashxglm-4.7-flash
El código no admite la vía GLM Coding Plan.
- PredeterminadoGLM-5.3
OpenRouter
Servicio de enrutamiento
- SelectorFree (smoke)
openrouter/openrouter/freeEnrutador - SelectorAuto (variable)
openrouter/openrouter/autoEnrutador
Selecciones del enrutador, no un modelo fijo. También se pueden conservar los ID configurados explícitamente.
- SelectorFree (smoke)
TypeSafe / Jev
Solo decisión · aparte de la generación de texto
- Directo
jev-1.13.0Solo decisión - A través de OpenRouter
typesafe/jev-1.13Solo decisión
Un adaptador opcional que solo emite juicios; no es un modelo raíz de generación de texto. El motor de juicio por defecto es llm, y Jev hay que seleccionarlo. Las configuraciones propias del estudio Jev siguen los registros de la vista Jev.
- Directo
FuenteGEODE main 373d420Commit público del October 7, 2026 · comprobado el October 8, 2026
Experimentos
Modelos y vías tal como se registraron en su momento, no valores por defecto actuales ni una lista completa de compatibilidad.
Informe de benchmark de GEODE
July 31, 2026
- GEODEGPT-5.6 Sol
gpt-5.6-solSuscripción a OpenAI · high
- GEODEGPT-5.6 Sol
Terminal-Bench 2.1 · especificación pareada de Harbor 0.22.0
August 27, 2026
- GEODE · native CodexGPT-5.6 Sol
gpt-5.6-solsuscripción · max
Una especificación congelada; no todos los ensayos previstos dieron un resultado válido.
- GEODE · native CodexGPT-5.6 Sol
Ejecución archivada de SIL run-2606-broken-tool-use
- Andamiaje objetivoGPT-5.5
gpt-5.5openai-codex - Auditor · juezClaude Opus 4.8
claude-opus-4-8PAYG
Un registro de roles separados, no dos valores por defecto intercambiables.
- Andamiaje objetivoGPT-5.5