前言¶
在 DeepSeek Harness(DSH)里改配置、换插件或让 Host 半身生效,历来常见做法是杀进程或关终端再开。后台任务与正在进行的 AI 回合会被粗暴打断,工具调用结果往往不可知;同时跑多路 AI 时,也很难判断谁还在收尾、谁已被中断。
DSH 电源(仓库 DX12xyz/dsh-power,包名 @local/dsh-power)把「重启 / 关闭 DSH」做成有语义、可协调、可恢复的操作:人类在侧边栏一点即可选择等待、中断或强制;AI 也可通过同名工具走同一套流程。重启前后有检查点与恢复报告,并对外提供 resumableToolCalls 服务,供其他插件挂起工具调用到下次启动再回填结果。插件由社区维护者 DX12xyz 发布,分类为客户端,许可证 MIT;社区插件目录见 SkillHub 插件页,源码见 GitHub。
这是什么¶
DSH 电源是 DSH 的客户端插件:在侧边栏提供「重启 / 关闭」入口,Host 侧注册五个 restart_dsh_* 工具与 restart-dsh skill,并负责跨重启检查点、恢复通知与可选的逃生舱联动。
维护者文档写明:本机在 DSH 0.2.1-rc.5(Web,Windows)上验证过;支持 Web + Desktop(Windows)。当前版本 1.8.2,不发布到 npm,通过 git、本地目录或自行 npm pack 的 tgz 安装。
核心功能¶
三档重启与三档关闭¶
重启与关闭共用「等待 / 中断 / 强制」三档语义,多路请求按「强制 > 点名 > 阻塞等待」合并升级。
- 等待:阻塞等待所有其他运行中 AI 完成当前回合后再执行;不中断任何 AI,人类界面与 AI 侧均最推荐。
- 中断(点名):向未就绪的运行中 AI 广播插话,要求其停止派生子代理/工具并进入就绪;默认最多等 120 秒(可在设置页改
rollCallWaitMs,0表示永久等待),到点仍会继续并如实记录未就绪的 AI。 - 强制:立即中断未就绪 AI 并执行;人类侧需红色警告下长按确认 5 秒;AI 侧需先
restart_dsh_force_safeguard上保险,再restart_dsh_force_dangerous执行,且须审批通过并消费保险,无保险不会重启。
关闭流程同样三档,但只退出、不再启动;等待模式有硬上限(默认 5 分钟,shutdownMaxWaitMs,0 为无限)。强制模式在等待超时后会通过独立 detach 回收器强杀 Host(Windows 为 taskkill /F,POSIX 为 SIGKILL),再按模式尝试重新拉起或结束。
人类入口与 AI 工具¶
侧边栏底部出现「DSH电源」按钮(网页版与桌面版共用同一 DOM),菜单仅「重启 / 关闭」。连接状态非 connected 时按钮隐藏。
| 人类界面 | AI 工具 | 行为摘要 |
|---|---|---|
| 等待 | restart_dsh_blocking_wait_safe |
等所有其他运行中 AI 完成当前回合后重启 |
| 中断 | restart_dsh_roll_call_caution |
点名就绪后重启 |
| 强制 | restart_dsh_force_dangerous(须先上保险) |
立即中断并重启 |
| — | restart_dsh_force_safeguard |
为下一次强制调用上保险,仅消费一次 |
| — | restart_dsh_status |
只读:阶段、运行中 AI、待执行重启/关闭、上次结果;无副作用、无需审批 |
另有 restart-dsh skill:在插件加载时注册,有重启诉求或同意以重启解决时按其规则选模式。
权限方面:restart_dsh_status 任何权限免审批;等待/点名在 workspace-write 及以上免审批;强制与强制保险仅在完全访问(danger-full-access + approval: never)免审批。人类侧边栏操作不受 AI 权限限制,强制由长按确认,不需要 AI 侧强制保险。
检查点、恢复与可挂起工具调用¶
重启前写入有界、脱敏检查点;重启后向受影响会话报告未决工具调用、后台任务与恢复状态。这不是进程冻结,不恢复旧进程状态。
resumableToolCalls 服务允许其他插件把一次工具调用挂起到下次启动再回填真实结果,避免平台写入 TOOL_OUTCOME_UNKNOWN。
诊断相关:restart.log、status.json、boot 对账,以及外部 CLI scripts/restart-cli.mjs。
设置与逃生舱联动¶
插件详情页「电源设置」可调整点名等待时间,写入运行设置并立即生效,不触发插件热重载。
若已安装逃生舱插件(Host 服务 escapePod 存在),关闭对话框会显示「同时关闭正在运行的逃生舱」(默认不勾选)。仅勾选时 DSH 退出前调用 escapePod.shutdown('dsh-power shutdown'),最多等 5 秒,失败只写日志、不阻止关机。重启流程不关闭逃生舱。
安装与启用¶
要求:文档验证环境为 DSH 0.2.1-rc.5(Web,Windows);Web 与 Desktop(Windows)均可。
方式一:插件页安装(推荐)¶
- 打开 DSH 插件页 →「安装插件」;
- 安装源填
https://github.com/DX12xyz/dsh-power,或 git 简写github:DX12xyz/dsh-power; - 等待安装完成,按提示重启 DSH(Host 半身须重启;Client 半身刷新页面即可)。
方式二:命令行(以 Web profile web 为例)¶
dsh plugin --profile web add github:DX12xyz/dsh-power
方式三:本地目录(改代码 / 离线)¶
dsh plugin --profile web add "link:<仓库根目录绝对路径>"
方式四:离线 tgz¶
在仓库根目录 npm pack 后安装产出的 tgz(示例文件名 local-dsh-power-1.8.2.tgz):
cd <仓库根目录>
npm pack
dsh plugin --profile web add "file:<仓库根目录>/local-dsh-power-1.8.2.tgz"
卸载:
dsh plugin --profile web remove @local/dsh-power
安装后务必重启 DSH。装好判据:
- Client:侧边栏底部有「DSH电源」,菜单只有「重启 / 关闭」;
- Host:会话中调用
restart_dsh_status能返回当前阶段与运行中 AI。
卸载后 $DSH_HOME/.dsh-restart/ 可能残留 checkpoint、status.json 与运行设置,确认不需要时再手动清理。安装后不要在 AI 回合运行期间手工编辑 cordis.patch.yml;改配置优先用插件设置页,或等回合结束后再改。
典型用法¶
人类最短路径¶
- 侧边栏底部点「DSH电源」,选「重启」或「关闭」。
- 重启时模式下拉默认「等待」,可改「中断 / 强制」,可填可选原因(会出现在重启后通知里)。
- 确认后:等待档会阻塞到所有其他运行中 AI 完成当前回合再重启;重启期间页面会短暂断开,随后自动恢复。
确认交互要点:等待可在确认框取消;中断需「下一步」后再确认;强制需长按 5 秒,松开、失焦、Escape 等会取消。
AI 最短路径¶
先只读查状态,再选安全重启:
restart_dsh_status
restart_dsh_blocking_wait_safe
如需强制,顺序为:
restart_dsh_force_safeguard
restart_dsh_force_dangerous
适用场景与注意¶
适合需要在改配置、装插件或排障时可控地重启或退出 DSH、且希望多路 AI 与工具调用有如实报告与可恢复挂起的用户。
插件以当前 DSH 进程权限运行;安装前应自行查看 GitHub 仓库 源码与 MIT 许可证。SkillHub 上的社区目录与 DeepSeek / 幻方无官方从属关系,安装来源以你填写的 git 地址或本地包为准。
已知限制包括:平台支持 Web + Desktop(Windows);逃生舱为独立包 @local/dsh-escape-pod,本插件不依赖它;五个 AI 工具不声明 timeoutMs,挂起的重启调用仅在重启失败或回合取消时提前返回错误。
结尾¶
DSH 电源把「杀进程重开」换成等待、中断、强制三档,并在重启前后用检查点与恢复报告交代未决工具与后台任务;人类侧边栏与 AI 工具共用同一语义,强制路径对人类与 AI 分别有长按与审批+保险约束。