รันไทม์ของเอเจนต์ 🤖¶
OpenClaw รันรันไทม์เอเจนต์แบบฝังตัวเพียงตัวเดียว ซึ่งพัฒนามาจาก pi-mono.
เวิร์กสเปซ(จำเป็น)¶
OpenClaw ใช้ไดเรกทอรีเวิร์กสเปซของเอเจนต์เพียงแห่งเดียว (agents.defaults.workspace) เป็นไดเรกทอรีทำงาน เพียงแห่งเดียว (cwd) ของเอเจนต์สำหรับเครื่องมือและบริบท
แนะนำ: ใช้ openclaw setup เพื่อสร้าง ~/.openclaw/openclaw.json หากยังไม่มี และเริ่มต้นไฟล์เวิร์กสเปซ
ผังเวิร์กสเปซแบบเต็ม + คู่มือการสำรองข้อมูล: Agent workspace
หากเปิดใช้งาน agents.defaults.sandbox เซสชันที่ไม่ใช่เซสชันหลักสามารถเขียนทับได้ด้วย
เวิร์กสเปซต่อเซสชันภายใต้ agents.defaults.sandbox.workspaceRoot (ดู
Gateway configuration)
ไฟล์บูตสแตรป(ฉีดเข้า)¶
ภายใน agents.defaults.workspace OpenClaw คาดหวังไฟล์ที่ผู้ใช้แก้ไขได้ดังต่อไปนี้:
AGENTS.md— คำสั่งการทำงาน + “หน่วยความจำ”SOUL.md— บุคลิก ขอบเขต น้ำเสียงTOOLS.md— บันทึกเครื่องมือที่ผู้ใช้ดูแลเอง (เช่นimsg,sag, แนวปฏิบัติ)BOOTSTRAP.md— พิธีครั้งแรกแบบครั้งเดียว(ลบหลังเสร็จสิ้น)IDENTITY.md— ชื่อ/อารมณ์/อีโมจิของเอเจนต์USER.md— โปรไฟล์ผู้ใช้ + รูปแบบการเรียกขานที่ต้องการ
ในเทิร์นแรกของเซสชันใหม่ OpenClaw จะฉีดเนื้อหาของไฟล์เหล่านี้เข้าไปในบริบทของเอเจนต์โดยตรง
- ไฟล์ว่างจะถูกข้าม ไฟล์ว่างจะถูกข้าม ไฟล์ขนาดใหญ่จะถูกตัดและย่อพร้อมตัวบ่งชี้ เพื่อให้พรอมป์ตคงความกระชับ(อ่านไฟล์เพื่อดูเนื้อหาฉบับเต็ม)
หากไฟล์หายไป OpenClaw จะฉีดบรรทัดตัวบ่งชี้ “missing file” เพียงบรรทัดเดียว (และ openclaw setup จะสร้างเทมเพลตค่าเริ่มต้นที่ปลอดภัย)
BOOTSTRAP.md จะถูกสร้างเฉพาะสำหรับ เวิร์กสเปซใหม่เอี่ยม (ไม่มีไฟล์บูตสแตรปอื่นอยู่) หากคุณลบมันหลังจากทำพิธีเสร็จแล้ว ไม่ควรถูกสร้างขึ้นใหม่ในการรีสตาร์ตครั้งถัดไป 33. หากคุณลบมันหลังจากเสร็จสิ้นพิธีการแล้ว มันไม่ควรถูกสร้างใหม่ในการรีสตาร์ตครั้งถัดไป
หากต้องการปิดการสร้างไฟล์บูตสแตรปทั้งหมด (สำหรับเวิร์กสเปซที่เตรียมไว้ล่วงหน้า) ให้ตั้งค่า:
{ agent: { skipBootstrap: true } }
เครื่องมือที่มาพร้อมระบบ¶
- เครื่องมือหลัก (read/exec/edit/write และเครื่องมือระบบที่เกี่ยวข้อง) มีให้ใช้งานเสมอ
โดยขึ้นอยู่กับนโยบายของเครื่องมือ เครื่องมือแกนหลัก (read/exec/edit/write และเครื่องมือระบบที่เกี่ยวข้อง) พร้อมใช้งานเสมอ
โดยขึ้นกับนโยบายเครื่องมือ
apply_patchเป็นตัวเลือกและถูกควบคุมโดยtools.exec.applyPatchส่วนTOOLS.mdไม่ได้ ควบคุมว่าเครื่องมือใดมีอยู่; เป็นเพียง แนวทางว่าคุณต้องการให้ใช้งานอย่างไร 35.TOOLS.mdไม่ได้ ควบคุมว่าเครื่องมือใดมีอยู่; มันเป็น แนวทางสำหรับวิธีที่ คุณ ต้องการให้ใช้งาน
Skills¶
OpenClaw โหลด Skills จากสามตำแหน่ง(กรณีชื่อซ้ำ เวิร์กสเปซชนะ):
- Bundled (มาพร้อมการติดตั้ง)
- Managed/local:
~/.openclaw/skills - Workspace:
<workspace>/skills
Skills สามารถถูกควบคุมด้วยคอนฟิก/ตัวแปรสภาพแวดล้อม (ดู skills ใน Gateway configuration)
การผสานรวม pi-mono¶
OpenClaw นำส่วนต่างๆของโค้ด pi-mono มาใช้ซ้ำ (โมเดล/เครื่องมือ) แต่ การจัดการเซสชัน Discovery และการเชื่อมต่อเครื่องมือเป็นของ OpenClaw เอง
- ไม่มีรันไทม์เอเจนต์ pi-coding
- ไม่มีการอ้างอิงการตั้งค่า
~/.pi/agentหรือ<workspace>/.pi
เซสชัน¶
ทรานสคริปต์ของเซสชันถูกเก็บเป็น JSONL ที่:
~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl
The session ID is stable and chosen by OpenClaw. ID ของเซสชันมีความคงที่และถูกเลือกโดย OpenClaw โฟลเดอร์เซสชัน Pi/Tau แบบเดิม จะไม่ถูกอ่าน
การควบคุมทิศทางขณะสตรีม¶
เมื่อโหมดคิวเป็น steer ข้อความขาเข้าจะถูกฉีดเข้าไปในการรันปัจจุบัน
คิวจะถูกตรวจ หลังการเรียกเครื่องมือแต่ละครั้ง; หากมีข้อความที่เข้าคิวอยู่
การเรียกเครื่องมือที่เหลือจากข้อความผู้ช่วยปัจจุบันจะถูกข้าม (ผลลัพธ์เครื่องมือเป็นข้อผิดพลาดพร้อมข้อความ "Skipped due to queued user message.")
จากนั้นข้อความผู้ใช้ที่เข้าคิวจะถูกฉีดก่อนการตอบกลับของผู้ช่วยถัดไป
เมื่อโหมดคิวเป็น followup หรือ collect ข้อความขาเข้าจะถูกพักไว้จนกว่า
เทิร์นปัจจุบันจะสิ้นสุด จากนั้นเริ่มเทิร์นเอเจนต์ใหม่พร้อมเพย์โหลดที่เข้าคิว ดู
Queue สำหรับโหมดและพฤติกรรม debounce/cap 37. ดู
Queue สำหรับพฤติกรรมของโหมด + debounce/cap
block streaming จะส่งบล็อกผู้ช่วยที่เสร็จสมบูรณ์ทันทีที่เสร็จ; โดยค่าเริ่มต้น
ปิดอยู่ (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
สตรีมเอาต์พุตเครื่องมือผ่านอีเวนต์ของเอเจนต์เมื่อมีให้ใช้
รายละเอียดเพิ่มเติม: Streaming + chunking
38. ปรับขอบเขตผ่าน agents.defaults.blockStreamingBreak (text_end vs message_end; ค่าเริ่มต้นคือ text_end)
39. ควบคุมการแบ่งชิ้นแบบ soft block ด้วย agents.defaults.blockStreamingChunk (ค่าเริ่มต้นคือ
800–1200 ตัวอักษร; ให้ความสำคัญกับการแบ่งย่อหน้า จากนั้นบรรทัดใหม่; ประโยคเป็นลำดับสุดท้าย)
40. รวมชิ้นส่วนที่สตรีมด้วย agents.defaults.blockStreamingCoalesce เพื่อลดสแปมบรรทัดเดี่ยว (การรวมตามช่วง idle ก่อนส่ง) 41. ช่องทางที่ไม่ใช่ Telegram ต้องการ
*.blockStreaming: true อย่างชัดเจนเพื่อเปิดใช้งานการตอบกลับแบบบล็อก
42. สรุปเครื่องมือแบบ verbose จะถูกส่งออกเมื่อเริ่มใช้เครื่องมือ (ไม่มี debounce); Control UI
สตรีมเอาต์พุตของเครื่องมือผ่านเหตุการณ์ของเอเจนต์เมื่อมีให้ใช้งาน
43. รายละเอียดเพิ่มเติม: Streaming + chunking
การอ้างอิงโมเดล¶
การอ้างอิงโมเดลในคอนฟิก (เช่น agents.defaults.model และ agents.defaults.models) จะถูกแยกโดยการแบ่งที่
/ ตัวแรกเท่านั้น
- ใช้
provider/modelเมื่อกำหนดค่าโมเดล - หาก ID ของโมเดลมี
/อยู่แล้ว(สไตล์ OpenRouter) ให้ใส่คำนำหน้าผู้ให้บริการ(ตัวอย่าง:openrouter/moonshotai/kimi-k2) - หากละเว้นผู้ให้บริการ OpenClaw จะถือว่าข้อมูลอินพุตเป็นนามแฝงหรือโมเดลของ ผู้ให้บริการเริ่มต้น (ใช้ได้เฉพาะเมื่อไม่มี
/อยู่ใน ID ของโมเดล)
การกำหนดค่า(ขั้นต่ำ)¶
อย่างน้อยให้ตั้งค่า:
agents.defaults.workspacechannels.whatsapp.allowFrom(แนะนำอย่างยิ่ง)
ถัดไป: Group Chats 🦞