hrxdev
Türkçe

Nasıl yapılıyor

Bir geliştirici, bir yapay zekâ kodlama asistanı ve makinenin denetlediği bir sürü kural.

Yazan: Nick

Prison Life’ı Claude Code (Anthropic’in kodlama ajanı) ile birlikte yazıyorum. Oyunun ne olduğuna ve hangi seçenekleri izleyeceğimize ben karar veriyorum; yazma işinin çoğunu asistan yapıyor. Kodu benden ve bir inceleme yapay zekâ ajanından başka kimse incelemediği için otomasyona yaslanıyorum: kurallar iyi niyetle değil, otomatik denetimler ve derleme tarafından zorunlu kılınıyor.

Görev devri

Ana Claude Code oturumu işi planlar; görev takipçisini, tasarım kararlarının yazılı kaydını ve değişiklik geçmişini yönetir. Kod yazmaz: her değişikliği, en küçüğünü bile, uzman bir yapay zekâ ajanına devreder. Her birinin, rolünü ve modelini sabitleyen kendi yazılı tanımı vardır.

RolModel seviyesiGörev
MimariOpusveri modeli, tick, iş parçacıkları, yol bulma, kararlar
Simülasyon koduOpussimülasyon sistemleri, karakter yapay zekâsı, sıcak döngüler
PerformansOpusprofilleme, kıyaslama gerilemeleri
İnceleme (salt okunur)Opusbir diff’i inceler; dosya düzenleyemez
İstemci ve araçlarSonnetGodot istemcisi, arayüz, araçlar
TestlerSonnetkabul ölçütlerinden testler
İçerik verisiSonnetşemaya göre JSON tanımları
Arama, denetim çalıştırmaHaikukod arama; denetimleri çalıştırıp hataları özetleme

Zor işler en güçlü modele, rutin işler daha ucuz olanlara gider. Daha ucuz bir yapay zekâ ajanı denetimlerden iki kez kalırsa görev bir seviye yukarı çıkar; en üst seviye iki kez başarısız olursa durur ve bana sorar.

Hayır diyen hook’lar

Claude Code hook’ları, asistanın eylemlerinin etrafında çalışan betiklerdir. Benimkiler üç kuralı zorunlu kılar:

Bunlar hatalara karşı korur, kasıtlı atlatmaya karşı değil: kararlı bir kabuk hilesi bunları aşabilir, ve hook’lardan biri bir yapay zekâ ajanındaki kırmızı denetimi görür ama onu durduramaz (ana oturumun durma hook’u yine de yakalar). Bunu açıkça söylemeyi tercih ederim.

Yazılı kararlar ve denetimler

Deterministik çekirdek

Simülasyon, hiçbir Godot referansı olmayan sade bir .NET kütüphanesinde yaşar; Godot istemcisi yalnızca durumunu okur ve komut gönderir. Çekirdek sabit kurallara uyar: dünya yalnızca komutlarla değişir, zaman tam sayı tick’lerdir, rastgelelik yalnızca dünyanın tohumlu üreteçlerinden gelir. Aynı tohum ve aynı komut kaydı aynı dünyayı vermelidir. Bu kurallar yalnızca incelemeyle değil, derleyici ve testlerle denetlenir; nasıl olduğu için devlog #1’e, dünya, kayıtlar ve tekrarlar için devlog #2’ye bakın.

Simülasyon çekirdeğinin mimarisiKomutlar bir kuyruğa girer. Her tick 0. aşamayı (komut kaydına yazılan komutlar), 1. aşamayı (sabit sırada sistemler) ve 2. aşamayı (tick sonu) çalıştırır. Komut kaydı ve karo haritası ile tohumlu rastgele akışlarıyla dünya durumu, durum özetini besler. Gelen komutlar oyuncu, testler, senaryolar Komut kuyruğu Kuyruğa ekleme iş parçacığı güvenli Tick T (tek iş parçacığı, tam sayı zaman) Aşama 0: komutlar serileştir, damgala (tick, sıra) Validate, kayda yaz, Apply reddedilen komutlar da kaydedilir Aşama 1: sistemler kodda belirlenmiş sabit sırayla (henüz kayıtlı olan yok) Aşama 2: tick sonu yapısal değişiklikler (henüz yok) ardından tick sayacı + 1 Komut kaydı her komut, sonucuyla birlikte baytlar + özet tekrar = tohum + kayıt Dünya durumu tohum, tick karo haritası (katlar) tohumdan 4 RNG akışı: Commands, Needs, Ai, Events Durum özeti tohum, tick, harita, RNG akışları, kayıt
Simülasyon çekirdeğinin bugünkü hâli. Henüz sistem ya da karakter yok; dünyada katları olan bir karo haritası var ve özet, çizilenin yanı sıra haritayı da kapsıyor.

Tasarım hedefi, saniyede 20 tick ile 1.000’e kadar mahkûm ve çalışandır. Bu bir hedef: henüz karakter yok, yani kıyaslama çalıştırıcısı var ama o ölçekte hiçbir şey ölçülmedi.