前言¶
在 DSH(DeepSeek Harness)里,能力往往通过插件扩展:装一个新包,就等于把一段代码放进当前 Harness 的运行环境。社区目录(例如 SkillHub)与 GitHub 上插件很多,但 README 写得再漂亮,也不能代替对源码和安装脚本的检查。常见做法是依赖第三方「审查类」插件,或人工翻目录;前者要信任另一条供应链,后者费时且容易漏看 postinstall 一类生命周期脚本。
下面介绍维护者 snow-The 发布的 dsh-plugin-doctor(包名 @snow-the/dsh-plugin-doctor,分类 admin-security):对插件目录做只读静态扫描,按风险给出 SAFE / LOW / MEDIUM / HIGH 分级,并附带 file:line 证据。README 明确说明不会执行被扫描的代码,适合在「安装前」或「怀疑已装包」时快速摸底。
这是什么¶
dsh-plugin-doctor 是 DSH 生态中的一款安全类插件,定位是「安装前静态审查(static pre-install vetting)」。作者将其描述为自研实现,用于替代第三方 vetting 插件。
扫描对象可以是:
- 某次 checkout 的插件源码目录;
- 已安装包路径,例如
~/.dsh/profiles/*/node_modules下的插件包。
输出是带评分的报告,便于人工决定是否安装、是否升级或是否卸载。
核心功能¶
分析方式¶
静态分析、只读文件内容,不运行被审查插件的 JavaScript/TypeScript。这一点对审查不可信来源尤为重要:审查过程本身不应触发网络外连或 shell 副作用。
检查项(README 列出的模式)¶
-
外泄(Exfiltration)
向非 localhost 的fetch/http(s)、子进程中的curl/wget/nc、socket 等。 -
凭据访问(Credential access)
读取.ssh、.aws、.env、凭据文件,或对process.env的批量采集。 -
混淆(Obfuscation)
超长 base64/hex、eval/Function/vm、零宽字符 / 双向控制符等隐藏 Unicode。 -
持久化(Persistence)
注册表 Run 项、启动文件夹、计划任务、向 shell rc 追加等(规则面向常见持久化写法)。 -
破坏性(Destructive)
rm -rf /一类危险删除、force push 等红旗。 -
生命周期脚本(Lifecycle hooks)
preinstall/install/postinstall等——README 注明这类脚本始终以安装器权限执行,值得人工重点看;插件会把它们标为需关注项。
提供的工具¶
插件向 DSH 注册两个工具(名称来自 README):
| 工具 | 作用 |
|---|---|
doctor_scan |
扫描指定路径(目录或单文件);未指定路径时,默认针对当前 profile 下 node_modules 中的插件包 |
doctor_scan_path |
与上一工具等价,但通过参数显式传入路径 |
具体调用方式取决于你当前 DSH 版本里 Agent 如何暴露插件工具;在对话中让 Harness 使用上述工具名即可,路径参数用于指向待审查目录或文件。
安装与启用¶
- 目录页:SkillHub — snow-The/dsh-plugin-doctor(页面标注可安装,当前展示版本 v0.2.0)。
- 源码与说明:GitHub — snow-The/dsh-plugin-doctor。
README 与 package.json 未给出独立的 dsh plugin add … 一类 shell 安装命令。安装与启用请以 SkillHub 页面指引及你本机 DSH 的插件管理流程为准。
兼容性(来自 package.json 的 dsh 字段):
compatibility.dshReleases:0.2.0-rc.1、0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2compatibility.verifiedAgainst:0.2.1-rc.2peerDependencies:@deepseek-ai/dsh>=0.2.0-rc.1engines.dsh:>=0.2.1-rc.2 <0.3.0-0
许可证:MIT。
典型用法¶
下面按 README 描述的使用路径组织步骤,便于在 Agent 会话中复现。
-
审查即将安装的源码目录
将插件仓库或 tarball 解压目录作为扫描路径,调用doctor_scan_path(或带路径参数的doctor_scan)。阅读报告中的等级与file:line,重点核对 HIGH/MEDIUM 及生命周期脚本相关证据。 -
审查本机已安装的插件
不传路径时,doctor_scan默认扫描当前 profile 下node_modules里的 DSH 插件包。适合升级 DSH 或批量装插件之后做一致性检查。 -
单文件快扫
若怀疑某个入口或package.json里的脚本,可将路径指向单个文件,同样走上述工具。
报告中的 SAFE / LOW / MEDIUM / HIGH 是静态规则打分,不能替代人工判断:例如 LOW 的外连可能是文档示例,HIGH 的匹配也可能是测试夹具中的字符串。插件的价值在于集中列出疑点与位置,缩短人工 diff 的时间。
适用场景与注意¶
适合谁
- 经常从社区目录或 GitHub 试装 DSH 插件的开发者;
- 希望用统一规则替代或补充第三方 vetting 插件的团队;
- 需要在 CI 或本地工作流里对插件目录做一次性静态扫瞄的场景(仍须自行接入 DSH 工具调用方式)。
务必注意
-
权限边界:与其它 DSH 插件一样,doctor 在当前 dsh 进程权限下运行;它能读你能读的路径,不能代替操作系统级的沙箱。安装任何插件前,仍应自行查看源码、许可证与发布者身份。
-
静态分析的局限:不执行代码意味着无法发现纯运行时行为(例如仅在特定环境变量下触发的分支)。相反,误报也可能出现,需结合上下文阅读证据行。
-
生命周期脚本:即使静态扫描未标红,
preinstall/install/postinstall仍可能在npm install阶段执行;README 已提醒应人工过目package.json中的scripts字段。 -
生态关系:DSH 强调「一切皆插件」;SkillHub 等目录由社区维护,与 DeepSeek / 幻方无官方从属关系。审查插件降低风险,不构成对第三方插件的背书。
结尾¶
dsh-plugin-doctor 用只读静态规则覆盖外泄、凭据、混淆、持久化、破坏性行为与安装脚本等常见红旗,并以分级报告和 file:line 证据支持安装前决策。若你已在用 DSH 管理插件,可在装包前或装包后对目录调用 doctor_scan / doctor_scan_path 做一次对照阅读。
- 目录页:https://www.skillhub.cn/plugins/snow-The/dsh-plugin-doctor
- GitHub:https://github.com/snow-The/dsh-plugin-doctor