Web interfaces
WebChat
Durum: macOS/iOS SwiftUI sohbet kullanıcı arayüzü doğrudan Gateway WebSocket ile iletişim kurar. Gömülü tarayıcı ve yerel statik sunucu yoktur.
Nedir
- Gateway için yerel bir sohbet kullanıcı arayüzü.
- Diğer kanallarla aynı oturumları ve yönlendirme kurallarını kullanır.
- Belirlenimci yönlendirme: yanıtlar her zaman WebChat'e geri gönderilir.
- Geçmiş her zaman Gateway'den alınır (yerel dosya izleme yoktur). Gateway'e ulaşılamıyorsa WebChat salt okunurdur.
Hızlı başlangıç
- Gateway'i başlatın.
- WebChat kullanıcı arayüzünü (macOS/iOS uygulaması) veya Control UI sohbet sekmesini açın.
- Geçerli bir Gateway kimlik doğrulama yolunun yapılandırıldığından emin olun (geri döngüde bile varsayılan olarak paylaşılan gizli anahtar).
Nasıl çalışır
- Kullanıcı arayüzü Gateway WebSocket'e bağlanır ve
chat.history,chat.send,chat.injectvechat.message.getRPC yöntemlerini kullanır. chat.historykararlılık için sınırlandırılmıştır: Gateway uzun metin alanlarını kısaltabilir, ağır meta verileri atlayabilir ve aşırı büyük girdileri[chat.history omitted: message too large]ile değiştirebilir. API istemcileri, tek bir çağrıda varsayılan sınırı geçersiz kılmak için istek başınamaxCharsgönderebilir.- Görünür bir asistan mesajı
chat.historyiçinde kısaltıldığında Control UI, varsayılan geçmiş yükünü artırmadan bir yan okuyucu açabilir vechat.message.getüzerinden isteğe bağlı olarak görüntüleme için tamamen normalleştirilmiş girdiyi alabilir.chat.message.get,chat.historyile aynı transkript dalını ve görüntüleme kurallarını kullanır ancakmessageIdaracılığıyla tek bir girdiyi hedefler ve içeriğin tamamı artık döndürülemiyorsa gerçek durumu yansıtan bir kullanılamama nedeni döndürür. chat.history, yalnızca eklemeli oturum dosyalarında etkin transkript dalını izler; böylece terk edilmiş yeniden yazma dalları ve yerini daha yeni sürümlerin aldığı istem kopyaları WebChat'te işlenmez.- Compaction girdileri, sıkıştırılmış transkriptin bir denetim noktası olarak korunduğunu açıklayan bir "Sıkıştırılmış geçmiş" ayırıcısı olarak işlenir ve oturum denetim noktalarını açmaya yönelik bir eylem sunar (izinler elverdiğinde dallandırma veya geri yükleme).
- Control UI,
chat.historytarafından döndürülen temel GatewaysessionIddeğerini hatırlar ve bunu sonrakichat.sendçağrılarına ekler; böylece kullanıcı bir oturum başlatmadığı veya sıfırlamadığı sürece yeniden bağlantılar ve sayfa yenilemeleri aynı kayıtlı konuşmayı sürdürür. - Ön plan gönderimleri ayrıca işlenmiş geçmişteki görüntülenen dalın yaprağını
expectedLeafEntryIdolarak içerir; başka bir istemci önce dal değiştirdiyse Control UI, mesajı yeni dala göndermek yerine incelenmek üzere beklemeye alır ve transkripti yeniler. Yeniden bağlantı ve geri yüklenen giden kutusu tekrarları, mevcut geçmiş uzlaştırıldıktan sonra bu ön koşulu bilinçli olarak atlar. chat.sendbir eş etkisizlik anahtarı alır (Control UI çalıştırma kimliğini kullanır); Gateway, aynı anahtarı yeniden kullanan tekrarlanan isteklerin yinelenmesini önler, böylece aynı oturum/mesaj/ekler için yeniden denenen veya aktarım sırasında yinelenen gönderimler ikinci bir çalıştırma oluşturmaz.- Belirli bir mesajı yanıtlamak (sağ tıklama → Reply), hedefin transkript kimliğini
chat.sendüzerindereplyToIdolarak gönderir. Gateway bu mesajı oturum geçmişinden çözümler ve Discord yanıtlarının kullandığı, kanaldan bağımsız aynı yanıt bağlamı meta verilerini doldurur: aracılarhas_reply_contextile birlikte gönderici etiketi ve gövdeyi içeren güvenilmeyen "Geçerli kullanıcı mesajının yanıt hedefi" bloğunu görür. (WebChat istemlerindereply_to_idgibi geçici konuşma kimlikleri, doğrudan WebChat oturumlarına yönelik mevcut bayt kararlı istem politikası uyarınca gizli tutulur.) Kalıcı bir transkript kimliği olmayan yanıt hedeflerinde (örneğin bekleyen gönderimler) mesaj gövdesindeki satır içi alıntıya geri dönülür. - Çalışma alanı başlangıç dosyaları ve bekleyen
BOOTSTRAP.mdtalimatları, WebChat kullanıcı mesajına kopyalanmak yerine aracı sistem isteminin# Project Contextbölümü üzerinden sağlanır. Önyükleme içeriği kısaltılırsa sistem istemine bunun yerine kısa bir "Önyükleme Bağlamı Bildirimi" eklenir; ayrıntılı sayımlar ve yapılandırma ayarları tanılama yüzeylerinde kalır. chat.historyüzerindeki görüntüleme normalleştirmesi şunları kaldırır: yalnızca çalışma zamanına yönelik OpenClaw bağlamı, gelen zarf sarmalayıcıları,[[reply_to_current]],[[reply_to:<id>]]ve[[audio_as_voice]]gibi satır içi teslimat yönergesi etiketleri, düz metin araç çağrısı XML yükleri (<tool_call>,<function_call>,<tool_calls>,<function_calls>; kısaltılmış bloklar dâhil) ve sızmış ASCII/tam genişlikli model kontrol belirteçleri. Görünür metninin tamamı yalnızca sessizNO_REPLYbelirtecinden oluşan asistan girdileri (büyük/küçük harfe duyarsız olarak) atlanır.- Akıl yürütme bayrağı taşıyan yanıt yükleri (
isReasoning: true) WebChat asistan içeriğinden, transkript tekrar oynatma metninden ve ses içeriği bloklarından çıkarılır; böylece yalnızca düşünme içeren yükler görünür asistan mesajları veya oynatılabilir ses olarak gösterilmez. chat.inject, doğrudan transkripte bir asistan notu ekler ve bunu kullanıcı arayüzüne yayınlar (aracı çalıştırması yoktur).- Durdurulan çalıştırmalarda kısmi asistan çıktısı kullanıcı arayüzünde görünür kalabilir. Arabelleğe alınmış çıktı varsa Gateway bu kısmi metni transkript geçmişinde kalıcı hâle getirir ve girdiyi durdurma meta verileriyle işaretler.
Transkript ve teslimat modeli
WebChat'in iki ayrı veri yolu vardır:
- SQLite transkript satırları, kalıcı model/çalışma zamanı transkriptidir. Normal aracı çalıştırmalarında gömülü OpenClaw çalışma zamanı, model tarafından görülebilen
user,assistantvetoolResultmesajlarını oturum erişimcisi üzerinden kalıcı hâle getirir. WebChat bu transkripte rastgele teslimat, durum veya yardımcı metin yazmaz. - Gateway
ReplyPayloadolayları canlı teslimat izdüşümüdür: WebChat/kanal görüntülemesi, blok akışı, yönerge etiketleri, medya gömme, TTS/ses bayrakları ve kullanıcı arayüzü geri dönüş davranışı için normalleştirilir. Bunların kendisi kurallı oturum günlüğü değildir. tools.messageüzerinden görünür yanıtlar gerektiren test düzenekleri, WebChat'i hâlâ mevcut çalıştırmaya ait dahili kaynak yanıt havuzu olarak kullanır. Bu etkin WebChat çalıştırmasından gelen hedefsiz birmessage.send, aynı sohbete yansıtılır ve oturum transkriptine kopyalanır; WebChat yeniden kullanılabilir bir giden kanal hâline gelmez ve hiçbir zamanlastChanneldeğerini devralmaz.- WebChat, yalnızca Gateway normal bir gömülü aracı dönüşünün dışında görüntülenen bir mesajın sahibi olduğunda asistan transkript girdileri ekler:
chat.inject, aracı dışı komut yanıtları, durdurulmuş kısmi çıktı ve WebChat tarafından yönetilen medya transkript ekleri. - Canlı asistan metni bir çalıştırma sırasında görünüyor ancak geçmiş yeniden yüklendikten sonra kayboluyorsa sırasıyla şunları denetleyin: SQLite transkriptinin asistan metnini içerip içermediği,
chat.historygörüntüleme izdüşümünün bunu kaldırıp kaldırmadığı ve ardından Control UI iyimser kuyruk birleştirmesinin yerel teslimat durumunu kalıcı anlık görüntüyle değiştirip değiştirmediği.
Normal aracı çalıştırması nihai yanıtları kalıcı olmalıdır; çünkü gömülü çalışma zamanı asistan message_end değerini yazar. Teslim edilmiş bir nihai yükü transkripte yansıtan herhangi bir geri dönüş, önce gömülü çalışma zamanının zaten yazdığı bir asistan dönüşünü çoğaltmaktan kaçınmalıdır.
Control UI aracı araçları paneli
- Control UI
/agentsAraçlar panelinde,tools.effective(sessionKey=...)tarafından desteklenen bir "Available Right Now" görünümü bulunur: çekirdek, Plugin, kanalın sahip olduğu ve zaten keşfedilmiş MCP sunucusu araçları dâhil olmak üzere geçerli oturumun araç envanterinin sunucu tarafından türetilmiş, salt okunur izdüşümü. - Ayrı bir yapılandırma düzenleme görünümü (
tools.catalogtarafından desteklenir) profilleri, aracı başına geçersiz kılmaları ve katalog anlamlarını kapsar. - Çalışma zamanı kullanılabilirliği oturum kapsamındadır. Aynı aracıdaki oturumlar arasında geçiş yapmak "Available Right Now" listesini değiştirebilir. Yapılandırılmış MCP sunucularına son keşiften bu yana bağlanılmadıysa veya bunlar değiştiyse panel, okuma yolundan MCP aktarımlarını sessizce başlatmak yerine bir bildirim gösterir.
- Yapılandırma düzenleyicisi çalışma zamanı kullanılabilirliği anlamına gelmez; etkin erişim yine politika önceliğini izler (
allow/deny, aracı başına ve sağlayıcı/kanal geçersiz kılmaları).
Uzaktan kullanım
- Uzak mod, Gateway WebSocket'i SSH/Tailscale üzerinden tüneller.
- Ayrı bir WebChat sunucusu çalıştırmanız gerekmez.
Yapılandırma başvurusu (WebChat)
Tam yapılandırma: Yapılandırma
WebChat'in kalıcı bir yapılandırma bölümü yoktur. Gateway yerleşik chat.history görüntüleme sınırını kullanır; API istemcileri tek bir çağrıda bunu geçersiz kılmak için istek başına maxChars gönderebilir. Eski channels.webchat ve gateway.webchat yapılandırması kullanımdan kaldırılmıştır; bunu kaldırmak için openclaw doctor --fix komutunu çalıştırın.
İlgili genel seçenekler:
gateway.port,gateway.bind: WebSocket ana makinesi/bağlantı noktası.gateway.auth.mode,gateway.auth.token,gateway.auth.password: paylaşılan gizli anahtarlı WebSocket kimlik doğrulaması.gateway.auth.allowTailscale: tarayıcıdaki Control UI sohbet sekmesi, etkinleştirildiğinde Tailscale Serve kimlik üst bilgilerini kullanabilir.gateway.auth.mode: "trusted-proxy": kimliğe duyarlı bir geri döngü dışı proxy kaynağının arkasındaki tarayıcı istemcileri için ters proxy kimlik doğrulaması (bkz. Güvenilir Proxy Kimlik Doğrulaması).gateway.remote.url,gateway.remote.token,gateway.remote.password: uzak Gateway hedefi.session.*: oturum depolama ve ana anahtar varsayılanları.