我给DeepSeek Harness做了个不产生计费的联网搜索插件

我给DeepSeek Harness做了个不产生计费的联网搜索插件

💡 原文中文,约2600字,阅读约需7分钟。
📝

内容提要

该文介绍开源插件dsh-web-search-ddg,解决DeepSeek Harness搜索计费问题。它用本地浏览器headless访问DuckDuckGo替代官方搜索,实现零API key、零依赖、零模型账单。安装简单,配置灵活,但延迟10-20秒,结果质量依赖DDG,适合对账单敏感且不追求速度的用户。

🔎

延伸解读

为什么搜索会悄悄产生账单

DSH 的官方搜索并非独立端点,而是通过一次完整的模型调用来实现,且搜索模型固定为 deepseek-v4-flash,与会话中实际使用的模型无关。这意味着即使你主力使用其他模型,每次搜索仍会按 flash 计费,频繁搜索时费用会快速累积。这个插件正是针对这一机制,将搜索替换为本地浏览器,从而彻底消除这部分账单。

插件的设计取舍

插件选择单一显式搜索提供方,而非优先级链,因此不会静默降级。如果 DuckDuckGo 反爬收紧,插件会明确报错并提示切换回官方搜索,而不是悄悄更换通道导致搜索质量下降。这种设计对账单敏感的用户更友好,但代价是单次搜索延迟约 10-20 秒,且结果质量完全依赖 DuckDuckGo,适合对速度不敏感的场景。

安装与配置要点

安装只需在 DSH profile 目录下执行 pnpm add,并修改 cordis.patch.yml 两处配置。所有配置项均有默认值,如浏览器路径自动探测、超时 20 秒等,不配置也能运行。验证配置可用 dsh --profile web --dump-config 命令。若需切回官方搜索,只需将 searchProvider 改回 deepseek-official,无需卸载插件。

Q&A

DeepSeek Harness 的 web_search 工具为什么会产生额外费用?

因为 DSH 没有独立的搜索端点,每次调用 web_search 工具时,后台会发起一次携带 web_search 服务器工具的完整模型调用,并使用写死的 deepseek-v4-flash 模型计费,与当前会话使用的模型无关。

dsh-web-search-ddg 插件是如何实现零计费搜索的?

该插件将搜索提供方切换为本地浏览器,通过 headless 模式访问 DuckDuckGo 的 HTML 端点,解析搜索结果并返回给模型,从而完全绕开 DeepSeek 的模型调用,实现零模型 token 消耗、零 API key、零依赖。

如何手动安装 dsh-web-search-ddg 插件?

在 DSH profile 目录(如 ~/.dsh/profiles/web)下运行 `pnpm add dsh-web-search-ddg`,然后编辑 cordis.patch.yml,添加两段配置:将 searchProvider 改为 ddg-browser,并挂载插件 web-search-ddg。最后重启 dsh web 即可生效。

dsh-web-search-ddg 插件有哪些配置项?

配置项包括:chromePath(浏览器路径,默认自动探测)、timeoutMs(单次尝试超时,默认20000ms)、virtualTimeBudgetMs(页面沉寂多久后 dump DOM,默认8000ms)。这些配置均可选,不配置也能运行。

dsh-web-search-ddg 插件有哪些缺点?

主要缺点:单次搜索延迟约10-20秒,因为浏览器进程不主动退出,结果常在超时兜底时获取;DuckDuckGo 反爬机制可能导致插件失效;搜索结果质量依赖 DuckDuckGo,不如付费搜索 API 结构化。

如果 DuckDuckGo 反爬导致插件失效,会发生什么?

插件会明确报错,并提示原因和如何切回官方搜索,而不会静默降级。用户可以将 searchProvider 改回 deepseek-official 来恢复官方搜索。

dsh-web-search-ddg 插件适合哪些用户使用?

适合主力模型不在 DeepSeek 家、或不想让搜索产生模型账单的 DSH 用户,且对延迟不敏感。这类用户使用该插件是最省心的方案。

🏷️

标签

➡️

继续阅读