FAQ

คำถามที่พบบ่อย

คำตอบแบบรวดเร็วพร้อมการแก้ไขปัญหาเชิงลึกสำหรับการตั้งค่าในสถานการณ์จริง (การพัฒนาในเครื่อง, VPS, หลายเอเจนต์, OAuth/คีย์ API, การสลับโมเดลเมื่อขัดข้อง) สำหรับการวินิจฉัยรันไทม์ โปรดดู การแก้ไขปัญหา สำหรับเอกสารอ้างอิงการกำหนดค่าฉบับเต็ม โปรดดู การกำหนดค่า

60 วินาทีแรกเมื่อมีบางอย่างขัดข้อง

  • สถานะโดยย่อ

    bash
    openclaw status

    สรุปภายในเครื่องอย่างรวดเร็ว: ระบบปฏิบัติการ + การอัปเดต, การเข้าถึง Gateway/บริการ, เอเจนต์/เซสชัน, การกำหนดค่าผู้ให้บริการ + ปัญหารันไทม์ (เมื่อเข้าถึง Gateway ได้)

  • รายงานที่วางต่อได้ (แชร์ได้อย่างปลอดภัย)

    bash
    openclaw status --all

    การวินิจฉัยแบบอ่านอย่างเดียวพร้อมส่วนท้ายของบันทึก (ปกปิดโทเค็นแล้ว)

  • สถานะเดมอน + พอร์ต

    bash
    openclaw gateway status

    แสดงรันไทม์ของตัวควบคุมเทียบกับการเข้าถึง RPC, URL เป้าหมายของการตรวจสอบ และการกำหนดค่าที่บริการน่าจะใช้

  • การตรวจสอบเชิงลึก

    bash
    openclaw status --deep

    การตรวจสอบสถานะการทำงานของ Gateway แบบสด รวมถึงการตรวจสอบช่องทางเมื่อรองรับ (ต้องเข้าถึง Gateway ได้) โปรดดู สถานะการทำงาน

  • ติดตามบันทึกล่าสุด

    bash
    openclaw logs --follow

    หาก RPC ใช้งานไม่ได้ ให้ใช้วิธีสำรอง:

    bash
    tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)"

    บันทึกไฟล์แยกจากบันทึกบริการ โปรดดู การบันทึก และ การแก้ไขปัญหา

  • เรียกใช้เครื่องมือตรวจสอบและซ่อมแซม

    bash
    openclaw doctor

    ซ่อมแซม/ย้ายข้อมูลการกำหนดค่าและสถานะ จากนั้นเรียกใช้การตรวจสอบสถานะการทำงาน โปรดดู เครื่องมือตรวจสอบและซ่อมแซม

  • สแนปช็อต Gateway (เฉพาะ WS)

    bash
    openclaw health --jsonopenclaw health --verbose   # แสดง URL เป้าหมาย + พาธการกำหนดค่าเมื่อเกิดข้อผิดพลาด

    ขอรับสแนปช็อตฉบับเต็มจาก Gateway ที่กำลังทำงาน โปรดดู สถานะการทำงาน

  • การเริ่มต้นอย่างรวดเร็วและการตั้งค่าเมื่อใช้งานครั้งแรก

    คำถามและคำตอบสำหรับการใช้งานครั้งแรก ได้แก่ การติดตั้ง การเริ่มต้นใช้งาน เส้นทางการยืนยันตัวตน การสมัครใช้บริการ และความล้มเหลวเบื้องต้น อยู่ใน คำถามที่พบบ่อยสำหรับการใช้งานครั้งแรก

    OpenClaw คืออะไร?

    OpenClaw คืออะไรในหนึ่งย่อหน้า?

    OpenClaw คือผู้ช่วย AI ส่วนบุคคลที่คุณเรียกใช้บนอุปกรณ์ของตนเอง โดยตอบกลับผ่านช่องทางการส่งข้อความที่คุณใช้อยู่แล้ว (Discord, Google Chat, iMessage, Mattermost, Signal, Slack, Telegram, WebChat, WhatsApp และ Plugin ช่องทางที่รวมมาด้วย เช่น QQ Bot) และยังรองรับเสียงพร้อม Canvas แบบสดบนแพลตฟอร์มที่รองรับอีกด้วย Gateway คือระนาบควบคุมที่ทำงานตลอดเวลา ส่วนผู้ช่วยคือผลิตภัณฑ์

    คุณค่าที่นำเสนอ

    OpenClaw ไม่ใช่ "เพียงตัวครอบ Claude" แต่เป็น ระนาบควบคุมที่เน้นการทำงานภายในเครื่องเป็นหลัก ซึ่งเรียกใช้ผู้ช่วยที่มีความสามารถบน ฮาร์ดแวร์ของคุณเอง เข้าถึงได้จากแอปแชตที่คุณใช้อยู่แล้ว พร้อมเซสชันที่เก็บสถานะ หน่วยความจำ และเครื่องมือ โดยไม่ต้องมอบเวิร์กโฟลว์ของคุณให้กับ SaaS ที่โฮสต์โดยบุคคลอื่น

    • อุปกรณ์ของคุณ ข้อมูลของคุณ: เรียกใช้ Gateway ที่ใดก็ได้ตามต้องการ (Mac, Linux, VPS) และเก็บพื้นที่ทำงานกับประวัติเซสชันไว้ภายในเครื่อง
    • ช่องทางจริง ไม่ใช่แซนด์บ็อกซ์บนเว็บ: Discord/iMessage/Signal/Slack/Telegram/WhatsApp/ฯลฯ รวมถึงเสียงบนอุปกรณ์เคลื่อนที่และ Canvas บนแพลตฟอร์มที่รองรับ
    • ไม่ยึดติดกับโมเดล: ใช้ Anthropic, MiniMax, OpenAI, OpenRouter และอื่น ๆ พร้อมการกำหนดเส้นทางและการสลับเมื่อขัดข้องแยกตามเอเจนต์
    • ตัวเลือกเฉพาะภายในเครื่อง: เรียกใช้โมเดลภายในเครื่องเพื่อให้ข้อมูลทั้งหมดอยู่บนอุปกรณ์ของคุณได้
    • การกำหนดเส้นทางแบบหลายเอเจนต์: แยกเอเจนต์ตามช่องทาง บัญชี หรืองาน โดยแต่ละเอเจนต์มีพื้นที่ทำงานและค่าเริ่มต้นของตนเอง
    • โอเพนซอร์สและปรับแต่งได้: ตรวจสอบ ขยาย และโฮสต์ด้วยตนเองได้โดยไม่ติดอยู่กับผู้จำหน่ายรายใด

    เอกสาร: Gateway, ช่องทาง, หลายเอเจนต์, หน่วยความจำ

    เพิ่งตั้งค่าเสร็จ ควรทำอะไรเป็นอย่างแรก?

    โครงการแรกที่เหมาะสม ได้แก่ สร้างเว็บไซต์ (WordPress, Shopify หรือเว็บไซต์แบบคงที่), สร้างต้นแบบแอปบนอุปกรณ์เคลื่อนที่ (โครงร่าง หน้าจอ แผน API), จัดระเบียบไฟล์และโฟลเดอร์, เชื่อมต่อ Gmail และทำให้การสรุปหรือการติดตามผลเป็นอัตโนมัติ

    ระบบจัดการงานขนาดใหญ่ได้ แต่จะทำงานได้ดีที่สุดเมื่อแบ่งเป็นระยะและใช้เอเจนต์ย่อยสำหรับงานแบบขนาน

    กรณีใช้งานประจำวันห้าอันดับแรกของ OpenClaw มีอะไรบ้าง?
    • สรุปข้อมูลส่วนบุคคล: สรุปกล่องจดหมาย ปฏิทิน และข่าวที่คุณสนใจ
    • การค้นคว้าและร่างเนื้อหา: ค้นคว้าอย่างรวดเร็ว สรุป และสร้างร่างแรกสำหรับอีเมลหรือเอกสาร
    • การเตือนและการติดตามผล: การสะกิดเตือนและรายการตรวจสอบที่ขับเคลื่อนด้วย Cron หรือ Heartbeat
    • การทำงานอัตโนมัติในเบราว์เซอร์: กรอกแบบฟอร์ม รวบรวมข้อมูล และทำงานบนเว็บซ้ำ ๆ
    • การประสานงานข้ามอุปกรณ์: ส่งงานจากโทรศัพท์ ให้ Gateway เรียกใช้งานบนเซิร์ฟเวอร์ แล้วรับผลลัพธ์กลับมาในแชต
    OpenClaw ช่วยสร้างผู้มีโอกาสเป็นลูกค้า ติดต่อกลุ่มเป้าหมาย ทำโฆษณา และเขียนบล็อกสำหรับ SaaS ได้หรือไม่?

    ได้ สำหรับ การค้นคว้า การประเมินคุณสมบัติ และการร่างเนื้อหา เช่น สแกนเว็บไซต์ สร้างรายชื่อคัดเลือก สรุปข้อมูลผู้มีโอกาสเป็นลูกค้า และเขียนร่างข้อความติดต่อหรือข้อความโฆษณา

    สำหรับ การส่งข้อความติดต่อหรือการรันโฆษณา ควรให้มนุษย์มีส่วนร่วมในการตัดสินใจ หลีกเลี่ยงสแปม ปฏิบัติตามกฎหมายท้องถิ่นและนโยบายของแพลตฟอร์ม และตรวจทานทุกอย่างก่อนส่ง ให้ OpenClaw ร่าง แล้วคุณเป็นผู้อนุมัติ

    เอกสาร: ความปลอดภัย

    มีข้อได้เปรียบอะไรเมื่อเทียบกับ Claude Code สำหรับการพัฒนาเว็บ?

    OpenClaw เป็น ผู้ช่วยส่วนบุคคล และชั้นการประสานงาน ไม่ใช่สิ่งทดแทน IDE ใช้ Claude Code หรือ Codex เพื่อให้ได้วงจรการเขียนโค้ดโดยตรงภายในรีโพซิทอรีที่รวดเร็วที่สุด ใช้ OpenClaw สำหรับหน่วยความจำระยะยาว การเข้าถึงข้ามอุปกรณ์ และการประสานงานเครื่องมือ

    • หน่วยความจำและพื้นที่ทำงานที่คงอยู่ข้ามเซสชัน
    • การเข้าถึงหลายแพลตฟอร์ม (Telegram, WhatsApp, TUI, WebChat)
    • การประสานงานเครื่องมือ (เบราว์เซอร์ ไฟล์ การจัดกำหนดการ ฮุก)
    • Gateway ที่ทำงานตลอดเวลา (เรียกใช้บน VPS และโต้ตอบได้จากทุกที่)
    • Node สำหรับเบราว์เซอร์/หน้าจอ/กล้อง/การดำเนินคำสั่งภายในเครื่อง

    ตัวอย่างผลงาน: https://openclaw.ai/showcase

    Skills และการทำงานอัตโนมัติ

    จะปรับแต่ง Skills โดยไม่ทำให้รีโพซิทอรีมีการเปลี่ยนแปลงค้างอยู่ได้อย่างไร?

    ใช้การเขียนทับที่มีการจัดการแทนการแก้ไขสำเนาในรีโพซิทอรี ใส่การเปลี่ยนแปลงไว้ใน ~/.openclaw/skills/<name>/SKILL.md (หรือเพิ่มโฟลเดอร์ผ่าน skills.load.extraDirs ใน ~/.openclaw/openclaw.json) ลำดับความสำคัญ: <workspace>/skills -> <workspace>/.agents/skills -> ~/.agents/skills -> ~/.openclaw/skills -> ที่รวมมาด้วย -> skills.load.extraDirs ดังนั้นการเขียนทับที่มีการจัดการจึงมีผลเหนือ Skills ที่รวมมาด้วยโดยไม่ต้องแตะต้อง git หากต้องการติดตั้งแบบส่วนกลางแต่จำกัดการมองเห็นไว้เฉพาะบางเอเจนต์ ให้เก็บสำเนาที่ใช้ร่วมกันไว้ใน ~/.openclaw/skills และควบคุมการมองเห็นด้วย agents.defaults.skills / agents.list[].skills เฉพาะการแก้ไขที่เหมาะสมจะส่งกลับไปยังต้นทางเท่านั้นที่ควรส่งเป็น PR สำหรับสำเนาในรีโพซิทอรี

    โหลด Skills จากโฟลเดอร์ที่กำหนดเองได้หรือไม่?

    ได้: เพิ่มไดเรกทอรีผ่าน skills.load.extraDirs ใน ~/.openclaw/openclaw.json (มีลำดับความสำคัญต่ำสุดตามลำดับข้างต้น) โดยค่าเริ่มต้น clawhub จะติดตั้งลงใน ./skills ซึ่ง OpenClaw จะถือเป็น <workspace>/skills ในเซสชันถัดไป หากต้องการจำกัดการมองเห็นไว้เฉพาะบางเอเจนต์ ให้ใช้ร่วมกับ agents.defaults.skills หรือ agents.list[].skills

    จะใช้โมเดลหรือการตั้งค่าที่แตกต่างกันสำหรับงานแต่ละประเภทได้อย่างไร?

    รูปแบบที่รองรับ:

    • งาน Cron: งานแบบแยกส่วนสามารถตั้งค่าการเขียนทับ model แยกตามงานได้
    • เอเจนต์: กำหนดเส้นทางงานไปยังเอเจนต์แยกกันซึ่งมีโมเดลเริ่มต้น ระดับการคิด และพารามิเตอร์สตรีมต่างกัน
    • สลับตามต้องการ: /model สลับโมเดลของเซสชันปัจจุบันได้ทุกเมื่อ

    ตัวอย่าง - โมเดลเดียวกัน แต่ตั้งค่าแยกตามเอเจนต์ต่างกัน:

    json5
    {  agents: {    list: [      {        id: "coder",        model: "xiaomi/mimo-v2.5-pro",        thinkingDefault: "high",        params: { temperature: 0.1 },      },      {        id: "chat",        model: "xiaomi/mimo-v2.5-pro",        thinkingDefault: "off",        params: { temperature: 0.8 },      },    ],  },}

    ใส่ค่าเริ่มต้นที่ใช้ร่วมกันแยกตามโมเดลไว้ใน agents.defaults.models["provider/model"].params จากนั้นใส่ค่าที่เขียนทับเฉพาะเอเจนต์ใน agents.list[].params แบบแบน อย่าทำซ้ำโมเดลเดียวกันภายใต้ agents.list[].models["provider/model"].params ที่ซ้อนอยู่ เนื่องจากพาธดังกล่าวใช้สำหรับแค็ตตาล็อกโมเดลและค่าที่เขียนทับรันไทม์แยกตามเอเจนต์

    โปรดดู งาน Cron, การกำหนดเส้นทางแบบหลายเอเจนต์, การกำหนดค่า, คำสั่งแบบทับ

    บอตค้างขณะทำงานหนัก จะถ่ายโอนงานนั้นออกไปได้อย่างไร?

    ใช้ เอเจนต์ย่อย สำหรับงานที่ใช้เวลานานหรืองานแบบขนาน โดยจะทำงานในเซสชันของตนเอง ส่งคืนสรุป และช่วยให้แชตหลักยังตอบสนองได้ ขอให้บอต "สร้างเอเจนต์ย่อยสำหรับงานนี้" หรือใช้ /subagents ใช้ /status เพื่อตรวจสอบว่าขณะนี้ Gateway กำลังทำงานอยู่หรือไม่

    ทั้งงานที่ใช้เวลานานและเอเจนต์ย่อยต่างก็ใช้โทเค็น หากต้นทุนเป็นเรื่องสำคัญ ให้ตั้งค่าโมเดลที่มีราคาถูกกว่าสำหรับเอเจนต์ย่อยผ่าน agents.defaults.subagents.model

    เอกสาร: เอเจนต์ย่อย, งานเบื้องหลัง

    เซสชันเอเจนต์ย่อยที่ผูกกับเธรดทำงานอย่างไรบน Discord?

    ผูกเธรด Discord กับเอเจนต์ย่อยหรือเป้าหมายเซสชัน เพื่อให้ข้อความติดตามผลในเธรดนั้นยังคงอยู่ในเซสชันที่ผูกไว้

    • สร้างด้วย sessions_spawn โดยใช้ thread: true (เลือกใช้ mode: "session" เพิ่มเติมสำหรับการติดตามผลแบบต่อเนื่อง)
    • หรือผูกด้วยตนเองโดยใช้ /focus <target>
    • /agents ใช้ตรวจสอบสถานะการผูก
    • /session idle <duration|off> และ /session max-age <duration|off> ใช้ควบคุมการยกเลิกโฟกัสอัตโนมัติ
    • /unfocus ยกเลิกการเชื่อมโยงเธรด

    การกำหนดค่า: session.threadBindings.enabled (สวิตช์ส่วนกลาง), session.threadBindings.idleHours (ค่าเริ่มต้น 24, 0 ใช้ปิดใช้งาน), session.threadBindings.maxAgeHours (ค่าเริ่มต้น 0 = ไม่มีขีดจำกัดตายตัว) และค่าที่เขียนทับแยกตามช่องทาง channels.discord.threadBindings.{enabled,idleHours,maxAgeHours} ส่วน channels.discord.threadBindings.spawnSessions ควบคุมการผูกอัตโนมัติเมื่อสร้าง (ค่าเริ่มต้น true)

    เอกสาร: เอเจนต์ย่อย, Discord, เอกสารอ้างอิงการกำหนดค่า, คำสั่งแบบทับ

    เอเจนต์ย่อยทำงานเสร็จแล้ว แต่การอัปเดตเมื่อเสร็จสิ้นถูกส่งไปผิดที่หรือไม่เคยโพสต์ ควรตรวจสอบอะไร?

    ตรวจสอบเส้นทางของผู้ร้องขอที่ระบบแก้ไขแล้ว:

    • การส่งมอบของเอเจนต์ย่อยในโหมดเสร็จสิ้นจะให้ความสำคัญกับเธรดหรือเส้นทางการสนทนาที่ผูกไว้เมื่อมีอยู่
    • หากต้นทางของการเสร็จสิ้นมีเพียงช่องทาง OpenClaw จะใช้เส้นทางที่จัดเก็บไว้ของเซสชันผู้ร้องขอ (lastChannel / lastTo / lastAccountId) เป็นทางเลือก เพื่อให้การส่งโดยตรงยังคงสำเร็จได้
    • หากไม่มีเส้นทางที่ผูกไว้และไม่มีเส้นทางที่จัดเก็บไว้ซึ่งใช้ได้ การส่งโดยตรงอาจล้มเหลว และผลลัพธ์จะเปลี่ยนไปใช้การส่งผ่านคิวของเซสชันแทนการโพสต์ทันที
    • เป้าหมายที่ไม่ถูกต้องหรือล้าสมัยอาจบังคับให้ใช้คิวเป็นทางเลือก หรือทำให้การส่งขั้นสุดท้ายล้มเหลวได้เช่นกัน
    • หากการตอบกลับล่าสุดของผู้ช่วยในเอเจนต์ลูกที่ผู้ใช้มองเห็นตรงกับ NO_REPLY / no_reply หรือ ANNOUNCE_SKIP ทุกประการ OpenClaw จะระงับการประกาศโดยตั้งใจแทนการโพสต์ความคืบหน้าก่อนหน้าที่ล้าสมัย

    ดีบัก: openclaw tasks show <lookup> โดยที่ <lookup> คือรหัสงาน รหัสการเรียกใช้ หรือคีย์เซสชัน

    เอกสาร: เอเจนต์ย่อย, งานเบื้องหลัง, เครื่องมือเซสชัน

    Cron หรือการเตือนไม่ทำงาน ควรตรวจสอบอะไร?

    Cron ทำงานภายในกระบวนการ Gateway และจะไม่ทำงานหาก Gateway ไม่ได้ทำงานอย่างต่อเนื่อง

    • ยืนยันว่าเปิดใช้ Cron (cron.enabled) และไม่ได้ตั้งค่า OPENCLAW_SKIP_CRON
    • ยืนยันว่า Gateway ทำงานตลอด 24/7 (ไม่มีการพักเครื่อง/เริ่มระบบใหม่)
    • ตรวจสอบเขตเวลาของงาน (--tz เทียบกับเขตเวลาของโฮสต์)

    ดีบัก:

    bash
    openclaw cron run <jobId>openclaw cron runs --id <jobId> --limit 50

    เอกสาร: งาน Cron, ระบบอัตโนมัติ

    Cron ทำงานแล้ว แต่ทำไมจึงไม่มีสิ่งใดถูกส่งไปยังช่องทาง

    ตรวจสอบโหมดการส่ง:

    • --no-deliver / delivery.mode: "none": ไม่ควรมีการส่งสำรองจากตัวรัน
    • ไม่มีเป้าหมายการประกาศหรือเป้าหมายไม่ถูกต้อง (channel / to): ตัวรันข้ามการส่งออก
    • การยืนยันตัวตนของช่องทางล้มเหลว (unauthorized, Forbidden): ตัวรันพยายามส่ง แต่ข้อมูลประจำตัวขัดขวางไว้
    • ผลลัพธ์แบบแยกที่ไม่มีข้อความ (NO_REPLY / no_reply เท่านั้น) ถือว่าตั้งใจไม่ให้ส่ง ดังนั้นการส่งสำรองที่เข้าคิวไว้จึงถูกระงับด้วย

    สำหรับงาน Cron แบบแยก เอเจนต์ยังสามารถส่งโดยตรงด้วยเครื่องมือ message เมื่อมีเส้นทางแชตพร้อมใช้งาน --announce ควบคุมเฉพาะการส่งสำรองของตัวรันสำหรับข้อความสุดท้ายที่เอเจนต์ยังไม่ได้ส่งเองเท่านั้น

    ดีบัก:

    bash
    openclaw cron runs --id <jobId> --limit 50openclaw tasks show <lookup>

    เอกสาร: งาน Cron, งานเบื้องหลัง

    เหตุใดการรัน Cron แบบแยกจึงสลับโมเดลหรือลองใหม่หนึ่งครั้ง

    นั่นคือเส้นทางการสลับโมเดลขณะทำงาน ไม่ใช่การตั้งกำหนดการซ้ำ Cron แบบแยกจะบันทึกการส่งต่อโมเดลขณะทำงานและลองใหม่เมื่อการรันที่ใช้งานอยู่ส่งข้อผิดพลาด LiveSessionModelSwitchError โดยคงผู้ให้บริการ/โมเดลที่สลับแล้ว (รวมถึงการแทนที่โปรไฟล์การยืนยันตัวตนที่สลับแล้ว หากมี) ไว้ก่อนลองใหม่

    ลำดับความสำคัญในการเลือกโมเดล: การแทนที่โมเดลของฮุก Gmail (hooks.gmail.model) ก่อน ตามด้วย model ของแต่ละงาน จากนั้นเป็นการแทนที่โมเดลของเซสชัน Cron ที่จัดเก็บไว้ และสุดท้ายเป็นการเลือกโมเดลตามปกติของเอเจนต์/ค่าเริ่มต้น

    ลูปการลองใหม่จำกัดไว้ที่ความพยายามครั้งแรกบวกการลองใหม่หลังสลับ 2 ครั้ง จากนั้น Cron จะยุติแทนที่จะวนซ้ำตลอดไป

    ดีบัก:

    bash
    openclaw cron runs --id <jobId> --limit 50

    เอกสาร: งาน Cron, CLI ของ Cron

    ฉันจะติดตั้ง Skills บน Linux ได้อย่างไร

    ใช้คำสั่ง openclaw skills แบบเนทีฟหรือวาง Skills ลงในเวิร์กสเปซของคุณ UI ของ Skills บน macOS ไม่มีให้ใช้บน Linux เรียกดู Skills ได้ที่ https://clawhub.ai

    bash
    openclaw skills search "calendar"openclaw skills search --limit 20openclaw skills install @owner/<skill-slug>openclaw skills install @owner/<skill-slug> --version <version>openclaw skills install @owner/<skill-slug> --forceopenclaw skills install @owner/<skill-slug> --globalopenclaw skills update --allopenclaw skills update --all --globalopenclaw skills list --eligibleopenclaw skills check

    โดยค่าเริ่มต้น openclaw skills install แบบเนทีฟจะเขียนลงในไดเรกทอรี skills/ ของเวิร์กสเปซที่ใช้งานอยู่ เพิ่ม --global เพื่อติดตั้งลงในไดเรกทอรี Skills ที่มีการจัดการร่วมกันสำหรับเอเจนต์ภายในเครื่องทั้งหมด ติดตั้ง CLI clawhub แยกต่างหากเฉพาะเมื่อต้องการเผยแพร่หรือซิงค์ Skills ของคุณเอง ใช้ agents.defaults.skills หรือ agents.list[].skills เพื่อจำกัดว่าเอเจนต์ใดมองเห็น Skills ที่ใช้ร่วมกัน

    OpenClaw สามารถรันงานตามกำหนดเวลาหรือทำงานต่อเนื่องในเบื้องหลังได้หรือไม่

    ได้ ผ่านตัวกำหนดตารางเวลาของ Gateway:

    • งาน Cron สำหรับงานตามกำหนดเวลาหรืองานที่เกิดซ้ำ (คงอยู่หลังรีสตาร์ต)
    • Heartbeat สำหรับการตรวจสอบเป็นระยะในเซสชันหลัก
    • งานแบบแยก สำหรับเอเจนต์อัตโนมัติที่โพสต์ข้อมูลสรุปหรือส่งไปยังแชต

    เอกสาร: งาน Cron, ระบบอัตโนมัติ, Heartbeat

    ฉันสามารถรัน Skills ที่ใช้ได้เฉพาะ Apple macOS จาก Linux ได้หรือไม่

    ไม่ได้โดยตรง Skills ของ macOS ถูกควบคุมด้วย metadata.openclaw.os พร้อมไบนารีที่จำเป็น และจะโหลดเฉพาะเมื่อมีคุณสมบัติพร้อมบน โฮสต์ Gateway เท่านั้น บน Linux Skills ที่ใช้ได้เฉพาะ darwin (apple-notes, apple-reminders, things-mac) จะไม่โหลด เว้นแต่คุณจะแทนที่เงื่อนไขการอนุญาต

    รูปแบบที่รองรับมีสามแบบ:

    ตัวเลือก A - รัน Gateway บน Mac (ง่ายที่สุด) รัน Gateway ในเครื่องที่มีไบนารีของ macOS แล้วเชื่อมต่อจาก Linux ในโหมดระยะไกลหรือผ่าน Tailscale Skills จะโหลดตามปกติเพราะโฮสต์ Gateway เป็น macOS

    ตัวเลือก B - ใช้โหนด macOS (ไม่ใช้ SSH) รัน Gateway บน Linux จับคู่โหนด macOS (แอปแถบเมนู) และตั้งค่า Node Run Commands เป็น "Always Ask" หรือ "Always Allow" บน Mac OpenClaw จะถือว่า Skills ที่ใช้ได้เฉพาะ macOS มีคุณสมบัติพร้อมเมื่อโหนดมีไบนารีที่จำเป็น โดยเอเจนต์จะรันผ่านเครื่องมือ nodes เมื่อใช้ "Always Ask" การอนุมัติ "Always Allow" ในพรอมต์จะเพิ่มคำสั่งนั้นลงในรายการที่อนุญาต

    ตัวเลือก C - พร็อกซีไบนารีของ macOS ผ่าน SSH (ขั้นสูง) คง Gateway ไว้บน Linux แต่ทำให้ไบนารี CLI ที่จำเป็นชี้ไปยังตัวห่อหุ้ม SSH ซึ่งรันบน Mac จากนั้นแทนที่ Skill เพื่ออนุญาต Linux ให้ยังคงมีคุณสมบัติพร้อม

    1. สร้างตัวห่อหุ้ม SSH สำหรับไบนารี (ตัวอย่าง: memo สำหรับ Apple Notes):
      bash
      #!/usr/bin/env bashset -euo pipefailexec ssh -T user@mac-host /opt/homebrew/bin/memo "$@"
    2. วางตัวห่อหุ้มไว้ใน PATH บนโฮสต์ Linux (ตัวอย่างเช่น ~/bin/memo)
    3. แทนที่ข้อมูลเมตาของ Skill (ในเวิร์กสเปซหรือ ~/.openclaw/skills) เพื่ออนุญาต Linux:
      markdown
      ---name: apple-notesdescription: จัดการ Apple Notes ผ่าน CLI memo บน macOSmetadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["memo"] } } }---
    4. เริ่มเซสชันใหม่เพื่อรีเฟรชสแนปช็อตของ Skills
    มีการผสานรวมกับ Notion หรือ HeyGen หรือไม่

    ปัจจุบันยังไม่มีในตัว ตัวเลือกมีดังนี้:

    • Skill / Plugin แบบกำหนดเอง: เหมาะที่สุดสำหรับการเข้าถึง API ที่เชื่อถือได้ (ทั้งสองมี API)
    • ระบบอัตโนมัติผ่านเบราว์เซอร์: ใช้งานได้โดยไม่ต้องเขียนโค้ด แต่ช้ากว่าและเปราะบางกว่า

    สำหรับบริบทแยกตามลูกค้าในรูปแบบเอเจนซี: เก็บหน้า Notion หนึ่งหน้าต่อลูกค้าหนึ่งราย (บริบท + การกำหนดค่า + งานที่ดำเนินอยู่) และขอให้เอเจนต์ดึงหน้านั้นเมื่อเริ่มเซสชัน

    สำหรับการผสานรวมแบบเนทีฟ ให้เปิดคำขอฟีเจอร์หรือสร้าง Skill ที่ใช้งาน API เหล่านั้น

    bash
    openclaw skills install @owner/<skill-slug>openclaw skills update --all

    การติดตั้งแบบเนทีฟจะลงในไดเรกทอรี skills/ ของเวิร์กสเปซที่ใช้งานอยู่ ใช้ --global สำหรับเอเจนต์ภายในเครื่องทั้งหมด หรือกำหนดค่า agents.defaults.skills / agents.list[].skills เพื่อจำกัดการมองเห็น Skills บางรายการต้องใช้ไบนารีที่ติดตั้งผ่าน Homebrew สำหรับ Linux หมายถึง Linuxbrew

    ดู Skills, การกำหนดค่า Skills, ClawHub

    ฉันจะใช้ Chrome ที่ลงชื่อเข้าใช้อยู่แล้วกับ OpenClaw ได้อย่างไร

    ใช้โปรไฟล์เบราว์เซอร์ user ในตัว ซึ่งเชื่อมต่อผ่าน Chrome DevTools MCP:

    bash
    openclaw browser --browser-profile user tabsopenclaw browser --browser-profile user snapshot

    สำหรับชื่อที่กำหนดเอง ให้สร้างโปรไฟล์ MCP อย่างชัดเจน:

    bash
    openclaw browser create-profile --name chrome-live --driver existing-sessionopenclaw browser --browser-profile chrome-live tabs

    วิธีนี้ใช้เบราว์เซอร์ของโฮสต์ภายในเครื่องหรือโหนดเบราว์เซอร์ที่เชื่อมต่ออยู่ได้ หาก Gateway ทำงานอยู่ที่อื่น ให้รันโฮสต์โหนดบนเครื่องเบราว์เซอร์ หรือใช้ CDP ระยะไกลแทน

    ข้อจำกัดปัจจุบันของโปรไฟล์ existing-session / user เมื่อเทียบกับโปรไฟล์ openclaw ที่มีการจัดการ:

    • click, type, hover, scrollIntoView, drag และ select ต้องใช้การอ้างอิงสแนปช็อต ไม่ใช่ตัวเลือก CSS
    • ฮุกการอัปโหลดต้องใช้ ref หรือ inputRef ครั้งละหนึ่งไฟล์ และไม่มี element แบบ CSS
    • responsebody, การส่งออก PDF, การดักจับการดาวน์โหลด และการดำเนินการแบบกลุ่มยังต้องใช้เส้นทางเบราว์เซอร์ที่มีการจัดการ

    ดูการเปรียบเทียบทั้งหมดที่ เบราว์เซอร์

    แซนด์บ็อกซ์และหน่วยความจำ

    มีเอกสารเฉพาะสำหรับแซนด์บ็อกซ์หรือไม่

    มี: แซนด์บ็อกซ์ สำหรับการตั้งค่าเฉพาะ Docker (Gateway แบบเต็มใน Docker หรืออิมเมจแซนด์บ็อกซ์) ดู Docker

    Docker ดูมีข้อจำกัด ฉันจะเปิดใช้ฟีเจอร์ทั้งหมดได้อย่างไร

    อิมเมจเริ่มต้นให้ความสำคัญกับความปลอดภัยและทำงานในฐานะผู้ใช้ node จึงไม่รวมแพ็กเกจระบบ, Homebrew และเบราว์เซอร์ที่ให้มาด้วย สำหรับการตั้งค่าที่ครบถ้วนยิ่งขึ้น:

    • ทำให้ /home/node คงอยู่ด้วย OPENCLAW_HOME_VOLUME เพื่อให้แคชยังคงอยู่
    • บรรจุการขึ้นต่อกันของระบบไว้ในอิมเมจด้วย OPENCLAW_IMAGE_APT_PACKAGES
    • ติดตั้งเบราว์เซอร์ Playwright ผ่าน CLI ที่ให้มาด้วย: node /app/node_modules/playwright-core/cli.js install chromium
    • ตั้งค่า PLAYWRIGHT_BROWSERS_PATH และทำให้พาธนั้นคงอยู่

    เอกสาร: Docker, เบราว์เซอร์

    ฉันสามารถเก็บ DM ให้เป็นส่วนตัว แต่ทำให้กลุ่มเป็นสาธารณะ/อยู่ในแซนด์บ็อกซ์ด้วยเอเจนต์เดียวได้หรือไม่

    ได้ หากการรับส่งข้อมูลส่วนตัวเป็น DM และการรับส่งข้อมูลสาธารณะเป็น กลุ่ม ตั้งค่า agents.defaults.sandbox.mode: "non-main" เพื่อให้เซสชันกลุ่ม/ช่องทาง (คีย์ที่ไม่ใช่คีย์หลัก) ทำงานในแบ็กเอนด์แซนด์บ็อกซ์ที่กำหนดค่าไว้ ขณะที่เซสชัน DM หลักยังคงทำงานบนโฮสต์ Docker เป็นแบ็กเอนด์เริ่มต้นเมื่อเปิดใช้แซนด์บ็อกซ์แล้ว จำกัดเครื่องมือที่ใช้ได้ในเซสชันแซนด์บ็อกซ์ผ่าน tools.sandbox.tools

    ขั้นตอนการตั้งค่า: กลุ่ม: DM ส่วนตัว + กลุ่มสาธารณะ ข้อมูลอ้างอิงสำคัญ: การกำหนดค่า Gateway

    ฉันจะผูกโฟลเดอร์ของโฮสต์เข้ากับแซนด์บ็อกซ์ได้อย่างไร

    ตั้งค่า agents.defaults.sandbox.docker.binds เป็น ["host:container:mode"] (ตัวอย่างเช่น "/home/user/src:/src:ro") การผูกระดับส่วนกลางและระดับเอเจนต์จะถูกรวมเข้าด้วยกัน การผูกระดับเอเจนต์จะถูกละเว้นเมื่อ scope: "shared" ใช้ :ro สำหรับข้อมูลที่ละเอียดอ่อน เพราะการผูกจะข้ามกำแพงระบบไฟล์ของแซนด์บ็อกซ์

    OpenClaw ตรวจสอบแหล่งที่มาของการผูกทั้งกับพาธที่ปรับให้อยู่ในรูปแบบมาตรฐานและพาธตามรูปจริงที่แก้ไขผ่านบรรพบุรุษที่ลึกที่สุดซึ่งมีอยู่ ดังนั้นการหลบหนีผ่านไดเรกทอรีแม่ที่เป็นลิงก์สัญลักษณ์จะถูกปฏิเสธโดยค่าเริ่มต้น แม้ส่วนสุดท้ายของพาธจะยังไม่มีอยู่ก็ตาม

    ดู แซนด์บ็อกซ์ และ แซนด์บ็อกซ์ เทียบกับนโยบายเครื่องมือ เทียบกับสิทธิ์ยกระดับ

    หน่วยความจำทำงานอย่างไร

    หน่วยความจำของ OpenClaw คือไฟล์ Markdown ในเวิร์กสเปซของเอเจนต์: บันทึกรายวันอยู่ใน memory/YYYY-MM-DD.md และบันทึกระยะยาวที่คัดสรรแล้วอยู่ใน MEMORY.md (เฉพาะเซสชันหลัก/ส่วนตัว)

    OpenClaw ยังเรียกใช้ การบันทึกหน่วยความจำก่อน Compaction แบบเงียบก่อนที่ Compaction จะสรุปบทสนทนา เพื่อเตือนให้โมเดลเขียนบันทึกถาวรก่อน กระบวนการนี้ทำงานเฉพาะเมื่อเวิร์กสเปซเขียนได้ (แซนด์บ็อกซ์แบบอ่านอย่างเดียวจะข้ามขั้นตอนนี้) ปิดใช้งานด้วย agents.defaults.compaction.memoryFlush.enabled: false ดู หน่วยความจำ

    หน่วยความจำลืมข้อมูลอยู่เรื่อย ๆ ฉันจะทำให้จดจำไว้ได้อย่างไร

    ขอให้บอต เขียนข้อเท็จจริงลงในหน่วยความจำ: บันทึกระยะยาวอยู่ใน MEMORY.md และบริบทระยะสั้นอยู่ใน memory/YYYY-MM-DD.md การเตือนให้โมเดลจัดเก็บความทรงจำมักแก้ปัญหานี้ได้ หากยังคงลืม ให้ตรวจสอบว่า Gateway ใช้เวิร์กสเปซเดียวกันในการรันทุกครั้ง

    เอกสาร: หน่วยความจำ, เวิร์กสเปซของเอเจนต์

    หน่วยความจำคงอยู่ตลอดไปหรือไม่? มีขีดจำกัดอะไรบ้าง?

    ไฟล์หน่วยความจำอยู่บนดิสก์และคงอยู่จนกว่าจะถูกลบ ขีดจำกัดคือพื้นที่จัดเก็บของคุณ ไม่ใช่โมเดล อย่างไรก็ตาม บริบทเซสชัน ยังคงถูกจำกัดด้วยหน้าต่างบริบทของโมเดล ดังนั้นการสนทนาที่ยาวอาจถูกทำ Compaction หรือตัดทอน นั่นคือเหตุผลที่มีการค้นหาหน่วยความจำ ซึ่งจะดึงกลับมาในบริบทเฉพาะส่วนที่เกี่ยวข้องเท่านั้น

    เอกสาร: หน่วยความจำ, บริบท

    การค้นหาหน่วยความจำเชิงความหมายต้องใช้คีย์ OpenAI API หรือไม่?

    ต้องใช้เฉพาะเมื่อคุณใช้ OpenAI embeddings ซึ่งเป็นผู้ให้บริการเริ่มต้น Codex OAuth ครอบคลุมการแชต/การสร้างข้อความให้สมบูรณ์ แต่ ไม่ได้ ให้สิทธิ์เข้าถึง embeddings ดังนั้นการลงชื่อเข้าใช้ด้วย Codex (OAuth หรือการเข้าสู่ระบบ Codex CLI) จึงไม่เปิดใช้การค้นหาหน่วยความจำเชิงความหมาย OpenAI embeddings ยังคงต้องใช้คีย์ API จริง (OPENAI_API_KEY หรือ models.providers.openai.apiKey)

    หากต้องการทำงานภายในเครื่อง ให้ตั้งค่า agents.defaults.memorySearch.provider: "local" (GGUF/llama.cpp) ผู้ให้บริการอื่นที่รองรับ ได้แก่ Bedrock, DeepInfra, Gemini (GEMINI_API_KEY หรือ memorySearch.remote.apiKey), GitHub Copilot, LM Studio, Mistral, Ollama, OpenAI-compatible และ Voyage ดูรายละเอียดการตั้งค่าได้ที่ หน่วยความจำ และ การค้นหาหน่วยความจำ

    สิ่งต่าง ๆ อยู่ที่ใดบนดิสก์

    ข้อมูลทั้งหมดที่ใช้กับ OpenClaw ถูกบันทึกไว้ภายในเครื่องหรือไม่?

    ไม่: สถานะของ OpenClaw เองอยู่ภายในเครื่อง แต่ บริการภายนอกยังคงเห็นสิ่งที่คุณส่งให้บริการเหล่านั้น

    • อยู่ภายในเครื่องโดยค่าเริ่มต้น: เซสชัน ไฟล์หน่วยความจำ การกำหนดค่า และพื้นที่ทำงานอยู่บนโฮสต์ Gateway (~/.openclaw รวมถึงไดเรกทอรีพื้นที่ทำงานของคุณ)
    • อยู่ระยะไกลโดยความจำเป็น: ข้อความที่ส่งไปยังผู้ให้บริการโมเดล (Anthropic/OpenAI/ฯลฯ) จะถูกส่งไปยัง API ของผู้ให้บริการ และแพลตฟอร์มแชต (Slack/Telegram/WhatsApp/ฯลฯ) จะจัดเก็บข้อมูลข้อความไว้บนเซิร์ฟเวอร์ของตน
    • คุณควบคุมขอบเขตข้อมูลได้: โมเดลภายในเครื่องเก็บพรอมต์ไว้บนเครื่องของคุณ แต่การรับส่งข้อมูลของช่องทางยังคงผ่านเซิร์ฟเวอร์ของช่องทางนั้น

    ที่เกี่ยวข้อง: พื้นที่ทำงานของเอเจนต์, หน่วยความจำ

    OpenClaw จัดเก็บข้อมูลไว้ที่ใด?

    ทุกอย่างอยู่ภายใต้ $OPENCLAW_STATE_DIR (ค่าเริ่มต้น: ~/.openclaw):

    พาธ วัตถุประสงค์
    $OPENCLAW_STATE_DIR/openclaw.json การกำหนดค่าหลัก (JSON5)
    $OPENCLAW_STATE_DIR/credentials/oauth.json การนำเข้า OAuth แบบเดิม (คัดลอกไปยังโปรไฟล์การตรวจสอบสิทธิ์เมื่อใช้งานครั้งแรก)
    $OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth-profiles.json โปรไฟล์การตรวจสอบสิทธิ์ (OAuth, คีย์ API, keyRef/tokenRef ซึ่งเป็นตัวเลือก)
    $OPENCLAW_STATE_DIR/secrets.json เพย์โหลดข้อมูลลับแบบใช้ไฟล์ซึ่งเป็นตัวเลือก สำหรับผู้ให้บริการ SecretRef file
    $OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth.json ไฟล์ความเข้ากันได้แบบเดิม (ลบรายการ api_key แบบคงที่แล้ว)
    $OPENCLAW_STATE_DIR/credentials/ สถานะผู้ให้บริการ (ตัวอย่างเช่น whatsapp/<accountId>/creds.json)
    $OPENCLAW_STATE_DIR/agents/ สถานะต่อเอเจนต์ (agentDir + อาร์ติแฟกต์เซสชันแบบเดิม/ที่เก็บถาวร)
    $OPENCLAW_STATE_DIR/agents/<agentId>/agent/openclaw-agent.sqlite สถานะ SQLite ต่อเอเจนต์ รวมถึงแถวเซสชันและบทถอดความ
    $OPENCLAW_STATE_DIR/agents/<agentId>/sessions/ แหล่งข้อมูลสำหรับย้ายเซสชันแบบเดิมและอาร์ติแฟกต์สำหรับการเก็บถาวร/การสนับสนุน

    พาธเอเจนต์เดียวแบบเดิม ~/.openclaw/agent/* จะถูกย้ายโดย openclaw doctor

    พื้นที่ทำงาน ของคุณ (AGENTS.md, ไฟล์หน่วยความจำ, Skills ฯลฯ) แยกต่างหาก โดยกำหนดค่าผ่าน agents.defaults.workspace (ค่าเริ่มต้น: ~/.openclaw/workspace)

    AGENTS.md / SOUL.md / USER.md / MEMORY.md ควรอยู่ที่ใด?

    ไฟล์เหล่านี้อยู่ใน พื้นที่ทำงานของเอเจนต์ ไม่ใช่ ~/.openclaw

    • พื้นที่ทำงาน (ต่อเอเจนต์): AGENTS.md, SOUL.md, IDENTITY.md, USER.md, MEMORY.md, memory/YYYY-MM-DD.md, และ HEARTBEAT.md ซึ่งเป็นตัวเลือก รากตัวพิมพ์เล็ก memory.md เป็นเพียงอินพุตสำหรับการซ่อมแซมแบบเดิมเท่านั้น โดย openclaw doctor --fix สามารถผสานเข้ากับ MEMORY.md เมื่อมีทั้งคู่
    • ไดเรกทอรีสถานะ (~/.openclaw): การกำหนดค่า สถานะช่องทาง/ผู้ให้บริการ โปรไฟล์การตรวจสอบสิทธิ์ เซสชัน บันทึก และ Skills ที่ใช้ร่วมกัน (~/.openclaw/skills)

    พื้นที่ทำงานเริ่มต้นคือ ~/.openclaw/workspace และสามารถกำหนดค่าได้:

    json5
    {  agents: { defaults: { workspace: "~/.openclaw/workspace" } },}

    หากบอต "ลืม" หลังจากรีสตาร์ต ให้ยืนยันว่า Gateway ใช้พื้นที่ทำงานเดียวกันทุกครั้งที่เปิดใช้งาน (โหมดระยะไกลใช้พื้นที่ทำงานของ โฮสต์ Gateway ไม่ใช่แล็ปท็อปภายในเครื่องของคุณ)

    เคล็ดลับ: สำหรับลักษณะการทำงานหรือค่ากำหนดที่ต้องการให้คงอยู่ ให้ขอให้บอต เขียนลงใน AGENTS.md หรือ MEMORY.md แทนการพึ่งพาประวัติการแชต

    ดู พื้นที่ทำงานของเอเจนต์ และ หน่วยความจำ

    ฉันสามารถทำให้ SOUL.md ใหญ่ขึ้นได้หรือไม่?

    ได้ SOUL.md เป็นหนึ่งในไฟล์บูตสแตรปของพื้นที่ทำงานที่แทรกลงในบริบทของเอเจนต์ ขีดจำกัดการแทรกเริ่มต้นต่อไฟล์คือ 20000 อักขระ และงบประมาณบูตสแตรปรวมของทุกไฟล์คือ 60000 อักขระ

    เปลี่ยนค่าเริ่มต้นที่ใช้ร่วมกัน:

    json5
    {  agents: {    defaults: {      bootstrapMaxChars: 50000,      bootstrapTotalMaxChars: 300000,    },  },}

    หรือแทนที่ค่าสำหรับเอเจนต์หนึ่งตัวภายใต้ agents.list[].bootstrapMaxChars / bootstrapTotalMaxChars

    ใช้ /context เพื่อตรวจสอบขนาดข้อมูลดิบเทียบกับขนาดที่แทรก และตรวจสอบว่าเกิดการตัดทอนหรือไม่ ให้ SOUL.md เน้นที่น้ำเสียง จุดยืน และบุคลิกภาพ ส่วนกฎการทำงานให้ใส่ใน AGENTS.md และข้อเท็จจริงที่ต้องการให้คงอยู่ให้ใส่ในหน่วยความจำ

    ดู บริบท และ การกำหนดค่าเอเจนต์

    กลยุทธ์การสำรองข้อมูลที่แนะนำ

    ใส่ พื้นที่ทำงานของเอเจนต์ ไว้ในที่เก็บ git ส่วนตัว และสำรองข้อมูลไว้ในที่ส่วนตัว (ตัวอย่างเช่น GitHub private) วิธีนี้จะเก็บทั้งหน่วยความจำและไฟล์ AGENTS/SOUL/USER และช่วยให้คุณกู้คืน "จิตใจ" ของผู้ช่วยได้ในภายหลัง

    อย่า คอมมิตสิ่งใดที่อยู่ภายใต้ ~/.openclaw (ข้อมูลประจำตัว เซสชัน โทเค็น เพย์โหลดข้อมูลลับที่เข้ารหัส) หากต้องการกู้คืนทั้งหมด ให้สำรองพื้นที่ทำงานและไดเรกทอรีสถานะแยกกัน

    เอกสาร: พื้นที่ทำงานของเอเจนต์

    ฉันจะถอนการติดตั้ง OpenClaw โดยสมบูรณ์ได้อย่างไร?

    ดู ถอนการติดตั้ง

    เอเจนต์สามารถทำงานนอกพื้นที่ทำงานได้หรือไม่?

    ได้ พื้นที่ทำงานคือ cwd เริ่มต้น และจุดยึดของหน่วยความจำ ไม่ใช่แซนด์บ็อกซ์ที่บังคับใช้ พาธสัมพัทธ์จะถูกแก้ไขภายในพื้นที่ทำงาน ส่วนพาธสัมบูรณ์สามารถเข้าถึงตำแหน่งอื่นบนโฮสต์ได้ เว้นแต่จะเปิดใช้แซนด์บ็อกซ์ สำหรับการแยกสภาพแวดล้อม ให้ใช้ agents.defaults.sandbox หรือการตั้งค่าแซนด์บ็อกซ์ต่อเอเจนต์ หากต้องการให้ที่เก็บเป็นไดเรกทอรีทำงานเริ่มต้น ให้ชี้ workspace ของเอเจนต์นั้นไปยังรากของที่เก็บ ตัวที่เก็บ OpenClaw เองเป็นเพียงซอร์สโค้ด ดังนั้นควรแยกพื้นที่ทำงานออกจากกัน เว้นแต่คุณตั้งใจให้เอเจนต์ทำงานภายในที่เก็บนั้น

    json5
    {  agents: {    defaults: {      workspace: "~/Projects/my-repo",    },  },}
    โหมดระยะไกล: ที่เก็บเซสชันอยู่ที่ใด?

    สถานะเซสชันเป็นของ โฮสต์ Gateway ในโหมดระยะไกล ที่เก็บเซสชันที่เกี่ยวข้องกับคุณจะอยู่บนเครื่องระยะไกล ไม่ใช่แล็ปท็อปภายในเครื่องของคุณ ดู การจัดการเซสชัน

    พื้นฐานการกำหนดค่า

    การกำหนดค่าใช้รูปแบบใด? อยู่ที่ใด?

    OpenClaw อ่านการกำหนดค่า JSON5 ซึ่งเป็นตัวเลือกจาก $OPENCLAW_CONFIG_PATH (ค่าเริ่มต้น: ~/.openclaw/openclaw.json) หากไม่มีไฟล์นี้ ระบบจะใช้ค่าเริ่มต้นที่ค่อนข้างปลอดภัย รวมถึงพื้นที่ทำงานเริ่มต้นที่ ~/.openclaw/workspace

    ฉันตั้งค่า gateway.bind: "lan" (หรือ "tailnet") แล้วตอนนี้ไม่มีอะไรรับฟัง / UI แจ้งว่าไม่ได้รับอนุญาต

    การผูกกับอินเทอร์เฟซที่ไม่ใช่ลูปแบ็ก ต้องมีเส้นทางการตรวจสอบสิทธิ์ Gateway ที่ถูกต้อง ได้แก่ การตรวจสอบสิทธิ์ด้วยข้อมูลลับร่วมกัน (โทเค็นหรือรหัสผ่าน) หรือ gateway.auth.mode: "trusted-proxy" ที่อยู่หลังพร็อกซีย้อนกลับซึ่งรับรู้ข้อมูลประจำตัวและกำหนดค่าอย่างถูกต้อง

    json5
    {  gateway: {    bind: "lan",    auth: {      mode: "token",      token: "replace-me",    },  },}
    • gateway.remote.token / .password ไม่ได้ เปิดใช้การตรวจสอบสิทธิ์ Gateway ภายในเครื่องด้วยตัวเอง เส้นทางการเรียกภายในเครื่องสามารถใช้ gateway.remote.* เป็นทางเลือกสำรองได้เฉพาะเมื่อไม่ได้ตั้งค่า gateway.auth.*
    • สำหรับการตรวจสอบสิทธิ์ด้วยรหัสผ่าน ให้ตั้งค่า gateway.auth.mode: "password" พร้อมกับ gateway.auth.password (หรือ OPENCLAW_GATEWAY_PASSWORD)
    • หากกำหนดค่า gateway.auth.token / .password อย่างชัดเจนผ่าน SecretRef แต่ไม่สามารถแก้ค่าได้ การแก้ค่าจะล้มเหลวแบบปิดกั้น (ไม่มีทางเลือกสำรองระยะไกลมาบดบังความล้มเหลว)
    • การตั้งค่า Control UI ที่ใช้ข้อมูลลับร่วมกันจะตรวจสอบสิทธิ์ผ่าน connect.params.auth.token หรือ connect.params.auth.password (จัดเก็บไว้ในการตั้งค่าแอป/UI) โหมดที่มีข้อมูลประจำตัว เช่น Tailscale Serve หรือ trusted-proxy จะใช้ส่วนหัวคำขอแทน ควรหลีกเลี่ยงการใส่ข้อมูลลับร่วมกันไว้ใน URL
    • เมื่อใช้ gateway.auth.mode: "trusted-proxy" พร็อกซีย้อนกลับแบบลูปแบ็กบนโฮสต์เดียวกันต้องกำหนด gateway.auth.trustedProxy.allowLoopback = true อย่างชัดเจน และมีรายการลูปแบ็กใน gateway.trustedProxies
    ทำไมตอนนี้ฉันจึงต้องใช้โทเค็นบน localhost?

    OpenClaw บังคับใช้การตรวจสอบสิทธิ์ Gateway โดยค่าเริ่มต้น รวมถึงลูปแบ็ก หากไม่ได้กำหนดเส้นทางการตรวจสอบสิทธิ์อย่างชัดเจน การเริ่มต้นระบบจะใช้โหมดโทเค็นและสร้างโทเค็นเฉพาะรันไทม์สำหรับการเริ่มต้นครั้งนั้น ดังนั้นไคลเอนต์ WS ภายในเครื่องต้องตรวจสอบสิทธิ์ วิธีนี้ป้องกันไม่ให้กระบวนการอื่นภายในเครื่องเรียก Gateway

    กำหนด gateway.auth.token, gateway.auth.password, OPENCLAW_GATEWAY_TOKEN หรือ OPENCLAW_GATEWAY_PASSWORD อย่างชัดเจน เมื่อไคลเอนต์ต้องใช้ข้อมูลลับที่คงเดิมข้ามการรีสตาร์ต คุณยังสามารถเลือกโหมดรหัสผ่าน หรือ trusted-proxy สำหรับพร็อกซีย้อนกลับที่รับรู้ข้อมูลประจำตัวได้ สำหรับลูปแบ็กแบบเปิด ให้ตั้งค่า gateway.auth.mode: "none" อย่างชัดเจน openclaw doctor --generate-gateway-token จะสร้างโทเค็นได้ทุกเมื่อ

    ฉันต้องรีสตาร์ตหลังจากเปลี่ยนการกำหนดค่าหรือไม่?

    Gateway เฝ้าดูการกำหนดค่าและรองรับการโหลดซ้ำแบบร้อน: gateway.reload.mode: "hybrid" (ค่าเริ่มต้น) จะใช้การเปลี่ยนแปลงที่ปลอดภัยแบบร้อนและรีสตาร์ตเมื่อมีการเปลี่ยนแปลงสำคัญ นอกจากนี้ยังรองรับ hot, restart และ off การเปลี่ยนแปลงส่วนใหญ่ใน tools.*, นโยบาย agents.*, session.* และ messages.* จะมีผลทันทีโดยไม่ต้องดำเนินการโหลดซ้ำ ส่วนการเปลี่ยนการผูก/พอร์ตของ gateway.* ต้องรีสตาร์ต

    ฉันจะปิดสโลแกน CLI ตลก ๆ ได้อย่างไร?

    ตั้งค่า cli.banner.taglineMode:

    json5
    {  cli: {    banner: {      taglineMode: "off", // random | default | off    },  },}
    • off: ซ่อนข้อความสโลแกน แต่ยังคงแสดงบรรทัดชื่อ/เวอร์ชันของแบนเนอร์
    • default: ใช้ All your chats, one OpenClaw. เสมอ
    • random: หมุนเวียนสโลแกนตลก/ตามฤดูกาล (ลักษณะการทำงานเริ่มต้น)
    • หากไม่ต้องการแบนเนอร์เลย ให้ตั้งค่าตัวแปรสภาพแวดล้อม OPENCLAW_HIDE_BANNER=1
    ฉันจะเปิดใช้การค้นหาเว็บ (และการดึงข้อมูลเว็บ) ได้อย่างไร?

    web_fetch ทำงานได้โดยไม่ต้องใช้คีย์ API ส่วน web_search ขึ้นอยู่กับผู้ให้บริการที่คุณเลือก:

    ผู้ให้บริการ ไม่ต้องใช้คีย์ ตัวแปรสภาพแวดล้อม
    Brave ไม่ BRAVE_API_KEY
    DuckDuckGo ใช่ (ใช้ HTML อย่างไม่เป็นทางการ) -
    Exa ไม่ EXA_API_KEY
    Firecrawl ไม่ FIRECRAWL_API_KEY
    Gemini ไม่ GEMINI_API_KEY
    Grok ไม่ (xAI OAuth หรือคีย์) XAI_API_KEY
    Kimi ไม่ KIMI_API_KEY หรือ MOONSHOT_API_KEY
    MiniMax Search ไม่ MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY หรือ MINIMAX_API_KEY
    Ollama Web Search ใช่ (ต้องมี ollama signin) -
    Perplexity ไม่ PERPLEXITY_API_KEY หรือ OPENROUTER_API_KEY
    SearXNG ใช่ (โฮสต์เอง) SEARXNG_BASE_URL
    Tavily ไม่ TAVILY_API_KEY

    Grok ยังสามารถนำ xAI OAuth จากการยืนยันตัวตนของโมเดลมาใช้ซ้ำได้ (openclaw onboard --auth-choice xai-oauth)

    แนะนำ: openclaw configure --section web และเลือกผู้ให้บริการ

    json5
    {  plugins: {    entries: {      brave: {        config: {          webSearch: {            apiKey: "BRAVE_API_KEY_HERE",          },        },      },    },  },  tools: {    web: {      search: {        enabled: true,        provider: "brave",        maxResults: 5,      },      fetch: {        enabled: true,        provider: "firecrawl", // ไม่บังคับ; ละไว้เพื่อตรวจหาอัตโนมัติ      },    },  },}

    การกำหนดค่าการค้นหาเว็บเฉพาะผู้ให้บริการอยู่ภายใต้ plugins.entries.<plugin>.config.webSearch.* เส้นทางผู้ให้บริการแบบเดิม tools.web.search.* ยังคงโหลดได้เพื่อความเข้ากันได้ แต่ไม่ควรใช้ในการกำหนดค่าใหม่ การกำหนดค่าตัวสำรองการดึงเว็บของ Firecrawl อยู่ภายใต้ plugins.entries.firecrawl.config.webFetch.*

    • รายการอนุญาต: เพิ่ม web_search/web_fetch/x_search หรือ group:web สำหรับทั้งสามรายการ
    • web_fetch เปิดใช้งานโดยค่าเริ่มต้น
    • หากละ tools.web.fetch.provider ไว้ OpenClaw จะตรวจหาผู้ให้บริการตัวสำรองสำหรับการดึงข้อมูลรายแรกที่พร้อมใช้งานจากข้อมูลรับรองที่มีอยู่โดยอัตโนมัติ โดย Plugin Firecrawl อย่างเป็นทางการเป็นผู้จัดเตรียมตัวสำรองดังกล่าว
    • ดีมอนอ่านตัวแปรสภาพแวดล้อมจาก ~/.openclaw/.env (หรือสภาพแวดล้อมของบริการ)

    เอกสาร: เครื่องมือเว็บ

    config.apply ล้างการกำหนดค่าของฉัน ฉันจะกู้คืนและป้องกันไม่ให้เกิดขึ้นอีกได้อย่างไร

    config.apply จะแทนที่ การกำหนดค่าทั้งหมด อ็อบเจ็กต์บางส่วนจะลบรายการอื่นทั้งหมด

    OpenClaw เวอร์ชันปัจจุบันป้องกันการเขียนทับโดยไม่ตั้งใจได้เกือบทั้งหมด:

    • การเขียนการกำหนดค่าที่ OpenClaw เป็นเจ้าของจะตรวจสอบการกำหนดค่าทั้งหมดหลังการเปลี่ยนแปลงก่อนเขียน
    • การเขียนที่ OpenClaw เป็นเจ้าของซึ่งไม่ถูกต้องหรือก่อให้เกิดความเสียหายจะถูกปฏิเสธและบันทึกเป็น openclaw.json.rejected.*
    • การแก้ไขโดยตรงที่ทำให้การเริ่มต้นหรือการรีโหลดแบบทันทีเสียหาย จะทำให้ Gateway ปฏิเสธการทำงานเพื่อความปลอดภัยหรือข้ามการรีโหลด โดยจะไม่เขียน openclaw.json ใหม่
    • openclaw doctor --fix เป็นผู้รับผิดชอบการซ่อมแซม สามารถคืนค่าการกำหนดค่าล่าสุดที่ทราบว่าใช้งานได้ และบันทึกไฟล์ที่ถูกปฏิเสธเป็น openclaw.json.clobbered.*

    การกู้คืน:

    • ตรวจสอบ openclaw logs --follow เพื่อหา Invalid config at, Config write rejected: หรือ config reload skipped (invalid config)
    • ตรวจสอบ openclaw.json.clobbered.* หรือ openclaw.json.rejected.* ที่ใหม่ที่สุดซึ่งอยู่ข้างการกำหนดค่าที่ใช้งานอยู่
    • เรียกใช้ openclaw config validate และ openclaw doctor --fix
    • คัดลอกกลับเฉพาะคีย์ที่ต้องการด้วย openclaw config set หรือ config.patch
    • หากไม่มีการกำหนดค่าล่าสุดที่ทราบว่าใช้งานได้หรือเพย์โหลดที่ถูกปฏิเสธ ให้คืนค่าจากข้อมูลสำรอง หรือเรียกใช้ openclaw doctor อีกครั้งแล้วกำหนดค่าช่องทาง/โมเดลใหม่
    • หากข้อมูลสูญหายโดยไม่คาดคิด ให้รายงานบั๊กพร้อมการกำหนดค่าล่าสุดที่ทราบหรือข้อมูลสำรอง เอเจนต์เขียนโค้ดภายในเครื่องมักสร้างการกำหนดค่าที่ใช้งานได้ขึ้นใหม่จากบันทึกหรือประวัติได้

    วิธีหลีกเลี่ยง: ใช้ openclaw config set สำหรับการเปลี่ยนแปลงเล็กน้อย, openclaw configure สำหรับการแก้ไขแบบโต้ตอบ, config.schema.lookup เพื่อตรวจสอบเส้นทางที่ไม่คุ้นเคย (ส่งคืนโหนดสคีมาแบบตื้นพร้อมสรุปลูกโดยตรง) และ config.patch สำหรับการแก้ไข RPC บางส่วน โดยสงวน config.apply ไว้สำหรับการแทนที่การกำหนดค่าทั้งหมด เครื่องมือรันไทม์ gateway สำหรับเอเจนต์จะปฏิเสธการเขียน tools.exec.ask / tools.exec.security ใหม่ แม้จะใช้ชื่อแทนแบบเดิม tools.bash.*

    เอกสาร: การกำหนดค่า, กำหนดค่า, การแก้ไขปัญหา Gateway, Doctor

    ฉันจะใช้งาน Gateway ส่วนกลางร่วมกับเวิร์กเกอร์เฉพาะทางในอุปกรณ์หลายเครื่องได้อย่างไร

    รูปแบบที่ใช้กันทั่วไป: Gateway หนึ่งรายการ (เช่น Raspberry Pi) พร้อม Node และ เอเจนต์

    • Gateway (ส่วนกลาง): เป็นเจ้าของช่องทาง (Signal/WhatsApp), การกำหนดเส้นทาง และเซสชัน
    • Node (อุปกรณ์): Mac/iOS/Android เชื่อมต่อเป็นอุปกรณ์ต่อพ่วงและเปิดให้ใช้เครื่องมือภายในเครื่อง (system.run, canvas, camera)
    • เอเจนต์ (เวิร์กเกอร์): สมอง/พื้นที่ทำงานแยกกันสำหรับบทบาทเฉพาะ (เช่น งานปฏิบัติการเทียบกับข้อมูลส่วนตัว)
    • เอเจนต์ย่อย: เริ่มงานเบื้องหลังจากเอเจนต์หลักเพื่อทำงานแบบขนาน
    • TUI: เชื่อมต่อกับ Gateway และสลับเอเจนต์/เซสชัน

    เอกสาร: Node, การเข้าถึงจากระยะไกล, การกำหนดเส้นทางหลายเอเจนต์, เอเจนต์ย่อย, TUI

    เบราว์เซอร์ OpenClaw ทำงานแบบ headless ได้หรือไม่

    ได้:

    json5
    {  browser: { headless: true },  agents: {    defaults: {      sandbox: { browser: { headless: true } },    },  },}

    ค่าเริ่มต้นคือ false (มีส่วนติดต่อแบบกราฟิก) โหมด Headless มีแนวโน้มกระตุ้นการตรวจจับบอตในบางเว็บไซต์มากกว่า (X/Twitter มักบล็อกเซสชันแบบ headless) โหมดนี้ใช้เอนจิน Chromium เดียวกันและทำงานได้กับระบบอัตโนมัติส่วนใหญ่ ความแตกต่างหลักคือไม่มีหน้าต่างเบราว์เซอร์ที่มองเห็นได้ (ใช้ภาพหน้าจอสำหรับการตรวจสอบด้วยภาพ) โปรดดู เบราว์เซอร์

    ฉันจะใช้ Brave เพื่อควบคุมเบราว์เซอร์ได้อย่างไร

    ตั้งค่า browser.executablePath เป็นไบนารี Brave ของคุณ (หรือเบราว์เซอร์ที่ใช้ Chromium อื่น) แล้วรีสตาร์ท Gateway โปรดดู เบราว์เซอร์

    Gateway และ Node ระยะไกล

    คำสั่งส่งต่อระหว่าง Telegram, Gateway และ Node อย่างไร

    ข้อความ Telegram ได้รับการจัดการโดย Gateway ซึ่งเรียกใช้เอเจนต์ก่อน และเรียก Node ผ่าน Gateway WebSocket เฉพาะเมื่อจำเป็นต้องใช้เครื่องมือของ Node:

    Telegram -> Gateway -> เอเจนต์ -> node.* -> Node -> Gateway -> Telegram

    Node จะไม่เห็นทราฟฟิกขาเข้าจากผู้ให้บริการ แต่จะได้รับเฉพาะการเรียก RPC ของ Node เท่านั้น

    เอเจนต์ของฉันจะเข้าถึงคอมพิวเตอร์ของฉันได้อย่างไร หาก Gateway โฮสต์อยู่ระยะไกล

    จับคู่คอมพิวเตอร์ของคุณเป็น Node Gateway ทำงานอยู่ที่อื่น แต่สามารถเรียกเครื่องมือ node.* (หน้าจอ กล้อง ระบบ) บนเครื่องภายในของคุณผ่าน Gateway WebSocket ได้

    1. เรียกใช้ Gateway บนโฮสต์ที่เปิดอยู่ตลอดเวลา (VPS/เซิร์ฟเวอร์ภายในบ้าน)
    2. ให้โฮสต์ Gateway และคอมพิวเตอร์ของคุณอยู่ใน tailnet เดียวกัน
    3. ตรวจสอบว่าเข้าถึง Gateway WS ได้ (ผูกกับ tailnet หรือใช้อุโมงค์ SSH)
    4. เปิดแอป macOS ภายในเครื่องและเชื่อมต่อในโหมด Remote over SSH (หรือเชื่อมต่อ tailnet โดยตรง) เพื่อให้แอปลงทะเบียนเป็น Node
    5. อนุมัติ Node:
      bash
      openclaw devices listopenclaw devices approve <requestId>

    ไม่จำเป็นต้องมีบริดจ์ TCP แยกต่างหาก Node จะเชื่อมต่อผ่าน Gateway WebSocket

    ข้อควรระวังด้านความปลอดภัย: การจับคู่ Node macOS จะอนุญาต system.run บนเครื่องนั้น จับคู่เฉพาะอุปกรณ์ที่คุณเชื่อถือเท่านั้น โปรดอ่าน ความปลอดภัย

    เอกสาร: Node, โปรโตคอล Gateway, โหมดระยะไกลของ macOS, ความปลอดภัย

    Tailscale เชื่อมต่อแล้ว แต่ฉันไม่ได้รับการตอบกลับ ควรทำอย่างไร

    ตรวจสอบพื้นฐาน:

    bash
    openclaw gateway statusopenclaw statusopenclaw channels status

    จากนั้นตรวจสอบการยืนยันตัวตนและการกำหนดเส้นทาง: หากใช้ Tailscale Serve ให้ยืนยันว่าตั้งค่า gateway.auth.allowTailscale ถูกต้อง หากเชื่อมต่อผ่านอุโมงค์ SSH ให้ยืนยันว่าอุโมงค์ทำงานอยู่และชี้ไปยังพอร์ตที่ถูกต้อง และยืนยันว่ารายการอนุญาตสำหรับ DM/กลุ่มมีบัญชีของคุณอยู่

    เอกสาร: Tailscale, การเข้าถึงจากระยะไกล, ช่องทาง

    อินสแตนซ์ OpenClaw สองรายการสื่อสารกันได้หรือไม่ (ภายในเครื่อง + VPS)

    ได้ แม้จะไม่มีบริดจ์ระหว่างบอตในตัวก็ตาม

    วิธีที่ง่ายที่สุด: ใช้ช่องทางแชตปกติที่บอตทั้งสองเข้าถึงได้ (Slack/Telegram/WhatsApp) ให้บอต A ส่งข้อความถึงบอต B จากนั้นให้บอต B ตอบกลับตามปกติ

    บริดจ์ CLI (ทั่วไป): เรียกใช้สคริปต์ที่เรียก Gateway อีกตัวด้วย openclaw agent --message ... --deliver โดยกำหนดเป้าหมายเป็นแชตที่บอตอีกตัวรับฟังอยู่ หากบอตตัวหนึ่งอยู่บน VPS ระยะไกล ให้ชี้ CLI ไปยัง Gateway ระยะไกลนั้นผ่าน SSH/Tailscale (โปรดดู การเข้าถึงจากระยะไกล):

    bash
    openclaw agent --message "สวัสดีจากบอตภายในเครื่อง" --deliver --channel telegram --reply-to <chat-id>

    เพิ่มข้อควบคุมเพื่อไม่ให้บอตทั้งสองวนตอบกันอย่างไม่สิ้นสุด (ตอบเฉพาะเมื่อถูกกล่าวถึง, รายการอนุญาตของช่องทาง หรือกฎ "ห้ามตอบข้อความจากบอต")

    เอกสาร: การเข้าถึงจากระยะไกล, CLI ของเอเจนต์, การส่งของเอเจนต์

    ฉันต้องใช้ VPS แยกกันสำหรับเอเจนต์หลายตัวหรือไม่

    ไม่ Gateway หนึ่งรายการโฮสต์เอเจนต์ได้หลายตัว โดยแต่ละตัวมีพื้นที่ทำงาน ค่าเริ่มต้นของโมเดล และการกำหนดเส้นทางของตนเอง นี่เป็นการตั้งค่าปกติและประหยัด/เรียบง่ายกว่าการใช้ VPS หนึ่งรายการต่อเอเจนต์มาก ใช้ VPS แยกกันเฉพาะเมื่อต้องการการแยกอย่างเข้มงวด (ขอบเขตความปลอดภัย) หรือมีการกำหนดค่าที่แตกต่างกันมากและไม่ต้องการใช้ร่วมกัน

    การใช้ Node บนแล็ปท็อปส่วนตัวแทน SSH จาก VPS มีข้อดีหรือไม่

    มี Node เป็นวิธีหลักในการเข้าถึงแล็ปท็อปจาก Gateway ระยะไกล และเปิดความสามารถได้มากกว่าการเข้าถึงเชลล์ Gateway ทำงานบน macOS/Linux (Windows ผ่าน WSL2) และใช้ทรัพยากรน้อย (VPS ขนาดเล็กหรือเครื่องระดับ Raspberry Pi ก็เพียงพอ RAM 4 GB เหลือเฟือ) ดังนั้นการตั้งค่าที่ใช้กันทั่วไปคือโฮสต์ที่เปิดอยู่ตลอดเวลาพร้อมแล็ปท็อปของคุณเป็น Node

    • ไม่ต้องใช้ SSH ขาเข้า - Node เชื่อมต่อออกไปยัง Gateway WebSocket ผ่านการจับคู่อุปกรณ์
    • การควบคุมการดำเนินการที่ปลอดภัยกว่า - system.run ถูกควบคุมด้วยรายการอนุญาต/การอนุมัติของ Node บนแล็ปท็อปเครื่องนั้น
    • เครื่องมืออุปกรณ์เพิ่มเติม - Node เปิดให้ใช้ canvas, camera และ screen เพิ่มเติมจาก system.run
    • ระบบอัตโนมัติของเบราว์เซอร์ภายในเครื่อง - ให้ Gateway อยู่บน VPS แต่เรียกใช้ Chrome ภายในเครื่องผ่านโฮสต์ Node หรือเชื่อมต่อกับ Chrome ภายในเครื่องผ่าน Chrome MCP

    SSH เหมาะสำหรับการเข้าถึงเชลล์เป็นครั้งคราว ส่วน Node เรียบง่ายกว่าสำหรับเวิร์กโฟลว์เอเจนต์ที่ใช้งานต่อเนื่องและระบบอัตโนมัติของอุปกรณ์

    เอกสาร: Node, CLI ของ Node, เบราว์เซอร์

    Node เรียกใช้บริการ Gateway หรือไม่

    ไม่ ควรมี Gateway เพียงหนึ่งรายการ ทำงานต่อโฮสต์ เว้นแต่คุณตั้งใจเรียกใช้โปรไฟล์ที่แยกจากกัน (โปรดดู Gateway หลายรายการ) Node เป็นอุปกรณ์ต่อพ่วงที่เชื่อมต่อกับ Gateway (Node iOS/Android หรือ "โหมด Node" ของ macOS ในแอปแถบเมนู) สำหรับโฮสต์ Node แบบไม่มีส่วนติดต่อและการควบคุมด้วย CLI โปรดดู CLI ของโฮสต์ Node

    ต้องรีสตาร์ททั้งหมดเมื่อเปลี่ยนแปลง gateway, discovery และพื้นผิว Plugin ที่โฮสต์อยู่

    มีวิธีใช้ API / RPC เพื่อใช้การกำหนดค่าหรือไม่

    มี:

    • config.schema.lookup: ตรวจสอบโครงสร้างย่อยของการกำหนดค่าหนึ่งรายการพร้อมโหนดสคีมาแบบตื้น คำแนะนำ UI ที่ตรงกัน และสรุปโหนดลูกโดยตรงก่อนเขียน
    • config.get: ดึงสแนปช็อตปัจจุบันพร้อมแฮช
    • config.patch: อัปเดตบางส่วนอย่างปลอดภัย (แนะนำสำหรับการแก้ไข RPC ส่วนใหญ่); โหลดใหม่ทันทีเมื่อทำได้ และรีสตาร์ตเมื่อจำเป็น
    • config.apply: ตรวจสอบความถูกต้องและแทนที่การกำหนดค่าทั้งหมด; โหลดใหม่ทันทีเมื่อทำได้ และรีสตาร์ตเมื่อจำเป็น
    • เครื่องมือรันไทม์ gateway สำหรับเอเจนต์ยังคงปฏิเสธการเขียน tools.exec.ask / tools.exec.security ใหม่; นามแฝงแบบเดิม tools.bash.* จะถูกปรับให้เป็นพาธที่ได้รับการป้องกันเดียวกัน
    การกำหนดค่าขั้นต่ำที่เหมาะสมสำหรับการติดตั้งครั้งแรก
    json5
    {  agents: { defaults: { workspace: "~/.openclaw/workspace" } },  channels: { whatsapp: { allowFrom: ["+15555550123"] } },}

    กำหนดพื้นที่ทำงานและจำกัดผู้ที่สามารถเรียกใช้บอตได้

    ฉันจะตั้งค่า Tailscale บน VPS และเชื่อมต่อจาก Mac ได้อย่างไร
    1. ติดตั้งและเข้าสู่ระบบบน VPS:
      bash
      curl -fsSL https://tailscale.com/install.sh | shsudo tailscale up
    2. ติดตั้งและเข้าสู่ระบบบน Mac โดยใช้แอป Tailscale และ tailnet เดียวกัน
    3. เปิดใช้ MagicDNS ในคอนโซลผู้ดูแลระบบ Tailscale เพื่อให้ VPS มีชื่อที่คงที่
    4. ใช้ชื่อโฮสต์ของ tailnet: SSH ssh user@your-vps.tailnet-xxxx.ts.net; Gateway WS ws://your-vps.tailnet-xxxx.ts.net:18789

    สำหรับ Control UI ที่ไม่ใช้ SSH ให้ใช้ Tailscale Serve บน VPS:

    bash
    openclaw gateway --tailscale serve

    วิธีนี้จะทำให้ Gateway ยังคงผูกกับลูปแบ็กและเปิดให้เข้าถึง HTTPS ผ่าน Tailscale ดู Tailscale

    ฉันจะเชื่อมต่อ Node ของ Mac กับ Gateway ระยะไกล (Tailscale Serve) ได้อย่างไร

    Serve เปิดให้เข้าถึง Gateway Control UI + WS; Node จะเชื่อมต่อผ่านปลายทาง Gateway WS เดียวกัน

    1. ตรวจสอบให้แน่ใจว่า VPS และ Mac อยู่ใน tailnet เดียวกัน
    2. ใช้แอป macOS ในโหมดระยะไกล (เป้าหมาย SSH สามารถเป็นชื่อโฮสต์ของ tailnet ได้) ซึ่งจะสร้างทันเนลไปยังพอร์ต Gateway และเชื่อมต่อในฐานะ Node
    3. อนุมัติ Node:
      bash
      openclaw devices listopenclaw devices approve <requestId>

    เอกสาร: โปรโตคอล Gateway, การค้นหา, โหมดระยะไกลของ macOS

    ฉันควรติดตั้งบนแล็ปท็อปเครื่องที่สองหรือเพียงเพิ่ม Node

    สำหรับ เครื่องมือภายในเครื่องเท่านั้น (หน้าจอ/กล้อง/exec) บนแล็ปท็อปเครื่องที่สอง ให้เพิ่มเครื่องนั้นเป็น Node โดยใช้ Gateway เดียวและไม่ต้องทำสำเนาการกำหนดค่า ปัจจุบันเครื่องมือ Node ภายในเครื่องรองรับเฉพาะ macOS ติดตั้ง Gateway เครื่องที่สองเฉพาะเมื่อต้องการ การแยกขาดอย่างสมบูรณ์ หรือบอตสองตัวที่แยกจากกันโดยสิ้นเชิง

    เอกสาร: Node, CLI สำหรับ Node, Gateway หลายตัว

    ตัวแปรสภาพแวดล้อมและการโหลด .env

    OpenClaw โหลดตัวแปรสภาพแวดล้อมอย่างไร

    OpenClaw อ่านตัวแปรสภาพแวดล้อมจากโพรเซสแม่ (เชลล์, launchd/systemd, CI เป็นต้น) และโหลดเพิ่มเติมจาก:

    • .env จากไดเรกทอรีทำงานปัจจุบัน
    • ตัวสำรองส่วนกลาง .env จาก ~/.openclaw/.env ($OPENCLAW_STATE_DIR/.env)

    ไฟล์ .env ทั้งสองไฟล์จะไม่เขียนทับตัวแปรสภาพแวดล้อมที่มีอยู่ คีย์ข้อมูลรับรองผู้ให้บริการและการกำหนดเส้นทางปลายทางเป็นข้อยกเว้นสำหรับ .env ของพื้นที่ทำงาน: คีย์อย่างเช่น GEMINI_API_KEY, XAI_API_KEY, MISTRAL_API_KEY หรือคีย์ใดก็ตามที่ลงท้ายด้วย _ENDPOINT (รวมถึงตัวแปรสภาพแวดล้อมอื่นสำหรับการยืนยันตัวตนหรือปลายทางของผู้ให้บริการที่รวมมาให้) จะถูกละเว้นจาก .env ของพื้นที่ทำงาน และควรอยู่ในสภาพแวดล้อมของโพรเซส, ~/.openclaw/.env หรือการกำหนดค่า env

    ตัวแปรสภาพแวดล้อมแบบอินไลน์ในการกำหนดค่าจะมีผลเฉพาะเมื่อไม่มีอยู่ในสภาพแวดล้อมของโพรเซส:

    json5
    {  env: {    OPENROUTER_API_KEY: "sk-or-...",    vars: { GROQ_API_KEY: "gsk-..." },  },}

    ดูลำดับความสำคัญและแหล่งที่มาทั้งหมดได้ที่ /environment

    ฉันเริ่ม Gateway ผ่านบริการแล้วตัวแปรสภาพแวดล้อมหายไป ต้องทำอย่างไร

    มีสองวิธีแก้ไข:

    1. ใส่คีย์ที่ขาดหายไปใน ~/.openclaw/.env เพื่อให้โหลดได้แม้บริการจะไม่ได้รับสืบทอดสภาพแวดล้อมของเชลล์
    2. เปิดใช้การนำเข้าจากเชลล์ (ตัวเลือกเสริมเพื่อความสะดวก):
      json5
      {  env: {    shellEnv: {      enabled: true,      timeoutMs: 15000,    },  },}
      การตั้งค่านี้จะเรียกใช้เชลล์สำหรับเข้าสู่ระบบและนำเข้าเฉพาะคีย์ที่คาดหมายซึ่งยังไม่มีอยู่ (ไม่เขียนทับโดยเด็ดขาด) ตัวแปรสภาพแวดล้อมที่เทียบเท่า: OPENCLAW_LOAD_SHELL_ENV=1, OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000
    ฉันตั้งค่า COPILOT_GITHUB_TOKEN แล้ว แต่สถานะโมเดลแสดง "Shell env: off." เพราะอะไร

    openclaw models status รายงานว่าเปิดใช้ การนำเข้าสภาพแวดล้อมจากเชลล์ หรือไม่ "Shell env: off" ไม่ได้ หมายความว่าตัวแปรสภาพแวดล้อมหายไป แต่หมายความว่า OpenClaw จะไม่โหลดเชลล์สำหรับเข้าสู่ระบบโดยอัตโนมัติ

    หาก Gateway ทำงานเป็นบริการ (launchd/systemd) จะไม่ได้รับสืบทอดสภาพแวดล้อมของเชลล์ แก้ไขโดยใส่โทเค็นใน ~/.openclaw/.env, เปิดใช้ env.shellEnv.enabled: true หรือเพิ่มโทเค็นลงในการกำหนดค่า env (มีผลเฉพาะเมื่อยังไม่มีอยู่) จากนั้นรีสตาร์ต Gateway และตรวจสอบอีกครั้ง:

    bash
    openclaw models status

    โทเค็น Copilot จะถูกค้นหาตามลำดับนี้: OPENCLAW_GITHUB_TOKEN, จากนั้น COPILOT_GITHUB_TOKEN, จากนั้น GH_TOKEN และสุดท้าย GITHUB_TOKEN

    ดู /concepts/model-providers และ /environment

    เซสชันและแชตหลายรายการ

    ฉันจะเริ่มการสนทนาใหม่ได้อย่างไร

    ส่ง /new หรือ /reset เป็นข้อความเดี่ยว ดู การจัดการเซสชัน

    เซสชันจะรีเซ็ตโดยอัตโนมัติหรือไม่หากฉันไม่เคยส่ง /new

    ใช่ นโยบายรีเซ็ตเริ่มต้นคือ รายวัน: เซสชันจะเปลี่ยนใหม่ตามชั่วโมงท้องถิ่นที่กำหนดไว้บนโฮสต์ Gateway (session.reset.atHour, ค่าเริ่มต้น 4, 0-23) โดยอิงจากเวลาที่เซสชันปัจจุบันเริ่มต้น เปลี่ยนไปใช้การรีเซ็ตตามระยะเวลาที่ไม่มีการใช้งานแทนได้ด้วย mode: "idle" และ session.reset.idleMinutes ซึ่งจะทำให้เซสชันหมดอายุหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (อิงจากการโต้ตอบจริงครั้งล่าสุด ไม่ใช่เหตุการณ์ระบบ Heartbeat/Cron/exec)

    json5
    {  session: {    reset: { mode: "daily", atHour: 4 },    resetByType: {      group: { mode: "idle", idleMinutes: 120 },      thread: { mode: "daily", atHour: 6 },    },    resetByChannel: {      discord: { mode: "idle", idleMinutes: 10080 },    },  },}

    resetByType รองรับ direct (นามแฝงแบบเดิม dm), group และ thread ค่า session.idleMinutes ระดับบนสุดแบบเดิมยังคงทำงานเป็นนามแฝงเพื่อความเข้ากันได้สำหรับค่าเริ่มต้นของโหมดไม่มีการใช้งาน เมื่อไม่ได้ตั้งค่าบล็อก session.reset/resetByType เซสชันที่มีเซสชัน CLI ซึ่งผู้ให้บริการเป็นเจ้าของและกำลังใช้งานอยู่จะไม่ถูกตัดด้วยค่าเริ่มต้นรายวันโดยนัย ดูวงจรชีวิตทั้งหมดได้ที่ การจัดการเซสชัน

    มีวิธีสร้างทีมอินสแตนซ์ OpenClaw (CEO หนึ่งตัวและเอเจนต์หลายตัว) หรือไม่

    มี โดยใช้ การกำหนดเส้นทางหลายเอเจนต์ และ เอเจนต์ย่อย: เอเจนต์ผู้ประสานงานหนึ่งตัวร่วมกับเอเจนต์ผู้ปฏิบัติงานหลายตัว ซึ่งมีพื้นที่ทำงานและโมเดลของตนเอง

    เหมาะที่จะมองว่าเป็นการทดลองเพื่อความสนุก เนื่องจากใช้โทเค็นมากและมักมีประสิทธิภาพน้อยกว่าบอตหนึ่งตัวที่มีเซสชันแยกกัน รูปแบบทั่วไปคือบอตหนึ่งตัวที่ใช้สนทนาด้วย โดยมีเซสชันต่างกันสำหรับงานแบบขนาน และสร้างเอเจนต์ย่อยเมื่อจำเป็น

    เอกสาร: การกำหนดเส้นทางหลายเอเจนต์, เอเจนต์ย่อย, CLI สำหรับเอเจนต์

    เหตุใดบริบทจึงถูกตัดกลางคันระหว่างทำงาน และจะป้องกันได้อย่างไร

    บริบทของเซสชันถูกจำกัดด้วยหน้าต่างบริบทของโมเดล แชตที่ยาว เอาต์พุตจากเครื่องมือขนาดใหญ่ หรือไฟล์จำนวนมาก อาจทำให้เกิด Compaction หรือการตัดทอน

    • ขอให้บอตสรุปสถานะปัจจุบันและเขียนลงในไฟล์
    • ใช้ /compact ก่อนงานที่ใช้เวลานาน และใช้ /new เมื่อเปลี่ยนหัวข้อ
    • เก็บบริบทสำคัญไว้ในพื้นที่ทำงานและขอให้บอตอ่านกลับมา
    • ใช้เอเจนต์ย่อยสำหรับงานที่ใช้เวลานานหรือทำแบบขนาน เพื่อให้แชตหลักมีขนาดเล็กลง
    • เลือกโมเดลที่มีหน้าต่างบริบทขนาดใหญ่ขึ้นหากเกิดเหตุการณ์นี้บ่อยครั้ง
    ฉันจะรีเซ็ต OpenClaw ทั้งหมดโดยยังคงติดตั้งไว้ได้อย่างไร
    bash
    openclaw reset

    รีเซ็ตทั้งหมดแบบไม่โต้ตอบ:

    bash
    openclaw reset --scope full --yes --non-interactive

    จากนั้นเรียกใช้การตั้งค่าอีกครั้ง:

    bash
    openclaw onboard --install-daemon

    การเริ่มต้นใช้งานยังมีตัวเลือก รีเซ็ต หากตรวจพบการกำหนดค่าที่มีอยู่ ดู การเริ่มต้นใช้งาน (CLI) หากใช้โปรไฟล์ (--profile / OPENCLAW_PROFILE) ให้รีเซ็ตไดเรกทอรีสถานะของแต่ละโปรไฟล์ (ค่าเริ่มต้น ~/.openclaw-<profile>) การรีเซ็ตสำหรับการพัฒนาเท่านั้น: openclaw gateway --dev --reset จะล้างการกำหนดค่าสำหรับการพัฒนา ข้อมูลรับรอง เซสชัน และพื้นที่ทำงาน

    ฉันพบข้อผิดพลาด "context too large" จะรีเซ็ตหรือทำ Compaction ได้อย่างไร
    • ทำ Compaction (เก็บการสนทนาไว้และสรุปข้อความโต้ตอบก่อนหน้า): /compact หรือ /compact <instructions> เพื่อกำหนดแนวทางการสรุป
    • รีเซ็ต (รหัสเซสชันใหม่สำหรับคีย์แชตเดิม): /new หรือ /reset

    หากยังคงเกิดขึ้น ให้ปรับแต่ง การตัดแต่งเซสชัน (agents.defaults.contextPruning) เพื่อตัดเอาต์พุตเก่าจากเครื่องมือ หรือใช้โมเดลที่มีหน้าต่างบริบทขนาดใหญ่ขึ้น

    เอกสาร: Compaction, การตัดแต่งเซสชัน, การจัดการเซสชัน

    เหตุใดฉันจึงเห็น "LLM request rejected: messages.content.tool_use.input field required"

    ข้อผิดพลาดในการตรวจสอบความถูกต้องจากผู้ให้บริการ: โมเดลส่งบล็อก tool_use โดยไม่มี input ที่จำเป็น โดยทั่วไปหมายความว่าประวัติเซสชันล้าสมัยหรือเสียหาย (มักเกิดหลังจากเธรดยาวหรือมีการเปลี่ยนแปลงเครื่องมือ/สคีมา)

    วิธีแก้ไข: เริ่มเซสชันใหม่ด้วย /new (ข้อความเดี่ยว)

    เหตุใดฉันจึงได้รับข้อความ Heartbeat ทุก 30 นาที

    Heartbeat ทำงานทุก 30m ตามค่าเริ่มต้น หรือทุก 1h เมื่อโหมดการยืนยันตัวตนที่เลือกใช้คือการยืนยันตัวตนด้วย OAuth/โทเค็นของ Anthropic (รวมถึงการใช้ Claude CLI ซ้ำ) และไม่ได้ตั้งค่า heartbeat.every ปรับแต่งหรือปิดใช้งานได้ดังนี้:

    json5
    {  agents: {    defaults: {      heartbeat: {        every: "2h", // or "0m" to disable      },    },  },}

    หากมี HEARTBEAT.md อยู่แต่ไม่มีเนื้อหาที่มีผล (มีเพียงบรรทัดว่าง ความคิดเห็น Markdown/HTML หัวเรื่อง ATX เครื่องหมายรั้วโค้ด หรือรายการเปล่าที่เป็นเพียงโครง) OpenClaw จะข้ามการเรียกใช้ Heartbeat เพื่อประหยัดการเรียก API หากไม่มีไฟล์ดังกล่าว Heartbeat จะยังคงทำงานและโมเดลจะตัดสินใจว่าต้องทำอะไร

    การกำหนดทับสำหรับแต่ละเอเจนต์ใช้ agents.list[].heartbeat เอกสาร: Heartbeat

    ฉันต้องเพิ่ม "บัญชีบอต" ลงในกลุ่ม WhatsApp หรือไม่

    ไม่ต้อง OpenClaw ทำงานบน บัญชีของคุณเอง หากอยู่ในกลุ่ม OpenClaw ก็สามารถมองเห็นกลุ่มนั้นได้ ตามค่าเริ่มต้น การตอบกลับในกลุ่มจะถูกบล็อกจนกว่าจะอนุญาตผู้ส่ง (groupPolicy: "allowlist")

    หากต้องการจำกัดการตอบกลับในกลุ่มไว้เฉพาะคุณ:

    json5
    {  channels: {    whatsapp: {      groupPolicy: "allowlist",      groupAllowFrom: ["+15551234567"],    },  },}
    ฉันจะรับ JID ของกลุ่ม WhatsApp ได้อย่างไร

    วิธีที่เร็วที่สุดคือเฝ้าดูบันทึกและส่งข้อความทดสอบในกลุ่ม

    bash
    openclaw logs --follow --json

    มองหา chatId (หรือ from) ที่ลงท้ายด้วย @g.us เช่น 1234567890-1234567890@g.us

    หากกำหนดค่าหรือเพิ่มลงในรายการอนุญาตแล้ว ให้แสดงรายการกลุ่มจากการกำหนดค่า:

    bash
    openclaw directory groups list --channel whatsapp

    เอกสาร: WhatsApp, ไดเรกทอรี, บันทึก

    เหตุใด OpenClaw จึงไม่ตอบกลับในกลุ่ม

    สาเหตุที่พบบ่อยมีสองประการ: การจำกัดด้วยการกล่าวถึงเปิดอยู่โดยค่าเริ่มต้น (ต้อง @mention บอต หรือให้ตรงกับ mentionPatterns) หรือกำหนดค่า channels.whatsapp.groups โดยไม่มี "*" และกลุ่มนั้นไม่อยู่ในรายการที่อนุญาต

    ดูกลุ่มและข้อความกลุ่ม

    กลุ่ม/เธรดใช้บริบทร่วมกับข้อความส่วนตัวหรือไม่

    ตามค่าเริ่มต้น แชตโดยตรงจะรวมอยู่ในเซสชันหลัก กลุ่ม/ช่องมีคีย์เซสชันของตนเอง และหัวข้อ Telegram / เธรด Discord เป็นเซสชันแยกกัน ดูกลุ่มและข้อความกลุ่ม

    สร้างพื้นที่ทำงานและเอเจนต์ได้กี่รายการ

    ไม่มีขีดจำกัดตายตัว โดยมีหลายสิบหรือแม้แต่หลายร้อยรายการก็ได้ แต่ควรตรวจสอบสิ่งต่อไปนี้:

    • การเพิ่มขึ้นของพื้นที่ดิสก์: เซสชันและบทถอดความที่ใช้งานอยู่จะเก็บไว้ในฐานข้อมูล SQLite ประจำเอเจนต์ ส่วนอาร์ติแฟกต์แบบเดิม/ที่เก็บถาวรยังคงสะสมอยู่ภายใต้ ~/.openclaw/agents/<agentId>/sessions/ ได้
    • ค่าใช้จ่ายของโทเค็น: เอเจนต์มากขึ้นหมายถึงการใช้งานโมเดลพร้อมกันมากขึ้น
    • ภาระด้านการปฏิบัติการ: โปรไฟล์การยืนยันตัวตน พื้นที่ทำงาน และการกำหนดเส้นทางช่องสำหรับแต่ละเอเจนต์

    ให้มีพื้นที่ทำงานที่ ใช้งานอยู่ หนึ่งรายการต่อเอเจนต์ (agents.defaults.workspace) ล้างเซสชันเก่าด้วย openclaw sessions cleanup หากการใช้ดิสก์เพิ่มขึ้น (อย่าแก้ไขสถานะ SQLite ที่ใช้งานอยู่ด้วยตนเอง) และใช้ openclaw doctor เพื่อตรวจหาพื้นที่ทำงานที่หลงเหลือและโปรไฟล์ที่ไม่ตรงกัน

    เรียกใช้บอตหรือแชตหลายรายการพร้อมกัน (Slack) ได้หรือไม่ และควรตั้งค่าอย่างไร

    ได้ โดยใช้ การกำหนดเส้นทางแบบหลายเอเจนต์: เรียกใช้เอเจนต์ที่แยกจากกันหลายตัวและกำหนดเส้นทางข้อความขาเข้าตามช่อง/บัญชี/เพียร์ รองรับ Slack ในฐานะช่องและสามารถผูกกับเอเจนต์ที่ระบุได้

    การเข้าถึงเบราว์เซอร์มีประสิทธิภาพ แต่ไม่ได้หมายความว่า "ทำได้ทุกอย่างที่มนุษย์ทำได้" เพราะระบบป้องกันบอต CAPTCHA และ MFA ยังคงขัดขวางระบบอัตโนมัติได้ เพื่อการควบคุมที่เชื่อถือได้มากที่สุด ให้ใช้ Chrome MCP ภายในเครื่องบนโฮสต์ หรือ CDP บนเครื่องที่เรียกใช้เบราว์เซอร์จริง

    การตั้งค่าที่เป็นแนวทางปฏิบัติที่ดี: โฮสต์ Gateway ที่ทำงานตลอดเวลา (VPS/Mac mini), เอเจนต์หนึ่งตัวต่อบทบาท (การผูก), ช่อง Slack ที่ผูกกับเอเจนต์เหล่านั้น และเบราว์เซอร์ภายในเครื่องผ่าน Chrome MCP หรือ Node เมื่อต้องการ

    เอกสาร: การกำหนดเส้นทางแบบหลายเอเจนต์, Slack, เบราว์เซอร์, Node

    โมเดล การสลับเมื่อขัดข้อง และโปรไฟล์การยืนยันตัวตน

    คำถามและคำตอบเกี่ยวกับโมเดล ได้แก่ ค่าเริ่มต้น การเลือก นามแฝง การสลับ การสลับเมื่อขัดข้อง และโปรไฟล์การยืนยันตัวตน อยู่ในคำถามที่พบบ่อยเกี่ยวกับโมเดล

    Gateway: พอร์ต "ทำงานอยู่แล้ว" และโหมดระยะไกล

    Gateway ใช้พอร์ตใด

    gateway.port ควบคุมพอร์ตมัลติเพล็กซ์เดียวสำหรับ WebSocket + HTTP (Control UI, ฮุก ฯลฯ) ลำดับความสำคัญ:

    text
    --port > OPENCLAW_GATEWAY_PORT > gateway.port > ค่าเริ่มต้น 18789
    เหตุใด openclaw gateway status จึงแสดง "Runtime: running" แต่ "Connectivity probe: failed"

    "Running" คือมุมมองของ ตัวควบคุมดูแล (launchd/systemd/schtasks) ส่วนโพรบการเชื่อมต่อคือ CLI ที่เชื่อมต่อกับ WebSocket ของ Gateway จริง ให้เชื่อถือบรรทัดต่อไปนี้จาก openclaw gateway status: Probe target: (URL ที่โพรบใช้), Listening: (สิ่งที่ผูกอยู่กับพอร์ตจริง), Last gateway error: (สาเหตุหลักที่พบบ่อยเมื่อโปรเซสยังทำงานอยู่แต่พอร์ตไม่ได้รอรับการเชื่อมต่อ)

    เหตุใด openclaw gateway status จึงแสดง "Config (cli)" และ "Config (service)" ต่างกัน

    กำลังแก้ไขไฟล์การกำหนดค่าหนึ่งไฟล์ ขณะที่บริการเรียกใช้อีกไฟล์หนึ่ง (มักเป็นความไม่ตรงกันของ --profile / OPENCLAW_STATE_DIR)

    วิธีแก้ ให้เรียกใช้จาก --profile / สภาพแวดล้อมเดียวกับที่ต้องการให้บริการใช้:

    bash
    openclaw gateway install --force
    "another gateway instance is already listening" หมายถึงอะไร

    OpenClaw บังคับใช้ล็อกขณะทำงานโดยผูกตัวรับฟัง WebSocket ทันทีเมื่อเริ่มต้น (ค่าเริ่มต้น ws://127.0.0.1:18789) หากการผูกล้มเหลวด้วย EADDRINUSE ระบบจะส่งข้อผิดพลาด GatewayLockError ("another gateway instance is already listening")

    วิธีแก้: หยุดอินสแตนซ์อื่น ทำให้พอร์ตว่าง หรือเรียกใช้ด้วย openclaw gateway --port <port>

    เรียกใช้ OpenClaw ในโหมดระยะไกล (ไคลเอนต์เชื่อมต่อกับ Gateway ที่อื่น) ได้อย่างไร

    ตั้งค่า gateway.mode: "remote" และชี้ไปยัง URL ของ WebSocket ระยะไกล โดยอาจระบุข้อมูลประจำตัวระยะไกลที่ใช้ข้อมูลลับร่วมกันด้วยก็ได้:

    json5
    {  gateway: {    mode: "remote",    remote: {      url: "ws://gateway.tailnet:18789",      token: "your-token",      password: "your-password",    },  },}
    • openclaw gateway จะเริ่มต้นเฉพาะเมื่อ gateway.mode เป็น local (หรือส่งแฟล็กแทนที่)
    • แอป macOS เฝ้าดูไฟล์การกำหนดค่าและสลับโหมดแบบสดเมื่อค่าเหล่านี้เปลี่ยนแปลง
    • gateway.remote.token / .password เป็นเพียงข้อมูลประจำตัวระยะไกลฝั่งไคลเอนต์ ซึ่งไม่ได้เปิดใช้การยืนยันตัวตนของ Gateway ภายในเครื่องด้วยตัวเอง
    Control UI แสดง "unauthorized" (หรือเชื่อมต่อใหม่อยู่เรื่อย ๆ) ควรทำอย่างไร

    เส้นทางการยืนยันตัวตนของ Gateway และวิธีการยืนยันตัวตนของ UI ไม่ตรงกัน

    ข้อเท็จจริง (จากโค้ด):

    • Control UI เก็บโทเค็นไว้ใน sessionStorage โดยจำกัดขอบเขตไว้ที่แท็บเบราว์เซอร์ปัจจุบันและ URL ของ Gateway ที่เลือก ดังนั้นการรีเฟรชในแท็บเดิมจึงยังทำงานได้โดยไม่ต้องเก็บโทเค็นระยะยาวไว้ใน localStorage
    • บน AUTH_TOKEN_MISMATCH ไคลเอนต์ที่เชื่อถือได้สามารถลองใหม่แบบมีขอบเขตได้หนึ่งครั้งโดยใช้โทเค็นอุปกรณ์ที่แคชไว้ เมื่อ Gateway ส่งคำแนะนำให้ลองใหม่ (canRetryWithDeviceToken=true, recommendedNextStep=retry_with_device_token)
    • การลองใหม่ด้วยโทเค็นที่แคชไว้นั้นจะใช้ขอบเขตที่ได้รับอนุมัติและจัดเก็บไว้กับโทเค็นอุปกรณ์ซ้ำ ส่วนผู้เรียกที่ระบุ deviceToken / scopes อย่างชัดแจ้งจะคงชุดขอบเขตที่ร้องขอไว้แทนที่จะสืบทอดขอบเขตจากแคช
    • นอกเส้นทางการลองใหม่นั้น ลำดับความสำคัญของการยืนยันตัวตนเมื่อเชื่อมต่อคือ โทเค็น/รหัสผ่านร่วมที่ระบุอย่างชัดแจ้งก่อน ตามด้วย deviceToken ที่ระบุอย่างชัดแจ้ง ตามด้วยโทเค็นอุปกรณ์ที่จัดเก็บไว้ และสุดท้ายคือโทเค็นบูตสแตรป
    • การบูตสแตรปด้วยรหัสตั้งค่าในตัวจะส่งคืนโทเค็นอุปกรณ์ Node พร้อม scopes: [] รวมทั้งโทเค็นส่งมอบให้ผู้ดำเนินการแบบมีขอบเขตสำหรับการเริ่มต้นใช้งานบนอุปกรณ์เคลื่อนที่ที่เชื่อถือได้ การส่งมอบให้ผู้ดำเนินการสามารถอ่านการกำหนดค่าเนทีฟในช่วงตั้งค่าได้ แต่ไม่ให้ขอบเขตการเปลี่ยนแปลงการจับคู่หรือ operator.admin

    วิธีแก้:

    • เร็วที่สุด: openclaw dashboard (พิมพ์ + คัดลอก URL แดชบอร์ดและพยายามเปิด หากไม่มีจอจะแสดงคำแนะนำ SSH)
    • ยังไม่มีโทเค็น: openclaw doctor --generate-gateway-token
    • ระยะไกล: สร้างทันเนลก่อนด้วย ssh -N -L 18789:127.0.0.1:18789 user@host แล้วเปิด http://127.0.0.1:18789/
    • โหมดข้อมูลลับร่วมกัน: ตั้งค่า gateway.auth.token / OPENCLAW_GATEWAY_TOKEN หรือ gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD แล้ววางข้อมูลลับที่ตรงกันในการตั้งค่า Control UI
    • โหมด Tailscale Serve: ยืนยันว่าเปิดใช้ gateway.auth.allowTailscale และกำลังเปิด URL ของ Serve ไม่ใช่ URL ลูปแบ็ก/เทลเน็ตโดยตรงที่ข้ามส่วนหัวข้อมูลประจำตัวของ Tailscale
    • โหมดพร็อกซีที่เชื่อถือได้: ยืนยันว่ากำลังเข้าผ่านพร็อกซีที่รับรู้ข้อมูลประจำตัวซึ่งกำหนดค่าไว้ พร็อกซีลูปแบ็กบนโฮสต์เดียวกันต้องมี gateway.auth.trustedProxy.allowLoopback = true ด้วย
    • หากยังไม่ตรงกันหลังจากลองใหม่หนึ่งครั้ง: หมุนเวียน/อนุมัติโทเค็นอุปกรณ์ที่จับคู่ใหม่:
      bash
      openclaw devices listopenclaw devices rotate --device <id> --role operator
    • หากการหมุนเวียนถูกปฏิเสธ: เซสชันของอุปกรณ์ที่จับคู่สามารถหมุนเวียนได้เฉพาะอุปกรณ์ของ ตนเอง เว้นแต่จะมี operator.admin ด้วย และค่า --scope ที่ระบุอย่างชัดแจ้งต้องไม่เกินขอบเขตผู้ดำเนินการปัจจุบันของผู้เรียก
    • หากยังติดขัด: openclaw status --all พร้อมการแก้ไขปัญหา ดูรายละเอียดการยืนยันตัวตนที่แดชบอร์ด
    ตั้งค่า gateway.bind เป็น tailnet แล้ว แต่รับฟังเฉพาะบนลูปแบ็ก

    การผูก tailnet จะเลือก IP ของ Tailscale จากอินเทอร์เฟซเครือข่าย (100.64.0.0/10) หากเครื่องไม่ได้อยู่บน Tailscale (หรืออินเทอร์เฟซไม่ทำงาน) Gateway จะย้อนกลับไปใช้ลูปแบ็กแทนที่จะเปิดเผยอินเทอร์เฟซเครือข่ายอื่น

    วิธีแก้: เริ่ม Tailscale บนโฮสต์นั้นและรีสตาร์ต Gateway หรือสลับไปใช้ gateway.bind: "loopback" / "lan" อย่างชัดแจ้ง

    tailnet เป็นแบบชัดแจ้ง ส่วน auto จะเลือกใช้ลูปแบ็กก่อน ใช้ gateway.bind: "tailnet" เพื่อจำกัดการเปิดเผยที่ไม่ใช่ลูปแบ็กไว้เฉพาะ Tailnet โดยยังคงตัวรับฟัง 127.0.0.1 บนโฮสต์เดียวกันที่จำเป็นไว้

    เรียกใช้ Gateway หลายรายการบนโฮสต์เดียวกันได้หรือไม่

    โดยทั่วไปไม่ได้ เพราะ Gateway หนึ่งรายการสามารถเรียกใช้ช่องส่งข้อความและเอเจนต์ได้หลายรายการ ใช้ Gateway หลายรายการเฉพาะเพื่อความซ้ำซ้อน (เช่น บอตกู้คืน) หรือการแยกอย่างเด็ดขาด และแยกแต่ละรายการด้วย OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR, agents.defaults.workspace ของตนเอง และ gateway.port ที่ไม่ซ้ำกัน

    คำแนะนำ: ใช้ openclaw --profile <name> ... ต่ออินสแตนซ์ (สร้าง ~/.openclaw-<name> โดยอัตโนมัติ), ใช้ gateway.port ที่ไม่ซ้ำกันต่อการกำหนดค่าโปรไฟล์ (หรือ --port สำหรับการเรียกใช้ด้วยตนเอง) และบริการประจำโปรไฟล์ด้วย openclaw --profile <name> gateway install

    โปรไฟล์ยังเพิ่มส่วนต่อท้ายให้ชื่อบริการด้วย: launchd ai.openclaw.<profile>, systemd openclaw-gateway-<profile>.service, Windows OpenClaw Gateway (<profile>) หน่วย systemd openclaw-gateway ที่ไม่มีตัวระบุจะมีเฉพาะสำหรับโปรไฟล์เริ่มต้นเท่านั้น ส่วนชื่อหน่วย systemd แบบเดิมก่อนเปลี่ยนชื่อ clawdbot-gateway จะถูกย้ายโดยอัตโนมัติ

    คู่มือฉบับเต็ม: Gateway หลายรายการ

    "invalid handshake" / รหัส 1008 หมายถึงอะไร

    Gateway เป็น เซิร์ฟเวอร์ WebSocket และคาดว่าข้อความแรกจะเป็นเฟรม connect สิ่งอื่นใดจะทำให้การเชื่อมต่อปิดด้วย รหัส 1008 (การละเมิดนโยบาย)

    สาเหตุที่พบบ่อย: เปิด URL แบบ HTTP ในเบราว์เซอร์แทนที่จะใช้ไคลเอนต์ WS, ใช้พอร์ต/พาธผิด หรือพร็อกซี/ทันเนลตัดส่วนหัวการยืนยันตัวตนออกหรือส่งคำขอที่ไม่ใช่ของ Gateway

    วิธีแก้: ใช้ URL แบบ WS (ws://<host>:18789 หรือ wss://... ผ่าน HTTPS) อย่าเปิดพอร์ต WS ในแท็บเบราว์เซอร์ปกติ และใส่โทเค็น/รหัสผ่านในเฟรม connect เมื่อเปิดใช้การยืนยันตัวตน ตัวอย่าง CLI/TUI:

    bash
    openclaw tui --url ws://<host>:18789 --token <token>

    รายละเอียดโปรโตคอล: โปรโตคอล Gateway

    การบันทึกและการแก้ไขข้อบกพร่อง

    บันทึกอยู่ที่ไหน

    บันทึกไฟล์ (มีโครงสร้าง): /tmp/openclaw/openclaw-YYYY-MM-DD.log ตั้งค่าพาธคงที่ผ่าน logging.file, ระดับบันทึกไฟล์ผ่าน logging.level และระดับรายละเอียดคอนโซลผ่าน --verbose และ logging.consoleLevel

    การติดตามแบบเร็วที่สุด:

    bash
    openclaw logs --follow

    บันทึกบริการ/ตัวควบคุมดูแล (เมื่อ Gateway ทำงานผ่าน launchd/systemd):

    • stdout ของ launchd บน macOS: ~/Library/Logs/openclaw/gateway.log (โปรไฟล์ใช้ gateway-<profile>.log ส่วน stderr ถูกระงับ)
    • Linux: journalctl --user -u openclaw-gateway[-<profile>].service -n 200 --no-pager
    • Windows: schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST

    ดูเพิ่มเติมที่การแก้ไขปัญหา

    เริ่ม/หยุด/รีสตาร์ตบริการ Gateway ได้อย่างไร
    bash
    openclaw gateway statusopenclaw gateway restart

    หากเรียกใช้ Gateway ด้วยตนเอง openclaw gateway --force สามารถเรียกคืนพอร์ตได้ ดูGateway

    ปิดเทอร์มินัลบน Windows ไปแล้ว จะรีสตาร์ต OpenClaw ได้อย่างไร

    โหมดติดตั้งบน Windows มีสามแบบ:

    1) การตั้งค่าภายในเครื่องของ Windows Hub: แอปเนทีฟจะจัดการ WSL Gateway ภายในเครื่องที่แอปเป็นเจ้าของ เปิด OpenClaw Companion จากเมนู Start หรือถาดระบบ แล้วใช้ Gateway Setup หรือแท็บ Connections

    2) WSL2 Gateway แบบกำหนดเอง: Gateway ทำงานภายใน Linux

    powershell
    wslopenclaw gateway statusopenclaw gateway restart

    หากไม่เคยติดตั้งบริการ ให้เริ่มบริการในเบื้องหน้า: openclaw gateway run

    3) CLI/Gateway แบบเนทีฟบน Windows: ทำงานโดยตรงใน Windows

    powershell
    openclaw gateway statusopenclaw gateway restart

    หากเรียกใช้ด้วยตนเอง (ไม่มีบริการ): openclaw gateway run

    เอกสาร: Windows, คู่มือการดำเนินงานบริการ Gateway

    Gateway ทำงานอยู่แต่ไม่ได้รับการตอบกลับเลย ควรตรวจสอบอะไร?

    ตรวจสอบสถานะโดยรวมอย่างรวดเร็ว:

    bash
    openclaw statusopenclaw models statusopenclaw channels statusopenclaw logs --follow

    สาเหตุที่พบบ่อย: ไม่ได้โหลดการยืนยันตัวตนของโมเดลบน โฮสต์ Gateway (ตรวจสอบ models status), การจับคู่/รายการอนุญาตของช่องทางบล็อกการตอบกลับ (ตรวจสอบการกำหนดค่าและบันทึกของช่องทาง) หรือเปิด WebChat/Dashboard โดยไม่มีโทเค็นที่ถูกต้อง หากใช้งานจากระยะไกล ให้ยืนยันว่าการเชื่อมต่อทันเนล/Tailscale ทำงานอยู่และสามารถเข้าถึง WebSocket ของ Gateway ได้

    เอกสาร: ช่องทาง, การแก้ไขปัญหา, การเข้าถึงจากระยะไกล

    "ตัดการเชื่อมต่อจาก Gateway: ไม่ทราบสาเหตุ" - ควรทำอย่างไรต่อ?

    โดยทั่วไปหมายความว่า UI สูญเสียการเชื่อมต่อ WebSocket ให้ตรวจสอบว่า Gateway กำลังทำงานอยู่หรือไม่ (openclaw gateway status)? สถานะปกติหรือไม่ (openclaw status)? UI มีโทเค็นที่ถูกต้องหรือไม่ (openclaw dashboard)? หากใช้งานจากระยะไกล ลิงก์ทันเนล/Tailscale ทำงานอยู่หรือไม่?

    จากนั้นติดตามบันทึก:

    bash
    openclaw logs --follow

    เอกสาร: Dashboard, การเข้าถึงจากระยะไกล, การแก้ไขปัญหา

    setMyCommands ของ Telegram ล้มเหลว ควรตรวจสอบอะไร?
    bash
    openclaw channels statusopenclaw channels logs --channel telegram

    จากนั้นเทียบกับข้อผิดพลาด:

    • BOT_COMMANDS_TOO_MUCH: เมนู Telegram มีรายการมากเกินไป OpenClaw ตัดรายการให้เหลือตามขีดจำกัดของ Telegram และลองใหม่ด้วยจำนวนคำสั่งที่น้อยลงอยู่แล้ว แต่รายการเมนูบางรายการอาจยังถูกตัดออก ให้ลดคำสั่งของ Plugin/Skills/คำสั่งกำหนดเอง หรือปิดใช้งาน channels.telegram.commands.native หากไม่ต้องการเมนู
    • TypeError: fetch failed, Network request for 'setMyCommands' failed! หรือข้อผิดพลาดเครือข่ายที่คล้ายกัน: หากใช้งานบน VPS หรือหลังพร็อกซี ให้ยืนยันว่าอนุญาต HTTPS ขาออกและ DNS ใช้งานได้สำหรับ api.telegram.org

    หาก Gateway อยู่ระยะไกล ให้ตรวจสอบบันทึกบนโฮสต์ Gateway

    เอกสาร: Telegram, การแก้ไขปัญหาช่องทาง

    TUI ไม่แสดงผลลัพธ์ ควรตรวจสอบอะไร?
    bash
    openclaw statusopenclaw models statusopenclaw logs --follow

    ใน TUI ให้ใช้ /status เพื่อดูสถานะปัจจุบัน หากคาดว่าจะได้รับการตอบกลับในช่องทางแชต ให้ยืนยันว่าเปิดใช้งานการส่งแล้ว (/deliver on)

    เอกสาร: TUI, คำสั่งสแลช

    จะหยุดแล้วเริ่ม Gateway ใหม่ทั้งหมดได้อย่างไร?

    หากติดตั้งบริการแล้ว (launchd บน macOS, systemd บน Linux):

    bash
    openclaw gateway stopopenclaw gateway start

    เมื่อทำงานในเบื้องหน้า ให้หยุดด้วย Ctrl-C จากนั้นใช้ openclaw gateway run

    เอกสาร: คู่มือการดำเนินงานบริการ Gateway

    อธิบายแบบง่าย: openclaw gateway restart เทียบกับ openclaw gateway

    openclaw gateway restart เริ่ม บริการเบื้องหลัง (launchd/systemd) ใหม่ ส่วน openclaw gateway เรียกใช้ Gateway ในเบื้องหน้า สำหรับเซสชันเทอร์มินัลนี้ ใช้คำสั่งย่อยของ Gateway หากติดตั้งบริการแล้ว ส่วนการเรียกใช้ในเบื้องหน้าโดยตรงเหมาะสำหรับการใช้งานครั้งเดียว

    วิธีที่เร็วที่สุดในการดูรายละเอียดเพิ่มเติมเมื่อเกิดความล้มเหลว

    เริ่ม Gateway ด้วย --verbose เพื่อดูรายละเอียดในคอนโซลเพิ่มเติม จากนั้นตรวจสอบไฟล์บันทึกเพื่อหาข้อผิดพลาดเกี่ยวกับการยืนยันตัวตนของช่องทาง การกำหนดเส้นทางโมเดล และ RPC

    สื่อและไฟล์แนบ

    Skills ของฉันสร้างรูปภาพ/PDF แต่ไม่มีการส่งออกไป

    ไฟล์แนบขาออกจากเอเจนต์ต้องใช้ฟิลด์สื่อที่มีโครงสร้าง เช่น media, mediaUrl, path หรือ filePath โปรดดู การตั้งค่าผู้ช่วย OpenClaw และ การส่งของเอเจนต์

    bash
    openclaw message send --target +15555550123 --message "ส่งให้แล้ว" --media /path/to/file.png

    ให้ตรวจสอบด้วยว่า: ช่องทางเป้าหมายรองรับสื่อขาออกและไม่ถูกบล็อกด้วยรายการอนุญาต; ไฟล์อยู่ภายในขีดจำกัดขนาดของผู้ให้บริการ (รูปภาพจะถูกปรับขนาดให้ด้านที่ยาวที่สุดไม่เกิน 2048px); tools.fs.workspaceOnly=true จำกัดการส่งจากพาธภายในเครื่องไว้เฉพาะไฟล์ในพื้นที่ทำงาน ที่เก็บชั่วคราว/ที่เก็บสื่อ และไฟล์ที่ผ่านการตรวจสอบโดยแซนด์บ็อกซ์; tools.fs.workspaceOnly=false (ค่าเริ่มต้น) อนุญาตให้การส่งสื่อภายในเครื่องแบบมีโครงสร้างใช้ไฟล์บนโฮสต์ที่เอเจนต์อ่านได้อยู่แล้ว สำหรับสื่อและประเภทเอกสารที่ปลอดภัย (รูปภาพ เสียง วิดีโอ PDF เอกสาร Office และเอกสารข้อความที่ผ่านการตรวจสอบ เช่น Markdown/MD, TXT, JSON, YAML/YML) นี่ไม่ใช่เครื่องมือสแกนข้อมูลลับ ไฟล์ secret.txt หรือ config.json ที่เอเจนต์อ่านได้สามารถแนบได้เมื่อส่วนขยายและการตรวจสอบเนื้อหาตรงกัน เก็บไฟล์ที่ละเอียดอ่อนไว้นอกพาธที่เอเจนต์อ่านได้ หรือใช้ tools.fs.workspaceOnly=true ต่อไปเพื่อให้การส่งจากพาธภายในเครื่องเข้มงวดยิ่งขึ้น

    โปรดดู รูปภาพ

    ความปลอดภัยและการควบคุมการเข้าถึง

    เปิดให้ OpenClaw รับ DM ขาเข้าปลอดภัยหรือไม่?

    ให้ถือว่า DM ขาเข้าเป็นอินพุตที่ไม่น่าเชื่อถือ ค่าเริ่มต้นช่วยลดความเสี่ยง:

    • พฤติกรรมเริ่มต้นบนช่องทางที่รองรับ DM คือ การจับคู่: ผู้ส่งที่ไม่รู้จักจะได้รับรหัสจับคู่และข้อความของผู้ส่งจะไม่ถูกประมวลผล อนุมัติด้วย openclaw pairing approve --channel <channel> [--account <id>] <code> คำขอที่รอดำเนินการจำกัดไว้ที่ 3 รายการต่อช่องทาง; ตรวจสอบ openclaw pairing list --channel <channel> [--account <id>] หากไม่ได้รับรหัส
    • การเปิด DM เป็นสาธารณะต้องเลือกเปิดใช้งานอย่างชัดเจน (dmPolicy: "open" และรายการอนุญาต "*")

    เรียกใช้ openclaw doctor เพื่อแสดงนโยบาย DM ที่มีความเสี่ยง

    การแทรกคำสั่งในพรอมต์เป็นข้อกังวลเฉพาะบอตสาธารณะหรือไม่?

    ไม่ใช่ การแทรกคำสั่งในพรอมต์เกี่ยวข้องกับ เนื้อหาที่ไม่น่าเชื่อถือ ไม่ใช่แค่ผู้ที่สามารถส่ง DM ถึงบอตได้ หากผู้ช่วยอ่านเนื้อหาภายนอก (การค้นหา/ดึงข้อมูลเว็บ หน้าเบราว์เซอร์ อีเมล เอกสาร ไฟล์แนบ บันทึกที่วางเข้ามา) เนื้อหานั้นอาจมีคำสั่งที่พยายามเข้าควบคุมโมเดล แม้ว่าจะมีผู้ส่งเพียงรายเดียวก็ตาม

    ความเสี่ยงสูงสุดเกิดขึ้นเมื่อเปิดใช้เครื่องมือ: โมเดลอาจถูกหลอกให้ส่งข้อมูลบริบทออกไปหรือเรียกใช้เครื่องมือในนามของผู้ใช้ ลดขอบเขตความเสียหายดังนี้:

    • ใช้เอเจนต์ "reader" แบบอ่านอย่างเดียวหรือปิดใช้งานเครื่องมือ เพื่อสรุปเนื้อหาที่ไม่น่าเชื่อถือ
    • ปิด web_search / web_fetch / browser สำหรับเอเจนต์ที่เปิดใช้เครื่องมือ
    • ให้ถือว่าข้อความจากไฟล์/เอกสารที่ถอดรหัสแล้วไม่น่าเชื่อถือด้วย: ทั้ง OpenResponses input_file และการแยกข้อมูลจากไฟล์แนบสื่อจะครอบข้อความที่แยกได้ด้วยเครื่องหมายขอบเขตเนื้อหาภายนอกอย่างชัดเจน แทนที่จะส่งข้อความดิบจากไฟล์
    • ใช้แซนด์บ็อกซ์และรายการอนุญาตเครื่องมือที่เข้มงวด

    รายละเอียด: ความปลอดภัย

    OpenClaw ปลอดภัยน้อยลงเพราะใช้ TypeScript/Node แทน Rust/WASM หรือไม่?

    ภาษาและรันไทม์มีความสำคัญ แต่ไม่ใช่ความเสี่ยงหลักสำหรับเอเจนต์ส่วนบุคคล ความเสี่ยงในทางปฏิบัติได้แก่ การเปิดเผย Gateway ผู้ที่สามารถส่งข้อความถึงบอต การแทรกคำสั่งในพรอมต์ ขอบเขตเครื่องมือ การจัดการข้อมูลประจำตัว การเข้าถึงเบราว์เซอร์ การเข้าถึงการดำเนินการ และความน่าเชื่อถือของ Skills/Plugin จากบุคคลที่สาม

    Rust และ WASM สามารถให้การแยกที่แข็งแกร่งกว่าสำหรับโค้ดบางประเภท แต่ไม่สามารถแก้ปัญหาการแทรกคำสั่งในพรอมต์ รายการอนุญาตที่ไม่เหมาะสม การเปิดเผย Gateway ต่อสาธารณะ เครื่องมือที่มีขอบเขตกว้างเกินไป หรือโปรไฟล์เบราว์เซอร์ที่เข้าสู่ระบบบัญชีที่ละเอียดอ่อนอยู่แล้วได้ ให้ถือว่าสิ่งเหล่านี้เป็นมาตรการควบคุมหลัก: รักษา Gateway ให้เป็นส่วนตัวหรือต้องมีการยืนยันตัวตน ใช้การจับคู่และรายการอนุญาตสำหรับ DM/กลุ่ม ปฏิเสธหรือใช้แซนด์บ็อกซ์กับเครื่องมือที่มีความเสี่ยงสำหรับอินพุตที่ไม่น่าเชื่อถือ ติดตั้งเฉพาะ Plugin และ Skills ที่เชื่อถือได้ และเรียกใช้ openclaw security audit --deep หลังเปลี่ยนการกำหนดค่า

    รายละเอียด: ความปลอดภัย, การใช้แซนด์บ็อกซ์

    พบรายงานเกี่ยวกับอินสแตนซ์ OpenClaw ที่ถูกเปิดเผย ควรตรวจสอบอะไร?
    bash
    openclaw security audit --deepopenclaw gateway status

    ค่าพื้นฐานที่ปลอดภัยกว่า: ผูก Gateway กับ loopback หรือเปิดเผยเฉพาะผ่านการเข้าถึงส่วนตัวที่มีการยืนยันตัวตน (tailnet, ทันเนล SSH, การยืนยันตัวตนด้วยโทเค็น/รหัสผ่าน หรือพร็อกซีที่เชื่อถือได้และกำหนดค่าอย่างถูกต้อง); DM อยู่ในโหมด pairing หรือ allowlist; กลุ่มอยู่ในรายการอนุญาตและต้องมีการกล่าวถึง เว้นแต่สมาชิกทุกคนจะเชื่อถือได้; เครื่องมือที่มีความเสี่ยงสูง (exec, browser, gateway, cron) ถูกปฏิเสธหรือจำกัดขอบเขตอย่างเข้มงวดสำหรับเอเจนต์ที่อ่านเนื้อหาที่ไม่น่าเชื่อถือ; เปิดใช้งานแซนด์บ็อกซ์ในจุดที่การเรียกใช้เครื่องมือต้องการลดขอบเขตความเสียหาย

    สิ่งที่ควรแก้ไขก่อนคือการผูกแบบสาธารณะโดยไม่มีการยืนยันตัวตน การเปิด DM/กลุ่มพร้อมเครื่องมือ และการเปิดเผยการควบคุมเบราว์เซอร์ รายละเอียด: openclaw security audit

    Skills จาก ClawHub และ Plugin จากบุคคลที่สามปลอดภัยต่อการติดตั้งหรือไม่?

    ให้ถือว่า Skills และ Plugin จากบุคคลที่สามเป็นโค้ดที่เลือกจะเชื่อถือ หน้าของ Skills ใน ClawHub แสดงสถานะการสแกนก่อนติดตั้ง แต่การสแกนไม่ใช่ขอบเขตความปลอดภัยที่สมบูรณ์ OpenClaw ไม่เรียกใช้การบล็อกโค้ดอันตรายในเครื่องที่มีมาให้ในตัวระหว่างการติดตั้งหรืออัปเดต Plugin/Skills; ใช้ security.installPolicy ที่ผู้ดูแลระบบเป็นเจ้าของเพื่อตัดสินใจอนุญาต/บล็อกในเครื่อง

    รูปแบบที่ปลอดภัยกว่า: เลือกผู้เขียนที่เชื่อถือได้และเวอร์ชันที่ตรึงไว้ อ่าน Skills/Plugin ก่อนเปิดใช้งาน จำกัดรายการอนุญาตของ Plugin/Skills ให้แคบ เรียกใช้เวิร์กโฟลว์ที่รับอินพุตไม่น่าเชื่อถือในแซนด์บ็อกซ์โดยใช้เครื่องมือให้น้อยที่สุด และหลีกเลี่ยงการให้โค้ดจากบุคคลที่สามเข้าถึงระบบไฟล์ การดำเนินการ เบราว์เซอร์ หรือข้อมูลลับอย่างกว้างขวาง

    รายละเอียด: Skills, Plugin, ความปลอดภัย

    บอตควรมีอีเมล บัญชี GitHub หรือหมายเลขโทรศัพท์ของตนเองหรือไม่?

    ควร สำหรับการตั้งค่าส่วนใหญ่ การแยกบอตด้วยบัญชีและหมายเลขโทรศัพท์ต่างหากช่วยลดขอบเขตความเสียหายหากเกิดปัญหา และช่วยให้หมุนเวียนข้อมูลประจำตัวหรือเพิกถอนการเข้าถึงได้ง่ายขึ้นโดยไม่กระทบบัญชีส่วนตัว

    เริ่มจากขอบเขตเล็ก: ให้เข้าถึงเฉพาะเครื่องมือและบัญชีที่จำเป็นจริง แล้วค่อยขยายภายหลังหากจำเป็น

    เอกสาร: ความปลอดภัย, การจับคู่

    ให้บอตดำเนินการกับข้อความของฉันได้เองหรือไม่ และปลอดภัยหรือไม่?

    ไม่ แนะนำให้บอตมีอิสระเต็มที่ในการดำเนินการกับข้อความส่วนตัว รูปแบบที่ปลอดภัยที่สุดคือ: รักษา DM ให้อยู่ใน โหมดจับคู่ หรือใช้รายการอนุญาตที่เข้มงวด ใช้ หมายเลขหรือบัญชีแยกต่างหาก หากบอตต้องส่งข้อความในนามของผู้ใช้ และให้บอตร่างข้อความโดยผู้ใช้ อนุมัติก่อนส่ง

    หากต้องการทดลอง ให้ทำในบัญชีเฉพาะที่แยกออกจากระบบอื่น โปรดดู ความปลอดภัย

    ใช้โมเดลราคาถูกกว่าสำหรับงานผู้ช่วยส่วนบุคคลได้หรือไม่?

    ได้ หาก เอเจนต์ใช้สำหรับแชตเท่านั้นและอินพุตเชื่อถือได้ โมเดลระดับเล็กกว่ามีความเสี่ยงต่อการถูกเข้าควบคุมด้วยคำสั่งมากกว่า จึงควรหลีกเลี่ยงการใช้กับเอเจนต์ที่เปิดใช้เครื่องมือหรือเมื่ออ่านเนื้อหาที่ไม่น่าเชื่อถือ หากจำเป็นต้องใช้โมเดลขนาดเล็กกว่า ให้จำกัดเครื่องมือและเรียกใช้ภายในแซนด์บ็อกซ์ โปรดดู ความปลอดภัย

    เรียกใช้ /start ใน Telegram แต่ไม่ได้รับรหัสจับคู่

    ระบบจะส่งรหัสจับคู่ เฉพาะ เมื่อผู้ส่งที่ไม่รู้จักส่งข้อความถึงบอตและเปิดใช้งาน dmPolicy: "pairing"; การใช้ /start เพียงอย่างเดียวจะไม่สร้างรหัส

    ตรวจสอบคำขอที่รอดำเนินการ:

    bash
    openclaw pairing list telegram

    หากต้องการเข้าถึงทันที ให้เพิ่มรหัสผู้ส่งในรายการอนุญาตหรือตั้งค่า dmPolicy: "open" สำหรับบัญชีนั้น

    WhatsApp: จะส่งข้อความถึงผู้ติดต่อของฉันหรือไม่? การจับคู่ทำงานอย่างไร?

    ไม่ นโยบาย DM เริ่มต้นของ WhatsApp คือ การจับคู่ ผู้ส่งที่ไม่รู้จักจะได้รับเพียงรหัสจับคู่ และข้อความของผู้ส่งจะ ไม่ถูกประมวลผล OpenClaw ตอบกลับเฉพาะแชตที่ได้รับหรือการส่งที่ผู้ใช้สั่งอย่างชัดเจนเท่านั้น

    bash
    openclaw pairing approve whatsapp <code>openclaw pairing list whatsapp

    พรอมต์หมายเลขโทรศัพท์ของวิซาร์ดจะตั้งค่า รายการที่อนุญาต/เจ้าของ เพื่ออนุญาต DM ของคุณเอง ไม่ได้นำไปใช้ส่งข้อความอัตโนมัติ สำหรับหมายเลข WhatsApp ส่วนตัว ให้ใช้หมายเลขนั้นและเปิดใช้งาน channels.whatsapp.selfChatMode

    คำสั่งแชต การยกเลิกงาน และ "หยุดไม่ได้"

    จะหยุดไม่ให้ข้อความระบบภายในแสดงในแชตได้อย่างไร

    ข้อความภายใน/ข้อความเครื่องมือส่วนใหญ่จะแสดงเฉพาะเมื่อเปิดใช้ verbose, trace หรือ reasoning สำหรับเซสชันนั้น

    แก้ไขในแชตที่พบข้อความดังกล่าว:

    text
    /verbose off/trace off/reasoning off

    หากยังมีข้อความรบกวน ให้ตรวจสอบการตั้งค่าเซสชันใน Control UI และตั้งค่า verbose เป็น inherit พร้อมยืนยันว่าไม่ได้ใช้โปรไฟล์บอตที่มี verboseDefault: "on" ในการกำหนดค่า

    เอกสาร: การคิดและ verbose, ความปลอดภัย

    จะหยุด/ยกเลิกงานที่กำลังทำงานได้อย่างไร

    ส่งข้อความใดข้อความหนึ่งต่อไปนี้ เป็นข้อความเดี่ยว (ไม่มีเครื่องหมายทับ) เพื่อสั่งยกเลิก: stop, stop action, stop current action, stop run, stop current run, stop agent, stop the agent, stop openclaw, openclaw stop, stop don't do anything, stop do not do anything, stop doing anything, do not do that, please stop, stop please, abort, esc, exit, interrupt, halt ทริกเกอร์ทั่วไปที่ไม่ใช่ภาษาอังกฤษ (ฝรั่งเศส เยอรมัน สเปน จีน ญี่ปุ่น ฮินดี อาหรับ รัสเซีย) ก็ใช้ได้เช่นกัน

    สำหรับโปรเซสเบื้องหลังที่เริ่มโดยเครื่องมือ exec ให้ขอให้เอเจนต์เรียกใช้:

    text
    process action:kill sessionId:XXX

    คำสั่งที่มีเครื่องหมายทับส่วนใหญ่ต้องส่งเป็นข้อความ เดี่ยว ที่ขึ้นต้นด้วย / แต่ทางลัดบางรายการ (เช่น /status) สามารถใช้แทรกในข้อความได้เช่นกันสำหรับผู้ส่งที่อยู่ในรายการที่อนุญาต ดูคำสั่งที่มีเครื่องหมายทับ

    จะส่งข้อความ Discord จาก Telegram ได้อย่างไร ("การส่งข้อความข้ามบริบทถูกปฏิเสธ")

    โดยค่าเริ่มต้น OpenClaw จะบล็อกการส่งข้อความ ข้ามผู้ให้บริการ หากการเรียกใช้เครื่องมือผูกกับ Telegram เครื่องมือจะไม่ส่งไปยัง Discord เว้นแต่จะอนุญาตอย่างชัดเจน และการตั้งค่านี้มีผลทันทีโดยไม่ต้องรีสตาร์ต Gateway:

    json5
    {  tools: {    message: {      crossContext: {        allowAcrossProviders: true,        marker: { enabled: true, prefix: "[from {channel}] " },      },    },  },}
    เหตุใดจึงรู้สึกว่าบอต "เพิกเฉย" ต่อข้อความที่ส่งถี่ ๆ

    โดยค่าเริ่มต้น พรอมต์ที่ส่งระหว่างการทำงานจะถูกนำไปใช้กำกับการทำงานที่กำลังดำเนินอยู่ ใช้ /queue เพื่อเลือกพฤติกรรมของการทำงานที่กำลังดำเนินอยู่:

    • steer (ค่าเริ่มต้น) - กำกับการทำงานที่กำลังดำเนินอยู่ ณ ขอบเขตโมเดลถัดไป
    • followup - จัดคิวข้อความและประมวลผลทีละรายการหลังจากการทำงานปัจจุบันสิ้นสุด
    • collect - จัดคิวข้อความที่เข้ากันได้และตอบกลับครั้งเดียวหลังจากการทำงานปัจจุบันสิ้นสุด
    • interrupt - ยกเลิกการทำงานปัจจุบันและเริ่มใหม่

    เพิ่มตัวเลือกให้โหมดจัดคิวได้ เช่น debounce:0.5s cap:25 drop:summarize ดูคิวคำสั่งและคิวการกำกับ

    เบ็ดเตล็ด

    โมเดลเริ่มต้นสำหรับ Anthropic เมื่อใช้คีย์ API คืออะไร

    ข้อมูลประจำตัวและการเลือกโมเดลเป็นคนละส่วนกัน การตั้งค่า ANTHROPIC_API_KEY (หรือจัดเก็บคีย์ API ของ Anthropic ในโปรไฟล์การยืนยันตัวตน) จะเปิดใช้การยืนยันตัวตน แต่โมเดลเริ่มต้นจริงคือโมเดลที่กำหนดค่าไว้ใน agents.defaults.model.primary (เช่น anthropic/claude-sonnet-4-6 หรือ anthropic/claude-opus-4-6) ข้อความ No credentials found for profile "anthropic:default" หมายความว่า Gateway ไม่พบข้อมูลประจำตัวของ Anthropic ใน auth-profiles.json ที่คาดไว้สำหรับเอเจนต์ที่กำลังทำงาน


    หากยังแก้ไม่ได้ ให้สอบถามใน Discord หรือเปิดการสนทนาบน GitHub

    ที่เกี่ยวข้อง

    Was this useful?
    On this page

    On this page