hrxdev
Українська

Як це зроблено

Один розробник, ШІ-помічник для програмування та безліч правил, які перевіряє машина.

Автор: Nick

Prison Life пишу я разом із Claude Code (агентом для програмування від Anthropic). Я вирішую, якою буде гра і які варіанти ми обираємо; основну частину набору тексту робить помічник. Оскільки код ніхто не переглядає, окрім мене й ШІ-агента для рев’ю, я спираюся на автоматизацію: правила забезпечуються автоматичними перевірками та збіркою, а не добрими намірами.

Делегування

Основна сесія Claude Code планує роботу й веде трекер завдань, письмовий запис проєктних рішень та історію змін. Код вона не пише: кожну зміну, навіть крихітну, вона передає спеціалізованому ШІ-агентові. У кожного є власний письмовий опис, що фіксує його роль і модель.

РольРівень моделіЗавдання
АрхітектураOpusмодель даних, тік, потоки, пошук шляху, рішення
Код симуляціїOpusсистеми симуляції, ШІ персонажів, гарячі цикли
ПродуктивністьOpusпрофілювання, регресії бенчмарка
Рев’ю (лише читання)Opusперевіряє диф; файли правити не може
Клієнт та інструментиSonnetклієнт на Godot, інтерфейс, інструменти
ТестиSonnetтести за критеріями приймання
Дані контентуSonnetвизначення в JSON за схемою
Пошук, запуск перевірокHaikuпошук по коду; запуск перевірок і стислий виклад збоїв

Складна робота дістається найсильнішій моделі, рутинна – дешевшим. Якщо дешевший ШІ-агент двічі проваляє перевірки, завдання переходить на рівень вище; якщо двічі провалюється вищий рівень, він зупиняється й питає мене.

Хуки, які кажуть «ні»

Хуки Claude Code – це скрипти, що запускаються навколо дій помічника. Мої забезпечують три правила:

Це захист від помилок, а не від навмисного обходу: упертий трюк із командною оболонкою їх обійде, а один із хуків бачить червону перевірку в ШІ-агента, але не може його втримати (стоп-хук основної сесії все одно її спіймає). Я волію сказати про це прямо.

Письмові рішення та перевірки

Детерміноване ядро

Симуляція живе у звичайній бібліотеці .NET без посилань на Godot; клієнт на Godot лише читає її стан і надсилає команди. Ядро підпорядковується жорстким правилам: світ змінюється лише командами, час – цілі тіки, випадковість береться лише з генераторів світу із сидом. Той самий сид і той самий журнал команд мають давати той самий світ. Ці правила перевіряються компілятором і тестами, а не лише рев’ю; як саме, див. девлог №1, а про світ, збереження та повтори – девлог №2.

Архітектура ядра симуляціїКоманди потрапляють у чергу. Кожен тік виконує фазу 0 (команди, записуються в журнал команд), фазу 1 (системи у фіксованому порядку) та фазу 2 (кінець тіка). Журнал команд і стан світу з картою клітинок та випадковими потоками із сидом формують хеш стану. Вхідні команди гравець, тести, сценарії Черга команд Додавання потокобезпечне Тік T (один потік, цілий час) Фаза 0: команди серіалізація, мітка (тік, номер) перевірка, запис у журнал, застосування відхилені теж потрапляють у журнал Фаза 1: системи порядок фіксовано в коді (поки жодної) Фаза 2: кінець тіка структурні зміни (поки не потрібні) потім лічильник тіків + 1 Журнал команд кожна команда з результатом байти + дайджест повтор = сид + журнал Стан світу сид, тік карта клітинок (рівні) 4 потоки ГВЧ із сида: Commands, Needs, Ai, Events Хеш стану сид, тік, карта, потоки ГВЧ, дайджест журналу
Ядро симуляції в його нинішньому вигляді. Систем і персонажів поки немає; у світі є карта клітинок із рівнями, а хеш покриває карту, а не лише те, що намальовано.

Розрахункова мета – до 1000 в’язнів і працівників при 20 тіках на секунду. Це мета: персонажів поки немає, тож запускач бенчмарків існує, але в такому масштабі нічого не вимірювалося.