Guides
การตั้งค่าผู้ช่วยส่วนตัว
OpenClaw เป็น Gateway แบบโฮสต์เองที่เชื่อมต่อ Discord, Google Chat, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo และอื่น ๆ เข้ากับเอเจนต์ AI คู่มือนี้ครอบคลุมการตั้งค่าแบบ "ผู้ช่วยส่วนตัว": หมายเลข WhatsApp เฉพาะที่ทำงานเหมือนผู้ช่วย AI ที่พร้อมใช้งานตลอดเวลา
⚠️ ความปลอดภัยมาก่อน
คุณกำลังวางเอเจนต์ไว้ในตำแหน่งที่สามารถ:
- รันคำสั่งบนเครื่องของคุณ (ขึ้นอยู่กับนโยบายเครื่องมือของคุณ)
- อ่าน/เขียนไฟล์ในเวิร์กสเปซของคุณ
- ส่งข้อความกลับออกไปผ่าน WhatsApp/Telegram/Discord/Mattermost และช่องทางที่บันเดิลมาอื่น ๆ
เริ่มแบบรัดกุมไว้ก่อน:
- ตั้งค่า
channels.whatsapp.allowFromเสมอ (อย่าเปิดให้ทั้งโลกเข้าถึงบน Mac ส่วนตัวของคุณ) - ใช้หมายเลข WhatsApp เฉพาะสำหรับผู้ช่วย
- Heartbeats ตอนนี้มีค่าเริ่มต้นเป็นทุก 30 นาที ปิดไว้จนกว่าคุณจะเชื่อถือการตั้งค่านี้โดยตั้งค่า
agents.defaults.heartbeat.every: "0m"
ข้อกำหนดเบื้องต้น
- ติดตั้งและทำ onboarding OpenClaw แล้ว - ดู เริ่มต้นใช้งาน หากคุณยังไม่ได้ทำ
- หมายเลขโทรศัพท์ที่สอง (SIM/eSIM/เติมเงิน) สำหรับผู้ช่วย
การตั้งค่าแบบสองโทรศัพท์ (แนะนำ)
สิ่งที่คุณต้องการคือแบบนี้:
flowchart TB
A["<b>Your Phone (personal)<br></b><br>Your WhatsApp<br>+1-555-YOU"] -- message --> B["<b>Second Phone (assistant)<br></b><br>Assistant WA<br>+1-555-ASSIST"]
B -- linked via QR --> C["<b>Your Mac (openclaw)<br></b><br>AI agent"]หากคุณลิงก์ WhatsApp ส่วนตัวของคุณเข้ากับ OpenClaw ทุกข้อความที่ส่งถึงคุณจะกลายเป็น "อินพุตของเอเจนต์" ซึ่งแทบจะไม่ใช่สิ่งที่คุณต้องการ
เริ่มต้นอย่างรวดเร็วใน 5 นาที
- จับคู่ WhatsApp Web (แสดง QR; สแกนด้วยโทรศัพท์ของผู้ช่วย):
openclaw channels login- เริ่ม Gateway (ปล่อยให้รันต่อไป):
openclaw gateway --port 18789- ใส่คอนฟิกขั้นต่ำใน
~/.openclaw/openclaw.json:
{ gateway: { mode: "local" }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}ตอนนี้ส่งข้อความไปยังหมายเลขผู้ช่วยจากโทรศัพท์ที่อยู่ในรายการอนุญาตของคุณ
เมื่อ onboarding เสร็จ OpenClaw จะเปิดแดชบอร์ดอัตโนมัติและพิมพ์ลิงก์ที่สะอาด (ไม่มีโทเค็น) หากแดชบอร์ดขอการยืนยันตัวตน ให้วาง shared secret ที่กำหนดค่าไว้ในส่วนการตั้งค่า Control UI โดยค่าเริ่มต้น onboarding จะใช้โทเค็น (gateway.auth.token) แต่การยืนยันตัวตนด้วยรหัสผ่านก็ใช้ได้เช่นกันหากคุณเปลี่ยน gateway.auth.mode เป็น password หากต้องการเปิดใหม่ภายหลัง: openclaw dashboard
ให้เวิร์กสเปซแก่เอเจนต์ (AGENTS)
OpenClaw อ่านคำสั่งการทำงานและ "หน่วยความจำ" จากไดเรกทอรีเวิร์กสเปซของมัน
โดยค่าเริ่มต้น OpenClaw ใช้ ~/.openclaw/workspace เป็นเวิร์กสเปซของเอเจนต์ และจะสร้างให้โดยอัตโนมัติ (พร้อม AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md เริ่มต้น) ระหว่างการตั้งค่า/การรันเอเจนต์ครั้งแรก BOOTSTRAP.md จะถูกสร้างเฉพาะเมื่อเวิร์กสเปซใหม่เอี่ยมเท่านั้น (ไม่ควรกลับมาหลังจากคุณลบไปแล้ว) MEMORY.md เป็นทางเลือก (ไม่ได้สร้างอัตโนมัติ); เมื่อมีไฟล์นี้ จะถูกโหลดสำหรับเซสชันปกติ เซสชัน subagent จะ inject เฉพาะ AGENTS.md และ TOOLS.md
openclaw setupเลย์เอาต์เวิร์กสเปซแบบเต็ม + คู่มือการสำรองข้อมูล: เวิร์กสเปซเอเจนต์ เวิร์กโฟลว์หน่วยความจำ: หน่วยความจำ
ทางเลือก: เลือกเวิร์กสเปซอื่นด้วย agents.defaults.workspace (รองรับ ~)
{ agents: { defaults: { workspace: "~/.openclaw/workspace", }, },}หากคุณจัดส่งไฟล์เวิร์กสเปซของคุณเองจาก repo อยู่แล้ว คุณสามารถปิดการสร้างไฟล์ bootstrap ทั้งหมดได้:
{ agents: { defaults: { skipBootstrap: true, }, },}คอนฟิกที่เปลี่ยนมันให้เป็น "ผู้ช่วย"
OpenClaw มีค่าเริ่มต้นเป็นการตั้งค่าผู้ช่วยที่ดีอยู่แล้ว แต่โดยปกติคุณจะต้องปรับ:
- บุคลิก/คำสั่งใน
SOUL.md - ค่าเริ่มต้นการคิด (หากต้องการ)
- heartbeats (เมื่อคุณเชื่อถือมันแล้ว)
ตัวอย่าง:
{ logging: { level: "info" }, agents: { defaults: { model: { primary: "anthropic/claude-opus-4-6" }, workspace: "~/.openclaw/workspace", thinkingDefault: "high", timeoutSeconds: 1800, // Start with 0; enable later. heartbeat: { every: "0m" }, }, list: [ { id: "main", default: true, groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { allowFrom: ["+15555550123"], groups: { "*": { requireMention: true }, }, }, }, session: { scope: "per-sender", resetTriggers: ["/new", "/reset"], reset: { mode: "daily", atHour: 4, idleMinutes: 10080, }, },}เซสชันและหน่วยความจำ
- ไฟล์เซสชัน:
~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl - เมทาดาทาเซสชัน (การใช้โทเค็น, เส้นทางล่าสุด ฯลฯ):
~/.openclaw/agents/<agentId>/sessions/sessions.json(legacy:~/.openclaw/sessions/sessions.json) /newหรือ/resetเริ่มเซสชันใหม่สำหรับแชตนั้น (กำหนดค่าได้ผ่านresetTriggers) หากส่งมาเพียงอย่างเดียว OpenClaw จะรับทราบการรีเซ็ตโดยไม่เรียกใช้โมเดล/compact [instructions]ทำ Compaction บริบทเซสชันและรายงานงบประมาณบริบทที่เหลือ
Heartbeats (โหมดเชิงรุก)
โดยค่าเริ่มต้น OpenClaw จะรัน Heartbeat ทุก 30 นาทีด้วยพรอมป์:
Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.
ตั้งค่า agents.defaults.heartbeat.every: "0m" เพื่อปิดใช้งาน
- หากมี
HEARTBEAT.mdแต่โดยผลลัพธ์แล้วว่างเปล่า (มีเฉพาะบรรทัดว่าง, คอมเมนต์ Markdown/HTML, หัวข้อ Markdown เช่น# Heading, fence markers หรือ checklist stubs ว่าง) OpenClaw จะข้ามการรัน Heartbeat เพื่อประหยัดการเรียก API - หากไม่มีไฟล์ Heartbeat จะยังรันอยู่และโมเดลจะตัดสินใจว่าจะทำอะไร
- หากเอเจนต์ตอบด้วย
HEARTBEAT_OK(อาจมี padding สั้น ๆ; ดูagents.defaults.heartbeat.ackMaxChars) OpenClaw จะระงับการส่งออกสำหรับ Heartbeat นั้น - โดยค่าเริ่มต้น อนุญาตให้ส่ง Heartbeat ไปยังเป้าหมายแบบ DM-style
user:<id>ได้ ตั้งค่าagents.defaults.heartbeat.directPolicy: "block"เพื่อระงับการส่งไปยังเป้าหมายโดยตรงในขณะที่ยังคงให้การรัน Heartbeat ทำงานอยู่ - Heartbeats รันเทิร์นเอเจนต์เต็มรูปแบบ - ช่วงเวลาที่สั้นลงจะใช้โทเค็นมากขึ้น
{ agents: { defaults: { heartbeat: { every: "30m" }, }, },}สื่อเข้าและออก
ไฟล์แนบขาเข้า (รูปภาพ/เสียง/เอกสาร) สามารถส่งต่อไปยังคำสั่งของคุณผ่านเทมเพลต:
{{MediaPath}}(พาธไฟล์ชั่วคราวในเครื่อง){{MediaUrl}}(pseudo-URL){{Transcript}}(หากเปิดใช้การถอดเสียง)
ไฟล์แนบขาออกจากเอเจนต์ใช้ฟิลด์สื่อแบบมีโครงสร้างบนเครื่องมือข้อความหรือ payload การตอบกลับ เช่น media, mediaUrl, mediaUrls, path หรือ filePath ตัวอย่างอาร์กิวเมนต์ message-tool:
{ "message": "Here's the screenshot.", "mediaUrl": "https://example.com/screenshot.png"}OpenClaw ส่งสื่อแบบมีโครงสร้างควบคู่ไปกับข้อความ การตอบกลับสุดท้ายแบบ legacy ของผู้ช่วยอาจยังถูก normalize เพื่อความเข้ากันได้ แต่ผลลัพธ์จากเครื่องมือ, ผลลัพธ์เบราว์เซอร์, บล็อกสตรีมมิง และแอ็กชันข้อความจะไม่แยกวิเคราะห์ข้อความเป็นคำสั่งไฟล์แนบ
พฤติกรรมพาธในเครื่องใช้โมเดลความเชื่อถือในการอ่านไฟล์เดียวกับเอเจนต์:
- หาก
tools.fs.workspaceOnlyเป็นtrueพาธสื่อขาออกในเครื่องจะยังจำกัดอยู่ที่ temp root ของ OpenClaw, media cache, พาธเวิร์กสเปซเอเจนต์ และไฟล์ที่ sandbox สร้างขึ้น - หาก
tools.fs.workspaceOnlyเป็นfalseสื่อขาออกในเครื่องสามารถใช้ไฟล์ host-local ที่เอเจนต์ได้รับอนุญาตให้อ่านอยู่แล้ว - พาธในเครื่องสามารถเป็นพาธแบบ absolute, สัมพัทธ์กับเวิร์กสเปซ หรือสัมพัทธ์กับ home ด้วย
~/ - การส่ง host-local ยังอนุญาตเฉพาะสื่อและชนิดเอกสารที่ปลอดภัยเท่านั้น (รูปภาพ, เสียง, วิดีโอ, PDF, เอกสาร Office และเอกสารข้อความที่ผ่านการตรวจสอบ เช่น Markdown/MD, TXT, JSON, YAML และ YML) นี่เป็นส่วนขยายของขอบเขตความเชื่อถือการอ่าน host ที่มีอยู่ ไม่ใช่ตัวสแกนความลับ: หากเอเจนต์อ่าน
secret.txtหรือconfig.jsonแบบ host-local ได้ มันก็สามารถแนบไฟล์นั้นได้เมื่อส่วนขยายและการตรวจสอบเนื้อหาตรงกัน
นั่นหมายความว่ารูปภาพ/ไฟล์ที่สร้างขึ้นนอกเวิร์กสเปซสามารถส่งได้แล้วเมื่อ fs policy ของคุณอนุญาตการอ่านเหล่านั้นอยู่แล้ว ขณะที่ส่วนขยายข้อความ host-local ใด ๆ ยังคงถูกบล็อก เก็บไฟล์อ่อนไหวไว้นอกระบบไฟล์ที่เอเจนต์อ่านได้ หรือคง tools.fs.workspaceOnly=true ไว้สำหรับการส่งพาธในเครื่องที่เข้มงวดขึ้น
เช็กลิสต์การปฏิบัติการ
openclaw status # local status (creds, sessions, queued events)openclaw status --all # full diagnosis (read-only, pasteable)openclaw status --deep # asks the gateway for a live health probe with channel probes when supportedopenclaw health --json # gateway health snapshot (WS; default can return a fresh cached snapshot)ล็อกอยู่ภายใต้ /tmp/openclaw/ (ค่าเริ่มต้น: openclaw-YYYY-MM-DD.log)
ขั้นตอนถัดไป
- WebChat: WebChat
- การดำเนินงาน Gateway: runbook ของ Gateway
- Cron + การปลุก: งาน Cron
- คู่หูแถบเมนู macOS: แอป OpenClaw macOS
- แอปโหนด iOS: แอป iOS
- แอปโหนด Android: แอป Android
- Windows Hub: Windows
- สถานะ Linux: แอป Linux
- ความปลอดภัย: ความปลอดภัย