前言¶
在 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 配置表)。
延迟测试与设置页¶
设置页新增「免费搜索」面板,大致四块:
- 默认搜索服务 — 「设为本插件搜索」/「恢复 DeepSeek 官方」(决定
web_search实际走谁)。 - 代理 — 填写、保存、单独测试代理连通性。
- 搜索后端 — 勾选并调序。
- 延迟测试 — 对各已启用后端的服务首页发
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。
典型用法¶
- 按上文安装并重启,在「免费搜索」里设为默认 Web 搜索提供方。
- 保持默认仅
bing,在 Harness 对话中触发 DSH 的 Web 搜索工具,验证能否返回条目。 - 若需中文结果,在设置页启用
baidu并调整顺序;README 建议百度可proxyByBackend设为direct。 - 若 Google 等需代理,填全局或按后端代理,先用「测试代理」,再跑「延迟测试」作参考,最后手动「采用此顺序」或改 YAML/
settings.json。 - 使用 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.jsonengines)。仓库自述测试合计 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