---
read_when:
    - การตอบคำถามสนับสนุนที่พบบ่อยเกี่ยวกับการตั้งค่า การติดตั้ง การเริ่มต้นใช้งาน หรือรันไทม์
    - การคัดแยกปัญหาที่ผู้ใช้รายงานก่อนดำเนินการดีบักเชิงลึก
summary: คำถามที่พบบ่อยเกี่ยวกับการตั้งค่า การกำหนดค่า และการใช้งาน OpenClaw
title: คำถามที่พบบ่อย
x-i18n:
    generated_at: "2026-07-19T18:13:01Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 610d4692196fe6915df32966f7c2878124d1070a9cfcb2b6e4703f7e1c31b199
    source_path: help/faq.md
    workflow: 16
---

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

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

<Steps>
  <Step title="ตรวจสอบสถานะอย่างรวดเร็ว">
    ```bash
    openclaw status
    ```
    สรุปข้อมูลในเครื่องอย่างรวดเร็ว: ระบบปฏิบัติการ + การอัปเดต, การเข้าถึง Gateway/บริการ, เอเจนต์/เซสชัน, การกำหนดค่าผู้ให้บริการ + ปัญหารันไทม์ (เมื่อเข้าถึง Gateway ได้)
  </Step>
  <Step title="รายงานที่วางได้ทันที (แชร์ได้อย่างปลอดภัย)">
    ```bash
    openclaw status --all
    ```
    การวินิจฉัยแบบอ่านอย่างเดียวพร้อมส่วนท้ายของบันทึก (ปกปิดโทเค็นแล้ว)
  </Step>
  <Step title="สถานะดีมอน + พอร์ต">
    ```bash
    openclaw gateway status
    ```
    แสดงสถานะรันไทม์ของตัวควบคุมเทียบกับการเข้าถึง RPC, URL เป้าหมายของโพรบ และการกำหนดค่าที่บริการน่าจะใช้
  </Step>
  <Step title="โพรบเชิงลึก">
    ```bash
    openclaw status --deep
    ```
    โพรบตรวจสอบความพร้อมใช้งานของ Gateway แบบสด รวมถึงโพรบช่องทางเมื่อรองรับ (ต้องเข้าถึง Gateway ได้) โปรดดู [ความพร้อมใช้งาน](/th/gateway/health)
  </Step>
  <Step title="ติดตามบันทึกล่าสุด">
    ```bash
    openclaw logs --follow
    ```
    หาก RPC ใช้งานไม่ได้ ให้ใช้วิธีสำรอง:
    ```bash
    tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)"
    ```
    บันทึกในไฟล์แยกจากบันทึกของบริการ โปรดดู [การบันทึก](/th/logging) และ [การแก้ไขปัญหา](/th/gateway/troubleshooting)
  </Step>
  <Step title="เรียกใช้เครื่องมือตรวจสอบ (ซ่อมแซม)">
    ```bash
    openclaw doctor
    ```
    ซ่อมแซม/ย้ายข้อมูลการกำหนดค่าและสถานะ จากนั้นเรียกใช้การตรวจสอบความพร้อมใช้งาน โปรดดู [เครื่องมือตรวจสอบ](/th/gateway/doctor)
  </Step>
  <Step title="สแนปช็อต Gateway (เฉพาะ WS)">
    ```bash
    openclaw health --json
    openclaw health --verbose   # แสดง URL เป้าหมาย + พาธการกำหนดค่าเมื่อเกิดข้อผิดพลาด
    ```
    ขอรับสแนปช็อตฉบับเต็มจาก Gateway ที่กำลังทำงาน โปรดดู [ความพร้อมใช้งาน](/th/gateway/health)
  </Step>
</Steps>

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

คำถามและคำตอบเกี่ยวกับการใช้งานครั้งแรก ได้แก่ การติดตั้ง การเริ่มต้นใช้งาน เส้นทางการยืนยันตัวตน การสมัครใช้บริการ และความล้มเหลวช่วงแรก อยู่ใน [คำถามที่พบบ่อยเกี่ยวกับการใช้งานครั้งแรก](/th/help/faq-first-run)

## OpenClaw คืออะไร?

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

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

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

    เอกสาร: [Gateway](/th/gateway), [ช่องทาง](/th/channels), [หลายเอเจนต์](/th/concepts/multi-agent), [หน่วยความจำ](/th/concepts/memory)

  </Accordion>

  <Accordion title="เพิ่งตั้งค่าเสร็จ ควรทำอะไรเป็นอย่างแรก?">
    โปรเจกต์เริ่มต้นที่เหมาะสม: สร้างเว็บไซต์ (WordPress, Shopify หรือเว็บไซต์แบบสแตติก); สร้างต้นแบบแอปมือถือ (โครงร่าง หน้าจอ แผน API); จัดระเบียบไฟล์และโฟลเดอร์; เชื่อมต่อ Gmail และทำให้การสรุปหรือการติดตามผลเป็นอัตโนมัติ

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

  </Accordion>

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

  </Accordion>

  <Accordion title="OpenClaw ช่วยสร้างลีด ติดต่อกลุ่มเป้าหมาย ทำโฆษณา และเขียนบล็อกสำหรับ SaaS ได้หรือไม่?">
    ได้ สำหรับ **การค้นคว้า การคัดกรอง และการร่างเนื้อหา**: สแกนเว็บไซต์ สร้างรายชื่อที่คัดเลือกแล้ว สรุปข้อมูลผู้มีโอกาสเป็นลูกค้า และเขียนร่างข้อความติดต่อหรือข้อความโฆษณา

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

    เอกสาร: [ความปลอดภัย](/th/gateway/security)

  </Accordion>

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

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

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

  </Accordion>
</AccordionGroup>

## Skills และระบบอัตโนมัติ

<AccordionGroup>
  <Accordion title="ปรับแต่ง 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 สำหรับสำเนาในรีโพซิทอรี
  </Accordion>

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

  <Accordion title="ใช้โมเดลหรือการตั้งค่าที่ต่างกันสำหรับงานแต่ละประเภทได้อย่างไร?">
    รูปแบบที่รองรับ:

    - **งาน 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](/th/automation/cron-jobs), [การกำหนดเส้นทางแบบหลายเอเจนต์](/th/concepts/multi-agent), [การกำหนดค่า](/th/gateway/config-agents), [คำสั่งแบบสแลช](/th/tools/slash-commands)

  </Accordion>

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

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

    เอกสาร: [เอเจนต์ย่อย](/th/tools/subagents), [งานเบื้องหลัง](/th/automation/tasks)

  </Accordion>

  <Accordion title="เซสชันเอเจนต์ย่อยที่ผูกกับเธรดทำงานบน 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`)

    เอกสาร: [เอเจนต์ย่อย](/th/tools/subagents), [Discord](/th/channels/discord), [เอกสารอ้างอิงการกำหนดค่า](/th/gateway/configuration-reference), [คำสั่งแบบสแลช](/th/tools/slash-commands)

  </Accordion>

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

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

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

    เอกสาร: [เอเจนต์ย่อย](/th/tools/subagents), [งานเบื้องหลัง](/th/automation/tasks), [เครื่องมือเซสชัน](/th/concepts/session-tool)

  </Accordion>

  <Accordion title="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](/th/automation/cron-jobs), [ระบบอัตโนมัติ](/th/automation)

  </Accordion>

  <Accordion title="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 50
    openclaw tasks show <lookup>
    ```

    เอกสาร: [งาน Cron](/th/automation/cron-jobs), [งานเบื้องหลัง](/th/automation/tasks)

  </Accordion>

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

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

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

    Debug:
    ```bash
    openclaw cron runs --id <jobId> --limit 50
    ```

    เอกสาร: [งาน Cron](/th/automation/cron-jobs), [CLI ของ cron](/th/cli/cron)

  </Accordion>

  <Accordion title="ฉันจะติดตั้ง Skills บน Linux ได้อย่างไร">
    ใช้คำสั่ง `openclaw skills` แบบเนทีฟหรือวาง Skills ลงในพื้นที่ทำงานของคุณ UI ของ Skills บน macOS ไม่มีให้ใช้บน Linux เรียกดู Skills ได้ที่ [https://clawhub.ai](https://clawhub.ai)

    ```bash
    openclaw skills search "calendar"
    openclaw skills search --limit 20
    openclaw skills install @owner/<skill-slug>
    openclaw skills install @owner/<skill-slug> --version <version>
    openclaw skills install @owner/<skill-slug> --force
    openclaw skills install @owner/<skill-slug> --global
    openclaw skills update --all
    openclaw skills update --all --global
    openclaw skills list --eligible
    openclaw skills check
    ```

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

  </Accordion>

  <Accordion title="OpenClaw สามารถเรียกใช้งานตามกำหนดเวลาหรือทำงานอย่างต่อเนื่องในเบื้องหลังได้หรือไม่">
    ได้ ผ่านตัวกำหนดเวลาของ Gateway:

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

    เอกสาร: [งาน Cron](/th/automation/cron-jobs), [ระบบอัตโนมัติ](/th/automation), [Heartbeat](/th/gateway/heartbeat)

  </Accordion>

  <Accordion title="ฉันสามารถเรียกใช้ 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 ใน[โหมดระยะไกล](#gateway-ports-already-running-and-remote-mode)หรือผ่าน 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 bash
       set -euo pipefail
       exec ssh -T user@mac-host /opt/homebrew/bin/memo "$@"
       ```
    2. วางตัวห่อหุ้มไว้ใน `PATH` บนโฮสต์ Linux (ตัวอย่างเช่น `~/bin/memo`)
    3. ลบล้างข้อมูลเมตาของ Skill (พื้นที่ทำงานหรือ `~/.openclaw/skills`) เพื่ออนุญาต Linux:
       ```markdown
       ---
       name: apple-notes
       description: จัดการ Apple Notes ผ่าน CLI memo บน macOS
       metadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["memo"] } } }
       ---
       ```
    4. เริ่มเซสชันใหม่เพื่อรีเฟรชสแนปช็อตของ Skills

  </Accordion>

  <Accordion title="มีการผสานรวมกับ 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](/th/tools/skills), [การกำหนดค่า Skills](/th/tools/skills-config), [ClawHub](/th/clawhub)

  </Accordion>

  <Accordion title="ฉันจะใช้ Chrome ที่ลงชื่อเข้าใช้อยู่แล้วกับ OpenClaw ได้อย่างไร">
    ใช้โปรไฟล์เบราว์เซอร์ `user` ที่มีในตัว ซึ่งเชื่อมต่อผ่าน Chrome DevTools MCP:

    ```bash
    openclaw browser --browser-profile user tabs
    openclaw browser --browser-profile user snapshot
    ```

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

    ```bash
    openclaw browser create-profile --name chrome-live --driver existing-session
    openclaw 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, การสกัดกั้นการดาวน์โหลด และการดำเนินการแบบกลุ่มยังคงต้องใช้เส้นทางเบราว์เซอร์ที่มีการจัดการ

    ดูการเปรียบเทียบฉบับเต็มที่ [เบราว์เซอร์](/th/tools/browser#existing-session-via-chrome-devtools-mcp)

  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="มีเอกสารเฉพาะสำหรับแซนด์บ็อกซ์หรือไม่">
    มี: [แซนด์บ็อกซ์](/th/gateway/sandboxing) สำหรับการตั้งค่าเฉพาะ Docker (Gateway ทั้งหมดใน Docker หรืออิมเมจแซนด์บ็อกซ์) โปรดดู [Docker](/th/install/docker)
  </Accordion>

  <Accordion title="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](/th/install/docker), [เบราว์เซอร์](/th/tools/browser)

  </Accordion>

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

    ขั้นตอนการตั้งค่า: [กลุ่ม: DM ส่วนตัว + กลุ่มสาธารณะ](/th/channels/groups#pattern-personal-dms-public-groups-single-agent) ข้อมูลอ้างอิงหลัก: [การกำหนดค่า Gateway](/th/gateway/config-agents#agentsdefaultssandbox)

  </Accordion>

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

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

    ดู [แซนด์บ็อกซ์](/th/gateway/sandboxing#custom-bind-mounts) และ [แซนด์บ็อกซ์เทียบกับนโยบายเครื่องมือเทียบกับสิทธิ์ระดับสูง](/th/gateway/sandbox-vs-tool-policy-vs-elevated#bind-mounts-security-quick-check)

  </Accordion>

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

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

  </Accordion>

  <Accordion title="หน่วยความจำลืมสิ่งต่าง ๆ อยู่เรื่อย ๆ ฉันจะทำให้จดจำได้อย่างไร">
    ขอให้บอต **เขียนข้อเท็จจริงลงในหน่วยความจำ**: บันทึกระยะยาวเก็บไว้ใน `MEMORY.md` และบริบทระยะสั้นเก็บไว้ใน `memory/YYYY-MM-DD.md` การเตือนให้โมเดลจัดเก็บความทรงจำมักจะแก้ปัญหาได้ หากยังคงลืม ให้ตรวจสอบว่า Gateway ใช้พื้นที่ทำงานเดียวกันทุกครั้งที่เรียกใช้

    เอกสาร: [หน่วยความจำ](/th/concepts/memory), [พื้นที่ทำงานของเอเจนต์](/th/concepts/agent-workspace)

  </Accordion>

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

    เอกสาร: [หน่วยความจำ](/th/concepts/memory), [บริบท](/th/concepts/context)

  </Accordion>

  <Accordion title="การค้นหาหน่วยความจำเชิงความหมายต้องใช้คีย์ 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 ดูรายละเอียดการตั้งค่าได้ที่ [หน่วยความจำ](/th/concepts/memory) และ [การค้นหาหน่วยความจำ](/th/concepts/memory-search)

  </Accordion>
</AccordionGroup>

## ตำแหน่งจัดเก็บสิ่งต่างๆ บนดิสก์

<AccordionGroup>
  <Accordion title="ข้อมูลทั้งหมดที่ใช้กับ OpenClaw ถูกบันทึกไว้ภายในเครื่องหรือไม่?">
    ไม่ใช่: **สถานะของ OpenClaw เองอยู่ภายในเครื่อง** แต่ **บริการภายนอกยังคงเห็นสิ่งที่ส่งไป**

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

    เนื้อหาที่เกี่ยวข้อง: [พื้นที่ทำงานของเอเจนต์](/th/concepts/agent-workspace), [หน่วยความจำ](/th/concepts/memory)

  </Accordion>

  <Accordion title="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`)

  </Accordion>

  <Accordion title="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** แทนการพึ่งพาประวัติการแชต

    ดู [พื้นที่ทำงานของเอเจนต์](/th/concepts/agent-workspace) และ [หน่วยความจำ](/th/concepts/memory)

  </Accordion>

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

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

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

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

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

    ดู [บริบท](/th/concepts/context) และ [การกำหนดค่าเอเจนต์](/th/gateway/config-agents)

  </Accordion>

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

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

    เอกสาร: [พื้นที่ทำงานของเอเจนต์](/th/concepts/agent-workspace)

  </Accordion>

  <Accordion title="จะถอนการติดตั้ง OpenClaw อย่างสมบูรณ์ได้อย่างไร?">
    ดู [ถอนการติดตั้ง](/th/install/uninstall)
  </Accordion>

  <Accordion title="เอเจนต์สามารถทำงานนอกพื้นที่ทำงานได้หรือไม่?">
    ได้ พื้นที่ทำงานคือ **cwd เริ่มต้น** และจุดยึดของหน่วยความจำ ไม่ใช่แซนด์บ็อกซ์แบบตายตัว พาธสัมพัทธ์จะถูกตีความภายในพื้นที่ทำงาน ส่วนพาธสัมบูรณ์สามารถเข้าถึงตำแหน่งอื่นบนโฮสต์ได้ เว้นแต่จะเปิดใช้แซนด์บ็อกซ์ หากต้องการแยกการทำงาน ให้ใช้ [`agents.defaults.sandbox`](/th/gateway/sandboxing) หรือการตั้งค่าแซนด์บ็อกซ์ต่อเอเจนต์ หากต้องการให้ที่เก็บเป็นไดเรกทอรีทำงานเริ่มต้น ให้ชี้ `workspace` ของเอเจนต์นั้นไปยังรูทของที่เก็บ ที่เก็บ OpenClaw เองเป็นเพียงซอร์สโค้ด ดังนั้นควรแยกพื้นที่ทำงานออกจากกัน เว้นแต่ตั้งใจให้เอเจนต์ทำงานภายในที่เก็บนั้น

    ```json5
    {
      agents: {
        defaults: {
          workspace: "~/Projects/my-repo",
        },
      },
    }
    ```

  </Accordion>

  <Accordion title="โหมดระยะไกล: ที่เก็บเซสชันอยู่ที่ใด?">
    สถานะเซสชันเป็นของ **โฮสต์ Gateway** ในโหมดระยะไกล ที่เก็บเซสชันที่เกี่ยวข้องจะอยู่บนเครื่องระยะไกล ไม่ใช่แล็ปท็อปภายในเครื่อง ดู [การจัดการเซสชัน](/th/concepts/session)
  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="การกำหนดค่าใช้รูปแบบใด? อยู่ที่ใด?">
    OpenClaw อ่านการกำหนดค่า **JSON5** ที่เป็นตัวเลือกจาก `$OPENCLAW_CONFIG_PATH` (ค่าเริ่มต้น: `~/.openclaw/openclaw.json`) หากไม่มีไฟล์ดังกล่าว ระบบจะใช้ค่าเริ่มต้นที่ค่อนข้างปลอดภัย รวมถึงพื้นที่ทำงานเริ่มต้น `~/.openclaw/workspace`
  </Accordion>

  <Accordion title='ตั้งค่า 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`

  </Accordion>

  <Accordion title="เหตุใดตอนนี้จึงต้องใช้โทเค็นบน 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` จะสร้างโทเค็นได้ทุกเมื่อ

  </Accordion>

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

  <Accordion title="จะปิดข้อความสโลแกนตลกๆ ของ CLI ได้อย่างไร?">
    ตั้งค่า `cli.banner.taglineMode`:

    ```json5
    {
      cli: {
        banner: {
          taglineMode: "off", // random | default | off
        },
      },
    }
    ```

    - `off`: ซ่อนข้อความสโลแกน แต่ยังคงแสดงบรรทัดชื่อ/เวอร์ชันของแบนเนอร์
    - `default`: ใช้ `All your chats, one OpenClaw.` เสมอ
    - `random`: หมุนเวียนสโลแกนตลก/ตามฤดูกาล (พฤติกรรมเริ่มต้น)
    - หากไม่ต้องการแบนเนอร์เลย ให้ตั้งค่าตัวแปรสภาพแวดล้อม `OPENCLAW_HIDE_BANNER=1`

  </Accordion>

  <Accordion title="จะเปิดใช้งานการค้นหาเว็บ (และการดึงข้อมูลจากเว็บ) ได้อย่างไร?">
    `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` (หรือสภาพแวดล้อมของบริการ)

    เอกสาร: [เครื่องมือเว็บ](/th/tools/web)

  </Accordion>

  <Accordion title="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.*`

    เอกสาร: [การกำหนดค่า](/th/cli/config), [การตั้งค่า](/th/cli/configure), [การแก้ไขปัญหา Gateway](/th/gateway/troubleshooting#gateway-rejected-invalid-config), [Doctor](/th/gateway/doctor)

  </Accordion>

  <Accordion title="ฉันจะใช้งาน Gateway ส่วนกลางร่วมกับตัวทำงานเฉพาะทางบนอุปกรณ์หลายเครื่องได้อย่างไร">
    รูปแบบที่พบบ่อย: **Gateway หนึ่งรายการ** (เช่น Raspberry Pi) ร่วมกับ **โหนด** และ **เอเจนต์**

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

    เอกสาร: [โหนด](/th/nodes), [การเข้าถึงระยะไกล](/th/gateway/remote), [การกำหนดเส้นทางหลายเอเจนต์](/th/concepts/multi-agent), [เอเจนต์ย่อย](/th/tools/subagents), [TUI](/th/web/tui)

  </Accordion>

  <Accordion title="เบราว์เซอร์ OpenClaw สามารถทำงานแบบ headless ได้หรือไม่">
    ได้:

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

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

  </Accordion>

  <Accordion title="ฉันจะใช้ Brave เพื่อควบคุมเบราว์เซอร์ได้อย่างไร">
    ตั้งค่า `browser.executablePath` เป็นไบนารี Brave ของคุณ (หรือเบราว์เซอร์ที่ใช้ Chromium อื่น) แล้วเริ่ม Gateway ใหม่ ดู [เบราว์เซอร์](/th/tools/browser#use-brave-or-another-chromium-based-browser)
  </Accordion>
</AccordionGroup>

## Gateway และโหนดระยะไกล

<AccordionGroup>
  <Accordion title="คำสั่งส่งต่อระหว่าง Telegram, Gateway และโหนดอย่างไร">
    ข้อความ Telegram จะได้รับการจัดการโดย **Gateway** ซึ่งเรียกใช้เอเจนต์ก่อน แล้วจึงเรียกโหนดผ่าน **Gateway WebSocket** เฉพาะเมื่อต้องใช้เครื่องมือของโหนด:

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

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

  </Accordion>

  <Accordion title="เอเจนต์ของฉันจะเข้าถึงคอมพิวเตอร์ของฉันได้อย่างไร หาก 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 list
       openclaw devices approve <requestId>
       ```

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

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

    เอกสาร: [โหนด](/th/nodes), [โปรโตคอล Gateway](/th/gateway/protocol), [โหมดระยะไกลของ macOS](/th/platforms/mac/remote), [ความปลอดภัย](/th/gateway/security)

  </Accordion>

  <Accordion title="Tailscale เชื่อมต่อแล้วแต่ฉันไม่ได้รับการตอบกลับ ต้องทำอย่างไร">
    ตรวจสอบข้อมูลพื้นฐาน:

    ```bash
    openclaw gateway status
    openclaw status
    openclaw channels status
    ```

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

    เอกสาร: [Tailscale](/th/gateway/tailscale), [การเข้าถึงระยะไกล](/th/gateway/remote), [ช่องทาง](/th/channels)

  </Accordion>

  <Accordion title="อินสแตนซ์ OpenClaw สองรายการสามารถสื่อสารกันได้หรือไม่ (ภายในเครื่อง + VPS)">
    ได้ แต่ไม่มีบริดจ์ระหว่างบอตในตัว

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

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

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

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

    เอกสาร: [การเข้าถึงระยะไกล](/th/gateway/remote), [CLI เอเจนต์](/th/cli/agent), [การส่งจากเอเจนต์](/th/tools/agent-send)

  </Accordion>

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

  </Accordion>

  <Accordion title="การใช้โหนดบนแล็ปท็อปส่วนตัวแทน 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 เหมาะสำหรับการเข้าถึงเชลล์เป็นครั้งคราว ส่วนโหนดใช้งานง่ายกว่าสำหรับเวิร์กโฟลว์เอเจนต์และระบบอัตโนมัติของอุปกรณ์ที่ทำงานต่อเนื่อง

    เอกสาร: [โหนด](/th/nodes), [CLI โหนด](/th/cli/nodes), [เบราว์เซอร์](/th/tools/browser)

  </Accordion>

  <Accordion title="โหนดเรียกใช้บริการ Gateway หรือไม่">
    ไม่ ควรเรียกใช้ **Gateway เพียงหนึ่งรายการ** ต่อโฮสต์ เว้นแต่ตั้งใจเรียกใช้โปรไฟล์ที่แยกจากกัน (ดู [Gateway หลายรายการ](/th/gateway/multiple-gateways)) โหนดคืออุปกรณ์ต่อพ่วงที่เชื่อมต่อกับ Gateway (โหนด iOS/Android หรือ "โหมดโหนด" ของ macOS ในแอปแถบเมนู) สำหรับโฮสต์โหนดแบบ headless และการควบคุมด้วย CLI โปรดดู [CLI โฮสต์โหนด](/th/cli/node)

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

  </Accordion>

  <Accordion title="มีวิธีใช้ API / RPC เพื่อใช้การกำหนดค่าหรือไม่">
    มี:

    - `config.schema.lookup`: ตรวจสอบซับทรีการกำหนดค่าหนึ่งรายการ พร้อมโหนดสคีมาระดับตื้น คำใบ้ UI ที่ตรงกัน และสรุปโหนดย่อยโดยตรงก่อนเขียน
    - `config.get`: ดึงสแนปช็อตปัจจุบันพร้อมแฮช
    - `config.patch`: อัปเดตบางส่วนอย่างปลอดภัย (แนะนำสำหรับการแก้ไข RPC ส่วนใหญ่) โหลดใหม่แบบทันทีเมื่อทำได้ และรีสตาร์ตเมื่อจำเป็น
    - `config.apply`: ตรวจสอบความถูกต้องและแทนที่การกำหนดค่าทั้งหมด โหลดใหม่แบบทันทีเมื่อทำได้ และรีสตาร์ตเมื่อจำเป็น
    - เครื่องมือรันไทม์ `gateway` สำหรับเอเจนต์ยังคงปฏิเสธการเขียน `tools.exec.ask` / `tools.exec.security` ใหม่ ส่วนชื่อแทน `tools.bash.*` แบบเดิมจะถูกปรับให้อยู่ในรูปมาตรฐานเป็นพาธที่ได้รับการป้องกันเดียวกัน

  </Accordion>

  <Accordion title="การกำหนดค่าขั้นต่ำที่เหมาะสมสำหรับการติดตั้งครั้งแรก">
    ```json5
    {
      agents: { defaults: { workspace: "~/.openclaw/workspace" } },
      channels: { whatsapp: { allowFrom: ["+15555550123"] } },
    }
    ```

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

  </Accordion>

  <Accordion title="ฉันจะตั้งค่า Tailscale บน VPS และเชื่อมต่อจาก Mac ได้อย่างไร">
    1. **ติดตั้งและเข้าสู่ระบบบน VPS**:
       ```bash
       curl -fsSL https://tailscale.com/install.sh | sh
       sudo 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](/th/gateway/tailscale)

  </Accordion>

  <Accordion title="ฉันจะเชื่อมต่อ 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 list
       openclaw devices approve <requestId>
       ```

    เอกสาร: [โปรโตคอล Gateway](/th/gateway/protocol), [การค้นพบ](/th/gateway/discovery), [โหมดระยะไกลของ macOS](/th/platforms/mac/remote)

  </Accordion>

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

    เอกสาร: [Node](/th/nodes), [CLI สำหรับ Node](/th/cli/nodes), [Gateway หลายรายการ](/th/gateway/multiple-gateways)

  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="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](/th/help/environment)

  </Accordion>

  <Accordion title="ฉันเริ่ม Gateway ผ่านบริการแล้วตัวแปรสภาพแวดล้อมหายไป ต้องทำอย่างไร">
    มีวิธีแก้สองวิธี:

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

  </Accordion>

  <Accordion title='ฉันตั้งค่า 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](/th/concepts/model-providers) และ [/environment](/th/help/environment)

  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="ฉันจะเริ่มการสนทนาใหม่ได้อย่างไร">
    ส่ง `/new` หรือ `/reset` เป็นข้อความเดี่ยว ดู [การจัดการเซสชัน](/th/concepts/session)
  </Accordion>

  <Accordion title="เซสชันจะรีเซ็ตโดยอัตโนมัติหรือไม่หากฉันไม่เคยส่ง /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` ดูวงจรชีวิตทั้งหมดได้ที่ [การจัดการเซสชัน](/th/concepts/session)

  </Accordion>

  <Accordion title="มีวิธีสร้างทีมอินสแตนซ์ OpenClaw หรือไม่ (CEO หนึ่งรายและเอเจนต์หลายราย)">
    มี โดยใช้ **การกำหนดเส้นทางแบบหลายเอเจนต์** และ **เอเจนต์ย่อย** ซึ่งประกอบด้วยเอเจนต์ผู้ประสานงานหนึ่งรายและเอเจนต์ผู้ปฏิบัติงานหลายรายที่มีพื้นที่ทำงานและโมเดลของตนเอง

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

    เอกสาร: [การกำหนดเส้นทางแบบหลายเอเจนต์](/th/concepts/multi-agent), [เอเจนต์ย่อย](/th/tools/subagents), [CLI สำหรับเอเจนต์](/th/cli/agents)

  </Accordion>

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

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

  </Accordion>

  <Accordion title="ฉันจะรีเซ็ต OpenClaw ทั้งหมดโดยยังคงติดตั้งไว้ได้อย่างไร">
    ```bash
    openclaw reset
    ```

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

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

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

    ```bash
    openclaw onboard --install-daemon
    ```

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

  </Accordion>

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

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

    เอกสาร: [Compaction](/th/concepts/compaction), [การตัดแต่งเซสชัน](/th/concepts/session-pruning), [การจัดการเซสชัน](/th/concepts/session)

  </Accordion>

  <Accordion title='เหตุใดฉันจึงเห็น "LLM request rejected: messages.content.tool_use.input field required"'>
    ข้อผิดพลาดในการตรวจสอบความถูกต้องจากผู้ให้บริการ: โมเดลสร้างบล็อก `tool_use` โดยไม่มี `input` ที่จำเป็น โดยทั่วไปหมายความว่าประวัติเซสชันล้าสมัยหรือเสียหาย (มักเกิดหลังจากเธรดที่ยาวหรือการเปลี่ยนแปลงเครื่องมือ/สคีมา)

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

  </Accordion>

  <Accordion title="เหตุใดฉันจึงได้รับข้อความ 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](/th/gateway/heartbeat)

  </Accordion>

  <Accordion title='ฉันจำเป็นต้องเพิ่ม "บัญชีบอต" ลงในกลุ่ม WhatsApp หรือไม่'>
    ไม่ OpenClaw ทำงานบน **บัญชีของคุณเอง** หากอยู่ในกลุ่ม OpenClaw ก็จะมองเห็นกลุ่มนั้น โดยค่าเริ่มต้น การตอบกลับในกลุ่มจะถูกบล็อกจนกว่าจะอนุญาตผู้ส่ง (`groupPolicy: "allowlist"`)

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

    ```json5
    {
      channels: {
        whatsapp: {
          groupPolicy: "allowlist",
          groupAllowFrom: ["+15551234567"],
        },
      },
    }
    ```

  </Accordion>

  <Accordion title="ฉันจะรับ JID ของกลุ่ม WhatsApp ได้อย่างไร">
    วิธีที่เร็วที่สุดคือเฝ้าดูบันทึกและส่งข้อความทดสอบในกลุ่ม

    ```bash
    openclaw logs --follow --json
    ```

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

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

    ```bash
    openclaw directory groups list --channel whatsapp
    ```

    เอกสาร: [WhatsApp](/th/channels/whatsapp), [ไดเรกทอรี](/th/cli/directory), [บันทึก](/th/cli/logs)

  </Accordion>

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

    ดู [กลุ่ม](/th/channels/groups) และ [ข้อความกลุ่ม](/th/channels/group-messages)

  </Accordion>

  <Accordion title="กลุ่ม/เธรดใช้บริบทร่วมกับ DM หรือไม่?">
    โดยค่าเริ่มต้น แชตโดยตรงจะรวมเข้าสู่เซสชันหลัก กลุ่ม/ช่องมีคีย์เซสชันของตนเอง และหัวข้อ Telegram / เธรด Discord เป็นเซสชันแยกกัน ดู [กลุ่ม](/th/channels/groups) และ [ข้อความกลุ่ม](/th/channels/group-messages)
  </Accordion>

  <Accordion title="สามารถสร้างเวิร์กสเปซและเอเจนต์ได้กี่รายการ?">
    ไม่มีขีดจำกัดตายตัว โดยสร้างได้หลายสิบหรือแม้แต่หลายร้อยรายการ แต่ควรระวัง:

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

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

  </Accordion>

  <Accordion title="สามารถเรียกใช้บอตหรือแชตหลายรายการพร้อมกัน (Slack) ได้หรือไม่ และควรตั้งค่าอย่างไร?">
    ได้ ผ่าน **การกำหนดเส้นทางแบบหลายเอเจนต์**: เรียกใช้เอเจนต์ที่แยกจากกันหลายตัวและกำหนดเส้นทางข้อความขาเข้าตามช่อง/บัญชี/เพียร์ รองรับ Slack ในฐานะช่องและสามารถผูกกับเอเจนต์ที่ระบุได้

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

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

    เอกสาร: [การกำหนดเส้นทางแบบหลายเอเจนต์](/th/concepts/multi-agent), [Slack](/th/channels/slack), [เบราว์เซอร์](/th/tools/browser), [Node](/th/nodes)

  </Accordion>
</AccordionGroup>

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

คำถามและคำตอบเกี่ยวกับโมเดล ได้แก่ ค่าเริ่มต้น การเลือก นามแฝง การสลับ การสลับเมื่อขัดข้อง และโปรไฟล์การยืนยันตัวตน อยู่ใน [คำถามที่พบบ่อยเกี่ยวกับโมเดล](/th/help/faq-models)

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

<AccordionGroup>
  <Accordion title="Gateway ใช้พอร์ตใด?">
    `gateway.port` ควบคุมพอร์ตมัลติเพล็กซ์เดียวสำหรับ WebSocket + HTTP (Control UI, ฮุก เป็นต้น) ลำดับความสำคัญ:

    ```text
    --port > OPENCLAW_GATEWAY_PORT > gateway.port > ค่าเริ่มต้น 18789
    ```

  </Accordion>

  <Accordion title='เหตุใด 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:` (สาเหตุหลักที่พบบ่อยเมื่อโปรเซสยังทำงานอยู่แต่พอร์ตไม่ได้รับฟัง)
  </Accordion>

  <Accordion title='เหตุใด openclaw gateway status จึงแสดง "Config (cli)" และ "Config (service)" แตกต่างกัน?'>
    กำลังแก้ไขไฟล์การกำหนดค่าหนึ่งไฟล์ ขณะที่บริการเรียกใช้อีกไฟล์หนึ่ง (มักเกิดจาก `--profile` / `OPENCLAW_STATE_DIR` ไม่ตรงกัน)

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

    ```bash
    openclaw gateway install --force
    ```

  </Accordion>

  <Accordion title='"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>`

  </Accordion>

  <Accordion title="จะเรียกใช้ 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 ภายในเครื่องด้วยตัวเอง

  </Accordion>

  <Accordion title='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 list
      openclaw devices rotate --device <id> --role operator
      ```
    - หากการหมุนเวียนถูกปฏิเสธ: เซสชันอุปกรณ์ที่จับคู่สามารถหมุนเวียนได้เฉพาะอุปกรณ์ของ **ตนเอง** เว้นแต่จะมี `operator.admin` ด้วย และค่า `--scope` ที่ระบุอย่างชัดเจนต้องไม่เกินขอบเขตผู้ปฏิบัติงานปัจจุบันของผู้เรียก
    - หากยังติดขัด: `openclaw status --all` พร้อม [การแก้ไขปัญหา](/th/gateway/troubleshooting) ดูรายละเอียดการยืนยันตัวตนที่ [แดชบอร์ด](/th/web/dashboard)

  </Accordion>

  <Accordion title="ตั้งค่า 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` บนโฮสต์เดียวกันที่จำเป็นไว้

  </Accordion>

  <Accordion title="สามารถเรียกใช้ 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 หลายรายการ](/th/gateway/multiple-gateways)

  </Accordion>

  <Accordion title='"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](/th/gateway/protocol)

  </Accordion>
</AccordionGroup>

## การบันทึกและการดีบัก

<AccordionGroup>
  <Accordion title="บันทึกอยู่ที่ใด?">
    บันทึกไฟล์ (มีโครงสร้าง): `/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`

    ดูข้อมูลเพิ่มเติมที่ [การแก้ไขปัญหา](/th/gateway/troubleshooting)

  </Accordion>

  <Accordion title="จะเริ่ม/หยุด/รีสตาร์ตบริการ Gateway ได้อย่างไร?">
    ```bash
    openclaw gateway status
    openclaw gateway restart
    ```

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

  </Accordion>

  <Accordion title="ปิดเทอร์มินัลบน Windows ไปแล้ว จะรีสตาร์ต OpenClaw ได้อย่างไร?">
    โหมดการติดตั้ง Windows มีสามแบบ:

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

    **2) WSL2 Gateway แบบกำหนดเอง**: Gateway ทำงานภายใน Linux
    ```powershell
    wsl
    openclaw gateway status
    openclaw gateway restart
    ```
    หากยังไม่เคยติดตั้งบริการ ให้เริ่มบริการในเบื้องหน้า: `openclaw gateway run`

    **3) CLI/Gateway แบบเนทีฟบน Windows**: ทำงานโดยตรงใน Windows
    ```powershell
    openclaw gateway status
    openclaw gateway restart
    ```
    หากเรียกใช้ด้วยตนเอง (ไม่มีบริการ): `openclaw gateway run`

    เอกสาร: [Windows](/th/platforms/windows), [คู่มือการปฏิบัติงานบริการ Gateway](/th/gateway)

  </Accordion>

  <Accordion title="Gateway ทำงานอยู่แต่ไม่ได้รับการตอบกลับ ควรตรวจสอบอะไรบ้าง">
    ตรวจสอบสถานะอย่างรวดเร็ว:

    ```bash
    openclaw status
    openclaw models status
    openclaw channels status
    openclaw logs --follow
    ```

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

    เอกสาร: [ช่องทาง](/th/channels), [การแก้ไขปัญหา](/th/gateway/troubleshooting), [การเข้าถึงจากระยะไกล](/th/gateway/remote)

  </Accordion>

  <Accordion title='"ตัดการเชื่อมต่อจาก Gateway: ไม่มีเหตุผล" — ควรทำอย่างไร'>
    โดยทั่วไปหมายความว่า UI สูญเสียการเชื่อมต่อ WebSocket ตรวจสอบว่า Gateway ทำงานอยู่หรือไม่ (`openclaw gateway status`) สถานะปกติหรือไม่ (`openclaw status`) UI มีโทเค็นที่ถูกต้องหรือไม่ (`openclaw dashboard`) หากเชื่อมต่อจากระยะไกล ลิงก์ทันเนล/Tailscale ทำงานอยู่หรือไม่

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

    ```bash
    openclaw logs --follow
    ```

    เอกสาร: [Dashboard](/th/web/dashboard), [การเข้าถึงจากระยะไกล](/th/gateway/remote), [การแก้ไขปัญหา](/th/gateway/troubleshooting)

  </Accordion>

  <Accordion title="setMyCommands ของ Telegram ล้มเหลว ควรตรวจสอบอะไรบ้าง">
    ```bash
    openclaw channels status
    openclaw 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](/th/channels/telegram), [การแก้ไขปัญหาช่องทาง](/th/channels/troubleshooting)

  </Accordion>

  <Accordion title="TUI ไม่แสดงผลลัพธ์ ควรตรวจสอบอะไรบ้าง">
    ```bash
    openclaw status
    openclaw models status
    openclaw logs --follow
    ```

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

    เอกสาร: [TUI](/th/web/tui), [คำสั่งแบบเครื่องหมายทับ](/th/tools/slash-commands)

  </Accordion>

  <Accordion title="จะหยุด Gateway โดยสมบูรณ์แล้วเริ่มใหม่ได้อย่างไร">
    หากติดตั้งบริการไว้แล้ว (launchd บน macOS, systemd บน Linux):

    ```bash
    openclaw gateway stop
    openclaw gateway start
    ```

    หากทำงานในโฟร์กราวด์ ให้หยุดด้วย Ctrl-C แล้วใช้ `openclaw gateway run`

    เอกสาร: [คู่มือการปฏิบัติงานบริการ Gateway](/th/gateway)

  </Accordion>

  <Accordion title="อธิบายแบบง่าย ๆ: openclaw gateway restart เทียบกับ openclaw gateway">
    `openclaw gateway restart` เริ่ม **บริการเบื้องหลัง** (launchd/systemd) ใหม่ ส่วน `openclaw gateway` เรียกใช้ Gateway **ในโฟร์กราวด์** สำหรับเซสชันเทอร์มินัลนี้ ใช้คำสั่งย่อยของ Gateway หากติดตั้งบริการไว้แล้ว และใช้การเรียกใช้แบบโฟร์กราวด์โดยตรงสำหรับการใช้งานครั้งเดียว
  </Accordion>

  <Accordion title="วิธีที่เร็วที่สุดในการดูรายละเอียดเพิ่มเติมเมื่อมีบางอย่างล้มเหลว">
    เริ่ม Gateway ด้วย `--verbose` เพื่อดูรายละเอียดในคอนโซลเพิ่มเติม จากนั้นตรวจสอบไฟล์บันทึกเพื่อดูข้อผิดพลาดเกี่ยวกับการยืนยันตัวตนของช่องทาง การกำหนดเส้นทางโมเดล และ RPC
  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="Skills ของฉันสร้างรูปภาพ/PDF แต่ไม่มีสิ่งใดถูกส่ง">
    ไฟล์แนบขาออกจากเอเจนต์ต้องใช้ฟิลด์สื่อแบบมีโครงสร้าง เช่น `media`, `mediaUrl`, `path` หรือ `filePath` ดู [การตั้งค่าผู้ช่วย OpenClaw](/th/start/openclaw) และ [การส่งของเอเจนต์](/th/tools/agent-send)

    ```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` เพื่อให้การส่งจากพาธภายในเครื่องเข้มงวดยิ่งขึ้น

    ดู [รูปภาพ](/th/nodes/images)

  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="เปิดให้ 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 ที่มีความเสี่ยง

  </Accordion>

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

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

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

    รายละเอียด: [ความปลอดภัย](/th/gateway/security)

  </Accordion>

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

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

    รายละเอียด: [ความปลอดภัย](/th/gateway/security), [การใช้แซนด์บ็อกซ์](/th/gateway/sandboxing)

  </Accordion>

  <Accordion title="พบรายงานเกี่ยวกับอินสแตนซ์ OpenClaw ที่ถูกเปิดเผย ควรตรวจสอบอะไรบ้าง">
    ```bash
    openclaw security audit --deep
    openclaw gateway status
    ```

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

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

  </Accordion>

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

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

    รายละเอียด: [Skills](/th/tools/skills), [Plugin](/th/tools/plugin), [ความปลอดภัย](/th/gateway/security)

  </Accordion>

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

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

    เอกสาร: [ความปลอดภัย](/th/gateway/security), [การจับคู่](/th/channels/pairing)

  </Accordion>

  <Accordion title="ให้ระบบทำงานกับข้อความของฉันโดยอัตโนมัติได้หรือไม่ และปลอดภัยหรือไม่">
    **ไม่** แนะนำให้ระบบทำงานกับข้อความส่วนตัวโดยอัตโนมัติทั้งหมด รูปแบบที่ปลอดภัยที่สุดคือ คง DM ไว้ใน **โหมดจับคู่** หรือใช้รายการอนุญาตที่เข้มงวด ใช้ **หมายเลขหรือบัญชีแยกต่างหาก** หากต้องการให้ส่งข้อความในนามของคุณ และให้ระบบร่างข้อความโดยที่คุณ **อนุมัติก่อนส่ง**

    หากต้องการทดลอง ให้ใช้บัญชีเฉพาะที่แยกออกจากบัญชีอื่น ดู [ความปลอดภัย](/th/gateway/security)

  </Accordion>

  <Accordion title="ใช้โมเดลราคาถูกกว่าสำหรับงานผู้ช่วยส่วนบุคคลได้หรือไม่">
    ได้ **หาก** เอเจนต์ใช้เฉพาะการแชตและอินพุตเชื่อถือได้ โมเดลระดับเล็กกว่ามีโอกาสถูกยึดการควบคุมด้วยคำสั่งมากกว่า จึงควรหลีกเลี่ยงการใช้กับเอเจนต์ที่เปิดใช้เครื่องมือหรือเมื่ออ่านเนื้อหาที่ไม่น่าเชื่อถือ หากจำเป็นต้องใช้โมเดลที่เล็กกว่า ให้จำกัดเครื่องมือและเรียกใช้ภายในแซนด์บ็อกซ์ ดู [ความปลอดภัย](/th/gateway/security)
  </Accordion>

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

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

    ```bash
    openclaw pairing list telegram
    ```

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

  </Accordion>

  <Accordion title="WhatsApp: ระบบจะส่งข้อความถึงผู้ติดต่อของฉันหรือไม่ การจับคู่ทำงานอย่างไร">
    ไม่ นโยบาย DM เริ่มต้นของ WhatsApp คือ **การจับคู่** ผู้ส่งที่ไม่รู้จักจะได้รับเพียงรหัสจับคู่ และข้อความของผู้ส่งจะ **ไม่ถูกประมวลผล** OpenClaw จะตอบกลับเฉพาะแชตที่ได้รับ หรือการส่งที่คุณเรียกใช้อย่างชัดเจนเท่านั้น

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

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

  </Accordion>
</AccordionGroup>

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

<AccordionGroup>
  <Accordion title="ฉันจะหยุดไม่ให้ข้อความระบบภายในแสดงในแชตได้อย่างไร">
    ข้อความภายใน/ข้อความจากเครื่องมือส่วนใหญ่จะแสดงเฉพาะเมื่อเปิดใช้ **verbose**, **trace** หรือ **reasoning** สำหรับเซสชันนั้น

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

    ```text
    /verbose off
    /trace off
    /reasoning off
    ```

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

    เอกสาร: [การคิดและ verbose](/th/tools/thinking), [ความปลอดภัย](/th/gateway/security/index#reasoning-and-verbose-output-in-groups)

  </Accordion>

  <Accordion title="ฉันจะหยุด/ยกเลิกงานที่กำลังทำงานได้อย่างไร">
    ส่งรายการใดรายการหนึ่งต่อไปนี้ **เป็นข้อความเดี่ยว** (ไม่มีเครื่องหมายทับ) เพื่อสั่งยกเลิก: `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`) สามารถใช้แทรกในข้อความได้เช่นกันสำหรับผู้ส่งที่อยู่ในรายการอนุญาต ดู[คำสั่งที่มีเครื่องหมายทับ](/th/tools/slash-commands)

  </Accordion>

  <Accordion title='ฉันจะส่งข้อความ Discord จาก Telegram ได้อย่างไร ("การส่งข้อความข้ามบริบทถูกปฏิเสธ")'>
    OpenClaw บล็อกการส่งข้อความ **ข้ามผู้ให้บริการ** โดยค่าเริ่มต้น หากการเรียกใช้เครื่องมือผูกกับ Telegram เครื่องมือจะไม่ส่งข้อความไปยัง Discord เว้นแต่คุณจะอนุญาตอย่างชัดเจน และการตั้งค่านี้จะมีผลทันทีโดยไม่ต้องรีสตาร์ต Gateway:

    ```json5
    {
      tools: {
        message: {
          crossContext: {
            allowAcrossProviders: true,
            marker: { enabled: true, prefix: "[จาก {channel}] " },
          },
        },
      },
    }
    ```

  </Accordion>

  <Accordion title='ทำไมจึงรู้สึกว่าบอต "เพิกเฉย" ต่อข้อความที่ส่งติด ๆ กัน'>
    โดยค่าเริ่มต้น พรอมต์ที่ส่งระหว่างการทำงานจะถูกนำไปกำกับการทำงานที่กำลังดำเนินอยู่ ใช้ `/queue` เพื่อเลือกพฤติกรรมของการทำงานที่กำลังดำเนินอยู่:

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

    เพิ่มตัวเลือกให้โหมดที่ใช้คิวได้ เช่น `debounce:0.5s cap:25 drop:summarize` ดู[คิวคำสั่ง](/th/concepts/queue)และ[คิวการกำกับ](/th/concepts/queue-steering)

  </Accordion>
</AccordionGroup>

## เบ็ดเตล็ด

<AccordionGroup>
  <Accordion title='โมเดลเริ่มต้นสำหรับ 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` ที่คาดไว้สำหรับเอเจนต์ที่กำลังทำงาน
  </Accordion>
</AccordionGroup>

---

หากยังแก้ปัญหาไม่ได้ ให้สอบถามใน [Discord](https://discord.com/invite/clawd) หรือเปิด[การสนทนาบน GitHub](https://github.com/openclaw/openclaw/discussions)

## เนื้อหาที่เกี่ยวข้อง

- [คำถามที่พบบ่อยเกี่ยวกับการใช้งานครั้งแรก](/th/help/faq-first-run) - การติดตั้ง การเริ่มต้นใช้งาน การยืนยันตัวตน การสมัครใช้บริการ และความล้มเหลวในช่วงแรก
- [คำถามที่พบบ่อยเกี่ยวกับโมเดล](/th/help/faq-models) - การเลือกโมเดล การสลับเมื่อขัดข้อง และโปรไฟล์การยืนยันตัวตน
- [การแก้ไขปัญหา](/th/help/troubleshooting) - การคัดแยกปัญหาโดยเริ่มจากอาการ
