Geodi, oficjalna pikselowa postać GEODE
Powrót do sali

GEODE

Autonomous Agent Harness

Od obserwacji do następnego działania.

Lokalny harness autonomicznego agenta, któremu można powierzyć badania, pracę na plikach i zadania zaplanowane.

2026.02.21 — present

Projektowanie, ocena, weryfikacja: autor · implementacja: Claude · przegląd: Codex

  • CLIOpublikowane · PyPI
  • Serwer MCPZaimplementowane

Propozycja zakończenia ze strony modelu staje się ukończeniem tylko po weryfikacji.

Przy zakończeniu z rezultatem do przekazania prośba modelu o zatrzymanie i tak przechodzi weryfikację ukończenia. Wynikiem jest ukończenie, kontynuacja w ramach budżetu albo oczekiwanie na przegląd; limity wykonania, anulowanie i błędy kończą się w osobnym stanie zatrzymania.

Mapa ukończenia · narysowana na podstawie ścieżek kodu w przypiętym commicie 9e2c041
Mapa ukończenia GEODEJak propozycja zakończenia ze strony modelu staje się ukończeniem. Tylko zakończenia z rezultatem do przekazania (natural, forced_text, actionable_partial) przechodzą przez hook PreVerify, kontrolę strukturalną i wybranego sędziego (domyślnie LLM judge, Jev po wybraniu) oraz hooki PostVerify i Stop. Zaliczenie zostaje zapisane jako completed; naprawialna porażka kontynuuje to samo żądanie w domyślnym budżecie dwóch prób. Werdykt nienadający się do użycia, próba zamiany porażki w zaliczenie lub wyczerpany budżet wstrzymują kandydata i pauzują sesję. Zakończenia przez anulowanie, limit i infrastrukturę oraz przebiegi control workflow są zapisywane bez weryfikacji.Wywołujący IPC · CLIodpowiedź · stan sesjiZewnętrzny recenzentpending · bez kontaktuModel sędziującyLLM judge · Jev Choiceipc_server/poller.pycontrol workflow · pominięcie publicznej weryfikacjiloop/agent_loop.pyarun · tura modelu_arun_once · kontynuacja z poprawkąloop/_guards.py · models.pyzakończenie z rezultatem · natural itd.zakończenie przez awarię · limit · anulowanieloop/_lifecycle.pyfinalize_and_return_asyncpolicy_action · odczyt werdyktubudżet kontynuacji · domyślnie 2core/hooks/public.pyPreVerify · STRENGTHENPostVerify · ACCEPT · REVISE · ESCALATEStop · CONTINUEmemory · observabilitycheckpoint · stan sesjitimeline · wiersze decyzji w ledgercore/agent/verify.pykontrola strukturalna · empty_turnocena semantyczna · LLM lub Jevverification_error · zamyka się przy awariiProces środowiska wykonawczego GEODEkoniec jednej tury AgenticLooppętla · kandydaci do zakończeniafinalizacja · werdykt1 propozycja zakończenia · arun · tura modelu → zakończenie z rezultatem · natural itd.12kandydat do ukończenia3 PreVerify · finalize_and_return_async → PreVerify · STRENGTHEN34verify_turn_async5prośba o ocenę6passed · rubric_misses7 Decyzja PostVerify · policy_action · odczyt werdyktu → PostVerify · ACCEPT · REVISE · ESCALATE78Stop · CONTINUE9completed · zapisane10odpowiedź1passed · rubric_misses2 Decyzja PostVerify · policy_action · odczyt werdyktu → PostVerify · ACCEPT · REVISE · ESCALATE23Stop · CONTINUE4poprawka · próba +11verification_error2 Decyzja PostVerify · policy_action · odczyt werdyktu → PostVerify · ACCEPT · REVISE · ESCALATE23ESCALATE · pending4werdykt · wiersze dowodów1 strażnicy · limity · arun · tura modelu → zakończenie przez awarię · limit · anulowanie12zakończenie przez awarię · anulowanie3pominięcie publicznej weryfikacji4tylko zapis · bez weryfikacji5odpowiedź

Weryfikacja → ukończenie

Tylko zakończenie z rezultatem do przekazania przechodzi przez PreVerify → ocena → PostVerify → Stop. Ani propozycja zakończenia ze strony modelu, ani instrukcja hooka nie są same w sobie ukończeniem.

  1. arun · tura modeluloop/agent_loop.pydane: propozycja zakończeniazakończenie z rezultatem · natural itd.loop/_guards.py · models.py

    Gdy model odpowiada tekstem bez wywołania narzędzia, tura staje się kandydatem do zakończenia natural (forced_text w ostatniej dozwolonej rundzie). Propozycja zakończenia ze strony modelu nie jest jeszcze ukończeniem.

  2. zakończenie z rezultatem · natural itd.loop/_guards.py · models.pydane: kandydat do ukończeniafinalize_and_return_asyncloop/_lifecycle.py

    Tylko natural, forced_text i actionable_partial są zakończeniami z rezultatem do przekazania i tylko one przechodzą do publicznej weryfikacji.

  3. finalize_and_return_asyncloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: PreVerifyPreVerify · STRENGTHENcore/hooks/public.py

    Ze STRENGTHEN hook PreVerify może jedynie dodawać wymagania i kody braków. Może zaostrzyć werdykt, nigdy go zaliczyć.

  4. finalize_and_return_asyncloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: verify_turn_asynckontrola strukturalna · empty_turncore/agent/verify.py

    Najpierw następuje kontrola strukturalna (pusta tura, model_action_required); nienaprawialna porażka strukturalna pomija ocenę semantyczną. Stare ustawienia, takie jak off czy rule_based, przechodzą w llm_judge i nie mogą wyłączyć werdyktu.

  5. ocena semantyczna · LLM lub Jevcore/agent/verify.pydane: prośba o ocenęModel sędziujący

    Wybrany sędzia (domyślnie LLM judge, Jev Choice po wybraniu) jest wywoływany raz, bez narzędzi, najwyżej na 120 sekund i nigdy ponad pozostały budżet czasu. Kandydat, który może zawierać osobiste obserwacje, nie jest wysyłany do pomocniczego sędziego.

  6. ocena semantyczna · LLM lub Jevcore/agent/verify.pydane: passed · rubric_missespolicy_action · odczyt werdyktuloop/_lifecycle.py

    Werdykt zawiera zaliczenie lub porażkę, kody braków, refleksję na następną próbę oraz informację, czy ponowienie ma sens. Zaliczenie semantyczne nigdy nie przykrywa nieudanej kontroli strukturalnej.

  7. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify decyduje: ACCEPT, REVISE lub ESCALATE. ACCEPT kandydata, który nie przeszedł weryfikacji, zamienia się w escalate. Bez decyzji obowiązuje domyślne zachowanie środowiska wykonawczego (zaliczenie → accept, możliwe ponowienie → revise, w pozostałych przypadkach escalate).

  8. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Tylko gdy nie ma eskalacji, instrukcja CONTINUE hooka Stop może poprosić o kontynuację z poprawką. Instrukcja hooka jest wejściem do następnej próby, a nie uprawnieniem.

  9. policy_action · odczyt werdyktuloop/_lifecycle.pydane: completed · zapisanecheckpoint · stan sesjimemory · observability

    Przy zaliczeniu i accept kontynuowane próby są scalane, wynik zostaje zapisany, a sesja oznaczona jako completed.

  10. finalize_and_return_asyncloop/_lifecycle.pydane: odpowiedźWywołujący IPC · CLI

    Zwraca końcową odpowiedź przy ukończeniu; pustą odpowiedź z EXTERNAL_VERIFICATION_REQUIRED przy oczekiwaniu na przegląd; przyczynę zatrzymania przy zakończeniu bez weryfikacji.

Poprawka w ramach budżetu

Naprawialna porażka kontynuuje to samo żądanie. Domyślny budżet to dwie próby; po jego wyczerpaniu kandydat czeka na przegląd.

  1. ocena semantyczna · LLM lub Jevcore/agent/verify.pydane: passed · rubric_missespolicy_action · odczyt werdyktuloop/_lifecycle.py

    Werdykt zawiera zaliczenie lub porażkę, kody braków, refleksję na następną próbę oraz informację, czy ponowienie ma sens. Zaliczenie semantyczne nigdy nie przykrywa nieudanej kontroli strukturalnej.

  2. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify decyduje: ACCEPT, REVISE lub ESCALATE. ACCEPT kandydata, który nie przeszedł weryfikacji, zamienia się w escalate. Bez decyzji obowiązuje domyślne zachowanie środowiska wykonawczego (zaliczenie → accept, możliwe ponowienie → revise, w pozostałych przypadkach escalate).

  3. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Tylko gdy nie ma eskalacji, instrukcja CONTINUE hooka Stop może poprosić o kontynuację z poprawką. Instrukcja hooka jest wejściem do następnej próby, a nie uprawnieniem.

  4. budżet kontynuacji · domyślnie 2loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: poprawka · próba +1_arun_once · kontynuacja z poprawkąloop/agent_loop.py

    Przy instrukcji poprawki, i tylko dopóki numer próby jest niższy od budżetu (domyślnie dwie), to samo żądanie jest kontynuowane. Po osiągnięciu budżetu staje się escalate_budget_exhausted i czeka na przegląd.

Oczekiwanie na przegląd

Werdykt nienadający się do użycia, próba zamiany porażki w zaliczenie lub wyczerpany budżet wstrzymują kandydata i pauzują sesję.

  1. verification_error · zamyka się przy awariicore/agent/verify.pyawaria · brak werdyktu: verification_errorpolicy_action · odczyt werdyktuloop/_lifecycle.py

    Brak sędziego, przekroczenie czasu lub nieprawidłowa odpowiedź dają verification_error: ani zaliczenie, ani sygnał naprawy. Werdykt nienadający się do użycia nigdy nie zastępuje sukcesu.

  2. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify decyduje: ACCEPT, REVISE lub ESCALATE. ACCEPT kandydata, który nie przeszedł weryfikacji, zamienia się w escalate. Bez decyzji obowiązuje domyślne zachowanie środowiska wykonawczego (zaliczenie → accept, możliwe ponowienie → revise, w pozostałych przypadkach escalate).

  3. policy_action · odczyt werdyktuloop/_lifecycle.pyuruchomienie · rozstrzygnięcie: ESCALATE · pendingZewnętrzny recenzent

    Kandydat zostaje zachowany jako pending_text i wstrzymany w zwykłych odpowiedziach, checkpoint jest zapisywany, a sesja pauzowana. Żaden zewnętrzny recenzent nie jest powiadamiany automatycznie.

  4. policy_action · odczyt werdyktuloop/_lifecycle.pyzapis · obserwacja: werdykt · wiersze dowodówtimeline · wiersze decyzji w ledgermemory · observability

    Timeline otrzymuje wiersze decyzji, dowodów i pending, a evidence ledger wiersz verification_policy. To zapisy typu best-effort, a nie dowód efektu zewnętrznego.

Zakończenia bez weryfikacji

Zakończenia przez anulowanie, limit i infrastrukturę oraz przebiegi control workflow są zapisywane bez publicznej weryfikacji.

  1. arun · tura modeluloop/agent_loop.pyuruchomienie · rozstrzygnięcie: strażnicy · limityzakończenie przez awarię · limit · anulowanieloop/_guards.py · models.py

    Strażnicy, tacy jak limity rund, czasu, kosztu i kontekstu, anulowanie i wykrywanie powtarzających się porażek, kończą turę jednym elementem zamkniętego zbioru TerminationReason. Limit wyłączony w konfiguracji nie zawsze jest egzekwowany.

  2. zakończenie przez awarię · limit · anulowanieloop/_guards.py · models.pyawaria · brak werdyktu: zakończenie przez awarię · anulowaniefinalize_and_return_asyncloop/_lifecycle.py

    Zakończenia przez anulowanie, infrastrukturę i limit nie mają kandydata do weryfikacji, więc są zapisywane bez publicznej weryfikacji.

  3. control workflow · pominięcie publicznej weryfikacjiipc_server/poller.pyuruchomienie · rozstrzygnięcie: pominięcie publicznej weryfikacjifinalize_and_return_asyncloop/_lifecycle.py

    Gdy wywołanie IPC prosi o pominięcie publicznej weryfikacji albo aktywny jest control workflow, publiczna weryfikacja jest wyłączona tylko na ten przebieg, a potem przywracana jest poprzednia wartość.

  4. finalize_and_return_asyncloop/_lifecycle.pydane: tylko zapis · bez weryfikacjicheckpoint · stan sesjimemory · observability

    Zakończenie bez weryfikacji i tak zapisuje swój wynik i checkpoint oraz emituje zdarzenia końca sesji.

  5. finalize_and_return_asyncloop/_lifecycle.pydane: odpowiedźWywołujący IPC · CLI

    Zwraca końcową odpowiedź przy ukończeniu; pustą odpowiedź z EXTERNAL_VERIFICATION_REQUIRED przy oczekiwaniu na przegląd; przyczynę zatrzymania przy zakończeniu bez weryfikacji.

Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.

  • Linia ciągła · kierunek przepływu żądań, kandydatów i wyników
  • Linia przerywana · uruchamianie, rozstrzyganie, autoryzacja, konfiguracja
  • Długa kreska z kropką · zapisy i obserwacja, oddzielnie od werdyktu
  • Krótka kreska · awaria lub werdykt nienadający się do użycia
  • Gruba czarna linia · wybrany przepływ; liczby podają kolejność
  • Ramka · granica kodu lub zapisu, ścieżka w nagłówku
  • Wewnętrzny element · komponent w tej granicy
  • Przerywana ramka · poza tą granicą
  • pętla · finalizacja
  • zakończenia · hooki · werdykt
  • zapis · rejestry
  • wejście IPC

Narysowano tylko ścieżki wywołań z przypiętego commitu 9e2c041. Zaliczenie przez sędziego to coś innego niż sukces u zewnętrznego weryfikatora benchmarku; ukończenie oznacza tu decyzję wewnątrz środowiska wykonawczego.

Silnik sędziujący
Domyślny jest LLM judge; Jev Choice ocenia tylko wtedy, gdy judgment_engine ustawiono na jev. W obu przypadkach sędzia nienadający się do użycia daje verification_error, nigdy sukces.
Co mogą hooki
PreVerify może tylko zaostrzyć werdykt, PostVerify nie może zaliczyć kandydata, który nie przeszedł, a Stop może poprosić o kontynuację tylko wtedy, gdy nie ma eskalacji.
Oczekiwanie na przegląd
Oczekiwanie na przegląd zapisuje, że potrzebna jest decyzja z zewnątrz. Nikogo nie powiadamia i nie oznacza, że wynik zatwierdzono.