中文EN

dsh-moli-browser

browsernpmMIT

为 DSH 挂出完整的浏览器工具面(33 个 browser_* 工具):把 ctx.browser 接缝接到自管的 moli 无头浏览器(经 127.0.0.1 单例 CDP 守护进程,带 Bearer token 鉴权、请求路径白名单与 WebSocket 地址改写,不需要 root / GUI 库 / Electron;单发动机 moli serve 直连,自动注入 LD_LIBRARY_PATH 与 FONTCONFIG_FILE,profile 目录持久化登录态);另带一个网页面板——可直接点、滚、打字的实时页面,操作/控制台/网络日志与一键清理,窗口外观(边框色、透明度、玻璃效果)

下载量 / Downloads
429

安装

dsh plugin --profile web add dsh-moli-browser

沙箱测试

这个插件还没测过。提交测试 →

README

dsh-moli-browser

![npm version](https://www.npmjs.com/package/dsh-moli-browser)

给 DSH 一个能跑在无 root、无 GUI 容器里的浏览器。 一个包、一条 dsh plugin add 装完即用:单例 CDP 守护进程(内核 = moli,只绑回环、带 Bearer token 门)+ 完整的 33 个 browser_* 工具面 + ctx.browser 接缝的 cdp-daemon provider + 一个网页浮动窗口(实时画面可点可打字)+ 两份随包全局技能。不需要 Electron、不需要 GUI 库、不需要 root、没有构建步骤。

English TL;DR — A single-package browser backend for DSH. One tarball ships a singleton CDP daemon (engine: moli, bound to loopback behind a Bearer-token proxy), the full 33-tool browser_* surface, the ctx.browser seam provider cdp-daemon, an in-page floating panel (live interactive view + logs + appearance settings) and two bundled global skills. No root, no GUI libraries, no Electron, no build step. Platform: x86_64 Linux (glibc) only.
```bash
dsh plugin --profile web add dsh-moli-browser@latest # then restart DSH
```

界面预览

一处入口,一个窗口。 装完插件、重启一次 DSH,页面左上角就多出一枚小胶囊(贴哪个角、偏多少都能改,也可以直接拖到任意位置)。点开就是浏览器窗口:左边一竖排入口(网页 / 操作 / 控制台 / 网络 / 设置),中间是能点、能滚、能打字的实时画面,右下角能拖宽窄,标题栏能拖、双击能最大化。

实时画面(默认入口):能点、能滚、能打字 · 在真 DSH 界面里:居中、贴合画面比例、没有黑边

!实时画面 · !真机效果

设置区:分辨率、顶部留白、胶囊偏移、窗口外观 · 网络日志:手动清理 + 自动清理上限 · 收起后的胶囊:位置与外观都跟随设置

!设置区 · !网络日志 · !胶囊

<details>

<summary>为什么大屏页面也能看清(0.8.2 修掉的「画面糊」)</summary>

<br>

取帧曾经漏发 maxh,被服务端当成 0 夹到下限 240,于是 1920×1080 的页面被等比压进 max×240 的小框、再被界面放大。0.8.2 起:缺字段沿用当前值、最大边同时封顶宽高、大屏页面按原尺寸下发。

</details>

目录

  • [这是什么 / 它解决什么问题](#这是什么--它解决什么问题) | [安装](#安装) | [快速开始](#快速开始起守护进程)
  • [CLI 参考](#cli-参考browsersvc) | [工具参考](#工具参考33-个-browser_) | [网页面板与实时窗口](#网页面板与实时窗口)
  • [随包技能](#随包技能技能中心里显示系统内置) | [配置](#配置) | [观测与状态文件](#观测与状态文件)
  • [环境要求与兼容性](#环境要求与兼容性) | [FAQ](#faq) | [更新记录](#更新记录) | [文档](#文档)

这是什么 / 它解决什么问题

现状问题 · 本项目的做法

DSH 内置 dsh-builtin-browser 的 provider 是自托管 Electron:没有 Electron 二进制、没有 GUI 库、seccomp 下 No usable sandbox! · 用 moli(静态 Linux 二进制,自带排版与资源管线),--layout --resource,库/字体指向用户态目录,不需要 root

每个消费方各起一个浏览器(内存重复) · 一个守护进程,多客户端通过 CDP 连入,会话用隔离 BrowserContext 分开

CDP 端口若对外监听 = 把浏览器(含 cookie)交给主机上任意进程 · 内核只绑 127.0.0.1:<内部随机端口>,对外只暴露本机回环代理(要求 Bearer token,只放行读元数据与 /devtools);代理顺带精确统计连接数

dsh-univer-office 只接受「浏览器可执行文件路径」,无法连远端 CDP · univer 用它自己的包装脚本起临时实例(它没有 connectOverCDP 能力),与本包守护进程互不影响

安装

# 一条命令(推荐;可重复执行)
dsh plugin --profile web add dsh-moli-browser@latest

# 钉版本 / 离线分发(同一个包):Release 资产或本地 tarball
#   dsh plugin --profile web add https://github.com/lyp88997/dsh-moli-browser/releases/download/v1.0.1/dsh-moli-browser-1.0.1.tgz
#   dsh plugin --profile web add ./dsh-moli-browser-1.0.1.tgz

# 然后重启 DSH(插件在 boot 时 import,热重载不可靠),再校验组合:
dsh --profile web --dump-config | grep -E 'browserProvider|# == dsh-moli-browser|not found'

期望看到 browserProvider: cdp-daemon、# == dsh-moli-browser 层;browser-electron / playwright-browser 两条守卫行会打印 not found(只装本包时这两个 id 不存在,无害)。

装完这一个包就有什么

  • **33 个 browser_* 工具**(id: tool-browser):工具面与接缝来自本包依赖 dsh-builtin-browser,经本包 ./browser / ./tool-browser 转出口暴露(plugin/shims/)。
  • cdp-daemon provider:接到自建守护进程,首次用浏览器时用本包自带的 bin/browsersvc.mjs start 自动拉起。
  • 网页浮动窗口:实时画面(可点/滚/打字/地址栏)、操作/控制台/网络日志、窗口外观与设置。
  • 两份随包技能:browser、browser-runtime,由插件注册的内置技能提供者提供,技能中心里显示「系统内置」。

三条不要做的事

  • 不要再单独装 dsh-builtin-browser:它若同时是组合包,browser/tool-browser 两个 id 会被插两次、33 个工具重名挂两遍。已装过就先 dsh plugin --profile <name> remove dsh-builtin-browser。
  • 不要与旧包 dsh-browser-service 同时装:两包共用 browsersvc CLI 名与 /browser-service/* 面板路由,同装必撞(pnpm 会警告 bin 冲突)。装本插件前先 dsh plugin --profile <name> remove dsh-browser-service 并重启 DSH。
  • 不要用旧名 dsh-browser-moli 当裸包名(前身子包的名字):npm 上的 dsh-browser-moli 是别人的同名包(drscrewdriver),写了就装到别人家。本包是 dsh-moli-browser,当前版本 1.0.1(1.0.1 = moli 单发动机重写首版)。
  • 不要与手写 patch 同时用:bundle patch 与手写 profiles/<name>/cordis.patch.yml 的 insert 行会重复(写法见 docs/profile-patch.browser-service.yml,只在改源码时临时用)。

组合(plugin/cordis.patch.yml)自动做四件事:插入接缝 browser(选 cdp-daemon)、插入 tool-browser、插入 browser-moli provider、关掉内置 browser-electron 与 dsh-playwright-browser(后者自带 10 个与内置同名的 browser_* 工具,两个 provider 的工具面不能共存)。

不需要配置 autoStartCommand:端点不通时插件默认用本包自带的 bin/browsersvc.mjs start 拉起一次(plugin/lib/provider.js 的 defaultAutoStartCommand())。想换端口/内核,再在 profile 的 cordis.patch.yml 里覆盖(patch 是整行替换 config,要重述 cdpUrl):

- id: browser-moli
  config:
    cdpUrl: http://127.0.0.1:9333
    autoStartCommand: node /home/you/dsh-moli-browser/bin/browsersvc.mjs start --port=9333

browsersvc 默认空闲 15 分钟自杀(--idle-ms,上限 24 小时);插件自启时默认用 5 分钟(配置键 idleMs)。最后一个会话关闭后插件会主动断开 CDP 连接(P1),守护进程才可能真的空闲退出;下一次调用浏览器会自动把它拉回来(F25,见 CHANGELOG)。

⚠️ 改完必须重启 DSH(插件在 boot 时 import,热重载不可靠):运行中的完整 web profile 上 patchReload: live 会静默回滚(进

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:1,最后更新 2026-10-05

链接

GitHub · Homepage · npm

同类插件