Ana içeriğe geç

Kill Switch Tek Bir Süreci Varsayar: Agent Filoları için Kapatma Semantiği

Kill switch'ler ve containment vaatleri, her agent için tek bir kontrol edilebilir süreç varsayar. Konuşlandırılmış bir filo; ebeveynler, çocuklar, tool oturumları ve lease'lerden oluşan bir graftır — ve bir anahtara değil, bir sonlandırma protokolüne ihtiyaç duyar.

Gözenekli volkanik kaya yüzeyinin dokulu desenlerini gösteren makro çekim

Tek süreç varsayımı

Agent kapatılması üzerine yapılan kamusal tartışmaların çoğu dile getirilmemiş bir öncül taşır: bir agent tek bir süreçtir ve o sürecin bir kapatma anahtarı vardır. Güvenlik tarafındaki versiyon, yeterince yetenekli bir agent'ın kendi kapatılmasına izin verip vermeyeceğini sorar. Satıcı tarafındaki versiyon ise bir containment sınırı, bir policy gate, bir düğme vaat eder. Her ikisi de tek bir kontrol edilebilir birim hakkında argümanlardır.

Bu birim üretimde mevcut değildir. Konuşlandırılmış bir agent bir graftaki düğümdür. Bir ebeveyn agent çocuklar üretir — retrieval, kod çalıştırma, inceleme, eskalasyon için subagent'lar. Her çocuk tool oturumları tutabilir: açık bir shell, kimliği doğrulanmış bir API client, bir tarayıcı bağlamı, bir veritabanı transaction'ı. Bu oturumlar lease'ler tutar: kısa ömürlü kimlik bilgileri, dosya kilitleri, kuyruk rezervasyonları, rate-limit token'ları. Graf dinamiktir; çocuklar çalışma zamanında oluşturulur ve onları oluşturan isteği aşabilir.

O grafın kökünü sonlandırmak grafı sonlandırmaz. Bir süreci sonlandırır ve altındaki her şeyi ayırır. Çocuklar kendi zamanlamalarıyla ve daha da kritik olarak, köke değil kendilerine verilmiş kimlik bilgileriyle çalışmaya devam eder. Ebeveyninin delegasyonu aracılığıyla devraldığı bir bulut token'ı tutan bir çocuk, ebeveyn gittikten sonra da eylemde bulunmaya devam edebilir. Bu, dormant-agent bulgusunun operasyonel terimlerle yeniden ifadesidir: tehlike, ölmeyi reddeden bir süreç değil, delegasyon zincirini kimse modellemediği için iptal etmeyi kimsenin düşünmediği bir kimlik bilgisidir.

Bir sonlandırma protokolünün gerçekten ihtiyaç duyduğu şey

Bir filonun en az üç özelliğe sahip bir protokole ihtiyacı vardır. Bunlar bağımsızdır ve herhangi birinin atlanması, bir kill switch'in ulaşamayacağı bir hata modu bırakır.

Bir drain durumu. Sonlandırma ikili değildir. running ile terminated arasında, yeni tool çağrılarını reddederken uçuştaki çağrıların deterministik olarak çözülmesine veya iptal edilmesine izin veren bir durum olmalıdır. Bu olmadan, ani bir duruş tool çağrılarını bilinmeyen bir durumda bırakır: gönderilmiş ama onaylanmamış bir ödeme, yarı yazılmış bir dosya, gönderilmiş ama onaylanmamış bir mesaj. Drain durumu, kararı soketin kapanması durumunda transport'un ne yapacağına bırakmak yerine, uçuştaki her çağrı için bir karar vermeye zorlar — sonucu bekle ya da iptal et ve iptali kaydet.

Wind turbine blades against a clear blue sky, stock photo

Minimal bir durum makinesi şöyle görünür:

requested -> draining -> reconciling -> terminated
                    \-> aborting   -> reconciling -> terminated

draining yeni tool çağrılarını reddeder ve bekleyenlerin sınırlı bir pencere içinde tamamlanmasına izin verir. aborting onları iptal eder ve her iptalin tool katmanı tarafından onaylanmasını gerektirir. reconciling aşağıda açıklanan kaydı yazar. Ancak bundan sonra terminated durumuna ulaşılabilir. requested durumundan geçiş, agent'ın kendisi tarafından değil, workload dışındaki bir otorite tarafından başlatılır.

Yayılım kuralları. Bir çocuğun lease'i, yalnızca onu veren bileşen tarafından değil, delegasyon zincirindeki herhangi bir ata tarafından iptal edilebilir olmalıdır. Bir torunun kimlik bilgisi yalnızca doğrudan ebeveyni tarafından iptal edilebiliyorsa ve doğrudan ebeveyn başarısız olan şeyse, kimlik bilgisi fiilen kalıcı hale gelir. İptal yetkisi zincir boyunca aşağı akmalı ve kökten ya da kök adına hareket eden bir control plane'den kullanılabilmelidir. Bu bir agent özelliği değil, bir capability-system özelliğidir: her grant, onu geri çekmeye yetkili principal'lar kümesini taşır ve bu küme delege eden ataları içerir.

Çıkıştan önce yazılan bir reconciliation kaydı. Post-mortem, agent'ın kendi loglarına bağlı olmamalıdır. Sonlandırılan bir agent — özellikle kötü davranan biri — kendi son eylemlerinin en güvenilmez anlatıcısıdır. Reconciliation kaydı, supervisor veya control plane tarafından dışarıdan yazılır ve şunları belirtir: hangi tool çağrıları uçuştaydı, her biri nasıl çözüldü, hangi lease'ler iptal edildi ve hangileri süresi doldu, hangi çocukların sonlandırıldığı doğrulandı ve hangileri hesaba katılmadı. Hesaba katılmayan çocuklar önemli alandır. Onları sıralayamayan bir protokol, filonun kapalı olduğunu iddia edemez.

Bunlar sıradan dağıtık sistem yükümlülükleridir. Gösterişsizdirler ve bir kontrol ile bir jest arasındaki farktırlar.

Shutdown-rules çerçevesinin durduğu yer

Close-up of a disassembled hard drive showing its internal platter and components

Agent'ların kendi kapatma kurallarını yazması üzerine son çalışmalar gerçek bir katkıdır ve neye katkıda bulunduğu konusunda kesin olmakta fayda var. Kendi yazdığı bir shutdown policy'si bir policy katmanıdır: bir agent'ın ne zaman durması gerektiğini ifade etmesini sağlar ve bu ifadeyi denetlenebilir kılar. Bu faydalıdır, çünkü örtük bir davranışı incelenebilir ve test edilebilir açık bir durum makinesine dönüştürür.

Sınır, bir policy katmanının iptal için transport sağlamamasıdır. "Bu agent, X koşulu sağlandığında sonlanmalıdır" diyen bir kural bir istektir. Ancak harici bir otoritenin geçişi zorlayabileceği bir yol olduğunda bir kontrol haline gelir — lease'leri iptal et, oturumları drain et, çocukların gittiğini doğrula. İptal yolu olmayan policy bir istektir, kontrol değil. Agent buna uyabilir; filo uyacağını varsayamaz ve uyduğunu doğrulayamaz.

Faydalı hamle, açık durum makinesini agent'tan çıkarıp altyapıya taşımaktır. Agent'ın kendi tanımladığı kapatma koşulları, gerçek geçişleri sahiplenen bir supervisor için tek bir girdi haline gelir. Agent önerir; control plane karar verir. Bu ayrım, durum makinesini herhangi bir modelin davranışından bağımsız olarak test edilebilir kılan şeydir.

Tasarım kuralı: görev grafından önce sonlandırma

Sonlandırma durum makinesine agent'ın görev grafından önce karar verin. Bu, çoğu filonun inşa edilme biçiminin tersidir — önce graf tasarlanır, yetenekler gerektikçe verilir ve kapatma bir timeout olarak sonradan eklenir. Sonradan ekleme başarısız olur çünkü grafın şekli sonlandırmanın ne yapması gerektiğini belirler ve graf var olduğunda delegasyon zincirleri zaten yük taşımaktadır.

Drain edilemeyen bir filo da güvenle yükseltilemez. Bir filoyu temiz bir şekilde durduran protokol, bir model sürümünü değiştirmenize, bir kimlik bilgisini döndürmenize veya eski nesilde yarım kalmış iş bırakmadan yeni bir tool şeması sunmanıza izin veren protokoldür. Drain, reconcile, restart yükseltme yoludur; kapatma bir kill switch ise yükseltme bir kumardır.

Bu yüzden her yetenek grant'ını workload dışında tutulan bir iptal tutamacıyla eşleştirin. Tutamaç control plane'de yaşar, delegasyon zincirine göre indekslenir ve herhangi bir ata tarafından kullanılabilir. Agent kendi kapatma anahtarını asla tutmaz, çünkü kapatılan şeyin tuttuğu bir kapatma anahtarı bir öneridir.

Dürüst ödünleşim: bu, latency ve karmaşıklık maliyeti getirir. Bir drain penceresi, sonlandırmanın zaman alması demektir ve birinin sınırı seçmesi gerekir. Reconciliation kayıtları, işletilecek başka bir store ve taşınacak başka bir şemadır. Ata tarafından iptal edilebilir lease'ler, çoğu agent framework'ünün birlikte sunmadığı bir capability modeli gerektirir, bu yüzden ekipler bunu kendileri inşa edecek ya da daha zayıf bir garanti kabul edecektir. Filo kontrol edilebilir olacaksa bunların hiçbiri kaçınılmaz değildir. Alternatif, bir süreci öldüren ve grafın geri kalanını kimlik bilgileriyle başıboş bırakan bir kill switch'tir — ki bu containment değil, yalnızca görünüşüdür.

İlgili okumalar

Bunun yanıtladığı sorular

Why is a kill switch insufficient for a multi-agent fleet?

A kill switch terminates one process. A deployed fleet is a graph of parent agents, spawned children, tool sessions and leases; terminating the root leaves children running with credentials issued through the delegation chain. Containment requires a termination protocol that drains sessions, propagates revocation to descendants and records what was left unaccounted for.

What is a drain state in agent shutdown?

A drain state sits between running and terminated. It refuses new tool calls while allowing in-flight calls to resolve or abort deterministically, so no tool call is left in an unknown state when the process exits.

Who should be able to revoke a child agent's lease?

Any ancestor in the delegation chain, not only the component that issued the lease. If revocation depends solely on the direct parent and that parent has failed, the credential becomes effectively permanent.

Why write a reconciliation record outside the agent?

An agent being terminated is the least reliable narrator of its own final actions. A record written by the supervisor or control plane captures in-flight calls, revocation outcomes and unaccounted-for children independently of the agent's own logs.