Gateway
Yeniden başlatma sonrası kurtarma
Gateway'i yeniden başlatmak agent durumunun kaybolmasına neden olmaz. Konuşmalar, transkriptler, zamanlanmış işler, arka plan görev kayıtları ve kuyruğa alınmış giden mesajların tümü diskte tutulur; turun ortasında kesintiye uğrayan işler algılanır ve Gateway yeniden çalışmaya başladıktan sonra otomatik olarak sürdürülür. Manuel müdahale gerekmez ve yapılandırılacak hiçbir şey yoktur: kurtarma her zaman etkindir.
Bu sayfa, yeniden başlatmadan sonra nelerin korunduğunu, kesintiye uğrayan işlerin nasıl algılandığını ve otomatik sürdürmenin nasıl gerçekleştiğini açıklar.
Yeniden başlatmadan sonra korunanlar
| Durum | Depolama | Yeniden başlatma sırasındaki davranış |
|---|---|---|
| Konuşma geçmişi | Agent başına SQLite veritabanı | Değişmeden kalır; oturumlar saklanan transkriptten devam eder |
| Kesintiye uğrayan ana oturum turu | Agent başına SQLite oturum satırı ve transkript | Başlatmadan birkaç saniye sonra otomatik olarak sürdürülür veya uzlaştırılır |
| Alt agent çalıştırmaları | SQLite (paylaşılan durum veritabanı) | Kayıt defteri açılışta geri yüklenir; kesintiye uğrayan çalıştırmalar sürdürülür |
| Arka plan görevleri | SQLite (paylaşılan durum veritabanı) | Açılışta uzlaştırılır; sahipsiz çalıştırmalar kurtarılır veya kayıp olarak işaretlenir |
| Kuyruğa alınmış giden teslimatlar | SQLite teslimat kuyruğu | Yeniden başlatmadan sonra boşaltılır; teslim edilmemiş yanıtlar yeniden denenir |
| Zamanlanmış (cron) işler | SQLite cron deposu | Zamanlamalar korunur; zamanlayıcı açılışta yeniden kurulur |
| Yeniden başlatma devamı | SQLite yeniden başlatma nöbetçisi | Yeniden başlatmayı isteyen oturuma tek seferlik takip turu gönderilir |
Kontrollü yeniden başlatmalarda önce mevcut işler tamamlanır
İstenen bir yeniden başlatma (openclaw gateway restart, yeniden başlatma gerektiren bir yapılandırma
değişikliği veya Gateway güncellemesi), yürütülmekte olan işi hemen sonlandırmaz.
Gateway yeni iş kabul etmeyi durdurur, ardından etkin agent turlarının ve
arka plan görevlerinin tamamlanmasını mevcut işleri tamamlama bütçesi kadar (varsayılan olarak 5 dakika) bekler. Bu nedenle
çoğu yeniden başlatma hiçbir şeyi kesintiye uğratmaz.
Yalnızca mevcut işleri tamamlama bütçesi içinde bitirilemeyen işler (veya zorunlu yeniden başlatma ya da çökme nedeniyle kesintiye uğrayan herhangi bir çalıştırma) iptal edilir; bu gerçekleşmeden önce etkilenen her oturum kurtarma için işaretlenir.
Kesintiye uğrayan işler nasıl algılanır?
Turu tamamlanmayan oturumları üç tamamlayıcı mekanizma işaretler:
- Tur kabulünde: mevcut bir ana oturumdaki sıradan bir metin turunda
Gateway, model veya
before_agent_replykancası yürütülmeden önce kullanıcı mesajını ekler, oturumu çalışıyor olarak işaretler ve kurtarma teslimatı talebini tek bir SQLite işlemi içinde kaydeder. Control UI bunustartedonayını döndürmeden önce yapar; kanal gönderimi ise hazırlanmış tur agent çalıştırmasını benimsediğinde yapar. Komutlar, ekler, tur başına geçersiz kılmalar, bekleyen teslimatlar, önceki iptal ipuçları, plugin'e ait oturumlar ve yürütme kancaları bulunan turlar kendi özel kabul yollarını kullanır. Birbefore_agent_replykancası yüklüyse kabul işlemi bunun aşamasını da kaydeder. Kurtarma, çağrının ortasında kesintiye uğrayan bir kancayı hiçbir zaman yeniden yürütmez. İşlenmemiş bir kanca tamamlandığında denetim noktası bu sonucu kaydeder, ancak söz konusu kanca etkin kaldığı sürece kurtarma yine güvenli biçimde başarısız olur: bir denetim noktası, yeniden başlatmadan sonra aynı plugin kodu ve yapılandırmasının yüklendiğini kanıtlayamaz. İşlenmiş metin ve sessiz sonuçlar, belirlenimci sonuçlandırma için ayrı ayrı denetim noktalarına kaydedilir. Eski sürümlerin yazdığı kalıcı kurtarma taleplerinde kaynak sahipliği işaretçisi bulunmadığından yükseltme sırasında aynı güvenli biçimde başarısız olma kanca denetimine tabi tutulurlar. - Kapatma sırasında: yeniden başlatma için mevcut işler tamamlanırken etkin çalıştırması bulunan her oturum, çalıştırma iptal edilmeden önce oturum deposunda bir kurtarma işaretçisiyle damgalanır.
- Başlatma sırasında: Gateway, hâlâ çalıştığını iddia eden ancak yeni süreçte canlı bir sahibi bulunmayan oturumları bulmak için oturum depolarını tarar. Bu işlem, hiçbir kapatma kodunun çalışmadığı ani çökmeleri ve sonlandırmaları yakalar. Eski transkript kilit dosyaları da aynı anda temizlenir.
Otomatik sürdürme
Başlatmadan birkaç saniye sonra Gateway, işaretlenmiş her oturumu agent'a önceki turunun yeniden başlatma nedeniyle kesintiye uğradığını ve mevcut transkriptten devam etmesi gerektiğini bildiren sentetik bir sistem mesajıyla yeniden gönderir. Nihai bir yanıt zaten oluşturulmuş ancak teslim edilmemişse agent'ın işi yeniden yapmak yerine bu yanıtı teslim edebilmesi için metni eklenir. Kurtarma, üstel geri çekilmeyle en fazla 3 kez yeniden denenir. Her yeniden deneme aynı kalıcı gönderim tanımlayıcısını yeniden kullanır; böylece sonucu belirsiz bir bağlantı hatası aynı kurtarmayı iki kez başlatamaz. Tamamlanmış ve sürdürülemeyen Control UI turları da sınırlandırılmış kalıcı yinelenmezlik mezar taşlarını korur; böylece yeniden bağlanan bir giden kutusu, isteği yeniden yürütmeden bunları sonlandırabilir.
Yalnızca mesaj aracı yanıtları ikinci bir kalıcı korelasyon kullanır. Aynı konuşmaya yapılan sonlandırıcı bir gönderim kanala ulaşmadan önce Gateway, tam oturum ve kaynak tur üzerinde çözümlenmemiş bir teslimat niyeti kaydeder. Doğrulanmış bir sağlayıcı başarısı bunu kalıcı bir teslim edildi makbuzuna dönüştürür; doğrulanmış bir hata ise temizler. Kurtarma, araçları yeniden çalıştırmadan teslim edildi makbuzunu tamamlar. Bir çökme sağlayıcı sonucunu belirsiz bırakırsa kurtarma, harici bir etkiyi yeniden yürütmek yerine güvenli biçimde başarısız olur.
Teslim edilen yanıt, kaynak mesaj kimliğiyle birlikte transkripte de yansıtılır. Sonlandırıcı yansıtmalar ayrı bir makbuz anahtarı kullanır; böylece aynı sağlayıcı yinelenmezlik anahtarına sahip bir ilerleme gönderimi sonlandırıcı işaretçiyi maskeleyemez. Önceki turlardan gelen ilerleme gönderimleri ve makbuzlar mevcut turu tamamlayamaz. Yalnızca kalıcı kanal giriş talepleri mesaj eylemi yetkisini geri yükleyebilir. Sürdürülen bir çalıştırma, istekte bulunanın kimliği ve aynı kanal/ileti dizisi kısıtlamaları dâhil olmak üzere özgün kaynak teslimat modunu ve kaynak korelasyonunu korur; böylece kurtarma sırasında başka bir yeniden başlatma gerçekleşse bile aynı makbuz yetkili kalır. Yeniden oluşturulabilir kanal yetkisi bulunmayan yalnızca mesaj aracı turu güvenli biçimde başarısız olur ve tek seferlik yeniden gönderme bildirimini alır.
Gateway sürdürmeden önce transkript sonunun devam etmek için güvenli olup olmadığını denetler. Güvenli değilse (örneğin tur eski ve bekleyen bir onayla sona erdiyse) oturum körü körüne yeniden çalıştırılmaz; bunun yerine agent, kullanıcıdan son isteği yeniden göndermesini isteyen kısa bir bildirim yayınlar. WebChat'te bu bildirim, yeniden bağlanıldıktan sonra da görünür kalması için doğrudan oturum geçmişine yazılır.
OpenClaw, kesintiye uğrayan salt okunur Kod Modu
işlerini de yeniden oluşturabilir. Kod Modu bu çalıştırmaları yeniden başlatmaya karşı güvenli olarak işaretler ve yan etkili
katalog araçlarını veya plugin ad alanlarını yürütülmeden önce reddeder. Yeniden başlatma
wait denetiminde gerçekleşirse yeni Gateway, turu transkriptinden yeniden oluşturur
ve model bu bayrağı atlasa veya temizlese bile yeniden oluşturulan yürütmenin yeniden başlatmaya karşı güvenli
kalmasını zorunlu kılar. Ana makine, yeniden oluşturulan turun tamamını denetlenmiş salt okunur
çekirdek araçları ve yeniden yürütme açısından açıkça güvenli plugin araçlarıyla sınırlar;
bu, yeniden başlatmadan sonra Kod Modu devre dışı bırakılsa bile geçerlidir. Yan etkili işler,
yinelenen yazma riski yerine yeniden gönderme bildirimiyle korunmaya devam eder.
Alt agent'lar
Alt agent çalıştırmaları paylaşılan SQLite durum veritabanında kalıcı olarak saklandığından alt agent kayıt defteri süreç sonrasında da korunur. Açılışta kayıt defteri geri yüklenir ve kesintiye uğrayan alt agent oturumları özgün görev bağlamlarıyla sürdürülür. İki güvenlik mekanizması uygulanır:
- 2 saatten daha uzun süre önce kesintiye uğrayan çalıştırmalar sürdürülmek yerine sonuçlandırılır; böylece gece boyunca kapalı kalan bir Gateway eski işleri yeniden canlandırmaz.
- Kurtarma işlemi art arda başarısız olan bir oturum, sıkışmış olarak mezar taşına dönüştürülür; böylece kurtarma sonsuza kadar döngüye giremez.
Arka plan görevleri
Arka plan görev kayıt defteri SQLite tabanlıdır ve açılışta ve düzenli aralıklarla uzlaştırılır: tamamlanan çalıştırmaların kaydettiği kalıcı sonuçlar kurtarılır ve sahip süreci ortadan kaybolan çalıştırmalar sonsuza kadar askıda kalmak yerine bir bekleme süresinin ardından kayıp olarak işaretlenir.
Agent tarafından istenen yeniden başlatmalar
Agent'ın kendisi bir yeniden başlatmayı tetiklediğinde (bir yapılandırma değişikliğini uygulama, Gateway'i güncelleme veya açık bir yeniden başlatma isteği) süreç kapanmadan önce SQLite'a bir yeniden başlatma nöbetçisi yazılır. Açılıştan sonra Gateway sonucu kaynak sohbete geri gönderir ve agent'ın aynı kanal ve ileti dizisinde tam olarak kaldığı yerden devam etmesi için tek seferlik bir devam turu gönderir.
Güvenlik mekanizmaları ve gözlemlenebilirlik
- Çökme döngüsü kesicisi: 5 dakika içinde 3 temiz olmayan açılış, sonraki açılışta otomatik başlatılan yan hizmetleri engelleyen bir kesiciyi tetikler; böylece çöken bir Gateway kendi etkisini büyütmez. Temiz olmayan açılış penceresi boşaldığında düzelir.
- Metrikler: kurtarma etkinliği
Prometheus aracılığıyla
openclaw_session_recovery_totalveopenclaw_session_recovery_age_secondsolarak dışa aktarılır. - Günlükler: kurtarma kararları
main-session-restart-recoveryvesubagent-interrupted-resumealt sistemleri altında günlüğe kaydedilir.
Sürdürülmeyenler
- Başka bir sahip tarafından zaten işlendiği için ana oturum kurtarmasının dışında bırakılan oturumlar: alt agent oturumları (alt agent kurtarması), cron oturumları (zamanlayıcı bunları programa göre yeniden çalıştırır) ve ACP tarafından yönetilen oturumlar (sürdürmenin sahibi bağlı IDE veya istemcidir).
- Transkript sonundan güvenli biçimde devam edilemeyen oturumlar; bunlar sessizce yeniden çalıştırılmak yerine yukarıda açıklanan yeniden gönderme bildirimini alır.
- Hiç kabul edilmemiş işler: mevcut işleri tamamlama penceresi sırasında gelen mesajlar, sonlanmakta olan bir süreçte sessizce kuyruğa alınmak yerine açık bir yeniden başlatma hatasıyla reddedilir.