前言¶
在 DeepSeek Harness (DSH) 环境中,一个“skill”通常是一个包含 SKILL.md 的文件夹,里面包含可运行的 shell 脚本、脚本和 MCP 配置。这些代码往往没有经过审查,工具访问权限未被锁定,且可能在无人知晓的情况下改变。
大多数现有的安全工具回答的问题是“这个 skill 现在危不危险?”。dsh-skillnotary 回答的是另一个问题:“它还是我批准的那个吗,还只被允许做当初那件事吗?”。
插件介绍¶
dsh-skillnotary 是一个 DSH 插件,用于锁定并验证 AI 代理技能的权限,防止其悄悄获得新能力。该插件由 liyixuan201211 维护,遵循 MIT 许可证。
核心功能¶
安装后,插件提供以下功能:
- 锁定技能权限:生成锁定文件,记录内容摘要、解析的提交和能力集。
- 验证技能完整性:检测 SKILL.md 及其能力是否与批准的版本发生漂移。
- 签署能力声明:使用 ed25519 对包含能力声明的 DSSE 信封进行签名。
- 策略治理:通过
policy命令设置允许/拒绝规则。 - 修复 SKILL.md:通过
fix命令自动将技能实际需要的allowed-tools写入SKILL.md。 - 应用锁定技能:通过
apply命令将锁定技能复制到 Harness 目录。 - CI 门禁:通过
ci命令将上述检查集成到 CI 流程中。
安装与启用¶
在安装或更新 agent skill 之前,建议先锁定它、审计它的能力。使用以下命令安装插件:
dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary
典型用法¶
插件包含两个内置技能:
skills/skillnotary/:用于审查循环。在添加或更新技能时运行audit(能做什么)、verify(是否是批准的版本)和policy(是否允许)。如果发现严重问题,会阻止安装。skills/skillnotary-drift-watch/:用于持续监控。设置定期verify任务,以便在停止审查后,技能发生变化时被及时发现。
常用命令示例:
# 检测能力漂移
skillnotary verify
# 锁定技能
skillnotary lock
# 自动修复 allowed-tools
skillnotary fix
# 运行 CI 门禁检查
skillnotary ci
注意事项¶
在部署前,请确认以下事实:
- 无启动时代码:
cordis.patch.yml是一个空补丁。插件不包含任何在 DSH 进程启动时运行的代码,避免了以高权限运行可能带来的安全风险。 - 非沙箱环境:检测基于文件头部的上下文范围正则表达式,而非沙箱。这意味着针对性的混淆可以规避检测,报告“无已知信号”不代表“绝对安全”。
- 扫描范围:仅扫描文件头部(1MB 文件,64MB 技能)。
- 签名方式:使用 DSSE + in-toto 进行签名,不涉及 Sigstore(无 Keyless/OIDC 或透明日志)。
- 依赖与兼容性:依赖 TypeScript,无构建步骤,需要 Node >= 23.6。与 DSH 的兼容性要求为
>=0.1.5-rc.1 <0.2.0。 - 锁定限制:锁定文件仅锁定技能本身,不限制运行时的沙箱行为。
链接¶
- GitHub 仓库: https://github.com/liyixuan201211/dsh-skillnotary
- 插件目录: https://www.skillhub.cn/plugins/liyixuan201211/dsh-skillnotary