Fundamentals
รันไทม์ของเอเจนต์
OpenClaw เรียกใช้ รันไทม์เอเจนต์แบบฝังตัวเดียว - หนึ่งโปรเซสเอเจนต์ต่อ Gateway พร้อมเวิร์กสเปซ ไฟล์บูตสแตรป และที่เก็บเซสชันของตัวเอง หน้านี้ ครอบคลุมสัญญาของรันไทม์นั้น: เวิร์กสเปซต้องมีอะไรบ้าง ไฟล์ใดถูกฉีดเข้าไป และเซสชันบูตสแตรปกับสิ่งนั้นอย่างไร
เวิร์กสเปซ (จำเป็น)
OpenClaw ใช้ไดเรกทอรีเวิร์กสเปซเอเจนต์เดียว (agents.defaults.workspace) เป็นไดเรกทอรีทำงาน (cwd) เพียงแห่งเดียว ของเอเจนต์สำหรับเครื่องมือและบริบท
แนะนำ: ใช้ openclaw setup เพื่อสร้าง ~/.openclaw/openclaw.json หากยังไม่มี และเริ่มต้นไฟล์เวิร์กสเปซ
ผังเวิร์กสเปซฉบับเต็ม + คู่มือสำรองข้อมูล: เวิร์กสเปซเอเจนต์
หากเปิดใช้ agents.defaults.sandbox เซสชันที่ไม่ใช่เซสชันหลักสามารถแทนที่ค่านี้ด้วย
เวิร์กสเปซรายเซสชันภายใต้ agents.defaults.sandbox.workspaceRoot (ดู
การกำหนดค่า Gateway)
ไฟล์บูตสแตรป (ถูกฉีด)
ภายใน agents.defaults.workspace OpenClaw คาดหวังไฟล์ที่ผู้ใช้แก้ไขได้เหล่านี้:
AGENTS.md- คำแนะนำการปฏิบัติงาน + "หน่วยความจำ"SOUL.md- บุคลิก ขอบเขต น้ำเสียงTOOLS.md- บันทึกเครื่องมือที่ผู้ใช้ดูแลเอง (เช่นimsg,sag, แบบแผน)BOOTSTRAP.md- พิธีเริ่มใช้งานครั้งแรกแบบครั้งเดียว (ลบหลังทำเสร็จ)IDENTITY.md- ชื่อ/บรรยากาศ/อีโมจิของเอเจนต์USER.md- โปรไฟล์ผู้ใช้ + วิธีเรียกที่ต้องการ
ในเทิร์นแรกของเซสชันใหม่ OpenClaw จะฉีดเนื้อหาของไฟล์เหล่านี้เข้าไปใน Project Context ของพรอมป์ระบบ
ไฟล์ว่างจะถูกข้าม ไฟล์ขนาดใหญ่จะถูกตัดแต่งและตัดทอนพร้อมเครื่องหมาย เพื่อให้พรอมป์กระชับอยู่เสมอ (อ่านไฟล์เพื่อดูเนื้อหาทั้งหมด)
หากไฟล์หายไป OpenClaw จะฉีดบรรทัดเครื่องหมาย "ไฟล์หายไป" เพียงบรรทัดเดียว (และ openclaw setup จะสร้างเทมเพลตเริ่มต้นที่ปลอดภัย)
BOOTSTRAP.md จะถูกสร้างเฉพาะสำหรับ เวิร์กสเปซใหม่เอี่ยม (ไม่มีไฟล์บูตสแตรปอื่นอยู่) ขณะที่ยังค้างอยู่ OpenClaw จะคงไฟล์นี้ไว้ใน Project Context และเพิ่มคำแนะนำบูตสแตรปในพรอมป์ระบบสำหรับพิธีเริ่มต้น แทนที่จะคัดลอกเข้าไปในข้อความผู้ใช้ หากคุณลบไฟล์นี้หลังทำพิธีเสร็จแล้ว ไฟล์ไม่ควรถูกสร้างใหม่เมื่อรีสตาร์ทภายหลัง
หลังจากสังเกตเห็นเวิร์กสเปซแล้ว OpenClaw จะคงเครื่องหมายรับรองไดเรกทอรีสถานะสำหรับพาธเวิร์กสเปซไว้ด้วย หากเวิร์กสเปซที่เพิ่งได้รับการรับรองหายไปหรือถูกล้าง การเริ่มต้นจะปฏิเสธการเพาะ BOOTSTRAP.md ใหม่แบบเงียบ ๆ ให้กู้คืนเวิร์กสเปซหรือใช้การรีเซ็ตการเริ่มใช้งานแบบเต็ม เพื่อให้ล้างเวิร์กสเปซและเครื่องหมายพร้อมกัน
หากต้องการปิดการสร้างไฟล์บูตสแตรปทั้งหมด (สำหรับเวิร์กสเปซที่เตรียมไว้ล่วงหน้า) ให้ตั้งค่า:
{ 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 สามารถมีโฟลเดอร์แบบจัดกลุ่ม เช่น
<workspace>/skills/personal/foo/SKILL.md; Skills ยังคงถูกเปิดเผยด้วยชื่อ frontmatter
แบบแบน เช่น foo
Skills สามารถถูกควบคุมด้วย config/env (ดู skills ใน การกำหนดค่า Gateway)
ขอบเขตรันไทม์
รันไทม์เอเจนต์แบบฝังตัวเป็นของ OpenClaw: การค้นหาโมเดล การต่อสายเครื่องมือ การประกอบพรอมป์ การจัดการเซสชัน และการส่งผ่านช่องทางใช้พื้นผิวรันไทม์แบบบูรณาการเดียวร่วมกัน
เซสชัน
ทรานสคริปต์เซสชันถูกเก็บเป็น JSONL ที่:
~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl
ID เซสชันมีความเสถียรและถูกเลือกโดย OpenClaw โฟลเดอร์เซสชันเดิมจากเครื่องมืออื่นจะไม่ถูกอ่าน
การชี้นำขณะสตรีม
พรอมป์ขาเข้าที่มาถึงกลางรันจะถูกชี้นำเข้าไปในการรันปัจจุบันโดยค่าเริ่มต้น การชี้นำจะถูกส่ง หลังจากเทิร์นผู้ช่วยปัจจุบันดำเนินการเรียกเครื่องมือเสร็จสิ้น ก่อนการเรียก LLM ถัดไป และจะไม่ข้ามการเรียกเครื่องมือที่เหลืออยู่ จากข้อความผู้ช่วยปัจจุบันอีกต่อไป
/queue steer คือพฤติกรรมเริ่มต้นของการรันที่ทำงานอยู่ /queue followup และ
/queue collect ทำให้ข้อความรอเทิร์นภายหลังแทนการชี้นำ
/queue interrupt จะยกเลิกการรันที่ทำงานอยู่แทน ดู คิว
และ คิวการชี้นำ สำหรับพฤติกรรมของคิวและขอบเขต
การสตรีมแบบบล็อกส่งบล็อกผู้ช่วยที่เสร็จสมบูรณ์ทันทีเมื่อแต่ละบล็อกเสร็จ; โดย
ปิดเป็นค่าเริ่มต้น (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) ให้ใส่คำนำหน้า provider (ตัวอย่าง:openrouter/moonshotai/kimi-k2) - หากคุณละ provider ไว้ OpenClaw จะลอง alias ก่อน จากนั้นลองจับคู่ configured-provider ที่ไม่ซ้ำสำหรับ ID โมเดลนั้นแบบตรงตัว และหลังจากนั้นเท่านั้นจึงถอยกลับ ไปยัง provider เริ่มต้นที่กำหนดค่าไว้ หาก provider นั้นไม่เปิดเผยโมเดลเริ่มต้น ที่กำหนดค่าไว้อีกต่อไป OpenClaw จะถอยกลับไปยัง provider/model ที่กำหนดค่าไว้ตัวแรกแทนการแสดงค่าเริ่มต้น provider ที่ถูกลบและล้าสมัย
การกำหนดค่า (ขั้นต่ำ)
อย่างน้อย ให้ตั้งค่า:
agents.defaults.workspacechannels.whatsapp.allowFrom(แนะนำอย่างยิ่ง)
ถัดไป: แชทกลุ่ม 🦞