Mochineko头像
关注

白嫖 Web 搜索:给 DeepSeek Harness (dsh) 写了一个多引擎免费搜索插件 dsh-web-search-free

起因:官方 Web 搜索为什么"贵"

最近在用 DeepSeek Harness (dsh) 搭自己的 Agent 工作流,发现一个容易被忽略的坑:dsh 默认给对话模型接的 Web 搜索通道 deepseek-official,并不是一个独立的搜索接口,而是每次搜索都要发起一次完整的 Messages 模型调用(POST .../anthropic/v1/messages,带官方原生的 web_search 服务端工具)。

也就是说,用户随口一句"帮我搜一下今天的新闻",背后其实烧了两份 token:

  1. 辅助搜索请求本身:dsh 会另起一个模型请求,塞进一句 Perform a web search for the query: <query> 加工具定义,这是一次完整的模型轮次(maxTokens 默认 4096、maxUses 默认 5),有输入也有输出 token,延迟和费用都按一次模型调用算;
  2. 搜索结果回灌对话:解析出来的 sources(标题/URL/片段)会被塞回对话模型的上下文里,作为对话 token 一直带着,直到触发压缩。

这两份 token 都从你的 DEEPSEEK_API_KEY 余额里扣。更麻烦的是,官方通道强制依赖 DEEPSEEK_API_KEY:如果你的对话模型走的其实是第三方/自建渠道,很可能压根没配这个 key——但 dsh 判断"该 provider 是否可用"时,只检查"有没有 key 解析器"(永远有),所以照样会选中它,直到模型真的调用 web_search 才会抛出 WEB_PROVIDER_CREDENTIAL_MISSING,界面上完全看不出异常,排查起来很折腾。

于是就有了这个插件:dsh-web-search-free。

这插件做了什么

一句话概括:把 dsh 的 web 能力通道(同时管搜索和网页抓取)从官方那条"经过 LLM"的链路,换成直连各搜索引擎专用检索端点的链路——纯检索,不经过任何大模型,自然也就不烧模型 token。

官方 deepseek-official本插件 web-search-free
检索方式一次完整 LLM 调用 + 服务端搜索工具直接调用各引擎自己的检索 API
模型 token每次搜索都烧(input + output)0,纯检索,不碰 LLM
计费来源DeepSeek API 余额各搜索 API 自己的额度(大多有免费层)
凭据要求必须 DEEPSEEK_API_KEY各引擎各自的 API Key

除了省 token,插件还做了几件我认为比较实用的事:

  • 多引擎 + 自动 fallback:目前接入了 TinyFish、AnySearch、Exa (Metaphor)、Tavily、Firecrawl、Brave Search、SerpApi、Jina AI 共 8 个引擎,可以按自己的顺序排列调用优先级,前一个失败(限流、额度耗尽等)自动落到下一个;同一引擎还支持填多个 Key(每行一个),引擎内部按顺序轮换,进一步抗限流。
  • 可视化设置卡片:装完之后在 dsh Web 界面的"设置 → 插件 → 免费 Web 搜索"里,就能看到一张卡片——已配置 Key 的引擎在"调用顺序"分组里,按 #1、#2 排序,拖一下左边的 ⋮⋮ 手柄就能重新排序;没配 Key 的引擎折叠收在"其他可用引擎"里,点开填 Key、点行内按钮直达对应引擎的申请页,非常省心。文案还跟着 dsh 的语言设置在中英文之间切换。
  • web_fetch 工具开关:除了搜索,插件同时接管网页抓取(fetchProvider),卡片里有个"启用 web_fetch"开关,开着的时候模型可以对指定 URL 抓全文;关掉时这个工具会直接从模型工具表里摘掉(不是留着报错),即开即生效,无需重启。
  • 装/卸都不用手改配置:本质是 dsh 的一个 bundle 层,dsh plugin --profile web add dsh-web-search-free 装上就自动接管 web 搜索/抓取;remove 之后(重启一下)自动回落到官方默认通道,全程不用手动改 profile 或 patch 文件。

引擎怎么选、免费额度差异有多大

不同引擎的免费额度机制差别不小,简单列一下(按插件默认顺序,从可持续免费量大到小排):

引擎搜索抓取免费额度
TinyFish✓✓完全免费,只按速率限(搜索 30 req/min)
AnySearch✓✓1,000 次/天(每天重置)
Exa (Metaphor)✓✓注册送 $20 + 每月补 $10 credit(累积不清零)
Tavily✓✓1,000 credits/月(每月重置)
Firecrawl✓✓1,000 credits/月
Brave Search✓✗$5 额度/月(需绑卡不扣费,多数结果带日期)
SerpApi✓✗250 次/月
Jina AI✓✓新 key 一次性送 10M tokens(约 1,000 次搜索)

需要注意两点:

  • Brave Search 和 SerpApi 都没有 URL 抓取端点,只能进搜索链,不会进抓取链。如果只填了这两家的 Key,抓取会报 No web fetch providers configured.,得再配一个支持抓取的引擎。
  • 搜索结果的时效性(发布日期)覆盖率差别很大:Brave 的 page_age 字段基本每条结果都有,Exa、Jina 部分有,Tavily 在本插件走的通用搜索模式下几乎没有日期字段,Firecrawl、AnySearch 干脆没有日期字段。如果你的场景很在意"这条结果是不是新的",可以把 Brave 挪到调用顺序靠前的位置,代价是牺牲掉 Tavily 自带的"直接回答"片段。

快速上手

前提:已经装好 dsh,且 pnpm 在 PATH 上。

# 装插件(会自动接管 web 搜索/抓取,无需手改 profile)
dsh plugin --profile web add dsh-web-search-free

# 启动 Web 界面
dsh web

打开「设置 → 插件 → 免费 Web 搜索」,随便挑一两个引擎,去对应官网申请 API Key(免费额度基本秒批),粘贴进去点保存,就能用了。至少要配一个引擎的 Key,否则会报 No web search providers configured.。

卸载也很干净:

dsh plugin --profile web remove dsh-web-search-free

不过卸载前建议先点卡片底部的"清空全部配置",把写进 settings.yaml 的 Key 清掉;卸载后需要重启 dsh 才会真正回落到官方通道。

顺带一提:dsh-desktop

如果你不想自己折腾 dsh 的命令行安装、profile 配置这一套,也可以直接用我做的 dsh 桌面客户端 dsh-desktop——dsh-web-search-free 这个插件已经内置在里面(也可以单独去 dsh-market 里搜到装上),装完 dsh-desktop 基本等于开箱自带这套免费搜索方案,不用再单独执行插件安装命令。

官网:dsh-desktop.cc.cd
GitHub 仓库:https://github.com/MochiNek0/dsh-desktop

相关链接

欢迎试用、提 Issue,也欢迎在评论区交流各引擎的使用体验~

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/RocoRoco/article/details/164474838

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--