Fundamentals

รันไทม์ของเอเจนต์

OpenClaw มาพร้อม รันไทม์เอเจนต์แบบฝังตัว หนึ่งชุด ได้แก่ ลูปเอเจนต์ในตัว การเชื่อมต่อเครื่องมือ และการประกอบพรอมต์ ซึ่งแตกต่างจากการมอบหมายแต่ละรอบให้กระบวนการ ฮาร์เนสภายนอก เอเจนต์แต่ละตัวที่กำหนดค่าไว้ (ดู การกำหนดเส้นทางแบบหลายเอเจนต์ สำหรับการเรียกใช้หลายตัว) มีพื้นที่ทำงาน ไฟล์บูตสแตรป และที่จัดเก็บ เซสชันของตนเอง หน้านี้อธิบายสัญญาของรันไทม์ดังกล่าว ได้แก่ สิ่งที่พื้นที่ทำงานต้อง มี ไฟล์ใดบ้างที่ถูกแทรก และวิธีที่เซสชันบูตสแตรปโดยอาศัยพื้นที่ทำงานนั้น

พื้นที่ทำงาน (จำเป็น)

เอเจนต์แต่ละตัวใช้ไดเรกทอรีพื้นที่ทำงานเดียว (agents.defaults.workspace หรือ agents.list[].workspace ต่อเอเจนต์) เป็นไดเรกทอรีทำงาน เพียงแห่งเดียว (cwd) สำหรับเครื่องมือและบริบท

คำแนะนำ: ใช้ openclaw setup เพื่อสร้าง ~/.openclaw/openclaw.json หากยังไม่มี และเริ่มต้นไฟล์พื้นที่ทำงาน

โครงสร้างพื้นที่ทำงานฉบับเต็มและคู่มือสำรองข้อมูล: พื้นที่ทำงานของเอเจนต์

หากเปิดใช้ agents.defaults.sandbox เซสชันที่ไม่ใช่เซสชันหลักสามารถแทนที่ค่านี้ด้วย พื้นที่ทำงานรายเซสชันภายใต้ agents.defaults.sandbox.workspaceRoot (ดู การกำหนดค่า Gateway)

ไฟล์บูตสแตรป (แทรกโดยอัตโนมัติ)

ภายในพื้นที่ทำงาน OpenClaw คาดว่าจะมีไฟล์ที่ผู้ใช้แก้ไขได้เหล่านี้:

ไฟล์ วัตถุประสงค์
AGENTS.md คำสั่งการทำงานและ "หน่วยความจำ"
SOUL.md บุคลิก ขอบเขต และน้ำเสียง
TOOLS.md บันทึกและแบบแผนการใช้เครื่องมือที่ผู้ใช้ดูแล
IDENTITY.md ชื่อ/บรรยากาศ/อีโมจิของเอเจนต์
USER.md โปรไฟล์ผู้ใช้และรูปแบบการเรียกที่ต้องการ
HEARTBEAT.md คำสั่งเฉพาะสำหรับ Heartbeat
BOOTSTRAP.md พิธีเริ่มใช้งานครั้งแรกแบบครั้งเดียว (ลบหลังเสร็จสิ้น)
MEMORY.md ไฟล์หน่วยความจำระยะยาวระดับราก หากมีอยู่

ในรอบแรกของเซสชันใหม่ OpenClaw จะแทรกเนื้อหาของไฟล์เหล่านี้ลงในบริบทโครงการของพรอมต์ระบบ โดยจะแทรก MEMORY.md เฉพาะเมื่อมีไฟล์นี้อยู่ที่รากของพื้นที่ทำงานเท่านั้น

ไฟล์ว่างจะถูกข้าม ไฟล์ขนาดใหญ่จะถูกตัดแต่งและตัดทอนพร้อมเครื่องหมาย เพื่อให้พรอมต์กระชับ (อ่านไฟล์เพื่อดูเนื้อหาฉบับเต็ม) ไฟล์ที่ไม่มีอยู่ (ยกเว้น MEMORY.md) จะแทรกบรรทัดเครื่องหมาย "ไม่พบไฟล์" เพียงบรรทัดเดียวแทน โดย openclaw setup จะสร้างเทมเพลตเริ่มต้นที่ปลอดภัยให้ไฟล์นั้น

BOOTSTRAP.md จะถูกสร้างเฉพาะสำหรับ พื้นที่ทำงานใหม่เอี่ยม (ไม่มีไฟล์บูตสแตรปอื่นอยู่) ขณะที่ยังรอดำเนินการ OpenClaw จะเก็บไฟล์นี้ไว้ในบริบทโครงการและเพิ่มคำแนะนำการบูตสแตรปในพรอมต์ระบบสำหรับพิธีเริ่มต้น แทนที่จะคัดลอกไปยังข้อความผู้ใช้ หากลบไฟล์นี้หลังจากทำพิธีเสร็จแล้ว ระบบจะไม่สร้างขึ้นใหม่เมื่อรีสตาร์ตในภายหลัง

หลังจากตรวจพบพื้นที่ทำงานแล้ว OpenClaw จะจัดเก็บสถานะการตั้งค่าและ การรับรองไว้ในฐานข้อมูล SQLite ที่ใช้ร่วมกัน ณ ~/.openclaw/state/openclaw.sqlite หากพื้นที่ทำงานที่เพิ่งได้รับการรับรอง หายไปหรือถูกล้าง ระบบจะปฏิเสธการเติมข้อมูล BOOTSTRAP.md ใหม่โดยไม่แจ้งเตือนเมื่อเริ่มทำงาน ให้กู้คืนพื้นที่ทำงานหรือใช้การรีเซ็ตการเริ่มต้นใช้งานแบบเต็ม เพื่อให้พื้นที่ทำงานและ สถานะฐานข้อมูลของพื้นที่นั้นถูกล้างพร้อมกัน

รุ่นเก่าใช้ไฟล์ JSON ของพื้นที่ทำงานและไฟล์เสริม .attested รันไทม์ จะไม่อ่านไฟล์เหล่านั้น เรียกใช้ openclaw doctor --fix เพื่อตรวจสอบ นำเข้าสถานะ เข้าสู่ SQLite และลบไฟล์ต้นทางแต่ละไฟล์หลังจากตรวจสอบแถวที่นำเข้าแล้ว

หากต้องการปิดการสร้างไฟล์บูตสแตรปทั้งหมด (สำหรับพื้นที่ทำงานที่เติมข้อมูลไว้ล่วงหน้า) ให้ตั้งค่า:

json5
{ agents: { defaults: { skipBootstrap: true } } }

เครื่องมือในตัว

เครื่องมือหลัก (อ่าน/ดำเนินการ/แก้ไข/เขียน และเครื่องมือระบบที่เกี่ยวข้อง) พร้อมใช้งานเสมอ ภายใต้นโยบายเครื่องมือ apply_patch เปิดอยู่โดยค่าเริ่มต้นสำหรับโมเดล OpenAI และควบคุมโดย tools.exec.applyPatch (enabled, workspaceOnly, allowModels) 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 โดย Skill ยังคงแสดงผ่านชื่อ frontmatter แบบแบน เช่น foo

Skills สามารถถูกควบคุมด้วยการกำหนดค่า/ตัวแปรสภาพแวดล้อม (ดู skills ใน การกำหนดค่า Gateway)

ขอบเขตรันไทม์

รันไทม์เอเจนต์แบบฝังตัวเป็นของ OpenClaw โดยการค้นหาโมเดล การเชื่อมต่อเครื่องมือ การประกอบพรอมต์ การจัดการเซสชัน และการส่งผ่านช่องทาง ใช้พื้นผิวรันไทม์ แบบบูรณาการร่วมกัน

เซสชัน

แถวข้อมูลเซสชันถูกจัดเก็บในฐานข้อมูล SQLite รายเอเจนต์:

  • ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite

ไฟล์ทรานสคริปต์ JSONL ยังคงสามารถอยู่ภายใต้ ~/.openclaw/agents/<agentId>/sessions/ ในฐานะอินพุตการย้ายข้อมูลแบบเดิม ไฟล์เก็บถาวรที่ถูกลบหรือ รีเซ็ต การนำเข้า การส่งออก และอาร์ติแฟกต์สำหรับการสนับสนุน ประวัติเอเจนต์ที่ใช้งานอยู่จะ จัดเก็บใน SQLite พร้อมกับแถวข้อมูลเซสชัน ID เซสชันมีความคงที่และเลือกโดย OpenClaw โดย 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 ต้องใช้ *.streaming.block.enabled: true อย่างชัดเจนเพื่อเปิดใช้การตอบกลับแบบบล็อก (QQ Bot จะสตรีมการตอบกลับแบบบล็อกแทน เว้นแต่ channels.qqbot.streaming.mode จะเป็น "off") ข้อมูลสรุปเครื่องมือแบบละเอียดจะถูกส่งเมื่อเครื่องมือเริ่มทำงาน (ไม่มีการหน่วงเวลา) ส่วน Control UI จะสตรีมเอาต์พุตของเครื่องมือผ่านเหตุการณ์ของเอเจนต์เมื่อพร้อมใช้งาน รายละเอียดเพิ่มเติม: การสตรีมและการแบ่งส่วน

การอ้างอิงโมเดล

การอ้างอิงโมเดลในการกำหนดค่า (ตัวอย่างเช่น agents.defaults.model และ agents.defaults.models) จะถูกแยกโดยแบ่งที่ / ตัวแรก

  • ใช้ provider/model เมื่อกำหนดค่าโมเดล
  • หาก ID โมเดลมี / อยู่ภายใน (รูปแบบ OpenRouter) ให้ใส่คำนำหน้าผู้ให้บริการ (ตัวอย่าง: openrouter/moonshotai/kimi-k2)
  • หากละเว้นผู้ให้บริการ OpenClaw จะลองใช้นามแฝงก่อน จากนั้นจึงค้นหา ผู้ให้บริการที่กำหนดค่าไว้ซึ่งตรงกันเพียงหนึ่งเดียวสำหรับ ID โมเดลนั้น และหลังจากนั้นเท่านั้นจึงย้อนกลับ ไปใช้ผู้ให้บริการเริ่มต้นที่กำหนดค่าไว้ หากผู้ให้บริการนั้นไม่เปิดให้ใช้โมเดลเริ่มต้น ที่กำหนดค่าไว้อีกต่อไป OpenClaw จะย้อนกลับไปใช้ผู้ให้บริการ/โมเดลที่กำหนดค่าไว้ รายการแรก แทนที่จะแสดงค่าเริ่มต้นของผู้ให้บริการที่ถูกนำออกซึ่งล้าสมัย

การกำหนดค่า (ขั้นต่ำ)

อย่างน้อยที่สุด ให้ตั้งค่า:

  • agents.defaults.workspace
  • channels.whatsapp.allowFrom (แนะนำอย่างยิ่ง)

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

Was this useful?
On this page

On this page