Oturum Yönetimi
OpenClaw, her ajan için bir doğrudan sohbet oturumunu birincil olarak ele alır. Doğrudan sohbetleragent:<agentId>:<mainKey>’e (varsayılan main) daraltılırken, grup/kanal sohbetleri kendi anahtarlarını alır. session.mainKey dikkate alınır.
Doğrudan mesajların nasıl gruplanacağını denetlemek için session.dmScope kullanın:
main(varsayılan): süreklilik için tüm DM’ler ana oturumu paylaşır.per-peer: kanallar genelinde gönderen kimliğine göre yalıtım.per-channel-peer: kanal + gönderen bazında yalıtım (çok kullanıcılı gelen kutuları için önerilir).per-account-channel-peer: hesap + kanal + gönderen bazında yalıtım (çok hesaplı gelen kutuları için önerilir).session.identityLinks’i kullanarak sağlayıcı önekli eş kimliklerini kanonik bir kimliğe eşleyin; böyleceper-peer,per-channel-peerveyaper-account-channel-peerkullanılırken aynı kişi kanallar arasında tek bir DM oturumunu paylaşır.
Güvenli DM modu (çok kullanıcılı kurulumlar için önerilir)
Güvenlik Uyarısı: Ajanınız birden fazla kişiden DM alabiliyorsa, güvenli DM modunu etkinleştirmeniz şiddetle önerilir. Aksi halde tüm kullanıcılar aynı konuşma bağlamını paylaşır; bu da kullanıcılar arasında özel bilgilerin sızmasına yol açabilir.Varsayılan ayarlarla ortaya çıkan soruna örnek:
- Alice (
<SENDER_A>) ajanınıza özel bir konu hakkında mesaj atar (örneğin bir tıbbi randevu) - Bob (
<SENDER_B>) ajanınıza “Ne hakkında konuşuyorduk?” diye sorar - Her iki DM aynı oturumu paylaştığı için model, Alice’in önceki bağlamını kullanarak Bob’a yanıt verebilir.
dmScope’yi ayarlayın:
- Birden fazla gönderen için eşleştirme onaylarınız varsa
- Birden çok girdisi olan bir DM izin listesi kullanıyorsanız
dmPolicy: "open"ayarladıysanız- Birden fazla telefon numarası veya hesap ajanınıza mesaj gönderebiliyorsa
- Varsayılan değer süreklilik için
dmScope: "main"’dur (tüm DM’ler ana oturumu paylaşır). Bu, tek kullanıcılı kurulumlar için uygundur. - Aynı kanalda çok hesaplı gelen kutuları için
per-account-channel-peertercih edin. - Aynı kişi birden fazla kanaldan sizinle iletişime geçiyorsa, DM oturumlarını tek bir kanonik kimlikte birleştirmek için
session.identityLinkskullanın. - DM ayarlarınızı
openclaw security auditile doğrulayabilirsiniz (bkz. security).
Gerçeğin kaynağı Gateway’dir
Tüm oturum durumu gateway’e aittir (“ana” OpenClaw). UI istemcileri (macOS uygulaması, WebChat vb.) yerel dosyaları okumak yerine oturum listeleri ve belirteç sayıları için gateway’i sorgulamalıdır.- Uzak modda, ilgilendiğiniz oturum deposu Mac’inizde değil, uzak gateway ana makinesindedir.
- UI’larda gösterilen belirteç sayıları gateway’in depo alanlarından gelir (
inputTokens,outputTokens,totalTokens,contextTokens). İstemciler toplamları “düzeltmek” için JSONL dökümlerini ayrıştırmaz.
Durumun yaşadığı yerler
- Gateway ana makinesinde:
- Depo dosyası:
~/.openclaw/agents/<agentId>/sessions/sessions.json(ajan başına).
- Depo dosyası:
- Dökümler:
~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl(Telegram konu oturumları.../<SessionId>-topic-<threadId>.jsonlkullanır). - Depo,
sessionKey -> { sessionId, updatedAt, ... }haritasıdır. Girdileri silmek güvenlidir; gerektiğinde yeniden oluşturulurlar. - Grup girdileri, UI’larda oturumları etiketlemek için
displayName,channel,subject,roomvespaceiçerebilir. - Oturum girdileri, UI’ların bir oturumun nereden geldiğini açıklayabilmesi için
originmeta verilerini (etiket + yönlendirme ipuçları) içerir. - OpenClaw, eski Pi/Tau oturum klasörlerini okumaz.
Session pruning
OpenClaw, varsayılan olarak LLM çağrılarından hemen önce bellek içi bağlamdan eski araç sonuçlarını kırpar. Bu işlem JSONL geçmişini yeniden yazmaz. /concepts/session-pruning.Ön-sıkıştırma bellek boşaltma
Bir oturum otomatik sıkıştırmaya yaklaştığında, OpenClaw sessiz bir bellek boşaltma dönüşü çalıştırarak modele kalıcı notları diske yazmasını hatırlatabilir. Bu yalnızca çalışma alanı yazılabilir olduğunda çalışır. Bkz. Memory ve Compaction.Taşıma → oturum anahtarları eşlemesi
- Doğrudan sohbetler
session.dmScope’yi izler (varsayılanmain).main:agent:<agentId>:<mainKey>(cihazlar/kanallar arasında süreklilik).- Birden fazla telefon numarası ve kanal aynı ajan ana anahtarına eşlenebilir; tek bir konuşmaya taşıma görevi görürler.
per-peer:agent:<agentId>:dm:<peerId>.per-channel-peer:agent:<agentId>:<channel>:dm:<peerId>.per-account-channel-peer:agent:<agentId>:<channel>:<accountId>:dm:<peerId>(accountId varsayılanıdefault’dir).session.identityLinkssağlayıcı önekli bir eş kimlikle eşleşirse (örneğintelegram:123), kanonik anahtar<peerId>’nin yerini alır; böylece aynı kişi kanallar arasında bir oturumu paylaşır.
- Grup sohbetleri durumu yalıtır:
agent:<agentId>:<channel>:group:<id>(odalar/kanallaragent:<agentId>:<channel>:channel:<id>kullanır).- Telegram forum konuları, yalıtım için grup kimliğine
:topic:<threadId>ekler. - Eski
group:<id>anahtarları geçiş için hâlâ tanınır.
- Telegram forum konuları, yalıtım için grup kimliğine
- Gelen bağlamlar hâlâ
group:<id>kullanabilir; kanalProvider’dan çıkarılır ve kanonikagent:<agentId>:<channel>:group:<id>biçimine normalize edilir. - Diğer kaynaklar:
- Cron işleri:
cron:<job.id> - Webhook’lar:
hook:<uuid>(hook tarafından açıkça ayarlanmadıkça) - Node çalıştırmaları:
node-<nodeId>
- Cron işleri:
Yaşam döngüsü
- Sıfırlama politikası: oturumlar süreleri dolana kadar yeniden kullanılır ve süre dolumu bir sonraki gelen mesajda değerlendirilir.
- Günlük sıfırlama: varsayılan olarak gateway ana makinesinin yerel saatine göre 04:00. Son güncellemesi en son günlük sıfırlama zamanından önce olan bir oturum bayattır.
- Boşta sıfırlama (isteğe bağlı):
idleMinuteskayan bir boşta penceresi ekler. Günlük ve boşta sıfırlamalar birlikte yapılandırıldığında, hangisi önce dolarsa yeni bir oturumu zorlar. - Eski yalnızca-boşta: herhangi bir
session.reset/resetByTypeyapılandırması olmadansession.idleMinutesayarlarsanız, OpenClaw geriye dönük uyumluluk için yalnızca-boşta modunda kalır. - Türe göre geçersiz kılmalar (isteğe bağlı):
resetByType,direct,groupvethreadoturumları için politikayı geçersiz kılmanıza olanak tanır (thread = Slack/Discord thread’leri, Telegram konuları, bağlayıcı tarafından sağlandığında Matrix thread’leri). - Kanal başına geçersiz kılmalar (isteğe bağlı):
resetByChannel, bir kanal için sıfırlama politikasını geçersiz kılar (o kanalın tüm oturum türlerine uygulanır vereset/resetByType’in önüne geçer). - Sıfırlama tetikleyicileri: tam
/newveya/reset(artıresetTriggers’teki ekler) yeni bir oturum kimliği başlatır ve mesajın kalanını iletir./new <model>, yeni oturum modelini ayarlamak için bir model takma adı,provider/modelveya sağlayıcı adını (yaklaşık eşleşme) kabul eder./newveya/resettek başına gönderilirse, OpenClaw sıfırlamayı doğrulamak için kısa bir “merhaba” selamlaması çalıştırır. - Manuel sıfırlama: depodan belirli anahtarları silin veya JSONL dökümünü kaldırın; bir sonraki mesaj bunları yeniden oluşturur.
- Yalıtılmış cron işleri her çalıştırmada her zaman yeni bir
sessionIdüretir (boşta yeniden kullanım yoktur).
Gönderim politikası (isteğe bağlı)
Tek tek kimlikleri listelemeden belirli oturum türleri için teslimatı engelleyin./send on→ bu oturum için izin ver/send off→ bu oturum için reddet/send inherit→ geçersiz kılmayı temizle ve yapılandırma kurallarını kullan Kaydolmaları için bunları bağımsız mesajlar olarak gönderin.
Yapılandırma (isteğe bağlı yeniden adlandırma örneği)
İnceleme
openclaw status— depo yolunu ve son oturumları gösterir.openclaw sessions --json— her girdiyi döker (--active <minutes>ile filtreleyin).openclaw gateway call sessions.list --params '{}'— çalışan gateway’den oturumları getirir (uzak gateway erişimi için--url/--tokenkullanın).- Ajanın erişilebilir olup olmadığını, oturum bağlamının ne kadarının kullanıldığını, mevcut düşünme/ayrıntılı anahtarlarını ve WhatsApp web kimlik bilgilerinizin en son ne zaman yenilendiğini görmek için sohbette bağımsız bir mesaj olarak
/statusgönderin (yeniden bağlama gereksinimlerini tespit etmeye yardımcı olur). - Sistem isteminde ve enjekte edilen çalışma alanı dosyalarında neler olduğunu (ve en büyük bağlam katkılarını) görmek için
/context listveya/context detailgönderin. - Geçerli çalıştırmayı iptal etmek, bu oturum için kuyruğa alınmış takipleri temizlemek ve bundan türetilmiş tüm alt ajan çalıştırmalarını durdurmak için bağımsız bir mesaj olarak
/stopgönderin (yanıt, durdurulan sayıyı içerir). - Eski bağlamı özetlemek ve pencere alanını boşaltmak için bağımsız bir mesaj olarak
/compact(isteğe bağlı talimatlar) gönderin. /concepts/compaction. - Tam turları gözden geçirmek için JSONL dökümleri doğrudan açılabilir.
İpuçları
- Birincil anahtarı 1:1 trafik için ayırın; gruplar kendi anahtarlarını kullansın.
- Temizliği otomatikleştirirken, diğer yerlerdeki bağlamı korumak için tüm depo yerine tek tek anahtarları silin.
Oturum kökeni meta verileri
Her oturum girdisi, en iyi çaba ile nereden geldiğiniorigin içinde kaydeder:
label: insan tarafından okunabilir etiket (konuşma etiketi + grup konusu/kanaldan çözülür)provider: normalize edilmiş kanal kimliği (uzantılar dâhil)from/to: gelen zarfından ham yönlendirme kimlikleriaccountId: sağlayıcı hesap kimliği (çok hesaplı olduğunda)threadId: kanal destekliyorsa thread/konu kimliği Köken alanları doğrudan mesajlar, kanallar ve gruplar için doldurulur. Bir bağlayıcı yalnızca teslim yönlendirmesini güncelliyorsa (örneğin bir DM ana oturumunu taze tutmak için), oturumun açıklayıcı meta verilerini koruması için yine de gelen bağlamı sağlamalıdır. Uzantılar bunu, gelen bağlamdaConversationLabel,GroupSubject,GroupChannel,GroupSpaceveSenderNamegöndererek verecordSessionMetaFromInbound’yı çağırarak (veya aynı bağlamıupdateLastRoute’ye geçirerek) yapabilir.