🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

搜索源切换 xiaokang6/dsh-web-search-switch

DeepSeek Harness
xiaokang67 天前有提交已提供中文文档扫描:未发现敏感能力

在设置页一键切换网页搜索与抓取源

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiaokang6/dsh-web-search-switch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · model
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
  • 发起网络请求
    lib/index.js:513
    async fetch(request, signal) {
  • 发起网络请求
    lib/index.js:619
    response = await fetch(spec.url, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-web@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-web-search-switch 在 DeepSeek Harness 桌面端 / Web 端里,用设置页面一键切换 web_search 的搜索源:官方 DeepSeek、Ollama、Tavily、Brave、Exa、Serper、博查、智谱、SearXNG;以及 web_fetch 的抓取源:内置本地抓取、Ollama Web Fetch、DeepSeek Fetch API。 插件页入口 它解决什么问题 DSH 自带的 web_search 只走 DeepSeek 官方搜索(deepseek-official,需要 DEEPSEEK_API_KEY 或 DeepSeek 账号)。社区插件 dsh-web-search-ollama 能让它改走 Ollama,但需要手改 cordis.patch.yml、设置全局环境变量、禁用官方搜索并重启,而且只能二选一。 本插件把「搜索源」变成设置页里的一个选项: - 一个页面切换:在侧边栏「插件 → 内置插件配置 → 搜索源」或「设置 → 内置插件 → 搜索源」里选择,保存后下一次搜索立即生效,无需重启。 - 官方与第三方并存:随时切回 DeepSeek 官方(Messages 搜索或新版搜索 API),不需要卸载插件。
展开完整文档(README 剩余 1 节)
dsh-web-search-switch

在 DeepSeek Harness 桌面端 / Web 端里,用设置页面一键切换 web_search 的搜索源:官方 DeepSeek、Ollama、Tavily、Brave、Exa、Serper、博查、智谱、SearXNG;以及 web_fetch 的抓取源:内置本地抓取、Ollama Web Fetch、DeepSeek Fetch API。

插件页入口

它解决什么问题

DSH 自带的 web_search 只走 DeepSeek 官方搜索(deepseek-official,需要 DEEPSEEK_API_KEY 或 DeepSeek 账号)。社区插件 dsh-web-search-ollama 能让它改走 Ollama,但需要手改 cordis.patch.yml、设置全局环境变量、禁用官方搜索并重启,而且只能二选一。

本插件把「搜索源」变成设置页里的一个选项:

- 一个页面切换:在侧边栏「插件 → 内置插件配置 → 搜索源」或「设置 → 内置插件 → 搜索源」里选择,保存后下一次搜索立即生效,无需重启。
- 官方与第三方并存:随时切回 DeepSeek 官方(Messages 搜索或新版搜索 API),不需要卸载插件。
- 密钥不落配置文件:API Key 通过 DSH 的凭据服务保存(.credentials.yaml),设置文件里只有凭据引用;页面只显示「已配置/未配置」。
- 不会静默回落:选中的搜索源缺少密钥时,web_search 会返回明确的错误,告诉模型和用户缺哪个 Key、去哪里配置。

支持的搜索源

| 设置页选项 | 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)

web_fetch 的提供方也在这一页选择。内置 http 与 Ollama 抓取都不需要手改配置文件。

| 设置页选项 | 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 的抓取 API,返回它抽取好的正文与链接,比本地抓取干净;与 Ollama 搜索共用同一把 OLLAMA_API_KEY。
- deepseek-fetch-api:内置的 DeepSeek Fetch API,需要一把有效的 DeepSeek 密钥;密钥无效时 web_fetch 会直接 401。

设置页里的「启用新版 Web 搜索 API」开关会同时改写 searchProvider 和 fetchProvider(两套官方 provider 成对切换),因此它无法把抓取单独设成 http 或 fetch-ollama。要「Ollama 搜索 + 内置抓取」这类组合,用本页的抓取源选择。

安装

把 <profile> 换成你的 profile 目录:桌面端一般是 %DSH_HOME%\profiles\desktop(默认 C:\Users\<你>\.dsh\profiles\desktop),Web 端是 dsh web 使用的那个 profile。

方式一:从 GitHub 安装

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)

1. 把本仓库作为本地依赖加入配置档:

node scripts/install.mjs --profile <profile>

脚本会写入 package.json 的 dependencies(link: 绝对路径)和 dsh.profile.bundles,并保留原文件内容(UTF-8 无 BOM)。加 --dry-run 只检查不写入。

2. 安装依赖:

cd <profile>
pnpm install

(DSH 自带 pnpm 时,用启动器提供的 pnpm 即可。)

最后一步:重启

重启 DeepSeek Harness。之后打开侧边栏「插件」,在「内置插件配置」里会多出 搜索源 卡片。

只在第一次安装时需要重启;之后切换搜索源、改密钥、改结果数都在设置页完成并立即生效。

使用

1. 侧边栏「插件」→「内置插件配置」→「搜索源」(也可以从「设置 → 内置插件 → 搜索源」进入)。
2. 选中一个搜索源。第三方服务会显示 API Key 输入框,把密钥粘贴进去。
3. 在同一页的「抓取提供方」里选 web_fetch 用的服务:内置 HTTP 抓取、Ollama Web Fetch 或 DeepSeek Fetch API。
4. 点「保存」。页面顶部「当前生效」会更新,下一次 web_search / web_fetch 就用新的提供方。
5. 想切回官方:选中「DeepSeek 官方 · Messages 搜索」→ 保存。

搜索源设置页

高级设置

| 字段 | 默认 | 说明 |
| 每次结果数 | 5 | 1–20,最终仍受 web_search 工具自己的结果上限约束。 |
| 超时(毫秒) | 20000 | 5000–120000;超时返回可读错误,不会卡住搜索。 |
| 接口地址 | 各服务默认值 | 例如走代理或镜像时修改;SearXNG 必填实例地址。留空保存会恢复默认。 |

每个第三方搜索源的凭据引用名也可以改(默认见上表):在配置档的 cordis.patch.yml 里给 web-search-switch 行加 ollamaApiKeyEnv 等字段。设置页会按新的引用名读写密钥。

工作原理(简要)

- 宿主侧(lib/index.js)在 ctx.web 上注册 8 个搜索服务商(id 统一带 search- 前缀)和 1 个抓取服务商 fetch-ollama,避免与内置服务商(deepseek-official、deepseek-search-api、http、deepseek-fetch-api)以及 dsh-web-search-ollama 的 ollama 冲突。
- 设置页把选中的 id 写进 web 条目的 searchProvider / fetchProvider(DSH 官方设置页的同一机制),配置改动由 config-editor 立即应用。
- 密钥写入 DSH 凭据服务,服务商每次搜索时重新解析,因此轮换密钥无需重启。
- 浏览器侧(lib/client.js)是手写的 dsh client bundle,注册到 plugins.item 和 settings.plugins.tab 两个 slot,只依赖平台内置的 react。

与 dsh-web-search-ollama 的关系

- 那个插件可以装到桌面端:桌面端和 Web/CLI 使用同一套配置档与 ctx.web seam。但它只注册一个 ollama 服务商,要靠手改 YAML、setx 全局环境变量、禁用官方搜索并重启来切换,不能和其他搜索源共存。
- 本插件不取代它,而是提供同类的 Ollama 接入 加上 官方/其他 API 的设置页切换。两者请不要同时安装:都会注册 Ollama 服务商(本插件用 search-ollama,不会 id 冲突,但设置页会出现两个 Ollama 选项)。
- 如果之前按它的 README 改过 cordis.patch.yml(searchProvider: ollama、disabled: true)或设置过 DSH_WEB_SEARCH_PROVIDER,装好本插件后请把这些覆盖删掉,让设置页成为唯一入口。

排错

| 现象 | 处理 |
| 保存后提示 WEB_PROVIDER_CONFIGURED_MISSING | web.searchProvider 指向的服务商没加载:确认插件已启用(插件页开关)、配置档 bundle 列表包含 dsh-web-search-switch,然后重启。 |
| 搜索报“还没有配置 API Key(XXX_API_KEY)” | 在搜索源页面填入对应密钥并保存;或先切回官方。 |
| 搜索报 HTTP 401 / 403 | 密钥无效、过期或没有该服务的权限;在对应服务控制台确认。 |
| SearXNG 报需要实例地址 | 高级设置里填 https://searx.example.com 这类地址(不要带 /search)。 |
| 网页获取 报 /v1/fetch 404,或搜索报 /v1/search 404 | 官方「网页搜索」卡片里开启了「使用新版 Web 搜索 API」,且地址填成了 https://ollama.com/v1。Ollama 只有 POST /api/web_search,没有 DeepSeek 的 /v1/search、/v1/fetch。关掉那个开关(抓取回到本地 http),搜索改用「搜索源 → Ollama」。 |
| web_fetch 报 HTTP 401 ... api key: sk-**** 无效 | 抓取提供方还是 deepseek-fetch-api,而凭据库里没有可用的 DeepSeek 密钥。在「抓取提供方」里改选内置 http(零密钥)或 fetch-ollama,保存即可。 |
| 页面里看不到「搜索源」卡片 | 插件没加载:查看「已安装插件」里是否有 dsh-web-search-switch 且开关为开;首次安装后需要重启。 |
| 搜索超时 | 调大高级设置里的超时,或检查网络/代理。 |

开发与验证

- lib/index.js:宿主 provider pack(ESM,导入 @deepseek-ai/schemastery、@deepseek-ai/dsh-web 等宿主包)。
- lib/client.js:浏览器 bundle(window.__ModuleLoader__.load 手写 CJS,平台只提供 react)。
- cordis.patch.yml:只插入 web-search-switch 一行,不修改 web.searchProvider 的默认值。

本仓库的验证覆盖:

- 宿主:node test/smoke.mjs 用桩模块跑真实 lib/index.js,断言 8 个搜索 provider 与 fetch-ollama 的注册、请求方法/鉴权头/请求体/结果映射、缺 Key、HTTP 401、响应缺 content 三种失败路径。
- 客户端:node test/client.mjs 用手写的最小 hooks 运行时渲染真实 lib/client.js,模拟选中「Ollama Web Fetch」并保存,断言写入 web.fetchProvider。
- 端到端:用独立 profile 启动一套 DSH Web 实例,在真实界面里切换 Tavily、保存密钥,并检查 cordis.patch.yml 与 .credentials.yaml 的落盘结果。

License

MIT
预览分享卡片长什么样 ↓xiaokang6/dsh-web-search-switch
分享 · DeepSeek Harness Hub
xiaokang6/dsh-web-search-switch

在设置页一键切换网页搜索与抓取源

这是你的仓库?认领条目

回到顶部