dsh-web-tools-deepseek:把 DSH 联网走 DeepSeek 原生 Search/Fetch API

前言

在 DeepSeek Harness(DSH)里,智能体常用的 web_search 和 web_fetch 会经过 ctx.web 这一层「联网接缝」。默认情况下,搜索往往走模型侧自带的 web_search 工具(结果以 token 形式进入上下文),抓取则多是本地 HTTP、匿名拉页面。若你希望搜索和抓取都走 DeepSeek 官方独立的 Tools 接口,并按「成功请求」计费而不是把检索结果整块塞进 token 账单,就需要换一套 web provider。下面介绍社区插件 dsh-web-tools-deepseek(维护者 CarbonAnime,分类:联网工具)的做法。

这是什么

dsh-web-tools-deepseek 是挂在 DSH ctx.web 接缝上的 provider bundle:把 Harness 里的 web_search、web_fetch 路由到 DeepSeek 原生接口 POST /v1/tools/search 与 POST /v1/tools/fetch,而不是默认的模型侧搜索工具或纯本地 HTTP 抓取。

实现上,HTTP 请求由约 900 KiB 的 Rust 引擎(crates/engine)完成,经 stdio 上的 NDJSON 与 Cordis 插件里的薄 JavaScript 桥接通信;Tools API 失败或没有结果时,可回退到 DSH 自带的 native provider(默认搜索回退到 deepseek-official)。

tool-web ──▶ ctx.web ──▶ this bundle ──┬─▶ WebSearchProvider ─┐
                                       └─▶ WebFetchProvider  ─┤ NDJSON/stdio
                                                              ▼
                                          dsh-web-tools-deepseek(.exe)   (Rust)
                                                              │
                                        POST /v1/tools/search │ POST /v1/tools/fetch
                                                              ▼
                                                    https://api.deepseek.com

仓库:GitHub — CarbonAnime/dsh-web-tools-deepseek
社区目录:SkillHub 插件页
许可证:MIT(README 标注)。

和默认联网方式差在哪

DSH 默认组合大致如下:

能力 默认 provider 工作方式 计费
search deepseek-official 模型调用内的服务端工具 web_search_20250305 token(结果进入上下文)
fetch http 本地匿名拉 URL 免费

安装本 bundle 后,搜索与抓取都改走专用端点:

能力 端点 计费(README 说明)
search POST /v1/tools/search 每 1000 次成功请求 ¥5(约 ¥0.005/次)
fetch POST /v1/tools/fetch 同上

README 强调:只有 HTTP 200 且确有结果才算计费(搜索需非空 results,抓取需有页面内容);403、404、空结果、超时、失败调用不计费。count 只影响条数,不改变单价。换来的变化是:按次价更可预期,搜索结果是结构化字段(title / url / summary / date),而不是模型从自己 tool 输出里再解析一大段文本。

核心功能

  1. 统一注册 deepseek-tools-api:在 Cordis 里同时作为 search 与 fetch provider,并覆盖 web 行的 searchProvider、fetchProvider,避免多 provider 并存时出现 WEB_PROVIDER_AMBIGUOUS。
  2. Rust 引擎 + NDJSON:实际请求在独立二进制中完成,插件侧只做桥接;引擎查找顺序支持环境变量 DSH_WEB_TOOLS_DEEPSEEK_BIN、enginePath 配置、打包的 bin/dsh-web-tools-deepseek-<platform>-<arch> 等。
  3. 可配置回退:Tools API 失败或空结果时,可回退到已注册的 provider(默认 fallbackSearchProviderId: deepseek-official,fallbackOn: both)。
  4. 检索与抓取细节:默认 snippetSource: summary(面向模型阅读的 600–800 字摘要);localization 为 IP 而非语言标签;blockedAsResult 可把 fetch 的 403/404 变成带说明的结果而非抛错;独立 QPS 限流(默认每端点 5 QPS)。

安装与启用

环境要求(README):

项 要求
DSH @deepseek-ai/dsh-desktop 0.2.x(面向 ctx.web provider 接缝)
Node ≥ 18.17
凭证 $DSH_HOME/.credentials.yaml 中的 DEEPSEEK_API_KEY,或配置字面量 apiKey
Rust 使用预编译引擎时不需要;Linux/macOS 可从 Release 取资产(zip 可能需 chmod +x)

从 GitHub 安装(官方 README 命令):

dsh plugin --profile desktop add "github:CarbonAnime/dsh-web-tools-deepseek"

安装会应用包内的 dsh.bundle.patch:向 dsh.profile.bundles 追加条目,并应用 cordis.patch.yml——插入插件行(注册 deepseek-tools-api)并覆盖 web 行,使 searchProvider 与 fetchProvider 指向该 id。README 要求 patch 里重写整行 config(非深合并),且两处修改缺一不可。

安装后需重启 DSH 进程:配置重载会重新 apply(),但插件模块有 ESM 缓存,首次挂载或改代码通常要重启才生效。

可选配置示例(写在后续 cordis.patch.yml 的插件行上;空 config 也有默认值):

- id: web-tools-deepseek
  name: dsh-web-tools-deepseek
  config:
    count: 8
    qps: 4

常用字段包括:apiKeyEnv(默认 DEEPSEEK_API_KEY)、baseURL(默认 https://api.deepseek.com)、count(默认 10,1–50)、timeoutMs、retries、fallbackSearchProviderId、enginePath、diag 等,完整表见仓库 README 的 Configuration 一节。

典型用法

本插件不单独暴露 CLI「子命令」,而是接管 Harness 里已有的联网工具路径。安装并重启后,智能体或工作流里照常触发 web_search / web_fetch(经 tool-web → ctx.web),实际 HTTP 会由 Rust 引擎打到 https://api.deepseek.com 的 /v1/tools/search 与 /v1/tools/fetch。

若要验证引擎与凭证,可在仓库目录按 README 执行测试脚本(需已安装依赖与可用 API Key):

npm test

(包含 test/unit.mjs、test/engine.mjs、test/smoke.mjs。)

回滚到默认联网方式时,按 README 的 Rolling back 一节移除 bundle 或改回 web.searchProvider / web.fetchProvider 即可。

适用场景与注意

更适合:已在用 DSH Desktop 0.2.x、希望搜索/抓取与 DeepSeek 账单模型对齐(按成功 Tools 调用计费)、且希望搜索结果以结构化摘要进入上下文的开发者。

使用前请知悉:

  • 插件以当前 DSH 进程权限运行,安装前请自行审阅源码与 MIT 许可证,并在可信环境配置 DEEPSEEK_API_KEY。
  • 计费与限额以 DeepSeek 官方文档及 README 的 Pricing and limits 为准;勿假设与默认 deepseek-official token 计费相同。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件为社区维护(当前 GitHub 星标为 0,不代表质量结论,仅作目录线索)。

结尾

dsh-web-tools-deepseek 把 DSH 的 web_search、web_fetch 接到 DeepSeek 原生 Search/Fetch API,用小型 Rust 引擎承担 HTTP,并在失败时可回退默认 provider。若你正在 Harness 里做联网智能体,并想对比「token 内嵌搜索」与「按次 Tools API」,可从目录页或仓库 README 按上述命令安装试用。

  • 目录页:https://www.skillhub.cn/plugins/CarbonAnime/dsh-web-tools-deepseek
  • GitHub:https://github.com/CarbonAnime/dsh-web-tools-deepseek
羽毛球分组比赛记分
小程序二维码

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

小夜