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.
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.
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.
arun · tura modelu
loop/agent_loop.pydane: propozycja zakończeniazakończenie z rezultatem · natural itd.loop/_guards.py · models.pyGdy 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.
zakończenie z rezultatem · natural itd.
loop/_guards.py · models.pydane: kandydat do ukończeniafinalize_and_return_asyncloop/_lifecycle.pyTylko natural, forced_text i actionable_partial są zakończeniami z rezultatem do przekazania i tylko one przechodzą do publicznej weryfikacji.
finalize_and_return_async
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: PreVerifyPreVerify · STRENGTHENcore/hooks/public.pyZe STRENGTHEN hook PreVerify może jedynie dodawać wymagania i kody braków. Może zaostrzyć werdykt, nigdy go zaliczyć.
finalize_and_return_async
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: verify_turn_asynckontrola strukturalna · empty_turncore/agent/verify.pyNajpierw 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.
ocena semantyczna · LLM lub Jev
core/agent/verify.pydane: prośba o ocenęModel sędziującyWybrany 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.
ocena semantyczna · LLM lub Jev
core/agent/verify.pydane: passed · rubric_missespolicy_action · odczyt werdyktuloop/_lifecycle.pyWerdykt 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.
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyHook 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).
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pyTylko 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.
policy_action · odczyt werdyktu
loop/_lifecycle.pydane: completed · zapisanecheckpoint · stan sesjimemory · observabilityPrzy zaliczeniu i accept kontynuowane próby są scalane, wynik zostaje zapisany, a sesja oznaczona jako completed.
finalize_and_return_async
loop/_lifecycle.pydane: odpowiedźWywołujący IPC · CLIZwraca 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.
ocena semantyczna · LLM lub Jev
core/agent/verify.pydane: passed · rubric_missespolicy_action · odczyt werdyktuloop/_lifecycle.pyWerdykt 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.
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyHook 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).
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Stop · CONTINUEStop · CONTINUEcore/hooks/public.pyTylko 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.
budżet kontynuacji · domyślnie 2
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: poprawka · próba +1_arun_once · kontynuacja z poprawkąloop/agent_loop.pyPrzy 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ę.
verification_error · zamyka się przy awarii
core/agent/verify.pyawaria · brak werdyktu: verification_errorpolicy_action · odczyt werdyktuloop/_lifecycle.pyBrak 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.
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: Decyzja PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.pyHook 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).
policy_action · odczyt werdyktu
loop/_lifecycle.pyuruchomienie · rozstrzygnięcie: ESCALATE · pendingZewnętrzny recenzentKandydat 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.
policy_action · odczyt werdyktu
loop/_lifecycle.pyzapis · obserwacja: werdykt · wiersze dowodówtimeline · wiersze decyzji w ledgermemory · observabilityTimeline 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.
arun · tura modelu
loop/agent_loop.pyuruchomienie · rozstrzygnięcie: strażnicy · limityzakończenie przez awarię · limit · anulowanieloop/_guards.py · models.pyStraż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.
zakończenie przez awarię · limit · anulowanie
loop/_guards.py · models.pyawaria · brak werdyktu: zakończenie przez awarię · anulowaniefinalize_and_return_asyncloop/_lifecycle.pyZakończenia przez anulowanie, infrastrukturę i limit nie mają kandydata do weryfikacji, więc są zapisywane bez publicznej weryfikacji.
control workflow · pominięcie publicznej weryfikacji
ipc_server/poller.pyuruchomienie · rozstrzygnięcie: pominięcie publicznej weryfikacjifinalize_and_return_asyncloop/_lifecycle.pyGdy 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ść.
finalize_and_return_async
loop/_lifecycle.pydane: tylko zapis · bez weryfikacjicheckpoint · stan sesjimemory · observabilityZakończenie bez weryfikacji i tak zapisuje swój wynik i checkpoint oraz emituje zdarzenia końca sesji.
finalize_and_return_async
loop/_lifecycle.pydane: odpowiedźWywołujący IPC · CLIZwraca 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.