DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Webenhance — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

dsh-webenhance

Webenhance

DSH-WebEnhance:将 web_search 路由至 Parallel,将 web_fetch 路由至 Tavily;当 Tavily 超出配额、受到反机器人机制阻止或未返回可用内容时,升级使用 Firecrawl。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:AnbaoIy/DSH-WebEnhance#8c602c4525de5d5b39e5617e851f3d6e1b17dde7
README兼容性版本

兼容性与来源证明

Webenhance 以 dsh-webenhance 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/11

版本

0.1.0stable
2026/10/11

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Ab Market Researchdsh-ab-market-research一个树外 DeepSeek Harness 插件:将 trade_search 工具(多轮扩展方面的查询规划、出版商级别排序、来源多样性、JSON 快照)及其浏览器卡片集成在一个包中。Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:24 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel 无需密钥;通过 MCP 使用 Zhihu 全局/站内搜索,以及 Perplexity/SerpBase/DeepSeek/You.com/Baidu/Kimi/Aliyun/Doubao,需密钥;OpenAI/Gemini/Claude

README

DSH-WebEnhance

把 DSH web seam 的搜索与抓取分流到不同供应商,并让抓取在必要时升级。

web_search ─▶ Parallel   POST /v1/search

web_fetch  ─▶ Tavily     POST /extract ─┬─ 额度耗尽   402 / 432 / 433
                                         ├─ 触发反爬   403、正文命中防火墙特征
                                         └─ 无可用正文 failed_results、正文过短
                                              ▼
                                         Firecrawl   POST /v2/scrape

两种操作消耗各自的额度,互不挤占:搜索只花 Parallel 的 5000 requests/月; 抓取先花 Tavily 的 1000 credits/月,只有确实拿不到正文时才动用 Firecrawl 的 1000 credits。

设计取舍

dsh-tavily-firecrawl 用多个 key 轮流请求来堆额度。 这有两个代价:同一账号下的多个 key 一旦被关联,反而更容易触发风控;key 变多之后, 出问题也难以定位到具体一把。

本插件反向处理:一个操作只对应一家主供应商,失败才升级。结果是搜索结果风格稳定、 额度消耗可预测、排障只需看一条链路。

安装

dsh plugin --profile desktop add dsh-webenhance

安装后由插件的 cordis.patch.yml 覆盖三处:

目标改动
web-enhance插入本插件
websearchProvider: web-enhance、fetchProvider: web-enhance
web-search-deepseekdisabled: true,因此不再需要 DEEPSEEK_API_KEY

按 id 定位的 patch 会整体替换目标条目的 config,且只作用于配置树顶层。 agent 预设里真正生效的那份 tool-web 嵌在 preset-standard.config.plugins[] 内, 顶层 patch 触及不到它,因此本插件不依赖放宽工具层超时:抓取链的默认总预算 fetchTotalTimeoutMs 为 28000,稳在 tool-web.fetchTimeoutMs 默认的 30000 之内。 若要让升级链跑得更久,先在 agent 预设里把 tool-web.fetchTimeoutMs 改为 60000, 再把 fetchTotalTimeoutMs 提到 55000。

设置页

装好后在 设置 → 插件 → 网页增强 里可以直接填三把 key、选择抓取供应商, 不需要改配置文件,也不需要重启 dsh。

这一页由 lib/client.js 提供(客户端插件,package.json 的 dsh.client 与 exports["./client"] 声明)。Host 侧不需要任何额外代码:只要 Config 里存在 .volatile() 字段,dsh 的 settings 服务就会自动为该 profile 条目投影出表单。

配置项全部是顶层字段,这是设置页的硬约束 —— 表单模型按顶层字段名读写 (写入 op 形如 {op: "set", path: ["fetchVendor"], value}),嵌套字段在页面上不会显示。 因此本插件的 Config 没有任何嵌套对象。

凭据

三家各一把 key,按以下优先级解析(与 dsh 内置 provider 一致):

  1. 插件 config 中的字面量 key(searchApiKey / tavilyApiKey / firecrawlApiKey)
  2. dsh 凭据服务中以 *ApiKeyEnv 为名的条目(设置页写的就是这里)
  3. dsh 启动环境中的同名环境变量

通常直接设置环境变量即可:

PARALLEL_API_KEY=...
TAVILY_API_KEY=...
FIRECRAWL_API_KEY=...

只配置需要的那几把即可:缺少 key 的供应商会被跳过。

注意 available() 刻意不看凭据 —— 只看本地配置是否成形(baseURL 能解析等)。 这与内置 dsh-web-search-deepseek 的约定一致:缺 key 推迟到真正调用时才报 WEB_PROVIDER_CREDENTIAL_MISSING。否则只在设置页填 key 的用户会先撞上 WEB_PROVIDER_CONFIGURED_UNAVAILABLE,而那时 key 明明已经填好了。

配置项

键默认说明
fetchVendorautoauto / tavily / firecrawl;强制单家时忽略额度标记
fetchMinChars500正文短于此值即判为「未抓到」,触发升级;0 关闭该判定
fetchTotalTimeoutMs28000整条链的总预算,须小于 tool-web.fetchTimeoutMs(默认 30000)
searchApiKey—Parallel 字面量 key
searchApiKeyEnvPARALLEL_API_KEY凭据引用名 / 环境变量名
searchBaseURLhttps://api.parallel.ai
searchModebasicturbo / fast / basic / advanced;免费额度内均计 1 request
searchMaxResults10单次上限,公开上限 20
searchTimeoutMs30000
tavilyApiKey—字面量 key
tavilyApiKeyEnvTAVILY_API_KEY
tavilyBaseURLhttps://api.tavily.com
tavilyExtractDepthbasicbasic 时每 5 个成功 URL 记 1 credit
tavilyTimeoutMs12000为 Firecrawl 兜底预留预算
firecrawlApiKey—字面量 key
firecrawlApiKeyEnvFIRECRAWL_API_KEY
firecrawlBaseURLhttps://api.firecrawl.dev
firecrawlOnlyMainContenttrue确定性 HTML 过滤,不额外计费
firecrawlMaxAge

各层单独的超时也会被剩余总预算截断,因此 tavilyTimeoutMs + firecrawlTimeoutMs 超过 fetchTotalTimeoutMs 不会真的跑那么久。

升级与额度

Tavily 与 Firecrawl 都没有可靠的余额查询接口,插件因此只维护一件事: 某家在本月已确认额度耗尽。

  • Tavily 返回 402 / 432 / 433 时记为「本月额度耗尽」,此后直接跳过 Tavily,直到下个自然月;
  • 读取时若月份已变,标记自动作废;
  • 写入失败会被静默忽略并降级为内存态,磁盘问题不会影响抓取。

这里不做用量估算。凭错误码判断一次,比持续猜余额更不容易出错; fetchVendor 强制指定单家时也会忽略这个标记 —— 用户已经点名要走这家, 耗尽与否由它自己回答。

429 不会被记为额度耗尽 —— 它只代表请求过快,退避后可继续。

调试

把 fetchVendor 改为 firecrawl,即可跳过 Tavily 直连 Firecrawl:

- id: web-enhance
  config:
    fetchVendor: firecrawl

也可在设置页里直接切换,效果相同。可在 Tavily 故障时用于应急绕行。

已知限制

  • 搜索只有 Parallel。 seam 的搜索请求只携带 query 与 maxResults,插件无法按 时效性等维度切换供应商。确实需要时可把 web.searchProvider 指向别家的 provider。
  • Parallel 默认走索引缓存,新鲜度弱于实时抓取。
  • Tavily 的 extract 按「每 5 个成功 URL 记 1 credit」计费,单条抓取往往向上取整为 1 credit,因此它在该用法下未必比 Firecrawl 便宜。把它放在第一层,主要是看重 100 RPM 的响应速度,以及保护 Firecrawl 的 1000 credits。
  • 额度标记是本地记录,并非服务端真实余额;仅在明显耗尽时才硬性跳过。
  • 抓取链最坏会串行两层;fetchTotalTimeoutMs 是唯一的硬预算,用尽后不再升级。

开发

npm test          # pretest 会先生成 @deepseek-ai/* 的本地 shim

测试不联网,全部使用注入的假 fetch。若运行环境禁止子进程管道(例如受限沙箱), node --test 会因 spawn EPERM 失败,改用同进程模式:

node --test --test-isolation=none 'test/**/*.test.mjs'
lib/
  index.js                插件入口:Config、两个 provider 的注册
  client.js               设置页(浏览器半边,无构建步骤)
  config.js               配置与凭据解析
  http.js                 出站 HTTP:超时、取消、错误归一
  result.js               归一成 seam 的 WebFetchResult
  ledger.js               「本月额度耗尽」标记
  heuristics.js           反爬 / 空正文启发式
  providers/parallel.js   web_search
  providers/auto.js       web_fetch:Tavily → Firecrawl
  providers/tavily.js     Tavily /extract
  providers/firecrawl.js  Firecrawl /v2/scrape

License

MIT

172800000
缓存容忍度(2 天);0 表示强制新鲜抓取
firecrawlTimeoutMs45000调用时还会被剩余总预算截断
ledgerPath$DSH_HOME/web-enhance-ledger.json额度标记位置