dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把「刷新页面 / 重启应用与 Host」写进 DSH 桌面端「应用」原生菜单的补丁插件:11 字节等长改写 app.asar,附完整 recipe 与独立脚本。
把「刷新页面 / 重启应用与 Host」写进 DSH 桌面端左上角「应用」原生菜单的补丁插件。 没有 UI、不往页面注入任何东西;它带的是补丁本身 + 完整思路,换台电脑也能照着做。
DSH 桌面端「应用」下拉里的这两项,代码本来就有,只是被开发构建开关挡住:
...development ? [ { role: "reload" }, { app.relaunch() ... } ] : [] // 安装版 development = false
插件把开关换成恒真的等价表达式,两段都是 11 字节,等长替换,不动 asar 任何偏移:
- ...development ? [
+ ...!(0 === 1) ? [
再把这个文件在 asar 头里的 SHA256 integrity 等长同步,归档保持自洽。
完整推导:docs/DESIGN.md;给 AI 的照抄步骤:docs/RECIPE.md。
dsh_desktop_menu({ action: "status" }) # 只读:app.asar 在哪、补丁是否在位、哈希是否自洽
dsh_desktop_menu({ action: "apply" }) # 写入补丁(幂等;已打过返回 already)
dsh_desktop_menu({ action: "revert" }) # 还原
写完后必须重启桌面端(托盘 → 退出 → 重新打开)才会在菜单里看到,因为 main.js 只在主进程启动时加载。
app.asar 自动探测:工具参数 asar → 环境变量 DSH_DESKTOP_ASAR → 从可执行文件逐级向上找
<dir>/resources/app.asar。纯浏览器版返回 not-desktop。
从 GitHub 装:
dsh plugin --profile desktop add github:YOGEMOW/dsh-desktop-menu
或用插件管理器装本地目录:
plugin_manager(install_bundle, target="<这个包的绝对路径>")
node test/roundtrip.mjs:复制一份真 app.asar,revert → apply → apply(幂等),
每步断言状态与哈希自洽、归档大小不变(DSH_ASAR 可指定路径);node test/status.mjs:以 ELECTRON_RUN_AS_NODE=1 跑桌面端 exe,验证 original-fs 回退和路径探测;python docs/standalone/verify_patch.py "<app.asar 路径>":不依赖插件,直接复核当前安装。app.asar,补丁随之消失 —— 更新后重新 apply 一次即可(按内容定位,不依赖偏移)。app.relaunch() 才是可靠路径,见 DESIGN.md §4。index.js 宿主半:注册 dsh_desktop_menu 工具
lib/desktop-menu.js 补丁/回滚/探测实现(含 original-fs 处理)
cordis.patch.yml bundle patch
docs/DESIGN.md 设计说明与踩坑复盘
docs/RECIPE.md 给 AI 的照抄步骤
docs/standalone/ 等价的独立 Python 脚本(apply / verify / inspect)
locale/{zh,en}.json 插件显示标题与描述
icon.svg 插件图标
test/ 回归与探测脚本