跳轉到主要內容

OpenTelemetry

Copilot CLI 內建以 OpenTelemetry 提供的追蹤功能。只要在 SDK 端進行設定,即可收集 CLI 程序的追蹤資料。

模型呼叫遙測

透過 CLI 的 assistant.usage 事件,可取得請求正規化前與工具呼叫相關的計數。
model.call_failure 事件的 data['requestFingerprint'] 可能包含失敗請求的結構資訊,例如訊息數量、圖片與工具呼叫數量等,但不包含請求內容。errorCode 與 errorType 為來自伺服器的值,供受限遙測使用。SDK 會原樣保留事件資料。請勿將這些值或 errorMessage 轉送至未經核准的日誌或外部服務。

接收 GitHub telemetry 事件

除了 OpenTelemetry 之外,也可以透過用戶端選項 onGitHubTelemetry(或 on_github_telemetry)接收 GitHub telemetry 事件。設定 handler 後,SDK 會在連線時以及每次建立或恢復 Session 時啟用轉送。用戶端 handler 的優先順序高於 Session 設定中的 enableGitHubTelemetryForwarding: false。

基本用法

啟用 CLI 程序追蹤

在 config/copilot.php 加入 telemetry 設定,或直接以選項指定。
或直接指定。
直接使用 Client 時:

TelemetryConfig 選項

W3C Trace Context 傳遞

大多數使用者不需要此功能。僅使用上述 TelemetryConfig 即可收集 CLI 的追蹤資料。以下為進階功能,適用於在應用程式端建立自訂 OpenTelemetry span,並希望與 CLI 的 span 顯示在同一分散式追蹤中的情況。
SDK 會自動將 W3C Trace Context(traceparent/tracestate)注入 session.create、session.resume、session.send 的 JSON-RPC 請求。

自動傳遞(建議)

只要安裝 open-telemetry/api 套件,追蹤 context 就會自動傳遞。
安裝後無需額外設定,應用程式 span 與 CLI span 就會連結至同一個分散式追蹤。

自訂 Provider

若要使用自訂的追蹤 context 取得邏輯:

SDK → CLI(對外)

以下 RPC 呼叫會自動注入 traceparent/tracestate。
  • session.create — 建立 Session 時
  • session.resume — 恢復 Session 時
  • session.send — 傳送訊息時

CLI → SDK(對內)

當 CLI 呼叫工具時,工具處理器的 $invocation 陣列中會包含追蹤 context。
若安裝了 open-telemetry/api,工具處理器執行中的 OpenTelemetry context 會自動連結至 CLI 的 span。不需要明確使用 traceparent。

依賴套件

open-telemetry/api 已列於 composer.json 的 suggest。即使未安裝,SDK 本身仍可正常運作。
最新資訊請參閱 GitHub 儲存庫。
最後修改於 2026年10月26日