前言¶
在 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 /searchREST 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