前言¶
DeepSeek Harness(DSH)的設計理念是「一切皆插件」。當內置搜索提供方無法滿足特定場景需求時,開發者需要接入外部 API。這個插件通過把字節跳動 feedcoop 的 global_search API 接入 DSH 的 ctx.web 能力接縫,爲 DSH 增加了豆包的聯網搜索能力。
插件介紹¶
這是一個樹外 bundle 插件。它向 ctx.web 註冊了一個 WebSearchProvider(id: doubao),並自帶 cordis.patch.yml 層。安裝後,它會自動掛載提供方並將默認搜索選擇切到 doubao。插件零運行時依賴,不修改 harness 源碼。
安裝與啓用¶
在 harness 倉庫根目錄執行以下命令:
dsh plugin --profile web add github:JayLi52/dsh-web-search-doubao
安裝過程會自動把包鏈接進 profile、把 bundle 層加入 dsh.profile.bundles、掛載提供方並切換 searchProvider: doubao。裝完即用,無需手改配置。
配置 Token¶
安裝後需要提供 feedcoop Bearer token。推薦使用環境變量方式。
- 在
$DSH_HOME/.env(Windows 默認C:\Users\<你>\.dsh\.env)中寫入一行:
DOUBAO_SEARCH_API_KEY=<你的-token>
- 重啓
dsh web(環境變量在啓動時加載)。
之後對配置的修改(除 token 外)可以通過熱重載生效。也可以在 profile 的 cordis.patch.yml 裏內聯 token,但改 env 需重啓。
驗證配置結果:
dsh --profile web --dump-config | grep -A3 web-search-doubao
配置項¶
| 字段 | 默認值 | 說明 |
|---|---|---|
apiKey |
'' |
Bearer token;爲空時回退讀取 $<apiKeyEnv>。兩者皆空 → 提供方不可用 |
apiKeyEnv |
DOUBAO_SEARCH_API_KEY |
存放 token 的環境變量名 |
baseURL |
https://open.feedcoopapi.com |
API 基址 |
docCount |
10 |
請求未帶 maxResults 時的默認 DocCount |
maxSnippetLength |
300 |
每條結果摘要長度上限 |
使用示例¶
在 Web UI 新會話裏讓模型調用 web_search 工具,搜索請求即會走豆包提供方。
如果懷疑搜索沒走豆包,可以使用 --patch 覆蓋層投毒 key 跑一次性任務:
dsh --profile headless --patch ./wrong-key-test.yml "用 web_search 搜 海淀必去景點"
常見問題¶
工具調用報 unknown tool "",模型只剩 thinking 死循環
這不是本插件的問題。harness 的 llm-deepseek 適配器對續包帶空串 id/name 的流(DashScope 兼容模式等 OpenAI 兼容端點)有解析 bug,會把工具名覆蓋成空串。修復見 deepseek-harness packages/llm/llm-deepseek/src/translate.ts(僅當非空才覆蓋)。用 DeepSeek 官方端點不受影響。
Doubao API error: invalid_api_key
token 錯或未設置。檢查 $DSH_HOME/.env 或 patch 裏的 apiKey,改 env 需重啓。
WEB_PROVIDER_CONFIGURED_UNAVAILABLE
選了 doubao 但 available() 爲 false,即沒配 token。
WEB_PROVIDER_AMBIGUOUS
多個可用提供方且沒配 searchProvider,顯式指定 id。
改了 cordis.patch.yml 沒生效
patch 是熱重載的;若整層解析失敗會保留舊樹並打日誌,檢查 YAML 是否爲頂層數組。
注意事項¶
分享給別人時,profile 目錄本身不可移植(package.json 裏是本機 link: 絕對路徑),模型 key(DEEPSEEK_API_KEY 或 Models 頁配置)由對方自備。
總結¶
該插件爲 DeepSeek Harness 提供了豆包的聯網搜索能力,安裝簡單,零依賴,適合需要增強 Web 搜索功能的 DSH 場景。