前言¶
在 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 路由和前端半區註冊結合的方式實現功能,適合需要在調試或生產環境中確認模型版本的開發者。