Diagnostics
پرچمهای عیبیابی
پرچمهای عیبیابی، ثبت گزارش اضافی را برای یک زیرسامانه فعال میکنند، بدون اینکه
logging.level را بهصورت سراسری افزایش دهند. یک پرچم فقط زمانی اثر دارد که زیرسامانهای آن را بررسی کند.
نحوهٔ کار
- پرچمها رشتههایی بدون حساسیت به بزرگی و کوچکی حروف هستند که از
diagnostics.flagsدر پیکربندی بههمراه بازنویسی متغیر محیطیOPENCLAW_DIAGNOSTICSاستخراج، تکراریزدایی و با حروف کوچک تبدیل میشوند. name.*با خودnameو هر چیزی زیرname.مطابقت دارد (برای مثال،telegram.*باtelegram.httpمطابقت دارد).*یاallهمهٔ پرچمها را فعال میکند.- پس از تغییر
diagnostics.flagsدر پیکربندی، Gateway را راهاندازی مجدد کنید؛ این مقدار بهصورت آنی بارگذاری مجدد نمیشود.
پرچمهای شناختهشده
| پرچم | فعال میکند |
|---|---|
telegram.http |
ثبت خطاهای HTTP مربوط به Telegram Bot API |
brave.http |
ثبت درخواست، پاسخ و حافظهٔ نهان Brave Search |
profiler |
پروفایلر مرحلهٔ پاسخ و پروفایلر app-server متعلق به Codex (هر دو) |
reply.profiler |
فقط پروفایلر مرحلهٔ پاسخ |
codex.profiler |
فقط پروفایلر app-server متعلق به Codex |
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فعالکردن فقط بازههای پروفایلر راهاندازی، ابزار و رشتهٔ app-server متعلق به Codex:
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway runprofiler هم پروفایلر پاسخ و هم پروفایلر Codex را فعال میکند؛ برای فعالکردن فقط یکی،
از نامهای پرچم دارای دامنه استفاده کنید.
یا آن را در پیکربندی تنظیم کنید:
{ "diagnostics": { "flags": ["reply.profiler", "codex.profiler"] }}پس از تغییر پرچمهای پیکربندی، Gateway را راهاندازی مجدد کنید. برای غیرفعالکردن یک پرچم پروفایلر،
آن را از diagnostics.flags حذف و Gateway را راهاندازی مجدد کنید، یا فرایند را با
OPENCLAW_DIAGNOSTICS=0 آغاز کنید تا همهٔ پرچمهای عیبیابی برای آن اجرا بازنویسی شوند.
آرتیفکتهای خط زمانی
پرچم timeline (نام مستعار: diagnostics.timeline) رویدادهای زمانسنجی ساختیافتهٔ راهاندازی
و زمان اجرا را برای چارچوبهای کنترل کیفیت خارجی، بهصورت JSONL مینویسد:
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 و =* نیز خط زمانی را فعال میکنند، زیرا
همهٔ پرچمها را فعال میکنند. وقتی فقط آرتیفکت JSONL را میخواهید و نه همهٔ
پرچمهای عیبیابی دیگر را، پرچم دامنهدار timeline را ترجیح دهید.
نمونههای تأخیر حلقهٔ رویداد در خط زمانی، علاوه بر 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نشانیهای اینترنتی و پارامترهای پرسوجوی درخواست Brave Search، وضعیت و زمانبندی پاسخ و رویدادهای اصابت، عدم اصابت و نوشتن حافظهٔ نهان را ثبت میکند. این پرچم کلید API (که بهصورت سرآیند درخواست ارسال میشود) یا بدنهٔ پاسخها را ثبت نمیکند، اما عبارتهای جستوجو ممکن است حساس باشند.- فعالماندن پرچمها ایمن است؛ آنها فقط حجم گزارش زیرسامانهٔ مشخصشده را تحت تأثیر قرار میدهند.
- برای تغییر مقصد، سطح و پوشاندن اطلاعات حساس گزارشها، از /logging استفاده کنید.