前言¶
在 DeepSeek Harness(DSH)裏用官方 @deepseek-ai/dsh-web-search-deepseek 做聯網搜索時,插件會直接 fetch 調用 api.deepseek.com/anthropic/v1/messages,走原生 server tool web_search_20250305。響應體裏的 usage 既不會進入會話日誌,也不會被上層統計看到——若你還想用 dsh-turn-cost 一類插件做整會話成本覈算,搜索這一段調用開銷相當於「黑盒」。
下面介紹社區插件 dsh-search-audit(維護者 WhAIthere,分類 admin-security):在 Host 進程裏只讀包一層 globalThis.fetch,把符合條件的搜索響應裏的 usage 追加寫入本地 JSONL,請求與響應本身不改、不截斷。
這是什麼¶
dsh-search-audit 是 DSH Host 插件(npm 包名 dsh-search-audit,當前資料中版本 0.1.0,MIT 許可證,要求 Node >=20)。它不做計費折算,只落盤原始 token 字段,價格策略交給下游消費者,避免兩處維護單價。
SkillHub 目錄頁與 GitHub 簡介一致:Read-only observer for native DeepSeek Search calls in DeepSeek Harness (dsh): appends each call’s token usage to ~/.dsh/search-usage.jsonl so accounting plugins can price it. Requests and responses are untouched.
爲什麼要單獨記搜索 usage¶
官方搜索路徑的特點(來自插件 README 說明)可以概括爲:
- 調用走 Anthropic 兼容端點
/anthropic/v1/messages,且 body 裏包含web_search_20250305。 - 同一路徑上的
usage在官方實現裏被丟棄,常規會話統計覆蓋不到。 - free-search 等普通工具不經過這條鏈路,本插件也不需要觀測它們。
因此若你的目標是「會話級 token / 成本可審計」,需要一條旁路把搜索模型的 usage 單獨記下來。
核心功能¶
旁路 fetch,只認目標請求¶
Host 啓動後插件自動安裝 fetch 包裝,無需配置、無需 API key。僅當請求 URL 爲 /anthropic/v1/messages 且 body 含 web_search_20250305 時,在響應返回後異步解析 usage 並寫日誌;其餘請求原樣透傳。
落盤格式¶
默認路徑:~/.dsh/search-usage.jsonl(每行一條 JSON)。可用環境變量覆蓋:
| 項 | 說明 |
|---|---|
DSH_SEARCH_AUDIT_LOG |
覆蓋落盤路徑(默認 ~/.dsh/search-usage.jsonl) |
成功示例(字段以 README 爲準):
{"ts":1792392407024,"endpoint":"https://api.deepseek.com/anthropic/v1/messages",
"sessionId":"session-0123…",
"model":"deepseek-v4-flash","query":"開源 批量 翻譯","maxUses":5,
"ok":true,"status":200,
"usage":{"inputTokens":93,"outputTokens":1874,"cacheReadTokens":0,"cacheWriteTokens":0},
"source":"dsh-search-audit"}
失敗調用也會記一條(ok:false、usage:null),便於區分「搜了但失敗」和「沒搜」。
可靠性與邊界¶
README 中強調的約束:
- 純旁路:不改官方代碼、不碰
app.asar;官方升級不會覆蓋本插件。 - 記賬全程異步並
try/catch,不影響原調用;寫失敗則少一條記錄,不向調用方拋錯。 - 只記錄原始
usage,不折算金額。 - 若官方改爲注入式 fetch / undici 等實現,本插件可能失效,需靠迴歸測試與真實搜索驗證。
安裝與啓用¶
社區目錄 SkillHub - dsh-search-audit 的安裝指引爲:在 DSH 中安裝插件 WhAIthere/dsh-search-audit(頁面提供「發送給 DeepSeek Harness 安裝」的說明文案)。資料中未給出獨立的 CLI 安裝命令行片段;安裝前請閱讀 GitHub 倉庫 源碼與 LICENSE,確認以當前 DSH 進程權限運行可接受。
啓用後隨 Host 啓動生效,除可選環境變量 DSH_SEARCH_AUDIT_LOG 外無額外配置項。
典型用法與驗證¶
消費 JSONL¶
下游插件(如 README 提到的 dsh-turn-cost)讀取 ~/.dsh/search-usage.jsonl,按自家價格表把 usage 併入會話成本。本插件不負責讀回或展示。
迴歸測試¶
倉庫 README 提供的測試命令(44 項迴歸,退出碼 0 表示 PASS):
node tool/dsh-search-audit/tests/run_tests.mjs
package.json 中另聲明 "test": "node tests/run_tests.mjs";以你克隆或安裝後的目錄結構爲準選用對應路徑。
適用場景與注意¶
適合:需要在 DSH 內對官方 DeepSeek 搜索做 token 級審計、並與 turn 級記賬插件對接的開發者或管理員。
注意:
- 插件在 Host 進程內包裝
globalThis.fetch,安裝前應審閱源碼與 MIT 許可證。 - 只覆蓋原生
web_search_20250305搜索鏈路,不能替代全鏈路 observability。 - SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係;插件星標在目錄線索中爲 0,選用時以實際需求與源碼爲準。
小結¶
dsh-search-audit 用最小侵入方式補上官方搜索調用丟棄的 usage,寫入 ~/.dsh/search-usage.jsonl,方便記賬類插件定價。目錄頁:https://www.skillhub.cn/plugins/WhAIthere/dsh-search-audit;源碼與說明:https://github.com/WhAIthere/dsh-search-audit。