Tools
ชุดรวมวิถี
การบันทึก trajectory คือ flight recorder รายเซสชันของ OpenClaw โดยจะบันทึกไทม์ไลน์แบบมีโครงสร้างสำหรับการรัน agent แต่ละครั้ง จากนั้น /export-trajectory จะบรรจุเซสชันปัจจุบันเป็นชุดข้อมูลสนับสนุนที่ถูกปกปิดข้อมูลแล้ว
ใช้เมื่อคุณต้องตอบคำถามอย่างเช่น:
- พรอมป์ พรอมป์ระบบ และเครื่องมือใดถูกส่งไปยังโมเดล?
- ข้อความ transcript และการเรียกใช้เครื่องมือใดนำไปสู่คำตอบนี้?
- การรันหมดเวลา ยกเลิก ทำ Compaction หรือพบข้อผิดพลาดจาก provider หรือไม่?
- โมเดล Plugin, Skills และการตั้งค่ารันไทม์ใดทำงานอยู่?
- provider ส่งเมทาดาทาการใช้งานและ prompt-cache ใดกลับมา?
หากคุณกำลังยื่นรายงานสนับสนุนแบบกว้างสำหรับปัญหา Gateway แบบสด ให้เริ่มด้วย
/diagnostics Diagnostics จะรวบรวมชุดข้อมูล Gateway ที่ถูกทำให้ปลอดข้อมูลอ่อนไหว และสำหรับเซสชัน OpenAI Codex harness ยังสามารถส่งฟีดแบ็ก Codex ไปยังเซิร์ฟเวอร์ OpenAI หลังได้รับอนุมัติได้ด้วย ใช้ /export-trajectory เมื่อคุณต้องการไทม์ไลน์พรอมป์ เครื่องมือ และ transcript แบบละเอียดรายเซสชันโดยเฉพาะ
เริ่มต้นอย่างรวดเร็ว
ส่งข้อความนี้ในเซสชันที่ใช้งานอยู่:
/export-trajectoryนามแฝง:
/trajectoryOpenClaw จะเขียนชุดข้อมูลไว้ใต้ workspace:
.openclaw/trajectory-exports/openclaw-trajectory-<session>-<timestamp>/คุณสามารถเลือกชื่อไดเรกทอรีเอาต์พุตแบบ relative ได้:
/export-trajectory bug-1234พาธแบบกำหนดเองจะถูก resolve ภายใน .openclaw/trajectory-exports/ พาธแบบ absolute
และพาธ ~ จะถูกปฏิเสธ
ชุดข้อมูล trajectory อาจมีพรอมป์ ข้อความโมเดล สคีมาเครื่องมือ ผลลัพธ์เครื่องมือ เหตุการณ์รันไทม์ และพาธในเครื่อง ดังนั้นคำสั่ง slash command ในแชตจึงผ่านการอนุมัติ exec ทุกครั้ง อนุมัติการส่งออกหนึ่งครั้งเมื่อคุณตั้งใจสร้างชุดข้อมูล อย่าใช้ allow-all ในแชตกลุ่ม OpenClaw จะส่งพรอมป์อนุมัติและผลลัพธ์การส่งออกให้เจ้าของแบบส่วนตัว แทนการโพสต์รายละเอียด trajectory กลับไปยังห้องที่ใช้ร่วมกัน
สำหรับการตรวจสอบในเครื่องหรือเวิร์กโฟลว์สนับสนุน คุณยังสามารถรันพาธคำสั่งที่ได้รับอนุมัติโดยตรงได้:
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --workspace .การเข้าถึง
การส่งออก trajectory เป็นคำสั่งของเจ้าของ ผู้ส่งต้องผ่านการตรวจสอบสิทธิ์คำสั่งปกติและการตรวจสอบเจ้าของสำหรับช่องทางนั้น
สิ่งที่ถูกบันทึก
การบันทึก trajectory เปิดเป็นค่าเริ่มต้นสำหรับการรัน agent ของ OpenClaw
เหตุการณ์รันไทม์ประกอบด้วย:
session.startedtrace.metadatacontext.compiledprompt.submittedmodel.fallback_stepรวมถึงโมเดลต้นทาง โมเดลถัดไป เหตุผล/รายละเอียดความล้มเหลว ตำแหน่งใน chain และ fallback เดินหน้า สำเร็จ หรือใช้ chain จนหมดแล้วหรือไม่model.completedtrace.artifactssession.ended
เหตุการณ์ transcript จะถูกสร้างใหม่จาก branch เซสชันที่ใช้งานอยู่ด้วย:
- ข้อความผู้ใช้
- ข้อความ assistant
- การเรียกใช้เครื่องมือ
- ผลลัพธ์เครื่องมือ
- Compaction
- การเปลี่ยนโมเดล
- label และรายการเซสชันแบบกำหนดเอง
เหตุการณ์ถูกเขียนเป็น JSON Lines พร้อม marker สคีมานี้:
{ "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 รันไทม์จะถูกเขียนไว้ข้างไฟล์เซสชัน:
<session>.trajectory.jsonlOpenClaw ยังเขียนไฟล์ pointer แบบ best-effort ไว้ข้างเซสชันด้วย:
<session>.trajectory-path.jsonตั้งค่า OPENCLAW_TRAJECTORY_DIR เพื่อเก็บไฟล์ sidecar ของ trajectory รันไทม์ในไดเรกทอรีเฉพาะ:
export OPENCLAW_TRAJECTORY_DIR=/var/lib/openclaw/trajectoriesเมื่อตั้งค่าตัวแปรนี้ OpenClaw จะเขียนไฟล์ JSONL หนึ่งไฟล์ต่อ session id ในไดเรกทอรีนั้น
การบำรุงรักษาเซสชันจะลบไฟล์ sidecar ของ trajectory เมื่อรายการเซสชันที่เป็นเจ้าของถูก prune, capped หรือ evicted โดยงบประมาณดิสก์ของเซสชัน ไฟล์รันไทม์ที่อยู่นอกไดเรกทอรีเซสชันจะถูกลบเฉพาะเมื่อเป้าหมาย pointer ยังพิสูจน์ได้ว่าเป็นของเซสชันนั้น
ปิดใช้งานการบันทึก
ตั้งค่า OPENCLAW_TRAJECTORY=0 ก่อนเริ่ม OpenClaw:
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:
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 เกินขีดจำกัดความปลอดภัยในการส่งออก ให้เริ่มเซสชันใหม่หรือส่งออกการทำซ้ำปัญหาที่เล็กลง