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 เฉพาะสำหรับผู้ช่วย
- ตอนนี้ Heartbeat มีค่าเริ่มต้นเป็นทุก 30 นาที ปิดไว้จนกว่าคุณจะเชื่อถือการตั้งค่านี้ โดยตั้งค่า
agents.defaults.heartbeat.every: "0m"
ข้อกำหนดเบื้องต้น
- ติดตั้งและเริ่มต้นใช้งาน 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"] } },}ตอนนี้ให้ส่งข้อความไปยังหมายเลขผู้ช่วยจากโทรศัพท์ที่อยู่ใน allowlist ของคุณ
เมื่อการเริ่มต้นใช้งานเสร็จสิ้น OpenClaw จะเปิดแดชบอร์ดอัตโนมัติและพิมพ์ลิงก์ที่สะอาด (ไม่มีโทเค็น) หากแดชบอร์ดถามการยืนยันตัวตน ให้วาง shared secret ที่กำหนดค่าไว้ในการตั้งค่า Control UI การเริ่มต้นใช้งานใช้โทเค็นเป็นค่าเริ่มต้น (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 เป็นทางเลือก (ไม่สร้างอัตโนมัติ); เมื่อมีอยู่ ไฟล์นี้จะถูกโหลดสำหรับเซสชันปกติ เซสชันซับเอเจนต์จะ inject เฉพาะ AGENTS.md และ TOOLS.md
openclaw setupเลย์เอาต์เวิร์กสเปซฉบับเต็ม + คู่มือสำรองข้อมูล: เวิร์กสเปซเอเจนต์ เวิร์กโฟลว์หน่วยความจำ: หน่วยความจำ
ไม่บังคับ: เลือกเวิร์กสเปซอื่นด้วย agents.defaults.workspace (รองรับ ~)
{ agents: { defaults: { workspace: "~/.openclaw/workspace", }, },}หากคุณส่งไฟล์เวิร์กสเปซของคุณเองจาก repo อยู่แล้ว คุณสามารถปิดการสร้างไฟล์ bootstrap ทั้งหมดได้:
{ agents: { defaults: { skipBootstrap: true, }, },}คอนฟิกที่ทำให้มันกลายเป็น "ผู้ช่วย"
OpenClaw มีค่าเริ่มต้นที่เหมาะกับการตั้งค่าผู้ช่วยอยู่แล้ว แต่โดยทั่วไปคุณจะต้องปรับ:
- บุคลิก/คำสั่งใน
SOUL.md - ค่าเริ่มต้นการคิด (หากต้องการ)
- Heartbeat (เมื่อคุณเชื่อถือมันแล้ว)
ตัวอย่าง:
{ 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(แบบเดิม:~/.openclaw/sessions/sessions.json) /newหรือ/resetเริ่มเซสชันใหม่สำหรับแชตนั้น (กำหนดค่าได้ผ่านresetTriggers) หากส่งมาเดี่ยวๆ OpenClaw จะยืนยันการรีเซ็ตโดยไม่เรียกโมเดล/compact [instructions]compact บริบทเซสชันและรายงานงบประมาณบริบทที่เหลืออยู่
Heartbeat (โหมดเชิงรุก)
โดยค่าเริ่มต้น 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 เช่น# Heading) OpenClaw จะข้ามการรัน Heartbeat เพื่อประหยัดการเรียก API - หากไฟล์หายไป Heartbeat จะยังคงรันและโมเดลจะตัดสินใจว่าต้องทำอะไร
- หากเอเจนต์ตอบกลับด้วย
HEARTBEAT_OK(อาจมีข้อความเสริมสั้นๆ; ดูagents.defaults.heartbeat.ackMaxChars) OpenClaw จะระงับการส่งออกสำหรับ Heartbeat นั้น - โดยค่าเริ่มต้น อนุญาตให้ส่ง Heartbeat ไปยังเป้าหมายแบบ DM
user:<id>ได้ ตั้งค่าagents.defaults.heartbeat.directPolicy: "block"เพื่อระงับการส่งไปยังเป้าหมายโดยตรง โดยยังคงให้การรัน Heartbeat ทำงานอยู่ - Heartbeat รันเป็นรอบเอเจนต์เต็มรูปแบบ - ช่วงเวลาที่สั้นลงจะใช้โทเค็นมากขึ้น
{ agents: { defaults: { heartbeat: { every: "30m" }, }, },}สื่อขาเข้าและขาออก
ไฟล์แนบขาเข้า (รูปภาพ/เสียง/เอกสาร) สามารถส่งต่อให้คำสั่งของคุณผ่านเทมเพลตได้:
{{MediaPath}}(พาธไฟล์ชั่วคราวภายในเครื่อง){{MediaUrl}}(pseudo-URL){{Transcript}}(หากเปิดใช้การถอดเสียง)
ไฟล์แนบขาออกจากเอเจนต์: ใส่ MEDIA:<path-or-url> ในบรรทัดของมันเอง (ไม่มีช่องว่าง) ตัวอย่าง:
Here's the screenshot.MEDIA:https://example.com/screenshot.pngOpenClaw จะแยกสิ่งเหล่านี้และส่งเป็นสื่อพร้อมกับข้อความ
พฤติกรรมของพาธภายในเครื่องใช้โมเดลความเชื่อถือการอ่านไฟล์เดียวกับเอเจนต์:
- หาก
tools.fs.workspaceOnlyเป็นtrueพาธภายในเครื่องของMEDIA:ขาออกจะยังถูกจำกัดให้อยู่ใน temp root ของ OpenClaw, แคชสื่อ, พาธเวิร์กสเปซของเอเจนต์ และไฟล์ที่สร้างจาก sandbox - หาก
tools.fs.workspaceOnlyเป็นfalseMEDIA:ขาออกสามารถใช้ไฟล์ภายในเครื่องโฮสต์ที่เอเจนต์ได้รับอนุญาตให้อ่านอยู่แล้ว - พาธภายในเครื่องสามารถเป็นพาธสัมบูรณ์, สัมพัทธ์กับเวิร์กสเปซ หรือสัมพัทธ์กับโฮมด้วย
~/ - การส่งจากเครื่องโฮสต์ยังอนุญาตเฉพาะสื่อและชนิดเอกสารที่ปลอดภัยเท่านั้น (รูปภาพ, เสียง, วิดีโอ, PDF และเอกสาร Office) ไฟล์ข้อความล้วนและไฟล์ที่ดูเหมือนมีความลับจะไม่ถูกถือว่าเป็นสื่อที่ส่งได้
นั่นหมายความว่ารูปภาพ/ไฟล์ที่สร้างขึ้นนอกเวิร์กสเปซสามารถส่งได้แล้วเมื่อ policy ของ fs อนุญาตให้อ่านสิ่งเหล่านั้นอยู่แล้ว โดยไม่ต้องเปิดช่องทางให้ exfiltrate ไฟล์แนบข้อความจากโฮสต์โดยพลการอีกครั้ง
รายการตรวจสอบการปฏิบัติการ
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: คู่มือปฏิบัติการ Gateway
- Cron + การปลุก: งาน Cron
- ตัวช่วยบนแถบเมนู macOS: แอป OpenClaw macOS
- แอปโหนด iOS: แอป iOS
- แอปโหนด Android: แอป Android
- สถานะ Windows: Windows (WSL2)
- สถานะ Linux: แอป Linux
- ความปลอดภัย: ความปลอดภัย