dsh-searxng-search: A Local, Key-Free Web Search Plugin

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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye