前言¶
DeepSeek Harness(DSH)里,模型通过 web_search 查网页、通过 web_fetch 拉取单个 URL 的正文。默认情况下,web_search 走 DeepSeek 官方搜索,需要 DEEPSEEK_API_KEY 或 DeepSeek 账号。社区里也有只把搜索改到 Ollama 的插件,但通常要手改 cordis.patch.yml、设全局环境变量、禁用官方搜索并重启,且很难在多种搜索源之间来回切换。
下面介绍维护者 xiaokang6 发布的 dsh-web-search-switch(分类:联网工具)。它把搜索源和抓取源收进 DSH 设置页的一个入口,保存后下一次调用即生效,多数改动无需重启。
这是什么¶
dsh-web-search-switch 是 DSH 社区插件,仓库 xiaokang6/dsh-web-search-switch,当前 package 版本为 0.2.0,许可证 MIT。
一句话定位:在桌面端或 Web 端的设置页里,一键切换 web_search 的搜索源(DeepSeek 官方、Ollama、Tavily、Brave、Exa、Serper、博查、智谱、SearXNG 等)以及 web_fetch 的抓取源(内置本地 HTTP、Ollama Web Fetch、DeepSeek Fetch API)。
插件目录页:skillhub.cn/plugins/xiaokang6/dsh-web-search-switch。SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,安装前建议自行查看源码与许可证。插件以当前 DSH 进程权限运行。
它解决什么问题¶
与「只改 Ollama、靠 YAML 和环境变量切换」的做法相比,本插件侧重这几件事:
- 一个页面切换:侧边栏「插件 → 内置插件配置 → 搜索源」,或「设置 → 内置插件 → 搜索源」里选择并保存,下一次搜索立即生效,无需重启(仅首次安装插件后需要重启 DSH)。
- 官方与第三方并存:可随时切回 DeepSeek 官方(Messages 搜索或新版搜索 API),不必卸载插件。
- 密钥不落配置文件:API Key 经 DSH 凭据服务写入
.credentials.yaml;设置文件里只有凭据引用,页面只显示「已配置 / 未配置」。 - 不会静默回落:选中的搜索源缺少密钥时,
web_search返回明确错误,说明缺哪个 Key、去哪里配置。
支持的搜索源与抓取源¶
web_search¶
| 设置页选项 | Provider id | 默认凭据引用 | 默认端点 |
|---|---|---|---|
| DeepSeek 官方 · Messages 搜索 | deepseek-official |
DEEPSEEK_API_KEY(或 DeepSeek 账号登录) |
内置 |
| DeepSeek 官方 · 新版搜索 API | deepseek-search-api |
DEEPSEEK_API_KEY |
内置 |
| Ollama Web Search | search-ollama |
OLLAMA_API_KEY |
https://ollama.com/api/web_search |
| Tavily | search-tavily |
TAVILY_API_KEY |
https://api.tavily.com/search |
| Brave Search | search-brave |
BRAVE_API_KEY |
https://api.search.brave.com/res/v1/web/search |
| Exa | search-exa |
EXA_API_KEY |
https://api.exa.ai/search |
| Serper(Google) | search-serper |
SERPER_API_KEY |
https://google.serper.dev/search |
| 博查 Bocha | search-bocha |
BOCHA_API_KEY |
https://api.bochaai.com/v1/web-search |
| 智谱 Web Search | search-zhipu |
ZHIPU_API_KEY |
https://open.bigmodel.cn/api/paas/v4/web_search |
| SearXNG(自建) | search-searxng |
SEARXNG_API_KEY(可选) |
你的实例地址 + /search |
web_fetch¶
| 设置页选项 | Provider id | 默认凭据引用 | 默认端点 |
|---|---|---|---|
| 内置 HTTP 抓取(本地) | http |
不需要 | 内置 |
| Ollama Web Fetch | fetch-ollama |
OLLAMA_API_KEY |
https://ollama.com/api/web_fetch |
| DeepSeek 官方 · Fetch API | deepseek-fetch-api |
DeepSeek 搜索凭据引用 | 内置 |
内置 http 在本地抓取单个 URL 并转成文本,零密钥。fetch-ollama 与 Ollama 搜索共用 OLLAMA_API_KEY。设置页里的「启用新版 Web 搜索 API」开关会同时改写 searchProvider 和 fetchProvider;若要「Ollama 搜索 + 内置抓取」这类组合,应在本页单独选抓取源,而不是只依赖该开关。
安装与启用¶
先把 <profile> 换成你的 profile 目录:桌面端一般为 %DSH_HOME%\profiles\desktop(默认 C:\Users\<你>\.dsh\profiles\desktop),Web 端为 dsh web 使用的 profile。
方式一:从 GitHub 安装¶
在 profile 目录执行:
cd <profile>
pnpm add github:xiaokang6/dsh-web-search-switch
再把 dsh-web-search-switch 加入 profile package.json 的 dsh.profile.bundles:
"dsh": { "profile": { "bundles": ["...原有 bundle...", "dsh-web-search-switch"] } }
也可以在 DSH 插件页使用「添加插件」,填写仓库地址,由插件管理器完成安装与启用。
方式二:本地目录(开发 / link)¶
- 在仓库根目录执行(将
<profile>换成实际路径):
node scripts/install.mjs --profile <profile>
脚本会写入 package.json 的 dependencies(link: 绝对路径)和 dsh.profile.bundles。加 --dry-run 只检查不写入。
- 安装依赖:
cd <profile>
pnpm install
重启¶
安装完成后重启 DeepSeek Harness。之后在侧边栏「插件」的「内置插件配置」里会出现 搜索源 卡片。之后切换搜索源、改密钥、改结果数在设置页保存即可,一般不必再重启。
典型用法¶
- 打开「插件 → 内置插件配置 → 搜索源」(或「设置 → 内置插件 → 搜索源」)。
- 选中一个搜索源;第三方服务会显示 API Key 输入框,粘贴密钥后保存。
- 在同一页「抓取提供方」中选择
web_fetch使用的服务。 - 点击「保存」。页面顶部「当前生效」会更新,下一次
web_search/web_fetch使用新提供方。 - 切回官方:选「DeepSeek 官方 · Messages 搜索」→ 保存。
高级设置(节选):
| 字段 | 默认 | 说明 |
|---|---|---|
| 每次结果数 | 5 | 1–20 |
| 超时(毫秒) | 20000 | 5000–120000 |
| 接口地址 | 各服务默认值 | SearXNG 必填实例地址;留空保存恢复默认 |
每个第三方搜索源的凭据引用名也可在 profile 的 cordis.patch.yml 里为 web-search-switch 行配置 ollamaApiKeyEnv 等字段;设置页会按新引用名读写密钥。
工作原理(简要)¶
宿主侧 lib/index.js 在 ctx.web 上注册 8 个带 search- 前缀的搜索 provider 和抓取 provider fetch-ollama,避免与内置 provider 及 dsh-web-search-ollama 的 ollama id 冲突。设置页把选中 id 写入 web 条目的 searchProvider / fetchProvider,由 config-editor 立即应用。浏览器侧 lib/client.js 注册到 plugins.item 与 settings.plugins.tab,只依赖平台内置的 react。
与 dsh-web-search-ollama 的关系:后者仍可装桌面端,但只能靠 YAML 与环境变量切换 Ollama。本插件提供同类 Ollama 接入并加上设置页多源切换;两者请不要同时安装(设置页会出现两个 Ollama 选项)。若曾按旧插件 README 改过 searchProvider: ollama 或 DSH_WEB_SEARCH_PROVIDER,装好本插件后应删掉这些覆盖,让设置页成为唯一入口。
排错与适用注意¶
| 现象 | 处理 |
|---|---|
保存后 WEB_PROVIDER_CONFIGURED_MISSING |
确认插件已启用、bundle 含 dsh-web-search-switch,必要时重启 |
报未配置 XXX_API_KEY |
在搜索源页填入密钥并保存,或切回官方 |
| SearXNG 需要实例地址 | 高级设置填 https://searx.example.com(不要带 /search) |
Ollama 却报 /v1/search 404 |
勿把官方「新版 Web 搜索 API」地址填成 https://ollama.com/v1;搜索应走「搜索源 → Ollama」 |
| 看不到「搜索源」卡片 | 确认已安装且开关为开;首次安装需重启 |
适合需要在同一套 DSH profile 里频繁对比官方搜索与多家第三方 API、或自建 SearXNG 的智能体开发者。不适合期望零配置即用的场景:除内置 http 抓取外,多数搜索源需要各自的有效 API Key。
结尾¶
dsh-web-search-switch 把 DSH 的联网检索从「改配置文件 + 重启」收成设置页里的搜索源与抓取源选项,密钥走凭据服务,缺 Key 时错误信息可读。进一步了解可访问 插件目录页 与 GitHub 仓库。