前言¶
DeepSeek Harness (DSH) 內置的 web_search provider 將端點和憑據寫死爲官方 DeepSeek。如果用戶配置了代理或使用第三方網關(如 OpenRouter、Zhipu AI),搜索功能會出現認證失敗。dsh-web-search-session-follow 是一個 DSH web_search provider 插件,它讀取當前會話路由的模型 provider,使用該 provider 的端點、憑據和協議方言完成搜索,並在未識別時回退至內置官方方案。
核心功能¶
- 運行時優先級鏈:每次搜索按優先級列表從上到下嘗試,第一個成功的路由生效。支持特殊鍵
session跟隨當前會話路由。優先級可在 Web GUI 設置面板中實時調整並持久化。 - 會話跟隨路由:通過
agents.currentInitiator().session.requestHeader().config實時讀取當前會話的{provider, model},不緩存、不猜測。 - 方言路由表:支持三種協議:
anthropic-web-search:Anthropic Messages + server toolweb_search_20250305openrouter-online:chat/completions + 服務端 web 插件,解析url_citation註釋zai-web-search:智譜 bigmodel Anthropic 兼容端點,web_search_prime引擎,解析tool_result塊的字符串化 JSON 內容
- 官方方案回退:優先級鏈全部失敗時,回退至內置官方路由(同
@deepseek-ai/dsh-web-search-deepseek默認值)。可通過fallback: none關閉回退。 - 設置 UI 面板:Web GUI 設置彈窗側欄「Web 搜索」提供優先級排序、回退策略切換、單路由連通性測試(真實發起一次搜索)。
- 憑據分平面:解析順序爲字面
apiKey→ credentials 服務(apiKeyEnv引用)→ 環境變量。聊天 key 與搜索 key 各管各的。 - 模型跟隨:路由未指定
model時,anthropic 和 openrouter 方言使用會話當前模型,zai 方言固定使用路由模型。 - 調用審計:每次搜索追加一行 JSON 到
<DSH_HOME>/web-search-session-follow/audit.jsonl(包含 provider/endpoint/fallback/失敗跳 attempts 標記,不含密鑰)。
安裝與啓用¶
前置:已安裝 DeepSeek Harness(developer preview,dsh web 命令可用)。
1、本地安裝插件:
dsh plugin --profile web add /path/to/dsh-web-search-session-follow
2、在 profile 的 cordis.patch.yml 中覆蓋搜索提供者配置:
- id: web
config:
searchProvider: session-follow
3、重啓 dsh web 生效。如需回滾,刪除上述覆蓋段即可恢復內置行爲。
配置示例¶
插件自帶默認路由表,可在 cordis.patch.yml 或安裝副本中調整。
config:
priority: [zai-coding-cn, openrouter]
fallback: official
routes:
zai-coding-cn:
protocol: zai-web-search
baseURL: https://open.bigmodel.cn/api/anthropic/v1
apiKeyEnv: ZAI_CODING_CN_API_KEY
model: glm-5.3-flash
deepseek-official:
protocol: anthropic-web-search
baseURL: https://api.deepseek.com/anthropic/v1
apiKeyEnv: DEEPSEEK_API_KEY
model: deepseek-v4-flash
openrouter:
protocol: openrouter-online
apiKeyEnv: OPENROUTER_API_KEY
maxResults: 5
字段說明:
* priority:路由鍵數組,可包含 session。來源優先級:設置 UI 保存的 config.json > 插件 config 種子 > ["session"]。
* protocol:三選一(anthropic-web-search、openrouter-online、zai-web-search)。
* baseURL:anthropic/zai 方言自動追加 /messages,openrouter 方言追加 /chat/completions。
* apiKeyEnv / apiKey:憑據引用名 / 字面密鑰(字面優先)。
* model:缺省跟隨會話模型(zai 方言固定兜底 glm-5.3-flash)。
適用場景與注意事項¶
- 適用場景:使用自定義網關(如 OpenRouter、Zhipu AI)或代理的用戶。插件允許按 provider 切換搜索端點和憑據。
- 會話日誌安全:本插件絕不向會話日誌寫自定義事件類型。如果日誌被污染(例如 v0.1.0 版本曾寫入
web/session-follow-search-request事件),會話可能無法從磁盤重開。修復方法:給對應事件行補"ignorable":true,或等待上游提供 ignorable 機制。 - 成本:三種方言均計費爲一次完整模型調用。
- 依賴:零運行時依賴。
結尾¶
該插件通過將搜索邏輯與會話路由解耦,解決了多網關環境下搜索功能不可用的問題。其可視化的設置面板和回退機制降低了配置門檻。更多細節可查閱插件目錄或源碼倉庫。