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

插件急救箱 SherlockGougou/dsh-plugins-fix

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

诊断插件故障并一键禁用元凶,让 DSH 重新启动

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 81 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件
查看扫描证据(共 43 处,展示前 34 条)
  • 读取本地文件
    lib/cli.js:183
    if (!existsSync(join(common.home))) {
  • 读取本地文件
    lib/cli.js:289
    if (existsSync(patchPath)) {
  • 读取本地文件
    lib/cli.js:290
    const content = readFileSync(patchPath, 'utf8')
  • 读取本地文件
    lib/cli.js:300
    if (existsSync(pkgPath)) {
  • 读取本地文件
    lib/cli.js:302
    const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
  • 读取本地文件
    lib/home.js:51
    if (!existsSync(dir)) return []
  • 读取本地文件
    lib/home.js:53
    for (const entry of readdirSync(dir)) {
  • 读取本地文件
    lib/home.js:57
    if (statSync(full).isDirectory()) names.push(entry)
  • 读取本地文件
    lib/actions.js:53
    if (!existsSync(file)) {
  • 读取本地文件
    lib/actions.js:57
    const content = readFileSync(file, 'utf8')
  • 写入本地文件
    lib/actions.js:74
    writeFileSync(file, content)
  • 读取本地文件
    lib/actions.js:297
    let cur = readFileSync(file, 'utf8')
  • 读取本地文件
    lib/actions.js:315
    let cur2 = readFileSync(file, 'utf8')
  • 读取本地文件
    lib/actions.js:323
    let cur = readFileSync(file, 'utf8')
  • 读取本地文件
    lib/doctor.js:52
    return JSON.parse(readFileSync(file, 'utf8'))
  • 读取本地文件
    lib/doctor.js:116
    if (!existsSync(profileNodeModules)) return { exists: false, entries: 0, broken: 0 }
  • 读取本地文件
    lib/doctor.js:119
    for (const entry of readdirSync(profileNodeModules)) {
  • 读取本地文件
    lib/doctor.js:124
    isLink = lstatSync(full).isSymbolicLink()
  • 读取本地文件
    lib/doctor.js:132
    statSync(full)
  • 读取本地文件
    lib/doctor.js:173
    if (!existsSync(home)) {
  • 读取本地文件
    lib/resolve.js:37
    if (!existsSync(pkgPath)) {
  • 读取本地文件
    lib/resolve.js:41
    const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
  • 读取本地文件
    lib/resolve.js:53
    return lstatSync(p).isSymbolicLink() ? 'symlink' : 'dir-or-file'
  • 读取本地文件
    lib/resolve.js:93
    const check = existsSync(candidate) ? checkPackageDir(candidate) : { ok: false }
  • 读取本地文件
    lib/resolve.js:94
    if (kind === 'symlink' && !existsSync(candidate)) {
  • 读取本地文件
    lib/resolve.js:113
    if (existsSync(p) && lstatSync(p).isDirectory()) {
  • 读取本地文件
    lib/backup.js:35
    if (!existsSync(dir)) return []
  • 读取本地文件
    lib/backup.js:37
    for (const entry of readdirSync(dir)) {
  • 读取本地文件
    lib/backup.js:57
    if (!existsSync(file)) return null
  • 读取本地文件
    lib/backup.js:60
    for (let seq = 2; existsSync(backup); seq++) backup = `${base}-${seq}`
  • 写入本地文件
    lib/backup.js:61
    copyFileSync(file, backup)
  • 删除本地文件
    lib/backup.js:71
    unlinkSync(old.path)
  • 写入本地文件
    lib/backup.js:88
    copyFileSync(backup, temp)
  • 写入本地文件
    lib/backup.js:89
    renameSync(temp, file)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(135 字)↓

DSH 的插件(cordis.patch.yml 补丁层中的条目)一旦配置损坏、插件包缺失或初始化崩溃,会导致 DSH 无法启动。dsh-fix 是一个独立于 DSH 运行的命令行工具:诊断问题、一键进入安全模式、精准禁用元凶插件、二分定位故障源,并且所有操作都可回滚。

README

由 DeepSeek 最新模型翻译生成
dsh-fix 独立的 DSH(DeepSeek Harness)插件故障诊断与修复工具 —— 不依赖 DSH,也不需要任何 npm 依赖。 DSH 的插件(cordis.patch.yml 补丁层中的条目)一旦配置损坏、插件包缺失或初始化崩溃,会导致 DSH 无法启动。dsh-fix 是一个独立于 DSH 运行的命令行工具:诊断问题、一键进入安全模式、精准禁用元凶插件、二分定位故障源,并且所有操作都可回滚。 - 零依赖:纯 Node.js 标准库 + 内置(vendor)的 js-yaml,无 node_modules - 跨平台:Windows / macOS / Linux 通用(DSH 用户必然有 Node ≥ 18) - 非破坏性:每次修改前自动备份,restore 一键回滚 - 双语输出:自动跟随系统语言(zh / en),可用 --lang 指定 何时使用 DSH 出现以下情况时使用: - 启动即失败,报错形如 plugin(s) failed to load / failed to parse patches / 补丁解析失败 - 刚安装/更新了插件后 DSH 无法启动 - 启动失败但不确定是哪个插件引起的 快速开始 不需要安装任何东西,下载本仓库后直接运行: 方式一:直接运行(不需要安装)
展开完整文档(README 剩余 1 节)
dsh-fix

独立的 DSH(DeepSeek Harness)插件故障诊断与修复工具 —— 不依赖 DSH,也不需要任何 npm 依赖。

DSH 的插件(cordis.patch.yml 补丁层中的条目)一旦配置损坏、插件包缺失或初始化崩溃,会导致 DSH 无法启动。dsh-fix 是一个独立于 DSH 运行的命令行工具:诊断问题、一键进入安全模式、精准禁用元凶插件、二分定位故障源,并且所有操作都可回滚。

- 零依赖:纯 Node.js 标准库 + 内置(vendor)的 js-yaml,无 node_modules
- 跨平台:Windows / macOS / Linux 通用(DSH 用户必然有 Node ≥ 18)
- 非破坏性:每次修改前自动备份,restore 一键回滚
- 双语输出:自动跟随系统语言(zh / en),可用 --lang 指定

何时使用

DSH 出现以下情况时使用:

- 启动即失败,报错形如 plugin(s) failed to load / failed to parse patches / 补丁解析失败
- 刚安装/更新了插件后 DSH 无法启动
- 启动失败但不确定是哪个插件引起的

快速开始

不需要安装任何东西,下载本仓库后直接运行:

方式一:直接运行(不需要安装)
git clone https://github.com/SherlockGougou/dsh-plugins-fix.git
cd dsh-plugins-fix
node bin/dsh-fix.mjs doctor

方式二:全局安装(提供 dsh-fix 命令)
npm install -g dsh-fix
dsh-fix doctor

方式三:临时使用(不安装)
npx dsh-fix doctor

默认操作 $DSH_HOME(未设置时是 ~/.dsh),可用 --home <path> 指定其他位置。

典型故障处理流程

1. 诊断

dsh-fix doctor

只读检查:补丁文件语法(与 DSH 完全一致的 YAML 方言,支持 !!js 表达式)、条目结构、插件包是否已安装(模拟 Node 模块解析)、重复 id、损坏的 node_modules 符号链接、依赖缺失等。发现错误时退出码为 1。

输出采用 flutter doctor 风格:每个检查项一行 [✓] / [!] / [✗] 状态标记,问题明细缩进显示,结尾是汇总与处理建议:

Doctor summary (to see all details, run dsh-fix doctor -v):
[✓] DSH home: ~/.dsh
[✓] Home patch layer: absent (optional)
[✗] profile web (1 entry)
✗ plugin "plugin-nowhere" (entry "alpha") is NOT installed: not found. ...
! profile web lists dependency "plugin-c"@^1.0.0 ...

1 error, 1 warning, 0 notes across 1 profile and 1 plugin entry.
✗ Doctor found issues: 1 error, 1 warning.
Tip: run "dsh-fix safe" ...

dsh-fix doctor -v(或 --verbose)会追加逐项检查清单——package.json、node_modules、补丁条目数量、每个插件的模块解析结果,以及 info 级提示(默认隐藏)。

2. 一键安全模式 —— 先让 DSH 跑起来

dsh-fix safe

把所有用户插件条目(含 id 定向补丁的目标)追加 disabled: true 禁用补丁,DSH 即可用内置功能正常启动。禁用补丁带 # dsh-fix: 标记,随时可撤销。

3. 二分定位元凶

dsh-fix bisect

交互式二分:每轮禁用一半候选插件,你启动一次 DSH 回答 y/n,通常几轮内锁定元凶。锁定的插件保持禁用,其余自动恢复。

4. 精确控制与回滚

dsh-fix list # 列出各 profile 的插件条目 dsh-fix disable <id> # 禁用指定插件 dsh-fix enable <id> # 恢复被 dsh-fix 禁用的插件 dsh-fix clear # 移除全部 dsh-fix 禁用块(整体回滚 safe/bisect) dsh-fix backups # 列出备份 dsh-fix restore [序号] # 从备份恢复(默认最新)

命令一览

| 命令 | 说明 | 是否修改文件 |
| doctor | 只读诊断,输出错误/警告/提示与退出码 | 否 |
| list | 列出各 profile 的插件条目与缺失依赖 | 否 |
| safe | 安全模式:禁用全部用户插件条目 | 是(自动备份) |
| disable <id> | 禁用单个插件条目 | 是(自动备份) |
| enable <id> | 恢复被 dsh-fix 禁用的条目 | 是(自动备份) |
| clear | 移除所有 dsh-fix 禁用块 | 是(自动备份) |
| restore [序号] | 从备份恢复补丁文件 | 是(自动备份) |
| backups | 列出补丁文件备份 | 否 |
| bisect | 交互式二分定位故障插件 | 是(自动备份) |
| version / help | 版本 / 帮助 | 否 |

通用选项:--home <path>、--profile <name>、--lang zh|en、--json(doctor/list 输出 JSON,便于脚本化)、-v(doctor 逐项详细输出)。

工作原理

DSH 的每个配置档($DSH_HOME/profiles/<name>/)都是一个 Cordis 组合:启动时按顺序应用各 bundle 补丁层,然后是用户补丁层 cordis.patch.yml(顶层 YAML 数组),最后是命令行覆盖层。用户安装的插件就是补丁里的 - insert: 条目,配合配置档的 package.json 依赖安装 npm 包。

启动失败的三类根因(dsh-fix doctor 全覆盖):

1. 补丁文件语法/结构错误 —— 解析失败时 DSH 直接拒绝启动(failed to parse patches)
2. 插件包未安装或损坏 —— loader 无法解析 name 模块(plugin(s) failed to load)
3. 插件初始化崩溃 —— 代码抛错或依赖的 Service 不存在

dsh-fix 的修复手段只有一种:在补丁文件末尾追加带标记的禁用补丁:

dsh-fix: disabled entry "mcp-figma" at 2026-08-15T00:44:49.804Z
- id: "mcp-figma"
disabled: true

这正是 DSH 官方补丁语义(后置补丁可作用于同层先前的条目),所以:

- 不删除、不改写任何原始内容,enable 可逐字节还原
- 每次写入前自动生成 cordis.patch.yml.bak-<时间戳> 快照(与 DSH 自身的备份命名一致),restore 可回滚到任意备份(最多保留 10 份)
- 与 DSH 的 YAML 解析完全一致(js-yaml JSON_SCHEMA + !!js 标签),诊断即启动时所见

跨平台说明

- 需要 Node.js ≥ 18(DSH 本身要求 ≥ 22,所以所有 DSH 用户都满足)
- Windows 下在 CMD / PowerShell 中运行:node bin\dsh-fix.mjs doctor
- 路径、换行符(CRLF/LF)均已处理;bisect 支持交互终端与管道输入
- CI 在 Ubuntu / Windows / macOS 三平台自动跑完整测试(见 .github/workflows/ci.yml)

开发与测试

npm test # node:test 测试套件
npm run check # 语法检查

测试覆盖:YAML 方言、条目校验、模块解析模拟、禁用/恢复/安全模式/二分/备份/回滚、命令行行为与退出码。

常见问题

Q: doctor 报 @deepseek-ai/* 插件无法解析? DSH 内置插件从安装目录解析,dsh-fix 看不到安装目录,所以这类报错是警告级。若该包确实未安装,提示同样适用。

Q: 修改前需要关闭 DSH 吗? 建议关闭。DSH 的热重载会监听补丁文件,修改时若 DSH 在运行可能触发重载。

Q: 支持 DSH_HOME 自定义位置吗? 支持,--home 或环境变量 $DSH_HOME 均可。

License

MIT · js-yaml (vendored) 同样为 MIT 协议,见 vendor/LICENSE.js-yaml
预览分享卡片长什么样 ↓SherlockGougou/dsh-plugins-fix
分享 · DeepSeek Harness Hub
SherlockGougou/dsh-plugins-fix

诊断插件故障并一键禁用元凶,让 DSH 重新启动

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部