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

插件体检医生 Nico0713520/dsh-plugin-guardian

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

装前体检插件,扫冲突并让临时插件转正落盘

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

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

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

状态速览

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

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

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

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 36 处,展示前 35 条)
  • 删除本地文件递归
    src/doctor.test.ts:17
    await rm(dir, { recursive: true, force: true })
  • 写入本地文件
    src/doctor.test.ts:22
    await writeFile(path.join(dir, 'package.json'), JSON.stringify(pkg, null, 2))
  • 写入本地文件
    src/doctor.test.ts:25
    await mkdir(path.dirname(full), { recursive: true })
  • 写入本地文件
    src/doctor.test.ts:26
    await writeFile(full, content)
  • 读取本地文件
    src/doctor.ts:66
    entries = await readdir(current, { withFileTypes: true })
  • 读取本地文件
    src/doctor.ts:89
    const buf = await readFile(file)
  • 读取本地文件
    src/doctor.ts:150
    const raw = await readFile(path.join(dir, 'package.json'), 'utf8')
  • 读取本地文件
    src/doctor.ts:283
    await access(path.join(dir, dshPatch))
  • 删除本地文件递归
    src/install.test.ts:17
    await rm(dir, { recursive: true, force: true })
  • 写入本地文件
    src/install.test.ts:42
    await writeFile(
  • 写入本地文件
    src/install.test.ts:46
    await writeFile(path.join(dir, 'cordis.patch.yml'), '- insert:\n - id: demo-plugin\n')
  • 写入本地文件
    src/install.test.ts:72
    await writeFile(path.join(dir, 'package.json'), JSON.stringify({ name: 'x', version: '1.0.0' }))
  • 执行外部命令来自配置/变量
    src/install.ts:58
    execFile(
  • 删除本地文件递归
    src/profile.test.ts:24
    await rm(dir, { recursive: true, force: true })
  • 写入本地文件
    src/profile.test.ts:96
    await writeFile(
  • 写入本地文件
    src/profile.test.ts:100
    await mkdir(path.join(dir, 'node_modules', 'plugin-a', 'src'), { recursive: true })
  • 写入本地文件
    src/profile.test.ts:101
    await writeFile(
  • 写入本地文件
    src/profile.test.ts:105
    await writeFile(
  • 写入本地文件
    src/profile.test.ts:109
    await mkdir(path.join(dir, 'node_modules', 'plugin-b', 'src'), { recursive: true })
  • 写入本地文件
    src/profile.test.ts:110
    await writeFile(
  • 读取本地文件
    src/profile.ts:39
    const raw = await readFile(path.join(dir, 'package.json'), 'utf8')
  • 读取本地文件
    src/profile.ts:53
    texts.push(await readFile(file, 'utf8'))
  • 读取本地文件
    src/profile.ts:72
    const raw = await readFile(path.join(profileDir, 'package.json'), 'utf8')
  • 删除本地文件递归
    src/promote.test.ts:17
    await rm(dir, { recursive: true, force: true })
  • 写入本地文件
    src/promote.test.ts:22
    await writeFile(path.join(dir, 'package.json'), JSON.stringify(pkg, null, 2))
  • 写入本地文件
    src/promote.test.ts:25
    await mkdir(path.dirname(full), { recursive: true })
  • 写入本地文件
    src/promote.test.ts:26
    await writeFile(full, content)
  • 读取本地文件
    src/promote.test.ts:71
    const marker = JSON.parse(await readFile(path.join(result.stagedPath!, '.guardian-managed.json'), 'utf8'))
  • 读取本地文件
    src/promote.ts:49
    await stat(file)
  • 读取本地文件
    src/promote.ts:62
    entries = await readdir(dir, { withFileTypes: true })
  • 读取本地文件
    src/promote.ts:73
    hash.update(await readFile(path.join(dir, entry.name)))
  • 执行外部命令固定命令
    src/promote.ts:83
    execFile(
  • 写入本地文件
    src/promote.ts:140
    await mkdir(outputRoot, { recursive: true })
  • 写入本地文件
    src/promote.ts:161
    await rename(staging, finalDir)
  • 删除本地文件递归
    src/promote.ts:193
    await rm(staging, { recursive: true, force: true })
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 安装前诊断插件
  • 扫描插件间冲突
  • 临时插件转正落盘

只读插件体检工具,给 DeepSeek Harness 用——安装前先诊断,扫描插件间冲突,把临时插件沉淀为长期资产。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-guardian DeepSeek Harness 插件的一生:先体检,再转正。 CI License: MIT dsh-plugin English · 5905 个插件还在涨。有些会互相打架——装个皮肤,另一个插件就悄悄坏了;两个插件注册同名工具,整个 Harness 启动就崩;你的 Agent 在创造模式里写了个插件,一重启就没了。 这个插件,让这些问题在你被咬之前先现形、先解决。 为什么需要它 DeepSeek Harness 信奉「一切皆插件」,一周内生态就膨胀到几千个插件——但没有人看场子: | 痛点 | 实际后果 | guardian 怎么救 | | 「装了个皮肤,X 就坏了」 | 插件悄悄互相冲突 | plugin_profile_scan 扫出工具名冲突 | | 两个插件注册同名工具 | 启动直接崩溃(见 Pi #7696) | 装前就拦下冲突 | | 「这个野 npm 插件安全吗?
展开完整文档(README 剩余 1 节)
dsh-plugin-guardian

DeepSeek Harness 插件的一生:先体检,再转正。

CI
License: MIT
dsh-plugin

English ·

5905 个插件还在涨。有些会互相打架——装个皮肤,另一个插件就悄悄坏了;两个插件注册同名工具,整个 Harness 启动就崩;你的 Agent 在创造模式里写了个插件,一重启就没了。

这个插件,让这些问题在你被咬之前先现形、先解决。

为什么需要它

DeepSeek Harness 信奉「一切皆插件」,一周内生态就膨胀到几千个插件——但没有人看场子:

| 痛点 | 实际后果 | guardian 怎么救 |
| 「装了个皮肤,X 就坏了」 | 插件悄悄互相冲突 | plugin_profile_scan 扫出工具名冲突 |
| 两个插件注册同名工具 | 启动直接崩溃(见 Pi #7696) | 装前就拦下冲突 |
| 「这个野 npm 插件安全吗?」 | 没有任何信任体系 | plugin_doctor 三档置信度体检 |
| 「Agent 刚写的插件没了」 | 创造模式插件只存内存 | plugin_promote 一键转正落盘 |

四个工具,一条生命周期

陌生/临时插件 → plugin_doctor 体检 → 通过门禁 → plugin_promote 转正 → 可信磁盘插件 │ plugin_profile_scan 扫已装集冲突 │ plugin_install 引导安装(先审计→再执行)

| 工具 | 作用 | 类比 |
| plugin_doctor | 单插件体检 | 门诊 |
| plugin_profile_scan | 已装集冲突扫描(含官方核心工具被顶替检测) | 体检中心 |
| plugin_promote | 临时插件转正 | 落户 |
| plugin_install | 引导安装:先审计、再执行 | 一键安装 |

它凭什么可信:三档置信度

每条结论都带置信度标签——借鉴 Pi 的 pi-extension-doctor:

| 档位 | 含义 |
| confirmed | 从读到的文件可证实(如字段缺失) |
| inferred | 看到了静态模式,但不等于运行时真有 bug |
| unknown | 边界(远程 spec、文件读不了)挡住了结论 |

不装懂。静态扫描的结果就叫 inferred,绝不吹成「肯定是 bug」。

30 秒上手

dsh plugin --profile web add github:Nico0713520/dsh-plugin-guardian
重启 dsh web,然后在会话里直接问:

plugin_doctor target="/path/to/my-plugin"
plugin_profile_scan
plugin_promote source="/path/to/my-plugin"
plugin_install spec="npm:some-plugin" # 默认只审计,不安装 plugin_install spec="npm:some-plugin" approve=true

演示

plugin_doctor 体检一个真实 DSH 插件:

DSH plugin doctor
target : /path/to/dsh-gh-cli
verdict: WARN (0 blocker · 1 warn · 3 info)

[info] confirmed — cordis patch file present [warn] confirmed — Pre-release peer dependencies (9) → 建议锁版本 [info] inferred — Spawns subprocesses [info] inferred — Detected 2 possible tool name(s): gh_cli_run, gh_auth_status

plugin_promote:

DSH plugin promote
status : PROMOTED
name : dsh-gh-cli@0.1.0
sha256 : 6cf15989…
install: dsh plugin --profile web add link:…/.guardian-plugins/dsh-gh-cli-6cf15989

安全边界

- plugin_doctor、plugin_profile_scan 只读:不装包、不执行源码、不跑子进程、不联网、不写文件。
- plugin_promote 只写到一个受管理的 staging 目录($DSH_HOME/.guardian-plugins),并写下溯源标记(sha256 / promotedAt / source)。除非你显式传 register=true,否则绝不碰你的 live profile。

工具

| 工具 | 参数 | 说明 |
| plugin_doctor | target(路径或 npm:/github: spec)、format(text/json) | 三档置信度报告 |
| plugin_profile_scan | profileDir(默认 $DSH_HOME/profiles/web) | 查工具名冲突、重复项、版本偏斜 |
| plugin_promote | source、register(默认 false)、profile、outputDir | doctor 门禁、原子落盘、溯源标记 |

FAQ

跟 dsh-plugin-check 有啥区别? —— 有重叠但不同。plugin-check 对单个插件做 33 项只读检查;guardian 多了三样它没有的:置信度分级、跨插件冲突扫描、转正(promote)——最后这个在整个生态里是空白。

plugin_promote 会偷偷改我的 profile 吗? —— 不会。默认 register=false,只 staging 并打印出准确的 dsh plugin add 命令,注册要你显式开启。

那个 Pi 引用是啥? —— Pi 的 pi-extension-doctor 首创了 confirmed/inferred/unknown 置信度模型和严格只读边界。guardian 把同一套纪律用到了更大、更乱的 DSH 生态上。

开发

git clone https://github.com/Nico0713520/dsh-plugin-guardian.git
cd dsh-plugin-guardian
npm install --legacy-peer-deps
npm run typecheck
npm run test
npm run build

要求

- Node.js ≥ 20
- DeepSeek Harness(@deepseek-ai/dsh,已在 0.1.0-rc.x 验证)

相关链接

- 贡献指南
- 更新日志
- DeepSeek Harness — 官方仓库
- dsh-plugin topic — 发现更多插件
- pi-extension-doctor — 我们借鉴的置信度模型

License

MIT — 见 LICENSE。
预览分享卡片长什么样 ↓Nico0713520/dsh-plugin-guardian
分享 · DeepSeek Harness Hub
Nico0713520/dsh-plugin-guardian

装前体检插件,扫冲突并让临时插件转正落盘

回到顶部