前言¶
DSH 的理念是「一切皆插件」;社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。做 DSH / 智能体开发时,常见的一步是确认某个 skill 在运行时是否按可信来源生效。dsh-capability-receipt 处理这一步:对 DeepSeek Harness 实际加载的 skill 生成内容寻址回执,让运行时观察结果可以被离线复核。
这是什么¶
dsh-capability-receipt 是 MIT 许可的 DSH 插件,当前版本 0.3.0,要求 Node.js 22 或更高版本。仓库为 dongsheng123132/dsh-capability-receipt。
它通过哈希 ctx.skills.get() 返回的 effective instruction body,记录 winning provider/source/invocation policy;当资源基是本地目录时,对 bounded local resource-directory closure 做哈希。随后,它把这次运行时观察与 trusted pinned hashes 比较,并写出 deterministic content-addressed receipt。
它只观察目标能力,不执行目标能力。
核心功能¶
DSH tools¶
插件暴露三个 DSH tools:
dsh_capability_receipt_inspectdsh_capability_receipt_issuedsh_capability_receipt_issue_from_pack
dsh_capability_receipt_issue 使用必填的 expectedContentSha256,并配合显式的 workspace-relative artifactDir 写入回执。
dsh_capability_receipt_issue_from_pack 使用 skillName、packLockPath 和 artifactDir,读取 workspace-relative 的 pack-agent agent-pack/lock/v1 lock,重新计算 directory 与 portable-bundle skill hashes。
MCP proof surface¶
插件还暴露两个 MCP stdio tools:
capability_receipt_inspect_lockcapability_receipt_verify_recorded
MCP 面是 proof-only 和 in-memory:它不能 inspect the live DSH registry,不能 read files,不能 access the network,不能 execute a capability,也不能 write a receipt。
pack-agent bridge¶
pack-agent lock 在这里是 evidence input,不是 signature 或 trust anchor。插件通过重新计算 pack-agent 的 directory 与 portable-bundle skill hashes,把 lock 与 DSH 运行时观察进行比对。
安装与启用¶
建议在隔离 DSH profile 中安装,并固定已审阅 commit。命令如下:
dsh plugin --profile capability-proof add \
github:dongsheng123132/dsh-capability-receipt#<commit>
安装前应检查源码与许可证。插件以当前 dsh 进程权限运行。包声明 DSH bundle,并携带 cordis.patch.yml;不使用 install lifecycle scripts。
典型用法¶
先固定可信来源 artifact,再做 DSH 内回执生成,最后离线验证。
生成回执¶
先准备可信来源 artifact 和 expected SHA-256。在 DSH 内可调用:
dsh_capability_receipt_issue:必填expectedContentSha256,显式指定 workspace-relativeartifactDir。dsh_capability_receipt_issue_from_pack:必填skillName、packLockPath、artifactDir。
经过上面的步骤,会得到内容寻址回执 artifact。
离线验证¶
CLI 不发现或加载 skill,只验证已生成 artifact:
dsh-capability-receipt verify \
--receipt artifacts/capability-receipt-<sha256>.json \
--require-verified
stdout 输出一个 JSON result。验证失败写到 stderr,并退出码 4;使用错误退出码 1。
本地检查¶
npm test
npm run check
npm run smoke:plugin
npm run smoke:mcp
适用场景与注意¶
适合:
- 需要证明 DSH 中实际加载的 skill 与可信来源一致。
- 需要把 pack-agent lock 作为 evidence input,而不是 signature 或 trust anchor。
- 需要离线复核已经生成的回执。
回执会 fail closed:
- DSH catalog 不完整或观察期间发生变化。
- 加载定义与其 catalog entry 不一致。
- expectation mismatch。
- resources 无法被安全关闭。
资源安全默认值:
- 最多 256 个 regular files。
- 单文件最大 1 MiB。
- 总大小最大 8 MiB。
- 拒绝 symbolic links 和 special files。
- URL 与 opaque resource bases 被披露为 unavailable,而不是被获取。
边界:
- 回执证明的是运行时观察与可信固定哈希一致。
- pack-agent lock 是 evidence input,不是 signature 或 trust anchor。
- 插件不执行目标能力。
结尾¶
dsh-capability-receipt 把“DSH 实际加载了什么”变成可复核的内容寻址证据。
GitHub:https://github.com/dongsheng123132/dsh-capability-receipt
插件目录线索:https://www.skillhub.cn/plugins/dongsheng123132/dsh-capability-receipt(该地址来自插件线索,未作为已核实事实引用)