🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

网页网关 GooDAnDReaDY/dsh-web-gateway

DeepSeek Harness
GooDAnDReaDY38 天前有提交已提供中文文档扫描:含敏感能力

多源回退搜索并安全提取网页正文

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add GooDAnDReaDY/dsh-web-gateway
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · search
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 39 条)
  • 发起网络请求
    lib/client.js:330
    const res = await fetch('/api/dsh-web-gateway/update', { method: 'GET', credentials: 'same-origin' })
  • 发起网络请求
    lib/client.js:350
    const res = await fetch('/api/dsh-web-gateway/update', {
  • 发起网络请求
    lib/client.js:389
    const res = await fetch('/api/dsh-web-gateway/health', { method: 'GET', credentials: 'same-origin' })
  • 发起网络请求
    lib/client.js:399
    const res = await fetch('/api/dsh-web-gateway/health', { method: 'POST', credentials: 'same-origin' })
  • 写入本地文件
    lib/disk-cache.js:34
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    lib/disk-cache.js:43
    entries = readdirSync(dir).filter((f) => f.endsWith('.json'))
  • 读取本地文件
    lib/disk-cache.js:51
    return { p, mtime: statSync(p).mtimeMs }
  • 删除本地文件
    lib/disk-cache.js:58
    try { unlinkSync(item.p) } catch { }
  • 读取本地文件
    lib/disk-cache.js:66
    if (!existsSync(p)) return undefined
  • 读取本地文件
    lib/disk-cache.js:68
    const raw = JSON.parse(readFileSync(p, 'utf8'))
  • 删除本地文件
    lib/disk-cache.js:70
    unlinkSync(p)
  • 删除本地文件
    lib/disk-cache.js:74
    unlinkSync(p)
  • 删除本地文件
    lib/disk-cache.js:79
    try { unlinkSync(p) } catch { }
  • 写入本地文件
    lib/disk-cache.js:88
    writeFileSync(tmp, payload)
  • 写入本地文件
    lib/disk-cache.js:89
    renameSync(tmp, p)
  • 删除本地文件
    lib/disk-cache.js:92
    try { unlinkSync(tmp) } catch { }
  • 读取本地文件
    lib/disk-cache.js:97
    for (const f of readdirSync(dir)) {
  • 删除本地文件
    lib/disk-cache.js:98
    if (f.endsWith('.json')) unlinkSync(resolve(dir, f))
  • 读取本地文件
    lib/disk-cache.js:104
    return readdirSync(dir).filter((f) => f.endsWith('.json')).length
  • 写入本地文件
    lib/caps.js:23
    mkdirSync(resolve(path, '..'), { recursive: true })
  • 读取本地文件
    lib/caps.js:29
    if (!existsSync(path)) return { day: utcDay(), counts: {} }
  • 读取本地文件
    lib/caps.js:30
    const raw = JSON.parse(readFileSync(path, 'utf8'))
  • 写入本地文件
    lib/caps.js:53
    writeFileSync(tmp, JSON.stringify(state, null, 2))
  • 写入本地文件
    lib/caps.js:54
    renameSync(tmp, path)
  • 写入本地文件
    lib/caps.js:56
    try { writeFileSync(path, JSON.stringify(state)) } catch { }
  • 写入本地文件
    lib/providers.js:111
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/providers.js:117
    writeFileSync(filePath, buf)
  • 读取本地文件
    lib/providers.js:121
    const files = readdirSync(dir)
  • 读取本地文件
    lib/providers.js:125
    return { p, mtime: statSync(p).mtimeMs }
  • 删除本地文件
    lib/providers.js:129
    try { unlinkSync(old.p) } catch (_e) { }
  • 发起网络请求
    lib/url-policy.js:334
    if (!proxyAgents.has(key)) proxyAgents.set(key, new ProxyAgent(key))
  • 发起网络请求
    lib/url-policy.js:338
    if (opts.resolve) return new Agent({ connect: { lookup: makeLookupHook(opts.resolve) } })
  • 发起网络请求
    lib/url-policy.js:339
    if (!defaultSafeAgent) defaultSafeAgent = new Agent({ connect: { lookup: makeLookupHook(lookup) } })
  • 读取本地文件
    lib/updater.js:69
    if (!existsSync(entry)) return undefined;
  • 读取本地文件
    lib/updater.js:72
    if (existsSync(manifestPath)) {
  • 读取本地文件
    lib/updater.js:74
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
  • 发起网络请求
    lib/updater.js:146
    const response = await fetch(`${registry.replace(/ $/, '')}/${encodeURIComponent(packageName)}/latest`, {
  • 读取本地文件
    lib/updater.js:160
    const value = JSON.parse(await readFile(manifestUrl, 'utf8'));
  • 执行外部命令来自配置/变量
    lib/updater.js:182
    const child = spawn(process.execPath, [
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-credentials@deepseek-ai/schemastery@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 多源回退搜索
  • 安全提取网页正文
  • 防SSRF提取

为 DeepSeek Harness 提供抗故障的网页搜索与页面提取工具,支持服务商回退和防 SSRF 的提取

README

由 DeepSeek 最新模型翻译生成
📦 @goodandready/dsh-web-gateway 面向 DeepSeek Harness 的高可用网页搜索与 SSRF 安全页面提取回退链套件 🇬🇧 English • 🇨🇳 中文说明 • 🇷🇺 Русский ⭐ 如果您喜欢这个插件,请在 GitHub 上为它点亮 Star — 这能让我知道插件对您有用,并鼓励我继续开发和维护它。 🐛 如果您发现 Bug 或希望增加功能,请使用任意语言在 GitHub 上提交 Issue — 我会评估您的建议,并在后续版本中实现有价值的改进。 面向 DeepSeek Harness 的弹性 网页搜索 与 页面提取 工具。 当内置 web_search / web_fetch 遇到限流、验证码或空结果时,本插件提供另一套独立工具名的回退链(不会与核心工具注册冲突)。 工具 | 工具 | 作用 | | web_gateway_search | 网页搜索。链路:Tavily → Brave → Firecrawl → Exa → 本地 SearXNG → DuckDuckGo | | web_gateway_extract | 将 URL 提取为 Markdown。
展开完整文档(README 剩余 1 节)
📦 @goodandready/dsh-web-gateway

面向 DeepSeek Harness 的高可用网页搜索与 SSRF 安全页面提取回退链套件

🇬🇧 English •
🇨🇳 中文说明 • 🇷🇺 Русский

⭐ 如果您喜欢这个插件,请在 GitHub 上为它点亮 Star — 这能让我知道插件对您有用,并鼓励我继续开发和维护它。

🐛 如果您发现 Bug 或希望增加功能,请使用任意语言在 GitHub 上提交 Issue — 我会评估您的建议,并在后续版本中实现有价值的改进。

面向 DeepSeek Harness 的弹性 网页搜索 与 页面提取 工具。

当内置 web_search / web_fetch 遇到限流、验证码或空结果时,本插件提供另一套独立工具名的回退链(不会与核心工具注册冲突)。

工具

| 工具 | 作用 |
| web_gateway_search | 网页搜索。链路:Tavily → Brave → Firecrawl → Exa → 本地 SearXNG → DuckDuckGo |
| web_gateway_extract | 将 URL 提取为 Markdown。链路:Firecrawl → Tavily → Crawl4AI → Jina → readability |
| web_gateway_research | 搜索并提取多来源网页为精简 Markdown 摘要 |

缺少密钥、空结果、HTTP 429/5xx 或网络错误时会跳过该提供商。内置熔断器 (Circuit Breaker) 会在多次连续失败后自动暂时隔离该提供商。结果可按 TTL 缓存在内存中。

提取 URL 会校验:仅 http/https,禁止 URL 内嵌凭据,主机名必须解析为 公网 IP(回环 / RFC1918 / 链路本地 / 元数据地址默认拦截)。仅在确实需要时才打开 allowInternalUrls。

安装

dsh plugin --profile web add @goodandready/dsh-web-gateway

安装后请重启 web 配置文件。

凭证

在 设置 → 凭证(或 $DSH_HOME/.credentials.yaml)中保存密钥。设置卡片只保存 凭证名称,不保存密钥本身。

与核心网页工具的关系

Harness 已通过 @deepseek-ai/dsh-tool-web 提供 web_search / web_fetch。本插件 不替换 它们,只额外提供 web_gateway_* 作为回退。

许可证

MIT © GooDAnDReaDY
预览分享卡片长什么样 ↓GooDAnDReaDY/dsh-web-gateway
分享 · DeepSeek Harness Hub
GooDAnDReaDY/dsh-web-gateway

多源回退搜索并安全提取网页正文

回到顶部