dsh-web-search-searxng:把 DSH 的 web 搜索接到自托管 SearXNG

前言

DeepSeek Harness(DSH)的 web profile 会提供 ctx.web 这个 web search seam。DSH 的理念是“一切皆插件”;在这个插件生态里,dsh-web-search-searxng 是一个 standalone SearXNG-backed web search provider。

它解决的是一个很具体的问题:如果你已经有自托管 SearXNG,并希望 DSH 的 web_search 调用自己的 SearXNG 实例,而不是依赖某个外部 API,可以直接安装这个插件。

这是什么

dsh-web-search-searxng 是一个可安装的 DSH 插件包,面向 DeepSeek Harness 的 web profile(ctx.web)。

仓库地址是 https://github.com/d3cker/dsh-web-search-searxngpackage.json 中声明:

  • namedsh-web-search-searxng
  • version0.2.0
  • licenseMIT
  • typemodule

它是 DSH 插件包,不是 DSH 核心功能的一部分。

核心能力

下面这些能力来自 README 和 package.json 的可核对信息:

  • ctx.web 提供独立的 SearXNG 后端 web search provider。
  • 纯 ESM,无构建步骤。
  • 以 bundle 方式发布;一条 dsh plugin 命令即可安装并自动激活。
  • 安装后会把 web seam 切换到 searxng provider,并挂载 plugin row。
  • 支持通过 SEARXNG_BASE_URL 配置 SearXNG 实例地址,默认 http://localhost:8888
  • 支持可选配置 SEARXNG_NUM_RESULTSSEARXNG_API_KEY
  • 暴露 web-search-searxng settings section;Settings 卡片需要 harness 侧改动后才能使用。
  • 使用 vitest 运行测试,README 记载 20 tests。

安装与启用

README 给出的安装命令是:

dsh plugin --profile web add /path/to/dsh-web-search-searxng

其中 /path/to/dsh-web-search-searxng 是占位路径,替换成本地插件目录。

执行后,插件会进入 DSH 的 web profile 并自动激活。README 描述的结果是:web seam 切换到 searxng provider,同时挂载 plugin row。

配置 SearXNG 实例

最常用的是设置环境变量:

export SEARXNG_BASE_URL=http://192.168.30.74:8888

然后在该 shell 中启动或重启:

dsh web

SEARXNG_BASE_URL 默认值是 http://localhost:8888

如果 SearXNG 实例需要 API key,可设置:

export SEARXNG_API_KEY=your-key

SEARXNG_API_KEY 是可选配置,只用于需要 key 的实例。

SEARXNG_NUM_RESULTS 也是可选配置项,用于配置结果数。

如果不想用环境变量,README 的替代做法是编辑 bundle 中的 cordis.patch.yml,修改 baseURL 行的默认值:

baseURL: !!js process.env.SEARXNG_BASE_URL ?? 'http://localhost:8888'

http://localhost:8888 改成实际实例地址。

验证搜索

README 给出的验证方式是调用:

web_search("postgresql vs mysql")

如果配置正确,应返回来自你的 SearXNG 实例的聚合结果。

Settings 卡片(可选)

插件会暴露 web-search-searxng settings section。若要在 DSH 的 Settings → Plugins 中编辑这些字段,需要 harness 侧改动。

README 列出的改动包括:

1、暴露 web-search-searxng namespace。README 给出的位置是 packages/host/apiproxy/src/api-proxy.ts,在 WEB_SETTINGS_NAMESPACES 中加入该 namespace:

const WEB_SETTINGS_NAMESPACES = [
  'agent-loop', 'shell', 'locale', 'permission', 'ui-conversation', 'ui-theme',
  'web-search-deepseek', 'web-search-searxng',
] as const

2、在 packages/client/ui-settings-plugins 中渲染卡片。README 提到增加 SearxngCard / SearxngCardController,在 index.tssettings.plugin.item slot 注册,并添加 searxng* locale keys。

之后需要重新构建 web 产物并重启 GUI。README 给出的命令:

pnpm run build:lib:host
pnpm run build:lib:client
pnpm run build:web

没有这些改动时,搜索仍可用;配置只能通过环境变量或 cordis.patch.yml 完成。

适用场景与注意

适合:

  • 已有自托管 SearXNG,希望 DSH 的 web_search 走自己的实例。
  • 想要纯 ESM、无构建步骤的插件包。
  • 习惯通过环境变量或 cordis.patch.yml 做配置。

注意:

  • 插件会以当前 dsh 进程权限运行。安装前应检查源码、package.json、依赖和许可证。
  • package.json 声明 licenseMITversion0.2.0
  • SEARXNG_API_KEY 是可选配置;仅适用于需要 key 的 SearXNG 实例。
  • Settings 卡片不是插件单独提供的;需要 harness 侧改动、重新构建并重启 GUI。

链接

GitHub:https://github.com/d3cker/dsh-web-search-searxng

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

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

Xiaoye