dsh-free-web-search:为 DeepSeek Harness 接入免 API Key 的 Web 搜索

前言

在 DeepSeek Harness(DSH)里做联网检索时,官方搜索走 Anthropic 兼容接口,通常需要 DEEPSEEK_API_KEY 或账号登录态。若你只想在本地 Harness 里让智能体能搜网页、又不想单独申请搜索 API,就需要一条不依赖密钥的替代路径。下面介绍社区插件 dsh-free-web-search(维护者 vi0let-dev,分类:联网工具):向 DSH 的 ctx.web 搜索缝隙注册名为 free-web 的提供方,由公开免费后端应答,并支持代理、延迟探测与和官方搜索的一键切换。

这是什么

dsh-free-web-search 是纯 JavaScript、零 npm 依赖的 DSH 插件(MIT,package.json 版本 1.0.0)。它不替 DeepSeek 官方搜索,而是在同一套 Web 搜索槽位上多注册一个「免费 Web 搜索」提供方;默认只启用 Bing 抓取后端,新装即可在无代理环境下尝试使用。其余后端在设置页勾选后按你设定的顺序依次尝试,第一个返回可用结果者胜出。

后端概览(资料中的顺序与说明):

free-web-search
      ├─ bing        bing.com/search(默认启用)
      ├─ searxng     公开实例 JSON API(可选)
      ├─ google      google.com/search(可选,常需代理)
      ├─ baidu       baidu.com/s(可选,中文较强)
      ├─ yandex      yandex.com/search(可选)
      ├─ duckduckgo  html / lite 抓取(可选)
      └─ wikipedia   MediaWiki API(可选,偏百科)

README 中强调:Google 对无脚本客户端可能返回 JavaScript 空壳页(HTML 内无结果可解析);Yandex 易遇验证码;公开 SearxNG 实例稳定性因网络而异。这些属于「可达 ≠ 能搜到」的典型情况,插件会尽量给出明确诊断而非笼统的「页面改版」类报错。

核心功能

多后端与默认策略

配置 默认 说明
backends ['bing'] 启用列表及尝试顺序;未知名称会丢弃并告警
maxResults 5 单条搜索最多条数(上限 20)
timeoutMs 12000 单请求超时(上限 60000)
totalTimeoutMs timeoutMs × 2 整条后端链总预算(上限 120000)

链上采用「预留式」超时分配:避免前面卡住的后端占满总预算、导致后面本可用的后端被 skipped。快速失败会把时间还回池子。

可选:digest: true 时会把结果额外渲染成纯文本放进 content;takeover: true 时无条件抢占搜索槽位(默认 false,与官方搜索共存时需配合界面切换,见下文)。

代理(HTTP / HTTPS / SOCKS5)

宿主内无法依赖 undici 的 ProxyAgent,插件用手写隧道(node:net / node:tls / node:http),仍保持零依赖。支持 HTTP CONNECT、SOCKS5/SOCKS5H、user:pass@ 认证;不支持 SOCKS4、PAC、代理客户端证书。

全局与按后端覆盖示例:

- id: free-web-search
  name: 'dsh-free-web-search'
  config:
    proxy: 'http://127.0.0.1:7890'
    proxyByBackend:
      baidu: 'direct'
      google: 'socks5://127.0.0.1:1080'
    noProxy: ['internal.corp']
    useEnvProxy: true

useEnvProxy 为 true 时会识别已有的 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY;设为 false 可关闭。环境变量前缀为 DSH_FREE_WEB_SEARCH_(如 PROXY、BACKENDS、PROXY_BY_BACKEND=google=http://a:1,baidu=direct 等,完整列表见 README 配置表)。

延迟测试与设置页

设置页新增「免费搜索」面板,大致四块:

  1. 默认搜索服务 — 「设为本插件搜索」/「恢复 DeepSeek 官方」(决定 web_search 实际走谁)。
  2. 代理 — 填写、保存、单独测试代理连通性。
  3. 搜索后端 — 勾选并调序。
  4. 延迟测试 — 对各已启用后端的服务首页发 HEAD /,测连接、TLS 与总延迟;不发搜索请求、不用查询词;只给建议顺序与可复制配置,不自动改你的配置。界面会说明:可达不等于搜索可用。

界面上的改动写入 $DSH_HOME/dsh-free-web-search/settings.json,而不是改写 loader 的 cordis.patch.yml。优先级(低 → 高):内置默认 < 环境变量 < cordis.patch.yml < settings.json。

与官方搜索共存

DeepSeek 官方搜索提供方在无 API key 时仍可能在其 available() 里表现为「可用」,缝隙会优先选它再在运行时以 no API key 失败,本插件作为兜底可能永远轮不到。因此安装并重启后,必须在 设置 → 免费搜索 → 默认搜索服务 点击 「设为本插件搜索」;切换立即生效,无需再次重启。若要恢复官方,点同一处的「恢复 DeepSeek 官方」。

安装与启用

从 GitHub 安装(推荐)

在 DSH 界面:

设置 → 插件 → 添加插件

输入(资料原文):

github:vi0let-dev/dsh-free-web-search

装完后 重启 DSH,再完成上一节的默认搜索服务切换。

等价的手动方式(Windows PowerShell 示例,与 README 一致):

cd $env:DSH_PROFILE_DIR
pnpm add github:vi0let-dev/dsh-free-web-search

将 dsh-free-web-search 加入该目录 package.json 的 dsh.profile.bundles 数组,然后重启 DSH。

本地开发可用 file: 路径依赖;pnpm 会复制而非软链,改源码后需重新 pnpm install 或手动同步到 node_modules。

典型用法

  1. 按上文安装并重启,在「免费搜索」里设为默认 Web 搜索提供方。
  2. 保持默认仅 bing,在 Harness 对话中触发 DSH 的 Web 搜索工具,验证能否返回条目。
  3. 若需中文结果,在设置页启用 baidu 并调整顺序;README 建议百度可 proxyByBackend 设为 direct。
  4. 若 Google 等需代理,填全局或按后端代理,先用「测试代理」,再跑「延迟测试」作参考,最后手动「采用此顺序」或改 YAML/settings.json。
  5. 使用 SearxNG 时,README 建议将 searxngInstances 换成自建实例,而非仅依赖默认的 5 个公开实例。

SearxNG、维基等还可通过配置项 searxngInstances、wikipediaLang(中文常用 zh)微调。

适用场景与注意

适合:在 DSH 本地/自建环境里做联网问答、文档检索辅助,希望免搜索 API Key,并能接受抓取型后端随目标站点策略变化而波动。

注意:

  • 插件以 当前 DSH 进程权限 发起对外 HTTP(S) 请求;安装前请自行审阅 GitHub 仓库 源码与 MIT 许可证。
  • 抓取 Bing、百度等页面属于对第三方服务的自动化访问,请遵守各站点条款与当地法规;企业网络可能还有代理与审计要求。
  • 延迟测试只反映到各服务首页的网络路径,不能替代真实搜索试跑;Google、Yandex、公开 SearxNG 等「快但搜不到」的情况 README 已有说明。
  • 引擎要求 Node ^22.19.0 || >=24.0.0(见 package.json engines)。仓库自述测试合计 242 项 passing(见 README 徽章与测试章节)。

DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-free-web-search 把免密钥的多后端 Web 搜索、手写代理与延迟建议收进 DSH 的设置页,并明确区分「默认搜索走插件还是官方」。若你的痛点是 Harness 里缺 Key 导致官方搜索占位失败,按 README 安装、切换默认提供方后再配后端与代理,通常即可开始验证。

  • 目录页:https://www.skillhub.cn/plugins/vi0let-dev/dsh-free-web-search
  • GitHub:https://github.com/vi0let-dev/dsh-free-web-search
羽毛球分组比赛记分
小程序二维码

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

小夜