---
read_when:
    - คุณต้องการทำความเข้าใจว่า "บริบท" หมายถึงอะไรใน OpenClaw
    - คุณกำลังดีบักว่าเหตุใดโมเดลจึง "รู้" บางอย่าง (หรือลืมสิ่งนั้นไป)
    - คุณต้องการลดโอเวอร์เฮดของบริบท (/context, /status, /compact)
summary: 'บริบท: สิ่งที่โมเดลเห็น วิธีที่บริบทถูกสร้างขึ้น และวิธีตรวจสอบบริบท'
title: บริบท
x-i18n:
    generated_at: "2026-05-10T19:32:37Z"
    model: gpt-5.5
    provider: openai
    source_hash: dc2dae290e63f82111d865ae066567ef58ec3f48eb62b409b76ee9e6ff65d696
    source_path: concepts/context.md
    workflow: 16
---

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

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

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

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

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

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

ดูเพิ่มเติม: [คำสั่งสแลช](/th/tools/slash-commands), [การใช้โทเค็นและค่าใช้จ่าย](/th/reference/token-use), [Compaction](/th/concepts/compaction)

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

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

### `/context list`

```
🧠 Context breakdown
Workspace: <workspaceDir>
Bootstrap max/file: 12,000 chars
Sandbox: mode=non-main sandboxed=false
System 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)
- ไฟล์บูตสแตรปของเวิร์กสเปซที่ถูกแทรกไว้ภายใต้ **บริบทโปรเจกต์**

รายละเอียดเต็ม: [พรอมป์ต์ระบบ](/th/concepts/system-prompt)

## ไฟล์เวิร์กสเปซที่ถูกแทรกเข้าไป (บริบทโปรเจกต์)

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

- `AGENTS.md`
- `SOUL.md`
- `TOOLS.md`
- `IDENTITY.md`
- `USER.md`
- `HEARTBEAT.md`
- `BOOTSTRAP.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 **เฉพาะเมื่อจำเป็น**

## เครื่องมือ: มีค่าใช้จ่ายสองแบบ

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

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

`/context detail` จะแยกสคีมาเครื่องมือที่ใหญ่ที่สุดเพื่อให้คุณเห็นว่าอะไรเป็นส่วนหลัก

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

คำสั่งสแลชถูกจัดการโดย Gateway มีพฤติกรรมที่ต่างกันอยู่ไม่กี่แบบ:

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

รายละเอียด: [คำสั่งสแลช](/th/tools/slash-commands)

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

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

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

เอกสาร: [เซสชัน](/th/concepts/session), [Compaction](/th/concepts/compaction), [การตัดแต่งเซสชัน](/th/concepts/session-pruning)

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

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

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

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

ไม่ว่าจะทางใด มันจะรายงานขนาดและผู้มีส่วนหลัก; มันจะ **ไม่** dump พรอมป์ต์ระบบเต็มหรือสคีมาเครื่องมือ

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

<CardGroup cols={2}>
  <Card title="เอนจินบริบท" href="/th/concepts/context-engine" icon="puzzle-piece">
    การแทรกบริบทแบบกำหนดเองผ่าน plugins
  </Card>
  <Card title="Compaction" href="/th/concepts/compaction" icon="compress">
    การสรุปบทสนทนายาว ๆ เพื่อคงให้อยู่ภายในหน้าต่างของโมเดล
  </Card>
  <Card title="พรอมป์ต์ระบบ" href="/th/concepts/system-prompt" icon="message-lines">
    วิธีสร้างพรอมป์ต์ระบบและสิ่งที่มันแทรกในแต่ละรอบ
  </Card>
  <Card title="ลูปเอเจนต์" href="/th/concepts/agent-loop" icon="arrows-rotate">
    วงจรการทำงานเต็มของเอเจนต์ตั้งแต่ข้อความขาเข้าจนถึงคำตอบสุดท้าย
  </Card>
</CardGroup>
