不重启进程即可循环验证插件加载与清理
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 75 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
tkwkeven/dsh-sim-restart-tester
不重启进程即可循环验证插件加载与清理
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,288已汉化MCP
71.7
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9
原生编程智能体paean-ai/deeptide
由 DeepSeek 打造,为 DeepSeek 而生。
★ 1,107已汉化DSH
67.7
多引擎接力台emo-xiaoyu/harness-mix
macOS/Linux 已加入源码构建与启动适配;目标系统的完整桌面验收仍需在对应机器执行。安装方式、Linux…
★ 419已汉化DSH
66.8
这是你的仓库?认领条目