零 API key、零依赖、零模型账单——用你自己的浏览器给 DSH 提供搜索能力。 #dsh-plugin
一个被忽视的账单细节
如果你在用 DSH(DeepSeek Harness),可能没注意到一件事:模型每调用一次 web_search 工具,后台就是一次 deepseek-v4-flash 的完整计费请求。
这是 DSH 自带搜索路由的实现方式——DeepSeek 没有独立的搜索端点,DSH 的做法是发起一次携带 web_search 服务器工具的完整模型调用。问题在于:
- 这个搜索模型写死在配置里,跟你会话里选什么模型完全无关。你主力用 GLM、Kimi 还是别的模型,搜索照样按 flash 计费;
- 单次搜索带 4096 token 输出预算和最多 5 次服务器侧搜索,让 Agent 频繁查资料的话,这笔账攒得很快。
今天推荐的开源插件 dsh-web-search-ddg,就是来解决这件事的:它把搜索提供方换成你本地的浏览器——用机器上已经装好的 Chrome/Edge 以 headless 模式访问 DuckDuckGo,解析出结果链接返回给模型。
三个”零”:
- 零模型 token——搜索不再产生任何模型账单
- 零 API key——不需要注册任何服务
- 零依赖——纯 Node 内置模块,不下载 Playwright/Puppeteer
安装:两分钟搞定
全自动安装:直接把文末github地址扔给DeepSeek Harness。
手动安装:
第一步,在你的 DSH profile 目录下(通常是 ~/.dsh/profiles/web)安装:
ounter(linepnpm add dsh-web-search-ddg
第二步,编辑 cordis.patch.yml,加两段:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 把默认搜索提供方切到本地浏览器- id: webconfig:searchProvider: ddg-browser# 挂载插件- insert:- id: web-search-ddgname: dsh-web-search-ddg
重启 dsh web,生效。之后模型的每次 web_search 都走本地浏览器,DeepSeek 账单里再也不会出现搜索产生的扣费。
验证配置是否正确(不用启动宿主):
ounter(linedsh --profile web --dump-config | grep -A2 searchProvider
想切回官方搜索?一行的事
自带的 DeepSeek 搜索提供方始终保持注册,切回来只是把 searchProvider 改回 deepseek-official。
这里有个设计细节值得说一下:DSH 的提供方选择是单一显式 ID,不是优先级链,没有静默降级。所以如果哪天 DuckDuckGo 反爬收紧,插件会明确报错、告诉你原因和怎么切回——而不是悄悄换个通道,让你以为一切正常结果搜索质量悄悄变差。对账单敏感的场景,这种”笨拙的诚实”其实很宝贵。
工作原理
插件本体只有一个约 250 行的 index.js,流程很直白:
- 以 headless 模式启动你的浏览器,访问 DuckDuckGo 的 HTML 端点;
- 读取 dump 出的 DOM,解析结果页的标题、摘要和真实链接(DuckDuckGo 的链接是跳转格式,插件会解出真实目标 URL);
- 通过 DSH 的 web 能力 seam 返回结构化结果——面向模型的
web_search工具和结果卡片无需任何改动,体验一致。
几个工程上的处理:headless 浏览器的 UA 会被覆盖成普通桌面 Chrome(否则会被反爬识别拦截);每次搜索有超时兜底和两次尝试;临时浏览器配置用完即删。
配置项
全部可选,不配也能跑:
| 配置键 | 默认值 | 说明 |
|---|---|---|
chromePath | 自动探测 | 浏览器可执行文件路径。macOS 的 Chrome/Edge/Chromium 和 Linux 常见路径会自动识别 |
timeoutMs | 20000 | 单次尝试的超时预算,每次搜索共两次尝试 |
virtualTimeBudgetMs | 8000 | 页面沉寂多久后 dump DOM |
浏览器探测覆盖:macOS(Chrome、Edge、Chromium)与 Linux(/usr/bin/chromium、/usr/bin/google-chrome),找不到时用 chromePath 指定即可。
缺点和限制
开源工具先说清限制,你再决定要不要用:
- 单次搜索延迟约 10–20 秒。 DOM 很快就绪,但浏览器进程经常不主动退出,结果常在超时兜底时拿到。搜索仍然成功,只是不快。追求秒回的场景,官方模型搜索反而合适——它毕竟是个 API。
- DuckDuckGo 反爬是一场猫鼠游戏。 当前版本的 UA 伪装实测稳定,但如果哪天开始普遍报错,说明 DDG 收紧了检测,去 GitHub 提 issue 或按 README 自助修复。
- 结果质量以 DuckDuckGo 为准。 开发资料的查询场景够用,但别指望比肩付费搜索 API 的结构化程度。
一句话总结适用人群:主力模型不在 DeepSeek 家、或者单纯不想让搜索产生模型账单的 DSH 用户,延迟不敏感的话,这就是当前最省心的方案。
项目地址
- GitHub:https://github.com/aooyoo/dsh-web-search-ddg(MIT 协议开源,欢迎star、贡献)(底部阅读原文可直接访问)
- npm:https://www.npmjs.com/package/dsh-web-search-ddg
README 有中英双语文档、完整的安装和故障排查说明。觉得有用欢迎 star,遇到问题直接提 issue。
在 macOS + DSH 0.1.0-rc.6 环境下实测通过。如果你也在DSH同时使用多家模型,欢迎聊聊你的账单优化心得。