BORIX
Technologia

Automat, który pisze kod — i zatrzymuje się przed podpisem

Część tej aplikacji powstała w pętli: narzędzie samo brało kolejne zadanie z listy, pisało kod, uruchamiało testy i commitowało wynik. Ciekawe jest jednak nie to, że coś takiego działa, ale jak zbudowane są bezpieczniki — bo dokładnie o to pyta się przy automatyzacji pracy kancelaryjnej.

Czyje to narzędzie

Ralph to nie nasz produkt. To projekt open source Franka Brii (licencja MIT), będący implementacją techniki opisanej przez Geoffreya Huntleya — nazwanej przez niego „Ralph Wiggum”. Używamy go i utrzymujemy własny fork; upstream pozostaje u autora.

Pętla w pięciu krokach

  1. 1Wczytaj instrukcję — zakres fazy, co wolno, czego nie wolno tknąć.
  2. 2Weź JEDNO zadanie o najwyższym priorytecie z listy i wykonaj je.
  3. 3Zapisz, co się zmieniło: pliki, wynik testów, log całej odpowiedzi.
  4. 4Sprawdź warunki wyjścia.
  5. 5Jeśli niespełnione — kolejny obieg. Jeśli spełnione — koniec.

Najciekawszy element: podwójna bramka wyjścia

Pętla kończy pracę wyłącznie wtedy, gdy spełnione są dwa niezależne warunki naraz: heurystyka wykryje w odpowiedzi co najmniej dwa sygnały ukończenia oraz model jawnie zadeklaruje zakończenie w ustrukturyzowanym bloku statusu. Sam sygnał od modelu nie wystarcza. Same heurystyki też nie.

Sygnały w treściDeklaracja modeluWynik
≥ 2deklaruje ukończeniekoniec pracy
≥ 2brak deklaracjikolejny obieg
< 2deklaruje ukończeniekolejny obieg

To ta sama zasada, którą stosujemy w automacie kancelaryjnym: „wygląda na zrobione” nie jest podstawą do zamknięcia sprawy.

Bezpieczniki

Wyłącznik przy braku postępu

Kilka obiegów bez zmian w plikach albo powtarzający się ten sam błąd — pętla wstrzymuje się sama i czeka na człowieka. Nie kręci się w kółko do wyczerpania limitu.

Limit wywołań na godzinę

Twardy sufit liczby zapytań do modelu, resetowany godzinowo. Nawet zapętlony scenariusz nie wygeneruje nieograniczonych kosztów.

Biała lista narzędzi

Automat ma dostęp do wyliczonych operacji, nie do dowolnej komendy. Polecenia potrafiące usunąć historię pracy są celowo poza listą.

Pliki chronione

Instrukcja fazy wprost wypisuje, czego nie wolno dotykać — u nas: warstwa uwierzytelniania, kontrola dostępu i migracje bazy.

Jak to wyglądało w BORIX

Pętla dostała wąsko zdefiniowaną fazę testową: żadnych nowych ekranów, żadnych nowych tabel — tylko brakujące testy i naprawa błędów. Do tego plik z konwencjami projektu (jak się buduje, jak się testuje, jakie są role użytkowników, jak nazywamy klasy CSS) i lista zadań z kryterium akceptacji przy każdym.

Efekt tamtego przebiegu: kilka obiegów, wyjście po spełnieniu obu warunków bramki, wyłącznik ani raz nie musiał zadziałać. Każdy obieg zostawił po sobie osobny commit i pełny log odpowiedzi — czyli coś, co da się później przejrzeć jak protokół.

Czego to nie znaczy: że aplikacja napisała się sama. Zakres, kolejność, kryteria akceptacji i przegląd każdego commita to praca człowieka. Automat wykonał to, co miał opisane — nie zdecydował, co warto zrobić.

Dlaczego opowiadamy o tym na stronie dla nadleśnictw

Bo to ten sam wzorzec, który proponujemy przy automatyzacji dekretacji: automat wykonuje krok opisany wcześniej jak przepis, zostawia dowód w postaci logu i zrzutu ekranu, a przed czynnością nieodwracalną zatrzymuje się i pyta. Audytor dostaje odpowiedź na pytanie „kto, kiedy, co kliknął” — a nie zapewnienie, że „system tak wyliczył”.