---
read_when:
    - การดีบักว่าทำไมเอเจนต์จึงตอบ ล้มเหลว หรือเรียกใช้เครื่องมือในลักษณะหนึ่ง
    - การส่งออกชุดข้อมูลสนับสนุนสำหรับเซสชัน OpenClaw
    - การตรวจสอบบริบทของพรอมป์ การเรียกใช้เครื่องมือ ข้อผิดพลาดขณะรันไทม์ หรือเมตาดาต้าการใช้งาน
    - การปิดใช้งานหรือย้ายตำแหน่งการบันทึกวิถีการทำงาน
summary: ส่งออกชุด trajectory ที่ปกปิดข้อมูลสำหรับการดีบักเซสชันเอเจนต์ OpenClaw
title: ชุดรวมวิถี
x-i18n:
    generated_at: "2026-06-27T18:32:55Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: bf48616c29a1055f26d39a88869c025db7e6261b13dcaa0cd35be438c6a86a88
    source_path: tools/trajectory.md
    workflow: 16
---

การบันทึก trajectory คือ flight recorder รายเซสชันของ OpenClaw โดยจะบันทึกไทม์ไลน์แบบมีโครงสร้างสำหรับการรัน agent แต่ละครั้ง จากนั้น `/export-trajectory` จะบรรจุเซสชันปัจจุบันเป็นชุดข้อมูลสนับสนุนที่ถูกปกปิดข้อมูลแล้ว

ใช้เมื่อคุณต้องตอบคำถามอย่างเช่น:

- พรอมป์ พรอมป์ระบบ และเครื่องมือใดถูกส่งไปยังโมเดล?
- ข้อความ transcript และการเรียกใช้เครื่องมือใดนำไปสู่คำตอบนี้?
- การรันหมดเวลา ยกเลิก ทำ Compaction หรือพบข้อผิดพลาดจาก provider หรือไม่?
- โมเดล Plugin, Skills และการตั้งค่ารันไทม์ใดทำงานอยู่?
- provider ส่งเมทาดาทาการใช้งานและ prompt-cache ใดกลับมา?

หากคุณกำลังยื่นรายงานสนับสนุนแบบกว้างสำหรับปัญหา Gateway แบบสด ให้เริ่มด้วย
[`/diagnostics`](/th/gateway/diagnostics#chat-command) Diagnostics จะรวบรวมชุดข้อมูล Gateway ที่ถูกทำให้ปลอดข้อมูลอ่อนไหว และสำหรับเซสชัน OpenAI Codex harness ยังสามารถส่งฟีดแบ็ก Codex ไปยังเซิร์ฟเวอร์ OpenAI หลังได้รับอนุมัติได้ด้วย ใช้ `/export-trajectory` เมื่อคุณต้องการไทม์ไลน์พรอมป์ เครื่องมือ และ transcript แบบละเอียดรายเซสชันโดยเฉพาะ

## เริ่มต้นอย่างรวดเร็ว

ส่งข้อความนี้ในเซสชันที่ใช้งานอยู่:

```text
/export-trajectory
```

นามแฝง:

```text
/trajectory
```

OpenClaw จะเขียนชุดข้อมูลไว้ใต้ workspace:

```text
.openclaw/trajectory-exports/openclaw-trajectory-<session>-<timestamp>/
```

คุณสามารถเลือกชื่อไดเรกทอรีเอาต์พุตแบบ relative ได้:

```text
/export-trajectory bug-1234
```

พาธแบบกำหนดเองจะถูก resolve ภายใน `.openclaw/trajectory-exports/` พาธแบบ absolute
และพาธ `~` จะถูกปฏิเสธ

ชุดข้อมูล trajectory อาจมีพรอมป์ ข้อความโมเดล สคีมาเครื่องมือ ผลลัพธ์เครื่องมือ เหตุการณ์รันไทม์ และพาธในเครื่อง ดังนั้นคำสั่ง slash command ในแชตจึงผ่านการอนุมัติ exec ทุกครั้ง อนุมัติการส่งออกหนึ่งครั้งเมื่อคุณตั้งใจสร้างชุดข้อมูล อย่าใช้ allow-all ในแชตกลุ่ม OpenClaw จะส่งพรอมป์อนุมัติและผลลัพธ์การส่งออกให้เจ้าของแบบส่วนตัว แทนการโพสต์รายละเอียด trajectory กลับไปยังห้องที่ใช้ร่วมกัน

สำหรับการตรวจสอบในเครื่องหรือเวิร์กโฟลว์สนับสนุน คุณยังสามารถรันพาธคำสั่งที่ได้รับอนุมัติโดยตรงได้:

```bash
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --workspace .
```

## การเข้าถึง

การส่งออก trajectory เป็นคำสั่งของเจ้าของ ผู้ส่งต้องผ่านการตรวจสอบสิทธิ์คำสั่งปกติและการตรวจสอบเจ้าของสำหรับช่องทางนั้น

## สิ่งที่ถูกบันทึก

การบันทึก trajectory เปิดเป็นค่าเริ่มต้นสำหรับการรัน agent ของ OpenClaw

เหตุการณ์รันไทม์ประกอบด้วย:

- `session.started`
- `trace.metadata`
- `context.compiled`
- `prompt.submitted`
- `model.fallback_step` รวมถึงโมเดลต้นทาง โมเดลถัดไป เหตุผล/รายละเอียดความล้มเหลว ตำแหน่งใน chain และ fallback เดินหน้า สำเร็จ หรือใช้ chain จนหมดแล้วหรือไม่
- `model.completed`
- `trace.artifacts`
- `session.ended`

เหตุการณ์ transcript จะถูกสร้างใหม่จาก branch เซสชันที่ใช้งานอยู่ด้วย:

- ข้อความผู้ใช้
- ข้อความ assistant
- การเรียกใช้เครื่องมือ
- ผลลัพธ์เครื่องมือ
- Compaction
- การเปลี่ยนโมเดล
- label และรายการเซสชันแบบกำหนดเอง

เหตุการณ์ถูกเขียนเป็น JSON Lines พร้อม marker สคีมานี้:

```json
{
  "traceSchema": "openclaw-trajectory",
  "schemaVersion": 1
}
```

## ไฟล์ในชุดข้อมูล

ชุดข้อมูลที่ส่งออกอาจมี:

| ไฟล์                  | เนื้อหา                                                                                       |
| --------------------- | ---------------------------------------------------------------------------------------------- |
| `manifest.json`       | สคีมาชุดข้อมูล ไฟล์ต้นทาง จำนวนเหตุการณ์ และรายการไฟล์ที่สร้างขึ้น                             |
| `events.jsonl`        | ไทม์ไลน์รันไทม์และ transcript ตามลำดับ                                                        |
| `session-branch.json` | branch transcript ที่ใช้งานอยู่และส่วนหัวเซสชันที่ถูกปกปิดข้อมูลแล้ว                                           |
| `metadata.json`       | เวอร์ชัน OpenClaw, OS/รันไทม์, โมเดล, snapshot การกำหนดค่า, Plugin, Skills และเมทาดาทาพรอมป์     |
| `artifacts.json`      | สถานะสุดท้าย ข้อผิดพลาด การใช้งาน prompt cache จำนวน Compaction ข้อความ assistant และเมทาดาทาเครื่องมือ |
| `prompts.json`        | พรอมป์ที่ส่งและรายละเอียดการสร้างพรอมป์ที่เลือกไว้                                         |
| `system-prompt.txt`   | พรอมป์ระบบที่คอมไพล์ล่าสุด เมื่อมีการบันทึก                                                   |
| `tools.json`          | คำนิยามเครื่องมือที่ส่งไปยังโมเดล เมื่อมีการบันทึก                                              |

`manifest.json` จะแสดงรายการไฟล์ที่มีอยู่ในชุดข้อมูลนั้น บางไฟล์จะถูกละไว้เมื่อเซสชันไม่ได้บันทึกข้อมูลรันไทม์ที่เกี่ยวข้อง

## ตำแหน่งการบันทึก

โดยค่าเริ่มต้น เหตุการณ์ trajectory รันไทม์จะถูกเขียนไว้ข้างไฟล์เซสชัน:

```text
<session>.trajectory.jsonl
```

OpenClaw ยังเขียนไฟล์ pointer แบบ best-effort ไว้ข้างเซสชันด้วย:

```text
<session>.trajectory-path.json
```

ตั้งค่า `OPENCLAW_TRAJECTORY_DIR` เพื่อเก็บไฟล์ sidecar ของ trajectory รันไทม์ในไดเรกทอรีเฉพาะ:

```bash
export OPENCLAW_TRAJECTORY_DIR=/var/lib/openclaw/trajectories
```

เมื่อตั้งค่าตัวแปรนี้ OpenClaw จะเขียนไฟล์ JSONL หนึ่งไฟล์ต่อ session id ในไดเรกทอรีนั้น

การบำรุงรักษาเซสชันจะลบไฟล์ sidecar ของ trajectory เมื่อรายการเซสชันที่เป็นเจ้าของถูก prune, capped หรือ evicted โดยงบประมาณดิสก์ของเซสชัน ไฟล์รันไทม์ที่อยู่นอกไดเรกทอรีเซสชันจะถูกลบเฉพาะเมื่อเป้าหมาย pointer ยังพิสูจน์ได้ว่าเป็นของเซสชันนั้น

## ปิดใช้งานการบันทึก

ตั้งค่า `OPENCLAW_TRAJECTORY=0` ก่อนเริ่ม OpenClaw:

```bash
export OPENCLAW_TRAJECTORY=0
```

การตั้งค่านี้จะปิดการบันทึก trajectory รันไทม์ `/export-trajectory` ยังสามารถส่งออก branch transcript ได้ แต่ไฟล์เฉพาะรันไทม์ เช่น context ที่คอมไพล์แล้ว artifact ของ provider และเมทาดาทาพรอมป์อาจหายไป

## ปรับแต่ง timeout การ flush

OpenClaw จะ flush ไฟล์ sidecar ของ trajectory รันไทม์ระหว่างการ cleanup agent ค่า timeout การ cleanup เริ่มต้นคือ 10,000 ms บนดิสก์ที่ช้าหรือ store ขนาดใหญ่ ให้ตั้งค่า
`OPENCLAW_TRAJECTORY_FLUSH_TIMEOUT_MS` ก่อนเริ่ม OpenClaw:

```bash
export OPENCLAW_TRAJECTORY_FLUSH_TIMEOUT_MS=30000
```

ค่านี้ควบคุมว่าเมื่อใด OpenClaw จะ log timeout `openclaw-trajectory-flush` แล้วทำงานต่อ
ค่านี้ไม่เปลี่ยนขีดจำกัดขนาด trajectory หากต้องการปรับแต่งขั้นตอน cleanup ของ agent ทั้งหมดที่ไม่ได้ส่ง timeout แบบชัดเจน ให้ตั้งค่า `OPENCLAW_AGENT_CLEANUP_TIMEOUT_MS`

## ความเป็นส่วนตัวและขีดจำกัด

ชุดข้อมูล trajectory ถูกออกแบบมาสำหรับการสนับสนุนและการดีบัก ไม่ใช่การโพสต์สาธารณะ
OpenClaw จะปกปิดค่าที่อ่อนไหวก่อนเขียนไฟล์ส่งออก:

- credentials และฟิลด์ payload ที่มีลักษณะคล้าย secret ที่รู้จัก
- ข้อมูลภาพ
- พาธ state ในเครื่อง
- พาธ workspace ซึ่งแทนที่ด้วย `$WORKSPACE_DIR`
- พาธไดเรกทอรี home เมื่อพบ

ตัวส่งออกยังจำกัดขนาดอินพุตด้วย:

- ไฟล์ sidecar รันไทม์: การบันทึกสดหยุดที่ 10 MiB และบันทึกเหตุการณ์ truncation เมื่อยังมีพื้นที่เหลือ การส่งออกยอมรับไฟล์ sidecar รันไทม์ที่มีอยู่ได้สูงสุด 50 MiB
- ไฟล์เซสชัน: 50 MiB
- เหตุการณ์รันไทม์: 200,000
- เหตุการณ์ที่ส่งออกรวม: 250,000
- บรรทัดเหตุการณ์รันไทม์แต่ละบรรทัดจะถูก truncate เมื่อเกิน 256 KiB

ตรวจสอบชุดข้อมูลก่อนแชร์ออกนอกทีมของคุณ การปกปิดข้อมูลเป็นแบบ best-effort
และไม่สามารถรู้ secret เฉพาะทุกแอปพลิเคชันได้

## การแก้ไขปัญหา

หากการส่งออกไม่มีเหตุการณ์รันไทม์:

- ยืนยันว่า OpenClaw ถูกเริ่มโดยไม่มี `OPENCLAW_TRAJECTORY=0`
- ตรวจสอบว่า `OPENCLAW_TRAJECTORY_DIR` ชี้ไปยังไดเรกทอรีที่เขียนได้หรือไม่
- รันอีกข้อความหนึ่งในเซสชัน แล้วส่งออกอีกครั้ง
- ตรวจสอบ `manifest.json` สำหรับ `runtimeEventCount`

หากคำสั่งปฏิเสธพาธเอาต์พุต:

- ใช้ชื่อ relative เช่น `bug-1234`
- อย่าส่ง `/tmp/...` หรือ `~/...`
- เก็บการส่งออกไว้ภายใน `.openclaw/trajectory-exports/`

หากการส่งออกล้มเหลวด้วยข้อผิดพลาดด้านขนาด แปลว่าเซสชันหรือ sidecar เกินขีดจำกัดความปลอดภัยในการส่งออก ให้เริ่มเซสชันใหม่หรือส่งออกการทำซ้ำปัญหาที่เล็กลง

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

- [Diffs](/th/tools/diffs)
- [การจัดการเซสชัน](/th/concepts/session)
- [เครื่องมือ Exec](/th/tools/exec)
