前言¶
DeepSeek Harness(DSH)的插件生態以「一切皆插件」爲理念,開發者可以通過插件爲模型注入聯網檢索、內容抓取、研究流程等能力。在已有的本地檢索能力之外,需要與外部搜索服務的集成時,通常需要自行封裝 HTTP 請求、處理 API 限流、維護多接入方式的憑據管理,開發成本較高。本插件通過封裝 Exa 的搜索與抓取接口,在 DSH 中提供統一的調用方式,同時支持免登錄、API Key 與 Exa 賬號三種接入模式,減少重複開發。
插件定位¶
本插件爲 DSH 提供 Exa 服務的代理層,將 Exa 的搜索、抓取、問答、研究、監控等能力註冊爲模型可調用的工具。插件負責接入方式的切換、憑據的解析與存儲、功能開通探測、限流識別與錯誤轉換等底層邏輯,模型側無需關心 Exa 的接口細節。插件由 kiranasuka 維護,開源協議爲 MIT。
核心功能¶
工具註冊¶
安裝後,插件註冊 10 個 exa_* 工具,並複用 Harness 原生的 web_search 與 web_fetch,由 Exa 實際處理請求。工具按功能分組,具體如下:
檢索
- web_search:基礎搜索,按接入方式決定是否可用
- exa_search:支持域名、分類、日期、文本、子頁過濾
- exa_deep_search:多步檢索與帶引用的綜合答案(需 API Key)
內容
- web_fetch:抓取網頁內容,由 Exa 提供
- exa_fetch:最多抓取 5 個網頁,支持 highlights / summary / 子頁(後三者需 API Key),3 路併發
- exa_find_similar:由已知網址擴展相似頁面(需 API Key)
問答
- exa_answer:直接問答,返回帶引用的結果(需 API Key)
研究
- exa_research:Exa Agent,支持研究、名單構建、結構化輸出,支持續等與取消(需 API Key 或 Exa 賬號)
監控
- exa_monitor:創建定時或手動搜索監控,支持列表 / 新建 / 修改 / 觸發 / 刪除(需 API Key)
數據集
- exa_webset:構建與讀取經過驗證的數據集(需 API Key,Pro 計劃)
批量
- exa_batch:批量提交 /search 或 /agent/runs(需 API Key,團隊單獨開通)
狀態
- exa_status:報告當前接入方式、可用工具與上游工具表
其中 Websets 與 Batch 需要特定計劃或團隊權限,插件會在啓動或切換接入方式時探測功能是否開通,未開通則不註冊對應工具,並在設置頁標註「當前團隊未開通」。
接入方式¶
插件支持三種接入方式:
- 免登錄:不需要憑據,通過
https://mcp.exa.ai/mcp?tools=...連接。提供基礎搜索與抓取,但部分高級功能不可用(如agent_run)。 - API Key:在設置頁填入 API Key,或使用環境變量
EXA_API_KEY,通過https://api.exa.ai調用。支持全部接口。 - Exa 賬號:通過瀏覽器授權登錄,MCP 工具隨賬號開放。
agent_run需登錄後探測,探測成功纔會註冊exa_research。
設置頁提供「測試連接」按鈕,使用當前接入方式執行一次最小搜索,返回耗時與示例結果。
安裝與啓用¶
通過 Harness 插件管理安裝本目錄,或從 npm 安裝:
dsh plugin add dsh-exa-search
安裝後,web 行會被固定到 exa provider(通過 cordis.patch.yml)。這是必要配置:當存在兩個可用搜索 provider 時,DSH 會拒絕選擇,避免自動猜測。
配置¶
插件通過 cordis.patch.yml 配置以下參數:
| 鍵 | 默認值 | 說明 |
|---|---|---|
mode |
keyless |
默認接入方式,可在設置頁切換 |
apiKeyEnv |
EXA_API_KEY |
未保存 Key 時讀取的環境變量 |
numResults |
8 |
默認返回來源數 |
searchType |
auto |
檢索強度:auto / lite / fast |
maxCharacters |
12000 |
單頁抓取字符上限 |
locale |
auto |
消息語言:auto / en / zh |
mcpTools |
null |
覆蓋 MCP 的 tools 列表(數組或逗號分隔字符串) |
toolGroups |
null |
分組開關的初始值,例如 { "answer": false, "webset": false } |
updateCheck |
true |
啓動後自動查詢 npm 最新版本 |
設置頁爲每個分組提供開關,關閉後該分組下的 exa_* 工具會立即從工具表中移除,web_search / web_fetch 的 Exa 改道不受影響。
典型用法¶
基礎搜索¶
// 模型調用
web_search({ query: "最近 AI 研究進展" })
高級搜索(帶過濾)¶
exa_search({
query: "Exa 文檔",
category: "publication",
numResults: 5
})
內容抓取¶
exa_fetch({
urls: ["https://example.com/page"],
format: "summary"
})
研究流程¶
// 啓動研究
const { runId } = await exa_research({
query: "分析 DeepSeek 與 GPT-4 的性能差異",
maxSteps: 10
})
// 續等
const result = await exa_research({ runId, action: "wait" })
// 取消
await exa_research({ runId, action: "cancel" })
適用場景與注意¶
本插件適合需要與 Exa 服務集成、希望統一接入方式與工具註冊的 DSH 用戶。模型側只需按原有方式調用 web_search、web_fetch 或新增的 exa_* 工具,無需關注 Exa 的具體實現。
插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。Websets 與 Batch 功能需要 Pro 計劃或團隊單獨開通,未開通時不會註冊爲工具。
維護與生態¶
插件在啓動約 5 秒後查詢 npm 上的最新版本,結果緩存 6 小時。發現新版本時設置頁會提示更新,支持忽略當前版本。維護者通過推送版本標籤觸發自動測試、打包與 GitHub Release。
DeepSeek Harness 的插件目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。本插件可在 SkillHub 插件目錄 查看,源碼託管於 GitHub。