macOS companion app
WebChat (macOS)
แอปแถบเมนู macOS ฝัง UI ของ WebChat เป็นมุมมอง SwiftUI แบบเนทีฟ โดยเชื่อมต่อกับ Gateway และใช้เซสชันหลักของเอเจนต์ที่เลือกเป็นค่าเริ่มต้น (main หรือ global เมื่อ session.scope เป็น global)
หน้าต่างแชตแบบเต็มเป็นมุมมองแยกแบบเนทีฟ:
- แถบด้านข้างของเซสชัน: รายการเซสชันที่ค้นหาได้ พร้อมส่วนปักหมุดและล่าสุด ตัวบ่งชี้ข้อความที่ยังไม่ได้อ่าน และเมนูตามบริบทสำหรับปักหมุด/เลิกปักหมุด คัดลอกคีย์เซสชัน และลบ ปุ่มบนแถบเครื่องมือ (หรือ Cmd-N) จะสร้างเซสชันใหม่จริงผ่าน
sessions.create - แถบเครื่องมือของหน้าต่าง: วงแหวนแสดงการใช้บริบท (โทเค็นและค่าใช้จ่ายของเซสชัน พร้อมการดำเนินการแบบย่อ) ตัวเลือกระดับการคิด ตัวเลือกโมเดล และเมนูการดำเนินการของเซสชัน (เซสชันใหม่ รีเฟรช คัดลอกคีย์เซสชัน ส่งออกบทสนทนา ย่อบริบท ล้างประวัติ)
- บทสนทนาและช่องเขียนข้อความ: ข้อความของผู้ช่วยแสดงเป็นข้อความธรรมดาพร้อมรูปประจำตัว ส่วนข้อความของผู้ใช้แสดงเป็นกรอบข้อความสีเน้น การพิมพ์
/จะเปิดการเติมคำสั่งแบบเครื่องหมายทับอัตโนมัติซึ่งใช้ข้อมูลจากcommands.listพร้อมการนำทางด้วยแป้นลูกศร/Tab/Return/Escape คลิกขวาที่ข้อความเพื่อคัดลอก
แผงแชตด่วนที่ยึดกับแถบเมนูยังคงใช้เค้าโครงคอลัมน์เดียวแบบกะทัดรัด พร้อมตัวเลือกในบรรทัด
- โหมดภายในเครื่อง: เชื่อมต่อโดยตรงกับ WebSocket ของ Gateway ภายในเครื่อง
- โหมดระยะไกล: ส่งต่อพอร์ตควบคุมของ Gateway ผ่าน SSH และใช้อุโมงค์นั้นเป็นช่องทางข้อมูล
การเปิดใช้งานและการแก้ไขข้อบกพร่อง
-
ด้วยตนเอง: เมนู Lobster -> "Open Chat"
-
เปิดอัตโนมัติสำหรับการทดสอบ:
bash dist/OpenClaw.app/Contents/MacOS/OpenClaw --chat(รองรับ
--webchatในฐานะนามแฝงแบบเดิม) -
บันทึกเหตุการณ์:
./scripts/clawlog.sh(ระบบย่อยai.openclaw, หมวดหมู่WebChatSwiftUI)
การเชื่อมโยงระบบ
- ช่องทางข้อมูล: เมธอด WS ของ Gateway ได้แก่
chat.history,chat.send,chat.abort,chat.injectและเหตุการณ์chat,agent,presence,tick,health chat.historyส่งคืนบทสนทนาที่ปรับให้อยู่ในรูปแบบสำหรับการแสดงผล: แท็กคำสั่งแบบฝังในบรรทัดจะถูกนำออกจากข้อความที่มองเห็น เพย์โหลด XML ของการเรียกใช้เครื่องมือในรูปข้อความธรรมดา (<tool_call>,<function_call>,<tool_calls>,<function_calls>รวมถึงบล็อกที่ถูกตัดทอน) และโทเค็นควบคุมของโมเดลที่รั่วไหลจะถูกนำออก แถวของผู้ช่วยที่มีเฉพาะโทเค็นเงียบ เช่นNO_REPLY/no_replyแบบตรงตัวจะถูกละเว้น และแถวที่มีขนาดใหญ่เกินไปอาจถูกแทนที่ด้วยข้อความตัวแทนที่ตัดทอนแล้ว- เซสชัน: ใช้เซสชันหลักเป็นค่าเริ่มต้นตามที่อธิบายไว้ข้างต้น โดย UI สามารถสลับระหว่างเซสชันได้
- การเริ่มต้นใช้งานครั้งแรกใช้เซสชันเฉพาะเพื่อแยกการตั้งค่าในการเรียกใช้ครั้งแรกออกจากกัน
- แคชออฟไลน์: แอปเก็บแคชแบบอ่านอย่างเดียวขนาดเล็กของเซสชันแชตและบทสนทนาล่าสุดแยกตามแต่ละ Gateway (
~/Library/Application Support/OpenClaw/chat-cache.sqlite): เมื่อเปิดแบบเริ่มต้นใหม่ แอปจะแสดงบทสนทนาล่าสุดที่ทราบทันทีและรีเฟรชเมื่อ Gateway ตอบกลับ อีกทั้งยังเรียกดูแชตล่าสุดได้ขณะตัดการเชื่อมต่อ (การส่งจะยังคงถูกปิดใช้งานจนกว่าการเชื่อมต่อจะกลับมา)
ขอบเขตด้านความปลอดภัย
- โหมดระยะไกลส่งต่อเฉพาะพอร์ตควบคุม WebSocket ของ Gateway ผ่าน SSH
ข้อจำกัดที่ทราบ
- UI ได้รับการปรับให้เหมาะสำหรับเซสชันแชต ไม่ใช่แซนด์บ็อกซ์เบราว์เซอร์เต็มรูปแบบ
เนื้อหาที่เกี่ยวข้อง
Was this useful?