Fundamentals
รันไทม์ของเอเจนต์
OpenClaw เรียกใช้ รันไทม์เอเจนต์แบบฝังตัวเดียว - หนึ่งโปรเซสเอเจนต์ต่อ Gateway พร้อมเวิร์กสเปซ ไฟล์บูตสแตรป และที่เก็บเซสชันของตัวเอง หน้านี้ ครอบคลุมสัญญาของรันไทม์นั้น: เวิร์กสเปซต้องมีอะไรบ้าง ไฟล์ใดถูก แทรกเข้าไป และเซสชันบูตสแตรปกับสิ่งนั้นอย่างไร
เวิร์กสเปซ (จำเป็น)
OpenClaw ใช้ไดเรกทอรีเวิร์กสเปซเอเจนต์เดียว (agents.defaults.workspace) เป็นไดเรกทอรีทำงาน (cwd) เพียงหนึ่งเดียว ของเอเจนต์สำหรับเครื่องมือและบริบท
แนะนำ: ใช้ openclaw setup เพื่อสร้าง ~/.openclaw/openclaw.json หากยังไม่มี และเริ่มต้นไฟล์เวิร์กสเปซ
เลย์เอาต์เวิร์กสเปซแบบเต็ม + คู่มือสำรองข้อมูล: เวิร์กสเปซเอเจนต์
หากเปิดใช้ agents.defaults.sandbox เซสชันที่ไม่ใช่ main สามารถแทนที่ค่านี้ด้วย
เวิร์กสเปซต่อเซสชันภายใต้ agents.defaults.sandbox.workspaceRoot (ดู
การกำหนดค่า Gateway)
ไฟล์บูตสแตรป (ถูกแทรก)
ภายใน agents.defaults.workspace OpenClaw คาดหวังไฟล์ที่ผู้ใช้แก้ไขได้เหล่านี้:
AGENTS.md- คำสั่งการทำงาน + "หน่วยความจำ"SOUL.md- บุคลิก ขอบเขต น้ำเสียงTOOLS.md- บันทึกเครื่องมือที่ผู้ใช้ดูแลเอง (เช่นimsg,sag, แบบแผน)BOOTSTRAP.md- พิธีเริ่มใช้งานครั้งแรกแบบทำครั้งเดียว (ลบหลังเสร็จสิ้น)IDENTITY.md- ชื่อเอเจนต์/บรรยากาศ/อีโมจิUSER.md- โปรไฟล์ผู้ใช้ + วิธีเรียกที่ต้องการ
ในเทิร์นแรกของเซสชันใหม่ OpenClaw จะแทรกเนื้อหาของไฟล์เหล่านี้ลงในบริบทโปรเจกต์ของพรอมป์ระบบ
ไฟล์ว่างจะถูกข้าม ไฟล์ขนาดใหญ่จะถูกตัดแต่งและตัดทอนพร้อมเครื่องหมาย เพื่อให้พรอมป์ยังคงกระชับ (อ่านไฟล์เพื่อดูเนื้อหาเต็ม)
หากไฟล์หายไป OpenClaw จะแทรกบรรทัดเครื่องหมาย "ไฟล์หายไป" เพียงบรรทัดเดียว (และ openclaw setup จะสร้างเทมเพลตเริ่มต้นที่ปลอดภัย)
BOOTSTRAP.md จะถูกสร้างเฉพาะสำหรับ เวิร์กสเปซใหม่เอี่ยม (ไม่มีไฟล์บูตสแตรปอื่นอยู่) ขณะที่ยังค้างอยู่ OpenClaw จะคงไฟล์นี้ไว้ในบริบทโปรเจกต์ และเพิ่มคำแนะนำบูตสแตรปในพรอมป์ระบบสำหรับพิธีเริ่มต้น แทนที่จะคัดลอกเข้าไปในข้อความผู้ใช้ หากคุณลบไฟล์นี้หลังทำพิธีเสร็จแล้ว ไฟล์ไม่ควรถูกสร้างใหม่ในการรีสตาร์ตครั้งหลัง
หากต้องการปิดการสร้างไฟล์บูตสแตรปทั้งหมด (สำหรับเวิร์กสเปซที่เตรียมข้อมูลไว้ล่วงหน้า) ให้ตั้งค่า:
{ agents: { defaults: { skipBootstrap: true } } }
เครื่องมือในตัว
เครื่องมือหลัก (read/exec/edit/write และเครื่องมือระบบที่เกี่ยวข้อง) พร้อมใช้งานเสมอ
ภายใต้นโยบายเครื่องมือ apply_patch เป็นตัวเลือกเสริมและถูกควบคุมด้วย
tools.exec.applyPatch TOOLS.md ไม่ได้ ควบคุมว่ามีเครื่องมือใดอยู่บ้าง แต่เป็น
คำแนะนำว่าคุณต้องการให้ใช้งานเครื่องมือเหล่านั้นอย่างไร
Skills
OpenClaw โหลด Skills จากตำแหน่งเหล่านี้ (ลำดับความสำคัญสูงสุดมาก่อน):
- เวิร์กสเปซ:
<workspace>/skills - Skills ของเอเจนต์โปรเจกต์:
<workspace>/.agents/skills - Skills ของเอเจนต์ส่วนตัว:
~/.agents/skills - จัดการแล้ว/ภายในเครื่อง:
~/.openclaw/skills - ที่มาพร้อมแพ็กเกจ (จัดส่งมาพร้อมการติดตั้ง)
- โฟลเดอร์ Skills เพิ่มเติม:
skills.load.extraDirs
Skills สามารถถูกควบคุมด้วย config/env ได้ (ดู skills ใน การกำหนดค่า Gateway)
ขอบเขตรันไทม์
รันไทม์เอเจนต์แบบฝังตัวสร้างอยู่บนแกนเอเจนต์ Pi (โมเดล เครื่องมือ และ ไปป์ไลน์พรอมป์) การจัดการเซสชัน การค้นพบ การเชื่อมสายเครื่องมือ และการส่งต่อผ่านช่องทาง เป็นเลเยอร์ที่ OpenClaw เป็นเจ้าของซึ่งอยู่เหนือแกนดังกล่าว
เซสชัน
ทรานสคริปต์ของเซสชันถูกจัดเก็บเป็น JSONL ที่:
~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl
ID เซสชันมีความเสถียรและถูกเลือกโดย OpenClaw โฟลเดอร์เซสชันแบบเดิมจากเครื่องมืออื่นจะไม่ถูกอ่าน
การควบคุมทิศทางระหว่างการสตรีม
เมื่อโหมดคิวเป็น steer ข้อความขาเข้าจะถูกแทรกเข้าไปในการรันปัจจุบัน
การควบคุมทิศทางที่เข้าคิวไว้จะถูกส่ง หลังจากเทิร์นผู้ช่วยปัจจุบันดำเนินการ
เรียกใช้เครื่องมือเสร็จสิ้น ก่อนการเรียก LLM ครั้งถัดไป Pi จะระบายข้อความ
ควบคุมทิศทางที่ค้างอยู่ทั้งหมดพร้อมกันสำหรับ steer; queue แบบเดิมจะระบายหนึ่งข้อความต่อ
ขอบเขตโมเดล การควบคุมทิศทางจะไม่ข้ามการเรียกใช้เครื่องมือที่เหลือจากข้อความผู้ช่วย
ปัจจุบันอีกต่อไป
เมื่อโหมดคิวเป็น followup หรือ collect ข้อความขาเข้าจะถูกพักไว้จนกว่า
เทิร์นปัจจุบันจะจบ จากนั้นเทิร์นเอเจนต์ใหม่จะเริ่มต้นพร้อมเพย์โหลดที่เข้าคิวไว้ ดู
คิว และ คิวการควบคุมทิศทาง สำหรับโหมด
และพฤติกรรมขอบเขต
การสตรีมแบบบล็อกจะส่งบล็อกผู้ช่วยที่เสร็จสมบูรณ์ทันทีที่เสร็จ; ค่าเริ่มต้นคือ
ปิด (agents.defaults.blockStreamingDefault: "off")
ปรับขอบเขตผ่าน agents.defaults.blockStreamingBreak (text_end เทียบกับ message_end; ค่าเริ่มต้นเป็น text_end)
ควบคุมการแบ่งชังก์บล็อกแบบอ่อนด้วย agents.defaults.blockStreamingChunk (ค่าเริ่มต้นเป็น
800-1200 ตัวอักษร; เลือกแบ่งตามย่อหน้าก่อน จากนั้นขึ้นบรรทัดใหม่; ประโยคเป็นลำดับสุดท้าย)
รวมชังก์ที่สตรีมด้วย agents.defaults.blockStreamingCoalesce เพื่อลด
สแปมบรรทัดเดี่ยว (รวมตามช่วงว่างก่อนส่ง) ช่องทางที่ไม่ใช่ Telegram ต้องกำหนด
*.blockStreaming: true อย่างชัดเจนเพื่อเปิดใช้การตอบกลับแบบบล็อก
สรุปเครื่องมือแบบละเอียดจะถูกส่งออกเมื่อเครื่องมือเริ่มทำงาน (ไม่มี debounce); Control UI
สตรีมเอาต์พุตเครื่องมือผ่านอีเวนต์เอเจนต์เมื่อพร้อมใช้งาน
รายละเอียดเพิ่มเติม: การสตรีม + การแบ่งชังก์
การอ้างอิงโมเดล
การอ้างอิงโมเดลใน config (เช่น agents.defaults.model และ agents.defaults.models) จะถูกแยกโดยใช้ / ตัว แรก
- ใช้
provider/modelเมื่อกำหนดค่าโมเดล - หาก ID โมเดลเองมี
/(สไตล์ OpenRouter) ให้ใส่ prefix ของผู้ให้บริการด้วย (ตัวอย่าง:openrouter/moonshotai/kimi-k2) - หากคุณละเว้นผู้ให้บริการ OpenClaw จะลอง alias ก่อน จากนั้นจึงลองจับคู่ผู้ให้บริการที่กำหนดค่าไว้แบบไม่ซ้ำสำหรับ model id นั้นพอดี และหลังจากนั้นจึงค่อย fallback ไปยังผู้ให้บริการเริ่มต้นที่กำหนดค่าไว้ หากผู้ให้บริการนั้นไม่เปิดเผยโมเดลเริ่มต้น ที่กำหนดค่าไว้อีกต่อไป OpenClaw จะ fallback ไปยังผู้ให้บริการ/โมเดลที่กำหนดค่าไว้ตัวแรก แทนที่จะแสดงค่าเริ่มต้นของผู้ให้บริการที่ถูกลบและล้าสมัย
การกำหนดค่า (ขั้นต่ำ)
อย่างน้อย ให้ตั้งค่า:
agents.defaults.workspacechannels.whatsapp.allowFrom(แนะนำอย่างยิ่ง)
ถัดไป: แชตกลุ่ม 🦞