前言¶
DSH (DeepSeek Harness) 的核心設計理念是“一切皆插件”。默認的 web_search 工具調用 DeepSeek 官方的按量計費後端。如果你需要更多搜索次數且不想付費,或者希望在本地環境中運行搜索邏輯,dsh-freeweb 插件提供了一個基於 Parallel 免費搜索後端的方案。
功能特點¶
- 真·零依賴:純全局
fetch+ 標準 JS,沒有任何import。不存在裝完缺依賴崩潰的問題。 - 完整錯誤處理:所有異常返回診斷信息,不靜默失敗。
- 組合包形態:0.2.0+ 版本聲明
dsh.bundle,支持 Web 插件頁安裝/啓停/卸載。 - 手動掛載支持:0.1.5+ 支持本地文件掛載,配置極其輕量。
- MCP 協議:基於 JSON-RPC over HTTP,直接調用 Parallel Search 免費後端。
安裝與啓用¶
本插件通過 GitHub 倉庫分發,尚未發佈到 npm。安裝前請確保 DSH 版本 ≥ 0.1.5(手動掛載)或 ≥ 0.2.0(組合包安裝),並已安裝 Node.js ≥ 18。
方式 A:插件頁安裝(推薦,DSH 0.2.0+)¶
- 打開側欄的 插件 → 添加插件。
- 輸入本目錄的絕對路徑(例如:
D:\plugins\DSH-freeweb)。 - Host 會讀取
package.json中的dsh.bundle聲明,完成安裝並自動啓用。 - 在 已安裝 分組中會出現
dsh-freeweb卡片,可進行整包啓停或卸載。
方式 B:命令行安裝¶
npx @deepseek-ai/dsh plugin --profile web add "<本目錄絕對路徑>"
這會將插件寫入 package.json 的 dsh.profile.bundles。
方式 C:手動掛載(零打包,最輕)¶
- 將
freeweb-search.js放入 profile 目錄:
~/.dsh/profiles/web/freeweb-search.js(Windows:C:\Users\<你>\.dsh\profiles\web\) - 在 profile 的
cordis.patch.yml中追加配置(注意:config是整段替換,必須包含fetchProvider):
- id: web
config:
searchProvider: freeweb
fetchProvider: http
- insert:
- id: freeweb-search
name: ./freeweb-search.js
- 重啓 DSH。
配置與驗證¶
配置要求¶
Web 行的 config 是整段替換,必須同時配置 searchProvider: freeweb 和 fetchProvider: http。若不寫 fetchProvider,會丟失 dsh-base 的默認抓取後端。
驗證方法¶
- 側欄 插件 → 已安裝,確認出現
dsh-freeweb卡片。 - 設置 → 內置插件 中檢查
include:freeweb-search狀態。 - 發起一次搜索請求。官方 DeepSeek 搜索 provider 每次都會在日誌寫入
web/deepseek-search-llm-request事件,freeweb 不寫該事件。若日誌無此條,即表示走的是 freeweb。
注意事項與限制¶
- 互斥性:手動掛載與組合包安裝互斥,會導致
WEB_DUPLICATE_PROVIDER錯誤。請二選一。 - 免費層限速:Parallel 匿名層有速率限制,遇到
HTTP 429需稍後重試。 - 索引偏好:主要索引偏英文,中文可用但質量不如英文。
- 結果形態差異:返回結構爲
url / title / publish_date / excerpts,而非官方的cited_text。模型能引用的原文片段可能會比官方少。 - 失敗處理:插件失敗時以“答案文本”形式返回診斷信息,不拋出
WebError。這是刻意的取捨,旨在保持“永不阻斷、故障透明”。
回退與故障排查¶
回退官方¶
- 插件頁/CLI:卸載組合包後,搜索自動回到官方
deepseek-official。 - 手動掛載:刪除
cordis.patch.yml中的配置塊並重啓。注意順序:先刪 patch 行,再刪文件,否則 DSH 啓動會報錯。
常見錯誤¶
WEB_DUPLICATE_PROVIDER:檢查是否同時使用了兩種安裝方式。WEB_PROVIDER_AMBIGUOUS:未顯式指定searchProvider。not-a-bundle:目錄未聲明dsh.bundle(若複製了舊版單文件需更新)。- 找不到
pnpm:方式 A/B 需要,方式 C 不需要。