WebChat (UI WebSocket Gateway)
Status: UI chat SwiftUI macOS/iOS berbicara langsung ke Gateway WebSocket.Apa itu
- UI chat native untuk gateway (tanpa browser tersemat dan tanpa server statis lokal).
- Menggunakan sesi dan aturan routing yang sama seperti channel lainnya.
- Routing deterministik: balasan selalu kembali ke WebChat.
Memulai cepat
- Mulai gateway.
- Buka UI WebChat (app macOS/iOS) atau tab chat Control UI.
- Pastikan jalur auth gateway yang valid sudah dikonfigurasi (shared-secret secara default, bahkan pada loopback).
Cara kerjanya (perilaku)
- UI terhubung ke Gateway WebSocket dan menggunakan
chat.history,chat.send, danchat.inject. chat.historydibatasi demi stabilitas: Gateway dapat memotong field teks yang panjang, menghilangkan metadata yang berat, dan mengganti entri yang terlalu besar dengan[chat.history omitted: message too large].chat.historyjuga dinormalisasi untuk tampilan: tag directive pengiriman inline seperti[[reply_to_*]]dan[[audio_as_voice]], payload XML tool-call teks biasa (termasuk<tool_call>...</tool_call>,<function_call>...</function_call>,<tool_calls>...</tool_calls>,<function_calls>...</function_calls>, dan blok tool-call yang terpotong), serta token kontrol model ASCII/full-width yang bocor dihapus dari teks yang terlihat, dan entri asisten yang seluruh teks terlihatnya hanya token diam persisNO_REPLY/no_replydihilangkan.chat.injectmenambahkan catatan asisten langsung ke transkrip dan menyiarkannya ke UI (tanpa eksekusi agen).- Eksekusi yang dibatalkan dapat tetap menampilkan keluaran asisten parsial di UI.
- Gateway mempersistenkan teks asisten parsial yang dibatalkan ke riwayat transkrip ketika keluaran yang dibuffer ada, dan menandai entri tersebut dengan metadata pembatalan.
- Riwayat selalu diambil dari gateway (tanpa pemantauan file lokal).
- Jika gateway tidak dapat dijangkau, WebChat bersifat baca-saja.
Panel tool agen di Control UI
- Panel Tools
/agentspada Control UI memiliki dua tampilan terpisah:- Available Right Now menggunakan
tools.effective(sessionKey=...)dan menampilkan apa yang benar-benar dapat digunakan sesi saat ini pada runtime, termasuk tool milik core, plugin, dan channel. - Tool Configuration menggunakan
tools.catalogdan tetap berfokus pada profil, override, dan semantik katalog.
- Available Right Now menggunakan
- Ketersediaan runtime memiliki scope sesi. Berpindah sesi pada agen yang sama dapat mengubah daftar Available Right Now.
- Editor config tidak menyiratkan ketersediaan runtime; akses efektif tetap mengikuti precedence
kebijakan (
allow/deny, override per agen dan per provider/channel).
Penggunaan jarak jauh
- Mode jarak jauh menyalurkan Gateway WebSocket melalui SSH/Tailscale.
- Anda tidak perlu menjalankan server WebChat terpisah.
Referensi konfigurasi (WebChat)
Konfigurasi lengkap: Konfigurasi Opsi WebChat:gateway.webchat.chatHistoryMaxChars: jumlah karakter maksimum untuk field teks dalam responschat.history. Ketika entri transkrip melebihi batas ini, Gateway memotong field teks yang panjang dan dapat mengganti pesan yang terlalu besar dengan placeholder.maxCharsper request juga dapat dikirim oleh klien untuk mengoverride default ini untuk satu panggilanchat.history.
gateway.port,gateway.bind: host/port WebSocket.gateway.auth.mode,gateway.auth.token,gateway.auth.password: auth WebSocket shared-secret.gateway.auth.allowTailscale: tab chat Control UI berbasis browser dapat menggunakan header identitas Tailscale Serve saat diaktifkan.gateway.auth.mode: "trusted-proxy": auth reverse-proxy untuk klien browser di belakang sumber proxy non-loopback yang sadar identitas (lihat Auth Trusted Proxy).gateway.remote.url,gateway.remote.token,gateway.remote.password: target gateway jarak jauh.session.*: penyimpanan sesi dan default key utama.