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?
On this page

On this page