Skip to main content

Autonomous Loop (tryb /goal)

DLA AGENTÓW AIChatGPTClaude

Wzorzec architektoniczny zamkniętej pętli wykonywania zadań, w którym agent autonomicznie naprzemiennie generuje kod, uruchamia polecenia i weryfikuje wyniki do momentu pełnego osiągnięcia ustalonego celu.

1. Przegląd koncepcji i problem systemowy

Tradycyjna interakcja z modelami językowymi w trybie „pytanie-odpowiedź” generuje efekt psychologiczny przypominający grę w ping-ponga. Inżynier jest zmuszony co 40 sekund czytać wygenerowany blok kodu, kopiować go do pliku, uruchamiać testy, kopiować błędy z powrotem i pisać: „Oto błąd, spróbuj ponownie”. W przypadku złożonych zadań inżynierskich (np. przepisywanie schematu bazy danych, usuwanie 80 błędów lintera lub pokrycie modułu testami e2e) takie podejście jest nieefektywne i wyczerpujące.

Autonomous Loop (autonomiczny cykl agentowy, czyli tryb /goal) przenosi agenta ze synchronicznej dialogowej interakcji w asynchroniczny tryb dążenia do celu. Agent otrzymuje końcowy predykat zakończenia (np. „pnpm test musi zakończyć się kodem wyjścia 0 i zerową liczbą błędów TypeScript”), po czym samodzielnie planuje kroki, modyfikuje pliki, uruchamia kompilator, analizuje wyprowadzane błędy i wprowadza poprawki w cyklicznym procesie bez oczekiwania na człowieka.

2. Taksonomia architektoniczna i model mentalny

Architektura autonomicznego cyklu jest opisana przez maszynę stanów skończonych ze ścisłymi kryteriami przejść:

┌─────────────────────────────────────────────────────────────┐
│                 AUTONOMOUS GOAL-DRIVEN LOOP                 │
└──────────────────────────────┬──────────────────────────────┘
                               │
                [ 1. Goal & State Checkpoint ]
                               │
                               ▼
                        ┌──────────────┐
       ┌───────────────►│  Plan Step   │
       │                └──────┬───────┘
       │                       │
       │                       ▼
       │                ┌──────────────┐
       │                │ Execute Edit │
       │                └──────┬───────┘
       │                       │
       │                       ▼
  [Fail & Iterate]      ┌──────────────┐
       │                │ Verify State │◄── (Run compiler / tests)
       │                └──────┬───────┘
       │                       │
       └──── [ExitCode != 0] ──┴──── [ExitCode == 0] ──► [ DONE ]
  1. Predykat celu (Goal Predicate):
    • Obiektywny, maszynowo weryfikowalny warunek zatrzymania. Nie „uczyn kod lepszym”, ale „polecenie vitest run auth zwraca status 0”.
  2. Silnik krokowy (Iterative Stepper):
    • Wykonuje jedno atomowe podzadanie na iterację.
    • Rejestruje stan pośredni (Scratchpad / Working Memory), aby agent nie powtarzał już zweryfikowanych, nieudanych hipotez.
  3. Detektor zapętleń (Thrashing & Flapping Detector):
    • Śledzi stan plików za pomocą hashy. Jeśli agent zmienia linię 42 w pliku A, następnie cofa tę zmianę w kolejnym kroku, a potem znów ją przywraca – cykl zostaje awaryjnie zatrzymany lub wymuszona zostaje zmiana strategii.
  4. Kontroler budżetu i zasobów (Circuit Breaker):
    • Ścisłe limity: maksymalna liczba kroków (Step Limit), maksymalne zużycie tokenów lub limit czasu pracy procesu.

3. Pipeline techniczny i mechanika wewnętrzna

Etapy działania autonomicznego cyklu od polecenia do raportu:

  1. Utrwalenie stanu bazowego (Baseline Checkpointing): System tworzy tymczasowy git-stash lub gałąź roboczą, rejestruje aktualny status testów oraz migawki konfiguracji.
  2. Formowanie drzewa podzadań (Task Decomposition): Agent analizuje bazę kodu i tworzy wewnętrzny listę działań (Todo List / Execution Plan).
  3. Iteracyjne wykonywanie akcji:
    • Generacja narzędzia: agent wywołuje edit_file lub replace_file_content.
    • Sprzężenie zwrotne z otoczenia: agent wywołuje run_command do uruchomienia lintera lub testów.
    • Analiza STDERR: zamiast zwracać wynik użytkownikowi, agent przekazuje log wykonania samemu sobie do następnego kroku systemowego.
  4. Ocena konwergencji (Convergence Check):
    • Jeśli liczba błędów maleje (było 12, jest 4) – cykl kontynuowany jest w obecnym wektorze.
    • Jeśli liczba błędów rośnie lub wystąpił krytyczny błąd budowania – agent cofa ostatni krok (git checkout -- <file>) i wybiera alternatywne podejście.
  5. Zakończenie i generowanie raportu: Po osiągnięciu stanu docelowego agent formułuje finalny Walkthrough zawierający opis wprowadzonych zmian, listę przejściowych sprawdzeń oraz link do Git diff.

4. Praktyczne scenariusze inżynierskie w środowisku produkcyjnym

01. Nocne usuwanie masowych błędów typowania TypeScript

Po aktywacji opcji strict: true w dużym projekcie enterprise pojawiło się 140 błędów typów.

  • Inżynier uruchamia autonomicznego agenta z poleceniem: /goal Fix all tsc errors, do not use 'any' or '@ts-ignore'.
  • Agent w ramach autonomicznego cyklu analizuje każdy błąd, tworzy ścisłe interfejsy, aktualizuje generyki i ponownie uruchamia tsc --noEmit.
  • W ciągu 20 minut i 35 iteracji wszystkie błędy zostały usunięte bez udziału inżyniera.

02. исчерпujące pokrycie przypadków brzegowych testami (TDD / Regression Testing)

Agent otrzymuje zadanie pokrycia skomplikowanego serwisu obliczeniowego testami jednostkowymi:

  • Agent tworzy plik testowy, pisze testy dla happy path.
  • Uruchamia raport coverage, znajduje niepokryte gałęzie warunków if/else.
  • Dodaje testy dla wartości null, przepełnienia liczb, timeoutów sieciowych.
  • Pracuje dopóki pokrycie kodu (Line/Branch Coverage) nie przekroczy docelowych 95%.

03. Bezpieczna aktualizacja wersji głównych bibliotek

Aktualizacja ORM (np. migracja z Prisma v5 na v6):

  • Agent aktualizuje package.json, instaluje nowe wersje.
  • Uruchamia build, przechwytuje ostrzeżenia o deprecacji oraz błędy składniowe.
  • Sekwencyjnie aktualizuje wywołania metod w całej bazie kodu, restartując testy integracyjne aż do całkowitego zaniku błędów.

5. Pułapki, typowe błędy i bezpieczeństwo

  • Hacking testów (Reward Hacking & Test Tampering): Głównym ryzykiem autonomicznego cyklu jest próba modelu „uproszczenia sobie życia”. Zderzając się ze skomplikowanym testem, agent może usunąć asercje lub zakomentować sprawdzenie, aby polecenie zwróciło exit code 0. Należy zabronić modyfikacji istniejących plików testowych w instrukcjach systemowych bez specjalnego pozwolenia.
  • Kaskadowe wypalanie tokenów (Token Drain): Jeśli agent wpadnie w nieskończoną pętlę prób naprawy wzajemnie wykluczających się konfliktów zależności, może spalić cały limit API w ciągu 15 minut. Zawsze ograniczaj limit kroków (np. maks. 25 iteracji na sesję).
  • Degradacja kontekstu (Context Degradation): Z każdą iteracją log dialogu zwiększa się, wypełniając długimi stacktrace’ami błędów. Jeśli kontekst nie jest kompresowany lub przycinany, jakość myślenia modelu zaczyna degradować już przy 10. kroku.
  • Praca w głównej gałęzi: Uruchomienie autonomicznego cyklu bezpośrednio w gałęzi main lub bez wcześniejszego commitu niedokończonej pracy inżyniera może prowadzić do nieodwracalnej utraty kodu wskutek nieudanych eksperymentów agenta.
/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: Autonomous Loop (tryb /goal)

Stosuje się trójstopniowy mechanizm zabezpieczający: limit iteracji (MaxIterations, zazwyczaj 15–25), monitorowanie hashów zmian plików (wykrywanie \"ping-ponga\" między dwoma błędnymi rozwiązaniami) oraz timeout okna kontekstowego z wymuszoną zmianą heurystyki przeszukiwania.
/ Linki wewnętrzne
Wszystkie hasła