前言¶
在 DeepSeek Harness(DSH)裏,對話模型可以走 DeepSeek 賬號,也可以走第三方訂閱或網關,例如 OpenCode Go(opencode.ai/zen/go)、其他 Anthropic 兼容端點,或 pi-ai 等 provider。聊天照常進行,但內置的 web_search、web_fetch 是否還能用,取決於 harness 裏搜索 provider 如何判斷「當前會話」的模型路由。
內置實現(dsh-web-search-deepseek、dsh-web-deepseek-api)只有在發起會話的 provider 爲 deepseek-account 時,纔會用已登錄的 DeepSeek 賬號做搜索;走 OpenCode Go 等路由時,會回退到 DEEPSEEK_API_KEY。未配置 API Key 時,常見報錯是:DeepSeek search has no API key for "DEEPSEEK_API_KEY"。下面介紹社區插件 dsh-deepseek-search-account(維護者 Chip-G0202,分類:聯網工具),它把搜索與抓取改走官方 Search / Fetch API,並優先使用 DSH 裏已登錄的 DeepSeek 賬號,從而在不依賴 DEEPSEEK_API_KEY 的前提下恢復聯網工具。
這是什麼¶
dsh-deepseek-search-account 是一個體量很小的 DSH 插件(package 版本 0.3.0,MIT 許可證)。定位是:當聊天模型由外部訂閱或網關提供、而你在 DSH 設置裏仍登錄了 DeepSeek 賬號時,讓內置 web_search 與 web_fetch 繼續工作;搜索與頁面抓取在官方 DeepSeek Search / Fetch API 上執行,消耗的是該賬號的聯網配額,不佔用 OpenCode Go 等聊天訂閱的 token。
目錄頁:https://www.skillhub.cn/plugins/Chip-G0202/dsh-deepseek-search-account
源碼與說明:https://github.com/Chip-G0202/dsh-deepseek-search-account
爲什麼需要它¶
內置 provider 會用類似下面的條件判斷是否會話屬於 DeepSeek 賬號路由:
ctx.get("agents")?.currentInitiator()?.session.requestContext()?.provider === "deepseek-account"
第三方網關作爲 chat provider 時,上述檢查不成立,內置邏輯會嘗試 DEEPSEEK_API_KEY;沒有 Key 則 web_search 失敗。本插件在每次 search / fetch 時通過 ctx.deepseekAccount.resolveToken(endpoint) 解析賬號 token,不依賴會話的 model route;僅在賬號登錄不可用時纔回退到 DEEPSEEK_API_KEY(Bearer)。
核心功能¶
經 README 覈實,插件主要做這些事:
- 在
ctx.web上註冊搜索 providerdeepseek-account-search與抓取 providerdeepseek-account-fetch。 - 搜索(默認
mode: search-api):對官方接口POST https://api.deepseek.com/v1/tools/search發起請求(約 0.5–1 秒/次),返回title、url、snippet、date;不額外佔用對話模型的輔助輪次與 token。 - 抓取:對
POST https://api.deepseek.com/v1/tools/fetch發起請求,將頁面正文以 Markdown 形式返回,替代內置匿名http抓取路徑(可在配置裏只改搜索、保留fetchProvider: http)。 - 保留 legacy 後端
mode: messages(Anthropic 兼容 Messages +web_search_20250305服務端工具),作爲顯式降級選項。 - 通過包內
cordis.patch.yml註冊上述 provider,並將web.searchProvider/web.fetchProvider固定指向它們;包聲明dsh.bundle,dsh plugin add會寫入 profile bundles 並在啓動時應用 patch。
適用與不適用¶
適合安裝(需同時滿足 README 中的條件):
- DSH 對話模型來自第三方訂閱或網關,而非 DeepSeek Account 模型。
- 已在 DSH(Settings → Account)登錄 DeepSeek 賬號,且允許該賬號用於搜索與抓取。
- 內置
web_search因缺少DEEPSEEK_API_KEY報錯,且你無意或無法配置 DeepSeek API Key。
不必安裝:
- 聊天模型本身就是 DeepSeek Account 模型(內置已用賬號登錄搜索)。
- 已保存
DEEPSEEK_API_KEY,且可在 Plugins → Built-in plugin settings → Web search 啓用內置 Search API。 - 已使用其他聯網插件(Exa、Tavily、SearXNG、智譜等)且滿足需求。
安裝與啓用¶
插件要求 Node.js >= 22。安裝後需重啓 DSH(profile bundle 列表變更在啓動時生效;Desktop 使用 desktop profile)。
從 GitHub 安裝到 profile¶
dsh plugin --profile desktop add github:Chip-G0202/dsh-deepseek-search-account
# 純 `dsh web` 服務時使用:--profile web
本地路徑或 Release 包¶
dsh plugin --profile desktop add /path/to/dsh-deepseek-search-account
dsh plugin --profile desktop add https://github.com/Chip-G0202/dsh-deepseek-search-account/releases/latest/download/dsh-deepseek-search-account.tgz
手動寫入 cordis.patch.yml(可選)¶
若不想以 package 形式安裝,可將插件目錄放到穩定路徑,在 ~/.dsh/profiles/<profile>/cordis.patch.yml 增加兩行(路徑改爲你本機實際位置):
- insert:
- id: web-search-deepseek-account
name: '/path/to/dsh-deepseek-search-account/provider.js'
config:
mode: search-api
count: 10
- id: web
name: '@deepseek-ai/dsh-web'
config:
searchProvider: deepseek-account-search
fetchProvider: deepseek-account-fetch
僅替換搜索、抓取仍用本地匿名傳輸時,可將 fetchProvider 設爲 http。
說明:DSH 可熱加載 profile 配置,但若只改已有行的模塊路徑,不會重新 import 插件模塊;修改 provider.js 後應重啓 DSH,或對對應行切換 disabled: true 再改回。
配置¶
以 bundle 安裝時,默認配置在包內 cordis.patch.yml。可在 profile 的 patch 裏用相同 id 覆蓋,例如:
- id: web-search-deepseek-account
name: dsh-deepseek-search-account
config:
mode: search-api
count: 8
| 配置項 | 默認值 | 含義 |
|---|---|---|
mode |
search-api |
search-api 爲官方 Search API;messages 爲 Messages + web_search_20250305 |
baseURL |
https://api.deepseek.com/v1/tools |
Search/Fetch API 基址(自動追加 /search、/fetch) |
count |
10 |
單次搜索返回條數,1–50;工具側 searchMaxResults 更小時以其爲準 |
sendOriginalQuestion |
true |
是否發送 ori_question(會話最近用戶提示,≤128 字符) |
fetchMaxChars |
100000 |
單次 fetch 返回 Markdown 字符上限 |
fetchTimeoutMs |
30000 |
單次 Fetch API 超時(毫秒) |
apiKey / apiKeyEnv |
未設置 / DEEPSEEK_API_KEY |
賬號不可用時 API Key 回退 |
messagesBaseURL、model 等 |
見 README | 僅 mode: messages 時使用 |
典型用法¶
安裝並重啓後,無需單獨調用插件 API:會話裏 agent 繼續使用 harness 內置工具 web_search 與 web_fetch 即可,底層會走本插件註冊的 deepseek-account-search / deepseek-account-fetch。
使用前請確認 DSH 已登錄 DeepSeek 賬號;對話仍由 OpenCode Go 等第三方 provider 承擔,搜索與抓取賬單與限流落在 DeepSeek 賬號側。
計費、配額與安全注意¶
- 自 2026-11-01 00:00(北京時間)起,Search / Fetch API 按成功請求計費:約 5 元 / 1000 次成功請求(約 0.005 元/次);搜索僅在有非空
results時計費,fetch 僅在返回頁面內容時計費;失敗與超時不計費。詳見官方 Search & Fetch 指南。 - 搜索與抓取不消耗聊天模型 token,也不動用 OpenCode Go 等聊天訂閱;僅涉及 DeepSeek 賬號的聯網配額。Search 限流約 100 QPS,Fetch 約 25 QPS。
mode: messages每次搜索會多一輪輔助模型調用(數千 input token、約 4–6 秒),僅建議作回退。- 賬號 token 經 DSH 憑證服務按請求讀取;插件以當前 dsh 進程權限運行。安裝前請自行審閱源碼與 MIT 許可證,社區目錄(SkillHub)與 DeepSeek / 幻方無官方從屬關係,不宜當作官方應用商店。
結尾¶
dsh-deepseek-search-account 解決的是「聊天走第三方網關、聯網仍想用 DeepSeek 賬號官方 Search/Fetch、又不想配 DEEPSEEK_API_KEY」這一組合場景。經過上面的安裝與賬號登錄步驟,內置 web_search / web_fetch 可恢復,且與聊天訂閱解耦。