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-searxng。package.json 中聲明:

  • name:dsh-web-search-searxng
  • version:0.2.0
  • license:MIT
  • type:module

它是 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_RESULTS 和 SEARXNG_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.ts 的 settings.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 聲明 license 爲 MIT,version 爲 0.2.0。
  • SEARXNG_API_KEY 是可選配置;僅適用於需要 key 的 SearXNG 實例。
  • Settings 卡片不是插件單獨提供的;需要 harness 側改動、重新構建並重啓 GUI。

鏈接

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

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

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

小夜