dsh-web-search-searxng

前言

DeepSeek Harness (DSH) 的 ctx.web 裂缝为智能体提供了联网能力。当需要实现 Web 搜索时,现有的通用方案通常涉及模型调用,成本较高或依赖第三方服务。dsh-web-search-searxng 是一个基于 SearXNG 的 WebSearchProvider 实现,它将搜索请求转换为直接的 HTTP GET 调用,对接本地 SearXNG 实例的 JSON API,从而在保持隐私的同时实现零模型调用成本。

功能概览

这是一个实现型插件,通过 inject: ['web'] 将提供者注册到 ctx.web。

  • 自托管与隐私:查询发送至本地 SearXNG 实例,不经过第三方搜索供应商。
  • 零模型成本:单次搜索仅为一次 HTTP 请求,不消耗大模型 Token。
  • 多引擎聚合:利用 SearXNG 后端聚合 Bing、Brave、Baidu、Google、DuckDuckGo 等多个搜索引擎的结果。
  • 灵活的鉴权:支持通过 ctx.credentials 或环境变量解析 API Key。
  • 会话日志:仅在 Agent 会话发起的请求中记录请求日志(非 Agent 调用无日志)。

安装与启用

安装此插件需要 DeepSeek Harness 已挂载 web 裂缝(标准 Profile 均自带)。

dsh plugin --profile web add /path/to/dsh-web-search-searxng

安装后,DSH 会自动应用 cordis.patch.yml 注册提供者并切换搜索源。若需手动配置,可编辑 cordis.patch.yml。

配置

插件优先读取环境变量,环境变量未设置时使用默认值或配置文件值。

环境变量

在启动 DSH 进程前设置以下环境变量:

export SEARXNG_BASE_URL=http://localhost:8080   # 默认值
export SEARXNG_MAX_RESULTS=10                    # 默认值
export SEARXNG_LANGUAGE=en                       # 默认值 'all' (不传参)

配置文件

在 cordis.patch.yml 或 Settings 中配置:

- id: web-search-searxng
  name: '@deepseek-ai/dsh-web-search-searxng'
  config:
    baseURL: http://localhost:8080
    maxResults: 10
    language: en
    # apiKeyEnv: SEARXNG_API_KEY  # 优先读取环境变量

安全说明:apiKey 字段携带 role('secret'),不会出现在 describe 响应中。

Docker Desktop 注意事项

如果 SearXNG 运行在 Docker Desktop 中,来自宿主机的请求会被 Docker 网关(如 172.18.0.1)接管。SearXNG 的速率限制器会将此视为外部 IP 并触发 API_MAX = 4/hour 限制。

为避免此问题,需在 SearXNG 的 limiter.toml 中配置代理信任和 IP 透传,并在插件中启用转发头:

  1. 在 SearXNG 的 limiter.toml 中添加:
    trusted_proxies = ['127.0.0.0/8']
    pass_ip = ['127.0.0.1', '172.18.0.0/16']
  1. 确保插件配置中启用了 X-Forwarded-For 头部转发(代码默认行为)。

请求日志

插件会在发起搜索请求前,向当前 Agent 会话追加一个仅日志用途的事件 web/searxng-search-request,包含解析后的端点和查询词。直接通过代码调用插件且无启动 Agent 会话时,不会记录日志。

生态背景

DeepSeek Harness 采用「一切皆插件」的理念。此插件由社区开发者 acdcgz 维护,遵循 MIT 许可证。其目录入口位于 SkillHub,源码托管于 GitHub。

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

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

小夜