前言¶
在 DeepSeek Harness(DSH)里做需要实时信息的智能体时,模型侧通常只有 web_search 和 web_fetch 这类工具;具体搜哪家、密钥怎么进进程,取决于你在 @deepseek-ai/dsh-web 这条 seam 上挂的 search provider。默认或自建方案往往要自己接 HTTP、对齐返回格式。下面介绍社区插件 dsh-web-search-exa(维护者 jakehemmerle):把 Exa 注册为 provider exa,让 web_search 走 Exa 的 /search API,并把结果以 sources 形式返回;web_fetch 行为不变。插件本身没有独立 UI,在 dsh web、dsh-TUI 与 headless 下用法一致。
这是什么¶
dsh-web-search-exa 是一个 DSH bundle 插件,在 @deepseek-ai/dsh-web 上注册 Exa 搜索后端。安装后 bundle 内的 cordis.patch.yml 会把 web seam 的 searchProvider 固定为 exa,并加入 web-search-exa 配置行。分类上属于联网工具;社区目录见 SkillHub 插件页,源码与说明在 GitHub:jakehemmerle/dsh-web-search-exa。
核心功能¶
- 统一 search provider:在 Cordis patch 里声明 provider 名
exa,DSH 的web_search工具把查询发给 Exa API,结果作为 sources 供模型引用。 - 多运行面一致:同一套 provider 在 dsh web、dsh-TUI、headless 中生效,无需为每种入口单独写集成。
- 可配置密钥与请求参数:支持从环境变量、密钥文件或(不推荐)字面量读取 API Key,并可调整 Exa 的
baseURL、type、高亮长度与超时等(见下文配置表)。 - 版本与 DSH 对齐:当前发布
0.3.0-rc.1在 DSH0.2.1-rc.2上做过 qualification;peer 依赖为精确版本,其他 DSH 版本需dsh plugin allow-version或等待适配的新 release。
安装与启用¶
按你实际使用的 profile(例如 web、headless)安装 bundle,并在启动 dsh 的环境中提供 Exa API Key:
dsh plugin --profile web add github:jakehemmerle/dsh-web-search-exa#v0.3.0-rc.1
export EXA_API_KEY=… # in the environment that launches dsh
上面第二条是在启动 dsh 的同一环境里导出密钥变量;变量名默认对应配置项 apiKeyEnv(见下表)。安装完成后,因 patch 会改写 web seam 的 searchProvider,需要重启 dsh web 后新 provider 才会生效。
若本地 DSH 版本不是 0.2.1-rc.2,安装前请查阅 README 中的版本说明,必要时使用 dsh plugin allow-version 或选用匹配的插件版本。
配置说明¶
可在你自己 profile 的 cordis.patch.yml 里覆盖 web-search-exa 这一行。patch 会替换整行 config,因此保留的字段也要重新写全。
| 字段 | 默认值 | 含义 |
|---|---|---|
apiKeyEnv |
EXA_API_KEY |
密钥环境变量名:先在 dsh credential store 查找,再在(若设置了 apiKeyFile 之后)环境中查找 |
apiKeyFile |
(未设置) | 存放密钥的文件(原始内容或 dotenv);每次搜索都会读,轮换密钥无需重启;优先级高于环境变量 |
apiKey |
(未设置) | 字面量密钥,优先于其他来源(不推荐) |
baseURL |
https://api.exa.ai |
Exa API 根地址 |
type |
auto |
Exa 搜索类型 |
highlightChars |
600 |
每条结果的高亮字符长度 |
timeoutMs |
30000 |
请求超时(毫秒) |
示例:用密钥文件而不是环境变量:
- id: web-search-exa
config:
apiKeyFile: /run/secrets/exa
典型用法¶
安装、配置密钥并重启 dsh web 之后,无需额外调用插件 API:在对话或 agent 流程里照常使用 Harness 暴露的 web_search 工具即可,查询会经 Exa /search 返回。web_fetch 仍按 DSH 原有逻辑工作,本插件不修改 fetch 路径。
开发侧若改插件本身,仓库 README 提到可用 nix flake check 跑快速测试套件,用 nix run .#e2e 在 mock Exa 上对 dsh web(Playwright)、dsh-TUI 与 headless 做端到端验证;细节见仓库内 SPEC.md、TESTING.md、RELEASING.md。
适用场景与注意¶
适合:已在用或计划用 Exa 作联网检索、希望在 DSH 全入口统一 web_search 行为的开发者。
注意:
- 插件以当前 dsh 进程的权限与网络环境运行;安装前请自行审阅 源码与 MIT 许可证。
- API Key 会用于对外请求 Exa;生产环境更推荐
apiKeyFile或 credential store,避免在 patch 里写死apiKey。 - SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;插件星标与版本以 GitHub 发布为准。
结尾¶
dsh-web-search-exa 把 Exa 接进 DSH 的 web seam,用一条官方安装命令和可选的 cordis.patch.yml 覆盖即可完成联网搜索后端切换。需要概览与分类信息时可打开 SkillHub 目录页;安装命令、配置字段与开发说明以 GitHub 仓库 README 为准。