DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Arc-huangjingtong /

Arc-huangjingtong/dsh-restart

Verified

One-click restart plugin for DeepSeek Harness desktop

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@949497ec

dsh-restart

简体中文 | English

一键重启 DeepSeek Harness 桌面端的小插件。

在侧栏顶部、折叠按钮左侧放一个常驻胶囊按钮(图标 + “重启”),点击 → 确认 → 完全退出并自动重新打开应用,省掉 ⌘Q 再点开的两步。按钮位置会随侧栏宽度、窗口大小和全屏状态自动对齐;全屏下折叠按钮移到左侧时,按钮改放到它右边。

侧栏顶部的重启按钮

功能

  • 一键重启:按钮点击后弹出确认,确认后由独立 helper 脚本完成“退出 → 等待进程消失 → 重新打开”。
  • 失败兜底:helper 先尝试正常退出,最多等 10 秒;不行再 TERM,再不行 KILL,确认完全退出后才重新打开。
  • 日志:每次重启写入 ~/.dsh/restart.log,方便排查“关了没起来”的情况。
  • 仅 macOS:非 macOS 宿主上按钮自动隐藏,接口返回 501。
  • 同源限制:POST /api/dsh-restart/restart 只接受回环来源,避免跨站触发。

安装

本仓库是标准的 DSH bundle 插件(dsh.bundle + dsh.client)。

方式一:插件页安装(推荐)

  1. 打开 DSH → 设置 → 插件 → 添加插件;
  2. 选择本仓库目录(包含 package.json 的那一层);
  3. 安装后完全退出并重新打开 DSH 一次(按钮本身还不可用,因为插件要重启才加载)。

方式二:命令行

dsh plugin --profile desktop add /absolute/path/to/this/repo

装完同样需要完全退出 DSH 再打开。

本机已经安装到 desktop profile(link 到本仓库)。第一次仍需手动退出并重开一次,按钮才会出现;之后再重启就点按钮即可。

使用

重启后,侧栏左上角会出现一个环形箭头按钮:

  • 悬停显示“重启 DeepSeek Harness”;
  • 点击弹出确认框,提示“正在运行的会话与任务会中断”;
  • 点“立即重启”后界面会先消失,应用退出并自动重新打开(约 4–6 秒)。

实现说明

  • Host 半边 index.js:注册两个只读/受控路由:
    • GET /api/dsh-restart/status → { canRestart, platform }
    • POST /api/dsh-restart/restart → 以 detached: true 启动 scripts/restart-dsh.sh
  • Helper scripts/restart-dsh.sh:脱离 DSH 进程组运行,负责退出与重新打开。它会等所有 DSH 进程消失,再等 1.5 秒(DSH_RESTART_SETTLE_SECONDS),然后用清理过 Electron/Node 环境变量的 open 重开,并检查新主进程存活 1.5 秒;失败每 2 秒重试,最多 3 次。
  • 为什么必须清理环境:open(1) 会把调用者的环境传给被拉起的 App,而 DSH 宿主进程带 ELECTRON_RUN_AS_NODE=1;不清理的话,新实例会以 Node 模式启动——Dock 跳一下、没有窗口、随即退出。
  • Client 半边 client.js:通过 shell.overlay 注册按钮,测量侧栏顶栏里折叠按钮的位置,把 72×28 的胶囊放在它左边(8px 间距);并处理确认、忙碌与错误状态。

按钮位置来自 DSH 0.2.1-rc.5 的布局:macOS 下侧栏顶栏高 52px、只放右侧折叠按钮;shell.overlay 是唯一能精确落在此处的官方插槽。顶栏没有专用插槽,因此按钮通过 data-window-drag 标记找到顶栏、再测量其中唯一的按钮(折叠按钮)。侧栏宽度、窗口缩放、折叠、全屏变化都会重新测量;DSH 改版后可能需要微调选择器。

调试

helper 支持干跑,只打印识别到的主进程 PID、不退出应用:

DRY_RUN=1 bash scripts/restart-dsh.sh

注意:macOS 的 pgrep -f 在当前 Electron 主进程上匹配不到(只能匹配到 helper 进程),所以脚本改用 ps -axo pid=,comm= 按可执行路径识别主进程,再按 PID 发送信号。

限制

  • 重启会中断当前会话里正在运行的任务。
  • 若 helper 退出应用后 open -a 失败,DSH 不会自动回来;查看 ~/.dsh/restart.log 并手动打开。
  • 插件只对安装它的 profile 生效(本机是 desktop)。
  • 只在 macOS 桌面端测试;Web 端按钮会因 canRestart: false 隐藏。

卸载

dsh plugin --profile desktop remove @local/dsh-restart

然后完全退出并重新打开 DSH。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 949497ec4ee2

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout