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 เทียบกับเขตเวลาของโฮสต์)

    Debug:

    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 ควบคุมเฉพาะการส่งสำรองจากตัวรันสำหรับข้อความสุดท้ายที่เอเจนต์ยังไม่ได้ส่งด้วยตนเองเท่านั้น

    Debug:

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

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

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

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

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

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

    Debug:

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

    วิธีนี้สามารถใช้เบราว์เซอร์บนโฮสต์ภายในเครื่องหรือ Node เบราว์เซอร์ที่เชื่อมต่ออยู่ หาก Gateway ทำงานอยู่ที่อื่น ให้เรียกใช้โฮสต์ Node บนเครื่องที่มีเบราว์เซอร์ หรือใช้ 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 ตรวจสอบแหล่งที่มาของการผูกกับทั้งพาธที่ปรับให้เป็นมาตรฐานและพาธแคนนอนิคัลที่แก้ไขผ่านบรรพบุรุษระดับลึกที่สุดที่มีอยู่ ดังนั้นการหลบหนีผ่านพาเรนต์ที่เป็น symlink จะถูกปฏิเสธโดยค่าเริ่มต้น แม้ส่วนสุดท้ายของพาธจะยังไม่มีอยู่ก็ตาม

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

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

    หน่วยความจำของ 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 ใช้พื้นที่ทำงานเดียวกันทุกครั้งที่เรียกใช้

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

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

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

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

    การค้นหาหน่วยความจำเชิงความหมายต้องใช้คีย์ 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 และ 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 แบบส่วนตัว) วิธีนี้จะเก็บทั้งหน่วยความจำและไฟล์ AGENTS/SOUL/USER และช่วยให้กู้คืน "จิตใจ" ของผู้ช่วยได้ในภายหลัง

    อย่า commit สิ่งใดภายใต้ ~/.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) ร่วมกับ โหนด และ เอเจนต์

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

    เอกสาร: โหนด, การเข้าถึงระยะไกล, การกำหนดเส้นทางหลายเอเจนต์, เอเจนต์ย่อย, 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 และโหนดระยะไกล

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

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

    Telegram -> Gateway -> เอเจนต์ -> node.* -> โหนด -> Gateway -> Telegram

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

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

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

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

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

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

    เอกสาร: โหนด, โปรโตคอล 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 แยกกันเฉพาะเมื่อต้องการการแยกอย่างเด็ดขาด (ขอบเขตความปลอดภัย) หรือมีการกำหนดค่าที่แตกต่างกันมากซึ่งไม่ต้องการใช้ร่วมกัน

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

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

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

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

    เอกสาร: โหนด, CLI โหนด, เบราว์เซอร์

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

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

    ต้องเริ่มระบบใหม่ทั้งหมดเมื่อมีการเปลี่ยนแปลง 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

    หากต้องการใช้ UI ควบคุมโดยไม่ผ่าน SSH ให้ใช้ Tailscale Serve บน VPS:

    bash
    openclaw gateway --tailscale serve

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

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

    Serve เปิดให้เข้าถึง UI ควบคุม Gateway + 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

    สำหรับ เครื่องมือภายในเครื่องเท่านั้น (หน้าจอ/กล้อง/การเรียกใช้คำสั่ง) บนแล็ปท็อปเครื่องที่สอง ให้เพิ่มเป็น 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

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

    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 ดูวงจรชีวิตทั้งหมดได้ที่ การจัดการเซสชัน

    มีวิธีสร้างทีมอินสแตนซ์ 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> เพื่อกำหนดแนวทางการสรุป
    • รีเซ็ต (สร้าง ID เซสชันใหม่สำหรับคีย์แชตเดิม): /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 เมื่อโหมดการยืนยันตัวตนที่ได้รับการแก้ไขเป็นการยืนยันตัวตนด้วย Anthropic OAuth/โทเค็น (รวมถึงการนำ 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 โดยไม่มี "*" และกลุ่มไม่ได้อยู่ในรายการที่อนุญาต

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

    กลุ่ม/เธรดใช้บริบทร่วมกับ DM หรือไม่?

    โดยค่าเริ่มต้น แชตโดยตรงจะรวมเข้าสู่เซสชันหลัก กลุ่ม/ช่องมีคีย์เซสชันของตนเอง และหัวข้อ 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 ของ macOS launchd: ~/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 ทำงานอยู่และสามารถเข้าถึง Gateway WebSocket ได้

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

    "ตัดการเชื่อมต่อจาก 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 ที่มีความเสี่ยง

    Prompt injection เป็นข้อกังวลเฉพาะบอตสาธารณะหรือไม่

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

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

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

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

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

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

    Rust และ WASM สามารถให้การแยกที่แข็งแกร่งกว่าสำหรับโค้ดบางประเภท แต่ไม่สามารถแก้ปัญหา Prompt injection รายการอนุญาตที่ไม่เหมาะสม การเปิดเผย 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

    หากต้องการเข้าถึงทันที ให้เพิ่ม ID ผู้ส่งลงในรายการอนุญาต หรือตั้งค่า 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: "[จาก {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