面向 DeepSeek HarnessDSH的多后端 websearch 与 webfetch 提供方。完全不需要…
31.2/100
综合分
2
GitHub 星标
402
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @fno2010/dsh-web-search-extnpm 源 · @fno2010/dsh-web-search-ext 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功(非静态推断);本次验证针对插件 v0.3.1,当前版本为 v0.3.0
L5 · 运行时冒烟等级说明 →数据截至 2026/10/28·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-tool-web@deepseek-ai/dsh-web给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 多后端搜索服务
- 自动故障转移
- 免密钥使用
最近更新
在 GitHub 查看全部 →v0.3.12026-10-21
· 新增
· Web 上的 web_search 工具视图卡片:对话里的 web_search 行接管宿主内置的网页卡片,并加上来源凭据行、按来源分色编码的验证徽章(存活、已验证、失效 404 等)、截断提示,以及逐条结果的下钻(点开某个来源可查看其服务后端、新鲜度和验证状态)。当 web 接缝未固定到本服务商时,该行会优雅降级(不声称凭据行、不臆造徽章、不声称后端),而不是把别人的结果错标成自己的。
· 进行中搜索指示器:搜索运行时,工具视图行显示扫动动画和客户端计时的已用时间标签;结果落定前,既不声称阶段,也不声称服务后端。
· Web 上的会话健康标签页:设置卡片的健康标签页显示宿主 GET /web-search-ext/health 提供的会话遥测——运行时长、各后端成功/失败计数、最近调用时间、生效中的 429 冷却,以及会话的搜索/抓取计数。载荷只有计数器和封闭代码(不含凭据、URL 或查询文本);路由未挂载时,标签页显示明确的不可用状态并提供重试。
· 首次安装连通性探测:健康标签页的连通性区块探测 Exa(带密钥的 REST 或匿名 MCP)和 Firecrawl(带密钥或无密钥)——标签页首次打开且无已存结果时自动探测一次,也可随时点「立即测试」。宿主按需在 POST /web-search-ext/probe 运行探测,绝不在应用时运行,因此安装、宿主重启和 CI 都不会产生任何厂商调用;载荷只带套餐字面量和封闭代码(不含厂商消息、URL 或密钥)。
· /search-engine 斜杠命令:切换首选后端、查看实时状态(密钥来源、最近调用结果、生效中的 429 冷却),并运行连通性测试——直接在输入框的 / 菜单里,用宿主的弹窗外壳。若 /search-engine 已被占用,命令改注册为 /web-search-engine,设置卡片会说明实际生效的是哪个名字(或两者都不可用)——回退会明示,绝不静默。
· 设置卡片里的验证层级选择器:卡片现在以带标签的下拉框暴露 verifyLevel(off / liveness / content)。保存的层级从下一次 web_search/web_fetch 起生效——无需重启;宿主每次调用都实时解析设置文档。直接写进配置档补丁的无法识别层级会显示 schema 默认值,而不是一个死选项,保存时写回符合 schema 的值。
· 上下文预算:numResults 现在是 web_search 输出的硬上限——调用方更大的 maxResults 会在任何后端运行前被钳制,厂商超量投递会在验证前被钳制(因此 L0/L1 绝不会探测一个不会被返回的 URL),凭据行会报告该上限并带上结构化的 truncated 标志。
· 修复
· 实时宿主上 web_fetch 可用:0.3.0 把本插件固定为 web 接缝的抓取服务商,但没有任何组合路径注册面向模型的 web_fetch 工具(0.2 之前的预设层带 fetch: false,且 dsh web 会禁用配置档层的 tool-web 行),因此实时宿主返回未知工具 "web_fetch"。现在,当预设层未注册该工具时,插件会在应用时注册自带的 web_fetch 工具——schema、提示词段落和呈现方式与 harness 自带工具一致,带去重保护,执行走经 SSRF 防护的 ctx.web.fetch。
· L1 字节上限:抓取的块越过 contentCheckBytes 时,整块被丢弃,而长度仍计入被丢弃的字节,于是 contentCheckMinBytes 可能基于从未保留的字节来把关。现在会保留越界块中放得下的前缀(按解码字符数封顶,与现有切片模型一致)。
· 客户端入口在实时宿主上不再应用失败:web_search 工具视图注册与宿主内置的 web-toolview 条目冲突——同一键控槽位、同一键、同一默认优先级 0——槽位注册表会硬性拒绝,导致整个客户端入口加载失败(「Failed to load plugins」),设置卡片、健康标签页和 /search-engine 命令也随之失效。现在注册以显式优先级遮蔽宿主条目(注册表对每个键渲染优先级最低的条目),且提交后的 bundle 的注册在 test/toolview.test.mjs 中有断言,因为没有任何 CI 路径会运行浏览器侧的注册表。
· 变更
· 兼容 DeepSeek Harness 0.2.x:设置现在走插件自己的易变 Cordis 配置(客户端用 ctx.configForms,宿主用 .volatile() 字段),不再用已移除的 installSettingsSection/settingsNamespace 辅助函
v0.3.02026-08-26
· 0.3.0 — 可验证的实时搜索
· 新增
· 无密钥 web_fetch:注册了一个新的抓取服务商,作为 web 接缝的 fetchProvider,因此 web_fetch 无需任何 API 密钥即可使用。它通过 Firecrawl 抓取(POST {base}/scrape;默认允许无密钥请求),当 Firecrawl 不可用或被限流时,故障转移到 Exa 的匿名托管 MCP web_fetch_exa。输出受 fetchMaxChars 限制(默认 50 000),触顶时设置 truncated。捆绑补丁现在除了 web.searchProvider 之外,还固定 web.fetchProvider: web-search-ext。
· 结果验证(L0 存活检查,默认开启):返回每个来源之前,先在本地探测(先 HEAD,405/501 时改用 GET;重定向手动跟随——最多 3 跳,每跳跟随前都重新过一遍 SSRF 防护);每个摘要片段带上状态标记——[alive]、[dead 404]、[blocked]、[timeout]、[unreachable]、[skipped]——并且绝不丢弃任何结果。验证纯靠本地 HTTP:不耗服务商配额,不用密钥。
· L1 内容检查(实验性,通过 verifyLevel: "content" 主动开启):抓取每个页面的前 contentCheckBytes 字节(正文读取受 contentCheckTimeoutMs 限制),检查摘要片段开头的词是否仍然出现;标记为 [verified] / [verified·changed],外加词匹配比例。没有摘要片段的来源标记为 [unverified](页面存活,内容未检查),在回执中单独计数。unsafe/forbidden 结果标记为 [blocked]。
· 来源回执:web_search 结果现在在 content 顶部带一行回执——例如 web-search-ext: exa-mcp · 1.2s · 5 results · liveness: 5 alive · freshness 24h not honored (keyless exa has no date filter)——写明实际提供结果的后端,并暴露每一项限制,而不是藏起来。
· 时效窗口:freshness 设置(any | 24h | 7d | 30d)在后端支持时随请求发出(Exa REST 的 startPublishedDate,Firecrawl 的 tbs: qdr:d|w|m)。无密钥的 Exa MCP 路径没有日期过滤,所以回执会明说,而不是悄悄忽略请求。
· 429 诊断:从标准 Retry-After 头(delta-seconds 或 HTTP-date)和/或结构化响应体字段(retry_after_seconds,数字或字符串)解析被限流后端报告的等待窗口,并以人类可读形式报告("retry in ~22.1h");它成为该后端的冷却时间(受 maxCooldownSec 限制,默认 24 h),错误信息会指出解锁路径(设置对应的 API 密钥)。
· 新增配置字段(全部可选,全部有默认值):verifyLevel、livenessTimeoutMs、contentCheckBytes、contentCheckMinBytes、contentCheckMatchWords、contentCheckTimeoutMs、freshness、maxCooldownSec、fetchMaxChars。
· 测试套件从 10 个模拟场景增至 39 个:L0/L1 标记、回执形态、HEAD-405/501 回退、验证关闭时零流量、429 retry-after(delta-seconds 与 HTTP-date 头、响应体字段、字符串值、钳制)+ 冷却、时效随请求发出、抓取故障转移(429 与非 429)、404 作为结果、SSRF 防护矩阵(IPv6/127-8/FQDN 各种写法,含多点)、重定向重新验证、L0 状态映射、L1 超时(慢滴、读取中途停滞、未流式文本)+ 无摘要片段的 [unverified]、验证期间中止、双 429、截断、仅无密钥方案。
· ROADMAP.md:0.3.0+ 的版本计划与各版本交付物。
· 变更
· 抓取侧 SSRF 防护:显式 URL 抓取在任何网络流量之前拒绝非 http(s) 协议和回环/私有/链路本地目标。
· SSRF 防护加固(验证探测和 web_fetch 都适用):IPv6 回环/链路本地/唯一本地字面量(包括 [::ffff:127.0.0.1] 这类 IPv4 映射形式)、整个 1
v0.2.02026-08-22
· 新增内容
· Web 端设置卡片(设置 → 插件 → 插件配置):编辑五个配置字段(preferred、numResults、maxSnippetChars、rateLimitCooldownSec、firecrawlKeyless),支持实时保存和放弃,并管理两个 API 密钥。
· API 密钥状态从凭据层自动发现(实时进程环境 → ~/.dsh/.credentials.yaml → .env 文件),在 credentials/reference-updated 时刷新(文件改动会实时更新徽标,无需重启),当实时进程环境提供密钥时以只读方式渲染——宿主会拒绝会被环境值覆盖的 UI 写入。
· 卡片外观沿用宿主的 PluginCard 设计语言(共享设计 token、宿主的 chevron/loading 图标、tsdown CSS-module 注入);提供英文和中文文案。
· 客户端 bundle 同时以两个安装形式入口名注册(带作用域的 npm 键和不带作用域的 link-install 键),所以无论插件是从 npm 添加还是通过本地 link: 安装,卡片都能加载。
· docs/settings-ui-plan.md:调研后的实现方案(扩展点结论、wire API、风险)。
· 变更
· 归属 user-agent 版本号提升,与包版本保持一致。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-web-search-ext
面向 DeepSeek Harness(DSH)的多后端 web_search 与 web_fetch 提供方。完全不需要 API key 即可工作;配置 key 后可解锁更高限额。注册进 web 能力缝(ctx.web),使用稳定 provider id(web-search-ext)。
为什么需要它
内置 web_search 工具的后端可插拔,但内置默认提供方(deepseek-official)需要一个 DeepSeek API key。本插件是无 key 可用的替代方案:开箱即走 Exa 匿名 MCP 端点,某个后端被限流时自动故障切换到下一个。它还注册了一个无 key 可用的 web_fetch 提供方,并对交给模型的结果做校验(死链、内容变更、实际应答的后端——全部体现在结果中)。
展开完整文档(README 剩余 1 节)
dsh-web-search-ext
面向 DeepSeek Harness(DSH)的多后端 web_search 与 web_fetch 提供方。完全不需要 API key 即可工作;配置 key 后可解锁更高限额。注册进 web 能力缝(ctx.web),使用稳定 provider id(web-search-ext)。
为什么需要它
内置 web_search 工具的后端可插拔,但内置默认提供方(deepseek-official)需要一个 DeepSeek API key。本插件是无 key 可用的替代方案:开箱即走 Exa 匿名 MCP 端点,某个后端被限流时自动故障切换到下一个。它还注册了一个无 key 可用的 web_fetch 提供方,并对交给模型的结果做校验(死链、内容变更、实际应答的后端——全部体现在结果中)。
特性
- 当前两个后端:Exa(有 key 走 REST,无 key 走匿名 hosted MCP)与 Firecrawl(v2 search/scrape API,可有 key 或无 key)
- 无 key web_fetch:通过 Firecrawl scrape 抓取 URL,失败时回退到 Exa 匿名 MCP 的 web_fetch_exa;无需任何 API key,输出受 fetchMaxChars 上限约束
- 自动故障切换:任何后端失败(429、401/402/403、5xx、网络错误、响应体不合法)都会按顺序落到下一个后端(搜索与抓取均如此)
- 按后端的 429 冷却:被限流的后端在冷却期内被跳过;冷却时长优先采用后端自己报告的窗口(Retry-After 响应头或响应体中的 retry_after_seconds),并由 maxCooldownSec 封顶;全部后端都失败时,错误信息会列出每个后端的失败原因(含冷却状态)
- 结果校验(L0 存活性,默认开启):返回的每条来源都会做本地探测,摘要打上 [alive] / [dead 404] / [blocked] / [timeout] / [unreachable] / [skipped] 标记——结果永远不会被丢弃;verifyLevel: "content" 可开启实验性 L1 内容校验([verified] / [verified·changed] / [unverified](页面存活但无摘要可比对))
- 来源回执:web_search 结果携带单行回执(web-search-ext: <backend> · <elapsed>s · <n> results · liveness: …),标明实际应答的后端,并显式披露限制(如无 key Exa 无法执行时间窗口过滤)而非静默忽略
- 时间窗口:freshness: 24h | 7d | 30d 在后端支持时随请求发出(Exa startPublishedDate、Firecrawl tbs);无 key Exa MCP 路径无法按日期过滤,回执会明确说明
- 可选 key,按后端独立解析,优先级:设置明文 → 凭证服务 → 启动环境变量
- Web 端设置卡片:设置 → 插件 → Web Search (ext) 标签页中可编辑六个核心配置字段——含校验层级(off / liveness / content,自下一次搜索起热生效)——和两个 API key,key 状态自动发现自凭证各层(时间窗口仍只能改配置文件)
- Web 端 web_search 卡片:对话中的 web_search 行接管宿主的内置 web 卡片,额外显示来源回执行、按来源的校验徽章(按状态着色:alive、verified、dead 404 等)、截断提示、逐条下钻(点击来源可查看其服务后端、新鲜度与校验状态),以及搜索进行中的进度指示(扫光动画 + 客户端计时的已耗时标签——宿主不提供进行中进度通道,结果到达前不声称阶段与服务后端);当 web seam 未固定到本插件时优雅降级(不冒领回执、不虚构徽章、不声称后端),不会把别人后端的结果显示成 web-search-ext 的结果
- Web 端会话 Health 标签页:设置卡片的 Health 标签页显示宿主 GET /web-search-ext/health 路由提供的会话遥测——运行时长、各后端成功/失败次数、最近调用时间、活动中的 429 冷却、会话搜索/抓取计数;载荷仅含计数器(不含凭证、URL、查询文本),路由未注册(CLI/headless 场景)时标签页显式显示不可用状态并给出重试,而非空白
- Web 端首装连接探测:Health 标签页的连接状态区探测 Exa(带 key REST 或无 key MCP)与 Firecrawl(带 key 或无 key)——首次打开标签页且无已存结果时自动探测一次,"立即测试"可随时重测——每个后端显示封闭状态码(正常 / 限流 (429) / 认证被拒绝 / 超时 / 网络错误 / 请求失败 / 未启用)与耗时。宿主仅在 POST /web-search-ext/probe 按需探测,apply 时不探测,因此安装、宿主重启与 CI 全程不产生供应商调用;载荷只含计划字面量与封闭状态码(不含供应商消息、URL、密钥)
- Web 端 /search-engine 斜杠命令:在输入框的 / 菜单中直接切换首选后端、查看实时状态(key 来源、最近调用结果、活动中的 429 冷却)并运行连通性测试——由宿主的弹出菜单外壳渲染。若 /search-engine 已被占用,命令改注册为 /web-search-engine,设置卡片会标明实际生效的名称(或两者均不可用)——回退会被显式告知,绝不静默
- 无安装期脚本:纯 ESM JavaScript,无构建步骤,无 postinstall/prepare
- 可扩展:加一个后端 = 一个搜索函数 + 一个 plan 条目 + 配置字段,见 CONTRIBUTING
后端
| 后端 | 搜索 | 抓取 |
| Exa | 有 key:REST POST https://api.exa.ai/search(限额更高、带高亮摘要);无 key:匿名 hosted MCP POST https://mcp.exa.ai/mcp(JSON-RPC 2.0,官方文档化的公共回退端点,有速率限制 → HTTP 429) | 无 key:hosted MCP web_fetch_exa 工具(回退路径) |
| Firecrawl | POST https://api.firecrawl.dev/v2/search(有 key 走 Bearer;firecrawlKeyless: true 时允许无 key 请求——非官方支持,可能被限流或移除) | POST {base}/scrape(可有 key 或无 key;首选抓取路径——markdown + 元数据) |
安装
dsh plugin --profile web add @fno2010/dsh-web-search-ext
或从本地 checkout 安装:
dsh plugin --profile web add ./path/to/dsh-web-search-ext
安装插件后需要重启正在运行的 dsh web 进程(profile 的 bundle 列表在启动时解析)。之后改配置是热加载的——不用重启。
bundle patch 通过设置 web.searchProvider: web-search-ext 让本插件接管内置 web_search 工具,并设置 web.fetchProvider: web-search-ext 接管 web_fetch。官方 deepseek-official 提供方保持注册但不使用;显式选择同时避免了 WEB_PROVIDER_AMBIGUOUS。
插件还会让模型侧的 web_fetch 工具开箱即用。该工具正常情况下由 agent-preset 层(tool-web)注册;0.2 之前的出厂 preset 中该行是 fetch: false,且 dsh web profile 仍会禁用 profile 层的 tool-web 行——因此某些组合下不会有任何路径注册 web_fetch,即使 fetch provider 已装好,模型调用也会报 unknown tool "web_fetch"。本插件在 apply 阶段补齐这一缺口:当 web_fetch 尚未注册时,复用 @deepseek-ai/dsh-tool-web 自己的 applyWebFetchTool 注册出厂工具(schema、提示词、呈现与 harness 完全一致)。工具的执行路径走 ctx.web.fetch——即 pin 到本插件的 web 缝——其抓取路径有 fail-closed 的 SSRF 检查(仅允许公共 http(s) 目标,这正是 base 禁用该工具的原因)。若某个 preset 启用了 tool-web.fetch,它注册的 agent 层工具优先于本插件的注册;若工具已存在,本插件的注册步骤自动跳过。要彻底关闭 web_fetch,卸载本插件即可。
配置
配置位于当前 profile 的 patch 文件中本插件的行:$DSH_HOME/profiles/<profile>/cordis.patch.yml(可直接编辑,或使用设置卡片)。该行热加载:插件每次调用都读取其 volatile 字段。
| 字段 | 默认值 | 说明 |
| preferred | exa | 首选后端:exa \| firecrawl |
| numResults | 8 | 请求的结果条数;同时是返回条数的硬上限(上下文预算)——更大的 maxResults 请求会被钳制到它,回执中会注明 |
| maxSnippetChars | 500 | 摘要长度上限 |
| rateLimitCooldownSec | 60 | 后端未报告窗口时的兜底 429 冷却(秒);0 关闭 |
| firecrawlKeyless | true | 允许无 key 的 Firecrawl 请求(搜索与抓取) |
| exaApiKey / firecrawlApiKey | — | 各后端的明文 API key |
| exaApiKeyEnv / firecrawlApiKeyEnv | EXA_API_KEY / FIRECRAWL_API_KEY | key 解析用的环境变量名 |
| exaApiUrl / exaMcpUrl / firecrawlBaseUrl | https://api.exa.ai/search / https://mcp.exa.ai/mcp / https://api.firecrawl.dev/v2 | 端点覆盖 |
| verifyLevel | liveness | 结果校验层级:off \| liveness(对每条来源做 HEAD 探测)\| content(实验性:额外检查页面是否仍包含摘要关键词) |
| livenessTimeoutMs | 3000 | L0 HEAD 探测的单 URL 超时 |
| contentCheckBytes | 10240 | L1 每个页面读取的最大字节数 |
| contentCheckMinBytes | 200 | L1 短于此长度视为反爬空壳页 |
| contentCheckMatchWords | 5 | L1 对照摘要前 N 个词 |
| contentCheckTimeoutMs | 3000 | L1:请求与正文读取各一个超时预算 |
| freshness | any | 时间窗口:any \| 24h \| 7d \| 30d(后端支持时随请求发出;无 key Exa MCP 无法过滤,回执会说明) |
| maxCooldownSec | 86400 | 采用后端报告的 retry_after 冷却时的上限;0 = 完全采用报告值 |
| fetchMaxChars | 50000 | web_fetch 输出字符上限 |
- id: web-search-ext
name: '@fno2010/dsh-web-search-ext'
config:
preferred: exa
numResults: 8
rateLimitCooldownSec: 60 # 其余均为默认值
也可以不用 bundle patch,用环境变量选择本插件:DSH_WEB_SEARCH_PROVIDER=web-search-ext。
Key(可选但推荐)
每个后端按以下优先级解析 key:
1. 插件配置行里的明文 key(exaApiKey / firecrawlApiKey)
2. 凭证服务:~/.dsh/.credentials.yaml(或 .env 文件)中的 EXA_API_KEY / FIRECRAWL_API_KEY 条目
3. 同名的启动环境变量
设置界面(Web):本插件在 设置 → 插件 → Web Search (ext) 标签页中有卡片,可编辑六个配置字段(含校验层级)和两个 API key;写入会持久化到 profile patch 的本插件行。key 状态自动发现自上述各层——~/.dsh/.credentials.yaml 变更时"已配置/未配置"徽章实时更新;由 live 进程环境变量提供的 key 渲染为只读,因为宿主会拒绝会被环境变量值遮蔽的 UI 写入。("模型"页面只管理 LLM 提供方凭证。)
一个 key 都没有也能工作:Exa 走匿名 MCP 端点,Firecrawl 以无 key 方式尝试。
故障切换机制
每次搜索(及每次抓取)按"当前 key 情况下可用的后端"构建有序计划——搜索时首选后端在前;抓取时优先 Firecrawl scrape(markdown 更完整),无 key 的 Exa MCP 抓取作回退。只有当后续所有后端都失败时,才把第一个失败的后端作为整体错误报出——429 额外触发该后端的冷却,冷却时长优先采用后端自己报告的窗口(Retry-After 响应头,或响应体中的 retry_after_seconds;由 maxCooldownSec 封顶),窗口内后续调用会跳过它。
web_search 结果还携带单行来源回执(web-search-ext: <backend> · <elapsed>s · <n> results · liveness: …):哪个后端实际应答、时间窗口或校验层级是否被实际执行。不会有任何东西被静默丢弃。
卸载
dsh plugin --profile web remove @fno2010/dsh-web-search-ext # 然后重启 dsh web
安全说明
- 出站请求只发往所配置的 Exa 与 Firecrawl 端点(另有下文所述的本地校验探测),不接触任何其它服务。
- API key 只出现在其后端请求的 authorization 头里——不进请求体、不发往另一个后端、不出现在错误信息中。
- 无安装期脚本:纯 ESM JavaScript,无构建步骤,无 postinstall/prepare。
- 单次搜索的上下文有界:结果条数钳制在 numResults(请求的 maxResults 超过它时回执带 (numResults cap) 标记;后端又超量返回时为 N of M results 形式),摘要有长度上限(maxSnippetChars);Firecrawl 的页面 markdown 描述在进入模型上下文前会剥掉图片链接。
- 校验探测(L0/L1)只抓取后端结果中出现的 URL,字节数与超时均有界;重定向逐跳手动跟随,每一跳都按同一套 SSRF 规则重新校验(仅允许公共 http(s);环回、内网、链路本地、CGNAT 地址一律拒绝——包括 IPv6 字面量与末尾点号拼写;无法确定是公共地址的一律拒绝,fail closed)。
- web_fetch 提供方在把 URL 交给任何抓取后端之前,拒绝非公共目标(非 http(s) 协议、环回、内网、链路本地地址)。
开发
- 测试:npm test——mock 故障切换/映射/校验/抓取场景(确定性、无网络)+ 真实无 key 冒烟调用(CI 中跳过冒烟)。
- 添加后端、分支/PR 规范、发版流程:CONTRIBUTING.md。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fno2010/dsh-web-search-ext
面向 DeepSeek HarnessDSH的多后端 websearch 与 webfetch 提供方。完全不需要…
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 883已汉化DSH
68.9
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 387已汉化DSH
67.8
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 415已汉化DSH
67.7
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。