dsh-deepseek-search-account:第三方對話網關下用 DeepSeek 賬號恢復 web_search / web_fetch

前言

在 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 覈實,插件主要做這些事:

  1. 在 ctx.web 上註冊搜索 provider deepseek-account-search 與抓取 provider deepseek-account-fetch。
  2. 搜索(默認 mode: search-api):對官方接口 POST https://api.deepseek.com/v1/tools/search 發起請求(約 0.5–1 秒/次),返回 title、url、snippet、date;不額外佔用對話模型的輔助輪次與 token。
  3. 抓取:對 POST https://api.deepseek.com/v1/tools/fetch 發起請求,將頁面正文以 Markdown 形式返回,替代內置匿名 http 抓取路徑(可在配置裏只改搜索、保留 fetchProvider: http)。
  4. 保留 legacy 後端 mode: messages(Anthropic 兼容 Messages + web_search_20250305 服務端工具),作爲顯式降級選項。
  5. 通過包內 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 可恢復,且與聊天訂閱解耦。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜