dsh-fingerprint-show:在 Web UI 指標行中顯示模型指紋

前言

在 DeepSeek Harness (DSH) 的開發流程中,適配器將提供方的 SSE 流翻譯成內部 StreamChunk 協議時,響應級的元數據(包括 system_fingerprint)通常會被丟棄。這意味着開發者很難在 Web UI 中確認當前回覆實際使用的模型部署版本。dsh-fingerprint-show 插件通過捕獲這一指紋,並將其以純文本形式展示在每條 AI 回覆的指標行末尾,解決了驗證模型部署一致性的問題。

這是什麼

由 Bortor 維護的 DSH 客戶端插件。它捕獲每次模型調用的提供方模型指紋(OpenAI 兼容的 system_fingerprint 字段),並在 Web UI 中每條 AI 回覆的指標行末尾以純文本顯示該指紋。

核心功能

  • 完整指紋文本:以純文本追加該次調用實際的模型指紋(如 … 127 tok/s · 0123456789abcdef0123456789abcdef),完整不截斷,無按鈕或圖標。
  • 樣式與原生一致:使用 14px 字體、24px 行高、三級灰色(--dsw-alias-label-tertiary)以及 10px 圓點間距,與原生指標文本像素級統一。
  • 懸停同步:指紋與時間、用時等指標同生同隱,懸停或聚焦消息時一起淡入(80ms 過渡),移開一起消失。
  • 歷史保留:中途切換模型後,每條回覆各自標註當時實際生效的部署。
  • 零侵入:不修改會話日誌、不進入模型上下文、不影響 KV 緩存。

安裝與啓用

前置條件:已安裝 dsh CLI 與 pnpm。

git clone <this-repo> dsh-fingerprint-show
cd dsh-fingerprint-show
pnpm install
dsh plugin --profile web add <path-to-checkout>

注意:add 的參數是插件包目錄本身。在倉庫目錄裏執行 add ./dsh-fingerprint-show 會把鏈接指到不存在的子目錄(pnpm 會照常記錄依賴但 bundle 層不會生效)。裝好後用 dsh --profile web --dump-config 確認輸出裏有 # == dsh-fingerprint-show 一層。

重啓 dsh web 後,把鼠標移到 AI 回覆上,指標行末尾會出現 · 完整指紋 文本。

插件只在 web profile 下激活(依賴其 webServer 服務);headless profile 中保持休眠。

配置

在 profile 的 cordis.patch.yml 或 --patch 覆蓋層中按 id 覆蓋該行配置。注意 patch 會整行替換 config,覆蓋時請重述全部需要的鍵。

- id: fingerprint-show
  config:
    pathPrefix: /dsh-fingerprint-show   # HTTP 路由前綴
    matchPatterns:                      # 對請求 URL 做子串匹配
      - chat/completions
    maxObservations: 500                # 進程內環形緩衝容量

診斷

瀏覽器直接訪問 /dsh-fingerprint-show/api/observations(同源)可查看捕獲結果:

{
  "observations": [ { "fingerprint": "…", "model": "…", "sessionId": "…", "time": 123 } ],
  "stats": {
    "matchedResponses": 2,
    "capturedFingerprints": 2,
    "parsedChunks": 2,
    "inflightCalls": 0,
    "totalStored": 2
  }
}

若 matchedResponses > 0 而 capturedFingerprints = 0,說明提供方響應裏沒有 system_fingerprint(自建/代理端點常見);lastPayloadSample 會給出最近一次無指紋響應的首個 SSE 載荷樣本。

限制

  • 併發歸屬:併發同模型調用(如同時運行的 subagent)之間按「時間最近」歸因,極端併發下可能歸屬到相鄰調用——但指紋本身標識的是模型部署版本,值始終正確。
  • 輔助調用排除:輔助調用(會話標題、壓縮)帶 purpose 標記,匹配時排除,不參與消息標註。
  • 端點缺失:指紋由提供方返回,非 OpenAI 兼容的自建端點可能不攜帶該字段(此時不顯示)。
  • 僅指標行顯示:只在有指標行(timing)的消息上顯示,無指標文本的消息不顯示指紋。

開發

pnpm install
pnpm run build     # esbuild → lib/index.js (Node ESM) + lib/client.js (瀏覽器 lazy-CJS)
pnpm test          # 主機流水線 + 客戶端 bundle 冒煙測試

總結

該插件通過在 Web UI 層面捕獲並展示 system_fingerprint,讓開發者能夠直觀地驗證模型調用的部署一致性。它採用零侵入的設計,通過 HTTP 路由和前端半區註冊結合的方式實現功能,適合需要在調試或生產環境中確認模型版本的開發者。

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

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

小夜