dsh-web-search-free
把默认的 Web 搜索与抓取通道替换为 Tavily、Exa、Brave 等八个免费搜索引擎,按可配置的顺序依次 fallback。在设置卡片中填写各引擎 Key,并可开关 web_fetch 工具。
安装
dsh plugin --profile web add dsh-web-search-free
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-web-search-free
中文 | English
DeepSeek Harness (dsh) 的免费 Web Search / 网页抓取插件。它把 dsh 默认的 deepseek-official 通道换成多引擎 + 自动 fallback:按你排的顺序依次尝试已填 Key 的引擎,失败或额度用尽就换下一个;同一引擎可填多个 Key(每行一个),按序轮换。
- 不烧模型 token:直接调各引擎的检索端点,不经过任何 LLM。
- 装上即接管,卸载即回落:以 dsh bundle 层安装,无需手改 profile。
- 自带配置卡片:拖动排序、填 Key、测试 Key、查看用量,界面语言跟随 dsh。
- 请求只从宿主进程发出:浏览器侧只有配置卡片,不直接访问任何外部服务。
为什么是 "free"
官方通道 deepseek-official 的每次搜索都是一次完整的模型调用(带服务端 web_search 工具),搜索请求本身和回灌进上下文的 sources 都从 DEEPSEEK_API_KEY 余额扣 token。
· 官方 deepseek-official · 本插件 web-search-free
检索方式 · LLM 调用 + 服务端搜索工具 · 直接调引擎检索端点
模型 token · 每次搜索都消耗 · 0
计费 · DeepSeek API 余额 · 各搜索 API 自身额度(多数有免费层)
凭据 · 必须 DEEPSEEK_API_KEY · 各引擎自己的 Key
结果 · 只有 sources,未被模型引用的结果没有 snippet · sources + snippet;Tavily 另给直接回答
如果你的对话模型走第三方渠道、没配DEEPSEEK_API_KEY,官方通道仍会被选中,直到模型真正调用web_search才报WEB_PROVIDER_CREDENTIAL_MISSING。本插件不依赖任何 LLM 凭据。
支持的引擎
引擎 · 搜索 · 抓取 · 结果日期 · 免费额度 · 获取 API Key
TinyFish · ✓ · ✓ · 部分 · 免费,仅限速率 · <https://www.tinyfish.ai/pricing>
SearXNG · ✓ · ✗ · 部分 · 自建实例,不限量(「Key」填实例地址) · <https://docs.searxng.org/admin/installation.html>
AnySearch · ✓ · ✓ · ✗ · 1,000 次/天 · <https://anysearch.com/pricing>
百度千帆 · ✓ · ✗ · 部分 · 每日免费额度(以控制台为准) · <https://console.bce.baidu.com/iam/#/iam/apikey/list>
Tavily · ✓ · ✓ · ✗ · 1,000 credits/月 · <https://app.tavily.com/>
Brave Search · ✓ · ✗ · 多数 · $5 额度/月(需绑卡,不扣费) · <https://api-dashboard.search.brave.com/register>
Exa (Metaphor) · ✓ · ✓ · 部分 · 注册送 $20 + 每月补 $10(累积) · <https://dashboard.exa.ai/>
Firecrawl · ✓ · ✓ · ✗ · 1,000 credits/月(搜索 2 credits/10 结果) · <https://www.firecrawl.dev/>
火山引擎(豆包搜索) · ✓ · ✗ · 部分 · 500 次/月 · <https://console.volcengine.com/search-infinity/api-key>
SerpApi · ✓ · ✗ · 弱 · 250 次/月 · <https://serpapi.com/users/sign_up>
Jina AI · ✓ · ✓ · 部分 · 新 Key 送 10M tokens(一次性) · <https://jina.ai/api-key>
Serping API · ✓ · ✗ · 部分 · 每账号 1,000 次(一次性,无需绑卡) · <https://serpingapi.com/signup?ref=dsh-web-search-free>
表格顺序即默认调用顺序:按可持续免费次数从多到少(不限量 > 每日重置 > 每月重置 > 一次性),相当时注册/绑卡门槛低的优先。
- 抓取:只能搜索的引擎(✗)不参与抓取。没有可用的抓取引擎时,
web_fetch退回无 Key 的 Jina Reader 和 dsh 本地抓取(见[高级设置](#高级设置))。 - 结果日期:决定模型能否判断时效。Brave 最全(实测 18/20);Tavily 通用搜索不返回日期,Firecrawl、AnySearch 没有该字段。在意时效可把 Brave 往前挪。
<details>
<summary>各引擎注意事项</summary>
- Jina:
s.jina.ai每次扣 1 万 token,约够 1,000 次搜索,用完不重置。 - Exa:余额不清零,约 1,400 次基础搜索。
- TinyFish:免费层 Search 30 次/分钟、Fetch 150 URL/分钟。
- SearXNG:「Key」框填实例地址(如
https://searx.example.com),每行一个。实例需在settings.yml的search.formats里加上json,否则返回 403。 - 百度千帆:Key 在百度智能云 API Key(V2)页面创建,旧版 AK/SK 不可用。只搜中文网页。
- 火山引擎:Key 来自联网搜索控制台的「API Key 管理」,火山方舟(Ark)的 Key 不可用。每月 1 日重置,只搜中文网页。
</details>
安装
前置条件:dsh ≥ 0.1.2-rc.1,pnpm 在 PATH 上。
在 dsh 界面里安装:侧边栏「插件」→ 右上角「添加插件」→ 输入 dsh-web-search-free → 「安装」。
或用命令行安装。配置卡片只在 Web 界面出现,因此一般装到 web profile:
dsh plugin --profile web add dsh-web-search-free
安装后 dsh 自动对账 dsh.profile.bundles,插件即接管 web 搜索与抓取。
例外:如果 profile 的cordis.patch.yml里已经有一条- id: web(打开过 dsh「插件 → 网页搜索 → 启用新版 Web 搜索 API」开关就会写入),它会覆盖插件的设置,插件装上了也不会被调用。插件会在日志和卡片顶部提示这种情况,处理方法见[插件没有接管搜索](#插件没有接管搜索)。
<details>
<summary>从本地源码安装</summary>
pnpm install pnpm build # 生成 dist/(已 gitignore) dsh plugin --profile web add .
本地目录以链接方式安装,之后重新 pnpm build 即生效;改客户端代码后刷新浏览器即可。
</details>
dsh ≤ 0.1.2-alpha.5 不挂载 web 工具,装本插件后只有搜索、没有 web_fetch,请改用插件 1.3.0。
配置
运行 dsh web,找到配置卡片:
dsh 版本 · 卡片位置
≥ 0.1.6 · 侧栏 插件 → 「已安装」→ web-search-free
≤ 0.1.5 · 设置 → 插件 → 插件配置 → 免费网页搜索
1. 点击引擎行展开,粘贴 Key(每行一个);行内「获取 API Key ↗」直达申请页。
2. 拖动 ⋮⋮ 手柄调整「调用顺序」:靠前的先调,失败按序 fallback。
3. 顶部开关 「启用 web_fetch」:关闭后模型调用 web_fetch 会收到明确的错误。
4. 点 保存,下一次搜索即生效,无需重启。
至少要配一个引擎,否则搜索报 No web search providers configured.
卡片还提供(需 dsh 支持插件路由,已在 0.2.0-rc.2 验证;旧版本自动隐藏):
- 测试 Key:每个 Key 做一次小搜索,显示成功与否、条数、耗时或原始报错。每个 Key 消耗一次额度。
- 用量统计:按引擎、Key 显示调用次数、成功率、平均耗时、最近错误、冷却状态和缓存命中。仅存内存,重启清零。
- 检查更新:由宿主进程查询 npm registry,有新版时给出升级命令。
高级设置
卡片底部「高级设置」默认收起,不改也能用。顶部的快捷预设(省额度 / 速度优先 / 质量优先 / 中文优先 / 恢复默认)可叠加,保存后生效。
设置 · 字段 · 说明
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:17,最后更新 2026-11-01