Winter-And-You-Gone/dsh-restart
Winter-And-You-Gone★ 0JavaScript最后同步: 2026-08-16
—
README 摘要
dsh-restart DeepSeek Harness(DSH) 纯插件 :会话头部加「🔄 重启 DSH」按钮,让整个桌面应用一键重启; 若重启时当前回合仍在运行,重启后自动"继续"接着跑。 不修改任何 @deepseek-ai/dsh- 源码。 功能:一键重启 DSH(🔄 重启 DSH)+ 条件自动续跑 会话头部有一个「🔄 重启 DSH」按钮: 1. 第一次点击 进入「确认重启?」(3 秒不点自动复位,防误触); 2. 再点一次 执行: - 若 当前会话的 agent 正在运行(回合未结束) ,写入"续跑标记"(重启后自动发"继续"); 若 agent 已停止,则只重启、不续跑; - host 脱离地拉起「复活进程」,随后请求宿主退出:宿主提供 ctx.appExit 时调用它 (3 秒兜底 process.exit(0) );桌面 web 宿主不提供 appExit ,直接 process.exit(0) —— 无论如何保证宿主必退; 3. 桌面应用随之整体退出,复活进程 确认旧实例退出(8 秒宽限,不退就 taskkill /F 强杀) , 再 自动重新启动 整个应用; 4. 重启后,被标记的会话一旦由 web 端正常创建/恢复(打开该会话),自动注入"继续"接着跑。 ⚠️ 重启会 短暂断开 当前会话(属预期);回合未结束才会自动"继续"。 自动续跑实现 - 插件监听 agent/created 事件:被标记的会话一旦被创建/恢复,立即 agent.followup(...) 注入"继续"并清标记。 - 不在启动时自己 agents.resume ——那会造出缺 agent preset / 工具呈现 / 权限的 "半成品 agent",导致该会话工具大面积 UNKNOWN TOOL(已踩过坑)。 - 续跑标记 5 分钟内有效 ,防陈旧标记误复活旧会话。 - 只在 agent 运行中 才写标记:回合已结束不续跑。 Agent 触发的重启("你也能自动重启 DSH") 会话内的 agent 可以直接触发带续跑的自动重启: 你在对话里说一句"重启 DSH",我就在回复末尾执行它:应用自动关、自动开、回合未结束则自动继续。 为什么需要"复活进程 + 强杀"(旧版桌面) 桌面应用(Electron)对 host 只有监督、没有自动复活:host 一退出,桌面主进程理应 app.quit() ——但实测 经常不退出 (变成无子进程的僵尸一直挂着),导致只等它自然退出 永远等不到。所以: 1. index.js 先 spawn 出 revive.mjs (detached,宿主退出后仍存活); 2. revive.mjs 给旧实例 8 秒宽限 自然退出,不退就 taskkill /T /F 强杀 并确认死透; 3. 再拉起桌面可执行文件;新实例 5 秒内退…
在 GitHub 查看完整 README →