dsh-plugin-ai-super-search:接管 DSH 原生搜索的免费工具集

前言

DeepSeek Harness(DSH)内置的 web_search 工具默认调用官方付费接口,会消耗 Token 并产生费用。dsh-plugin-ai-super-search 通过接管该工具并提供 TinyFish、AnySearch、Bing 爬取、Jina 与 DuckDuckGo 等免费链路,实现了零额外 Token 消耗的搜索功能。

安装与启用

本插件以 bundle 形式提供,安装后会自动将配置补丁叠进 profile。

  1. 安装插件:
    dsh plugin --profile <profile> add dsh-plugin-ai-super-search
  1. 验证安装:
    运行以下命令检查插件是否被正确加载:
    dsh --profile <profile> --dump-config
启动后在插件列表中应出现 `ai-super-search`(模块名 `dsh-plugin-ai-super-search`),状态为 active。工具列表中应出现四个独立工具:`ai_super_search_web_search`、`ai_super_search_fetch_url`、`ai_super_search_local_files`、`ai_super_search_code`。
  1. 检查依赖:
    确认 node_modules/dsh-plugin-ai-super-search 文件夹存在。若该链接缺失,loader 会静默跳过整层 patch,导致搜索功能回落到官方付费通道且无报错。

  2. 桌面端安装:
    桌面端(Electron 应用)的 desktop profile 由应用独占管理,CLI 会拒绝操作。请在桌面端通过 设置 → 插件管理器 进行安装或卸载。dsh plugin 命令仅适用于 web、acp、headless 或其他 CLI 管理的 profile。

核心功能

插件主要包含两层能力:

  1. 接管原生 web_search:
    通过 cordis.patch.yml 将 web.searchProvider 切换至插件提供的 tinyfish 等后端,使得 DSH 内置的 web_search 工具直接走免费链路。

  2. 提供独立工具组:

    • ai_super_search_web_search:免费搜索网页,支持多引擎降级链路。
    • ai_super_search_fetch_url:使用 Jina Reader 读取网页内容,失败时回退直连 HTML。
    • ai_super_search_local_files:在指定根目录内搜索文本文件。
    • ai_super_search_code:在指定根目录内搜索代码并返回语言、行号和上下文。

免费搜索链路

搜索链路的实际顺序由 src/search.js 的 webSearch() 决定。可用后端包括 TinyFish、AnySearch、Bing(爬取)、Jina、DuckDuckGo Lite。即使一个 Key 都未配置,插件也会自动降级,不会中断搜索功能。

顺序 后端 进链条件
0 DSH_SEARCH_ENGINE 显式设置时优先,失败后仍按顺序降级
1 TinyFish 必须配置 TINYFISH_API_KEY
2 AnySearch 免 Key 也可进链,按 IP 走匿名额度
3 Bing 免 Key 直接抓取结果页 HTML
4 Jina 配置 DSH_JINA_API_KEY 可提额度
5 DuckDuckGo Lite 无 JS 轻量版兜底

可通过环境变量 DSH_SEARCH_ENGINE 指定首选引擎。

前端呈现

插件实现了与官方 web_search 完全一致的呈现钩子,确保前端展示的搜索卡片与官方一致:

  • output.render:生成模型侧文本(Markdown 源码列表)。
  • output.presentationMeta:提供可重放元数据 { sources, truncated }。
  • presentCall:显示运行中卡片。
  • presentResult:显示完成后的富卡片。

排障

安装后若发现搜索功能未生效,需排查以下两点:

  1. Bundle 解析失败:
    若 package.json 中声明的 bundle 名称在 node_modules 中找不到对应的链接(例如包名变更未重新安装、旧 link-projection 机制失效),loader 会静默跳过整层 patch。此时插件列表可能显示为 inactive 或缺失,需重新运行 pnpm install 确保 node_modules 存在。

  2. 配置文件错误:
    profile 目录下的 cordis.yml 是“空根补丁文件”,每次启动都会被覆写。有效的配置来源顺序为:各 bundle 自带的 patch → profile 的 cordis.patch.yml → $DSH_HOME/cordis.patch.yml → --patch overlay。修改 cordis.yml 无效。

适用场景与注意

  • 场景:需要频繁使用搜索功能且希望降低 Token 成本的开发者或智能体开发者。
  • 运行权限:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 构建脚本:从 GitHub 安装时,若使用 pnpm >= 10,默认会拒绝执行 git 依赖的构建脚本。需在 pnpm-workspace.yaml 中添加 allowBuilds 配置或在安装时指定版本(如 #<sha>)。

参考资料

  • GitHub 仓库:https://github.com/huguangyu666/dsh-plugin-ai-super-search
  • 社区目录:https://www.skillhub.cn/plugins/huguangyu666/dsh-plugin-ai-super-search
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜