Diagnostics

診斷旗標

診斷旗標可讓你啟用目標式除錯記錄,而不必到處開啟詳細記錄。旗標是選擇性啟用,除非子系統檢查它們,否則不會有任何作用。

運作方式

  • 旗標是字串(不區分大小寫)。
  • 你可以在設定中啟用旗標,或透過環境變數覆寫。
  • 支援萬用字元:
    • telegram.* 會比對 telegram.http
    • * 會啟用所有旗標

透過設定啟用

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

多個旗標:

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

變更旗標後重新啟動 Gateway。

環境變數覆寫(一次性)

OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload

停用所有旗標:

OPENCLAW_DIAGNOSTICS=0

時間軸成品

timeline 旗標會為外部 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=1OPENCLAW_DIAGNOSTICS=allOPENCLAW_DIAGNOSTICS=* 也會啟用時間軸,因為它們會啟用每個診斷旗標。當你只需要 JSONL 計時成品時,請優先使用 timeline

時間軸記錄使用 openclaw.diagnostics.v1 信封。事件可包含程序 ID、階段名稱、區段名稱、持續時間、Plugin ID、相依項目計數、事件迴圈延遲取樣、提供者操作名稱、子程序結束狀態,以及啟動錯誤名稱/訊息。請將時間軸檔案視為本機診斷成品;在分享至你的機器外部之前先檢查它們。

記錄位置

旗標會將記錄發出至標準診斷記錄檔。預設為:

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

如果你設定了 logging.file,請改用該路徑。記錄是 JSONL(每行一個 JSON 物件)。仍會根據 logging.redactSensitive 套用遮蔽。

擷取記錄

選取最新的記錄檔:

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

篩選 Telegram HTTP 診斷:

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

篩選 Brave Search HTTP 診斷:

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 請求 URL/查詢參數、回應狀態/計時,以及快取命中/未命中/寫入事件。它不會記錄 API 金鑰或回應本文,但搜尋查詢可能具敏感性。
  • 旗標可以安全地保持啟用;它們只會影響特定子系統的記錄量。
  • 使用 /logging 來變更記錄目的地、層級與遮蔽。

相關