前言¶
在 DeepSeek Harness(DSH)里做插件开发或排查问题时,经常需要重启桌面应用、装新版本插件,或确认进程与插件版本是否正常。这些操作若在 DSH 会话内部由脚本或模型触发,很容易踩到 Windows 进程树、批处理行尾、插件加载等坑:应用关掉后无人负责重开,或工具注册成功却从未执行。下面介绍维护者 cheng-wj 发布的客户端类插件 dsh-app-control,它向模型暴露三个工具,在 Windows 上实现可预期的重启、更新与体检。
这是什么¶
dsh-app-control 是 DSH 插件,仓库:cheng-wj/dsh-app-control,社区目录页:skillhub.cn 插件页。简介:从模型侧重启、更新并检查 DeepSeek Harness 桌面应用(Windows)。许可证 MIT;package.json 标明版本 1.0.0,要求 Node >=18、DSH >=0.1.7-rc,仅支持 win32。
插件的核心价值不只是「能重启」,而是重启不会把调用链一起杀掉——从会话内重启 DSH 需要避开多个独立故障点,任一失败都可能导致应用关闭后无法再次打开且无明显报错。
三个模型工具¶
| 工具 | 作用 | 是否中断会话 |
|---|---|---|
dsh_status |
列出 DSH 进程、python 记忆桥、已装插件版本(对比 registry 最新版) | 不中断,只读 |
dsh_restart |
干净关闭全部 DSH 进程,等待退出后自动重新打开 | 中断 |
dsh_update |
安装指定版本插件(绕开 already-installed 相关问题),然后重启 |
中断 |
模型可直接调用;典型对话包括「帮我重启 DSH」→ dsh_restart,「dshmarket 更新失败」→ 先 dsh_status 再 dsh_update 传如 dshmarket@1.66.44,「记忆插件没生效」→ dsh_status 查看 python 桥接进程是否在运行。
安装与启用¶
dsh plugin add 底层等价于 pnpm add,可接受 Git 仓库、本地目录和 tarball。本插件不发布到 npm,以 GitHub 仓库为分发渠道。安装前请自行查看源码与许可证;插件以当前 DSH 进程权限运行。
方式一:从 Git 安装(推荐)¶
dsh plugin --profile desktop add git+https://github.com/cheng-wj/dsh-app-control.git
装的是仓库快照;README 注明从 Git 安装时 assets/dsh-tools.bat 的 CRLF 可由 .gitattributes 保留,三个工具可正常注册。升级需重新执行 add。
方式二:本地目录链接(开发调试)¶
dsh plugin --profile desktop add link:"C:\Users\ZY\Documents\deepseek-harness\默认工作区\dsh-app-control-plugin"
link: 为目录软链,改 src/index.js 后重启即可生效,无需重新打包。
方式三:tarball 离线分发¶
从 Releases 下载 .tgz,或自行打包后:
dsh plugin --profile desktop add "C:\path\to\dsh-app-control-1.0.0.tgz"
适合内网分发或归档快照。
配置¶
在 profile 的 cordis.patch.yml 中为该插件行增加配置,例如:
- dsh-app-control:
delaySeconds: 10 # 倒计时秒数,留出取消余地
profile: desktop # dsh_update 的默认 profile
dsh_restart 与 dsh_update 也可在调用参数中覆盖 delaySeconds,传 0 表示立即重启。
实现要点(为何需要专用插件)¶
README 将以下问题列为插件设计动机,前三个在开发中曾真实触发。
taskkill /T会杀掉调用者:若调度脚本是 DSH 子进程,/T会向上遍历进程树并终止自身,无人负责重开。解法:用 WMIWin32_Process.Create启动调度器,父进程为WmiPrvSE.exe,不在 DSH 树内。- 批处理
start未真正脱离:新进程继承 cmd 控制台,关小黑窗会向 Electron 发CTRL_CLOSE_EVENT。重开应用同样经 WMI,避免共享控制台。 .bat必须为 CRLF:纯 LF 时cmd.exe对call :LABEL的偏移会错,脚本可静默停在中途(进程已关、未重开、无报错)。插件在运行前用字节统计 CR/LF 并必要时修复。cmd.exe将=当参数分隔符:--delay=5会变成两个参数;解析需匹配裸--delay并从下一参数取值;空包名的update会在关应用前校验包列表。- 插件装上了但
apply()未执行:Config须为 schemastery Schema;peer 依赖宜惰性可选解析,否则 Loader 可能静默跳过整行。诊断可参考%DSH_HOME%\dsh-app-control\logs\apply-trace.log。
运行时会把 assets 下脚本复制到 $DSH_HOME/dsh-app-control/scripts/,日志写到 $DSH_HOME/dsh-app-control/logs/,避免写入 node_modules。
适用场景与注意¶
- 适合:在 Windows 桌面 DSH 上,让模型或你在对话中完成状态查看、可控倒计时重启、带版本号的插件更新。
- 平台:仅 Windows;非 Windows 宿主上工具仍会注册,调用返回明确错误。
- 会话:
dsh_restart/dsh_update会中断当前对话,使用前应保存工作。 - 单实例:Electron 单实例使重复启动落回已有实例,重开失败可能无弹窗,需查日志。
- 生态:DSH 奉行「一切皆插件」;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-app-control 把「重启桌面 DSH、更新插件、看进程与版本」收敛为三个模型工具,并用 WMI 脱离进程树等方式处理 Windows 上常见的自毁与静默失败。安装以 README 中的 dsh plugin --profile desktop add git+https://github.com/cheng-wj/dsh-app-control.git 为准;细节与五个坑的完整说明见仓库 README。
- 目录页:https://www.skillhub.cn/plugins/cheng-wj/dsh-app-control
- GitHub:https://github.com/cheng-wj/dsh-app-control