dsh-plugin-deepsearch:在 DeepSeek Search API 与 DSH 内置账号搜索之间切换

前言

在 DSH 里,模型常用的联网能力是内置的 web_search。默认走服务端账号搜索:一次搜索会消耗一轮模型回合。若你已经在 DeepSeek 控制台开通了 Search API(POST /v1/tools/search),希望把同一条 web_search 工具切到付费 API,又希望在密钥缺失、鉴权失败或网络异常时仍能搜到结果,就需要在「API 路由」和「内置路由」之间可切换、可持久化、带降级的方案。

下面介绍社区插件 dsh-plugin-deepsearch(维护者 SeaViod,分类:联网工具)。它在不拆掉 DSH 内置 web_search 的前提下,让你用设置页、侧栏开关或模型工具在 DeepSeek Search API 与 DSH 默认账号搜索 之间即时切换,并在失败时自动回退到其他可用搜索提供方。

这是什么

dsh-plugin-deepsearch 是 DeepSeek Harness(DSH)的 bundle 插件(npm 包名 dsh-plugin-deepsearch,当前资料中的版本为 0.2.0)。插件 halves 分工如下:

部分 文件 职责
Host index.js 注册模型工具 deepsearch、注册搜索提供方(默认 id deepseek-search-api)、路由 web.searchProviderId 开/关、暴露 /deepsearch/ 下四条 HTTP 路由、解析 API Key
Browser client.js 通过 window.__ModuleLoader__.load(...) 加载:设置页 Tab 与侧栏底部开关

安装后由包内 cordis.patch.yml(dsh.bundle.patch)在启动时注入,一般无需手改 profile 的 patch。

核心功能

两种搜索路由

  • ON(deepseek-api):内置 web_search 由 DeepSeek Search API 提供。这是付费 API,成功请求按 DeepSeek 计费;启用前请在控制台查看当前定价。
  • OFF(builtin):DSH 默认路由——服务端账号搜索(一次搜索消耗一轮模型回合)。

切换立即生效,重启后仍保持:模式持久化在 $DSH_HOME/deepsearch-mode.json。

失败时不让搜索「不可用」

无 Key、401、网络错误,或 429/5xx 重试耗尽时,提供方会回退到先前(或其他可用)搜索提供方,并在 lastError 中说明原因。配置项 fallbackOnError 默认为开启语义(仅严格 true 时启用回退)。

三个入口

入口 位置 用途
设置页 Settings → Built-in plugins → DeepSeek Search 开关、状态详情、端点测试、API Key 编辑
侧栏开关 左侧边栏底部 一键切换,显示当前路由(API / builtin)
模型工具 deepsearch(status / on / off / search / fetch / check) 在对话中切换路由或执行搜索

设置页与侧栏支持中英文界面。运行时仅依赖 node: 内置模块与全局 fetch,无额外 npm 依赖、无构建步骤。要求 Node.js >= 20,DSH 版本需满足包内 engines.dsh 声明的范围。

安装与启用

插件市场

在 DSH 插件市场中搜索 dsh-plugin-deepsearch 或 “DeepSeek Search” 安装。商店会使用包的 dsh.bundle.patch 自动注册 Host 端。安装后可在 Settings → Built-in plugins → DeepSeek Search 看到新 Tab;首次使用可能需要刷新浏览器页面以加载 client bundle。

命令行

默认 profile 安装:

dsh plugin add dsh-plugin-deepsearch

若服务由 dsh web 提供,可指定 profile:

dsh plugin --profile web add dsh-plugin-deepsearch

Desktop 应用使用桌面 profile 或应用内插件市场(DSH Home 由应用自行管理,无需手填用户目录路径)。插件 browser 端声明 dsh.client.platform: "web",与 Desktop shell 加载方式一致。

从本地目录而非 registry 安装时,可对目录执行 npm pack,再 dsh plugin add 生成的 tarball。

从 0.1.x 升级

0.1.x 无 bundle patch,需在 profile 的 cordis.patch.yml 手写 insert。0.2.0 起通过 bundle 安装,不要再保留旧的手写 insert 行,否则会与 bundle 重复加载。$DSH_HOME 下的模式与 Key 文件在升级时可保留。

卸载

从 profile 或插件市场移除包即可。可选删除 $DSH_HOME/deepsearch-mode.json、$DSH_HOME/deepsearch-diag.json、$DSH_HOME/deepsearch-key.txt;若计划重装可保留。

配置要点

配置来自 profile patch 中该插件条目的 config 块(bundle 安装也可携带同名配置);非法值会归一化为默认值而非抛错。示例:

- insert:
    - id: deepsearch
      name: dsh-plugin-deepsearch
      config:
        apiKeyEnv: DEEPSEEK_API_KEY
        count: 8
        retryCount: 1

常用项(资料中已列出的默认值与含义):

键 默认 说明
apiKeyEnv DEEPSEEK_API_KEY 环境变量或凭证引用名
baseURL https://api.deepseek.com API 基址
searchPath /v1/tools/search 搜索路径
fetchPath /v1/tools/fetch 页面抓取路径
keyFile '' 空则使用 $DSH_HOME/deepsearch-key.txt
count 8 结果条数(1–50)
providerId deepseek-search-api 注册的搜索提供方 id
fallbackProvider '' OFF 时优先回退的提供方 id;空则自动检测
fallbackOnError true API 调用失败时是否回退
timeoutMs 30000 单次 HTTP 超时
retryCount 1 408/429/5xx 的额外重试次数(0–3)

不建议在 patch 中写明文 apiKey;任何路由都不会回显 Key。

典型用法

  1. 安装插件并配置 Key:环境变量 DEEPSEEK_API_KEY,或在设置页 / $DSH_HOME/deepsearch-key.txt 写入(路径可由 keyFile 覆盖)。
  2. 在 Settings → Built-in plugins → DeepSeek Search 打开开关,或用侧栏底部切换为 API;用设置页里的端点测试确认连通。
  3. 在对话中让模型使用内置 web_search 时,即走当前所选路由;也可直接调用工具 deepsearch 做 status、on/off 或 search / fetch / check。

适用场景与注意

适合需要在同一套 DSH 工作流里对比或迁移「账号内置搜索」与「DeepSeek Search API」的开发者:切换成本低,且 API 异常时仍可回退到内置或其他提供方。

使用前请注意:

  • 插件以当前 DSH 进程的权限运行;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,自行评估密钥存放方式与网络出站策略。
  • deepseek-api 模式产生的是 DeepSeek 侧 API 费用;builtin 模式仍按 DSH 账号搜索规则消耗模型回合。
  • DSH 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与 npm 包元数据为准。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye