让模型在必要时安全重启应用并恢复会话
32.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add IThinkItsaName/dsh-auto-restart该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-auto-restart(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/22 11:43:54
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 33 条)
- 发起网络请求lib/tool.js:80
return service.request({ - 发起网络请求lib/client.js:361
const response = await fetch(STATUS_URL, { cache: 'no-store', credentials: 'same-origin' }) - 读取本地文件lib/helper.mjs:84
if (!existsFs(exe)) return { state: 'powershell-missing', visible: null } - 执行外部命令来自配置/变量lib/helper.mjs:102
const output = execFileSync(exe, ['-NoProfile', '-NonInteractive', '-Command', script], { - 写入本地文件lib/helper.mjs:127
appendFs(join(dir, 'helper.log'), `${now()} ${message}\n`, 'utf8') - 执行外部命令来自配置/变量lib/helper.mjs:224
const child = spawn(launch.executable, args, { - 读取本地文件lib/helper.mjs:355
if (existsFs(join(dir, 'host-ready.json'))) { - 写入本地文件lib/helper.mjs:378
appendFs(join(dir, 'helper.log'), `${now()} fatal: ${String(error?.stack ?? error)}\n`, 'utf8') - 发起网络请求lib/coordinator.js:315
const outcome = await approval.request({ - 写入本地文件lib/journal.js:60
mkdirSync(dir, { recursive: true }) - 写入本地文件lib/journal.js:74
writeFileSync(fd, JSON.stringify(value, null, 2)) - 写入本地文件lib/journal.js:80
renameSync(tmp, file) - 删除本地文件lib/journal.js:84
unlinkSync(file) - 写入本地文件lib/journal.js:88
renameSync(tmp, file) - 写入本地文件lib/journal.js:98
writeFileSync(fd, JSON.stringify(value, null, 2)) - 读取本地文件lib/journal.js:108
return JSON.parse(readFileSync(file, 'utf8')) - 删除本地文件lib/journal.js:156
unlinkSync(file) - 删除本地文件lib/journal.js:170
unlinkSync(file) - 读取本地文件lib/journal.js:212
return existsSync(markerPath(dir, name)) - 删除本地文件lib/journal.js:227
unlinkSync(file) - 读取本地文件lib/journal.js:238
if (!existsSync(root)) return [] - 读取本地文件lib/journal.js:241
entries = readdirSync(root, { withFileTypes: true }) - 写入本地文件lib/journal.js:260
appendFileSync(join(dir, 'results.jsonl'), `${JSON.stringify(result)}\n`, 'utf8') - 读取本地文件lib/journal.js:277
if (!existsSync(root)) return - 读取本地文件lib/journal.js:280
entries = readdirSync(root, { withFileTypes: true }) - 删除本地文件lib/journal.js:298
unlinkSync(join(dir, name)) - 删除本地文件lib/journal.js:304
unlinkSync(dir) - 执行外部命令来自配置/变量lib/launch.js:111
const child = spawn(launch.executable, [helperPath, journalDir], { - 读取本地文件lib/launch.js:125
if (existsSync(file)) { - 读取本地文件lib/launch.js:127
return JSON.parse(readFileSync(file, 'utf8')) - 读取本地文件lib/launch.js:142
if (existsSync(abortPath)) return { aborted: true } - 读取本地文件lib/launch.js:143
if (existsSync(ackPath)) { - 读取本地文件lib/launch.js:145
return { ack: JSON.parse(readFileSync(ackPath, 'utf8')) }
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-llm@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 创造模式重启/刷新工具:dsh_restart、dsh_reload、重启续跑与草稿清理、设置卡片
README
由 DeepSeek 最新模型翻译生成dsh-auto-restart
创造模式(cordis preset)中的 DSH 自动重启工具。工具描述里写明了准入规则:只有确认「必须重启才能达到目的」且没有更简单的替代方案(重载组件、改配置、新开会话、重试等)时才调用。 模型调用 dsh_restart 后:
1. 记录调用方与其他活动会话(含排队输入、运行中 job、已装载提醒的计数);
2. 起一个脱离宿主进程树的 helper;
3. 等调用方工具结果落盘、活动会话停稳并 flush 后,由 helper 关闭 Electron 主进程(host 通过 IPC 断开自我优雅退出)并重启应用;
4. 新宿主按 journal 恢复调用方与其他活动会话,注入 user 角色内容、以 notice 来源呈现的续跑通知(不是用户气泡,也不是 tool 角色),并自动补上幂等 marker。
同时提供设置卡片:权限准入策略、重启前确认、是否恢复其他会话、两段续跑提示词。布局沿用 dsh-lore 设置页的单层列表:左侧标签/说明、右侧控件、行下细分隔线,开关用官方 Switch 原语。设置值写入 profile patch,改值不需要重启 DSH。
与官方的关系:DSH 生产环境没有模型可调用的重启。
展开完整文档(README 剩余 1 节)
dsh-auto-restart
创造模式(cordis preset)中的 DSH 自动重启工具。工具描述里写明了准入规则:只有确认「必须重启才能达到目的」且没有更简单的替代方案(重载组件、改配置、新开会话、重试等)时才调用。 模型调用 dsh_restart 后:
1. 记录调用方与其他活动会话(含排队输入、运行中 job、已装载提醒的计数);
2. 起一个脱离宿主进程树的 helper;
3. 等调用方工具结果落盘、活动会话停稳并 flush 后,由 helper 关闭 Electron 主进程(host 通过 IPC 断开自我优雅退出)并重启应用;
4. 新宿主按 journal 恢复调用方与其他活动会话,注入 user 角色内容、以 notice 来源呈现的续跑通知(不是用户气泡,也不是 tool 角色),并自动补上幂等 marker。
同时提供设置卡片:权限准入策略、重启前确认、是否恢复其他会话、两段续跑提示词。布局沿用 dsh-lore 设置页的单层列表:左侧标签/说明、右侧控件、行下细分隔线,开关用官方 Switch 原语。设置值写入 profile patch,改值不需要重启 DSH。
与官方的关系:DSH 生产环境没有模型可调用的重启。桌面主进程的 app.relaunch() 只出现在崩溃恢复对话框和开发模式菜单;Restart App and Host 菜单包在 ...development ? [...] : [] 里,打包版不显示。dsh_restart 填的就是这个空档。
刷新页面的 dsh_reload 已移除(0.1.9)。运行中改写客户端 bundle 再 reload 会引入 boot 竞态;客户端半边改完请直接 dsh_restart 宿主。
安装
在 profile 中安装本地 bundle:
dsh plugin --profile desktop add "file:D:\Program Files (x86)\dsh_manner_space\publish\dsh-auto-restart"
或通过 plugin_manager 的 install_bundle 使用同一个绝对路径。
首次安装需要手动重启一次 DSH,因为 host 行和 preset-cordis 覆盖在宿主启动时生效;安装/升级客户端半边后同样需要重启一次 DSH(宿主重启会重载页面并加载新的客户端代码)。之后修改设置值不需要重启。
设置卡片
位置:Settings → Plugins → dsh-auto-restart。
| 字段 | 说明 |
| 权限策略 | workspace-write:workspace-write 或更高权限下免提权;danger-full-access:只有 danger-full-access 下免提权,低权限会话先请求一次提权批准。 |
| 重启前确认 | 达到权限级别后是否仍询问一次。关闭它才是真正的“自行使用”;低权限提权批准不受此开关影响。 |
| 恢复其他活动会话 | 关闭后只恢复调用方;其他会话仍会被打断和记录。 |
| 调用方续跑提示词 | 支持 {{restartId}}、{{reason}}、{{time}};marker 由宿主自动加。 |
| 其他会话续跑提示词 | 支持 {{restartId}}、{{time}};{{reason}} 会被替换为“another session requested it”,避免泄露调用方原因。 |
权限选项是准入/同意策略,不是 OS 沙箱。 helper 必须写 ~/.dsh、spawn 进程、关闭 Electron/host,因此它始终在宿主进程外运行;这个选项只决定模型在什么会话沙箱级别下可以免“提权批准”调用,不会把 helper 关进工作区。
设置修改通过 DSH 的 configForms → settings → config-editor 写入当前 profile 的 cordis.patch.yml;对应 Config 字段标记为 .volatile(),宿主在每次 request/resume 时现读。修改 Config 的字段名/类型/数量仍然需要重启;只改值是热生效的。
配置项
Config 位于 lib/index.js。除设置卡片外,常用字段:
- resumeCallers(默认 true):是否恢复调用方。
- maxResumeSessions(默认 0 = 不限):恢复总数上限。
- maxResumeConcurrency(默认 2)、resumeStaggerMs(默认 1500)。
- startupDelayMs(默认 3000):新宿主启动后等待再注入。
- goTimeoutMs(默认 30000):helper 等 go 的上限;超时不杀,写 aborted 退出。
- shutdownGraceMs / relaunchDelayMs / relaunchWaitMs / expiryMs / cooldownMs。
- windowCheckMs(默认 4000)/ windowCheckWaitMs(默认 7000):desktop relaunch 后用 PowerShell 探测主窗口是否可见;windowCheckMs 后开始探测,若还是 hidden/unknown 则每 500 ms 重试到 windowCheckWaitMs 用完;仍不可见时在 caller 续跑消息末尾提示手动启动。CLI 模式跳过。
- journalDir:默认 ~/.dsh/dsh-auto-restart(受 DSH_HOME 影响)。
- launch:打包桌面版自动识别;dev Electron / CLI 需要显式配置 {mode, executable, args, cwd}。
工作方式
- journal + helper:在 ~/.dsh/dsh-auto-restart/<restartId>/ 下原子写入请求、go、killing、results 等状态;lib/helper.mjs 以 detached + stdio:ignore 运行,先关 Electron 主进程让 host 优雅退出,host 超时才强杀(不使用 taskkill /T),再重启应用。
- 续跑:resolveAgent() + agent.followup(createUserMessage({ source: { kind: 'dsh-auto-restart', form: 'notice' } })) 注入 notice(与后台 job 完成通知同一形制,不占用户气泡);注入前读 session log 查 marker,崩溃重试不会重复。缺少相关 API 时回退到 sessionController.prompt()。
- 草稿清理:重启后宿主在只读路由 GET /plugins/dsh-auto-restart/status.json 发布 { draftHints };浏览器半边加载后轮询,把「非空且是最后一条人类消息前缀」的残留草稿清掉(lib/draft-guard.js,含 IME 公共前缀规则),真正没发的草稿不动。
已知限制
- 打包桌面版是主目标;dev Electron 不自动猜启动命令,必须配置 launch。
- 桌面 host 使用 --port 0,端口每次变化:外部浏览器标签页不会自动跳转,桌面窗口由 Electron 主进程重新加载。
- 重启会让未加载的空闲会话中的定时提醒在新进程中无法触发,直到手动打开那个会话。
- notice 呈现依赖 Chat 的 form: 'notice' 分类(DSH 0.2.1 起);升级 DSH 后若分类变化,续跑会退回普通注入行/用户消息。
- 草稿清理是前缀启发式:极小概率下,一个真正没发、又恰好是上一条消息前缀的草稿会被一并清掉。
- 如果插件自身把宿主启动弄坏,这个工具无法从「宿主起不来」中自救;请用桌面崩溃恢复禁用插件,或回退 profile patch。
License
MIT,见 LICENSE。Copyright (c) 2026 IThinkItsaName。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
IThinkItsaName/dsh-auto-restart
让模型在必要时安全重启应用并恢复会话
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9