Diagnostics
แฟล็กการวินิจฉัย
แฟล็กการวินิจฉัยเปิดใช้การบันทึกเพิ่มเติมสำหรับระบบย่อยหนึ่งระบบโดยไม่เพิ่ม
logging.level โดยรวม แฟล็กจะไม่มีผล เว้นแต่ระบบย่อยจะตรวจสอบแฟล็กนั้น
วิธีการทำงาน
- แฟล็กเป็นสตริงที่ไม่แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ โดยจะได้รับการแก้ค่าจาก
diagnostics.flagsใน การกำหนดค่า ร่วมกับค่าที่เขียนทับจากตัวแปรสภาพแวดล้อมOPENCLAW_DIAGNOSTICSจากนั้นจะตัดค่าซ้ำและแปลงเป็นตัวพิมพ์เล็ก name.*จะตรงกับnameเองและทุกค่าภายใต้name.(ตัวอย่างเช่นtelegram.*จะตรงกับtelegram.http)*หรือallจะเปิดใช้ทุกแฟล็ก- รีสตาร์ต Gateway หลังเปลี่ยน
diagnostics.flagsในการกำหนดค่า เนื่องจากค่านี้ ไม่รองรับการโหลดใหม่ทันที
แฟล็กที่รู้จัก
| แฟล็ก | เปิดใช้ |
|---|---|
telegram.http |
การบันทึกข้อผิดพลาด HTTP ของ Telegram Bot API |
brave.http |
การบันทึกคำขอ/การตอบกลับ/แคชของ Brave Search |
profiler |
ตัววิเคราะห์ประสิทธิภาพขั้นตอนการตอบกลับและตัววิเคราะห์ประสิทธิภาพ Codex app-server (ทั้งสองรายการ) |
reply.profiler |
ตัววิเคราะห์ประสิทธิภาพขั้นตอนการตอบกลับเท่านั้น |
codex.profiler |
ตัววิเคราะห์ประสิทธิภาพ Codex app-server เท่านั้น |
health |
รายละเอียดการดีบักโพรบสุขภาพ/บัญชี/การผูกของ Gateway |
ingress.timing |
ระยะเวลาการโหลดเซสชัน การเลือกโมเดล และแค็ตตาล็อกโมเดล |
plugin.load-profile |
ระยะเวลาการโหลดโมดูล Plugin แบบซิงโครนัส |
timeline |
อาร์ติแฟกต์ไทม์ไลน์ JSONL แบบมีโครงสร้าง (ดูด้านล่าง) |
เปิดใช้ผ่านการกำหนดค่า
{ "diagnostics": { "flags": ["telegram.http"] }}หลายแฟล็ก:
{ "diagnostics": { "flags": ["telegram.http", "brave.http", "gateway.*"] }}เขียนทับด้วยตัวแปรสภาพแวดล้อม (ครั้งเดียว)
OPENCLAW_DIAGNOSTICS=telegram.http,brave.httpค่าจะถูกแยกด้วยเครื่องหมายจุลภาคหรือช่องว่าง ค่าพิเศษ:
| ค่า | ผล |
|---|---|
0, false, off, none |
ปิดใช้ทุกแฟล็ก รวมถึงเขียนทับการกำหนดค่าด้วย |
1, true, all, * |
เปิดใช้ทุกแฟล็ก |
OPENCLAW_DIAGNOSTICS=0 จะปิดใช้แฟล็กจากทั้งตัวแปรสภาพแวดล้อมและการกำหนดค่าสำหรับ
โปรเซสนั้น ซึ่งมีประโยชน์เมื่อต้องการระงับแฟล็กตัววิเคราะห์ประสิทธิภาพที่เปิดค้างไว้ในการกำหนดค่าชั่วคราว
โดยไม่ต้องแก้ไขไฟล์
แฟล็กตัววิเคราะห์ประสิทธิภาพ
แฟล็กตัววิเคราะห์ประสิทธิภาพควบคุมช่วงการจับเวลาแบบเบา และไม่เพิ่มภาระเมื่อปิดอยู่
เปิดใช้ช่วงทั้งหมดที่ควบคุมด้วยแฟล็กตัววิเคราะห์ประสิทธิภาพสำหรับการรัน Gateway หนึ่งครั้ง:
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway runเปิดใช้เฉพาะช่วงตัววิเคราะห์ประสิทธิภาพการส่งต่อการตอบกลับ:
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway runเปิดใช้เฉพาะช่วงตัววิเคราะห์ประสิทธิภาพการเริ่มต้น/เครื่องมือ/เธรดของ Codex app-server:
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway runprofiler เปิดใช้ทั้งตัววิเคราะห์ประสิทธิภาพการตอบกลับและตัววิเคราะห์ประสิทธิภาพ Codex ให้ใช้
ชื่อแฟล็กแบบระบุขอบเขตเพื่อเปิดใช้เพียงรายการเดียว
หรือตั้งค่าในการกำหนดค่า:
{ "diagnostics": { "flags": ["reply.profiler", "codex.profiler"] }}รีสตาร์ต Gateway หลังเปลี่ยนแฟล็กการกำหนดค่า หากต้องการปิดใช้แฟล็กตัววิเคราะห์ประสิทธิภาพ
ให้นำแฟล็กออกจาก diagnostics.flags แล้วรีสตาร์ต หรือเริ่มโปรเซสด้วย
OPENCLAW_DIAGNOSTICS=0 เพื่อเขียนทับแฟล็กการวินิจฉัยทั้งหมดสำหรับการรันครั้งนั้น
อาร์ติแฟกต์ไทม์ไลน์
แฟล็ก timeline (ชื่อแทน: diagnostics.timeline) จะเขียนเหตุการณ์จับเวลาการเริ่มต้น
และรันไทม์แบบมีโครงสร้างเป็น JSONL สำหรับชุดทดสอบ QA ภายนอก:
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway runหรือเปิดใช้ในการกำหนดค่า:
{ "diagnostics": { "flags": ["timeline"] }}พาธเอาต์พุตจะมาจาก OPENCLAW_DIAGNOSTICS_TIMELINE_PATH เสมอ แม้ว่า
ตัวแฟล็กจะถูกตั้งค่าในการกำหนดค่าก็ตาม โดยไม่มีคีย์การกำหนดค่าสำหรับพาธนี้
เมื่อเปิดใช้ timeline จากการกำหนดค่าเท่านั้น ช่วงการโหลดการกำหนดค่าแรกสุด
จะหายไปเนื่องจาก OpenClaw ยังไม่ได้อ่านการกำหนดค่า ส่วนช่วงการเริ่มต้นหลังจากนั้น
จะถูกบันทึกตามปกติ
OPENCLAW_DIAGNOSTICS=1, =all และ =* จะเปิดใช้ไทม์ไลน์ด้วย เนื่องจากค่าเหล่านี้
เปิดใช้ทุกแฟล็ก ควรใช้แฟล็กแบบระบุขอบเขต timeline เมื่อต้องการเฉพาะ
อาร์ติแฟกต์ JSONL โดยไม่ต้องการแฟล็กการวินิจฉัยอื่นทั้งหมด
ตัวอย่างความล่าช้าของลูปเหตุการณ์ในไทม์ไลน์ต้องเลือกเปิดใช้อีกหนึ่งรายการเพิ่มเติมจาก
timeline: ตั้งค่า OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 (หรือ on/true/yes) ควบคู่กับ
การเปิดใช้ไทม์ไลน์
ระเบียนไทม์ไลน์ใช้เอนเวโลป openclaw.diagnostics.v1 และอาจมี
รหัสโปรเซส ชื่อเฟส ชื่อช่วง ระยะเวลา รหัส Plugin จำนวน
การขึ้นต่อกัน ตัวอย่างความล่าช้าของลูปเหตุการณ์ ชื่อการดำเนินการของผู้ให้บริการ สถานะการออกจาก
โปรเซสลูก และชื่อ/ข้อความข้อผิดพลาดในการเริ่มต้น ให้ถือว่าไฟล์ไทม์ไลน์เป็นอาร์ติแฟกต์
การวินิจฉัยภายในเครื่อง และตรวจสอบก่อนแชร์ออกนอกเครื่อง
ตำแหน่งที่จัดเก็บบันทึก
แฟล็กจะส่งบันทึกไปยังไฟล์บันทึกการวินิจฉัยมาตรฐาน โดยค่าเริ่มต้นคือ:
/tmp/openclaw/openclaw-YYYY-MM-DD.logหากตั้งค่า logging.file ให้ใช้พาธนั้นแทน บันทึกอยู่ในรูปแบบ JSONL (หนึ่งออบเจ็กต์ JSON
ต่อบรรทัด) การปกปิดข้อมูลยังคงใช้ตาม logging.redactSensitive
ดู การบันทึก สำหรับการแก้ค่าพาธบันทึก การหมุนเวียน และ
โมเดลการปกปิดข้อมูลฉบับเต็ม
แยกบันทึก
เลือกไฟล์บันทึกล่าสุด:
ls -t /tmp/openclaw/openclaw-*.log | head -n 1กรองการวินิจฉัย HTTP ของ Telegram:
rg "telegram http error" /tmp/openclaw/openclaw-*.logกรองการวินิจฉัย HTTP ของ Brave Search:
rg "brave http" /tmp/openclaw/openclaw-*.logหรือเฝ้าดูบันทึกขณะจำลองปัญหา:
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"สำหรับ Gateway ระยะไกล ให้ใช้ openclaw logs --follow แทน (ดู
/cli/logs)
หมายเหตุ
- หากตั้งค่า
logging.levelสูงกว่าwarnบันทึกที่ควบคุมด้วยแฟล็กอาจถูก ระงับ ค่าเริ่มต้นinfoใช้งานได้ brave.httpบันทึก URL/พารามิเตอร์คำค้นหาของคำขอ Brave Search สถานะ/ระยะเวลา การตอบกลับ และเหตุการณ์แคชที่พบ/ไม่พบ/เขียน โดยจะไม่บันทึกคีย์ API (ซึ่งส่งเป็นส่วนหัวคำขอ) หรือเนื้อหาการตอบกลับ แต่คำค้นหาอาจเป็น ข้อมูลละเอียดอ่อน- สามารถเปิดใช้แฟล็กค้างไว้ได้อย่างปลอดภัย โดยมีผลเฉพาะกับปริมาณบันทึกของ ระบบย่อยนั้น
- ใช้ /logging เพื่อเปลี่ยนปลายทาง ระดับ และการปกปิดข้อมูลของบันทึก