Ana içeriğe geç

Dayanıklı Yürütme Yeterli Değil: Restate Tarzı Checkpointing ve Kaybettiği Niyet

Checkpointing durumu korur, niyeti değil. Devam ettirilen bir agent çalışması, orijinal yetkisinin dışında hareket ederken sorunsuz tamamlanabilir. Dayanıklı yürütme, kayıtlı karar bağlamına ihtiyaç duyar.

A checklist with a red checkmark symbolizing a completed task on a pastel blue background.

Dayanıklı Yürütme Aslında Neyi Garanti Eder

Dayanıklı yürütme motorları — Restate, Temporal ve benzeri sistemler — gerçek ve zor bir problemi çözer: bir iş akışının süreç ölümü, ağ bölünmeleri ve dağıtımlar boyunca hayatta kalmasını sağlarlar. Garantiler kesindir ve açıkça belirtilmeye değerdir.

  • Tam-bir-kez adım yürütme. Tamamlanmış bir adım, yeniden oynatmada yeniden yürütülmez. Sonucu dayanıklı bir günlükten okunur.
  • Çökme sonrası devam edebilme. Bir worker çalışma ortasında ölebilir; bir diğeri günlüğü alıp son taahhüt edilmiş sınırdan devam eder.
  • Tamamlanan işin deterministik yeniden oynatımı. Aynı günlük verildiğinde, çalışma zamanı aynı yan etki dizisini yeniden oluşturur.

Bunlar çalışma zamanının özellikleridir. Agent'ın muhakemesi hakkında hiçbir şey söylemezler. Sorunsuz devam eden bir iş akışı, çalışma zamanının bir çağrı grafiğini yeniden oluşturabildiğini kanıtlamıştır — sonraki eylemin hâlâ istenip istenmediğini, hâlâ izin verilip verilmediğini veya çalışmayı başlatan hedefle hâlâ tutarlı olup olmadığını değil.

Karışıklık kolayca yapılır çünkü kelime dağarcığı örtüşür. "Dayanıklı" kulağa "güvenilir" gibi gelir. "Tam-bir-kez" kulağa "doğru" gibi gelir. Geleneksel bir iş akışında — bir kartı çek, bir e-posta gönder, bir satırı güncelle — niyet yazım zamanında sabitlenir ve grafiğin kendisinde kodlanır. Grafik niyetin ta kendisidir. Bir agent çalışmasında ise grafik, çalışma zamanında bir modelin bir hedef üzerindeki muhakemesinden üretilir. Günlük, agent'ın ne yaptığını kaydeder, bunu yapmasına neden izin verildiğini değil.

Devam Zamanındaki Niyet Boşluğu

Bir çalışmanın başladığında aslında neyi tuttuğunu düşünün. Bir hedef ("bu müşterinin iade talebini çöz"), bir plan (agent'ın önerdiği bir dizi tool call), bir dizi kabul edilmiş kısıt (iade üst sınırı, izin verilen araçlar, agent'ın okuyabileceği veriler) ve bir bütçe (token'lar, duvar saati, harici çağrı sayısı) vardır.

Bir checkpoint tipik olarak değişkenleri serileştirir: mevcut adım indeksi, araç çıktıları, karalama defteri içeriği, belki bir plan nesnesi. Bu değişkenlerin hangi yetki altında üretildiğini serileştirmez. İade üst sınırı, değişmiş olabilecek bir politika tarafından verilmişti. Araç kapsamı, süresi dolmuş olabilecek bir oturum için onaylanmıştı. Kullanıcının talimatı — "faturadaki tutara kadar iade et" — devam ettirilen çalışmanın hiç görmediği daha sonraki bir mesajla geçersiz kılınmış olabilir.

Çökme ile devam arasında dünya hareket eder. Fiyatlar değişir. Envanter yeniden tahsis edilir. İzinler iptal edilir. Bir düzenleyici rehber yayımlar. Kullanıcı fikrini değiştirir. Bu olayların hiçbiri günlükte yoktur, çünkü günlük yalnızca agent'ın durmadan önce gözlemlediklerini bilir.

Bu, belirli ve kötü bir arıza modu üretir: orijinal yörüngenin hiç yetkilendirmediği bir şeyi yaparken başarıyla tamamlanan devam ettirilmiş bir çalışma. Tamamlanma makuldür. Loglar temizdir. Adım dizisi deterministik olarak yeniden oynatılır. Ve eylem yanlıştır, çünkü onu meşrulaştıran niyet bayattır.

Dynamic stock market trading chart showcasing live financial data and indicators for analysis.

Bu bir doğruluk hatasıdır, kullanılabilirlik hatası değil. Çökme kurtarma testlerinde görünmez. Üretimde, haftalar sonra, biri bir agent'ın politikanın zaten izin vermediği bir iadeyi neden yaptığını sorduğunda görünür.

Karar Bağlamını Kaydetmek

Çözüm, karar bağlamını durumun yanında kalıcı hale getirmektir. Somut olarak, bir checkpoint şunları taşımalıdır:

  • çalışma başlangıcında belirtildiği şekliyle hedef, kaynak talimatın bir hash'i ile birlikte;
  • agent'ın yürüttüğü plan sürümü, yalnızca sonraki adım değil;
  • araç kapsamı izni — hangi araçlar, hangi politika altında, hangi son kullanma tarihiyle;
  • önemli olan birimlerde kalan bütçe (çağrılar, token'lar, tutar olarak değil politika sınırları olarak ifade edilen para birimi eşdeğeri limitler);
  • bir doğrulayıcının kontrol edebileceği bir biçimde sonraki adımın gerekçesi.

Devam sırasında, çalışma zamanı devam etmeden önce bu bağlamı mevcut politikaya karşı yeniden doğrular. Yeniden doğrulama bir formalite değildir. Şunu sorar: bu hedefe hâlâ izin veriliyor mu? Bu araç kapsamı hâlâ verilmiş mi? Kalan bütçe hâlâ planla tutarlı mı? Sonraki adımın gerekçesi hâlâ hedef tarafından destekleniyor mu?

Başarısız bir yeniden doğrulama bir terminal durumdur, yeniden deneme değil. Bir politika hatasını yeniden denemek yalnızca bütçeyi tüketir ve aynı reddi üretir. Çalışma durmalı, orijinal ile mevcut niyet arasındaki deltayı ortaya koymalı ve bir insana veya daha üst düzey bir orkestratöre geri devretmelidir.

Bu gerçek bir ödünleşimdir. Yeniden doğrulama her devamda gecikme ekler ve politikanın kod içine gömülü değil, bir servis olarak sorgulanabilir olmasını gerektirir. Aynı zamanda, doğru şekilde tamamlanacak bazı çalışmaların inceleme için durdurulacağı anlamına gelir. Alternatif — süresi dolmuş yetki altında sessizce tamamlamak — daha kötüdür, ancak maliyet sıfır değildir ve dürüstçe belirtilmelidir.

Idempotency Onay Değildir

Idempotency anahtarları iyi anlaşılmış bir mekanizmadır: yeniden denenen bir harici çağrının çift ücretlendirme, çift gönderme vey

Bir idempotency anahtarı aynı çağrının iki kez etki etmesini engeller. Süresi dolmuş bir yetki altında yapılan tek bir çağrı hakkında hiçbir şey yapmaz. Agent'ın iade verme yetkisi 14:00'te sona erdiyse ve çalışma 14:05'te devam ederse, idempotent bir iade çağrısı tam olarak bir kez yürütülür — ve yetkisiz olur.

Historic US Army checkpoint at Berlin's Mauermuseum near former Berlin Wall.

İki kavram çalışma zamanında ayrılmalıdır:

  • idempotency anahtarı işlemi tanımlar, böylece yeniden denemeler güvenlidir;
  • yetki token'ı mandayı tanımlar, böylece yürütmeye izin verilir.

Her ikisi de yürütme zamanında geçerli olmalıdır. Uzun süren bir çalışma, süresi dolan ve açıkça yenilenen bir yetkiye ihtiyaç duyar; başlangıçta basılıp iş akışının ömrü boyunca taşınan bir token'a değil. Yenileme bir karar noktasıdır: verilebilir, reddedilebilir veya daha dar bir kapsamla verilebilir. Niyetin sisteme yeniden girdiği yer o karar noktasıdır.

Uzun Ufuklu Çalışmalar İçin Tasarım Kuralları

Yukarıdakilerden birkaç kural çıkar. Bedava değildirler, ancak sessiz bir doğruluk hatasından daha ucuzdurlar.

Çalışma süresini altyapının sabrıyla değil, yetkinin ömrüyle sınırlayın. Manda bir saat geçerliyse, çalışmanın bir saati vardır. Kuyruk tolere etti diye bir iş akışının üç gün çalışmasına izin vermeyin. Yetki sona erdiğinde, çalışma duraklar ve yenileme talep eder.

Devam sırasında bayat bir planı yeniden oynatmak yerine planı yeniden türetin. Plan bir öneridir, bir betik değil. Devam sırasında agent'a hedef, mevcut dünya durumu ve kalan bütçe verilmeli ve sonraki adımı yeniden önermesi istenmelidir. Günlük, hâlihazırda olanları kısıtlar; sonra ne olacağını dikte etmemelidir.

Her devam olayını, orijinal ile yeniden doğrulanmış niyet arasındaki delta ile birlikte loglayın. İlginç olan artefakt deltadır. Neyin değiştiğini — politika, bütçe, kapsam, dünya durumu — ve çalışmanın neden devam ettiğini veya durduğunu kaydeder. O olmadan, olay sonrası incelemenin hiçbir dayanağı yoktur.

İşe yarayan somut bir mekanizma: günlüğün yanında saklanan, sürümlenen ve her devam sınırında küçük bir doğrulayıcı servis tarafından kontrol edilen bir karar bağlamı kaydı. Doğrulayıcı, kaydı ve mevcut politika anlık görüntüsünü alır ve devam et, duraklat veya sonlandır döndürür. Günlük çalışma zamanının meselesi olarak kalır; karar bağlamı agent'ın meselesidir. Onları ayrı tutmak, niyet boşluğunu serileştirilmiş bir yığının içine saklamak yerine görünür kılar.

Daha geniş nokta şudur: dayanıklı yürütme motorları iddia ettikleri konusunda doğrudur. İş akışlarının arıza boyunca hayatta kalmasını sağlarlar. Agent'ların doğru nedenlerle hareket etmesini sağlamazlar. Bu ikinci özelliğin üstüne mühendislik yapılmalıdır ve bu, niyetsiz bir checkpoint'in yanlış olmanın yalnızca çok güvenilir bir yolu olduğunu kabul etmekle başlar.

Bunun yanıtladığı sorular

What is the intent gap in durable agent execution?

The intent gap is the difference between the state a checkpoint serialises (variables, step index, tool outputs) and the decision context that justified the run (goal, plan version, tool scope, budget, reason for the next step). A resumed run can replay state correctly while acting under intent that is no longer valid.

Why is idempotency not the same as consent?

Idempotency ensures a retried call does not take effect twice. It does not ensure the call was authorised. A single call made under an expired mandate will execute exactly once and still be wrong. Idempotency keys and authority tokens must both be valid at execution time.

How should a runtime handle a failed re-validation on resume?

Treat it as a terminal state, not a retry. Retrying a policy failure produces the same refusal and burns budget. The run should stop, log the delta between original and re-validated intent, and hand back to a human or orchestrator.

Should an agent replay its plan on resume?

No. The plan should be treated as a proposal, not a script. On resume, re-derive the next step from the goal, current world state, and remaining budget. The journal constrains what has already happened; it should not dictate what happens next.