Fundamentals
บริบท
"บริบท" คือ ทุกสิ่งที่ OpenClaw ส่งให้โมเดลสำหรับการรันหนึ่งครั้ง โดยถูกจำกัดด้วย หน้าต่างบริบท ของโมเดล (ขีดจำกัดโทเค็น)
แบบจำลองความเข้าใจสำหรับผู้เริ่มต้น:
- พรอมป์ต์ระบบ (สร้างโดย OpenClaw): กฎ, เครื่องมือ, รายการ Skills, เวลา/รันไทม์ และไฟล์เวิร์กสเปซที่ถูกแทรกเข้าไป
- ประวัติการสนทนา: ข้อความของคุณ + ข้อความของผู้ช่วยสำหรับเซสชันนี้
- การเรียกใช้เครื่องมือ/ผลลัพธ์ + ไฟล์แนบ: เอาต์พุตคำสั่ง, การอ่านไฟล์, รูปภาพ/เสียง ฯลฯ
บริบท ไม่ใช่สิ่งเดียวกัน กับ "หน่วยความจำ": หน่วยความจำสามารถเก็บไว้บนดิสก์และโหลดกลับมาในภายหลังได้; บริบทคือสิ่งที่อยู่ภายในหน้าต่างปัจจุบันของโมเดล
เริ่มต้นอย่างรวดเร็ว (ตรวจสอบบริบท)
/status→ มุมมองด่วนว่า "หน้าต่างของฉันเต็มแค่ไหน?" + การตั้งค่าเซสชัน/context list→ สิ่งที่ถูกแทรกเข้าไป + ขนาดคร่าว ๆ (ต่อไฟล์ + รวมทั้งหมด)/context detail→ รายละเอียดเชิงลึกกว่า: ขนาดต่อไฟล์, ขนาดสคีมาต่อเครื่องมือ, ขนาดรายการต่อ Skill และขนาดพรอมป์ต์ระบบ/context map→ รูปภาพแผนผังแบบ WinDirStat ของผู้มีส่วนต่อบริบทที่ติดตามอยู่ในเซสชันปัจจุบัน/usage tokens→ เพิ่มส่วนท้ายการใช้งานต่อคำตอบในคำตอบปกติ/compact→ สรุปประวัติที่เก่ากว่าเป็นรายการแบบย่อเพื่อคืนพื้นที่หน้าต่าง
ดูเพิ่มเติม: คำสั่งสแลช, การใช้โทเค็นและค่าใช้จ่าย, Compaction
ตัวอย่างเอาต์พุต
ค่าจะแตกต่างกันตามโมเดล, ผู้ให้บริการ, นโยบายเครื่องมือ และสิ่งที่อยู่ในเวิร์กสเปซของคุณ
/context list
🧠 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
🧠 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 จะส่งคืนข้อความว่าไม่พร้อมใช้งานแทนการเรนเดอร์ค่าประมาณ พื้นที่สี่เหลี่ยมผืนผ้าแปรผันตามจำนวนอักขระพรอมป์ต์ที่ติดตาม:
- ไฟล์เวิร์กสเปซที่ถูกแทรกเข้าไป
- ข้อความพรอมป์ต์ระบบพื้นฐาน
- รายการพรอมป์ต์ของ Skill
- สคีมา JSON ของเครื่องมือ
/context list, /context detail และ /context json ยังสามารถตรวจสอบค่าประมาณแบบตามคำขอได้เมื่อไม่มีรายงานการรันที่แคชไว้
สิ่งที่นับรวมในหน้าต่างบริบท
ทุกสิ่งที่โมเดลได้รับจะถูกนับรวม รวมถึง:
- พรอมป์ต์ระบบ (ทุกส่วน)
- ประวัติการสนทนา
- การเรียกใช้เครื่องมือ + ผลลัพธ์เครื่องมือ
- ไฟล์แนบ/ทรานสคริปต์ (รูปภาพ/เสียง/ไฟล์)
- สรุป Compaction และอาร์ติแฟกต์จากการตัดแต่ง
- "ตัวครอบ" หรือเฮดเดอร์ที่ซ่อนอยู่ของผู้ให้บริการ (มองไม่เห็น แต่ยังถูกนับ)
OpenClaw สร้างพรอมป์ต์ระบบอย่างไร
พรอมป์ต์ระบบเป็น ส่วนที่ OpenClaw เป็นเจ้าของ และถูกสร้างใหม่ทุกครั้งที่รัน โดยประกอบด้วย:
- รายการเครื่องมือ + คำอธิบายสั้น ๆ
- รายการ Skills (เฉพาะเมตาดาตา; ดูด้านล่าง)
- ตำแหน่งเวิร์กสเปซ
- เวลา (UTC + เวลาผู้ใช้ที่แปลงแล้วถ้ากำหนดค่าไว้)
- เมตาดาตารันไทม์ (โฮสต์/OS/โมเดล/thinking)
- ไฟล์บูตสแตรปของเวิร์กสเปซที่ถูกแทรกไว้ภายใต้ บริบทโปรเจกต์
รายละเอียดเต็ม: พรอมป์ต์ระบบ
ไฟล์เวิร์กสเปซที่ถูกแทรกเข้าไป (บริบทโปรเจกต์)
ตามค่าเริ่มต้น OpenClaw จะแทรกชุดไฟล์เวิร์กสเปซคงที่ (ถ้ามีอยู่):
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(เฉพาะการรันครั้งแรก)
ไฟล์ขนาดใหญ่จะถูกตัดทอนต่อไฟล์โดยใช้ agents.defaults.bootstrapMaxChars (ค่าเริ่มต้น 12000 อักขระ) OpenClaw ยังบังคับใช้เพดานการแทรกบูตสแตรปรวมข้ามไฟล์ด้วย agents.defaults.bootstrapTotalMaxChars (ค่าเริ่มต้น 60000 อักขระ) /context จะแสดงขนาด ดิบเทียบกับที่ถูกแทรก และระบุว่ามีการตัดทอนเกิดขึ้นหรือไม่
เมื่อเกิดการตัดทอน รันไทม์สามารถแทรกบล็อกคำเตือนภายในพรอมป์ต์ภายใต้บริบทโปรเจกต์ได้ กำหนดค่านี้ด้วย agents.defaults.bootstrapPromptTruncationWarning (off, once, always; ค่าเริ่มต้น once)
Skills: ถูกแทรกเข้าไปเทียบกับโหลดตามคำขอ
พรอมป์ต์ระบบมี รายการ Skills แบบกระชับ (ชื่อ + คำอธิบาย + ตำแหน่ง) รายการนี้มีโอเวอร์เฮดจริง
คำสั่งของ Skill ไม่ได้ รวมอยู่โดยค่าเริ่มต้น โมเดลถูกคาดหวังให้ read SKILL.md ของ Skill เฉพาะเมื่อจำเป็น
เครื่องมือ: มีค่าใช้จ่ายสองแบบ
เครื่องมือมีผลต่อบริบทสองทาง:
- ข้อความรายการเครื่องมือ ในพรอมป์ต์ระบบ (สิ่งที่คุณเห็นเป็น "เครื่องมือ")
- สคีมาเครื่องมือ (JSON) สิ่งเหล่านี้ถูกส่งให้โมเดลเพื่อให้เรียกใช้เครื่องมือได้ โดยนับรวมในบริบท แม้ว่าคุณจะไม่เห็นเป็นข้อความธรรมดาก็ตาม
/context detail จะแยกสคีมาเครื่องมือที่ใหญ่ที่สุดเพื่อให้คุณเห็นว่าอะไรเป็นส่วนหลัก
คำสั่ง, ไดเรกทีฟ และ "ชอร์ตคัตแบบอินไลน์"
คำสั่งสแลชถูกจัดการโดย Gateway มีพฤติกรรมที่ต่างกันอยู่ไม่กี่แบบ:
- คำสั่งเดี่ยว: ข้อความที่มีเพียง
/...จะทำงานเป็นคำสั่ง - ไดเรกทีฟ:
/think,/verbose,/trace,/reasoning,/elevated,/model,/queueจะถูกตัดออกก่อนที่โมเดลจะเห็นข้อความ- ข้อความที่มีเฉพาะไดเรกทีฟจะคงการตั้งค่าเซสชันไว้
- ไดเรกทีฟแบบอินไลน์ในข้อความปกติทำหน้าที่เป็นคำใบ้ต่อข้อความ
- ชอร์ตคัตแบบอินไลน์ (เฉพาะผู้ส่งที่อยู่ใน allowlist): โทเค็น
/...บางรายการภายในข้อความปกติสามารถทำงานได้ทันที (ตัวอย่าง: "hey /status") และจะถูกตัดออกก่อนที่โมเดลจะเห็นข้อความที่เหลือ
รายละเอียด: คำสั่งสแลช
เซสชัน, Compaction และการตัดแต่ง (สิ่งที่คงอยู่)
สิ่งที่คงอยู่ข้ามข้อความขึ้นอยู่กับกลไก:
- ประวัติปกติ คงอยู่ในทรานสคริปต์เซสชันจนกว่าจะถูก compact/ตัดแต่งตามนโยบาย
- Compaction คงสรุปหนึ่งรายการไว้ในทรานสคริปต์ และคงข้อความล่าสุดไว้เหมือนเดิม
- การตัดแต่ง จะทิ้งผลลัพธ์เครื่องมือเก่าออกจากพรอมป์ต์ ในหน่วยความจำ เพื่อคืนพื้นที่หน้าต่างบริบท แต่จะไม่เขียนทรานสคริปต์เซสชันใหม่ - ประวัติเต็มยังตรวจสอบได้บนดิสก์
เอกสาร: เซสชัน, Compaction, การตัดแต่งเซสชัน
ตามค่าเริ่มต้น OpenClaw ใช้เอนจินบริบท legacy ในตัวสำหรับการประกอบและ
Compaction หากคุณติดตั้ง Plugin ที่ให้ kind: "context-engine" และ
เลือกด้วย plugins.slots.contextEngine OpenClaw จะมอบหมายการประกอบบริบท,
/compact และฮุกวงจรชีวิตบริบทของ subagent ที่เกี่ยวข้องให้เอนจินนั้นแทน
ownsCompaction: false จะไม่ย้อนกลับอัตโนมัติไปยังเอนจิน legacy;
เอนจินที่ใช้งานอยู่ยังต้องอิมพลีเมนต์ compact() ให้ถูกต้อง ดู
เอนจินบริบท สำหรับอินเทอร์เฟซแบบเสียบเปลี่ยนได้,
ฮุกวงจรชีวิต และการกำหนดค่าฉบับเต็ม
สิ่งที่ /context รายงานจริง ๆ
/context จะเลือกใช้รายงานพรอมป์ต์ระบบที่ สร้างจากการรัน ล่าสุดเมื่อมีให้ใช้งาน:
System prompt (run)= จับมาจากการรันแบบฝังตัวครั้งล่าสุด (ที่ใช้เครื่องมือได้) และคงไว้ในที่เก็บเซสชันSystem prompt (estimate)= คำนวณทันทีเมื่อไม่มีรายงานการรันอยู่ (หรือเมื่อรันผ่านแบ็กเอนด์ CLI ที่ไม่สร้างรายงาน)
ไม่ว่าจะทางใด มันจะรายงานขนาดและผู้มีส่วนหลัก; มันจะ ไม่ dump พรอมป์ต์ระบบเต็มหรือสคีมาเครื่องมือ