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/&lt;SessionId&gt;.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.workspace
  • channels.whatsapp.allowFrom (แนะนำอย่างยิ่ง)

ถัดไป: แชตกลุ่ม 🦞

ที่เกี่ยวข้อง