前言¶
dsh web 启动后,通常还需要在浏览器中访问本地 Web UI。dsh-open-browser 把这一步放在插件里完成:在 dsh web 启动完成、可以对外服务时,自动用系统默认浏览器打开 Web UI。
这是什么¶
dsh-open-browser 是 peach0x33a 维护的 DSH 插件,许可证为 MIT。
它面向已经使用 dsh web 的本地场景,解决“服务已就绪,但还需要手动打开浏览器”的步骤。包声明如下:
name: dsh-open-browser
license: MIT
engines: node >=22
peerDependencies: @deepseek-ai/schemastery *
devDependencies: @deepseek-ai/schemastery ^3.18.1
这里的零运行时依赖,是指运行时不额外引入依赖;peer 使用 dsh 自带的 @deepseek-ai/schemastery 做配置校验。
核心功能¶
- 零运行时依赖,仅 peer 使用 dsh 自带的
@deepseek-ai/schemastery做配置校验。 - 跨平台支持 macOS、Linux X11、Linux Wayland、Windows、WSL。
- 无头安全:Linux 无
DISPLAY/WAYLAND_DISPLAY且非 WSL 时静默跳过并打印一行提示。 - 时机精确:与 web-app 打印 URL 行同一就绪点(Loader 树 settle 之后),
--port 0的 OS 分配端口也能拿到。 - 不阻塞关停:opener 子进程 detached +
unref,Ctrl-C/SIGTERM 关停不受影响。 - 支持通过 profile 的
cordis.patch.yml按行 id 覆盖配置open与delayMs。
安装与启用¶
1、安装到 web profile:
dsh plugin --profile web add dsh-open-browser
2、也可以从 git 直装:
dsh plugin --profile web add github:peach0x33a/dsh-open-browser
3、启动 web 服务:
npx @deepseek-ai/dsh web
启动完成后终端会打印:
dsh web: http://127.0.0.1:3080
dsh-open-browser: opened http://127.0.0.1:3080 via xdg-open
第一行表示 dsh web 已打印可访问地址,第二行表示插件通过系统默认浏览器打开了该地址。
配置¶
可以在 ~/.dsh/profiles/web/cordis.patch.yml 中按行 id 覆盖配置 open 与 delayMs:
- id: dsh-open-browser
config:
open: false
delayMs: 0
示例中 open: false 表示关闭自动打开,delayMs: 0 表示 0 毫秒延迟。
平台与注意事项¶
- 支持平台包括 macOS、Linux X11、Linux Wayland、Windows、WSL。
- 无头 Linux 下,若没有
DISPLAY/WAYLAND_DISPLAY且非 WSL,不执行打开浏览器,只打印跳过提示。 - Linux
$BROWSER若设置成带参数形式(如firefox %s),该分支会失败并打印console.error;不设置$BROWSER、交给xdg-open即可。 - 极简 Linux 缺少
xdg-open时打印错误行,启动不受影响;可安装xdg-utils或设置$BROWSER。 - Windows 无桌面会话(服务/SSH 非交互)下
Start-Process失败时打印错误行,启动不受影响。 - WSL 关闭 interop 导致
powershell.exe不可达时报错行,启动不受影响。
适用场景与安装注意¶
适合本地使用 dsh web、希望在服务就绪后直接打开 Web UI 的开发者;也适合在无头环境中避免执行打开浏览器操作。
由于插件会随当前 dsh 进程运行,安装前应检查源码、许可证和插件行为。该插件许可证为 MIT,仓库地址为 peach0x33a/dsh-open-browser。
结尾¶
dsh-open-browser 的价值是把 dsh web 的就绪动作和系统默认浏览器打开动作合并在一个插件里完成。仓库地址:https://github.com/peach0x33a/dsh-open-browser