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