🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

侧栏重启确认 seanwhy/dsh-restart-confirm

DeepSeek Harness
seanwhy75 天前有提交已提供中文文档扫描:含敏感能力

在侧边栏一键重启 Web 服务,需二次确认后自动拉起

24.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add seanwhy/dsh-restart-confirm
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · browser
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 75 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/13) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
  • 写入本地文件
    lib/index.js:173
    writeFileSync(scriptPath, unixHelperScript({ scriptPath, pid, cwd, relaunch, config, logPath }), 'utf8')
  • 发起网络请求
    lib/client.js:337
    return fetch('/dsh-health', { method: 'GET', cache: 'no-store' })
  • 发起网络请求
    lib/client.js:347
    fetch('/api/plugin-marketplace', {
  • 发起网络请求
    lib/client.js:410
    return fetch('/restart-dsh', { method: 'POST', cache: 'no-store' })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-shell@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 侧边栏一键重启
  • 二次确认
  • 自动重新拉起

README

由 DeepSeek 最新模型翻译生成
dsh-restart-confirm DeepSeek Harness Web 界面侧边栏一键重启按钮——并且带强制二次确认,点击两次确认后才会真正重启。 | 按钮 | 紧贴侧边栏折叠按钮的紧凑重启图标(↻)——展开时位于"收起侧边栏"左侧,56px 收起栏中位于"打开侧边栏"上方 | | 安全 | 必须先连续确认两次才会触发重启 | | 范围 | 重启 dsh web 进程——WebUI 与 Harness 后台是同一个进程,重启后两者一起恢复 | | 重新拉起 | 自动以启动 DSH 时的完全相同的命令重新运行(process.execPath + process.argv)——无硬编码路径,所有参数(--host、--port、--trusted-host、profile)原样保留 | | 平台 | macOS · Linux · Windows(独立的后台助手进程在进程被杀后继续执行) | | 待重启提示 | 默认隐藏;每 5 秒读取插件市场操作状态,只有其他插件处于待安装/更新/移除(需要重启)时才显示绿色点 | 功能特性 - 二次确认 —— 点击按钮先弹出第一个对话框,再弹出最终警告框。只有第二次确认才会发送请求,两个对话框都可以取消。
展开完整文档(README 剩余 1 节)
dsh-restart-confirm

DeepSeek Harness Web 界面侧边栏一键重启按钮——并且带强制二次确认,点击两次确认后才会真正重启。

| 按钮 | 紧贴侧边栏折叠按钮的紧凑重启图标(↻)——展开时位于"收起侧边栏"左侧,56px 收起栏中位于"打开侧边栏"上方 |
| 安全 | 必须先连续确认两次才会触发重启 |
| 范围 | 重启 dsh web 进程——WebUI 与 Harness 后台是同一个进程,重启后两者一起恢复 |
| 重新拉起 | 自动以启动 DSH 时的完全相同的命令重新运行(process.execPath + process.argv)——无硬编码路径,所有参数(--host、--port、--trusted-host、profile)原样保留 |
| 平台 | macOS · Linux · Windows(独立的后台助手进程在进程被杀后继续执行) |
| 待重启提示 | 默认隐藏;每 5 秒读取插件市场操作状态,只有其他插件处于待安装/更新/移除(需要重启)时才显示绿色点 |

功能特性

- 二次确认 —— 点击按钮先弹出第一个对话框,再弹出最终警告框。只有第二次确认才会发送请求,两个对话框都可以取消。
- 自适应位置与尺寸 —— 通过 DOM 放置把按钮钉在侧边栏折叠按钮旁:展开时位于"收起侧边栏"左侧,56px 收起栏中位于"打开侧边栏"上方。展开行图标为 16px,收起栏为 18px;MutationObserver 保证在重渲染和折叠/展开切换后位置始终正确。
- 自动重新拉起并立即刷新 —— 杀掉进程后,插件用相同参数、相同工作目录重新启动 DSH。客户端比较健康接口返回的进程 bootId,新进程就绪后立即刷新页面,不再固定等待 15–20 秒。
- 跨平台、零硬编码路径 —— 重启命令直接从当前运行进程自身重建,兼容任何启动方式(命令行、PWA、supervisor 脚本)。
- 优雅杀进程 —— 先发 SIGTERM,进程仍存活才用 SIGKILL。
- 可配置 —— 杀进程前延迟、杀后延迟、自定义重启命令、仅杀不重启(配合外部 supervisor)。
- 防重入 —— 重启进行中再次请求会被拒绝。
- 仅本机回环 —— 重启接口拒绝非回环地址的调用。
- 跟随主题 —— 使用 DSH 自带的 --dsw-alias-* 令牌,按钮与弹窗自动适配明/暗主题。

兼容性

0.1.2 已针对 DSH 0.1.0-rc.6 到 0.1.0-rc.8 做适配。客户端只注入 runtime,并通过公开的标签、slot/data 属性和类名后缀定位侧边栏,不再要求侧边栏客户端包出现在本插件自己的注入图中;Host 端也会按新版 shell 合约传递 workspace root。

安装

方式 A —— GitHub(推荐)

dsh plugin --profile web add github:seanwhy/dsh-restart-confirm

然后重启一次 dsh web 使 bundle 层生效。

方式 B —— DSH 插件市场

本仓库带有 dsh-plugin topic,会被 DSH 插件市场 收录。打开 设置 → 插件 → 插件市场,搜索 dsh-restart-confirm,一键安装。

方式 C —— 手动

1. 在 ~/.dsh/profiles/web/package.json 添加依赖: {
"dependencies": {
"dsh-restart-confirm": "github:seanwhy/dsh-restart-confirm"
}
}

2. 在 ~/.dsh/profiles/web/cordis.patch.yml 添加加载行(用 dsh plugin 命令安装会自动完成):
- insert:
- id: dsh-restart-confirm
name: dsh-restart-confirm

3. 在 profile 目录执行 pnpm install,然后重启 dsh web。

配置

插件配置(设置 → 插件 → dsh-restart-confirm → 配置,或在 profile manifest 中):

| 选项 | 类型 | 默认值 | 含义 |
| delaySeconds | number | 3 | 响应返回后多久杀掉进程(给浏览器时间显示"重启中"状态) |
| relaunchDelaySeconds | number | 2 | 杀掉进程后多久重新拉起 DSH |
| customRestartCommand | string | '' | 自定义用于重新拉起的 shell 命令(替代自动重建的 argv) |
| killOnly | boolean | false | 只杀进程、不重新拉起(适用于外部 supervisor 自动重启的场景) |

工作原理

| 层 | 文件 | 作用 |
| Host | lib/index.js | 在 webServer 注册带进程 bootId 的 GET /dsh-health 与 POST /restart-dsh;启动独立后台助手:等待 → SIGTERM →(SIGKILL)→ 用原始 argv 重新拉起 |
| Client | lib/client.js | 纯 vanilla(无 React)客户端,通过 DOM 放置固定尺寸图标;仅在插件市场报告待重启插件时显示绿点;等待 bootId 变化并在新服务健康后立即刷新 |
| Bundle | cordis.patch.yml | 挂载两半的加载行 |

处理函数先回复浏览器再执行杀进程;杀进程/重新拉起的延迟由助手脚本承担。客户端不猜测重启完成时间,而是轮询健康接口,bootId 变化且新服务就绪后立即刷新。

为什么需要独立的助手进程?

如果插件在自己的进程内直接杀掉 DSH,就没人能再把它拉起来了。助手进程是脱离的(Unix 用 nohup sh … &,Windows 用 Start-Process -WindowStyle Hidden),在 Harness 退出后仍存活,并把 DSH 重新带回来。

安全说明

- POST /restart-dsh 只接受回环地址(127.0.0.1 / ::1),且只接受 POST。
- 默认 web profile 的 webServer 绑定在回环地址。
- 插件不向任何地方发送数据;/dsh-health 只是本地存活探针。

开发

客户端 bundle 是手写的、符合 DSH Web shell 线格式(window.__ModuleLoader__.load({ id, factory })),无需构建步骤、无任何依赖(不用 React)。通过稳定的 aria-label、公开的 slot/data hook 和 CSS-module 类后缀定位侧边栏折叠按钮,不硬编码任何 hash 类名:

node --check lib/index.js
node --check lib/client.js

License

MIT
预览分享卡片长什么样 ↓seanwhy/dsh-restart-confirm
分享 · DeepSeek Harness Hub
seanwhy/dsh-restart-confirm

在侧边栏一键重启 Web 服务,需二次确认后自动拉起

这是你的仓库?认领条目

回到顶部