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 แบบมีโครงสร้าง (ดูด้านล่าง)

เปิดใช้ผ่านการกำหนดค่า

json
{  "diagnostics": {    "flags": ["telegram.http"]  }}

หลายแฟล็ก:

json
{  "diagnostics": {    "flags": ["telegram.http", "brave.http", "gateway.*"]  }}

เขียนทับด้วยตัวแปรสภาพแวดล้อม (ครั้งเดียว)

bash
OPENCLAW_DIAGNOSTICS=telegram.http,brave.http

ค่าจะถูกแยกด้วยเครื่องหมายจุลภาคหรือช่องว่าง ค่าพิเศษ:

ค่า ผล
0, false, off, none ปิดใช้ทุกแฟล็ก รวมถึงเขียนทับการกำหนดค่าด้วย
1, true, all, * เปิดใช้ทุกแฟล็ก

OPENCLAW_DIAGNOSTICS=0 จะปิดใช้แฟล็กจากทั้งตัวแปรสภาพแวดล้อมและการกำหนดค่าสำหรับ โปรเซสนั้น ซึ่งมีประโยชน์เมื่อต้องการระงับแฟล็กตัววิเคราะห์ประสิทธิภาพที่เปิดค้างไว้ในการกำหนดค่าชั่วคราว โดยไม่ต้องแก้ไขไฟล์

แฟล็กตัววิเคราะห์ประสิทธิภาพ

แฟล็กตัววิเคราะห์ประสิทธิภาพควบคุมช่วงการจับเวลาแบบเบา และไม่เพิ่มภาระเมื่อปิดอยู่

เปิดใช้ช่วงทั้งหมดที่ควบคุมด้วยแฟล็กตัววิเคราะห์ประสิทธิภาพสำหรับการรัน Gateway หนึ่งครั้ง:

bash
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway run

เปิดใช้เฉพาะช่วงตัววิเคราะห์ประสิทธิภาพการส่งต่อการตอบกลับ:

bash
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway run

เปิดใช้เฉพาะช่วงตัววิเคราะห์ประสิทธิภาพการเริ่มต้น/เครื่องมือ/เธรดของ Codex app-server:

bash
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway run

profiler เปิดใช้ทั้งตัววิเคราะห์ประสิทธิภาพการตอบกลับและตัววิเคราะห์ประสิทธิภาพ Codex ให้ใช้ ชื่อแฟล็กแบบระบุขอบเขตเพื่อเปิดใช้เพียงรายการเดียว

หรือตั้งค่าในการกำหนดค่า:

json
{  "diagnostics": {    "flags": ["reply.profiler", "codex.profiler"]  }}

รีสตาร์ต Gateway หลังเปลี่ยนแฟล็กการกำหนดค่า หากต้องการปิดใช้แฟล็กตัววิเคราะห์ประสิทธิภาพ ให้นำแฟล็กออกจาก diagnostics.flags แล้วรีสตาร์ต หรือเริ่มโปรเซสด้วย OPENCLAW_DIAGNOSTICS=0 เพื่อเขียนทับแฟล็กการวินิจฉัยทั้งหมดสำหรับการรันครั้งนั้น

อาร์ติแฟกต์ไทม์ไลน์

แฟล็ก timeline (ชื่อแทน: diagnostics.timeline) จะเขียนเหตุการณ์จับเวลาการเริ่มต้น และรันไทม์แบบมีโครงสร้างเป็น JSONL สำหรับชุดทดสอบ QA ภายนอก:

bash
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway run

หรือเปิดใช้ในการกำหนดค่า:

json
{  "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 จำนวน การขึ้นต่อกัน ตัวอย่างความล่าช้าของลูปเหตุการณ์ ชื่อการดำเนินการของผู้ให้บริการ สถานะการออกจาก โปรเซสลูก และชื่อ/ข้อความข้อผิดพลาดในการเริ่มต้น ให้ถือว่าไฟล์ไทม์ไลน์เป็นอาร์ติแฟกต์ การวินิจฉัยภายในเครื่อง และตรวจสอบก่อนแชร์ออกนอกเครื่อง

ตำแหน่งที่จัดเก็บบันทึก

แฟล็กจะส่งบันทึกไปยังไฟล์บันทึกการวินิจฉัยมาตรฐาน โดยค่าเริ่มต้นคือ:

Code
/tmp/openclaw/openclaw-YYYY-MM-DD.log

หากตั้งค่า logging.file ให้ใช้พาธนั้นแทน บันทึกอยู่ในรูปแบบ JSONL (หนึ่งออบเจ็กต์ JSON ต่อบรรทัด) การปกปิดข้อมูลยังคงใช้ตาม logging.redactSensitive ดู การบันทึก สำหรับการแก้ค่าพาธบันทึก การหมุนเวียน และ โมเดลการปกปิดข้อมูลฉบับเต็ม

แยกบันทึก

เลือกไฟล์บันทึกล่าสุด:

bash
ls -t /tmp/openclaw/openclaw-*.log | head -n 1

กรองการวินิจฉัย HTTP ของ Telegram:

bash
rg "telegram http error" /tmp/openclaw/openclaw-*.log

กรองการวินิจฉัย HTTP ของ Brave Search:

bash
rg "brave http" /tmp/openclaw/openclaw-*.log

หรือเฝ้าดูบันทึกขณะจำลองปัญหา:

bash
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 เพื่อเปลี่ยนปลายทาง ระดับ และการปกปิดข้อมูลของบันทึก

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

Was this useful?
On this page

On this page