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.
A proposta de parada do modelo só vira conclusão por meio da verificação.
Em uma parada entregável, um modelo que pede para parar ainda passa pela verificação de conclusão. O resultado é concluído, continuar dentro do orçamento ou aguardando revisão; limites de execução, cancelamento e erros terminam em um estado de parada separado.
Verificar → concluir
Só uma parada entregável passa por PreVerify → julgamento → PostVerify → Stop. Nem a proposta de parada do modelo nem uma instrução de hook é, por si só, uma conclusão.
arun · turno do modelo
loop/agent_loop.pydados: proposta de paradaparada entregável · natural etc.loop/_guards.py · models.pyQuando o modelo responde em texto sem chamada de ferramenta, o turno vira candidato a parada natural (forced_text na última rodada permitida). A proposta de parada de um modelo ainda não é conclusão.
parada entregável · natural etc.
loop/_guards.py · models.pydados: candidato a conclusãofinalize_and_return_asyncloop/_lifecycle.pySó natural, forced_text e actionable_partial são paradas entregáveis, e só elas seguem para a verificação pública.
finalize_and_return_async
loop/_lifecycle.pyexecutar · decidir: PreVerifyPreVerify · STRENGTHENcore/hooks/public.pyCom STRENGTHEN, o hook PreVerify só pode acrescentar requisitos e códigos de falta. Pode tornar o veredito mais rigoroso, nunca aprová-lo.
finalize_and_return_async
loop/_lifecycle.pyexecutar · decidir: verify_turn_asyncverificação estrutural · empty_turncore/agent/verify.pyPrimeiro vem uma verificação estrutural (turno vazio, model_action_required); uma falha estrutural irreparável pula o julgamento semântico. Configurações antigas como off ou rule_based resolvem para llm_judge e não podem desligar o veredito.
julgamento semântico · LLM ou Jev
core/agent/verify.pydados: pedido de julgamentoModelo juizO juiz selecionado (juiz LLM por padrão, Jev Choice quando escolhido) é chamado uma vez, sem ferramentas, por no máximo 120 segundos e nunca além do orçamento de tempo restante. Um candidato que possa conter observações pessoais não é enviado a um juiz auxiliar.
julgamento semântico · LLM ou Jev
core/agent/verify.pydados: passed · rubric_missespolicy_action · leitura do vereditoloop/_lifecycle.pyO veredito traz aprovação ou falha, códigos de falta, uma reflexão para a próxima tentativa e se uma nova tentativa é útil. Uma aprovação semântica nunca cobre uma verificação estrutural que falhou.
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: decisão do PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyO hook PostVerify decide ACCEPT, REVISE ou ESCALATE. Um ACCEPT de um candidato que falhou na verificação vira escalate. Sem decisão, vale o padrão do runtime (aprovação → accept, repetível → revise, caso contrário escalate).
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySó quando não há escalonamento a instrução CONTINUE do hook Stop pode pedir uma continuação de reparo. Uma instrução de hook é uma entrada para a próxima tentativa, não uma autoridade.
policy_action · leitura do veredito
loop/_lifecycle.pydados: completed · salvocheckpoint · estado da sessãomemory · observabilityCom aprovação e accept, as tentativas continuadas são mescladas, o resultado é salvo e a sessão é registrada como completed.
finalize_and_return_async
loop/_lifecycle.pydados: respostaIPC · chamador da CLIRetorna a resposta final quando concluído; uma resposta vazia com EXTERNAL_VERIFICATION_REQUIRED quando aguarda revisão; o motivo de parada em uma parada sem verificação.
Reparo dentro do orçamento
Uma falha reparável continua a mesma requisição. O orçamento padrão é de duas tentativas; quando se esgota, o candidato aguarda revisão.
julgamento semântico · LLM ou Jev
core/agent/verify.pydados: passed · rubric_missespolicy_action · leitura do vereditoloop/_lifecycle.pyO veredito traz aprovação ou falha, códigos de falta, uma reflexão para a próxima tentativa e se uma nova tentativa é útil. Uma aprovação semântica nunca cobre uma verificação estrutural que falhou.
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: decisão do PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyO hook PostVerify decide ACCEPT, REVISE ou ESCALATE. Um ACCEPT de um candidato que falhou na verificação vira escalate. Sem decisão, vale o padrão do runtime (aprovação → accept, repetível → revise, caso contrário escalate).
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySó quando não há escalonamento a instrução CONTINUE do hook Stop pode pedir uma continuação de reparo. Uma instrução de hook é uma entrada para a próxima tentativa, não uma autoridade.
orçamento de continuação · padrão 2
loop/_lifecycle.pyexecutar · decidir: reparo · tentativa +1_arun_once · continuação de reparoloop/agent_loop.pyCom uma instrução de reparo, e só enquanto o número da tentativa estiver abaixo do orçamento (dois por padrão), a mesma requisição continua. Ao atingir o orçamento, vira escalate_budget_exhausted e aguarda revisão.
Aguardando revisão
Um veredito inutilizável, uma tentativa de transformar falha em aprovação ou um orçamento esgotado retém o candidato e pausa a sessão.
verification_error · fechado em caso de falha
core/agent/verify.pyfalha · sem veredito: verification_errorpolicy_action · leitura do vereditoloop/_lifecycle.pyUm juiz ausente, um timeout ou uma resposta inválida vira verification_error: nem aprovação nem sinal de reparo. Um veredito inutilizável nunca substitui o sucesso.
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: decisão do PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyO hook PostVerify decide ACCEPT, REVISE ou ESCALATE. Um ACCEPT de um candidato que falhou na verificação vira escalate. Sem decisão, vale o padrão do runtime (aprovação → accept, repetível → revise, caso contrário escalate).
policy_action · leitura do veredito
loop/_lifecycle.pyexecutar · decidir: ESCALATE · pendingRevisor externoO candidato é mantido como pending_text e retido das respostas comuns, o checkpoint é salvo e a sessão é pausada. Nenhum revisor externo é contatado automaticamente.
policy_action · leitura do veredito
loop/_lifecycle.pyregistrar · observar: veredito · linhas de evidênciatimeline · linhas de decisão do ledgermemory · observabilityA timeline recebe linhas de decisão, de evidência e pending, e o evidence ledger uma linha verification_policy. São registros best-effort, não prova de um efeito externo.
Paradas sem verificação
Paradas por cancelamento, limite e infraestrutura e execuções de control workflow são salvas sem verificação pública.
arun · turno do modelo
loop/agent_loop.pyexecutar · decidir: guardas · limitesparada por falha · limite · cancelamentoloop/_guards.py · models.pyGuardas como limites de rodadas, tempo, custo e contexto, cancelamento e detecção de falhas repetidas encerram o turno com um membro do conjunto fechado TerminationReason. Um limite desativado na configuração nem sempre é aplicado.
parada por falha · limite · cancelamento
loop/_guards.py · models.pyfalha · sem veredito: parada por falha · cancelamentofinalize_and_return_asyncloop/_lifecycle.pyParadas por cancelamento, infraestrutura e limite não têm candidato a verificar, então são salvas sem verificação pública.
control workflow · pular a verificação pública
ipc_server/poller.pyexecutar · decidir: pular a verificação públicafinalize_and_return_asyncloop/_lifecycle.pyQuando uma chamada IPC pede para pular a verificação pública ou um control workflow está ativo, a verificação pública fica desligada só naquela execução e o valor anterior é restaurado depois.
finalize_and_return_async
loop/_lifecycle.pydados: só salvar · sem verificaçãocheckpoint · estado da sessãomemory · observabilityUma parada sem verificação ainda salva o resultado e o checkpoint e emite os eventos de fim de sessão.
finalize_and_return_async
loop/_lifecycle.pydados: respostaIPC · chamador da CLIRetorna a resposta final quando concluído; uma resposta vazia com EXTERNAL_VERIFICATION_REQUIRED quando aguarda revisão; o motivo de parada em uma parada sem verificação.
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, candidatos e resultados
- Tracejada · executar, decidir, autorizar, configurar
- Traço longo e ponto · registros e observação, separados do veredito
- Traço curto · falha ou veredito inutilizável
- Linha preta grossa · o fluxo selecionado; os números dão a ordem
- Caixa · fronteira de código ou de registro, com o caminho no cabeçalho
- Chip interno · componente dessa fronteira
- Caixa tracejada · fora dessa fronteira
- loop · finalização
- paradas · hooks · veredito
- salvamento · registros
- entrada IPC
Só são desenhados os caminhos de chamada do commit fixado 9e2c041. A aprovação de um juiz é distinta do sucesso de um verificador de benchmark externo; aqui, a conclusão é uma decisão dentro do runtime.
- Motor de julgamento
- O padrão é o juiz LLM; o Jev Choice só julga quando judgment_engine é definido como jev. Em ambos os casos, um juiz inutilizável gera verification_error, nunca sucesso.
- O que os hooks podem fazer
- O PreVerify só pode tornar o veredito mais rigoroso, o PostVerify não pode aprovar um candidato que falhou e o Stop só pode pedir continuação quando não há escalonamento.
- Aguardando revisão
- Aguardar revisão registra que é necessária uma decisão externa. Não notifica ninguém nem significa que o resultado foi aprovado.