🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
← 全部攻略

没有官方 key 也能让 agent 联网:dsh-free-search 的引擎回退实测路径

工具 / 效率类文章2026/9/30 发布90 次阅读

dsh 回你「无法联网」时,多数人先怀疑网络;更常见的根因在上一层——默认搜索 provider 依赖 DeepSeek 官方 API key(DEEPSEEK_API_KEY)。dsh-free-search 补的就是这层:它注册一个多引擎 provider(npm dsh-free-search @ 0.4.36,GitHub 276★,周下载 8,304),默认引擎是免费且最稳定的 Bing,无需 key 开箱即用,引擎失败还会自动轮换下一个。

先分清你是哪一种「无法联网」

两种场景落到同一表象:没有官方 key(官方 provider 起不来),或网关不支持(opencode-go 这类网关的 OpenAI 兼容端点不支持 web_search 工具)。共同点是——问题不在网络,而在搜索 provider 缺位,换代理、换网络都无济于事。

装上它:两种形态,别混用

站点生成的是 npm 渠道:

dsh plugin --profile web add dsh-free-search

README 另给本地路径渠道(适合改代码):

git clone https://github.com/DDDMUC/dsh-free-search.git
dsh plugin --profile web add /path/to/dsh-free-search

装完重启:

dsh web

两种形态别混用:本地路径装的包,dsh plugin update 找不到,更新链路跟不到版本。跟版本走就装 npm 包,改源码才用本地路径。npm 包要求 Node >=20(本站基线 22.19 满足)。

装完为什么就通了:接管判定与默认引擎

插件加载后自动接管搜索,判定条件很窄:web.searchProvider 未设置,或仍是 DSH 出厂默认的 deepseek-official 时自动切换为本插件。对照第一节的两种场景,正好都落在范围内——不需要再写任何配置,装完重启即生效。

接管后默认引擎是 Bing:免费、最稳定、中文优化(zh-CN),不注册、不填 key、不挂代理就能出结果。换引擎走设置页 Search engine 下拉或聊天框 /free-search-engine。

一条「失败了也不断」的回退链

任何引擎失败——付费或免费、缺 key 或 401、限流或网络异常——都自动试下一个:先试其他已配 key 的付费引擎,再试免费引擎(exa / tavily / keenable / firecrawl / parallel 没 key 也会试,因自带 keyless 匿名额度),最后是剩余免费引擎。

结果顶部会注明实际生效的引擎,形如 Note: perplexity unavailable or failed, using exa.,看这行就知道链路在第几跳落地;配合 auto 引擎日常基本无需手动干预。

三种验证方式与一条最小验证流程

验证有三个入口:设置页 Test engine(直测当前引擎、不走回退链,付费引擎没配 key 会明确报错)、对 agent 说「测试一下所有搜索引擎」(走 free_search_test,一次给出各引擎结论)、/free-search-engine(切换并保存)。

最小闭环:执行 dsh plugin --profile web add dsh-free-search → dsh web 重启 → 「插件」页已安装分组里点 web-search-free 进配置(需 DSH 0.1.7-rc.1+)→ Test engine 确认引擎可用 → 说「测试一下所有搜索引擎」→ 提一个真实检索问题,看结果顶部的生效引擎提示。

两个容易把配置改坏的细节

其一,写 searchProvider: ddg 不等于「使用 DuckDuckGo」。 ddg 是本插件注册的固定 provider id,不是引擎名,只表示「搜索交给这个 provider」;真正用哪个引擎由设置页 provider 字段决定(可填 bing / baidu / auto 等)。

其二,DSH 0.1.2+ 的 patch 是整段覆盖,不是深度合并。 手改 cordis.patch.yml 时,这条 patch 会替换整条 entry 的 config,原 web 条目里没被重述的字段会被抹掉,典型后果是网页抓取失效或报重复注册。显式声明时务必一并重述 fetchProvider: http:

- id: web
  config:
    searchProvider: ddg
    fetchProvider: http

国内还有一道坎:Node 的 fetch 不读系统代理

DuckDuckGo 这类引擎总超时?先别怀疑插件——Node.js 的 fetch 默认不走系统代理,dsh 进程会直连。给 dsh 进程显式设置即可(Node 24+):

export NODE_USE_ENV_PROXY=1
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897

不想折腾代理,就优先用 Bing、百度这类国内可达引擎。

总结

「无法联网」的根因往往在搜索 provider 这层而不是网络本身,补齐再验证一次,多数问题就闭环了;想横向看清不同插件的能力边界,可以查站点整理的插件清单。

适合与不适合

适合:没有官方 key 又需要 agent 联网的个人开发者;用 opencode-go 这类网关、端点不支持 web_search 的人;以中文检索为主的用户。

不适合:需要严格时间过滤的场景——Bing 与 AnySearch 直接忽略 timeRange,精确过滤得换 Exa / Keenable 或 Firecrawl 的绝对日期写法;把 agent 暴露到公网、对入网边界有要求的部署——web_fetch 没有 SSRF 防护;以及指望免费引擎扛高频查询的用法,相同查询 5 分钟内会命中缓存,免费引擎也存在匿名限流。

标签:dsh-free-search、DeepSeek Harness、多引擎搜索回退、无 key 联网、避坑实践

本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。

回到顶部