dsh-searxng-search: 本地化無 Key Web 搜索插件

DeepSeek Harness (DSH) 的 web_search 生態中,使用官方或第三方託管 API 通常需要 API Key 或經過 MCP 中轉,且存在延遲與隱私顧慮。dsh-searxng-search 插件通過一個自託管的 SearXNG 實例,爲 DSH 提供了本地化、無 Key 的搜索能力。

插件簡介

  • 名稱: dsh-searxng-search
  • 作者: anthony1x6000
  • 許可證: MIT
  • 核心定位: Keyless web_search for DeepSeek Harness via a self-hosted SearXNG instance
  • 維護者: 通過 GitHub 維護,社區目錄收錄

核心功能

該插件主要提供以下能力:

  1. 無 Key 搜索: 繞過 API Key 限制,直接通過本地 SearXNG 實例進行搜索。
  2. 輕量級 Provider: 作爲 searxng-local 的 ctx.web 提供者。
  3. 按需啓動: 利用 podman 按需啓動容器,無需常駐服務。
  4. 零構建: 構建產物 (lib/) 已提交,從 Git 安裝無需運行構建命令。
  5. 隔離運行: 容器啓動在獨立的 systemd scope 中,防止因重啓 dsh-web 導致端口轉發失效。

安裝與啓用

在安裝插件前,需要確保系統已安裝 podman(這是系統級依賴,不在 pnpm 範圍內)。

  1. 安裝 Podman (示例爲 Ubuntu):
    sudo apt update && sudo apt install -y podman
  1. 安裝插件層:
    將插件添加到 web profile:
    dsh plugin --profile web add "github:anthony1x6000/dsh-searxng-search#main"
  1. 驗證配置:
    在不啓動服務的情況下檢查配置是否生效:
    dsh --profile web --dump-config | grep -B 1 -A 4 searxng
  1. 應用更改:
    重啓 dsh web 以加載新的 bundle layer:
    # 重啓命令通常爲
    dsh web restart

配置項說明

插件通過環境變量或配置行進行控制。默認值如下:

環境變量 / 行字段 默認值 含義
SEARXNG_BASE_URL / baseURL http://127.0.0.1:8888 SearXNG 服務的基礎地址,搜索接口會自動追加 /search
SEARXNG_CONTAINER / containerName searxng 需要按需啓動的容器名稱
SEARXNG_CLI / containerCLI podman 容器運行時命令,支持 docker 作爲回退
SEARXNG_START_TIMEOUT_MS / startTimeoutMs 60000 每次搜索時容器啓動與就緒的超時時間(毫秒)
SEARXNG_AUTO_CREATE / autoCreate true 當容器不存在時是否自動創建,設爲 0 或 false 僅啓動
SEARXNG_IMAGE / image docker.io/searxng/searxng:latest 首次創建時拉取的鏡像
SEARXNG_PORT / port 8888 容器映射到主機的端口
SEARXNG_DETACH / detach true 是否使用 systemd scope 啓動容器以隔離 cgroup

工作原理與注意事項

容器啓動 Scope 機制

podman 命令默認繼承調用者的 cgroup。如果直接運行,重啓 dsh-web 服務會因默認的 KillMode=control-group 清理容器及其進程(如 conmon 和 pasta),導致端口轉發中斷。

該插件通過 systemd-run --user --scope 將容器啓動命令包裝在臨時的 scope 中。Scope 與 dsh-web 是兄弟關係,因此重啓 DSH 不會影響容器運行,但端口映射由 scope 管理。可以通過 systemctl --user status dsh-searxng-searxng.scope 查看狀態。

自動創建與限制

  • 首次搜索: 第一次搜索時會創建容器,耗時約 1-2 分鐘(用於鏡像拉取)。
  • 後續搜索: 後續搜索會按需啓動容器。
  • 僅限 Loopback: Autostart 僅支持 localhost、127.0.0.1 和 ::1。遠程地址會直接失敗。
  • 重定向限制: SearXNG 配置中啓用了 redirect: 'error',插件因此不處理重定向。

本地開發

如果需要修改插件代碼進行開發:

  1. 克隆倉庫並安裝依賴:
    pnpm install && pnpm build
  1. 使用本地鏈接路徑安裝:
    dsh plugin --profile web add link:/path/to/dsh-searxng-search

總結

dsh-searxng-search 解決了 DSH 開發者在本地環境進行無 Key、快速搜索的需求。通過 systemd scope 機制,它優雅地處理了容器生命週期與 DSH 進程重啓之間的衝突。

  • GitHub: https://github.com/anthony1x6000/dsh-searxng-search
  • 社區目錄: https://www.skillhub.cn/plugins/anthony1x6000/dsh-searxng-search
羽毛球分组比赛记分
小程序二维码

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

小夜