Fundamentals

บริบท

"บริบท" คือ ทุกสิ่งที่ OpenClaw ส่งให้โมเดลสำหรับการรันหนึ่งครั้ง โดยถูกจำกัดด้วย หน้าต่างบริบท ของโมเดล (ขีดจำกัดโทเค็น)

แบบจำลองความคิดสำหรับผู้เริ่มต้น:

  • พรอมต์ระบบ (สร้างโดย OpenClaw): กฎ เครื่องมือ รายการ Skills เวลา/รันไทม์ และไฟล์เวิร์กสเปซที่แทรกเข้ามา
  • ประวัติการสนทนา: ข้อความของคุณ + ข้อความของผู้ช่วยสำหรับเซสชันนี้
  • การเรียกใช้/ผลลัพธ์ของเครื่องมือ + ไฟล์แนบ: เอาต์พุตคำสั่ง การอ่านไฟล์ รูปภาพ/เสียง เป็นต้น

บริบท ไม่ใช่สิ่งเดียวกัน กับ "หน่วยความจำ": หน่วยความจำสามารถจัดเก็บไว้บนดิสก์และโหลดกลับมาในภายหลังได้ ส่วนบริบทคือสิ่งที่อยู่ภายในหน้าต่างปัจจุบันของโมเดล

เริ่มต้นอย่างรวดเร็ว (ตรวจสอบบริบท)

  • /status → ดูอย่างรวดเร็วว่า "หน้าต่างของฉันเต็มแค่ไหนแล้ว?" พร้อมการตั้งค่าเซสชัน
  • /context list → ดูสิ่งที่ถูกแทรกเข้ามา + ขนาดโดยประมาณ (แยกตามไฟล์ + ยอดรวม)
  • /context detail → รายละเอียดเชิงลึก: ขนาดแยกตามไฟล์ แยกตามสคีมาของเครื่องมือ แยกตามรายการ Skills ขนาดพรอมต์ระบบ และจำนวนข้อความในบทสนทนาที่สามารถทำ Compaction ได้
  • /context map → รูปภาพแผนผังต้นไม้แบบ WinDirStat ขององค์ประกอบที่ใช้บริบทซึ่งติดตามอยู่ในเซสชันปัจจุบัน
  • /usage tokens → เพิ่มส่วนท้ายแสดงการใช้งานต่อการตอบหนึ่งครั้งในคำตอบปกติ
  • /compact → สรุปประวัติเก่าให้เป็นรายการแบบย่อเพื่อเพิ่มพื้นที่ว่างในหน้าต่าง

ดูเพิ่มเติม: คำสั่งเครื่องหมายทับ, การใช้โทเค็นและค่าใช้จ่าย, Compaction

ตัวอย่างเอาต์พุต

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

/context list

text
🧠 Context breakdownWorkspace: <workspaceDir>Bootstrap max/file: 12,000 charsSandbox: mode=non-main sandboxed=falseSystem prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok)) Injected workspace files:- AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok)- SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok)- TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok)- IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok)- USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok)- HEARTBEAT.md: MISSING | raw 0 | injected 0- BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok) Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills)Tools: read, edit, write, exec, process, browser, message, sessions_send, …Tool list (system prompt text): 1,032 chars (~258 tok)Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text)Tools: (same as above) Session tokens (cached): 14,250 total / ctx=32,000

/context detail

text
🧠 Context breakdown (detailed)Top skills (prompt entry size):- frontend-design: 412 chars (~103 tok)- oracle: 401 chars (~101 tok)… (+10 more skills) Top tools (schema size):- browser: 9,812 chars (~2,453 tok)- exec: 6,240 chars (~1,560 tok)… (+N more tools)

/context map

ส่งรูปภาพที่สร้างจากรายงานการรันล่าสุดในแคชรวมกับบทสนทนาของเซสชัน ก่อนที่ข้อความปกติจะสร้างรายงานการรันในเซสชัน /context map จะส่งคืนข้อความแจ้งว่าไม่พร้อมใช้งานแทนการแสดงค่าประมาณ พื้นที่ของสี่เหลี่ยมจะแปรผันตามจำนวนอักขระของพรอมต์ที่ติดตาม:

  • บทสนทนา (ข้อความของผู้ใช้ คำตอบของผู้ช่วย ผลลัพธ์จากเครื่องมือ และสรุปจาก Compaction) รวมถึงบริบทของรันไทม์ในแต่ละรอบและส่วนเพิ่มเติมของพรอมต์จากฮุกที่ส่งถึงเฉพาะโมเดล
  • ไฟล์เวิร์กสเปซที่แทรกเข้ามา
  • ข้อความพรอมต์ระบบพื้นฐาน
  • รายการพรอมต์ของ Skills
  • สคีมา JSON ของเครื่องมือ

กลุ่มการสนทนาจะขยายขึ้นตามเซสชัน ดังนั้นแผนผังจะเปลี่ยนไปในแต่ละรอบ หลังจากทำ Compaction กลุ่มนี้จะยุบรวมเป็นช่องสรุป

/context list, /context detail และ /context json ยังคงตรวจสอบค่าประมาณที่คำนวณตามคำขอได้เมื่อไม่มีรายงานการรันอยู่ในแคช

สิ่งที่นับรวมในหน้าต่างบริบท

ทุกสิ่งที่โมเดลได้รับจะถูกนับรวม ซึ่งรวมถึง:

  • พรอมต์ระบบ (ทุกส่วน)
  • ประวัติการสนทนา
  • การเรียกใช้เครื่องมือ + ผลลัพธ์จากเครื่องมือ
  • ไฟล์แนบ/บทถอดเสียง (รูปภาพ/เสียง/ไฟล์)
  • สรุปจาก Compaction และอาร์ติแฟกต์จากการตัดแต่ง
  • "ตัวห่อหุ้ม" หรือส่วนหัวที่ซ่อนอยู่ของผู้ให้บริการ (มองไม่เห็นแต่ยังถูกนับรวม)

วิธีที่ OpenClaw สร้างพรอมต์ระบบ

พรอมต์ระบบ เป็นของ OpenClaw และถูกสร้างใหม่ทุกครั้งที่รัน โดยประกอบด้วย:

  • รายการเครื่องมือ + คำอธิบายสั้น ๆ
  • รายการ Skills (เฉพาะข้อมูลเมตา ดูด้านล่าง)
  • ตำแหน่งเวิร์กสเปซ
  • เวลา (UTC + เวลาของผู้ใช้ที่แปลงแล้วหากมีการกำหนดค่า)
  • ข้อมูลเมตาของรันไทม์ (โฮสต์/ระบบปฏิบัติการ/โมเดล/การคิด)
  • ไฟล์เริ่มต้นของเวิร์กสเปซที่แทรกไว้ภายใต้ บริบทโครงการ

รายละเอียดทั้งหมด: พรอมต์ระบบ

ไฟล์เวิร์กสเปซที่แทรกเข้ามา (บริบทโครงการ)

โดยค่าเริ่มต้น OpenClaw จะแทรกชุดไฟล์เวิร์กสเปซที่กำหนดไว้ตายตัว (หากมีอยู่):

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (เฉพาะการรันครั้งแรก)

ไฟล์ขนาดใหญ่จะถูกตัดทอนแยกเป็นรายไฟล์โดยใช้ agents.defaults.bootstrapMaxChars (ค่าเริ่มต้น 20000 อักขระ) OpenClaw ยังบังคับใช้ขีดจำกัดรวมของการแทรกข้อมูลเริ่มต้นจากทุกไฟล์ด้วย agents.defaults.bootstrapTotalMaxChars (ค่าเริ่มต้น 60000 อักขระ) /context จะแสดงขนาด ข้อมูลดิบเทียบกับข้อมูลที่แทรก และระบุว่ามีการตัดทอนหรือไม่

เมื่อเกิดการตัดทอน รันไทม์สามารถแทรกบล็อกคำเตือนภายในพรอมต์ใต้บริบทโครงการได้ กำหนดค่านี้ด้วย agents.defaults.bootstrapPromptTruncationWarning (off, once, always; ค่าเริ่มต้น always)

Skills: แทรกเข้ามาเทียบกับโหลดเมื่อจำเป็น

พรอมต์ระบบมี รายการ Skills แบบกระชับ (ชื่อ + คำอธิบาย + ตำแหน่ง) รายการนี้ใช้พื้นที่จริง

โดยค่าเริ่มต้น คำสั่งของ Skills จะ ไม่ ถูกรวมไว้ โมเดลควรใช้ read เพื่ออ่าน SKILL.md ของ Skills เฉพาะเมื่อจำเป็น

เครื่องมือ: มีค่าใช้จ่ายสองส่วน

เครื่องมือส่งผลต่อบริบทสองทาง:

  1. ข้อความรายการเครื่องมือ ในพรอมต์ระบบ (สิ่งที่คุณเห็นในส่วน "เครื่องมือ")
  2. สคีมาของเครื่องมือ (JSON) ซึ่งส่งให้โมเดลเพื่อให้สามารถเรียกใช้เครื่องมือได้ และจะถูกนับรวมในบริบทแม้ว่าคุณจะไม่เห็นเป็นข้อความธรรมดา

/context detail แจกแจงสคีมาของเครื่องมือที่ใหญ่ที่สุด เพื่อให้คุณเห็นว่าส่วนใดใช้พื้นที่มากที่สุด

คำสั่ง ไดเรกทีฟ และ "ทางลัดแบบอินไลน์"

คำสั่งเครื่องหมายทับได้รับการจัดการโดย Gateway โดยมีลักษณะการทำงานที่แตกต่างกันดังนี้:

  • คำสั่งเดี่ยว: ข้อความที่มีเพียง /... จะทำงานเป็นคำสั่ง
  • ไดเรกทีฟ: /think, /fast, /verbose, /trace, /reasoning, /elevated, /exec, /model, /queue จะถูกนำออกก่อนที่โมเดลจะเห็นข้อความ
    • ข้อความที่มีเฉพาะไดเรกทีฟจะคงการตั้งค่าเซสชันไว้
    • ไดเรกทีฟแบบอินไลน์ในข้อความปกติจะทำหน้าที่เป็นคำแนะนำสำหรับข้อความนั้น
  • ทางลัดแบบอินไลน์ (เฉพาะผู้ส่งที่อยู่ในรายการอนุญาต): โทเค็น /... บางรายการภายในข้อความปกติสามารถทำงานได้ทันที (ตัวอย่าง: "สวัสดี /status") และจะถูกนำออกก่อนที่โมเดลจะเห็นข้อความส่วนที่เหลือ

รายละเอียด: คำสั่งเครื่องหมายทับ

เซสชัน Compaction และการตัดแต่ง (สิ่งที่คงอยู่)

สิ่งที่จะคงอยู่ระหว่างข้อความขึ้นอยู่กับกลไก:

  • ประวัติปกติ จะคงอยู่ในบทสนทนาของเซสชันจนกว่าจะถูกทำ Compaction หรือตัดแต่งตามนโยบาย
  • Compaction จะบันทึกสรุปลงในบทสนทนาและเก็บข้อความล่าสุดไว้ครบถ้วน
  • การตัดแต่ง จะลบผลลัพธ์เก่าของเครื่องมือออกจากพรอมต์ ในหน่วยความจำ เพื่อเพิ่มพื้นที่ว่างในหน้าต่างบริบท แต่จะไม่เขียนบทสนทนาของเซสชันใหม่ โดยประวัติฉบับเต็มยังคงตรวจสอบได้บนดิสก์

เอกสาร: เซสชัน, Compaction, การตัดแต่งเซสชัน

โดยค่าเริ่มต้น OpenClaw ใช้กลไกบริบท legacy ในตัวสำหรับการประกอบและ Compaction หากคุณติดตั้ง Plugin ที่ระบุ kind: "context-engine" และ เลือกด้วย plugins.slots.contextEngine OpenClaw จะมอบหมายการประกอบบริบท /compact และฮุกวงจรชีวิตบริบทของเอเจนต์ย่อยที่เกี่ยวข้องให้กลไกนั้นแทน ownsCompaction: false จะไม่ย้อนกลับไปใช้กลไก legacy โดยอัตโนมัติ กลไกที่ใช้งานอยู่ยังคงต้องติดตั้ง compact() อย่างถูกต้อง ดู กลไกบริบท สำหรับอินเทอร์เฟซแบบเสียบเปลี่ยนได้ ฮุกวงจรชีวิต และการกำหนดค่าทั้งหมด

สิ่งที่ /context รายงานจริง

/context จะเลือกใช้รายงานพรอมต์ระบบล่าสุดที่ สร้างจากการรัน หากมี:

  • System prompt (run) = บันทึกจากการรันแบบฝังตัวครั้งล่าสุด (ที่ใช้เครื่องมือได้) และจัดเก็บอย่างถาวรไว้ในที่เก็บเซสชัน
  • System prompt (estimate) = คำนวณทันทีเมื่อไม่มีรายงานการรัน (หรือเมื่อทำงานผ่านแบ็กเอนด์ CLI ที่ไม่สร้างรายงาน)

ไม่ว่าจะเป็นกรณีใด ระบบจะรายงานขนาดและองค์ประกอบหลัก แต่จะ ไม่ แสดงพรอมต์ระบบหรือสคีมาของเครื่องมือทั้งหมด ในโหมดรายละเอียด ระบบยังเปรียบเทียบบทสนทนาของเซสชันโดยใช้เกณฑ์ระบุข้อความสนทนาจริงแบบเดียวกับที่ Compaction ใช้ เพื่อให้แยกแยะการใช้พรอมต์/แคชในปริมาณสูงออกจากประวัติการสนทนาที่สามารถทำ Compaction ได้ง่ายขึ้น

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page