Geodi, personajul pixelat oficial al GEODE
Înapoi în sală

GEODE

Autonomous Agent Harness

De la observație la următoarea acțiune.

Un cadru local pentru agenți autonomi, căruia i se pot încredința cercetare, lucru cu fișiere și sarcini programate.

2026.02.21 — present

Proiectare, judecată, verificare: Author · implementare: Claude · revizuire: Codex

  • CLIPublicat · PyPI
  • Server MCPImplementat

Propunerea modelului de a se opri devine finalizare doar prin verificare.

Pentru o oprire livrabilă, un model care cere să se oprească trece totuși prin verificarea finalizării. Rezultatul este: încheiat, continuare în limita bugetului sau așteptarea revizuirii; limitele de execuție, anularea și erorile se încheie într-o stare de oprire separată.

Harta finalizării · desenată după căile de cod din commitul fixat 9e2c041
Harta finalizării în GEODECum devine finalizare propunerea de oprire a unui model. Doar opririle livrabile (natural, forced_text, actionable_partial) trec prin hookul PreVerify, o verificare structurală și judecătorul selectat (implicit judecătorul LLM, Jev când este ales), apoi prin hookurile PostVerify și Stop. Un rezultat reușit este salvat ca completed; un eșec reparabil continuă aceeași cerere într-un buget implicit de două încercări. Un verdict inutilizabil, o încercare de a transforma un eșec în reușită sau un buget epuizat reține candidatul și pune sesiunea pe pauză. Opririle prin anulare, limită și infrastructură, precum și rulările de control workflow sunt salvate fără verificare.IPC · apelant CLIrăspuns · starea sesiuniiRevizor externîn așteptare · necontactatModel judecătorLLM judge · Jev Choiceipc_server/poller.pycontrol workflow · fără verificare publicăloop/agent_loop.pyarun · tura modelului_arun_once · continuarea reparațieiloop/_guards.py · models.pyoprire livrabilă · natural etc.oprire prin eșec · limită · anulareloop/_lifecycle.pyfinalize_and_return_asyncpolicy_action · interpretarea verdictuluibuget de continuare · implicit 2core/hooks/public.pyPreVerify · STRENGTHENPostVerify · ACCEPT · REVISE · ESCALATEStop · CONTINUEmemory · observabilitypunct de control · starea sesiuniicronologie · rânduri de decizie în registrucore/agent/verify.pyverificare structurală · empty_turnjudecată semantică · LLM sau Jevverification_error · eșuează închisProcesul de execuție GEODEsfârșitul unei ture AgenticLoopbuclă · candidați la oprirefinalizare · verdict1 propunere de oprire · arun · tura modelului → oprire livrabilă · natural etc.12candidat la finalizare3 PreVerify · finalize_and_return_async → PreVerify · STRENGTHEN34verify_turn_async5cerere de judecată6passed · rubric_misses7 Decizia PostVerify · policy_action · interpretarea verdictului → PostVerify · ACCEPT · REVISE · ESCALATE78Stop · CONTINUE9completed · salvat10răspuns1passed · rubric_misses2 Decizia PostVerify · policy_action · interpretarea verdictului → PostVerify · ACCEPT · REVISE · ESCALATE23Stop · CONTINUE4reparare · încercare +11verification_error2 Decizia PostVerify · policy_action · interpretarea verdictului → PostVerify · ACCEPT · REVISE · ESCALATE23ESCALATE · pending4verdict · rânduri de dovezi1 protecții · limite · arun · tura modelului → oprire prin eșec · limită · anulare12oprire prin eșec · anulare3fără verificare publică4doar salvare · fără verificare5răspuns

Verificare → finalizare

Doar o oprire livrabilă trece prin PreVerify → judecată → PostVerify → Stop. Nici propunerea de oprire a modelului, nici o instrucțiune de hook nu sunt în sine o finalizare.

  1. arun · tura modeluluiloop/agent_loop.pydate: propunere de oprireoprire livrabilă · natural etc.loop/_guards.py · models.py

    Când modelul răspunde cu text fără apel de instrument, tura devine candidat la oprirea natural (forced_text în ultima rundă permisă). Propunerea modelului de a se opri nu este încă o finalizare.

  2. oprire livrabilă · natural etc.loop/_guards.py · models.pydate: candidat la finalizarefinalize_and_return_asyncloop/_lifecycle.py

    Doar natural, forced_text și actionable_partial sunt opriri livrabile și doar acestea trec la verificarea publică.

  3. finalize_and_return_asyncloop/_lifecycle.pyrulare · decizie: PreVerifyPreVerify · STRENGTHENcore/hooks/public.py

    Cu STRENGTHEN, hookul PreVerify poate doar să adauge cerințe și coduri de lipsă. Poate face verdictul mai strict, dar nu îl poate face să treacă.

  4. finalize_and_return_asyncloop/_lifecycle.pyrulare · decizie: verify_turn_asyncverificare structurală · empty_turncore/agent/verify.py

    Mai întâi vine o verificare structurală (tură goală, model_action_required); un eșec structural ireparabil sare peste judecata semantică. Setări vechi precum off sau rule_based se rezolvă la llm_judge și nu pot dezactiva verdictul.

  5. judecată semantică · LLM sau Jevcore/agent/verify.pydate: cerere de judecatăModel judecător

    Judecătorul selectat (implicit judecătorul LLM, Jev Choice când este ales) este apelat o singură dată, fără instrumente, cel mult 120 de secunde și niciodată peste bugetul de timp rămas. Un candidat care ar putea conține observații personale nu este trimis unui judecător auxiliar.

  6. judecată semantică · LLM sau Jevcore/agent/verify.pydate: passed · rubric_missespolicy_action · interpretarea verdictuluiloop/_lifecycle.py

    Verdictul conține reușita sau eșecul, codurile de lipsă, o reflecție pentru următoarea încercare și dacă o reîncercare este utilă. O reușită semantică nu acoperă niciodată o verificare structurală eșuată.

  7. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: Decizia PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hookul PostVerify decide ACCEPT, REVISE sau ESCALATE. Un ACCEPT pentru un candidat care a eșuat la verificare devine escalate. Fără decizie se aplică valoarea implicită a mediului de execuție (trecere → accept, reîncercabil → revise, altfel escalate).

  8. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Instrucțiunea CONTINUE a hookului Stop poate cere o continuare de reparare doar când nu există escaladare. O instrucțiune de hook este o intrare pentru următoarea încercare, nu o permisiune.

  9. policy_action · interpretarea verdictuluiloop/_lifecycle.pydate: completed · salvatpunct de control · starea sesiuniimemory · observability

    La trecere și accept, încercările continuate sunt îmbinate, rezultatul este salvat, iar sesiunea este înregistrată ca completed.

  10. finalize_and_return_asyncloop/_lifecycle.pydate: răspunsIPC · apelant CLI

    Returnează răspunsul final la finalizare; un răspuns gol cu EXTERNAL_VERIFICATION_REQUIRED când așteaptă revizuirea; motivul opririi pentru o oprire fără verificare.

Reparare în limita bugetului

Un eșec reparabil continuă aceeași cerere. Bugetul implicit este de două încercări; când se epuizează, candidatul așteaptă revizuirea.

  1. judecată semantică · LLM sau Jevcore/agent/verify.pydate: passed · rubric_missespolicy_action · interpretarea verdictuluiloop/_lifecycle.py

    Verdictul conține reușita sau eșecul, codurile de lipsă, o reflecție pentru următoarea încercare și dacă o reîncercare este utilă. O reușită semantică nu acoperă niciodată o verificare structurală eșuată.

  2. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: Decizia PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hookul PostVerify decide ACCEPT, REVISE sau ESCALATE. Un ACCEPT pentru un candidat care a eșuat la verificare devine escalate. Fără decizie se aplică valoarea implicită a mediului de execuție (trecere → accept, reîncercabil → revise, altfel escalate).

  3. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Instrucțiunea CONTINUE a hookului Stop poate cere o continuare de reparare doar când nu există escaladare. O instrucțiune de hook este o intrare pentru următoarea încercare, nu o permisiune.

  4. buget de continuare · implicit 2loop/_lifecycle.pyrulare · decizie: reparare · încercare +1_arun_once · continuarea reparațieiloop/agent_loop.py

    Cu o instrucțiune de reparare și doar cât timp numărul încercării este sub buget (implicit două), aceeași cerere continuă. La atingerea bugetului devine escalate_budget_exhausted și așteaptă revizuirea.

În așteptarea revizuirii

Un verdict inutilizabil, o încercare de a transforma un eșec în reușită sau un buget epuizat reține candidatul și pune sesiunea pe pauză.

  1. verification_error · eșuează închiscore/agent/verify.pyeșec · fără verdict: verification_errorpolicy_action · interpretarea verdictuluiloop/_lifecycle.py

    Un judecător lipsă, o expirare sau un răspuns invalid devine verification_error: nici trecere, nici semnal de reparare. Un verdict inutilizabil nu ține niciodată locul succesului.

  2. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: Decizia PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hookul PostVerify decide ACCEPT, REVISE sau ESCALATE. Un ACCEPT pentru un candidat care a eșuat la verificare devine escalate. Fără decizie se aplică valoarea implicită a mediului de execuție (trecere → accept, reîncercabil → revise, altfel escalate).

  3. policy_action · interpretarea verdictuluiloop/_lifecycle.pyrulare · decizie: ESCALATE · pendingRevizor extern

    Candidatul este păstrat ca pending_text și reținut din răspunsurile obișnuite, punctul de control este salvat, iar sesiunea este pusă pe pauză. Niciun revizor extern nu este contactat automat.

  4. policy_action · interpretarea verdictuluiloop/_lifecycle.pyînregistrare · observare: verdict · rânduri de dovezicronologie · rânduri de decizie în registrumemory · observability

    Cronologia primește rânduri de decizie, de dovezi și în așteptare, iar registrul de dovezi un rând verification_policy. Sunt înregistrări fără garanție, nu dovezi ale unui efect extern.

Opriri fără verificare

Opririle prin anulare, limită și infrastructură, precum și rulările de control workflow sunt salvate fără verificare publică.

  1. arun · tura modeluluiloop/agent_loop.pyrulare · decizie: protecții · limiteoprire prin eșec · limită · anulareloop/_guards.py · models.py

    Protecții precum limitele de runde, timp, cost și context, anularea și detectarea eșecurilor repetate încheie tura cu un element din mulțimea închisă TerminationReason. O limită dezactivată în configurație nu este aplicată întotdeauna.

  2. oprire prin eșec · limită · anulareloop/_guards.py · models.pyeșec · fără verdict: oprire prin eșec · anularefinalize_and_return_asyncloop/_lifecycle.py

    Opririle prin anulare, infrastructură și limită nu au un candidat de verificat, așa că sunt salvate fără verificare publică.

  3. control workflow · fără verificare publicăipc_server/poller.pyrulare · decizie: fără verificare publicăfinalize_and_return_asyncloop/_lifecycle.py

    Când un apel IPC cere omiterea verificării publice sau un control workflow este activ, verificarea publică este oprită doar pentru acea rulare, iar valoarea anterioară este restabilită după aceea.

  4. finalize_and_return_asyncloop/_lifecycle.pydate: doar salvare · fără verificarepunct de control · starea sesiuniimemory · observability

    O oprire fără verificare își salvează totuși rezultatul și punctul de control și emite evenimentele de sfârșit de sesiune.

  5. finalize_and_return_asyncloop/_lifecycle.pydate: răspunsIPC · apelant CLI

    Returnează răspunsul final la finalizare; un răspuns gol cu EXTERNAL_VERIFICATION_REQUIRED când așteaptă revizuirea; motivul opririi pentru o oprire fără verificare.

Fiecare conexiune cu aceeași grosime. Alegeți un flux pentru a evidenția doar traseul lui, cu pași numerotați.

  • Continuă · direcția în care circulă cererile, candidații și rezultatele
  • Întreruptă · rulare, decizie, autorizare, configurare
  • Linie-punct lungă · înregistrări și observație, separate de verdict
  • Liniuță scurtă · un eșec sau un verdict inutilizabil
  • Linie neagră groasă · fluxul selectat; numerele dau ordinea
  • Casetă · o graniță de cod sau de înregistrări, cu calea în antet
  • Etichetă interioară · o componentă din acea graniță
  • Casetă întreruptă · în afara acelei granițe
  • buclă · finalizare
  • opriri · hookuri · verdict
  • salvare · înregistrări
  • Intrare IPC

Sunt desenate doar căile de apel din commitul fixat 9e2c041. Trecerea dată de un judecător este separată de succesul unui verificator de benchmark extern; finalizarea este aici o decizie din interiorul mediului de execuție.

Motorul de judecată
Implicit este judecătorul LLM; Jev Choice judecă doar când judgment_engine este setat la jev. În ambele cazuri, un judecător inutilizabil dă verification_error, niciodată succes.
Ce pot face hookurile
PreVerify poate doar să facă verdictul mai strict, PostVerify nu poate trece un candidat eșuat, iar Stop poate cere o continuare doar când nu există escaladare.
În așteptarea revizuirii
Așteptarea revizuirii înregistrează că este nevoie de o decizie externă. Nu anunță pe nimeni și nu înseamnă că rezultatul a fost aprobat.