🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

进程重启 anweat/dsh-restart

DeepSeek Harnessv0.1.2
anweat55 天前有提交已提供中文文档扫描:含敏感能力

重载插件与配置,让改动立即生效

39.6/100
综合分
8
GitHub 星标
348
npm 周下载
—/5
用户评分

数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-restart
npm 源 · dsh-restart 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 55 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-restart @ 0.1.2
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:50:49

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 24 处,展示前 24 条)
  • 写入本地文件
    lib/index.js:78
    fs.writeFileSync(restartingFlagFilePath(), String(Date.now()), 'utf8');
  • 删除本地文件
    lib/index.js:84
    fs.unlinkSync(restartingFlagFilePath());
  • 写入本地文件
    lib/index.js:91
    fs.writeFileSync(resumeFilePath(), JSON.stringify({
  • 读取本地文件
    lib/index.js:110
    const parsed = JSON.parse(fs.readFileSync(resumeFilePath(), 'utf8'));
  • 写入本地文件
    lib/index.js:127
    fs.appendFileSync(path.join(homeDir(), 'dsh-restart-auto.log'), `${new Date().toISOString()} ${message}\n`, 'utf8');
  • 删除本地文件
    lib/index.js:134
    fs.unlinkSync(resumeFilePath());
  • 读取本地文件
    lib/index.js:279
    const pid = Number.parseInt(fs.readFileSync(watchdogPidFilePath(), 'utf8'), 10);
  • 写入本地文件
    lib/index.js:290
    fs.writeFileSync(watchdogFilePath(), watchdogScript(dynamic().watchdogCooldownMs, dynamic().watchdogPollMs), 'utf8');
  • 执行外部命令来自配置/变量
    lib/index.js:291
    const child = spawn(process.execPath, [watchdogFilePath()], {
  • 写入本地文件
    lib/index.js:318
    fs.mkdirSync(path.dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:319
    fs.writeFileSync(file, JSON.stringify({
  • 执行外部命令来自配置/变量
    lib/index.js:365
    const helper = spawn(process.execPath, ['-e', helperCode], {
  • 写入本地文件
    src/index.ts:109
    try { fs.writeFileSync(restartingFlagFilePath(), String(Date.now()), 'utf8') } catch { }
  • 删除本地文件
    src/index.ts:113
    try { fs.unlinkSync(restartingFlagFilePath()) } catch { }
  • 写入本地文件
    src/index.ts:119
    fs.writeFileSync(resumeFilePath(), JSON.stringify({
  • 读取本地文件
    src/index.ts:139
    const parsed = JSON.parse(fs.readFileSync(resumeFilePath(), 'utf8'))
  • 写入本地文件
    src/index.ts:156
    fs.appendFileSync(path.join(homeDir(), 'dsh-restart-auto.log'), `${new Date().toISOString()} ${message}\n`, 'utf8')
  • 删除本地文件
    src/index.ts:162
    try { fs.unlinkSync(resumeFilePath()) } catch { }
  • 读取本地文件
    src/index.ts:303
    const pid = Number.parseInt(fs.readFileSync(watchdogPidFilePath(), 'utf8'), 10)
  • 写入本地文件
    src/index.ts:309
    fs.writeFileSync(watchdogFilePath(), watchdogScript(dynamic().watchdogCooldownMs, dynamic().watchdogPollMs), 'utf8')
  • 执行外部命令来自配置/变量
    src/index.ts:310
    const child = spawn(process.execPath, [watchdogFilePath()], {
  • 写入本地文件
    src/index.ts:339
    fs.mkdirSync(path.dirname(file), { recursive: true })
  • 写入本地文件
    src/index.ts:340
    fs.writeFileSync(file, JSON.stringify({
  • 执行外部命令来自配置/变量
    src/index.ts:398
    const helper = spawn(process.execPath, ['-e', helperCode], {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-commands@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-http-proxy@deepseek-ai/dsh-invariants@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-scope@deepseek-ai/dsh-session
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 重载插件
  • 重载配置
v0.1.3-alpha.52026-09-09预发布
dsh-v0.1.5-alpha.1 的兼容候选版。 · 把迁移后的整套 DSH 依赖固定到 alpha 运行时这个确切版本。 · 在实机验证中支持当前的引导流程。 · npm 上的 latest 仍留在 0.1.2;请通过 next 标签安装这个候选版。 已用 16 项测试、peer 检查、隔离的 DSH 配置档,以及两轮完整的真实进程重启/恢复(含从 npm registry 全新安装)验证通过。
v0.1.22026-08-25
· 变更内容 · 修复:重启后重新连接设置 完整变更日志:
v0.1.12026-08-22
· 变更内容 · 修复:让重启插件适配 DSH 0.1.1-rc.2 · 杂项(发布):发布 v0.1.1 · 新贡献者 · @anweat 首次贡献于 完整变更日志:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-restart 重启整个 DeepSeek Harness 进程的插件,用于重新加载插件与配置(profile 的 cordis 组合、settings 等)。host + client 双半,装进 profile 的 bundle 后即可用。 DSH 重启插件设置 截图来自真实 web profile 部署,展示当前 DSH 设置页中的重启配置卡片。 功能 - 模型工具 restart_harness:让 agent 直接安排一次进程重启(可选 delayMs)。 - /restart 斜杠命令:在 UI 里手动触发重启。 - 配置卡片(设置 → 插件 → 插件配置 → 「DSH 重启」):可视化编辑以下设置,改动即时写入 settings.yaml: - legacyRestart — 旧 PowerShell/WMI/taskkill 重启方式(默认关闭,用 Node 原生方式)。 - continuePrompt — 重启后自动继续时注入给 agent 的提示词。 - 「立即重启」按钮:先读取当前进程身份,安排重启后等待新进程恢复并自动刷新页面。只读 GET 返回 { pid, startedAt };出于安全考虑,重启 POST 仍仅接受来自环回地址(127.0.0.1 / localhost)的同源请求,经反向代理/远程访问时会被拒绝(403)。
展开完整文档(README 剩余 1 节)
dsh-restart

重启整个 DeepSeek Harness 进程的插件,用于重新加载插件与配置(profile 的 cordis 组合、settings 等)。host + client 双半,装进 profile 的 bundle 后即可用。

DSH 重启插件设置

截图来自真实 web profile 部署,展示当前 DSH 设置页中的重启配置卡片。

功能

- 模型工具 restart_harness:让 agent 直接安排一次进程重启(可选 delayMs)。
- /restart 斜杠命令:在 UI 里手动触发重启。
- 配置卡片(设置 → 插件 → 插件配置 → 「DSH 重启」):可视化编辑以下设置,改动即时写入 settings.yaml:
- legacyRestart — 旧 PowerShell/WMI/taskkill 重启方式(默认关闭,用 Node 原生方式)。
- continuePrompt — 重启后自动继续时注入给 agent 的提示词。
- 「立即重启」按钮:先读取当前进程身份,安排重启后等待新进程恢复并自动刷新页面。只读 GET 返回 { pid, startedAt };出于安全考虑,重启 POST 仍仅接受来自环回地址(127.0.0.1 / localhost)的同源请求,经反向代理/远程访问时会被拒绝(403)。

自 0.1.3-alpha.4 起,内置 detached watchdog 已停用并从设置卡片移除。旧 watchdog 配置仍可被读取但不会执行;进程异常恢复请交给 systemd、Windows 服务或其他拥有完整进程生命周期的外部管理器。插件启动时会保留 $DSH_HOME/dsh-stop.flag,让旧版本遗留的 detached watchdog 自行退出。

兼容与发布通道

| 插件发布通道 | DSH 基线 | 兼容承诺 |
| npm latest(当前正式发布插件) | dsh-v0.1.1-rc.2 | 已验证维护基线 |
| npm next 候选(0.1.3-alpha.5) | dsh-v0.1.5-alpha.1 | 精确依赖与真实 profile 验收目标 |
| 后续 DSH 正式版 | 尚未发布 | 发布并完成真实 profile 门禁后再声明兼容 |

开发版不会覆盖 npm latest。0.1.5-alpha.1 依赖按精确版本锁定;该版本已移除 @deepseek-ai/dsh-client-runtime,客户端契约分别迁移到 Cordis、 dsh-client-store 与 dsh-client-ui-settings,不会混装 rc.2 运行时。

0.1.3-alpha.4 变更

- 禁用并移除内置 detached watchdog;旧配置保留为无操作兼容项。
- Windows 重启通过隐藏控制台拉起,保留完整 argv,避免后续 sandbox 命令闪窗。
- 新进程 PID 变化后继续等待带认证的前端首页返回成功,再刷新页面,避免源码部署重启期间因静态前端尚未挂载而停留在 HTTP 404。
- 防止并发请求重复安排 helper;helper 创建失败时保留旧进程,并记录失败日志。
- 自动继续投递失败时保留恢复标记;Web 路由随 Cordis 生命周期正确释放。

源码部署排错

- 本开发分支只对齐官方标签 dsh-v0.1.5-alpha.1。源码 checkout 先执行 corepack pnpm install --frozen-lockfile 和 corepack pnpm run build,再把本地插件重新加入隔离 profile;只安装依赖但没有构建 workspace,会表现为缺少 @deepseek-ai//lib,并不是 restart 拉起失败。
- 如果页面显示 list slot "settings.plugin.item" requires options.id,说明 Harness 与插件客户端落在不同的开发期 slot 契约。0.1.5-alpha.1 的官方契约是 keyed slot,本插件必须使用 options.key;不要直接改成 id,应统一 Harness 标签、插件分支和 profile 锁文件后重装。
- pnpm 首次安装 profile 依赖时可能把原生包写成待决的 allowBuilds 项。逐项确认 true 或 false 后重跑 dsh plugin --profile add ...,不要用全局放行绕过。
- 若旧版本重启后已经停在浏览器 HTTP 错误页,请手工打开新进程日志打印的当前
dsh web: URL 完成一次恢复;升级到本版本后,设置卡片会等待首页真正就绪再刷新。

安装

1. 把包加入 profile 依赖并挂进 bundle:

// profiles//package.json
{
"dependencies": { "dsh-restart": "..." },
"dsh": { "profile": { "bundles": ["...", "dsh-restart"] } }
}

2. 重启 DSH(/restart 或 restart_harness),刷新页面后即可看到卡片;之后通过卡片重启时会自动等待并恢复页面。

构建

pnpm install
node scripts/link-dsh-workspace.mjs --source
pnpm run build

host 半由 tsc 输出到 lib/index.js(@deepseek-ai/* 保持外部依赖);client 半由 tsdown 打成单文件 lib/client.js。
预览分享卡片长什么样 ↓anweat/dsh-restart
分享 · DeepSeek Harness Hub
anweat/dsh-restart

重载插件与配置,让改动立即生效

这是你的仓库?认领条目

回到顶部