一键重启桌面应用,让插件在下次启动时生效
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add chai-yinfeng/dsh-macos-restart该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 27 处,展示前 20 条)
- 读取本地文件lib/index.js:420
!existsSync(HELPER_PATH) - 写入本地文件lib/index.js:454
writeFileSync(handoffPath, `${JSON.stringify(handoff, null, 2)}\n`, { - 写入本地文件lib/index.js:469
appendFileSync( - 写入本地文件lib/index.js:493
writeFileSync(handoffPath, `${JSON.stringify(handoff, null, 2)}\n`, { - 执行外部命令固定命令lib/index.js:502
const helper = spawn( - 写入本地文件lib/index.js:576
writeFileSync(tmp, `${JSON.stringify(state, null, 2)}\n`, { mode: 0o600 }); - 写入本地文件lib/index.js:577
renameSync(tmp, STATE_PATH); - 读取本地文件lib/index.js:582
if (!existsSync(STATE_PATH)) return null; - 读取本地文件lib/index.js:583
const value = JSON.parse(readFileSync(STATE_PATH, 'utf8')); - 写入本地文件lib/index.js:615
mkdirSync(LOG_DIR, { recursive: true, mode: 0o700 }); - 执行外部命令固定命令lib/index.js:644
const child = spawn('/usr/bin/open', command, { - 执行外部命令固定命令lib/index.js:682
const child = spawn('/bin/sh', [HELPER_PATH, ...args], { - 读取本地文件lib/index.js:724
if (desktop.execPath === null || !existsSync(HELPER_PATH)) { - 执行外部命令固定命令lib/index.js:733
const output = execFileSync( - 读取本地文件lib/index.js:880
if (existsSync(runFile)) { - 读取本地文件lib/index.js:882
const data = JSON.parse(readFileSync(runFile, 'utf8')); - 删除本地文件lib/index.js:992
rmSync(join(dir, name), { force: true }); - 发起网络请求lib/client.js:773
const response = await fetch(`${API}/status`, { - 发起网络请求lib/client.js:849
const response = await fetch(`${API}/open-logs`, { - 发起网络请求lib/client.js:878
const response = await fetch(`${API}/restart`, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
macOS 桌面版一键重启,DeepSeek Harness 桌面应用一键重启。
README
由 DeepSeek 最新模型翻译生成macOS 桌面版重启(dsh-macos-restart)
macOS 桌面版一键重启:让无法热加载的插件在下次启动时生效。
这是 DeepSeek Harness 桌面版 的 macOS 一键重启插件。它处理 Electron 应用本身,不是 dsh web 宿主:重启的目的是让无法热加载的插件在下一次启动时加载。
范围
仅适用于 macOS 桌面版。 它不是通用的标题栏控件,也不是 dsh web 的重启按钮:
- 结束 Electron 主进程,让桌面 host 通过自己的 IPC 断开路径退出;等待旧 web 端口释放后,对 .app 执行 open -a。
- 不支持 Windows、Linux、dsh web 或独立 dsh CLI。
- 刻意不提供“退出”动作;macOS 已有 Cmd+Q。这里的价值是自动重新拉起、运行中任务检查和插件安装门禁。
社区插件 dsh-header-controls 也会在会话标题栏放重启/退出按钮,但它文档中的机制是 dsh web launcher + Windows taskkill/netstat 流程,不会重启 macOS Electron 应用。两者只在“标题栏位置”这一层重合。
入口
- 标题栏图标:会话右上角,默认开启。
- 侧栏底部图标:设置按钮旁,默认关闭,可在设置里打开。
展开完整文档(README 剩余 1 节)
macOS 桌面版重启(dsh-macos-restart)
macOS 桌面版一键重启:让无法热加载的插件在下次启动时生效。
这是 DeepSeek Harness 桌面版 的 macOS 一键重启插件。它处理 Electron 应用本身,不是 dsh web 宿主:重启的目的是让无法热加载的插件在下一次启动时加载。
范围
仅适用于 macOS 桌面版。 它不是通用的标题栏控件,也不是 dsh web 的重启按钮:
- 结束 Electron 主进程,让桌面 host 通过自己的 IPC 断开路径退出;等待旧 web 端口释放后,对 .app 执行 open -a。
- 不支持 Windows、Linux、dsh web 或独立 dsh CLI。
- 刻意不提供“退出”动作;macOS 已有 Cmd+Q。这里的价值是自动重新拉起、运行中任务检查和插件安装门禁。
社区插件 dsh-header-controls 也会在会话标题栏放重启/退出按钮,但它文档中的机制是 dsh web launcher + Windows taskkill/netstat 流程,不会重启 macOS Electron 应用。两者只在“标题栏位置”这一层重合。
入口
- 标题栏图标:会话右上角,默认开启。
- 侧栏底部图标:设置按钮旁,默认关闭,可在设置里打开。
- 设置 → 桌面版重启:状态、上次重启、日志、入口开关和重启按钮。
- /restart-desktop 命令;有任务运行时用 --force。
- 可拖动的浮动按钮:默认关闭,位置会记住。
标题栏、侧栏、浮动按钮、设置页和命令都调用同一个 Host 操作。
重启过程
1. 客户端向 POST /plugins/dsh-restart/restart 发送 { "confirm": true }。
2. Host 检查请求是否来自 loopback/同源、当前是否为 macOS 桌面 host、是否有插件安装/更新在跑、是否有任务在运行。
3. Host 写 handoff 记录和初始 state.json,然后启动一个独立的 one-shot opener(detached /bin/sh)。opener 只等待和打开,不杀进程。不要使用 launchctl submit:0.1.4 真机测试中,这个 job 会在应用回来后每约 10 秒重复拉起 opener。
4. Host 启动 killer helper。它向 Electron 主进程 发送 SIGTERM。应用可能会弹出自己的退出确认(定时任务);点“退出”会让它保存账号/会话状态。host 是独立子进程,会看到 IPC 通道关闭并走自己的优雅关闭,所以会话日志仍会落盘。正常重启不会升级到 SIGKILL——取消必须真的取消,未回答的弹窗也不能被静默强杀。如果 SIGTERM 后 3 秒 主进程 仍活着,helper 会记录 cancelled,opener 不打开,弹窗显示 重启已取消。如果主进程已经退出、只是旧 host 还在落盘,helper 会继续等 host,不记为取消——此时 opener 可能已经把应用重新拉起来了。只有显式的 stale-manager 高级路径会用 SIGKILL,并带自己的警告。
5. opener/killer 等待旧主进程消失、旧 web 端口释放,然后执行 open -a "/Applications/DeepSeek Harness.app"。open -a 对已在运行的应用只是激活,所以两个 helper 不会启动两个实例。
6. 正常重启如果 host 不退出,会取消而不是升级;只有显式的 stale-manager 强制路径会升级。失败时弹窗提示,日志在 ~/.dsh/dsh-restart/。
诊断
- ~/.dsh/dsh-restart/state.json 记录上次重启的阶段:queued → opener-started/killing → waiting-host → host-exited → waiting-port → port-free → opening → opened(或 failed)。
- 设置页显示上次阶段/时间,并提供一个 在 Finder 中显示最近日志 按钮。POST /plugins/dsh-restart/open-logs 从 Host 做同样的事,所以页面断开后也能用。它使用 open -R(Finder 显示并定位),因为直接 open <file>.log 依赖默认应用,可能看起来没反应。
- helper 日志包含进程级记录;state 文件是进程树被清理后仍能保留的简要版本。
卡住的安装恢复
如果插件管理器持有安装锁、且五分钟内没有任何 pnpm/安装进展,状态会变成 pluginOperation.stale,弹窗会出现 强制重启(高级)。这个入口只在锁属于当前 host,或根本没有 manager 锁时出现;不会绕过仍在运行的 pnpm 进程。强制重启会结束 host、释放锁并重开应用,未完成的安装会被中断;由于它绕过应用自己的退出确认,主进程可能不会完成最后的账号/窗口状态落盘。只在 manager 确实卡住时使用。
安全
- 只接受 loopback 请求。桌面文档代理可能同时去掉 Host/Origin,也可能只去掉 Origin;loopback Host 且没有 Origin 会被接受,带 Origin 时必须与 Host 匹配。sec-fetch-site: cross-site 会被拒绝。
- 有任务运行时返回 409 busy;客户端列出受影响的会话 id,并要求二次确认后才发送 force: true。
- 插件安装/更新中返回 423;唯一例外是上面描述的“stale manager 锁”高级强制路径。
- cordis.patch.yml 里 allowRestart: false 可完全禁用。
- 插件不修改 app.asar,也不会启动第二个服务器。
配置
- id: dsh-restart
name: 'dsh-macos-restart'
config:
allowRestart: true
文件
- lib/index.js — Host 路由(/status、/restart、/open-logs)、门禁、命令、state、helper/opener 调度。
- lib/helper.sh — detached killer/opener helper(支持 --dry-run)。
- lib/client.js — 标题栏图标、侧栏按钮、设置页、弹窗、浮动按钮、日志操作。
- locale/{en,zh}.json — 插件管理器显示元数据。
- README.md — 英文 README。
- PUBLISHING.md — npm + curated catalog 发布清单。
发布
见 PUBLISHING.md。当前包名 dsh-macos-restart 是本地开发名;可发布的包是 npm 上的 dsh-macos-restart。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
chai-yinfeng/dsh-macos-restart
一键重启桌面应用,让插件在下次启动时生效
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,125已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,465已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,457已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,710已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,378已汉化DSH
70.2
这是你的仓库?认领条目