前言¶
DeepSeek Harness(DSH)裏,智能體常用的聯網入口是內置的 web_search 和 web_fetch。若你希望搜索與抓取統一走 Exa,並在同一套插件裏按需打開 Exa 的深調研、帶引用答案、代碼上下文等能力,就需要把 web 層 provider 換成 Exa,而不是在對話裏臨時拼多個外部腳本。
下面介紹社區插件 dsh-exa(維護者 GoldenLoaf24h,GitHub:GoldenLoaf24h/dsh-exa)。它在 DSH 0.2.x 上把網絡檢索整體接到 Exa:內置的 web_search、web_fetch 由 Exa 提供,並額外暴露若干 exa_* 工具;分類上屬於「聯網工具」。目錄頁:skillhub.cn/plugins/GoldenLoaf24h/dsh-exa(社區站點,與 DeepSeek / 幻方無官方從屬關係)。
這是什麼¶
dsh-exa(當前 package 版本 0.1.0,MIT 許可證)的定位是:Exa web search and fetch for DeepSeek Harness —— 替換內置 web_search / web_fetch,並暴露 Exa 的高級檢索能力。
兩種接入方式在 README 裏寫得很清楚:
- 配置了
EXA_API_KEY時走 Exa REST API(https://api.exa.ai),全部能力可用。 - 沒有 key 時自動退到 Exa 託管 MCP(
https://mcp.exa.ai/mcp),搜索、抓取、代碼檢索仍可用,無需額外配置;需要 key 的能力(如exa_answer、exa_similar、exa_research、深度檢索、結構化輸出)會給出明確提示,而不是靜默降級。
核心功能¶
接管 web_search / web_fetch¶
插件自帶的 cordis.patch.yml 聲明:
- id: web
config:
searchProvider: exa
fetchProvider: exa
profile 自己的 patch 層在 bundle 層之後應用。若 profile 的 cordis.patch.yml 裏也有 - id: web,會覆蓋插件設置。要真正接管,需要把 profile 裏對應段改成與 README 一致,例如:
- id: web
name: "@deepseek-ai/dsh-web"
config:
searchProvider: exa
fetchProvider: exa
工具一覽¶
除常駐的 web_search、web_fetch 外,插件還註冊 Exa 相關工具。README 中的默認與 token 成本如下(啓動成本約 900 token):
| 工具 | 作用 | 默認 | 需要 key |
|---|---|---|---|
web_search |
內置搜索,Exa 接管 | 常駐 | 否 |
web_fetch |
內置抓取,Exa 接管 | 常駐 | 否 |
exa_research |
多來源深調研,可輪詢 | 開 | 是 |
exa_answer |
帶引用的綜合答案 | 開 | 是 |
exa_code_context |
庫與 API 的代碼示例 | 開 | 否 |
exa_tools |
按需開啓 exa_search / exa_contents / exa_similar |
常駐 | 否 |
exa_search |
完整搜索參數(類型、分類、域名、日期等) | 關 | 部分 |
exa_contents |
按 URL 批量取正文、摘要、高亮 | 關 | 部分 |
exa_similar |
找相似頁面 | 關 | 是 |
三個 schema 較大的工具(exa_search、exa_contents、exa_similar,合計 3200+ token)默認不註冊;需要域名/日期篩選或批量正文時,可由模型調用 exa_tools({ enable: ["search"] }) 等按需開啓,開啓後會保持到會話結束。不需要深調研時,也可用 exa_tools 的 disable 收起 research 等以節省 token。
配置頁(熱生效)¶
路徑:設置 → 插件 → dsh-exa。保存後下一次請求即用新值,無需重啓 DSH。
- API Key:寫入 DSH 憑證庫(
EXA_API_KEY),不寫入普通配置文件;留空表示沿用已保存的 key。 - 搜索 / 抓取默認值:影響
web_search、web_fetch的默認行爲;模型仍可通過exa_search等逐次覆蓋。 - 工具開關:控制各
exa_*是否「啓動即暴露」;改開關會清掉模型在本輪自行開/關的狀態。 - 連接:REST 地址、MCP 地址、單次請求超時。
API key 解析順序(先命中者生效):配置裏的 apiKey(字面量,不推薦)→ 憑證庫 EXA_API_KEY → 環境變量 EXA_API_KEY(含 $DSH_HOME/.env、項目 .env 等)。
安裝與啓用¶
README 給出的安裝示例爲本地路徑(開發/自託管場景):
dsh plugin --profile desktop add D:/workspace/dsh-exa/dsh-exa
安裝後在插件頁面啓用 dsh-exa。若 profile 的 cordis.patch.yml 裏寫死了別的 search provider,需按上一節改爲 exa。
運行環境要求(來自 package.json):dsh 版本 >=0.2.0 <0.3.0。
典型用法¶
- 零配置試用:不填 API Key,依賴託管 MCP 完成
web_search、web_fetch、exa_code_context等無需 key 的能力。 - 全能力:在配置頁或憑證庫寫入
EXA_API_KEY,即可使用exa_answer、exa_research、exa_similar等。 - 控 token:默認不暴露三個大 schema 工具;需要時再
exa_tools({ enable: ["search"] }),或在配置頁預先打開對應開關。 - 開發自測(維護者腳本,需網絡時用於 live 測試):
node test/offline.mjs # 配置、工具 schema、keyless 參數轉換、頁面解析
node test/client.mjs # 配置頁掛載、快照、暫存與保存
node test/live.mjs # 真實調用 Exa(需要網絡)
適用場景與注意¶
適合誰:已在 DSH 0.2.x 上跑智能體、希望統一用 Exa 做聯網檢索與抓取,並偶爾需要 Exa 的調研/答案/代碼上下文能力的開發者。
權限與安全:插件以當前 DSH 進程權限運行;安裝前應閱讀 倉庫源碼 與 MIT 許可證,自行判斷是否接入生產環境。
已知邊界(README):
- Exa 不返回目標頁 HTTP 狀態碼;抓取成功統一記爲
200,失敗拋出帶原因的WebError。 - 無 key 時託管 MCP 有併發與頻率限制,插件內做了串行化與退避重試。
- 無 key 時無法使用
outputSchema、contents.extras、type: deep等僅 REST 支持的參數,會明確報錯。
結尾¶
dsh-exa 把 DSH 的聯網層換成 Exa,並在同一插件裏分層暴露工具:日常用 web_search / web_fetch 即可,複雜檢索再通過 exa_tools 或配置頁打開大 schema 工具。無 key 可先用 MCP 路徑驗證流程,需要深調研與結構化能力再配置 EXA_API_KEY。