hrxdev
Polski

Jak to powstaje

Jeden programista, asystent programistyczny oparty na SI i mnóstwo reguł sprawdzanych przez maszynę.

Autor: Nick

Prison Life piszę razem z Claude Code (agentem programistycznym Anthropic). Ja decyduję, czym jest gra i które opcje wybieramy; asystent wykonuje większość pisania. Ponieważ nikt poza mną i agentem SI do przeglądu nie ogląda kodu, polegam na automatyzacji: reguły są egzekwowane przez automatyczne kontrole i build, a nie dobre chęci.

Delegowanie

Główna sesja Claude Code planuje pracę i prowadzi system zadań, spisane decyzje projektowe oraz historię zmian. Nie pisze kodu: każdą zmianę, nawet drobną, przekazuje wyspecjalizowanemu agentowi SI. Każdy z nich ma własną spisaną definicję, która określa jego rolę i model.

RolaPoziom modeluZadanie
ArchitekturaOpusmodel danych, tick, wątki, wyszukiwanie ścieżek, decyzje
Kod symulacjiOpussystemy symulacji, SI postaci, gorące pętle
WydajnośćOpusprofilowanie, regresje benchmarku
Przegląd (tylko odczyt)Opusprzegląda diff; nie może edytować plików
Klient i narzędziaSonnetklient Godot, interfejs, narzędzia
TestySonnettesty z kryteriów akceptacji
Dane treściSonnetdefinicje JSON ze schematu
Wyszukiwanie, uruchamianie kontroliHaikuwyszukiwanie w kodzie; uruchamianie kontroli i streszczanie błędów

Trudna praca trafia do najsilniejszego modelu, rutynowa do tańszych. Jeśli tańszy agent SI dwa razy nie przejdzie kontroli, zadanie przechodzi poziom wyżej; jeśli dwa razy zawiedzie najwyższy poziom, zatrzymuje się i pyta mnie.

Hooki, które mówią „nie”

Hooki Claude Code to skrypty uruchamiane wokół działań asystenta. Moje egzekwują trzy reguły:

Chronią one przed pomyłkami, a nie przed celowym obejściem: uparta sztuczka z powłoką potrafi je ominąć, a jeden z hooków widzi czerwoną kontrolę u agenta SI, ale nie może go powstrzymać (hook zatrzymania głównej sesji i tak ją wyłapie). Wolę powiedzieć to wprost.

Spisane decyzje i kontrole

Deterministyczny rdzeń

Symulacja mieszka w zwykłej bibliotece .NET bez odwołań do Godota; klient Godot tylko czyta jej stan i wysyła komendy. Rdzeń podlega sztywnym regułom: świat zmienia się tylko przez komendy, czas to całkowite ticki, a losowość pochodzi wyłącznie z generatorów świata z ziarnem. To samo ziarno i ten sam dziennik komend muszą dać ten sam świat. Te reguły sprawdzają kompilator i testy, a nie tylko przegląd; jak to działa, opisuje devlog #1, a świat, zapisy i powtórki – devlog #2.

Architektura rdzenia symulacjiKomendy trafiają do kolejki. Każdy tick wykonuje fazę 0 (komendy, zapisywane w dzienniku komend), fazę 1 (systemy w stałej kolejności) i fazę 2 (koniec ticka). Dziennik komend oraz stan świata, z mapą kafelków i strumieniami losowymi z ziarnem, zasilają skrót stanu. Komendy wejściowe gracz, testy, scenariusze Kolejka komend Dodawanie jest bezpieczne wątkowo Tick T (jeden wątek, czas całkowity) Faza 0: komendy serializacja, znacznik (tick, nr) walidacja, zapis do dziennika, zastosowanie odrzucone też trafiają do dziennika Faza 1: systemy stała kolejność ustalona w kodzie (jeszcze żadnego) Faza 2: koniec ticka zmiany strukturalne (jeszcze nieużywane) potem licznik ticków + 1 Dziennik komend każda komenda z wynikiem bajty + skrót replay = ziarno + dziennik Stan świata ziarno, tick mapa kafelków (poziomy) 4 strumienie RNG z ziarna: Commands, Needs, Ai, Events Skrót stanu ziarno, tick, mapa, strumienie RNG, skrót dziennika
Rdzeń symulacji w obecnej postaci. Nie ma jeszcze systemów ani postaci; świat zawiera mapę kafelków z poziomami, a skrót obejmuje mapę, nie tylko to, co jest rysowane.

Docelowo gra ma obsługiwać do 1000 więźniów i pracowników przy 20 tickach na sekundę. To cel: postaci jeszcze nie ma, więc runner benchmarków istnieje, ale w takiej skali niczego nie zmierzono.