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

插件模拟重启测试器 tkwkeven/dsh-sim-restart-tester

DeepSeek Harness
tkwkeven75 天前有提交已提供中文文档扫描:含敏感能力

不重启进程即可循环验证插件加载与清理

27.3/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tkwkeven/dsh-sim-restart-tester
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 18 处,展示前 17 条)
  • 读取本地文件
    plugins/preflight.mjs:86
    buf = readFileSync(path)
  • 写入本地文件
    plugins/preflight.mjs:101
    writeFileSync(path, buf.subarray(3))
  • 执行外部命令来自配置/变量
    plugins/preflight.mjs:116
    const r = spawnSync(process.execPath, ['--check', path], { encoding: 'utf8', timeout: 15000 })
  • 读取本地文件
    plugins/preflight.mjs:159
    try { text = readFileSync(dist, 'utf8') } catch { continue }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:670
    try { return JSON.parse(readFileSync(p, 'utf8')) } catch { return null }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:673
    try { return readFileSync(p, 'utf8') } catch { return null }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:676
    try { return existsSync(p) } catch { return false }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:679
    try { return statSync(p) } catch { return null }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:690
    try { entries = readdirSync(dir, { withFileTypes: true }) } catch { return out }
  • 读取本地文件
    plugins/sim-restart-tester.mjs:1010
    try { entries = readdirSync(dir, { withFileTypes: true }) } catch { continue }
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1069
    mkdirSync(REPORT_DIR, { recursive: true })
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1070
    writeFileSync(scriptPath, RUNNER_SCRIPT, 'utf8')
  • 执行外部命令来自配置/变量
    plugins/sim-restart-tester.mjs:1075
    const child = spawn(process.execPath, [scriptPath], {
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1268
    mkdirSync(REPORT_DIR, { recursive: true })
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1269
    mkdirSync(join(REPORT_DIR, 'reports'), { recursive: true })
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1270
    writeFileSync(join(REPORT_DIR, 'latest.json'), JSON.stringify(result, null, 2), 'utf8')
  • 写入本地文件
    plugins/sim-restart-tester.mjs:1272
    writeFileSync(join(REPORT_DIR, 'reports', ts + '.json'), JSON.stringify(result, null, 2), 'utf8')
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 循环验证插件加载与清理
  • 无需重启进程
  • 自动监听与修复循环

DeepSeek Harness 插件的模拟重启测试引擎:对动态 cordis 插件、npm/文件插件和智能体预设跑 apply -> cleanup -> apply 循环,不用重启 DSH 进程。自动监听,自动修复循环。

README

由 DeepSeek 最新模型翻译生成
dsh-sim-restart-tester DeepSeek Harness(DSH)宿主级「模拟重启」测试引擎:不实际重启 DSH 进程,就能对插件做 apply(冷启动)→ 全部清理(模拟 stop)→ 再次 apply(模拟重启) 的循环测试,并在失败时自动打报告、派修复子代理改文件、再测,直到全部通过。 它解决什么问题 DSH 的插件(尤其是自定义插件和 agent preset)在开发/修改过程中最常见的两个痛点: 1. 改完插件不敢重启:cordis.yml / cordis.patch.yml 一旦写错(插件名引用缺失、YAML 解析失败、apply 抛异常),DSH 进程启动即崩溃;在无界面的部署里(如飞书机器人进程)甚至会出现「旧进程退了、新进程没起来」的静默宕机,日志里什么都查不到。 2. 重启成本高、无法自动化验证:手动改一次配置 → 重启 → 看日志 → 再改,一轮就是几十秒甚至几分钟,改多个插件时根本验证不过来。 本插件把「重启」这件事在隔离环境里模拟出来:冷启动、清理、再启动的完整生命周期循环,覆盖 DSH 里所有插件类型,任何失败都给出可读的阶段(load / apply / cleanup / config)、轮次和错误堆栈,并落盘完整报告。
展开完整文档(README 剩余 1 节)
dsh-sim-restart-tester

DeepSeek Harness(DSH)宿主级「模拟重启」测试引擎:不实际重启 DSH 进程,就能对插件做 apply(冷启动)→ 全部清理(模拟 stop)→ 再次 apply(模拟重启) 的循环测试,并在失败时自动打报告、派修复子代理改文件、再测,直到全部通过。

它解决什么问题

DSH 的插件(尤其是自定义插件和 agent preset)在开发/修改过程中最常见的两个痛点:

1. 改完插件不敢重启:cordis.yml / cordis.patch.yml 一旦写错(插件名引用缺失、YAML 解析失败、apply 抛异常),DSH 进程启动即崩溃;在无界面的部署里(如飞书机器人进程)甚至会出现「旧进程退了、新进程没起来」的静默宕机,日志里什么都查不到。
2. 重启成本高、无法自动化验证:手动改一次配置 → 重启 → 看日志 → 再改,一轮就是几十秒甚至几分钟,改多个插件时根本验证不过来。

本插件把「重启」这件事在隔离环境里模拟出来:冷启动、清理、再启动的完整生命周期循环,覆盖 DSH 里所有插件类型,任何失败都给出可读的阶段(load / apply / cleanup / config)、轮次和错误堆栈,并落盘完整报告。配合文件监视器,插件一被修改就自动跑全量测试——把「重启后才发现炸了」变成「保存文件后几秒就知道有没有问题」。

功能特性

- 覆盖全部插件类型:
- 动态 Cordis 插件(cordis_define 创建的 code.host / code.client):在隔离 worker 中重新编译源码并模拟,复刻动态沙箱语义——require / fetch / 定时器被拦截并给出明确报错指引,ctx 注入门禁、harness 桩、React 桩一应俱全。
- npm 插件与本地文件插件(./plugins/.mjs):在独立 node 子进程中真实 import 模块(真实模块解析与依赖),用 mock ctx 执行 apply/cleanup 重启循环;进程级隔离,崩溃或挂起都不影响宿主。
- agent presets(~/.dsh/.agent-presets 与部署 agent-presets):配置校验——YAML 可解析、插件行引用可解析、插件 id 唯一,不执行 apply。
- 自动监视 + 打回修复闭环:监视 composition(cordis.yml / cordis.patch.yml / package.json / pnpm-lock.yaml / pnpm-workspace.yaml)、plugins/ 目录、 ~/.dsh/.agent-presets 与 ~/.dsh/settings.yaml。任何插件被安装 / 修改 / 移除后,自动(1.2s 防抖)执行全量模拟重启测试;失败时报告落盘 /sim-restart/,并自动派生修复子代理读取失败详情、修复目标文件,文件变化再次触发全量测试,直到全部通过或达到最大修复轮数。
- 失败可诊断:每次测试输出结构化 JSON 报告(latest.json),含每个目标的通过状态、失败阶段、错误名称 / 消息 / 堆栈前 8 行;中文错误信息直接说明该改哪里。
- 零依赖自包含:自带无依赖的轻量 YAML 解析器(解析 composition 与 preset 不需要引入 yaml 包);唯一运行时依赖是 DSH 宿主本身提供的 tools / shell / subagents 等服务。

安装

将 plugins/sim-restart-tester.mjs 与 plugins/preflight.mjs(后者是前者的源码预检依赖,必须放在同目录)放入你的 profile 插件目录,例如:

/plugins/sim-restart-tester.mjs
/plugins/preflight.mjs

在 profile 的 cordis.patch.yml 中挂载(插入到列表里):

- insert:
- id: sim-restart-tester
name: ./plugins/sim-restart-tester.mjs

重启 DSH 进程生效(composition 配置不热更新)。

依赖:需要 DSH 宿主提供 tools(工具注册)、shell(子进程执行)、subagents (自动修复子代理;缺失时自动修复功能自动降级为「仅报告,不修复」)。

使用

注册三个工具,所有会话(Web GUI、飞书/Lark 等)可用:

sim_restart_test — 对插件做模拟重启测试

两种模式:

A. 动态插件源码模式(开发 cordis_define 插件时用):

sim_restart_test({ pluginId: "xxx", hostSource: "", clientSource: "", cycles: 2 })

参数:

| 参数 | 说明 |
| pluginId | 目标插件标识(仅用于报告标注,可选) |
| hostSource / clientSource | 动态插件的 Host / Client 半源码(cordis_define 的 code.host / code.client 函数体原文,含 return {...};可用 cordis_inspect_self(pluginId, packageId) 获取) |
| cycles | 启动-停止轮数:1=仅冷启动,2=冷启动+1 次重启(默认 2),最大 5 |
| extraServices / missingServices | 额外视为「已提供」/「缺失」的 ctx 服务名(模拟服务环境) |
| clientStrict | Client 半 apply/清理异常是否判为失败(默认 false:浏览器环境差异只记警告) |

B. 全量自动模式(对所有 composition 插件做真实加载模拟):

sim_restart_test({ auto: true })

参数:

| 参数 | 说明 |
| auto | 自动发现并测试全部 composition 插件(npm 插件、文件插件、agent presets) |
| targets | 按 id / 路径 / 包名过滤目标(可选) |
| cycles | 同上 |
| autoFix | 失败时自动启动修复子代理打回修复(默认 false) |
| fixRounds | 最大自动修复轮数(默认 3,最大 5) |
| presetCheck | 是否校验 agent presets 配置(默认 true) |
| coreStrict | 是否把核心部署插件(@deepseek-ai/ bundle,模拟环境固有局限)的失败判为失败(默认 false=仅警告) |

返回结构化报告:passed=false 时附带失败阶段(load/apply/cleanup/config)、轮次与完整错误。

sim_restart_status — 查询引擎状态

无参数。返回:监视器开关状态、监视目录、最近一次自动测试结果、自动修复循环状态、报告文件位置。

sim_restart_watch — 控制自动监视

| 参数 | 说明 |
| enabled | true 启用自动监视 / false 停用(默认保持当前状态) |
| forceRun | true 立即执行一次全量自动测试 |
| autoFix / fixRounds | forceRun 时失败是否自动修复及最大轮数 |

配置

本插件无需配置项;行为由工具参数控制。报告统一写入 /sim-restart/:

/sim-restart/latest.json 最近一次全量测试报告 /sim-restart/*.json 历史报告

目录结构

dsh-sim-restart-tester/
├── plugins/
│ ├── sim-restart-tester.mjs 宿主插件(工具注册 + 自动监视 + 修复循环) │ └── preflight.mjs 源码预检模块(BOM/编码/mojibake/语法,被前者依赖) ├── LICENSE ├── package.json └── README.md

工作原理(简述)

- 动态插件源码模拟:源码在 codeRuntime 的隔离 worker 中编译执行,先经过 preflight.mjs 的预检(BOM / UTF-8 / GBK-mojibake / node --check 语法),再在 SIM_CORE 提供的沙箱里 apply(注入 mock ctx:可调用的魔法桩、动态工具门禁、require/fetch/定时器陷阱提示),记录全部副作用清理器后执行 stop,再 apply 完成一轮重启。
- npm / 文件插件模拟:把插件模块在独立 node 子进程里真实 import(PROGRAM / RUNNER_SCRIPT 两个模板由 SIM_CORE 拼装),mock ctx 由宿主通过 stdin 传入 JSON 描述,子进程内完成 apply → cleanup → apply 循环并回报结果,宿主只做汇总;进程崩溃/超时不影响宿主。
- 自动监视:fs.watch 监听 composition / plugins / presets / settings 的变化,1.2s 防抖后按变化类型做增量测试(composition 变化→全量;插件文件变化→只测该文件;其他→只做 preset 校验)。
- 修复循环:失败目标中排除部署核心 bundle 与配置类错误后,通过 subagents 的 spawn provider 派生修复子代理(携带失败报告路径与修复指引),修复者改完文件后自动再测。

许可

MIT License,见 LICENSE。
预览分享卡片长什么样 ↓tkwkeven/dsh-sim-restart-tester
分享 · DeepSeek Harness Hub
tkwkeven/dsh-sim-restart-tester

不重启进程即可循环验证插件加载与清理

这是你的仓库?认领条目

回到顶部