前言¶
DSH 环境里常见的一种场景是:一个插件要加入某个 profile,或者要作为 Agent Tool 提供给智能体使用。此时开发者需要先判断插件是否包含命令执行、凭据访问、数据外传、混淆、不安全安装脚本等行为。
下面介绍 Eligahyu/dsh-sentinel-scanner。它是一个面向 DeepSeek Harness(DSH)插件的只读安全、供应链和健康扫描工具,适用于插件源码树、已发布的 npm 包、DSH profiles 和 CI pipelines。
这是什么¶
Eligahyu/dsh-sentinel-scanner 是一个 read-only security, supply-chain, and health scanner for DeepSeek Harness plugins,由 Eligahyu 维护,MIT license。
它的核心定位是:在运行插件代码之前,对插件做静态检查,并输出结构化报告。扫描结果包含 0-100 risk score,以及 safe / review / risky / dangerous verdict。
同一套能力可以提供为以下形式:
- DSH Agent Tool plugin:
sentinel_scan、sentinel_scan_profile、sentinel_audit_package - 独立 CLI:npm package
deepseek-harness-sentinel,可执行命令为dsh-sentinel - GitHub Action,支持 SARIF upload
- JavaScript API,用于程序化集成
它不是运行时 sandbox,也不是插件执行器。已核实说明中写明:scanned code is never executed。
核心能力¶
下面列出本文要覆盖的能力。
静态检测规则¶
它使用 51 heuristic rules with AST-based taint analysis。
可检测的问题类型包括:
- command execution
- dynamic code evaluation
- credential access
- data exfiltration
- obfuscation
- unsafe lifecycle scripts
- persistence
- native binaries
- manifest escape paths
- package drift
扫描模式¶
提供三种 scan modes:
sourcepackageprofile
其中 profile 用于 DSH profile 场景,package 用于包级场景,source 用于源码树场景。
Pre-install quarantine¶
对于 npm tarball,它可以做 pre-install quarantine,不执行 lifecycle scripts。
已核实流程是:下载 tarball、验证 integrity、解包到 quarantine、扫描、清理。它不会运行 npm install。
报告与 CI¶
它支持:
- SBOM export
- SARIF output
- CI policy enforcement
在 CI 中,它可以基于风险等级和扫描完整性影响退出码。
隐私与外部查询¶
已核实说明中包含:
- Secrets are always redacted in reports
- Optional OSV lookup is disabled by default
- 启用 OSV lookup 时,只发送 package name and version
TypeScript 边界¶
已核实说明中指出:TypeScript parser limits are reported as a capability boundary instead of falsely failing every TypeScript scan。
也就是说,遇到 TS 解析边界时,报告会体现能力边界,而不是把所有 TS 扫描都直接判成失败。
安装与启用¶
作为 DSH 插件安装¶
如果希望把它作为 DSH Agent Tool plugin 使用,已提供命令为:
dsh plugin --profile web add github:Eligahyu/dsh-sentinel-scanner
安装后,可以通过 DSH Agent Tool 调用:
sentinel_scan
sentinel_scan_profile
sentinel_audit_package
作为独立 CLI 使用¶
独立 CLI 的 npm package 是 deepseek-harness-sentinel,可执行命令是 dsh-sentinel。
要求:
Node.js ^22.18.0 or >=24.11.0
可以临时运行:
npx deepseek-harness-sentinel ./path/to/plugin
也可以安装为项目依赖:
npm install --save-dev deepseek-harness-sentinel
npx dsh-sentinel ./path/to/plugin
peer dependencies 是 optional:
@deepseek-ai/cordis
@deepseek-ai/dsh-tools
典型用法¶
下面示例均来自已核实用法。
生成 JSON 报告¶
npx deepseek-harness-sentinel ./plugin --json --out sentinel.json
这一步是对 ./plugin 做扫描,并把结果写到 sentinel.json。
扫描包产物并输出 SARIF¶
npx deepseek-harness-sentinel ./plugin --mode package --format sarif --out sentinel.sarif
这一步使用 package mode,并输出 SARIF 文件。
在 CI 中设置失败策略¶
npx deepseek-harness-sentinel ./plugin --fail-on high --fail-on-incomplete --strict-exit-codes
这一步表示:当出现 high 级别结果,或扫描不完整时,CI 可以根据退出码失败。
安装前审计 npm 包¶
npx deepseek-harness-sentinel audit-install some-plugin@1.2.3
这一步用于安装前审计。已核实说明中写明:它不运行 npm install,而是下载 tarball、验证 integrity、解包到 quarantine、扫描并清理。
对比源码树与已发布包¶
npx deepseek-harness-sentinel diff ./plugin some-plugin@1.2.3
这一步用于比较本地源码树和指定 npm package。
查看规则目录¶
npx deepseek-harness-sentinel --rules
这一步打印完整 rule catalog。
适用场景与注意¶
这个工具适合两类人:
- 插件使用者:在 install 或 activation 前检查第三方插件
- 插件作者和维护者:在 publish 前检查危险行为、打包漂移、不完整扫描和 manifest 问题
需要明确的是,它是 heuristic static analysis,不是安全证明。一条 finding 的含义是:review the evidence,而不是直接判定插件 malicious。
同时,DSH 插件运行时会处于当前 dsh 进程可获得的权限范围内,因此安装前仍要检查源码、许可证和扫描结果。
实际使用时还要注意:
- 静态分析不会执行被扫描代码
- TypeScript 解析边界会作为 capability boundary 报告
- secrets 会在报告中 redact
- optional OSV lookup 默认关闭
- 启用 OSV lookup 时只发送 package name and version
- peer dependencies
@deepseek-ai/cordis和@deepseek-ai/dsh-tools是 optional
结尾¶
Eligahyu/dsh-sentinel-scanner 的价值,是把 DSH 插件安装前的检查做成可重复、可接入 CI、可输出报告的动作。对于要启用第三方插件、要发布插件、或者要在 DSH profile 中加入 Agent Tool 的开发者,它提供了一个不执行被扫描代码的静态检查入口。
仓库地址:
https://github.com/Eligahyu/dsh-sentinel-scanner
如果从 DSH 插件目录查找,条目名为:
Eligahyu/dsh-sentinel-scanner