前言¶
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。