dsh-plugin-guard

DSH PLUGIN浏览器与联网

仓库 Linicc/dsh-plugin-guard · npm dsh-plugin-guard

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 提供插件挂载身份守卫,自动修复缺失 version 的插件清单,避免 REQUEST_EXTENSION 导致所有 DeepSeek 请求失败。

一句话选型结论

按资料字段整理

dsh-plugin-guard 是浏览器与联网类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 4 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-10-06 创建于 2026-10-06
README 8.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:Linicc/dsh-plugin-guard
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@^4.0.1、@deepseek-ai/dsh-tools@^0.1.0-rc.6需要同时安装的同级依赖
npm 包名dsh-plugin-guard可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-plugin-guard:为 DeepSeek Harness 守住插件挂载身份

  • 启动时自愈插件清单
  • 写入配置后自动复检
  • 审计/修复/预检三工具
  • 约 1ms 开销,全 profile 生效

上游标签

deepseek-harnessdshdsh-pluginguardplugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2),按版本装不容易报错。
  • 列出了 4 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 需要同时装好同级依赖,漏装会启动失败。
  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-guard当前 L5 · 运行验证通过 低风险 1 0.2.0-rc.2 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Linicc仓库 dsh-plugin-guard · 默认分支 main
分类浏览器与联网browser
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-06 · 2026-10-06最后推送 2026-10-06
本站收录2026-10-07首次进入本站目录的时间

README 全文

8.3 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-plugin-guard

DeepSeek Harness 的插件装载身份守卫。 阻止「不合规的插件挂载行」把每一轮 DeepSeek 请求
打成 REQUEST_EXTENSION。

English README


它防的是什么

@deepseek-ai/dsh-plugin-package-inventory-deepseek 在请求期给每个活跃的 Loader 行解析「包身份」。
当某行的 name 是路径时,它自模块目录向上找最近的 package.json,要求 name 与 version
同时非空,否则 throw:

function identityFromManifest(path, allowAnonymous) {
const manifest = JSON.parse(readFileSync(path, "utf8"));
if (allowAnonymous && manifest.name === void 0) return void 0;   // ← 只容忍缺 name
if (typeof manifest.name !== "string" || manifest.name.length === 0
|| typeof manifest.version !== "string" || manifest.version.length === 0)
throw new Error(`... ${path} must declare non-empty name and version`);
return { name: manifest.name, version: manifest.version };
}

dsh-llm-deepseek 再把它包一层:

catch (error) {
throw new LlmError("DeepSeek request extension preparation failed", "REQUEST_EXTENSION", { cause: error });
}

结果:官方 DeepSeek 请求每一轮全部失败,而 UI 只显示被覆盖过的笼统文案,
看起来像模型或账号的问题。

为什么很容易踩中

被命中的 manifest 通常就是 DSH 自己生成的 profile manifest——它有 name,没有 version:

// $DSH_HOME/profiles//package.json   ← DSH 生成
{ "name": "dsh-profile-desktop" }

于是任何自身目录没有 package.json 的本地插件都会触发:

# $DSH_HOME/profiles//cordis.patch.yml
- insert:
- id: myplugin
name: "C:/Users//.dsh/profiles//plugins/myplugin/index.ts"

nearestManifest() 从 plugins/myplugin/ → plugins/ → profiles// 一路向上,
正好落在那个没有 version 的 manifest 上。

它与调用方的契约自相矛盾

调用方本来就允许解析失败:

const identity = resolver.resolve(activeEntry);
if (identity === void 0) continue;        // 契约:undefined = 跳过该条目

resolve() 的返回类型也写着 ... | undefined。在这里 throw 属于错误分级失当:
尽力而为的诊断性元数据,不该持有请求级否决权。


三道防线

以 DSH 组合包形式发布(dsh.bundle.patch),可直接安装而非手动复制。

写法上逐字复刻上游判定规则,保证守卫永远不会与上游不一致。

# 机制 时机 效果
① 启动自愈 apply(),早于任何模型请求 扫描所有 profile 的 patch 层,给不合规的插件目录补最小合规 package.json
② 写入即检 profile 下任何 .yml/.yaml 落盘后 立刻复检并自愈,把结果附回工具返回值
③ 三个工具 随时 dsh_guard_audit / dsh_guard_repair / dsh_guard_verify

启动自愈属于整个 profile:加载一次,该 profile 下所有会话都受保护。实测耗时 ~1 ms。


安装

本仓库是一个 DSH 组合包(bundle):npm 包在 package.json 里声明 dsh.bundle.patch,
profile 把它列进 dsh.profile.bundles 后,插件行会被自动插入。

作为组合包安装(推荐)

# 从本地克隆
dsh plugin --profile  add /path/to/dsh-plugin-guard

# 或直接从 git 安装
dsh plugin --profile  add github:Linicc/dsh-plugin-guard

dsh plugin 会在 profile 目录内转发给 pnpm,然后因为该包声明了 dsh.bundle,
把它追加进 dsh.profile.bundles。真正插入插件行的是包内的 cordis.patch.yml:

- insert:
- id: plugin-guard
name: dsh-plugin-guard

注意这里按包名引用,不是路径——这正是让 Node 能定位到已安装代码的原因。
它也意味着这一行走的是「裸包名」解析分支,不依赖最近 manifest 上溯,天然规避了本插件要防的那个坑。

作为本地模块挂载(不打包)

如果不想装包,克隆到任意位置,用绝对路径挂载:

# $DSH_HOME/profiles//cordis.patch.yml
- insert:
- id: plugin-guard
name: "<绝对路径>/dsh-plugin-guard/src/index.ts"

> ⚠️ 插件目录必须自带合规的 package.json。挂载一个没有 manifest 的目录,
> 正是本插件要防的那个条件——见它防的是什么。
> 本仓库已经带了,但如果你把源码复制到别处,记得把 manifest 一起复制。

配置

- id: plugin-guard
name: dsh-plugin-guard
config:
autoRepair: true       # 启动时自动补 manifest(默认 true)
verbose: false         # 打印审计细节
# profileRoot: "..."   # 默认 $DSH_HOME/profiles

仓库结构

dsh-plugin-guard/
├─ package.json        声明 dsh.bundle.patch;main → lib/index.js
├─ cordis.patch.yml    profile 列出本包时应用的配置层
├─ lib/index.js        编译产物(已提交,使用者无需构建)
├─ src/index.ts        源码
├─ scripts/build.mjs   用 Node 内置类型剥离从 src 重建 lib
├─ README.md / README.zh.md
└─ LICENSE

改完源码后重建:

npm run build      # node scripts/build.mjs —— 无需任何依赖

三个工具

工具 用途
dsh_guard_audit 审计所有 profile 的装载行,列出会抛错的行(含 profile / 行 id / 模块目录 / 具体问题)
dsh_guard_repair 为不合规目录补 package.json;幂等,永不覆盖;支持 dryRun
dsh_guard_verify 安装前预检:给定插件入口,判断它能否通过官方身份解析

实现要点与安全边界

判定规则逐条对照上游(isPathLike / nearestManifest / identityFromManifest),
且刻意比上游更保守:上游只看活跃行,本插件看所有行——代价是偶尔报出「今天没启用、
一启用就会炸」的行,这是期望行为。

安全边界:

  • 只在该插件自己的目录里完全没有 package.json 时才写;从不修改别的包的 manifest。
  • 若问题 manifest 属于上层(如 profile 根),标记 repairable: false 交人工处理——
    守卫不会去改你的 profile manifest。
  • 所有写入与审计都包在 try/catch 里:守卫绝不能自己成为它要防的那个故障。
  • 每次写入都会在控制台打印,不做静默操作。

已知局限

  • 上游缺陷仍在:本插件是用户侧预防,不修
    @deepseek-ai/dsh-plugin-package-inventory-deepseek 里的 identityFromManifest()。
    同一条失败路径的其他触发方式(例如残留软链,见上游 discussion #5439)仍会打死请求。
    已上报:discussion #4950。
  • YAML 解析是容错子集:只抽取 - id: / name: 对;锚点、合并键等特殊写法可能看不到。
    守卫选择「失败即放行」(什么都不报),而不是让启动失败。
  • JSON 解析失败的 manifest 只报告、不修复。
  • 没有文件监听:只有 host 启动与工具写入会触发审计;用外部编辑器改的 patch 会在下次启动时生效。

验证

沙箱构造:
profiles/desktop/package.json  → { "name": "dsh-profile-desktop" }   ← 有 name 无 version
cordis.patch.yml               → insert 行指向没有 package.json 的目录
plugins/myplugin/index.ts      → 只有入口文件

autoRepair: false
dsh_guard_audit  → ok=false, 问题=1            ✅ 能检测
dsh_guard_verify → ok=false + 修复建议          ✅ 能预检
dsh_guard_repair → 创建 package.json           ✅ 能修复
再次 audit       → ok=true,  问题=0            ✅ 能复验

autoRepair: true(默认)
apply() 约 1 ms 内补齐 manifest                ✅ 引爆前拆弹

真实 profile
audit → profile 2 个 · 装载行 8 行 · 问题 0

许可

MIT,见 LICENSE。

常见问题

9 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-guard 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:Linicc/dsh-plugin-guard` 即可。对应的 npm 包名是 `dsh-plugin-guard`。

dsh-plugin-guard 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin-guard 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-plugin-guard 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-guard 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2。

dsh-plugin-guard 需要什么运行环境?

需要同时安装 @deepseek-ai/cordis@^4.0.1、@deepseek-ai/dsh-tools@^0.1.0-rc.6。环境不满足时安装会失败,建议先确认本机版本。

dsh-plugin-guard 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-plugin-guard 有哪些功能?

启动时自愈插件清单、写入配置后自动复检、审计/修复/预检三工具、约 1ms 开销,全 profile 生效。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

7 条
不同作者的仓库分开列,请确认你要装的是哪一个
浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。