DeepSeek Harness (DSH) 的 web_search 生態中,使用官方或第三方託管 API 通常需要 API Key 或經過 MCP 中轉,且存在延遲與隱私顧慮。dsh-searxng-search 插件通過一個自託管的 SearXNG 實例,爲 DSH 提供了本地化、無 Key 的搜索能力。
插件簡介¶
- 名稱:
dsh-searxng-search - 作者:
anthony1x6000 - 許可證: MIT
- 核心定位: Keyless
web_searchfor DeepSeek Harness via a self-hosted SearXNG instance - 維護者: 通過 GitHub 維護,社區目錄收錄
核心功能¶
該插件主要提供以下能力:
- 無 Key 搜索: 繞過 API Key 限制,直接通過本地 SearXNG 實例進行搜索。
- 輕量級 Provider: 作爲
searxng-local的ctx.web提供者。 - 按需啓動: 利用
podman按需啓動容器,無需常駐服務。 - 零構建: 構建產物 (
lib/) 已提交,從 Git 安裝無需運行構建命令。 - 隔離運行: 容器啓動在獨立的 systemd scope 中,防止因重啓 dsh-web 導致端口轉發失效。
安裝與啓用¶
在安裝插件前,需要確保系統已安裝 podman(這是系統級依賴,不在 pnpm 範圍內)。
- 安裝 Podman (示例爲 Ubuntu):
sudo apt update && sudo apt install -y podman
- 安裝插件層:
將插件添加到webprofile:
dsh plugin --profile web add "github:anthony1x6000/dsh-searxng-search#main"
- 驗證配置:
在不啓動服務的情況下檢查配置是否生效:
dsh --profile web --dump-config | grep -B 1 -A 4 searxng
- 應用更改:
重啓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',插件因此不處理重定向。
本地開發¶
如果需要修改插件代碼進行開發:
- 克隆倉庫並安裝依賴:
pnpm install && pnpm build
- 使用本地鏈接路徑安裝:
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