前言¶
改 DSH 插件、cordis.patch.yml 或 profile 之后,往往需要关掉进程再开,改动才会进新进程。手动关窗口、找可执行文件再点一次,会打断当前会话;若还要让智能体接着上一轮对话,就得自己记 session、复制提示词。下面介绍的 dsh-restart(维护者 machine202502,社区分类:工作流)把「重启应用」做成侧边栏一键操作,并在开发场景下提供 dsh_restart 工具:重启后可写 [auto.continue] 回到同一会话。插件还带本地桥接、启动看门狗(watchdog)与 profile 回滚,并针对 Desktop Host 反复启动导致的 dsh-auth-* cookie 堆积做了清理。
这是什么¶
dsh-restart 是 DeepSeek Harness(DSH)社区插件,仓库 machine202502/dsh-restart,目录页 SkillHub。一句话:从侧边栏或(仅限开发调试的)智能体工具重启 Harness,可选在重启后继续同一会话;附带看门狗、profile 回滚与自动续聊逻辑。
插件以当前 DSH 进程权限运行。安装前请自行查看仓库源码与 MIT 许可证(package.json 中为 0.1.0,要求 Node >= 20)。
核心功能¶
侧边栏重启¶
| 能力 | 位置 |
|---|---|
| 「Restart DeepSeek Harness」按钮 | 侧边栏页脚,账号旁(电源图标) |
| 确认 | 模态框两个按钮,无多余选项 |
点击后只重启应用:不写入 pending 标记,不自动续接会话,不发送 [auto.continue]。模态框会提示:正在执行回合的工作区会话可能被中断。
智能体工具 dsh_restart¶
供扩展开发、调试插件与 profile 使用,不是日常「刷新状态」或无需改代码/配置时的重启手段。
dsh_restart({ fake: true })
→ Preflight passed; fake restart requested, nothing was restarted.
fake: true:跑完预检,不真正重启,便于测试。- 无
fake:重启应用,并通过会话消息[auto.continue](或看门狗回滚 profile 时为[auto.continue.failed])让客户端回到同一会话。
若插件配置里关闭了工具,旧会话里仍会调用失败:unknown tool "dsh_restart"。
重启后自动续接(仅工具路径)¶
重启进程不能是当前应用的子进程(Windows 上 taskkill /T 会连同重启器一起杀掉)。插件流程概要:
- 写入标记
%LOCALAPPDATA%\dsh-restart\pending.json(含 token、sessionId 等); - Windows:创建一次性计划任务
DSH-Restart,由 helper 等待约 1.5s、结束应用进程树、再等待约 1.8s 后启动.exe并删除任务;macOS/Linux 使用独立sh流程(kill+open/启动)。 - 新进程通过本地桥
127.0.0.1:49233原子领取标记(GET /claim),避免双重初始化发两条消息。
客户端打开同一会话,等 Composer 就绪后插入并发送 [auto.continue](Enter 为备选)。输入框里已有草稿会先暂存到 localStorage,发送后再还原到输入框且不自动发送。消息队列属于会话状态,插件不读写。
侧边栏按钮不走上述标记与续接路径。
本地桥与看门狗¶
桥接接口(资料原文):
GET /claim → { marker } — 仅一个客户端原子领取
POST /restart → 写标记并重启
GET /health → 看门狗判断宿主是否健康启动
GET /settings → 当前覆盖项
POST /settings → 保存覆盖项(无需重启)
每次由 dsh_restart 触发的重启带有 token:pending.json 与 watchdog.json 绑定;宿主正常启动后会删除 watchdog.json。看门狗在配置的超时内等 /health;失败则对比重启前 SHA-256(package.json、cordis.patch.yml、cordis.yml),若文件未被手动改过则回滚 profile。启动前 helper 还会运行 src/cookie-clean.py,清理 127.0.0.1/localhost 上多余的 dsh-auth-* cookie,缓解 Web authentication failed(431 / Cookie 过大)。若崩溃日志已是该错误,看门狗会清 cookie 再启一次而不回滚 profile。
dsh_restart 何时拒绝¶
仅在「安静」模式下对主智能体开放(Full access);侧边栏按钮不做这些检查。
| 检查 | 结果 |
|---|---|
| 子智能体调用 | 拒绝,需上报父智能体 |
| 非 Full access | 拒绝 |
| 其他会话/子智能体仍在 running 或队列非空 | 拒绝 |
| 仍有 background job running | 拒绝 |
已知缺口:子智能体结束回合后,其后台任务可能已从 ctx.jobs 注销但进程仍在,预检可能看不到,重启不会被拒绝。
安装与启用¶
官方安装命令:
npx --yes github:machine202502/dsh-restart
或手动在 profile 中声明依赖并加入 bundle:
"dsh-restart": "github:machine202502/dsh-restart#main"
并将 dsh-restart 写入 dsh.profile.bundles。
安装后需重启 DSH(侧边栏按钮出现后可用该按钮完成首次重启)。
插件配置¶
路径:Plugins → Restart → Configure。覆盖项保存在 %LOCALAPPDATA%\dsh-restart\settings.json;cordis.patch.yml 仍为默认值。保存设置无需重启应用,工具注册/注销即时生效。
| 设置 | 默认 | 作用 |
|---|---|---|
智能体可用 dsh_restart |
开 | 关则工具消失,旧记忆调用报错 |
| 看门狗启用 | 开 | 关则重启仅关开应用,不回滚 profile |
| 看门狗等待秒数 | 10 | 启动健康信号超时前等待(1–120) |
典型用法¶
- 日常只想干净重启:侧边栏页脚电源图标 → 确认。不续会话。
- 改 patch/profile 后让主智能体接着聊:在 Full access、无其他 running 会话/任务时,由主智能体调用
dsh_restart()(开发调试);重启后会话收到[auto.continue]。 - 测预检逻辑:
dsh_restart({ fake: true })。 - 冒烟测试(仓库内):
node tests/smoke.mj(README 中另有截断说明)。
适用场景与限制¶
适合:插件与 Cordis 配置开发者;需要在不丢当前会话的前提下重启进程验证改动;受 cookie 堆积影响反复 welcome 失败的环境(插件会清理 dsh-auth-*)。
注意:
- 无法在系统托盘或 Electron 主进程 Application 菜单加项(插件跑在子 host 进程)。
- Windows 依赖计划任务;策略禁止创建任务时重启会失败。
- 工具与子智能体、权限、并发会话/任务强相关;生产对话里应优先用侧边栏重启。
- 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属;DSH 生态是「一切皆插件」,安装第三方插件前请审阅源码。
结尾¶
dsh-restart 把 Harness 重启收进侧边栏,并把「重启 + 同会话续聊 + 启动失败回滚 + auth cookie 清理」做成一条可配置的工作流;开发时用 dsh_restart,日常用页脚按钮即可。
- 目录页:https://www.skillhub.cn/plugins/machine202502/dsh-restart
- GitHub:https://github.com/machine202502/dsh-restart