GEODE
Autonomous Agent Harness
Da observação à próxima ação.
Um harness local de agentes autônomos ao qual se pode confiar pesquisa, trabalho com arquivos e tarefas agendadas.
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 mudar qualquer coisa, ele encontrou o que já existia.
A tarefa: segurança em nível de linha para um serviço social com cinco tabelas.
- PesquisaLeu as cinco tabelas, quatro funções auxiliares já existentes, RLS desligado nas cinco, e as políticas, privilégios e papéis.
- AçãoUma única transação: 20 políticas e RLS ligado, reaproveitando 3 funções auxiliares existentes e adicionando 3 funções.
- Verificação18 aprovados, 0 com falha. As 13 respostas de ferramentas em 9 turnos voltaram todas sem erro.
Saída do verificador, 18 linhas (literal)
- 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)
Uma execução passada em um sandbox de avaliação configurado, não um banco de dados em produção nem um incidente de segurança real. A contagem de linhas antes das políticas não está no registro, então nenhuma é mostrada. Registro público da execução (meta.json, commit 23e3428)
Revisar um resultado e repará-lo (inspirado no Reflexion, dentro da mesma tarefa) é uma capacidade do runtime atual do GEODE. Nenhum reparo desse tipo aparece neste registro: todas as respostas de ferramentas voltaram sem erro. Documentação do runtime (hook-system.md)
O modelo escolhe a próxima ação; o host mantém a fronteira de execução.
O runtime, desde a entrada de uma requisição em uma sessão, passando pela chamada ao modelo e pelas verificações de autoridade de cada chamada de ferramenta proposta, até a execução, os resultados e os registros. Ao escolher um fluxo, apenas o seu caminho é destacado, com etapas numeradas.
O modelo escolhe a próxima ação; o runtime verifica as permissões das ferramentas e decide quando o trabalho está concluído.
Os experimentos externos Scaffold Search / SIL começaram em May 15, 2026
É instalado pelo pacote geode-agent do PyPI ou pelo repositório público e executado em um terminal local. Também pode ser acessado como servidor MCP.
Requisição → chamada ao modelo
Uma requisição do terminal chega por IPC, uma sessão é composta e o loop chama o modelo com o prompt de sistema, a conversa e os esquemas de ferramentas.
Usuário do terminalfluxo de dados: prompt · cli.sockCLIPoller · socket IPC
core/serverA CLI leve envia a requisição ao socket IPC do daemon serve (~/.geode/cli.sock). O REPL executa a mesma composição de sessão dentro do processo.
CLIPoller · socket IPC
core/serverautoridade · composição: create_session(IPC)SharedServices.create_sessionsupervised/services.pyCada conexão compõe uma sessão. O modo define o nível de HITL, o orçamento de tempo e as ferramentas negadas, e projeta o BoundToolPlan no provedor escolhido.
CLIPoller · socket IPC
core/serverautoridade · composição: raia por requisiçãoLaneQueue · session · globalsupervised/services.pyAntes de executar uma requisição, a raia da sessão e a raia global são ocupadas, o que limita as execuções concorrentes.
SharedServices.create_session
supervised/services.pyautoridade · composição: ToolExecutor · AgenticLoopAgenticLoop · seis fasescore/agent/loopConstrói o executor e o loop como um par que compartilha os hooks, o MCP, as skills e os bloqueios de recurso.
LaneQueue · session · global
supervised/services.pyfluxo de dados: arun(prompt)AgenticLoop · seis fasescore/agent/loopExecuta um turno de usuário em seis fases: preparar a entrada, preparar a chamada, chamar o provedor, processar ferramentas, observar e compactar, encerrar.
prompt de sistema · fontes declaradas
core/agent/loopfluxo de dados: prompt de sistemaadapter.acomplete · classes de errocore/llm/adaptersConstruído a cada turno a partir de fontes declaradas, como seções escolhidas do GEODE.md e regras. A fachada de cinco níveis do ContextAssembler só é usada quando chamada explicitamente; não é a entrada do loop padrão.
mensagens · ConversationContext
core/agent/loopfluxo de dados: mensagensadapter.acomplete · classes de errocore/llm/adaptersA conversa e os resultados de ferramentas anteriores trafegam separados do prompt de sistema.
BoundToolPlan · imutável
core/tools/plan.pyautoridade · composição: esquemas de ferramentasadapter.acomplete · classes de errocore/llm/adaptersSó as ferramentas do BoundToolPlan vinculado a esta etapa ficam visíveis ao modelo. É um snapshot imutável com uma geração e um hash de conteúdo.
AgenticLoop · seis fases
core/agent/loopfluxo de dados: StepSnapshot · requisiçãoadapter.acomplete · classes de errocore/llm/adaptersO StepSnapshot fixa o modelo, as ferramentas e os IDs de correlação desta chamada. O middleware de LLM não pode trocar um adaptador vinculado.
adapter.acomplete · classes de erro
core/llm/adaptersfluxo de dados: HTTPSProvedores de LLMUm adaptador por provedor faz a chamada. As falhas são classificadas e repetidas só dentro de um limite definido, ou encerram o turno com um motivo de término.
adapter.acomplete · classes de erro
core/llm/adaptersfluxo de dados: resposta · tool_useAgenticLoop · seis fasescore/agent/loopTexto sozinho vai para o término; tool_use vai para o processamento de ferramentas.
Autoridade da ferramenta → efeito → resultado
Uma proposta tool_use só é executada depois que todas as verificações passam; negações, resultados e erros voltam todos do executor e viram a próxima entrada do modelo.
AgenticLoop · seis fases
core/agent/loopfluxo de dados: lote pendente · salvamento por rodadaSQLite messages · state.jsonmemory/session_checkpoint.pyEm uma sessão com checkpointing configurado (um checkpoint e um session id), o lote proposto é salvo antes de qualquer ferramenta rodar, e o lote não roda se não puder ser salvo. O lote concluído é salvo de novo. Chamadores sem checkpoint não têm essa garantia.
AgenticLoop · seis fases
core/agent/loopfluxo de dados: blocos tool_useToolCallProcessortool_executor/processor.pyUma proposta do modelo não é permissão. Cada chamada recebe um ToolContext com a identidade do modelo e do adaptador do loop.
ToolCallProcessor
tool_executor/processor.pyfluxo de dados: aexecuteescopo · política · esquematool_executor/executor.pyVerifica em sequência o escopo da sessão, as reescritas do middleware de requisição, a política e o esquema. Uma reescrita que rebaixe o nível de segurança ou a classe de dados pessoais é negada.
BoundToolPlan · imutável
core/tools/plan.pyautoridade · composição: permitido · nível de segurançaescopo · política · esquematool_executor/executor.pyOs handlers executáveis e os níveis de segurança vêm do BoundToolPlan projetado para a sessão.
PreToolUse · PostToolUse
tool_executor/executor.pyautoridade · composição: PreToolUse · PostToolUseHookRegistry · decisõescore/hooksOs hooks públicos decidem bloqueio, reescrita de argumentos ou pedido de permissão, e uma reescrita é seguida de novas verificações de escopo, política e esquema. Após a execução, um hook pode acrescentar contexto ou reter o resultado.
aprovação · HITL
tool_executor/executor.pyautoridade · composição: pedido de aprovaçãoUsuário do terminalEm uma sessão IPC, o pedido de aprovação é repassado à CLI leve. Modos sem uma pessoa aplicam por padrão a política de negação; a única exceção é o computer use em DAEMON, quando um operador o habilita separadamente (bloqueado caso contrário).
tool_executor/executor.pynegação antes da execução: negado antes da execuçãoToolCallProcessor
tool_executor/processor.pyUma rejeição de escopo, política ou esquema, um bloqueio por PreToolUse ou uma aprovação recusada volta como resultado de erro sem dispatch. Nesse caso, nenhum efeito desta chamada começou.
effect receipt
tool_executor/executor.pyfluxo de dados: admissão do efeito · confirmaçãoEffectReceiptStorememory/effect_receipts.pyEfeitos como mudanças em arquivos, mensagens de saída ou ações administrativas são admitidos antes de rodar. Um resultado incerto não é executado de novo; pede uma reconciliação.
bloqueio de recurso · dispatch
tool_executor/executor.pyfluxo de dados: chamada ao handlerhandlers de ferramentas · bash · computercore/toolsDespacha para o handler vinculado depois de bloquear suas chaves de recurso. Uma chamada abortada no prazo pode continuar rodando fora.
bloqueio de recurso · dispatch
tool_executor/executor.pyfluxo de dados: chamada MCPMCPServerManagercore/mcp/manager.pySó são chamadas as ferramentas MCP com política de recursos declarada.
MCPServerManager
core/mcp/manager.pyfluxo de dados: tools/callServidores MCPO catálogo de servidores vem das configurações globais e das configurações de projeto que passaram na verificação de confiança; essa verificação se aplica só às entradas de projeto. O gerenciador MCP aplica sua política de extensões e recursos.
handlers de ferramentas · bash · computer
core/toolsfluxo de dados: mudanças em arquivos · git · processosArquivos · git · processosAs mudanças executadas ficam como estado externo. O checkpoint recupera só a conversa e não as desfaz.
tool_executor/executor.pyfluxo de dados: resultado · erro pós-dispatchToolCallProcessor
tool_executor/processor.pyApós o dispatch, resultados normais e erros (incluindo timeouts e resultados incertos) voltam por PostToolUse. Um erro ou timeout não significa que o trabalho externo parou ou foi desfeito.
ToolCallProcessor
tool_executor/processor.pyfluxo de dados: tool_resultmensagens · ConversationContextcore/agent/loopResultados, negações e erros são igualmente serializados como tool_result e viram mensagens da próxima entrada do modelo.
ToolCallProcessor
tool_executor/processor.pyregistro · observação: observação de chamada · resultadoSessionTimeline · append-onlyobservability/session_timeline.pyGrava a chamada e seu resultado (ok ou erro) na timeline, incluindo chamadas negadas antes da execução. O registro é observação; não prova que um efeito externo começou ou teve sucesso.
Registros · recuperação · conclusão
O checkpoint, a timeline e as linhas de evidência são gravados separadamente. Não há transação compartilhada, e o checkpoint recupera só a conversa.
AgenticLoop · seis fases
core/agent/loopfluxo de dados: lote pendente · salvamento por rodadaSQLite messages · state.jsonmemory/session_checkpoint.pyEm uma sessão com checkpointing configurado (um checkpoint e um session id), o lote proposto é salvo antes de qualquer ferramenta rodar, e o lote não roda se não puder ser salvo. O lote concluído é salvo de novo. Chamadores sem checkpoint não têm essa garantia.
SQLite messages · state.json
memory/session_checkpoint.pyfluxo de dados: restauração na retomadaAgenticLoop · seis fasescore/agent/loopUm único caminho de restauração traz de volta mensagens, estado cognitivo e contadores de guarda. O TaskGraph local do processo não é recuperado.
AgenticLoop · seis fases
core/agent/loopregistro · observação: registro do turnoSessionTimeline · append-onlyobservability/session_timeline.pyUm histórico de execução append-only, nunca reproduzido como estado.
AgenticLoop · seis fases
core/agent/loopautoridade · composição: verificação de conclusãoverify_turn_asynccore/agent/verify.pyA proposta de parada do modelo só vira conclusão por meio do Verify.
verify_turn_async
core/agent/verify.pyautoridade · composição: PostVerify · StopHookRegistry · decisõescore/hooksAs decisões dos hooks públicos dizem se se continua com um reparo, e os reparos só acontecem dentro de um orçamento definido (dois por padrão).
AgenticLoop · seis fases
core/agent/loopregistro · observação: linhas de evidência · best-effortEvidenceLedger · JSONLagent/evidence_ledger.pyLinhas de diagnóstico com dados ocultados. Os hashes servem à correlação; uma linha não prova que um efeito aconteceu, e não é gravada na mesma transação que a timeline ou o checkpoint.
AgenticLoop · seis fases
core/agent/loopregistro · observação: eventos cognitivos · de ciclo de vidaHookSystem · observaçãocore/hooksOs hooks de observação recebem e registram eventos; não decidem a execução.
Outros caminhos de entrada
Os mensageiros entram como sessões DAEMON do daemon serve; o run_agent de um host MCP externo entra em um loop headless de execução única construído à parte.
Canal de mensageirofluxo de dados: mensagem de canalpollers de mensageiros
core/serverOs pollers do daemon serve só processam mensagens de canais vinculados.
pollers de mensageiros
core/serverautoridade · composição: create_session(DAEMON)SharedServices.create_sessionsupervised/services.pyUm modo sem pessoa para aprovar: aplicam-se a política de negação padrão e um orçamento de tempo. Só o computer use pode ser habilitado separadamente por um operador; sem isso, fica bloqueado.
pollers de mensageiros
core/serverfluxo de dados: arun(message)AgenticLoop · seis fasescore/agent/loopUma thread mantém um session id fixo e continua uma única cadeia de checkpoints.
Host MCP externofluxo de dados: run_agent(prompt)run_agent · execução única
core/mcp_server.pyUm host MCP externo chama o GEODE como ferramenta.
run_agent · execução única
core/mcp_server.pyfluxo de dados: loop headless de execução únicaAgenticLoop · seis fasescore/agent/loopUm executor e um loop headless construídos à parte, que contornam o SharedServices. A lista de negação padrão se aplica como está, então ferramentas como run_bash, delegate_task e computer são removidas; a exceção de computer use do DAEMON não existe aqui.
Todas as conexões com a mesma espessura. Escolha um fluxo para destacar só o caminho dele, com etapas numeradas.
- Contínua · direção em que fluem requisições, mensagens e resultados de ferramentas
- Tracejada · composição de sessão, autoridade ou veredito; não é caminho de dados
- Traço longo e ponto · registros e observação; nunca reproduzidos como estado
- Traço curto · negação antes da execução, sem efeito
- Linha preta grossa · o fluxo selecionado; os números dão a ordem
- Caixa · fronteira dona do código, com o caminho de origem no cabeçalho
- Chip interno · componente dessa fronteira
- Caixa tracejada · fora do processo do runtime
- Contorno laranja · onde um modelo decide
- Loop de execução
- Autoridade · vereditos
- Armazenamentos de registros
- Entrada · conexão · execução
Só são desenhadas as conexões cujas chamadas foram confirmadas. A fachada de cinco níveis do ContextAssembler, o TaskGraph e experimentos de pesquisa como Jev, SIL e Crucible não estão neste caminho do runtime. O cancelamento assíncrono não interrompe trabalho síncrono já iniciado nem desfaz efeitos que ocorreram.
Modelos suportados · por provedor
As opções do catálogo do código e os padrões distribuídos, não uma lista em que cada modelo passou por uma chamada real de API. As cadeias de fallback configuradas ficam vazias por padrão, e IDs exatos nunca são atualizados automaticamente para versões mais novas.
Anthropic
API
- PrincipalClaude Opus 5.5
claude-opus-5-5Padrão - SecundárioClaude Sonnet 5
claude-sonnet-5Padrão - EconômicoClaude Haiku 4.5
claude-haiku-4-5-20251001Padrão
Mostrar todos os 12 IDs do catálogo
API
claude-fable-5-1claude-opus-5-5padrãoclaude-opus-5claude-sonnet-5padrãoclaude-haiku-4-5-20251001padrãoclaude-fable-5claude-opus-4-8claude-opus-4-7claude-opus-4-6claude-opus-4-5claude-sonnet-4-6claude-sonnet-4-5-20250929
O código rejeita a via OAuth por assinatura.
- PrincipalClaude Opus 5.5
OpenAI
API · assinatura do Codex
- Padrão da API e do CodexGPT-6 Sol
gpt-6-solPadrão
Mostrar todos os 11 IDs do catálogo
API · assinatura do Codex
gpt-6-astragpt-6-solpadrãogpt-6-lunagpt-5.6-solgpt-5.6-terragpt-5.6-luna
Somente API
gpt-5.5gpt-5.3-codexgpt-5.4gpt-5.4-minigpt-5.4-nano
Duas vias de acesso a um mesmo provedor; o catálogo define quais vias cada modelo permite.
- Padrão da API e do CodexGPT-6 Sol
Z.ai / GLM
PAYG
- PadrãoGLM-5.3
glm-5.3Padrão
Mostrar todos os 9 IDs do catálogo
PAYG
glm-5.3padrãoglm-5.3-flashglm-5.3-flashxglm-5.2glm-5.1glm-5glm-4.7glm-4.7-flashxglm-4.7-flash
O código não admite a via GLM Coding Plan.
- PadrãoGLM-5.3
OpenRouter
Serviço de roteamento
- SeletorFree (smoke)
openrouter/openrouter/freeRoteador - SeletorAuto (variable)
openrouter/openrouter/autoRoteador
Seleções do roteador, não um modelo fixo. IDs configurados explicitamente também podem ser mantidos.
- SeletorFree (smoke)
TypeSafe / Jev
Só decisão · separado da geração de texto
- Direto
jev-1.13.0Só decisão - Via OpenRouter
typesafe/jev-1.13Só decisão
Um adaptador opcional que só faz julgamentos; não é um modelo raiz de geração de texto. O motor de julgamento padrão é llm, e o Jev precisa ser selecionado. As configurações próprias do estudo Jev seguem os registros da visão Jev.
- Direto
FonteGEODE main 373d420Commit público de October 7, 2026 · verificado em October 8, 2026
Experimentos
Modelos e vias como registrados na época, não padrões atuais nem uma lista completa de compatibilidade.
Relatório de benchmark do GEODE
July 31, 2026
- GEODEGPT-5.6 Sol
gpt-5.6-solAssinatura OpenAI · high
- GEODEGPT-5.6 Sol
Terminal-Bench 2.1 · especificação pareada do Harbor 0.22.0
August 27, 2026
- GEODE · native CodexGPT-5.6 Sol
gpt-5.6-solassinatura · max
Uma especificação congelada; nem todo ensaio planejado virou resultado válido.
- GEODE · native CodexGPT-5.6 Sol
Execução arquivada do SIL run-2606-broken-tool-use
- Scaffold alvoGPT-5.5
gpt-5.5openai-codex - Auditor · juizClaude Opus 4.8
claude-opus-4-8PAYG
Um registro de papéis separados, não dois padrões intercambiáveis.
- Scaffold alvoGPT-5.5