🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

nzl153/dsh-preflight

DeepSeek Harnessspec-screened扫描:低风险在 GitHub 查看 ↗
未验证

DSH 插件安装前预演冲突、出问题后读日志定位根因,并给出可直接执行的修复命令。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/24 · 已提供中文文档
综合分
31.5
GitHub 分
31.5
用户评分
—
★ Stars
2
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add nzl153/dsh-preflight
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 1 天前真实安装成功
是什么
dsh 原生插件 · other
装得上吗
本站已真实安装成功(非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 1 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/25(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-preflight

已停止维护(2026-09):DSH 0.1.7 起安装和启动插件时会自行检查兼容性,这个工具不再更新,仓库仅作存档。

装了个插件,DSH 起不来了。日志刷出几十行插件加载失败,看着像全坏了——真正的原因可能只是两个插件抢了同一个 entry id。

dsh-preflight 就是为这种事写的:

- 装之前,把候选插件下载下来,跟你当前 profile 对撞一遍,告诉你会不会出事
- 出事之后,读 DSH 的日志,把满屏连锁报错还原成一句根因

两种情况它都会把该敲的命令直接打出来,但不替你敲。工具自己不动手,才敢去下载和解析陌生插件的产物。

安全边界:只下载并解包候选产物,静态解析 JSON/YAML 和源码文本。不安装插件、不执行候选代码或 install scripts、不改动 DSH profile。网络候选写进 mkdtemp 临时目录,用完即删。

它回答的是「已实现的规则有没有发现问题」,不提供安全性证明,也没有 daemon 和后台自动修复。

要求

- Windows 优先;Node.js 22.19 或更高版本
- 默认 DSH 安装根:E:\dsh(用 --dsh-root 或环境变量 DSH_ROOT 覆盖)
- 默认 profile:%USERPROFILE%\.dsh\profiles\web
- 设置 DSH_HOME 可覆盖 .dsh 根目录

使用

dsh-preflight check dsh-web-search-pro

dsh-preflight check github:owner/repo#main --profile web

dsh-preflight check "D:\work\my-plugin"

dsh-preflight audit

dsh-preflight diff dsh-web-search-pro --json

dsh-preflight explain

dsh-preflight explain --log "D:\logs\dsh.err.log" --json

explain 默认读取 DSH 安装根下的 dsh.err.log、dsh.log、dsh.restart.log 和 launch-trace.log。每个文件只读取尾部 2 MiB。日志不存在或为空时正常返回 INFO。

常用参数:

- --profile :profile 名,默认 web
- --profile-dir :直接指定 profile 目录
- --dsh-root :覆盖 DSH 安装根
- --dsh-home :覆盖 .dsh 根目录
- --registry :覆盖 npm registry
- --log :explain 只分析指定日志
- --json:输出机器可读 JSON
- --strict:存在 WARN 时也返回退出码 1

检查项

| Finding | 级别 | 含义 |
|---|---:|---|
| ENTRY_ID_COLLISION | BLOCK | 候选 entry id 已被现有 bundle 使用 |
| UNRESOLVABLE_AFTER_INSTALL | BLOCK / UNKNOWN | 安装后仍无法证明 insert[].name 可解析 |
| CONFIG_OVERRIDE_SILENT | WARN | profile 后置层会整段替换候选同 id 的 config |
| SERVICE_PROVIDER_DUPLICATE | WARN / UNKNOWN | 显式 service 重复,或 manifest 信息不足 |
| MISSING_BUNDLE_MANIFEST | BLOCK | 缺少可读取的 dsh.bundle.patch |
| ENTRY_MISSING_IN_ARTIFACT | BLOCK | main、module、bin 或递归 exports 目标不在产物中 |
| BUILD_APPROVAL_REQUIRED | INFO | Git 来源包含需要人工授权的构建脚本 |
| VERSION_RANGE_MISMATCH | WARN | @deepseek-ai/* peer range 与本机版本不匹配 |
| UNPINNED_SOURCE | WARN | GitHub ref 不是完整 commit SHA |
| SENSITIVE_API_SURFACE | INFO | 静态文本匹配到子进程、文件写入或外联 URL |
| INSTALL_SCRIPT_PRESENT | WARN | 安装时存在生命周期脚本 |
| BUNDLES_DEPS_DRIFT | BLOCK | profile 的 bundles、dependencies 与磁盘状态漂移 |
| UNMET_PEER | WARN | 当前 profile 的 peer 缺失或版本不匹配 |

运行时日志模式

| Finding | 级别 | 含义 |
|---|---:|---|
| PORT_ALREADY_IN_USE | BLOCK | 端口被旧进程占用,新实例未启动,插件错误是连锁表象 |
| BUNDLE_UNRESOLVED_AT_BOOT | BLOCK | 启动时无法解析 bundle;会与 profile 交叉判断卸载残骸 |
| ENTRY_ID_COLLISION_AT_BOOT | BLOCK | 启动日志显示 entry id 被重复注册或覆盖 |
| MODULE_ENTRY_MISSING | BLOCK | 已安装包的内部入口文件不在发布产物中 |
| UNRECOGNIZED_ERROR | UNKNOWN | 日志有错误,但确定性规则无法归类 |
| NO_LOGS_TO_ANALYZE | INFO | 默认日志或指定日志不存在、为空 |
| NO_RECOGNIZED_RUNTIME_ERROR | INFO | 日志有内容,但没有匹配到错误或已实现模式 |

退出码

- 0:没有 BLOCK;默认允许 WARN
- 1:存在 BLOCK,或 --strict 下存在 WARN
- 2:参数、下载、解包或基础 profile 读取失败

验证状态
规则的可信度并不一致,这里如实标注。

已在真实故障上验证(隔离测试台复现 + 真实归档日志):

- ENTRY_ID_COLLISION、BUNDLES_DEPS_DRIFT、ENTRY_MISSING_IN_ARTIFACT、UNMET_PEER
- PORT_ALREADY_IN_USE、ENTRY_ID_COLLISION_AT_BOOT、BUNDLE_UNRESOLVED_AT_BOOT、MODULE_ENTRY_MISSING

只有单元测试覆盖,尚未在真实场景触发过:

- CONFIG_OVERRIDE_SILENT、SERVICE_PROVIDER_DUPLICATE、BUILD_APPROVAL_REQUIRED、VERSION_RANGE_MISMATCH、UNPINNED_SOURCE、SENSITIVE_API_SURFACE、INSTALL_SCRIPT_PRESENT、MISSING_BUNDLE_MANIFEST、UNRESOLVABLE_AFTER_INSTALL

已知局限:

- explain 的日志模式按当前 DSH 版本的措辞编写。DSH 若改动日志文案,相关规则会静默失效——不会报错,只是不再命中。
- 本工具只说明「已实现的规则是否发现问题」,不构成安全性证明,也不能替代人工审阅插件源码。
- 输出为 CLEAR 只意味着这些规则没有命中,不意味着插件没有问题。

实现边界

- npm 来源读取 registry metadata 和 tarball,并校验可用的 sha512 integrity。
- GitHub 来源使用 codeload archive;本地来源经过 realpath 后只读。
- tar 解包拒绝路径穿越和绝对路径,不创建 archive 中的 symlink 或 hardlink,并限制下载、解压、单文件和文件数量。
- YAML 的 !!js 只保留为字符串,绝不求值。
- service provider 只使用显式 manifest 声明;信息不足时报告 UNKNOWN。
- 源码扫描是有上限的正则匹配,只列事实,不判断恶意与否。
- 日志分析只读取文件尾部,不查询端口或进程。处方只作为命令文本输出,从不自动执行。

开发

pnpm install

pnpm check

node lib/cli.js --help

许可证:MIT。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(nzl153)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群