Çok Ajanlı Sistemlerde Olay Güdümlü Pano (task_bus.jsonl): Sıfır Yoklama (Zero-Polling) ve Yalnızca-Eklenir İcra Mimarisi
Farklı dil modeli ailelerinin (Claude, Gemini, Grok ve yerel koşucular) ortak bir bellek bozulmasına, yarış koşuluna veya sonsuz yoklama döngüsüne düşmeden nasıl koordine edildiğinin mekanik dökümü.
Yönetici Özeti (TL;DR)
- Zamanlı Yoklama (Polling) Yasağı: Ajanların
sleepdöngüleriyle ortak kuyruğu saniyede veya dakikada bir taraması hem jeton (token) israfına hem de bayat durum okumalarına yol açar. Bunun yerine macOS çekirdek dosya sistemi olayları (launchd WatchPaths) yalnızca ilgili ajanın gelen kutusuna dosya düştüğü anda tetikleme yapar.
1. Çok Ajanlı Eşgüdümda Yoklama (Polling) ve Durum Yarışı Sorunu
Çok ajanlı yapay zekâ sistemlerinde (multi-agent systems) en sık karşılaşılan mimari darboğaz, model zekâsının yetersizliği değil, ajanlar arası durum eşzamanlamasıdır. Üç veya daha fazla farklı model ailesi (örneğin mimari sentez ve icra için Gemini, eşgüdüm ve iletişim için Claude, dış kaynak ve karşı-tez denetimi için Grok ve yerel deterministik betikler) aynı çalışma alanı üzerinde görev paylaştığında, klasik ortak durum dosyası güncelleme (mutable shared state) yaklaşımı üç ağır arıza üretir:
- Zamanlı Yoklama (Polling) Maliyeti ve Gecikmesi: Her ajanın “her 60 saniyede bir görev kuyruğunu kontrol et” şeklinde bir döngü çalıştırması, iş olmadığında boş bağlam tüketimine (token burn), iş geldiğinde ise ortalama yarı-periyot gecikmeye neden olur.
- Yazma Yarışı (Race Condition) ve Üzerine Yazma: İki paralel koşucunun aynı JSON veya Markdown durum dosyasını aynı saniyede okuyup değiştirmesi, bir ajanın ürettiği kanıtın diğer ajan tarafından sessizce ezilmesiyle sonuçlanır.
- Sessiz Başarısızlık ve Çift Koşu (Duplicate Execution): Bir görevin hangi ajan tarafından devralındığı atomik olarak kaydedilmezse, ya iki ajan aynı işi mükerrer yapar ya da her iki ajan görevin diğeri tarafından alındığını varsayarak işi sahipsiz bırakır.
Atlas otonom ajan mimarisinde bu üç arıza, veritabanı sunucusu karmaşasına girmeden, işletim sistemi çekirdeğinin dosya sistemi bildirimleri ve katı bir yalnızca-eklenir olay kütüğü (append-only event log) birleştirilerek çözülmüştür.
2. Yalnızca-Eklenir (Append-Only) task_bus.jsonl Şeması ve Beyan Yasası
Sistemin tek doğruluk kaynağı task_bus.jsonl dosyasıdır. JSON Lines yapısal kütük belirtimi ve Event Sourcing (Olay Kaynaklama) mimari deseni uyarınca bu kütükte mevcut bir satırı değiştirmek veya silmek kesin olarak yasaktır. Durum değişikliği, eski satırı düzenleyerek değil, yeni bir olay satırı ekleyerek ifade edilir.
Tek yazıcı betiği olan kosucu/task_bus_yaz.py (satır 156–184), panoya eklenen her JSON nesnesinde şu gerçek şema anahtarlarını kullanır:
id(Zorunlu Görev Kimliği): Görevin tekil tanımlayıcısıdır. Durum geçişleri bu kimliğe-ISLENIYORveya-YANITsonekleri eklenerek zincirlenir; aynıidile ikinci kez yazımtask_bus_yaz.py:177satırındaENGELile reddedilir (selftest 9/9 OK).ts(Otomatik Zaman Damgası): Yazım anında betik tarafından otomatik üretilen ISO-8601 sistem zaman damgasıdır (ilktskaydı2026-10-03T15:093. satırdadır;tsalanı bulunmayan97tarihsel önyükleme satırı1–538satır aralığına dağılmıştır).ajan(Zorunlu) vehedef(Seçmeli): Olayı üreten kaynak ajan (izinli liste:Atlas,Anu,reaper,Enkidu,Grok-Asistanvb.)ajananahtarıyla, yönlendirilen hedef ajan ise seçmeli--hedef(hedef) anahtarıyla yazılır (şema standartlaşması öncesi erken satırlardaagentanahtarı da kullanılmıştır).claim(Zorunlu İddia Metni) ve Canlı BEYAN Oranı: Mimari kural olarak her iddianın ilk satırıBEYAN: <kim> · <ne> · <kesinlik> · <dayanak> · düşer: <...>kalıbıyla başlamalıdır. Ancakkosucu/task_bus_yaz.pybetiğinde henüz mekanik birBEYAN:veya düşer testi zorlama kapısı yoktur. 19 Ekim 2026 tarihlikosucu/reaper_denetci.py --beyan-oranicanlı ölçümünde pano kayıtlarının%72,3’ü (422/584; hedef eşik≥%80, Reaper sınıfı:site-beyan-olcu = İDDİA)BEYAN:ile başlamaktadır; kalan satırlar mekanik kanca ve kilit bildirimleridir.kanit_yolu(Seçmeli Kanıt Dosyası Yolu): Komut satırında seçmeli--kanitargümanıyla verilen ve JSON nesnesinekanit_yolu(erken kayıtlardakanit) anahtarıyla kaydedilen doğrulama dosyası adresidir.
wc -l task_bus/task_bus.jsonl · 19 Ekim 2026): Canlı task_bus.jsonl kütüğü ilk mimari kesitte 1.630 olay satırı, 19 Ekim 11:46 kesitinde 2.249 satır, güncel canlı sayımda ise 2.344 yalnızca-eklenir olay satırı barındırmaktadır; üzerine yazma kaynaklı veri kaybı 0 olarak ölçülmüştür.
3. Çekirdek Düzeyinde Olay Güdümlü Tetikleme: WatchPaths ve Gelen Kutuları
Pano mimarisinin ikinci ayağı sıfır yoklama (zero-polling) ilkesidir. Ajan oturumlarının hiçbirinde “N dakikada bir task_bus.jsonl dosyasını oku” şeklinde bir zamanlayıcı döngü bulunmaz. Bunun yerine olay yönlendirme şu üç adımlı deterministik boru hattıyla çalışır:
- Anlık Gelen Kutusu Dağıtımı: Bir ajan
task_bus_yaz.pyüzerinden panoya kayıt düştüğünde veya macOSlaunchdbekçisi (com.ustakil.pano_izle)WatchPathsmekanizmasıyla dosya değişimini yakaladığında, hedef ajanın gelen kutusuna (örneğingelen_gemini/pano_<ID>.mdveya.hook_state/gelen_kutusu/) tekil bir görev zarfı bırakılır. - Etiket Tabanlı Koşucu Ayrımı: Görev zarfının
claimalanı[AGY]veya[AGY:flash]gibi başsız (headless) yürütme etiketi taşıyorsa, bekçi bu görevi insan müdahalesi beklemeden doğrudankosucu/agy_atim.shveyakosucu/vezir_atim.shüzerinden uygun model kademesine (Argon, Opus, Sonnet veya Flash) sevk eder. Tarayıcı oturumu gerektiren etiketsiz görevler ise aktif IDE oturumunun gelen kutusunda bekler. - Arşivleme ve Temiz Kutu: İlgili ajan görevi okuduğu anda zarfı
arsiv/alt dizinine taşır (silmez). Böylece gelen kutusunun boş olması, sistemde bekleyen iş olmadığının O(1) karmaşıklıkta kesin kanıtı olur.
Bu mimari sayesinde sistem boşta dururken sıfır API jetonu harcar; yeni bir görev yazıldığında ise çekirdek dosya sistemi olayıyla milisaniyeler içinde yalnızca hedef koşucu uyandırılır.
4. İdempotent Görev Kilidi, Başsız Koşucular ve Benlik Direnci
Olay güdümlü tetikleme hız kazandırsa da, paralel çalışan çoklu koşucularda idempotentlik (aynı emrin birden fazla kez tetiklenmesi halinde sistemin bozulmaması ve mükerrer iş yapmaması) şarttır. Pano protokolünde her görev üç aşamalı bir durum makinesinden geçer:
- 1. Açılış (Emir): Eşgüdüm ajanı görev satırını yazar.
- 2. Kilit (
<ID>-ISLENIYOR): Görevi devralan icra ajanı, herhangi bir dosya değişikliği yapmadan önce panoya-ISLENIYORsatırı düşer. Başka bir koşucu aynı kimliği görürse işlemi derhal durdurur. - 3. Mühür (
<ID>-YANIT): İş tamamlandığında ve öz-sınama (selftest) kapıları geçtiğinde,kanit_yoluile birlikte-YANITsatırı yazılır. Aynı görev kimliğine ikinci bir yanıt yazılmasıtask_bus_yaz.py:177tarafından mekanik olarak engellenir.
Bu icra omurgasını denetleyen Enkidu (sistemin otonom bekçi ve koşucu katmanı; bot/olgular.json:O-005, O-006), 21 tanımlı görev üzerinde 24 saatlik pencerede 62 başarılı koşu (61–62 OK) ve 0 ölçülemedi sonucu üretmiştir. Enkidu envanterinde 2.017 kütük (16'sı okuyansız) ve 354 envanter kaydı (190 zamanlayıcı, 35 aktif koşan birim, 81 arşiv adayı) izlenmektedir.
Öz-Sınama ve Emir Kapısı Şeffaflık Dökümü (Gizlenen Olumsuzlar Dahil): bot/olgular.json:O-001 (18 Ekim 2026) kaydında yer alan 243 kayıtlı aletin 174'ü öz-sınamadan geçmiş (toplam 3.129 öz-sınama adımı 101 saniyede tamamlanmıştır), ancak 16 alet öz-sınamada düşmüş (dustu: 16) ve 53 alette henüz öz-sınama girişi bulunmamaktadır (ozsinamasiz: 53); 19 Ekim 2026 canlı reaper_denetci.py --selftest-karne taramasında ise 262 .py dosyası ve 261 alet izlenmektedir (site-alet-sozlesmesi = AKSAK). Benzer biçimde, bot/olgular.json:O-003 (18 Ekim) kesitinde 24 saatte koşan 29 emirde 0 kapısız geçiş kaydedilmişken, 19 Ekim 2026 canlı reaper_denetci.py --dogrula-orani ölçümünde son 21 emrin 17'sinde (%81,0) DOGRULA kapısı bulunmuş, 4 emir ise DOGRULA kapısı olmadan yazılmıştır (site-dogrula-kapisi = AKSAK).
Çok ajanlı sistemlerde bir ajanın diğerinin hatalı iddiasına veya sahte otorite baskısına boyun eğmemesi için BENLİK-1013 direnç deneyi (bot/olgular.json:O-007) yürütülmüştür: 18 hüküm ve n = 162 denemede otoriteye boyun eğme oranı 0/18, sahte kanıta aldanma 0/18, gerçek kanıt geldiğinde hükmü doğru güncelleme oranı ise 16/18 (%88,9) olarak kaydedilmiştir.
5. Canlı Ölçüm ve Kanıt Kartı (Dosya ve Satır Kaynaklı)
Aşağıdaki tablo, olay güdümlü pano ve otonom icra omurgasının canlı kütüklerden ölçülen gerçek verilerini (olumsuz/aksak metrikler dahil) ve data-kaynak adreslerini içerir:
| Bileşen / Ölçüt | Canlı Ölçüm Değeri | Doğrulama Durumu / Kural | Kaynak (Dosya:Alan · Tarih) |
|---|---|---|---|
Ortak Pano (task_bus.jsonl) |
2.344 canlı olay satırı (11:46 kesiti: 2.249 · ilk kesit: 1.630) | Yalnızca-eklenir (append-only) · 0 üzerine yazma · ilk ts: 2026-10-03T15:09 (satır 3; 1–538 aralığındaki 97 satırda ts yok) |
task_bus/task_bus.jsonl:1-2344 · 2026-10-19 |
| Pano Şeması ve Canlı BEYAN Oranı | Canlı BEYAN oranı: %72,3 (422/584 · hedef ≥%80) |
Anahtarlar: id, ts, ajan, claim + seçmeli hedef, kanit_yolu · task_bus_yaz.py'de mekanik BEYAN kapısı YOK (site-beyan-olcu = İDDİA) |
kosucu/task_bus_yaz.py:156-184 · reaper_denetci.py · 2026-10-19 |
| Kayıtlı Alet ve Öz-Sınama Havuzu (O-001 + Canlı) | 243 alet: 174 geçti · 16 düştü · 53 öz-sınamasız · 3.129 sınama (101 sn) | Canlı karne: 262 .py, 261 alet (site-alet-sozlesmesi = AKSAK) |
bot/olgular.json:O-001 · data/selftest_karne.jsonl · 2026-10-19 |
| Enkidu Koşucu ve Kütük Envanteri (O-005 / O-006) | 21 görev · 24 sa 62 OK (61–62) · 0 ölçülemedi · 2.017 kütük · 354 envanter | 190 zamanlayıcı · 35 koşan birim · 81 arşiv adayı · 16 okuyansız kütük | bot/olgular.json:87-125 · 2026-10-18 |
| Emir ve DOGRULA Kapı Disiplini (O-003 + Canlı) | O-003 (18 Eki): 29 emir / 0 kapısız · Canlı (19 Eki): 17/21 (%81,0) DOGRULA'lı, 4 kapısız emir | Reaper canlı durum: site-dogrula-kapisi = AKSAK (4 kapısız emir tespit edildi) |
bot/olgular.json:O-003 · reaper_denetci.py --dogrula-orani · 2026-10-19 |
| Tetikleme ve Görev Kilidi Mekanizması | launchd WatchPaths (com.ustakil.pano_izle) · 0 polling |
pano_izle_daemon.py --tek-tur · task_bus_yaz.py:177 idempotent ENGEL (selftest 9/9) |
com.ustakil.pano_izle.plist · kosucu/task_bus_yaz.py:177 · 2026-10-19 |
| BENLİK-1013 Ajan Direnç Deneyi (O-007) | n = 162 deneme · 18 hüküm · 16/18 (%88,9) gerçek kanıtla güncelleme | Otoriteye boyun eğme: 0/18 · Sahte kanıta aldanma: 0/18 (Δskor = 0,0000, 54/54 aynı karar) |
bot/olgular.json:127-147 · 2026-10-14 |
6. Sık Sorulan Sorular (SSS)
Çok ajanlı sistemlerde neden veritabanı yerine JSONL (task_bus.jsonl) tercih edildi?
JSON Lines (task_bus.jsonl) biçimi, harici bir veritabanı sunucusu bağımlılığı olmadan atomik satır ekleme (append-only), git/diff araçlarıyla doğrudan denetlenebilme ve POSIX dosya sistemi olaylarıyla (WatchPaths) sıfır gecikmeli tetikleme avantajı sağlar. Canlı sistemde 2.344 olay satırı (11:46 kesitinde 2.249, ilk kesitte 1.630) sıfır üzerine yazma ile işlenmiştir.
Sıfır yoklama (zero-polling) ajan eşgüdümünde nasıl çalışır?
Ajanlar ortak kuyruğu periyodik olarak taramaz. macOS launchd WatchPaths servisi (com.ustakil.pano_izle), task_bus.jsonl dosyasına yeni bir satır eklendiği anda pano_izle_daemon.py --tek-tur ile yalnızca hedef ajanın gelen kutusuna bir görev zarfı düşürür ve başsız koşucuyu (agy_atim.sh veya vezir_atim.sh) uyandırır. İş yokken tüketilen jeton ve işlemci gücü sıfırdır.
İki paralel ajanın aynı görevi mükerrer çalıştırması nasıl engellenir?
Görevi devralan koşucu işe başlamadan önce panoya <ID>-ISLENIYOR satırı yazar ve tamamlandığında kanit_yolu ile birlikte <ID>-YANIT satırını mühürler. kosucu/task_bus_yaz.py:177 aynı kimliğe ikinci bir kayıt yazılmasını ENGEL ile reddederek idempotent çalışmayı garanti altına alır (selftest 9/9 OK).
Ajanlar arası iletişimde Beyan Yasası neyi öngörür ve canlı uyum oranı nedir?
Mimari kural olarak panoya yazılan her iddianın ilk satırı BEYAN: başlığıyla başlamalı ve düşer testini belirtmelidir; ancak task_bus_yaz.py betiğinde henüz mekanik bir BEYAN red kapısı yoktur. 19 Ekim 2026 Reaper ölçümünde (reaper_denetci.py --beyan-orani) canlı pano satırlarının %72,3'ü (422/584; hedef eşik ≥%80, durum: İDDİA) BEYAN: taşımaktadır. Emir kapısında ise O-003 (18 Ekim) kesitinde 29 emirde 0 kapısız geçiş varken, 19 Ekim canlı ölçümünde 21 emrin 17'sinde (%81,0) DOGRULA kapısı bulunmuş, 4 emir kapısız kalmıştır (AKSAK).
Kaynaklar
Bu sayfadaki mimari ve deneysel ölçümlerin dayandığı birincil teknik belgeler ve hakemli yayınlar:
- JSON Lines (JSONL) Append-Only Structured Log Format Specification
- Event Sourcing Architectural Pattern Documentation
- Creating Launch Daemons and Agents — macOS launchd WatchPaths Technical Documentation
- AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation (arXiv:2308.08155)
- ChatDev: Communicative Agents for Software Development (arXiv:2307.07924)
- ReAct: Synergizing Reasoning and Acting in Language Models (arXiv:2210.03629)
İlgili Teknik İncelemeler: Pano üzerindeki çıktıların bağımsız denetimi için Reaper denetçi vitrini, bağlam-kör hakem ve düşer testi, QAJAN 6 mekanik hipotez kapısı, ajan benliği dondurma protokolü ve otonomi genel görünümü sayfalarını okuyabilirsiniz.