一键重启或结束 dsh web 服务并显示存活状态
29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Neptune810/dsh-power-button该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 41 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
- 执行外部命令来自配置/变量lib/index.js:118
const helper = spawn(process.execPath, ["--input-type=module", "--eval", RESTART_HELPER_SOURCE], {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 一键结束服务
- 显示服务存活状态
- 按钮可拖拽
README
由 DeepSeek 最新模型翻译生成dsh-power-button
DeepSeek Harness 的 Web 插件:界面里一个可拖动的电源胶囊,带实时状态点,以及针对正在运行的
dsh web 服务的重启与结束两个动作。
纯宿主插件、零依赖、不需要构建。
为什么需要它
dsh web 不会自己退出。外面套了看门狗(启动器 / 脚本 / 托盘程序)的部署,通常要等一个空闲窗口
才动手关服务,于是最后一个浏览器标签关掉之后端口还会被占一段时间;这段时间里重启,打开的是一个马上就要失效的页面。
这个插件把两个动作都放回你手上:界面里一个胶囊,外加一个告诉你宿主还在不在的状态点。
使用
一个半透明的小胶囊停在配置的角落(默认右下角)。
- 状态点 —— 上一次探活有回应就是绿色,没回应就是红色。探活是每 5 秒一次的同源 GET,不消耗任何模型 token。
- 按一下胶囊 —— 弹出一个小菜单,两个动作:
- 重启服务 —— 宿主原地重新拉起自己,端口恢复应答后自动打开新页面。
- 结束服务 —— 进程立刻退出,端口马上释放。
- 再按一下胶囊、或点页面别处,菜单就关掉。
- 设 restart: false 则没有菜单,按一下直接结束。
- 按住拖动 —— 鼠标、触摸都行。位置存在 localStorage 里,刷新页面后还在。
展开完整文档(README 剩余 1 节)
dsh-power-button DeepSeek Harness 的 Web 插件:界面里一个可拖动的电源胶囊,带实时状态点,以及针对正在运行的 dsh web 服务的重启与结束两个动作。 纯宿主插件、零依赖、不需要构建。 为什么需要它 dsh web 不会自己退出。外面套了看门狗(启动器 / 脚本 / 托盘程序)的部署,通常要等一个空闲窗口 才动手关服务,于是最后一个浏览器标签关掉之后端口还会被占一段时间;这段时间里重启,打开的是一个马上就要失效的页面。 这个插件把两个动作都放回你手上:界面里一个胶囊,外加一个告诉你宿主还在不在的状态点。 使用 一个半透明的小胶囊停在配置的角落(默认右下角)。 - 状态点 —— 上一次探活有回应就是绿色,没回应就是红色。探活是每 5 秒一次的同源 GET,不消耗任何模型 token。 - 按一下胶囊 —— 弹出一个小菜单,两个动作: - 重启服务 —— 宿主原地重新拉起自己,端口恢复应答后自动打开新页面。 - 结束服务 —— 进程立刻退出,端口马上释放。 - 再按一下胶囊、或点页面别处,菜单就关掉。 - 设 restart: false 则没有菜单,按一下直接结束。 - 按住拖动 —— 鼠标、触摸都行。位置存在 localStorage 里,刷新页面后还在。 - 拖动不会误触发动作:指针移动超过 4px 才算拖动,浏览器随后补发的那次 click 会被吞掉。 - 拖出窗口会被夹回边缘,窗口变小后也会自动重新夹紧,永远点得到。 - 它挂在应用 React 根节点之外,任何重渲染都弄不丢。 实现方式 宿主插件。不构建任何前端 bundle,也不 import 任何 @deepseek-ai/* 包 —— 用 link: 安装的插件会被 Node 解析到真实路径,而 harness 的包并不在那里。它只用 Web 载体已有的两个扩展点: | 扩展点 | 用途 | | webServer.tapIndex() | 把胶囊的 markup、CSS、脚本注入 index.html | | webServer.register() | 提供 /dsh-power-button/status、/restart、/stop | 结束走启动器提供的 ctx.appExit:和 Ctrl+C 同一条有界关闭路径,先优雅 dispose 整棵树,再让进程退出。这条路径只有在事件循环真的排空时才结束进程,所以插件另外挂了一个 unref 的 2 秒看门狗 —— 干净退出时它不拖后腿,有别的插件握着句柄时它也保证进程一定消失。 重启没法由宿主自己做,因为要离开的正是宿主本身。重启路由会拉起一个脱离终端的辅助进程(同一个 Node 二进制跑一段内联模块),它依次: 1. 等这个进程消失, 2. 等端口不再应答, 3. 用同样的环境变量和工作目录,按记录下来的启动命令重新拉起, 4. 需要的话,等端口恢复应答后打开页面。 辅助进程比宿主活得久(detached + stdio: "ignore" + unref()),所以它能活过触发它的那次关闭。 Windows 11 / Node 24 实测:结束在 POST 返回 200 后约 0.2–0.5 秒释放端口;重启几秒内端口就回来。 失败也是安全的 —— 辅助进程起不来时路由回 500,服务保持运行。 安全 三个路由都必须同时满足: 1. 带自定义请求头 x-dsh-power-button: stop —— 跨域页面要带这个头就得先过 CORS 预检,而本服务从不批准预检,所以随便一个网页既重启不了也关不掉你的服务; 2. Host 是回环地址(127.0.0.1 / localhost / [::1]),堵掉 DNS rebinding; 3. 请求若带 Origin,必须与该 Host 同源。 其余一律 403。status 只接受 GET/HEAD;stop 与 restart 只接受 POST,方法不符一律 405。 插件不碰 profile 之外的任何东西:重启辅助进程只按本进程当初的启动命令,或你显式配置的 restartCommand 执行。 配置 全部可省略,写在插件行上: @yaml - insert: - id: power-button name: dsh-power-button config: label: 结束服务 # 胶囊文字与 tooltip position: bottom-right # 初始角落,或 bottom-left draggable: true # false 则钉死在初始角落 status: true # false 则去掉状态点、停止探活 statusPollMs: 5000 # 探活间隔,最小 1000 restart: true # false 则去掉重启动作和菜单 restartCommand: [] # argv;留空 = 按本次启动命令原样重来 restartOpenBrowser: true # 命令自己会开页面时设为 false restartWaitMs: 30000 # 辅助进程最多等端口多久 enabled: true # false 则完全不注入 @ 通过启动器重启 默认情况下辅助进程重来的是本进程自己那条命令 —— 同一个 Node、同一个脚本、同一组参数。 这是插件唯一能确定的事情,代价是重新拉起的宿主背后没有看门狗:它会一直活着,直到你按结束。 如果你的部署是由某个启动器拉起来的,而你希望它一起回来(比如它自带空闲看门狗),把 restartCommand 指向它,并让它自己负责开浏览器: @yaml - insert: - id: power-button name: dsh-power-button config: restartCommand: - 'C:\path\to\YourLauncher.exe' restartOpenBrowser: false @ 安装 @sh dsh plugin --profile web add dsh-power-button @ 装完必须重启 dsh web:插件改动不会影响已经跑起来的进程。 测试 @sh node --test test/plugin.test.js @ 测试零依赖。注入到页面的脚本会被真的执行,跑在一套手搭的 DOM 上 —— 覆盖按下与拖动的区分、移动阈值、边缘夹紧、位置持久化、菜单、重启动作、状态探活;三个路由则用假的 node:http 请求/响应来驱动,包含那条会静默丢掉 res.end 回调的压缩路径。脱离终端的辅助进程源码也会按 ESM 做语法检查,坏掉的重启不可能发出去。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Neptune810/dsh-power-button
一键重启或结束 dsh web 服务并显示存活状态
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1