---
read_when:
    - การเปลี่ยนแปลงรันไทม์ของเอเจนต์ การบูตสแตรปเวิร์กสเปซ หรือพฤติกรรมของเซสชัน
summary: รันไทม์ของเอเจนต์ สัญญาของเวิร์กสเปซ และการบูตสแตรปเซสชัน
title: รันไทม์ของเอเจนต์
x-i18n:
    generated_at: "2026-05-06T09:06:59Z"
    model: gpt-5.5
    provider: openai
    source_hash: 372cf6a02b35646c24e68d96938bba57721eeec512e17c2d40c8e721e7561bd1
    source_path: concepts/agent.md
    workflow: 16
---

OpenClaw เรียกใช้ **รันไทม์เอเจนต์แบบฝังตัวเดียว** - หนึ่งโปรเซสเอเจนต์ต่อ
Gateway พร้อมเวิร์กสเปซ ไฟล์บูตสแตรป และที่เก็บเซสชันของตัวเอง หน้านี้
ครอบคลุมสัญญาของรันไทม์นั้น: เวิร์กสเปซต้องมีอะไรบ้าง ไฟล์ใดถูก
แทรกเข้าไป และเซสชันบูตสแตรปกับสิ่งนั้นอย่างไร

## เวิร์กสเปซ (จำเป็น)

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

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

เลย์เอาต์เวิร์กสเปซแบบเต็ม + คู่มือสำรองข้อมูล: [เวิร์กสเปซเอเจนต์](/th/concepts/agent-workspace)

หากเปิดใช้ `agents.defaults.sandbox` เซสชันที่ไม่ใช่ main สามารถแทนที่ค่านี้ด้วย
เวิร์กสเปซต่อเซสชันภายใต้ `agents.defaults.sandbox.workspaceRoot` (ดู
[การกำหนดค่า Gateway](/th/gateway/configuration))

## ไฟล์บูตสแตรป (ถูกแทรก)

ภายใน `agents.defaults.workspace` OpenClaw คาดหวังไฟล์ที่ผู้ใช้แก้ไขได้เหล่านี้:

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

ในเทิร์นแรกของเซสชันใหม่ OpenClaw จะแทรกเนื้อหาของไฟล์เหล่านี้ลงในบริบทโปรเจกต์ของพรอมป์ระบบ

ไฟล์ว่างจะถูกข้าม ไฟล์ขนาดใหญ่จะถูกตัดแต่งและตัดทอนพร้อมเครื่องหมาย เพื่อให้พรอมป์ยังคงกระชับ (อ่านไฟล์เพื่อดูเนื้อหาเต็ม)

หากไฟล์หายไป OpenClaw จะแทรกบรรทัดเครื่องหมาย "ไฟล์หายไป" เพียงบรรทัดเดียว (และ `openclaw setup` จะสร้างเทมเพลตเริ่มต้นที่ปลอดภัย)

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

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

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

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

เครื่องมือหลัก (read/exec/edit/write และเครื่องมือระบบที่เกี่ยวข้อง) พร้อมใช้งานเสมอ
ภายใต้นโยบายเครื่องมือ `apply_patch` เป็นตัวเลือกเสริมและถูกควบคุมด้วย
`tools.exec.applyPatch` `TOOLS.md` **ไม่ได้** ควบคุมว่ามีเครื่องมือใดอยู่บ้าง แต่เป็น
คำแนะนำว่าคุณต้องการให้ใช้งานเครื่องมือเหล่านั้นอย่างไร

## Skills

OpenClaw โหลด Skills จากตำแหน่งเหล่านี้ (ลำดับความสำคัญสูงสุดมาก่อน):

- เวิร์กสเปซ: `<workspace>/skills`
- Skills ของเอเจนต์โปรเจกต์: `<workspace>/.agents/skills`
- Skills ของเอเจนต์ส่วนตัว: `~/.agents/skills`
- จัดการแล้ว/ภายในเครื่อง: `~/.openclaw/skills`
- ที่มาพร้อมแพ็กเกจ (จัดส่งมาพร้อมการติดตั้ง)
- โฟลเดอร์ Skills เพิ่มเติม: `skills.load.extraDirs`

Skills สามารถถูกควบคุมด้วย config/env ได้ (ดู `skills` ใน [การกำหนดค่า Gateway](/th/gateway/configuration))

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

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

## เซสชัน

ทรานสคริปต์ของเซสชันถูกจัดเก็บเป็น JSONL ที่:

- `~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl`

ID เซสชันมีความเสถียรและถูกเลือกโดย OpenClaw
โฟลเดอร์เซสชันแบบเดิมจากเครื่องมืออื่นจะไม่ถูกอ่าน

## การควบคุมทิศทางระหว่างการสตรีม

เมื่อโหมดคิวเป็น `steer` ข้อความขาเข้าจะถูกแทรกเข้าไปในการรันปัจจุบัน
การควบคุมทิศทางที่เข้าคิวไว้จะถูกส่ง **หลังจากเทิร์นผู้ช่วยปัจจุบันดำเนินการ
เรียกใช้เครื่องมือเสร็จสิ้น** ก่อนการเรียก LLM ครั้งถัดไป Pi จะระบายข้อความ
ควบคุมทิศทางที่ค้างอยู่ทั้งหมดพร้อมกันสำหรับ `steer`; `queue` แบบเดิมจะระบายหนึ่งข้อความต่อ
ขอบเขตโมเดล การควบคุมทิศทางจะไม่ข้ามการเรียกใช้เครื่องมือที่เหลือจากข้อความผู้ช่วย
ปัจจุบันอีกต่อไป

เมื่อโหมดคิวเป็น `followup` หรือ `collect` ข้อความขาเข้าจะถูกพักไว้จนกว่า
เทิร์นปัจจุบันจะจบ จากนั้นเทิร์นเอเจนต์ใหม่จะเริ่มต้นพร้อมเพย์โหลดที่เข้าคิวไว้ ดู
[คิว](/th/concepts/queue) และ [คิวการควบคุมทิศทาง](/th/concepts/queue-steering) สำหรับโหมด
และพฤติกรรมขอบเขต

การสตรีมแบบบล็อกจะส่งบล็อกผู้ช่วยที่เสร็จสมบูรณ์ทันทีที่เสร็จ; ค่าเริ่มต้นคือ
**ปิด** (`agents.defaults.blockStreamingDefault: "off"`)
ปรับขอบเขตผ่าน `agents.defaults.blockStreamingBreak` (`text_end` เทียบกับ `message_end`; ค่าเริ่มต้นเป็น text_end)
ควบคุมการแบ่งชังก์บล็อกแบบอ่อนด้วย `agents.defaults.blockStreamingChunk` (ค่าเริ่มต้นเป็น
800-1200 ตัวอักษร; เลือกแบ่งตามย่อหน้าก่อน จากนั้นขึ้นบรรทัดใหม่; ประโยคเป็นลำดับสุดท้าย)
รวมชังก์ที่สตรีมด้วย `agents.defaults.blockStreamingCoalesce` เพื่อลด
สแปมบรรทัดเดี่ยว (รวมตามช่วงว่างก่อนส่ง) ช่องทางที่ไม่ใช่ Telegram ต้องกำหนด
`*.blockStreaming: true` อย่างชัดเจนเพื่อเปิดใช้การตอบกลับแบบบล็อก
สรุปเครื่องมือแบบละเอียดจะถูกส่งออกเมื่อเครื่องมือเริ่มทำงาน (ไม่มี debounce); Control UI
สตรีมเอาต์พุตเครื่องมือผ่านอีเวนต์เอเจนต์เมื่อพร้อมใช้งาน
รายละเอียดเพิ่มเติม: [การสตรีม + การแบ่งชังก์](/th/concepts/streaming)

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

การอ้างอิงโมเดลใน config (เช่น `agents.defaults.model` และ `agents.defaults.models`) จะถูกแยกโดยใช้ `/` ตัว **แรก**

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

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

อย่างน้อย ให้ตั้งค่า:

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

---

_ถัดไป: [แชตกลุ่ม](/th/channels/group-messages)_ 🦞

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

- [เวิร์กสเปซเอเจนต์](/th/concepts/agent-workspace)
- [การกำหนดเส้นทางหลายเอเจนต์](/th/concepts/multi-agent)
- [การจัดการเซสชัน](/th/concepts/session)
