DSH 免费网页搜索插件 (dsh-freeweb)

前言

DSH (DeepSeek Harness) 的核心设计理念是“一切皆插件”。默认的 web_search 工具调用 DeepSeek 官方的按量计费后端。如果你需要更多搜索次数且不想付费,或者希望在本地环境中运行搜索逻辑,dsh-freeweb 插件提供了一个基于 Parallel 免费搜索后端的方案。

功能特点

  • 真·零依赖:纯全局 fetch + 标准 JS,没有任何 import。不存在装完缺依赖崩溃的问题。
  • 完整错误处理:所有异常返回诊断信息,不静默失败。
  • 组合包形态:0.2.0+ 版本声明 dsh.bundle,支持 Web 插件页安装/启停/卸载。
  • 手动挂载支持:0.1.5+ 支持本地文件挂载,配置极其轻量。
  • MCP 协议:基于 JSON-RPC over HTTP,直接调用 Parallel Search 免费后端。

安装与启用

本插件通过 GitHub 仓库分发,尚未发布到 npm。安装前请确保 DSH 版本 ≥ 0.1.5(手动挂载)或 ≥ 0.2.0(组合包安装),并已安装 Node.js ≥ 18。

方式 A:插件页安装(推荐,DSH 0.2.0+)

  1. 打开侧栏的 插件 → 添加插件。
  2. 输入本目录的绝对路径(例如:D:\plugins\DSH-freeweb)。
  3. Host 会读取 package.json 中的 dsh.bundle 声明,完成安装并自动启用。
  4. 在 已安装 分组中会出现 dsh-freeweb 卡片,可进行整包启停或卸载。

方式 B:命令行安装

npx @deepseek-ai/dsh plugin --profile web add "<本目录绝对路径>"

这会将插件写入 package.json 的 dsh.profile.bundles。

方式 C:手动挂载(零打包,最轻)

  1. 将 freeweb-search.js 放入 profile 目录:
    ~/.dsh/profiles/web/freeweb-search.js (Windows: C:\Users\<你>\.dsh\profiles\web\)
  2. 在 profile 的 cordis.patch.yml 中追加配置(注意:config 是整段替换,必须包含 fetchProvider):
    - id: web
      config:
        searchProvider: freeweb
        fetchProvider: http

    - insert:
        - id: freeweb-search
          name: ./freeweb-search.js
  1. 重启 DSH。

配置与验证

配置要求

Web 行的 config 是整段替换,必须同时配置 searchProvider: freeweb 和 fetchProvider: http。若不写 fetchProvider,会丢失 dsh-base 的默认抓取后端。

验证方法

  1. 侧栏 插件 → 已安装,确认出现 dsh-freeweb 卡片。
  2. 设置 → 内置插件 中检查 include:freeweb-search 状态。
  3. 发起一次搜索请求。官方 DeepSeek 搜索 provider 每次都会在日志写入 web/deepseek-search-llm-request 事件,freeweb 不写该事件。若日志无此条,即表示走的是 freeweb。

注意事项与限制

  • 互斥性:手动挂载与组合包安装互斥,会导致 WEB_DUPLICATE_PROVIDER 错误。请二选一。
  • 免费层限速:Parallel 匿名层有速率限制,遇到 HTTP 429 需稍后重试。
  • 索引偏好:主要索引偏英文,中文可用但质量不如英文。
  • 结果形态差异:返回结构为 url / title / publish_date / excerpts,而非官方的 cited_text。模型能引用的原文片段可能会比官方少。
  • 失败处理:插件失败时以“答案文本”形式返回诊断信息,不抛出 WebError。这是刻意的取舍,旨在保持“永不阻断、故障透明”。

回退与故障排查

回退官方

  • 插件页/CLI:卸载组合包后,搜索自动回到官方 deepseek-official。
  • 手动挂载:删除 cordis.patch.yml 中的配置块并重启。注意顺序:先删 patch 行,再删文件,否则 DSH 启动会报错。

常见错误

  • WEB_DUPLICATE_PROVIDER:检查是否同时使用了两种安装方式。
  • WEB_PROVIDER_AMBIGUOUS:未显式指定 searchProvider。
  • not-a-bundle:目录未声明 dsh.bundle(若复制了旧版单文件需更新)。
  • 找不到 pnpm:方式 A/B 需要,方式 C 不需要。
羽毛球分组比赛记分
小程序二维码

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

小夜