前言¶
在 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 输出里再解析一大段文本。
核心功能¶
- 统一注册
deepseek-tools-api:在 Cordis 里同时作为 search 与 fetch provider,并覆盖web行的searchProvider、fetchProvider,避免多 provider 并存时出现WEB_PROVIDER_AMBIGUOUS。 - Rust 引擎 + NDJSON:实际请求在独立二进制中完成,插件侧只做桥接;引擎查找顺序支持环境变量
DSH_WEB_TOOLS_DEEPSEEK_BIN、enginePath配置、打包的bin/dsh-web-tools-deepseek-<platform>-<arch>等。 - 可配置回退:Tools API 失败或空结果时,可回退到已注册的 provider(默认
fallbackSearchProviderId: deepseek-official,fallbackOn: both)。 - 检索与抓取细节:默认
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-officialtoken 计费相同。 - 社区目录 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