前言¶
DeepSeek Harness(DSH)里,模型 API Key 等敏感值往往通过凭据服务解析:官方默认实现会把引用值写在 $DSH_HOME 下的 .credentials.yaml 里,权限再严也是明文落盘。本机若被拷贝配置、误提交备份或多人共用开发机,风险集中在「文件里就是真值」这一点。
社区维护者 rickwindman 提供的 dsh-destinywind-tpm 属于 DSH 插件目录中的 admin-security 分类,定位是凭据提供方(credential provider):在写入磁盘前用本机可用的最强保护者做 AES-256-GCM 信封加密,只在 resolve 时解封;没有可用保护者则拒绝挂载,不落明文。下面介绍它是什么、如何安装,以及换装时对已有密钥的影响。
这是什么¶
dsh-destinywind-tpm 是跨平台硬件/用户级凭据存储的 DSH bundle 插件,维护者为 rickwindman,当前 package 版本为 1.0.0,许可证 MIT。
它与官方 @deepseek-ai/dsh-credentials-local(明文 .credentials.yaml)在 Cordis 里互斥占位:一个上下文只能挂一个 credentials 服务。设置页和各插件仍走标准凭据接口,消费方不感知背后是实现明文还是封存库。
平台行为(资料原文):
- Windows:TPM(CNG Microsoft Platform Crypto Provider)优先,回退 DPAPI
- Linux:TPM 2.0(tpm2-tools)优先,回退会话密钥环(libsecret)
- 两者皆不可用:拒绝挂载,绝不落明文
核心功能¶
封存与密库¶
引用值与记录在落盘前经本机保护者封存,密库文件路径为:
$DSH_HOME/.credentials.dpapi.json
文件权限 0600,采用 staging + 原子 rename 落盘。
无明文回退¶
全新安装在新值保存之前,解析不到任何凭据——这是刻意设计,不是「先明文再迁移」。
本机本用户绑定¶
密库复制到其他机器或账户无法解密;把密库当备份迁走会失效。
启动校验¶
启动时会重新解封全部密文;任一解封失败会报错,不会静默降级到明文或其它提供方。
解析顺序(与官方提供方一致)¶
- 进程环境变量(启动 dsh 的 shell 或系统用户变量)
- 本插件密库(官方提供方则为
.credentials.yaml) - 项目
.env(启动目录)→ 用户.env($DSH_HOME/.env)
同名环境变量优先于密库;存在时密库的 set/unset 也会拒绝写入该引用,避免误改。若出现「设置里改了 Key 但不生效」,应先查启动环境里是否仍有旧变量。
安装与启用¶
插件声明了 dsh.bundle.patch,装完即生效,无需手工改 Cordis 配置。补丁会按 id 覆盖默认的 credentials 行(置 disabled: true)。
Cordis 声明式安装:
plugin_manager { action: "install_bundle", target: "<本仓库绝对路径>" }
命令行等价形式:
dsh plugin --profile web add link:<本仓库绝对路径>
安装后重启 dsh web 生效。
禁用本 bundle 可恢复默认提供方;已封存的值仍保持封存,回到官方明文提供方后需重新录入(官方读不到封存库)。从官方换到本插件时,.credentials.yaml 里的旧值不会被读取,需在设置页重录一遍即入封存库;旧文件可确认无用后自行删除。两个方向均无自动迁移,属刻意设计。
典型用法¶
安装并完成重启后,使用方式与 DSH 标准凭据流程一致:在设置页或通过凭据 API 写入引用(例如 DeepSeek 提供器将 Key 存为 DEEPSEEK_API_KEY 等引用名,配置里只留引用,真值在凭据服务)。解析时按上述顺序查找;值会写入 .credentials.dpapi.json 并由本机保护者封存。
仓库 tests/ 提供本机集成测试(离线端到端 + 模块解析钩子),依赖作者本机 D:\dsh 路径,不能直接在 CI 运行。若需本地验证实现,可在仓库根目录执行:
node --import ./tests/resolve-hook.mjs tests/offline.mjs
适用场景与注意¶
适合:在本机开发或运行 DSH,希望 API Key 等凭据引用不以明文 YAML 长期落盘;Windows/Linux 上能使用 TPM 或回退保护(DPAPI / libsecret)的环境。
不受影响的部分(换装引擎时):模型连接器各自登录态(如 workbuddy / trae);进程环境变量与 .env 中的值(它们在密库解析链之外或按优先级覆盖)。
需重录的部分:凭据服务内的引用值,包括在设置页配置的模型 API Key。
安全与信任:插件以当前 dsh 进程权限运行,安装前应在 GitHub 阅读源码与 MIT 许可证,确认符合你的合规要求。社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,选型与审计责任在使用方。
结尾¶
dsh-destinywind-tpm 把 DSH 凭据从明文文件换成 TPM/DPAPI(及 Linux 侧等价回退)封存,并在无保护者时拒绝挂载,适合对本地密钥落盘有硬性要求的场景。目录页:https://www.skillhub.cn/plugins/rickwindman/dsh-destinywind-tpm;源码与 README:https://github.com/rickwindman/dsh-destinywind-tpm。