dsh-otel: 將 DeepSeek Harness Session 導出爲 OpenTelemetry Spans

前言

DeepSeek Harness (DSH) 在運行過程中會持久化記錄 session log。現有的可觀測性工具(如 Jaeger、Grafana Tempo)已經具備了繪製追蹤圖的能力,但它們無法直接讀取 DSH 的日誌格式。dsh-otel 插件填補了這一空白,它作爲中間件,將 session log 翻譯爲標準的 OpenTelemetry Spans,使 DSH 的會話數據能夠接入現有的追蹤系統。

插件介紹

dsh-otel 是一個 DeepSeek Harness 插件,它將 session log 導出爲 OpenTelemetry spans。它會爲每一個 turn、step 和 tool call 創建一個 span,並將它們鏈接成一個 trace。該插件專注於單向的數據轉換:從日誌中讀取並輸出 spans,不涉及運行時觀測、緩衝或採樣。

核心功能

  • 將 session log 導出爲 OpenTelemetry spans
  • 支持 OTLP/HTTP collector 和 stdout 導出
  • 無 OpenTelemetry SDK 運行時依賴
  • 自動生成 trace id 和 span id
  • 提供 dsh-otel CLI export 工具

安裝與啓用

通過 DSH 的 CLI 安裝插件:

dsh plugin --profile web add github:jwilson411/dsh-otel

安裝後,需要在 cordis.patch.yml 中手動配置開啓。插件默認爲關閉狀態,必須設置 exporter 參數。

典型用法

在 cordis.patch.yml 中配置導出器,例如使用 OTLP/HTTP 方式:

- id: otel
  config:
    exporter: otlp-http
    endpoint: http://127.0.0.1:4318/v1/traces
    sessionLog: ~/.dsh/sessions/current.jsonl
    sessionId: sess-1

配置完成後,可以使用 CLI 工具直接導出 spans:

dsh-otel export --log ~/.dsh/sessions/current.l > spans.json

適用場景與注意

  • 默認關閉:插件默認關閉,需手動配置開啓。當未配置導出器時,插件仍會計數,但不會產生任何跨進程的數據傳輸。
  • 內容精簡:插件不包含提示詞、評估或評分功能。Span 僅包含名稱、ID、時間、Token 計數以及必要的元數據。
  • 運行時無關:它不觀察運行時,不緩衝或採樣,也不修改 session log。
  • 環境要求:需要 Node.js >= 22.14.0。

結語

dsh-otel 是一個輕量級的連接器,它不試圖替代 Jaeger 或 Tempo,而是讓 DSH 的日誌能直接被這些工具消費。對於需要在現有可觀測性棧中接入 DeepSeek Harness 調試的開發者,這是一個務實的解決方案。

目錄 | GitHub

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜