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