GEODE
Autonomous Agent Harness
Dall’osservazione all’azione successiva.
Un harness locale per agenti autonomi a cui affidare ricerca, lavoro sui file e attività pianificate.
La proposta di arresto del modello diventa completamento solo attraverso la verifica.
Per un arresto consegnabile, un modello che chiede di fermarsi passa comunque per la verifica di completamento. L’esito è completato, prosecuzione entro il budget o in attesa di revisione; tetti di esecuzione, annullamento ed errori finiscono in uno stato di arresto separato.
Verifica → completamento
Solo un arresto consegnabile passa per PreVerify → giudizio → PostVerify → Stop. Né la proposta di arresto del modello né un’istruzione di hook sono di per sé un completamento.
arun · turno del modello
loop/agent_loop.pydati: proposta di arrestoarresto consegnabile · natural ecc.loop/_guards.py · models.pyQuando il modello risponde con testo senza chiamata a strumento, il turno diventa un candidato all’arresto natural (forced_text nell’ultimo round consentito). La proposta di arresto di un modello non è ancora un completamento.
arresto consegnabile · natural ecc.
loop/_guards.py · models.pydati: candidato al completamentofinalize_and_return_asyncloop/_lifecycle.pySolo natural, forced_text e actionable_partial sono arresti consegnabili, e solo questi passano alla verifica pubblica.
finalize_and_return_async
loop/_lifecycle.pyeseguire · decidere: PreVerifyPreVerify · STRENGTHENcore/hooks/public.pyCon STRENGTHEN, l’hook PreVerify può solo aggiungere requisiti e codici di omissione. Può rendere il verdetto più severo, mai farlo superare.
finalize_and_return_async
loop/_lifecycle.pyeseguire · decidere: verify_turn_asynccontrollo strutturale · empty_turncore/agent/verify.pyPrima viene un controllo strutturale (turno vuoto, model_action_required); un fallimento strutturale non riparabile salta il giudizio semantico. Vecchie impostazioni come off o rule_based si risolvono in llm_judge e non possono disattivare il verdetto.
giudizio semantico · LLM o Jev
core/agent/verify.pydati: richiesta di giudizioModello giudiceIl giudice selezionato (LLM judge per impostazione predefinita, Jev Choice se scelto) viene chiamato una volta, senza strumenti, per al massimo 120 secondi e mai oltre il budget di tempo residuo. Un candidato che può contenere osservazioni personali non viene inviato a un giudice ausiliario.
giudizio semantico · LLM o Jev
core/agent/verify.pydati: passed · rubric_missespolicy_action · lettura del verdettoloop/_lifecycle.pyIl verdetto riporta superato o non superato, codici di omissione, una reflection per il tentativo successivo e se un nuovo tentativo è utile. Un superamento semantico non copre mai un controllo strutturale fallito.
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: decisione PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyL’hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT di un candidato che non ha superato la verifica diventa escalate. In assenza di decisione si applica il predefinito del runtime (superato → accept, ritentabile → revise, altrimenti escalate).
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySolo quando non si escala, l’istruzione CONTINUE dell’hook Stop può chiedere una continuazione di riparazione. Un’istruzione di hook è un input per il tentativo successivo, non un’autorità.
policy_action · lettura del verdetto
loop/_lifecycle.pydati: completed · salvatocheckpoint · stato della sessionememory · observabilityCon un superamento e accept, i tentativi proseguiti vengono uniti, il risultato viene salvato e la sessione viene registrata come completed.
finalize_and_return_async
loop/_lifecycle.pydati: rispostaIPC · chiamante CLIRestituisce la risposta finale se completato, una risposta vuota con EXTERNAL_VERIFICATION_REQUIRED se in attesa di revisione e il motivo dell’arresto per un arresto senza verifica.
Riparazione entro il budget
Un fallimento riparabile prosegue la stessa richiesta. Il budget predefinito è di due tentativi; una volta esaurito, il candidato resta in attesa di revisione.
giudizio semantico · LLM o Jev
core/agent/verify.pydati: passed · rubric_missespolicy_action · lettura del verdettoloop/_lifecycle.pyIl verdetto riporta superato o non superato, codici di omissione, una reflection per il tentativo successivo e se un nuovo tentativo è utile. Un superamento semantico non copre mai un controllo strutturale fallito.
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: decisione PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyL’hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT di un candidato che non ha superato la verifica diventa escalate. In assenza di decisione si applica il predefinito del runtime (superato → accept, ritentabile → revise, altrimenti escalate).
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pySolo quando non si escala, l’istruzione CONTINUE dell’hook Stop può chiedere una continuazione di riparazione. Un’istruzione di hook è un input per il tentativo successivo, non un’autorità.
budget continuation · predefinito 2
loop/_lifecycle.pyeseguire · decidere: riparazione · tentativo +1_arun_once · continuazione di riparazioneloop/agent_loop.pySolo con un’istruzione di riparazione, e solo finché il numero del tentativo è inferiore al budget (due per impostazione predefinita), la stessa richiesta prosegue. Raggiunto il budget, diventa escalate_budget_exhausted e resta in attesa di revisione.
In attesa di revisione
Un verdetto inutilizzabile, un tentativo di trasformare un fallimento in un superamento o un budget esaurito trattiene il candidato e mette in pausa la sessione.
verification_error · fallisce in chiusura
core/agent/verify.pyfallimento · nessun verdetto: verification_errorpolicy_action · lettura del verdettoloop/_lifecycle.pyUn giudice mancante, un timeout o una risposta non valida diventano verification_error: né un superamento né un segnale di riparazione. Un verdetto inutilizzabile non sostituisce mai il successo.
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: decisione PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyL’hook PostVerify decide ACCEPT, REVISE o ESCALATE. Un ACCEPT di un candidato che non ha superato la verifica diventa escalate. In assenza di decisione si applica il predefinito del runtime (superato → accept, ritentabile → revise, altrimenti escalate).
policy_action · lettura del verdetto
loop/_lifecycle.pyeseguire · decidere: ESCALATE · pendingRevisore esternoIl candidato resta come pending_text ed è escluso dalle risposte ordinarie, il checkpoint viene salvato e la sessione messa in pausa. Nessun revisore esterno viene contattato automaticamente.
policy_action · lettura del verdetto
loop/_lifecycle.pyregistrare · osservare: verdetto · righe delle provetimeline · righe di decisione del ledgermemory · observabilityLa timeline riceve righe di decisione, di prova e pending, e l’evidence ledger una riga verification_policy. Sono registri best-effort, non la prova di un effetto esterno.
Arresti senza verifica
Gli arresti per annullamento, tetto e infrastruttura e le esecuzioni di control workflow vengono salvati senza verifica pubblica.
arun · turno del modello
loop/agent_loop.pyeseguire · decidere: guard · tettiarresto per fallimento · tetto · annullamentoloop/_guards.py · models.pyGuard come i tetti di round, tempo, costo e contesto, l’annullamento e il rilevamento di fallimenti ripetuti chiudono il turno con un elemento dell’insieme chiuso TerminationReason. Un tetto disattivato nella configurazione non è sempre applicato.
arresto per fallimento · tetto · annullamento
loop/_guards.py · models.pyfallimento · nessun verdetto: arresto per fallimento · annullamentofinalize_and_return_asyncloop/_lifecycle.pyGli arresti per annullamento, infrastruttura e tetto non hanno un candidato da verificare, perciò vengono salvati senza verifica pubblica.
control workflow · saltare la verifica pubblica
ipc_server/poller.pyeseguire · decidere: saltare la verifica pubblicafinalize_and_return_asyncloop/_lifecycle.pyQuando una chiamata IPC chiede di saltare la verifica pubblica o è attivo un control workflow, la verifica pubblica è disattivata solo per quell’esecuzione e poi viene ripristinato il valore precedente.
finalize_and_return_async
loop/_lifecycle.pydati: solo salvataggio · nessuna verificacheckpoint · stato della sessionememory · observabilityAnche un arresto senza verifica salva il risultato e il checkpoint ed emette gli eventi di fine sessione.
finalize_and_return_async
loop/_lifecycle.pydati: rispostaIPC · chiamante CLIRestituisce la risposta finale se completato, una risposta vuota con EXTERNAL_VERIFICATION_REQUIRED se in attesa di revisione e il motivo dell’arresto per un arresto senza verifica.
Tutte le connessioni con lo stesso peso. Scegliendo un flusso se ne evidenzia solo il percorso, con passi numerati.
- Continua · la direzione in cui scorrono richieste, candidati e risultati
- Tratteggiata · eseguire, decidere, autorizzare, configurare
- Tratto lungo e punto · registri e osservazione, separati dal verdetto
- Tratteggio corto · un fallimento o un verdetto inutilizzabile
- Linea nera spessa · il flusso scelto; i numeri danno l’ordine
- Riquadro · un confine di codice o di registro, con il percorso nell’intestazione
- Chip interno · un componente in quel confine
- Riquadro tratteggiato · fuori da quel confine
- ciclo · finalization
- arresti · hook · verdetto
- salvataggio · registri
- ingresso IPC
Sono disegnati solo i percorsi di chiamata del commit fissato 9e2c041. Il superamento presso il modello giudice è distinto dal successo di un verifier di benchmark esterno; qui il completamento è una decisione interna al runtime.
- Motore di giudizio
- Il predefinito è l’LLM judge; Jev Choice giudica solo quando judgment_engine è impostato su jev. In entrambi i casi un giudice inutilizzabile produce verification_error, mai un successo.
- Cosa possono fare gli hook
- PreVerify può solo rendere il verdetto più severo, PostVerify non può far superare un candidato fallito, e Stop può chiedere una continuazione solo quando non si escala.
- In attesa di revisione
- L’attesa di revisione registra che serve una decisione esterna. Non notifica nessuno e non significa che il risultato sia stato approvato.