@tonydua/dsh-web-search-exa:DeepSeek Harness 的免密鑰 Exa 搜索插件

前言

在 DeepSeek Harness(DSH)裏,給 ctx.web 接縫接入 Exa 搜索時,通常需要處理 API key、provider id 和 profile 配置。已有官方包 @deepseek-ai/dsh-web-search-exa 走 Exa REST 搜索路徑;如果沒有配置 key,這個 provider 會不可用。

@tonydua/dsh-web-search-exa 提供的是同一個接縫下的零配置變體:默認走匿名 MCP,配置 key 後自動切到 Exa REST 搜索。

插件定位

它是 npm 包 @tonydua/dsh-web-search-exa,由 TonyDua 維護,MIT 許可,要求 Node.js >=18

這個包實現 DSH 的 WebSearchProvider,註冊到 ctx.web 接縫上。現有的 web_search / web_fetch 工具、prompt sections 和結果卡片保持不變。

核心能力

  • 默認免 key:搜索通過 Exa 託管 MCP 服務 mcp.exa.ai/mcp,不發送憑證。
  • 有 key 自動切換 REST:設置 EXA_API_KEY 後,自動使用 Exa 的 POST /search REST API。
  • 接縫兼容:作爲 drop-in provider 接入 dsh ctx.web,不改變現有 web_search / web_fetch 工具行爲。
  • 可切換 provider id:通過 providerId 與官方 @deepseek-ai/dsh-web-search-exa 在同一 profile 共存。
  • npm 可用:MIT 許可,ESM,bundled types。

安裝與啓用

先安裝到目標 dsh profile:

dsh plugin --profile web add @tonydua/dsh-web-search-exa

如果沒有 API key,官方 DeepSeek 搜索 provider 不可用,DSH seam 會自動選擇這個 provider,無需配置 key。

如果已經配置了 Exa API key,需要在 $DSH_HOME/profiles/web/cordis.patch.yml 中顯式選擇 Exa:

- id: web
  name: '@deepseek-ai/dsh-web'
  config:
    searchProvider: exa

也可以在運行時通過環境變量選擇:

DSH_WEB_SEARCH_PROVIDER=exa

如果是本地開發 checkout,可以使用路徑安裝:

dsh plugin --profile web add ../plugins/dsh-web-search-exa

安裝後,現有的 web_search 工具會通過這個 provider 工作,不需要額外修改工具配置。

典型配置

這個 provider 暴露的配置項包括:

providerId
apiKey
apiKeyEnv
apiURL
mcpURL
searchType
numResults
highlightsPerResult

如果只想從環境變量讀取 Exa key,可以配置 apiKeyEnv

apiKeyEnv: EXA_API_KEY

如果希望它作爲匿名 provider 與官方包共存,需要給它一個不同的 provider id,例如:

providerId: exa-anon

然後在 web seam 中選擇這個 id:

searchProvider: exa-anon

也可以運行時選擇:

DSH_WEB_SEARCH_PROVIDER=exa-anon

與官方包共存

@tonydua/dsh-web-search-exa@deepseek-ai/dsh-web-search-exa 都默認註冊 provider id exa,並使用相同的 cordis plugin name web-search-exa

如果兩個包都安裝到同一個 profile,且不改動配置,DSH 啓動時會以 WEB_DUPLICATE_PROVIDER 報錯;這裏沒有靜默覆蓋。

共存方式是顯式切換:

1、官方 @deepseek-ai/dsh-web-search-exa 繼續使用 exa
2、給本插件配置不同的 providerId,例如 exa-anon
3、在 web seam 或 $DSH_WEB_SEARCH_PROVIDER 中選擇 exa-anon;如果要使用官方包,則選擇 exa

注意事項

匿名 MCP 路徑不發送憑證,並受 Exa 的匿名使用速率限制。如果發生 HTTP 429,會以 WEB_PROVIDER_ERROR 暴露,並提示配置 API key;配置 key 後也會自動切到 REST 路徑。

DSH 宿主 profile 需要保證 @deepseek-ai/dsh-tools 解析到同一個物理包實例;這個 provider 本身不依賴它。如果宿主 profile 的其他插件以普通嵌套依賴方式引入 @deepseek-ai/dsh-tools,應先修正依賴聲明,或讓 profile 的包管理器解析共享實例。

該插件會以當前 dsh 進程權限運行。安裝前請檢查源碼、依賴和 MIT 許可證,確認符合你的使用要求。

鏈接

GitHub 倉庫:https://github.com/TonyDua/dsh-web-search-exa

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

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

小夜