DeepSeek Harness Hub
← 返回列表

GreyRaphael/dsh-web-fetch-moli

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

DeepSeek Harness DSH 官方生态插件,为内置 webfetch 工具提供基于 Moli超轻量级…

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/17 · 已提供中文文档
综合分
31.4
GitHub 分
31.4
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add GreyRaphael/dsh-web-fetch-moli
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-web-fetch-moli(未发布到 npm,仅可源码安装)
Node 引擎要求 >=20 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 04:05:05

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-settings@deepseek-ai/dsh-web
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-web-fetch-moli

English · GitHub

DeepSeek Harness (DSH) 官方生态插件,为内置 web_fetch 工具提供基于 Moli(超轻量级 Rust 无头浏览器)的渲染后端。在仅占用 ~60MB 内存(相比 Chromium/Playwright 的 ~1GB 降低超 90%)的前提下,完美支持企业级复杂微前端(Micro-Frontend)、动态单页应用(SPA)与静态页面,并通过 LinkeDOM + Readability + mdream 高性能双阶段管道降噪清洗后输出规范的大模型优化 Markdown。

核心特性

- 极致低内存占用 — 单个本地 Moli 常驻守护服务仅占用 ~50–60 MB 内存,在资源受限的边缘节点或云服务器上亦可轻松支撑高并发抓取。
- 企业级微前端与复杂 SPA 全面兼容 — 突破了传统轻量级无头浏览器(如 Lightpanda 在 iframe 沙箱崩溃、Obscura 在 style-loader 报错)的瓶颈:
- 支持 CDP 动态绕过 CSP(Page.setBypassCSP)、证书忽略与 SW 穿透,彻底解决严格内容安全策略阻止动态 import() 的问题。
- 基于 CDP Micro-Clip 排版物化(Page.captureScreenshot 1x1 微视口)驱动 Moli 原生排版树计算,联动 W3C 标准 scrollIntoView({ block: 'nearest' }) 触发展开全量无限滚动与瀑布流卡片列表(零用户脚本注入、零代理劫持)。
- 两种灵活运行模式:
- local(默认):自动拉起受管的本地 moli serve CDP 守护进程,提供最完整的动态 SPA 渲染能力(~60MB 极低内存)。
- cdp:连接用户自建或远端的 Moli / Chromium CDP 服务。
- 高性能双阶段降噪管道 — 采用 LinkeDOM + Mozilla Readability 提取正文并剔除布局噪音(广告、导航栏、侧边栏、页脚),并通过 mdream(Rust 原生引擎 + 纯 JS 回退)转为高质量、高保真大模型友好 Markdown。自动缩略长 base64 图片,防止污染上下文。
- Cloudflare 挑战有界等待 — 自动识别 cf-mitigated: challenge 验证页,在同一页面上下文内有界等待浏览器自然完成人机验证,无需任何违规模拟行为。

方案对比

| 特性 / 指标 | Chromium / Playwright | Lightpanda (Zig) | Obscura (Rust) | Moli (Rust) + DSH 插件 |
| :--- | :--- | :--- | :--- | :--- |
| 内存占用 | ~800 MB – 1.2 GB | ~40 MB | ~50 MB | ~50 – 60 MB |
| 微前端沙箱兼容性 | ✅ 完整 | ❌ iframe 沙箱崩溃 (contentWindow.bind) | ❌ 动态 style-loader 样式报错 | ✅ 100% 完美支持(CDP + CSP 绕过) |
| 无限滚动/懒加载卡片 | ✅ 原生像素循环 | ❌ 几何模型不全 | ❌ 几何模型不全 | ✅ 原生排版物化 + 滚动 (Micro-Clip CDP) |
| 交互协议 | 重量级 CDP | 轻量级 CDP | 自定义 / CDP | 轻量级原生 CDP |

架构原理

web_fetch (tool-web)
└─ ctx.web.fetchProvider = moli
├─ local: 自动定位 moli 二进制 → 启动并管理 moli serve 守护进程 → connectOverCDP
│           └─ setupPageHooks: 开启 Page.setBypassCSP + 证书忽略 + 绕过 Service Worker
├─ cdp:   连接用户配置的 remoteEndpoint CDP 端口
├─ page.goto → Micro-Clip 排版物化 + 原生滚动循环 → 等待网络空闲 (networkidle) → page.content()
├─ 降噪管道: LinkeDOM (DOM) → Readability (正文提取) → mdream (转 Markdown)
└─ 输出 Markdown(关闭 denoise 时输出原始渲染 HTML)

环境依赖

- DeepSeek Harness (dsh web),Node.js ≥ 20。
- 免手动安装:插件内置首次使用自动下载安装能力。若检测到系统中未安装 Moli,会自动从官方 Release 下载适配当前操作系统与 CPU 架构(Linux、macOS、Windows x86_64 / arm64)的最新版二进制并就绪,开箱即用。
- 亦支持使用已有的 Moli v1.1.5+(置于系统 $PATH、~/.local/bin/moli,或在配置项中指定 moliPath)。

手动安装参考(可选):
curl -sSL https://github.com/lexmount/moli/releases/latest/download/moli-x86_64-unknown-linux-gnu.tar.gz | tar -xz -C ~/.local/bin
chmod +x ~/.local/bin/moli

安装插件

方式 1:直接通过 GitHub 仓库安装(即时可用)
dsh plugin --profile web add github:GreyRaphael/dsh-web-fetch-moli

方式 2:通过 npm 包名安装
dsh plugin --profile web add dsh-web-fetch-moli

添加后重启 dsh web 即可生效。

设置与配置

在 DSH 设置面板(设置 → 插件 → 插件配置 → Moli 网页爬取)中可热更新配置:

| 配置项 | 默认值 | 说明 |
| --- | --- | --- |
| backend | local | 后端模式:local(受管本地 Moli 服务)或 cdp(远端 CDP 地址)。 |
| moliPath | (自动) | moli 可执行文件路径;留空自动按系统 $PATH 探测。 |
| cdpEndpoint | 127.0.0.1:9222 | 远端 CDP 地址(host:port 或完整 URL,在 cdp 模式生效)。 |
| bypassCsp | true | 是否通过 CDP 开启 Page.setBypassCSP,微前端沙箱动态加载脚本必备。 |
| autoScrollSentinel | true | 是否自动触发 IntersectionObserver 哨兵,加载瀑布流无限滚动卡片。 |
| shareBrowserContext | true | 是否复用浏览器上下文(在 cdp 模式生效);本地模式下始终使用隔离上下文防止污染。 |
| denoise | true | 启用 LinkeDOM + Readability + mdream 降噪与 LLM 优化 Markdown 转换。 |
| maxConcurrency | (自动) | 最大并发抓取数(自动:本地 20,远端 50)。 |
| challengeWaitMs | 15000 | Cloudflare 人机验证有界等待上限(毫秒;0 为关闭)。 |
| challengeRetries | 1 | 验证超时后的同页面重试次数。 |

开源协议

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群