dsh-vault:DeepSeek Harness 的加密凭据仓库插件

前言

做 DeepSeek Harness(DSH)插件时,一个很具体的问题是:模型需要读取用户名、邮箱、电话、密码、TOTP 密钥,以及 SSH/API key/OAuth 开发者凭据,但这些信息不宜散落在提示词、临时脚本、聊天上下文或普通配置文件里。

dsh-vault 解决的就是这件事:它是一个面向 DSH 的加密凭据仓库插件,把上述敏感信息加密存储在磁盘上,并通过模型工具和 Settings UI 提供受控存取。

这是什么

Ox0400/dsh-vault 是 DeepSeek Harness 的加密凭据仓库插件,作者为 Ox0400,许可证为 MIT。

它的主要定位是:

  • 存储敏感凭据,且加密保存在磁盘上。
  • 暴露 CRUD、搜索、密码生成、TOTP 工具给模型。
  • 提供 Settings UI 页面。
  • 支持后续维护类能力,例如密码历史、恢复码、rekey、备份、导入导出、附件、过期、轮换、健康检查和批量操作。

核心能力

加密存储范围

根据已核实事实,dsh-vault 可存储:

  • 用户名
  • 邮箱
  • 电话号码
  • 密码
  • TOTP 密钥
  • SSH connections
  • API keys
  • secrets
  • OAuth access/refresh tokens

这些凭据在落盘时是加密存储的。

模型工具

插件会向模型暴露凭据管理工具,常见工具包括:

  • vault_add:新增一条凭据,可组合填写不同字段。
  • vault_get:按 id 读取完整条目,包括密文字段。
  • vault_search:按标题、分类、用户名、邮箱、电话、主机、端口、URL、备注、标签、自定义字段等搜索,返回不含密文的摘要。
  • vault_update:按 id 更新字段;空字符串会清空对应字段。
  • vault_totp:为已存储的 otpSecret 生成当前 6 位 TOTP 码。
  • vault_generate_password:生成强随机密码,或生成易记的 passphrase。
  • vault_lock / vault_unlock:锁定凭据仓库,或重新解锁。

搜索不返回密文

vault_search 只返回摘要,不返回密码、密钥、token 或 TOTP 密钥。

如果需要读取完整凭据,必须显式通过 vault_getid 获取。

这能把“找条目”和“读密文”分开:模型可以先搜索定位,再决定是否需要读取完整内容。

实现细节

dsh-vault 使用 Node 内置的 node:crypto,不引入额外加密依赖。

已核实事实中提到:

  • AES-256-GCM 加密
  • scrypt 密钥派生
  • RFC 6238 TOTP

主密码派生出的密钥使用方式为:

key = scrypt(master password, salt)

派生后的密钥缓存在进程中,密钥本身不落盘。重启后会重新派生。

另外,已核实事实还提到:

  • 软删除条目会进入 trash,并且仍然加密保存在磁盘上。
  • 批量删除默认是 dry-run,需要 confirm: true
  • vault_breach_check 使用 Have I Been Pwned k-anonymity;只有 SHA-1 前缀会离开本机,并且有离线常见密码兜底。

安装与启用

已核实材料中没有给出可确认的官方安装命令,因此这里不直接给出安装命令。

不要凭仓库名拼接类似 dsh plugin add github:owner/repo 的命令。请先从仓库 README 或插件目录页确认安装方式。

下面列出与安装前检查相关的已核实信息:

name: dsh-vault
version: 1.10.9-rc.1
license: MIT
node engine: >=20
dependencies: playwright-core
peer dependencies: @deepseek-ai/* packages

启用前建议确认本机 Node 版本满足 >=20,并检查所需的 @deepseek-ai/* peer 依赖是否已经安装。

典型用法

下面按实际操作顺序说明。

1、先搜索,不直接读密文

当模型只知道某个账号的邮箱、主机名、标签或标题时,先使用 vault_search

它会返回不含密文的摘要。

这样做的好处是:搜索过程不会把密码、API key、OAuth token 或 TOTP 密钥带进模型上下文。

2、确认条目后再读取

如果搜索结果中出现了目标条目,再用 vault_getid 读取完整条目。

只有显式读取时,才会获取完整凭据。

3、新增凭据

需要保存新的登录信息、SSH 连接、API key 或 OAuth token 时,使用 vault_add

vault_add 支持任意字段组合,适合一次性录入用户名、邮箱、密码、主机、端口、密钥、token、备注、标签等信息。

4、更新字段

需要修改某个条目时,使用 vault_update

未提供的字段会保留;如果某个字段传空字符串,该字段会被清空。

5、生成密码或 passphrase

需要为新账号生成密码时,使用 vault_generate_password

它可以生成强随机密码,也可以生成易记的 passphrase。

6、获取 TOTP 码

如果条目中保存了 TOTP 密钥,可以使用 vault_totp 生成当前 6 位动态码。

这适合需要临时读取 MFA 码的场景。

7、锁定与解锁

当凭据仓库不再被模型使用,或需要清除进程内缓存密钥时,使用 vault_lock

需要再次访问时,使用 vault_unlock

适用场景与注意

适合使用 dsh-vault 的场景:

  • 为 DSH 插件或智能体提供凭据访问能力。
  • 需要管理用户名、邮箱、电话、密码、TOTP 密钥等身份凭据。
  • 需要管理 SSH connections、API keys、secrets、OAuth access/refresh tokens。
  • 希望搜索凭据时不直接暴露密码、密钥、token 或 TOTP 密钥。
  • 希望把凭据维护放到 Settings UI 和模型工具中,而不是散落在普通配置文件中。

需要注意:

  • 插件会以当前 dsh 进程权限运行。
  • 安装前建议检查源码、依赖、许可证和使用方式。
  • 已核实材料未给出官方安装命令,不要凭空拼接安装命令。
  • 搜索只返回摘要,完整凭据仍需要显式 vault_get
  • 批量删除默认 dry-run,需要 confirm: true

结尾

dsh-vault 的价值在于把“模型能搜索凭据”和“模型能读取完整密文”分成两个步骤,同时把敏感信息以加密形式保存在磁盘上。

对于需要在 DSH 中管理账号、开发者凭据和 MFA 密钥的插件开发场景,它是一个值得检查的加密凭据仓库插件。

仓库地址:

https://github.com/Ox0400/dsh-vault
羽毛球分组比赛记分
小程序二维码

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

小夜