Bloga dön

18 Ağustos 2026 tarihinde yayımlandı

Bir Liste Bir Yönlendirici Değil: Kendi Araçlarını Seçen Beyin Oluşturma

Geçen hafta NeMoCo hakkında yazdım, beylerin dünyayı kategorize ettiği gibi sinir yapılarını kategorize etmeyi öğrenen özdenetimli bir sistem. Ham, etiketsiz deneyimden, kategorilerin ne olduğu söylenmeden öğreniyor. Aynı satıya sürekli dönüyorum: etiketler bir kısayoldur, yapı önemli.

Bu hafta o fikrin diğer yarısını, gerçekte çalıştığım alanında yaptım. Kişisel bir AI asistanı — Aura — çalıştırıyorum; bu asistan belleği yönetir, görevleri yönlendirir ve oturumlar arasında gerçekten faydalı olmaya çalışır. Bir model filosu üzerinde çalışır: üretim kodlaması için Claude, araştırma ve tasarım için birkaç bulut modeli ve hiçbir şey tüketen olmayan bir yerel model. Sorun NeMoCo'nun çözdüğüyle aynı, sadece tersine çevrilmiş. NeMoCo ham veriden yapı öğrenir. Ben yapıyı — her birinin bir işi olan ajanların bir listesi — vardım ve sisteme hangi modelin hangi görevi yapacağını canlı olarak, bütçe tükendiğinde karar vermesini istedim.

Bu hafta oluşturduğum karar motoru budur. Üç parçadan oluşur: bir sınıflandırıcı bir görevi okur ve ne tür iş olduğunu belirler, bir yönlendirici bunu canlı kota verilen en iyi model zincirine eşler ve bir kontrol paneli tüm sistemi canlı, nabz atan bir beyin gibi gösterir. Bu teknik bir açıklama — her parça ne iş yapar, niçin bu şekilde şekillenir ve tasarımı zorlayan hatalar.

Sorun: Bir Ajan Listesi Bir Yönlendirici Değil

Basit kurulum statik bir tablodur: bu ajan bu modeli çalıştırır, o ajan o modeli çalıştırır. Basittir ve üç nedenle yanlıştır.

İlk olarak, bütçe tükenecek. Claude haftalık bir kota ile çalışır ve bir yuvarlanan oturum kotası da vardır; bunlar bağımsız olarak değişir. Bir gün haftalık kota %15 iken oturum kotası %71 idi — ve eski yönlendirici sadece haftalık sayıyı izlediği için "Claude mevcut, mod NORMAL" bildirdi ve kodlama işini doğrudan bir duvara yönlendirdi. CLI üç saat boyunca her çağrıyı "Oturum sınırınızı aştınız" ile reddetti, während dashboard her şeyin iyi olduğunu söylemeye devam etti. Gerçekten bağlayıcı sınırı okumayan bir yönlendirici, bir yönlendirici değildir, sadece bir tahmindtir.

İkinci olarak, kalite tek bir sayı değildir. İyi kod yazan bir model, dolayısıyla uzun bağlamlı veri alımı veya UI üretiminde iyi değildir. Her modeli tek bir "kalite" puanıyla değerlendirmek faydasızdır — hangi modelin kodçuyu liderlik etmesi gerektiğini ve hangi modelin araştırmacıyı liderlik etmesi gerektiğini söyleyemez. Her ajanın kendi ekseni üzerinden puanlanması gerekir.

Üçüncü olarak, denetleyici yazarın kör noktalarını devralmamalı. Yazarlık ve denetleme rolünü bilinçli olarak eşliyorum — yazar kod yazar, danışman inceleme yapar — vemera farklı farklı model aileleri üzerinde çalışmalıdır; aksi takdirde denetleyici sadece aynı hataları tekrar yapar. Yönlendiricinin ilk sürümü, latency ile empateyi kırmak nedeniyle her iki başı da aynı modele yöneldi ve bu tüm tasarımı geçersiz kıldı.

Statik tablo kaldırılmalıydı. Yerine, canlı durumu okuyan ve her görev için en iyi model zincirini hesaplayan bir karar motoru geldi.

Sınıflandırıcı: Görevi Okuma

İlk parça, bir görevi okuyan ve ne tür iş olduğunu belirleyen bir sınıflandırıcıdır. Giriş şu cümledir: "ödeme uç noktası dağıtımdan beri üretimde 500 döndürüyor" — ve çıktı bir karar: tür, seviye ve öncelik.

İlk versiyon sadece regex'ten oluşuyordu. Çalışıyordu ve regex'in her zaman olduğu şekilde kırılgan idi. "Log parser" ops'a yanlış yönlendirildi (kod bileşeni, bir ops görevi değil). "Checkout is charging customers twice" ifadesi hiçbir hata kelimesi içermedi, bu yüzden unknown olarak sınıflandırıldı ve ana ajağa akıp gitti — bir üretim olayı sırasında. "Throwing 500s" ifadesi, sondaki 's' kelime sınırını bozduğu için durum kodu deseniyle eşleşmedi. Bunların her biri gerçek bir yanlış yönlendirmeydi ve ben bunları tek tek düzeltim; her düzeltme yeni bir regex kuralı oldu. Bu, yanlış aletiyle mücadele ettiğinizin işareti.

Şimdi sınıflandırıcı önce ucuz bir model deniyor — `deepseek-v4-flash:cloud` görevi okuyor ve JSON karar döndürüyor. Model kullanılamıyorsa, regex sınıflandırıcıya geri dönüyor. Model ana yol; regex güvenlik ağı. Bu, NeMoCo'dan dersin aynısı: her durumu elle etiketlemeyin, yapıyı öğrenin ve aktarım sağlayın.

Sınıflandırıcı, aramadan canlı kota bilgisini de alır, böylece yönlendiriciden sapmaz. Arama, kota durumunu okur ve sınıflandırıcıya iletir; sınıflandırıcı kota dosyasını doğrudan okur. Kural şu: üretim işi bütçe ne kadar sıkı olursa olsun zayıf bir modele indirgenemez. Bir üretim olayı, Claude tükense bile `prod` olarak sınıflandırılır — sessizce hafif bir ajana yönlendirilip tamamlandı olarak bildirilmez. Bloklar ve devretme protokolü tetiklenir. Kalite riski kota riskinden daha kötüdür ve tasarım asla ikisini karıştırmaz.

Yönlendirici: Karar Motoru

Yönlendirici, gerçek düşüncenin yaşandığı yerdir. Sınıflandırıcının kararı ve canlı sağlayıcı durumunu alır ve her görev seviyesi için bir model zinciri hesaplar.

Çekirdek eksen tabanlı puanlamadır. Her ajan, kendi beceri ekseninde puanlanır — kodcu kod üretimi, tanıyıcı hata ayıklama mantığı, araştırıcı gerçek getirme, yaratıcı UI üretimi, ops araç çağrısı, main orkestrasyon. Bir modelin etkili kalitesi, sentezli benchmark puanı carpı gerçek oturumlarda gözlemlenen güvenilirliğidir. Benchmarkta iyi ama üretimde hata yapan model düşürülür. Bu, "gerçek performanstan öğren" katmanıdır: benchmark sentezli yetenektir, güvenilirlik verisi aslında dayanan şeydir.

Puanlama formülü Bander'ın ağırlık matrisidir: `score = quality·Wq − cost·Wc − latency·Wl + claudeBonus`. Maliyet göreceli 0..1 seviyesidir, gerçek dolar değildir — çünkü ollama bulutu çağrı başına ücret yoktur ve Claude bir aboneliktir, bu yüzden bunları karşılıklı olarak dürüstçe min-max ölçekleyemezsiniz. Ayrıca katı bir kalite tabanı vardır: kendi ekseninde bu tabanın altında puanlayan aday, sıralamadan önce elenir; böylece ucuz-ama-zayıf bir model yalnızca fiyatla kazanamaz.

Yönlendirici ayrıca dekorelasyon problemi'ni de yönetir — kodcu ve tanıyıcı başlıklarını farklı model ailelerine zorlayarak, deneyçinin yazarın kör noktalarını devralmasını önler. Ayrıca subajan ekonomisi'ni yönetir: bir subajan, ebeveyninin işinin bir dilimini çalıştırır ve bir devretme en fazla 20× kadar dağılebilir; bu yüzden subajan zincirleri maliyeti herhangi bir duruk seviyeden çok daha ağır şekilde ağırlandırır. Bu, Claude'u sert bir dışlama olmadan subajan zincirlerinden tutar; 0,45 maliyet ağırlığında simplesmente kazanamaz.

Kontrol Paneli: Robotik Beyin

Kontrol paneli, metinle yakalaması en zor olan bölümdür. Tüm sistemi canlı bir beyin olarak gösterir.

Bir 3D beyin görünümü mevcut; her ajanın bir bölge olduğu WebGL ile render edilmiş sinir yapısıdır ve bir bölgeyi döndürüp, yakınlaştırıp, tıklayarak model zincirine, istatistiklerine ve geçersiz kılma seçiciye inebilirsiniz. Izgarada bir "elektronik beyin merkezi parçası" bulunur: ajaların iş akışı düğümleri olduğu, animasyonlu sinyal izleriyle bağlanan bir SVG devre kartıdır ve tüm yapı canlı aktiviteye göre daha hızlı veya daha yavaş pulüs eder.

Beyin sadece süsleme değil. Görünür hale getirilmiş telemetridir. Kontrol paneli, anketler arasındaki oturum dosyası büyümesinden ajan başına aktiviteyi türetir — bir ajanın gerçekte çalıştığı en güçlü sinyal — ve bu aktiviti, devre izleri boyunca yolanan sinyal pulse'ları olarak gösterir. Sistem boşta olduğunda beyin yavaşlar, meşgul olduğunda izler hızlanır. Sen görebilir beyin düşünüyor.

Bir de seviye seçici vardır — 6 düğme (Seviye 1–4, bir "Yerel" koru ve bir "Temel" sıfırlama) — bu düğmeler tüm filosoyu belirli bir kalite seviyesine zorlar. Ayrıca ajan başına model geçersiz kılmaları, bir dosyaya kalıcı olarak saklanır; bu sayede canlı yönlendiricinin seçimi istediğiniz değilse, belirli bir modele belirli bir ajanı sabitleyebilirsiniz. Kontrol paneli, beyin için kontrol yüzeydir.

Onu Şekillendiren Başarısızlıklar

Burada her tasarım kararı, gerçek bir başarısızlığın izidir ve bu yüzden listelenmeye değerlidir; çünkü bu, haftanın gerçek içeriğidir:

  • Oturum sınırı kör noktası. Router, sadece haftalık kotaya göre kapıyı tuttu ve gerçekten bağlayıcı olan oturum kotasını görmezden geldi. Düzeltme: ikisini de okuyun ve daha sıkı olanı kazanan olsun.
  • Benchmark zarf hatası. rev1 benchmarkı, düz bir dizi yerine `{value:[...]}` zarfında dosya yazdı, bu yüzden her satır `.model` alanını eksikti ve router sessizce boş bir harita aldı. Benchmark verisi asla routera ulaşmadı ve hiçbir şey şikayet etmedi. Düzeltme: eski dosyaların hâlâ yüklenebilmesi için legacy şekli aç.
  • Eksen-rubrik ters çevrimi. Eksen rubriği, üretim kodunu asla incelememesi gereken bir modelin altında olan hata ayıklama mantığı üzerinde opus 0.50 puan verdi. Bunun prod katmanlarını yeniden sıralamasına izin vermek, değerlendiriciyi yazar yapardı. Düzeltme: prod katmanları rubrik tarafından değil yeniden sıralanır. Bir anahtar kelime rubriği, belirtilen tasarım kararını overturn etmek için yeterli güçte bir kanıt değildir.
  • Bağlam-pencere ölüm espirali. Orkestrasyon katmanın başına 131k‑bağlam modeli yerleştirildiğinde pencere taştı ve sıkıştırma ölüm espirali tetiklendi. Düzeltme: her orkestrasyon adayı, bağlam bütçesi plus rezervin rahatça üstünde bir pencereye sahip olmalı.
  • Güvenilirlik no-op. Oturum günlükleri sadece model adını saklarken adaylar sağlayıcı öneki taşır, bu yüzden güvenilirlik katmanı sessizce hiçbir şeyle eşleşmez. Düzeltme: eşleştirmeden önce öneki kaldırın.

Çıkardığım Dersler

The NeMoCo postu şöyle bitti: etiketler bir kısayoldur, yapı önemli olan şeydir ve yapıyı ham deneyimden öğrenebilirsiniz. Bu hafta bunun mühendislik versiyonuydu. Her görev için elle kural yazmadım — görevi okuyan bir sınıflandırıcı ve canlı durumu okuyan bir yönlendirici oluşturdum, ve çalışmanın yapısının aracı belirlemesine izin verdim. Regex sınıflandırıcı "etiketler" yaklaşımlıydı ve etiketlerin her zaman kırdığı yerde, yani tahmin etmediğiniz durumlarda, kenarlarda kırıldı. Model destekli sınıflandırıcı "yapı" yaklaşımlıdır: deseni öğren, aktar, zarif bir şekilde geri dön.

Beyin kontrol panosu, onu gerçek hissettiren bölümdür. Ajanlar gerçekten çalıştığında, devre izleri boyunca sinyal pulslarını hızla geçmesini izleyebildiğinizde ve sistem boşta kaldığında tamamının bir yürüyüşe indiğini gördüğünüzde, artık bir yapılandırma dosyasına bakmıyorsunuz. Bir nabzı olan sisteme bakıyorsunuz.

Yönlendirici, ruhu açısından açık kaynaklıdır — çalışma alanımda bulunan betiklerin bir setidir: `classify-job.mjs`, `model-router-core.ps1`, `quota-dashboard.mjs` — ve Claude, bulut ollama modelleri ve hiçbir şey tüketen olmayan bir yerel model karışımıyla çalışır. Bu, kilitli bir kurumsal sistem değildir. Kendi kendinize yapabileceğiniz bir karar mekanizmasıdır ve onu şekillendiren hatalar, faydalı olan kısımdır.

Bu ders. Bir roster bir listedir. Bir yönlendirici bir karardır. Ve bir beyin, karar canlı olarak verildiğinde, bütçe tükendiğinde ve sistem kendi hatalarından öğrenerek elde ettiğiniz şeydir.

#AI#Agents#OpenClaw#Infrastructure#ModelRouting