dsh-skillnotary:锁定并验证 AI 代理技能的权限

前言

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜