前言¶
在 DeepSeek Harness(DSH)里写技能、改配置、接 MCP,往往会在本地仓库里留下 API Key、令牌、私钥或 .env 一类文件。单靠人工翻 diff 容易漏,等推到远端或开源后再发现,轮换与清理成本会高很多。社区里已有不少独立 secret 扫描工具,但和 Harness 工作流脱节时,Agent 很难在「提交前 / 发布前」按同一套规则给出可操作的处置顺序。
dsh-secret-scan(npm 包名 @deepwhale-cn/dsh-secret-scan,GitHub:feely0208/dsh-secret-scan)是面向 DSH 的 skill 插件,维护者为 feely0208,在插件目录中归类为 admin-security。它用规则引擎在项目路径内找证据,并把「发现之后先轮换、再清理、再考虑改历史」写进技能正文,避免只删代码却不作废已泄露凭据。
这是什么¶
一句话:给 DeepSeek Harness 用的密钥与敏感信息扫描技能——提交前、发布前、开源前,把不该出现在代码与版本库里的东西找出来。
README 写明,这是深鲸网安守护系列里相对通用的一项(不限定中国大陆场景),因为「密钥进了仓库」是各技术团队都会遇到的问题。当前 package.json 版本为 0.2.0,许可证 MIT;运行环境要求 Node.js >= 18,DSH 引擎 >=0.1.0-rc.6 <0.3.0。
能扫出什么¶
技能负责「怎么处理」,规则引擎负责「有没有」。CLI 一条命令出报告,并支持查看演示样本与规则列表:
dsh-secret-scan --root <项目路径> # 扫一遍
dsh-secret-scan --demo # 看内置演示样本
dsh-secret-scan --list-rules # 列出规则与依据
README 列出的七条规则如下:
| 规则 | 查什么 | 级别 |
|---|---|---|
SECRET-PRIVATE-KEY |
PEM 私钥块(标签 + 后面真跟着密钥正文) | 严重 |
SECRET-AWS-AKID |
AKIA + 16 位 |
高 |
SECRET-GITHUB-TOKEN |
gh[pousr]_ / github_pat_ |
高 |
SECRET-SLACK-TOKEN |
xox[baprs]- / xapp- |
高 |
SECRET-STRIPE-LIVE |
sk_live_ / rk_live_ |
高 |
SECRET-CREDENTIAL-LITERAL |
变量名含 secret/token/password + 高熵字面量 | 中 |
SECRET-STRIPE-PUBLISHABLE |
pk_live_(Stripe 官方称可公开,故单列低级别) |
低 |
除上表外,技能说明还把扫描范围概括为:高置信令牌(云厂商 Access Key、GitHub/npm/Slack 令牌、Google API Key 等)、私钥与证书、已被 git ls-files 跟踪的凭据文件(如 .env、credentials.json、.npmrc)、配置里的敏感赋值(误报相对多)、以及内网 IP 与内部域名等内部信息。有高置信命中时退出码为 1,便于挂到 pre-commit 或 CI。
输出与误报¶
报告默认不落密钥原值:正则只消费前缀或变量名,证据形如 AKIA、ghp_、secretAccessKey,不含完整密钥。只写 PEM 标签不写正文、以及 process.env.SECRET 这类引用,按文档设计不报。文档示例值(如 your-api-key-here)和含 example / dummy 的假值会过滤。
扫描默认对命中内容打码(只留前后 4 位);要看全量须显式 --reveal,且不宜把输出写入文件或贴进聊天。
已知边界:.pem / .key / .p12 文件本体可能因扩展名名单未被当文本读取而漏扫;私钥写在 id_rsa 或嵌在代码/文档里则能命中,报告会列出「跳过文件」。
安装与启用¶
按 README 安装到指定 profile:
dsh plugin --profile <profile> add @deepwhale-cn/dsh-secret-scan
安装后,脚本路径由插件注册注入技能正文,或在安装目录下的 skill/scan.sh 使用:
scan.sh --dir /path/to/repo # 默认打码
scan.sh --dir /path/to/repo --reveal # 打印完整密钥,仅排障时用
处置顺序(技能侧设计)¶
README 强调:删代码不会让已泄露的密钥失效——历史、远端、CI 日志与缓存、shell 与编辑器备份里可能仍有副本。技能正文建议顺序为:
- 轮换密钥
- 清理代码
- 再决定要不要改写历史
判断可参考:该密钥是否曾离开本机。
适用场景与注意¶
适合在本地提交前、发版前、仓库即将公开前跑一遍;与同系列的 dsh-cn-compliance I 类不同——本插件看版本控制里是否提交了不该有的东西,合规类更偏公网暴露面。
DSH 插件以当前 dsh 进程权限访问你指定的项目路径;安装前请自行查看 GitHub 源码与 MIT 许可,确认规则与打码策略符合团队要求。社区目录页:https://www.skillhub.cn/plugins/feely0208/dsh-secret-scan ;源码与说明:https://github.com/feely0208/dsh-secret-scan 。