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

一键重启客户端 liuhao11223/dsh-restart-client

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

点一下侧边栏按钮即可完整重启桌面应用

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
  • 执行外部命令固定命令
    index.js:90
    execFile(
  • 写入本地文件
    index.js:168
    mkdirSync(logDir, { recursive: true });
  • 执行外部命令来自配置/变量
    index.js:176
    const child = spawn(process.execPath, args, {
  • 写入本地文件
    index.js:270
    mkdirSync(logDir, { recursive: true });
  • 写入本地文件
    index.js:283
    writeFileSync(launcherPath, `\ufeff${buildLauncherScript(helperCommand)}`, 'utf16le');
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 桌面客户端一键重启:侧边栏按钮、HTTP 端点加智能体工具,不弹确认,不弹控制台窗口。(DSH 重启客户端插件)

README

由 DeepSeek 最新模型翻译生成
dsh-restart-client 一个 DSH(DeepSeek Harness)插件,为桌面客户端加上一键重启——侧边栏按钮、HTTP 端点、智能体工具,三者背后是同一套宿主能力。 点一下就行。没有确认弹窗,不用按第二次,也不会弹出控制台窗口。 侧边栏底部的重启按钮 为什么做这个 DSH 桌面应用自带的官方重启扩展只支持仅重启服务:它重新拉起 Harness 进程,窗口照旧运行,所以宿主侧的改动仍然要手动退出再启动。这个插件重启的是整个应用,体验仍然只有一次点击。 它能做什么 | 入口 | 类型 | 用途 | | 侧边栏底部按钮 | 客户端插槽 sidebar.footer.action | 点一下 → 桌面应用重启 | | POST /api/dsh-restart/restart | HTTP 路由 | 供脚本和其他插件调用同一操作 | | GET /api/dsh-restart/status | HTTP 路由 | 报告解析出的桌面进程与模式方案 | | restart_dsh_client | 智能体工具 | 让模型自己重启客户端 | 两种模式: - client(默认)——结束整个桌面进程树,等它彻底消失,再重新启动可执行文件。窗口是真的重启。 - service——只重新拉起 Harness 服务进程然后退出,桌面应用不动。
展开完整文档(README 剩余 1 节)
dsh-restart-client

一个 DSH(DeepSeek Harness)插件,为桌面客户端加上一键重启——侧边栏按钮、HTTP 端点、智能体工具,三者背后是同一套宿主能力。

点一下就行。没有确认弹窗,不用按第二次,也不会弹出控制台窗口。

侧边栏底部的重启按钮

为什么做这个

DSH 桌面应用自带的官方重启扩展只支持仅重启服务:它重新拉起 Harness 进程,窗口照旧运行,所以宿主侧的改动仍然要手动退出再启动。这个插件重启的是整个应用,体验仍然只有一次点击。

它能做什么

| 入口 | 类型 | 用途 |
| 侧边栏底部按钮 | 客户端插槽 sidebar.footer.action | 点一下 → 桌面应用重启 |
| POST /api/dsh-restart/restart | HTTP 路由 | 供脚本和其他插件调用同一操作 |
| GET /api/dsh-restart/status | HTTP 路由 | 报告解析出的桌面进程与模式方案 |
| restart_dsh_client | 智能体工具 | 让模型自己重启客户端 |

两种模式:

- client(默认)——结束整个桌面进程树,等它彻底消失,再重新启动可执行文件。窗口是真的重启。
- service——只重新拉起 Harness 服务进程然后退出,桌面应用不动。

安装

插件就是一个普通的 DSH bundle。让某个配置档指向它:

// <profile>/package.json
{
"dependencies": {
"dsh-restart-client": "link:E:/path/to/dsh-restart-client"
},
"dsh": {
"bundles": ["dsh-restart-client"]
}
}

然后手动重启一次客户端(第一次只能手动——按钮还不存在),之后每次改完 client.js 刷新页面即可,因为桌面端从磁盘读取客户端那一半。

package.json 的 exports 指向真实文件,配置档又链接了这个目录,所以改 client.js 下次加载页面就生效;改 index.js(宿主那一半)则需要真正重启客户端。

无控制台重启是怎么做到的

这是最有意思的部分,也是这个插件存在的原因——否则五行 shell 脚本就够了。

辅助进程必须比它要结束的应用活得更久,所以它通过 WMI(Win32_Process.Create)创建,这样它的父进程变成 WmiPrvSE,对桌面进程树执行 taskkill /T 时它能存活下来。但 WMI 创建的进程总会带一个控制台窗口,常见的办法都压不住——-WindowStyle Hidden 不行,Win32_ProcessStartup 设 ShowWindow = 0 会返回成功,控制台照样出现(在 Windows 10/11 上实测)。

所以辅助进程是间接启动的:

1. 写一个极小的 .vbs 启动器(UTF-16LE 带 BOM——WSH 只接受 ANSI 或 UTF-16,而临时路径里可能含非 ASCII 用户名)。
2. 启动器执行 shell.Run "<helper command>", 0, False——窗口样式 0 表示完全不显示窗口。
3. WMI 创建 wscript.exe //nologo <launcher.vbs>,由它启动辅助进程,全程不显示窗口。

如果 WSH 不可用,插件会退回到直接创建辅助进程,所以重启照样能用,只是可能闪一下控制台。试运行会报告走哪条路线:

// POST /api/dsh-restart/restart {"dryRun": true}
{ "launch": "wscript (windowless)", ... }

按钮

按钮放在 shell 自己的 sidebar.footer.action 列表槽位里,紧挨着 Settings,并继承侧边栏的布局——包括侧边栏收成窄条时的居中处理。运行时不做任何测量,也没有硬编码坐标。

样式是 shell token 语言里的 ghost 按钮:高 28px,圆角 6px,默认透明,悬停才显示,颜色从 --dsw-alias-label-secondary 变为 --dsw-alias-label-primary,悬停时图标旋转 180°,忙碌时图标旋转并让标签脉动,请求失败则显示 --dsw-alias-state-error-primary 和 Retry 字样,持续六秒。它遵循 prefers-reduced-motion。

API

GET /api/dsh-restart/status

{
"ok": true,
"host": { "platform": "win32", "selfPid": 26488, "desktopPid": 12724, "desktopOwned": true, "modes": ["client", "service"] }
}

POST /api/dsh-restart/restart

{ "mode": "client", "delayMs": 1500, "dryRun": false }

delayMs 上限为 120000,默认 1500,留出时间让 HTTP 响应先到达浏览器,应用再退出。

响应:

{
"ok": true,
"mode": "client",
"desktopPid": 12724,
"helperPid": 26576,
"launch": "wscript (windowless)",
"logPath": "C:/Users/…/dsh-restart-client/client-2026-10-19T13-21-28-091Z.log" }

两条路由都通过 ctx.connection.requestRejection 拒绝不可信来源(403),并拒绝错误的方法(405)。

智能体工具 restart_dsh_client

{ "mode": "client", "dryRun": true }

真正重启会中断当前回合。

目录结构

index.js host half — routes, WMI/VBS launcher, agent tool client.js client half — the sidebar button cordis.patch.yml bundle patch: inserts the plugin entry locale/zh.json plugin marketplace metadata (Chinese) locale/en.json plugin marketplace metadata (English) icon.svg plugin icon

index.js 只导入 Node 内置模块。

限制

- 以 Windows 为主。 无窗口启动路径依赖 WSH;其他平台退回直接启动。
- 单实例。 重新启动最多等 20s,等旧 pid 消失,因为应用会把第二次启动交给正在退出的实例;如果 pid 超过这个时间还在,仍然会重新启动,并记录日志。
- 重启会中断回合。 任何进行中的工具调用都会随进程一起被杀掉。

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓liuhao11223/dsh-restart-client
分享 · DeepSeek Harness Hub
liuhao11223/dsh-restart-client

点一下侧边栏按钮即可完整重启桌面应用

这是你的仓库?认领条目

回到顶部