Kendi sunucunda çalışan kontrol düzlemi
Yapay zekâ iş gücün. Tek rota, tek karar, tek kayıt.
Havuzları sen tutarsın: hesaplar, modeller, sunucular, projeler, roller. İşi hangisinin yürüteceğine Kimene karar verir, kararı gerekçesiyle yazar ve işi gerçek makinelerde gerçek CLI’larla çalıştırır.
Havuzlar
Hiçbir varlık bir diğerinin sahibi değildir.
Projeye sabitlenmiş hesap yok, hesaba sabitlenmiş model yok. Eşleşme yürütme anında olur, o tek koşu için geçerli bir rota olarak yazılır ve iş bitince çözülür.
Bir proje tercih, izin ve rota kipi söyler. Yönlendirici bunları canlı kapasite, sağlık ve geçmişle birleştirir. Ortaya çıkan bağ yapılandırma değil, kayıttır.
Kimene kendi kotasını icat etmez.
Sağlayıcı kapasitesi, eşzamanlılık politikası, kaynak kiralaması ve öncelik dört ayrı şeydir. Birbirine karıştırılan bu dördü, “kota” diye tek kelimeye sıkıştırıldığında operatör hangi sınıra çarptığını bir daha asla bilemez.
kanıtgo test ./internal/domain — alanda hiçbir kota alanı yok
Karar kaydı
“Yapay zekâ öyle seçti” bir açıklama değildir.
Önce sert uygunluk elemesi, sonra ağırlıklı puanlama. Seçilen aday kadar elenenler de gerekçeleriyle birlikte değiştirilemez bir karara yazılır.
bileşenler
| Neden bu hesap? | ağırlık |
|---|---|
| verified_model | 0.25 |
| provider_capacity | 0.25 |
| capability_match | 0.20 |
| session_continuity | 0.15 |
| host_repository_locality | 0.10 |
| user_preference | 0.05 |
cezalar
| rate_limit_proximity | −0.12 |
|---|---|
| unknown_capacity | −0.08 |
| stale_auth | −0.05 |
| model_lifecycle | −0.05 |
toplam0.86 − 0.08 = 0.78
seçilen
- claude-ops-1srv-ist-10.78
- claude-ops-2srv-fra-10.64
- codex-ops-1srv-ist-10.61
- claude-ops-2srv-ist-10.55
- codex-researchsrv-fra-10.41
elenen
- claude-ops-2ACCOUNT_AT_CONCURRENCY_LIMITeşzamanlılık sınırında
- codex-researchPROVIDER_CLI_NOT_INSTALLEDCLI kurulu değil
- llm-yerelMODEL_UNAVAILABLE_FOR_ACCOUNTmodel bu hesapta yok
- claude-ops-1REPOSITORY_NOT_AVAILABLE_ON_HOSTrepo host’ta yok
- claude-arsivACCOUNT_DISABLEDhesap kapalı
- codex-ops-1HOST_OFFLINEhost çevrimdışı
- llm-yerelACCOUNT_NOT_REACHABLE_FROM_HOSTbu host’tan erişilemez
Kayıt; seçilen rotayı, değerlendirilen ve elenen adayları, her eleme gerekçesini, puanın her bileşenini, danışılan kapasite anlık görüntülerini ve varsa operatörün geçersiz kılmasını taşır.
toplam = Σ bileşen − Σ ceza. Üçüncü bir yol yok.
Rota simülatörü aynı puanlamayı varsayımsal girdilerle yeniden oynatır: kira almadan, oturum başlatmadan. “Şu sunucu düşseydi ne olurdu” sorusunun cevabı tahmin değil, hesaptır.
kanıtgo test ./internal/routing — kendini açıklayamayan bir kararı reddeder
Yürütme
İş, gerçek makinelerde, gerçek CLI’larda çalışır.
Kontrol düzlemi hiçbir sağlayıcı CLI’ına doğrudan konuşmaz. Her oturum, o makinede yaşayan düğüm ajanının başlattığı bir tmux oturumunun içindedir.
Bu dolaylılık, tarayıcı yenilemesini, sunucu dağıtımını ve kopan bir SSH bağlantısını süren işe zararsız kılan şeydir.
Yeniden bağlandığında ekran baştan çizilmez; bıraktığın imleçten devam eder. Gönderdiğin her tuş tam olarak bir kez uygulanır — ne yutulur, ne iki kez yazılır.
kanıtmake test-live-terminal — çalışan bir döngü, yöneticisi tamamen kapatılınca da yaşıyor
Kanıt
“Bitti” ajanın söylediği şey değildir.
Tamamlandı durumuna yalnızca inceleme ya da onay bekliyor üzerinden geçilir; bunu tek bir geçiş tablosu zorlar. API’de bir görev durumunu doğrudan yazacak hiçbir yol yoktur.
- diffsha256:0f0f7c21değiştirilemez
- test118 passed · 0 faileddeğiştirilemez
- buildsha256:0f0fa93edeğiştirilemez
- lintkomut tanımlı değil
Her görev türü kendi kanıt sözleşmesini taşır. Bir kod görevi fark, test, lint ve derleme raporu ile bir inceleyici kararı ister; bir araştırma görevi erişim tarihli kaynaklar ister.
Kimene senin adına test komutu icat etmez.
Tanımlamadığın kapı kapalı kalır ve neden kapalı olduğunu söyler. Her rapor onu üreten komutu taşır; artefaktlar değiştirilemez, içerik adresli ve özetiyle doğrulanır.
kanıtgo test ./internal/domain ./internal/artifact — tamamlandı yalnızca inceleme ya da onay üzerinden erişilebilir
Onay
İnsanın imzalaması gereken şeyi insan imzalar.
Risk seviyesi koddan gelir, istemden değil. Yüksek riskli işler bir kişiye gider ve operatör isterse bu onay ikinci faktör ister.
- rule
- schema_change_requires_human
- touches
- mercury-api · 1 table · 0 rows destroyed
- on refusal
- task → BLOCKED · session parked at boundary
- requested by
- 01JQ8F3K7P · codex-ops-1
Kimse izlemiyorken uygulanabilecek eylemler işi durduranlar ve bir kişiyi çağıranlardır. İş başlatan ya da abonelik harcayan hiçbir eylem, bir insan olmadan uygulanmaz.
gözetimsiz uygulanabilir
- pause_mission
- stop_session
- raise_alert
- request_human
bir kişiyi bekler
- start_session
- route_task
- approve_task
- switch_account
- merge_branch
Onay kartı ne istendiğini, hangi kuralın tetiklendiğini, hangi kaynakların etkileneceğini ve reddedilirse ne olacağını söyler. Karar, kim verdiğiyle birlikte kaydedilir.
kanıtgo test ./internal/approval — kendi işini onaylamak yapısal olarak imkânsız
Süreklilik
Geç kalmış bir tutucu, etki uygulayamaz.
Her kiralama artan bir çit jetonu taşır. Korunan kaynak gördüğü en yüksek jetonu saklar ve daha düşüğünü reddeder.
- fence=17srv-ist-1granted
- fence=17srv-ist-1renewed
- fence=17srv-ist-1expired
- fence=18srv-fra-1granted
- fence=17srv-ist-1refusedreddedildi · 17 < 18
Geçiş yalnızca güvenli sınırda olur.
Tur bitti, kontrol noktası yazıldı, insan bekleniyor ya da doğrulanmış bir hız sınırı. Araç çağrısının, yazmanın, göçün ya da dağıtımın ortasında asla.
- TURN_COMPLETED
- CHECKPOINT_CREATED
- TASK_STEP_COMPLETED
- WAITING_FOR_HUMAN
- RATE_LIMIT_CONFIRMED
- AUTH_FAILURE_CONFIRMED
- MODEL_UNAVAILABLE_CONFIRMED
- RECOVERABLE_SESSION_FAILURE
- araç çağrısının ortasında
- dosya yazmanın ortasında
- göçün ortasında
- dağıtımın ortasında
- yapıştırmanın ortasında
Kiralar veri kaybedebileceği açıkça kabul edilen bir yerde yaşıyor. Bu ikilinin güvenli olmasının tek sebebi çit: Kimene tek bir önbelleğin veremeyeceği bir garantiyi iddia etmez, daha zayıf ve doğru olanı iddia eder.
Geçici olan, kalıcı değildir.
İki saniyelik bir kesinti sağlayıcı arızası sayılmaz; yerinde yeniden denenir. Yalnızca tiplenmiş ve doğrulanmış bir hız sınırı, kimlik hatası ya da erişilemeyen sunucu rotayı değiştirir.
kanıtmake test-integration-live — 32 yönlü çekişmede tam olarak bir kazanan; ölü tutucunun yenilemesi reddedilir
Filo
Ölçülmedi, sıfır değildir.
Ölçülmemiş kapasitenin kendi rengi ve kendi deseni var. Kimene onu asla bir sayı gibi çizmez, çünkü boş bir bar ile sıfır bir bar aynı görünüp zıt şeyler söyler.
Bağımlılık düştüğünde ne olacağı yazılı.
Bu tablonun hiçbir satırında “eski veriyi taze gibi göster” yazmaz.
| mongodb | Yazma durur; okuma taze gibi önbellekten sunulmaz; açıkça erişilemez durumu verilir. |
|---|---|
| rabbitmq | Arayüz ve durum okunabilir; yeni eşzamansız iş yerel giden kutusunda birikir; sağlık bozulmuş görünür. |
| redis | Dağıtık işlemler kısıtlanır; kritik kiralar kapalı düşer; açık uyarı verilir. |
| mqtt | Düğüm kalp atışı kontrol düzlemi WebSocket’ine geri düşer; telemetri bozulmuş etiketlenir. |
Aynı ret puanlamada da geçerli: bilinmeyen kapasite iyimser bir 1,0 değildir. Kayıt, ölçüm ve tahmin birbirinden ayrı tutulur.
kanıtgo test ./internal/domain — kapasite bir işaretçi; bilinmiyor temsil edilebilir ve sıfır gibi okunamaz
Güvenlik
Kontrol düzlemi hiçbir kimlik bilgisi tutmaz.
Kimlikler, sahibi olan makinede kalır; veritabanı yalnızca yolu ve referansı bilir. Veritabanını ele geçirmek hiçbir sağlayıcı kimliği vermez.
- Kayıt sonrası her bayt karşılıklı TLS ile
- Redaksiyon atlatılamaz
- Tarayıcı hiçbir sunucuya doğrudan bağlanmaz
Sağlayıcı yalıtımı işlem ortamı üzerinden yapılır, komut satırı üzerinden değil: süreç listesi herkese açıktır, ortam değildir. Düğümler tek kullanımlık bir kayıt jetonundan sonra karşılıklı TLS ile konuşur.
İç ağda olmak bir güvenlik önlemi değildir.
Redaksiyon çağrı yerinde değil, günlük işleyicisinin içindedir — unutulabileceği bir yerde durmaz. Terminal çıktısı hiçbir zaman ham HTML olarak basılmaz ve tarayıcı hiçbir makineye doğrudan bağlanmaz.
kanıtgo test ./internal/security/redact — redaksiyon günlük işleyicisinde
Kurulum
Dört bağımlılık, dört binary, bir doctor.
Ubuntu, Go ve Node. Veritabanı, kuyruk, önbellek ve bir mesaj aracısı. doctor hepsini hiçbir şeyi bozmadan doğrular ve hangi kipte çalıştığını söyler.
İlk kurulumda bir adım seni bekler: bir hesap ile model eşleşmesi doğrulanana kadar hiçbir çift yönlendirilebilir değildir. Bu, doğrulanmamış bir eşleşmeye iş göndermemek için bilerek böyledir.
Bilinen eksikler.
Her belgede bir “bilinen eksikler” bölümü var. Dürüst kısım orası; bir yeteneğe güvenmeden önce onu oku.
- Zamanlanmış yedek yok — komutlar var, onları çalıştıran bir zamanlayıcı yok.
- Tek komutla düğüm kurulumu yok; ikili elle kopyalanıp kaydediliyor.
- Sunucu kurulum betiği TLS ve ters vekil için hiçbir şey yapmıyor; ikisi de elle.
- Saklama politikası tohumlanıyor ama hiçbir şey onu uygulamıyor.
- Geçici bir hatayla düşen işleyici yeniden denenmiyor, ölü mektuba gidiyor.
- Terminal katmanı henüz canlı bir tmux’a karşı çalıştırılmadı.
Kurtarma yordamı çalışma kipine göre değişir, o yüzden doctor kipi de söyler. Konteyner yok, orkestratör yok, çalıştırmadan önce her hedefe kurulması gereken bir çalışma zamanı yok.
kanıtmake doctor — dört bağımlılığı da tahribatsız doğrular
Kendi sunucunda, kendi hesaplarınla.
Kimene senin altyapında çalışır ve senin sağlayıcı hesaplarını yönetir. Kimlik bilgisi paylaşan bir servis değildir, çok kiracılı bir vekil değildir, sağlayıcı sınırlarını dolaşmanın bir yolu değildir.