跨平台 Web UI 启动器:提供 webui_start/stop/status/open 模型工具、/webui start|stop|status|open 斜杠命令、设置页启动卡片,以及可选的桌面快捷方式——隐藏控制台启动 Web UI,完全就绪后自动打开浏览器,默认使用 dsh 官方图标。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/YV3507/dsh-webui-launcher/releases/download/v0.1.11/dsh-webui-launcher-0.1.11.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:YV3507/dsh-webui-launcher
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
一个从 harness 内部启动、停止、检查并打开 DeepSeek Harness Web UI 的 DSH 插件——跨平台(Windows / macOS / Linux),无需任何桌面脚本。
安装
dsh plugin --profile web add github:YV3507/dsh-webui-launcher
或从本地检出安装:
cd dsh-webui-launcher
npm install && npm run build
dsh plugin --profile web add .
提供的能力
- 模型工具
webui_status/webui_start/webui_stop/webui_open——后台启动 Web UI(spawndsh --profile web)、等待 HTTP 200、查询或停止、打开默认浏览器。 /webui start|stop|status|open斜杠命令。- Web UI 设置页上的「Web UI 启动器」卡片(浏览器半,
exports["./client"]),驱动同一组/webui/*JSON 端点。 - 桌面快捷方式:首次启动插件时在桌面自动创建启动器快捷方式(Windows
.lnk/ Linux.desktop/ macOS.command),双击后启动 Web UI 并在就绪时打开浏览器。无头主机(无桌面、无 DISPLAY)会静默跳过——插件在服务器上绝不会因此崩溃。可用desktopShortcut: false关闭。 - 默认图标为 dsh 图标:快捷方式默认使用 dsh 的官方图标(Web 应用 favicon 光栅化并内置在插件
assets/中;Windows 用.ico、Linux 用.png)。图标被复制到持久化状态目录,重装插件不会丢失。 - 自定义快捷方式图标:在设置卡片上传任意图片(PNG/JPEG/BMP/GIF/TIFF),自动转换(Windows 生成多尺寸
.ico,Linux 生成.png)并立即更新已有快捷方式的图标;若尚未创建快捷方式(无头/已禁用),转换后的图标仍会保存,供将来创建时使用。显式配置shortcutIconPath可覆盖默认图标。 - 插件配置:
port(默认 3080)、host(127.0.0.1)、cliBin("" = 复用当前运行的 CLI)、startupTimeoutMs(120000)、openBrowserOnStart(true)、desktopShortcut(true)、shortcutName("DeepSeek Harness Web UI")、shortcutIconPath("" = 使用内置的 dsh 默认图标;显式路径可自定义)。
行为与健壮性
- 接管或启动:端口上已有服务器时只接管——不重启、绝不停止。
webui_stop终止本插件 spawn 的进程树,也会终止桌面启动器(或上一插件实例)记录过 PID 的接管服务器(记录 PID 与当前监听进程一致才停,且杀前仍做 node.exe 身份核验);未记录 PID 的外部服务器绝不动。 - 显式状态机:
idle → starting → running → stopping,单飞串行化——并发start/stop永不交错。 - 孤儿清理:插件卸载或热重载时,停止其 spawn 的服务器,以及记录过 PID 的启动器服务器(
ctx.effectdispose)。 - PID 身份防护:杀进程前重新核验(存活、仍是本插件子进程,Windows 下经 tasklist 确认仍是 node.exe),绝不动被复用的 PID。
- 中止/超时卫生:被中止或超时的 start 会杀掉自己 spawn 的子进程,并在错误信息中带上输出尾部。
- CLI 定位兜底链:当前运行中的 CLI(
process.argv[1])→@deepseek-ai/dsh包 → 显式cliBin配置;找不到时报可操作错误。
开发
npm run build # esbuild → lib/index.js(宿主)+ lib/client.js(浏览器)
npm test # node --test,零依赖(mock 两个外部包)
状态机的失败路径(子进程死亡、超时、中止、兄弟接管、并发、卸载清理)通过脚本化假依赖对构建产物做单元测试——不涉及真实进程与计时器。
安全性
默认仅回环地址,不提权、不连外网。插件只终止自己 spawn 的进程树,且杀前核验 PID 仍属于该进程。
License
MIT
链接
同类插件
superdesigndev/treg★ 477
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
zhaoolee/notes#dsh-plugin★ 147
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
taxueseek/argo#dsh-plugin★ 101
专为 agent 打造的搜索工具:多语言,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
omdsh-dev/dsh-data-agent★ 55
让 AI 帮你连数据库、写 SQL。
heartleo/hn-cli#hacker-news★ 50
用于获取 Hacker News 榜单、讨论串、搜索和用户资料的工具。
geml-spec/geml#integrations/dsh-plugin★ 24
按块寻址的文档读写:MCP server 提供 geml_get / geml_set / geml_check 等工具,Agent 只取回或改写 Markdown、GEML 文档中的某一个块,而不是整篇文件。另带 GEML 写作技能,以及把项目调用图构建为 GEML codemap 并浏览的代码图谱技能。