dsh-mimavault:在 DSH 中检索密匣凭据且不向模型泄露明文

前言

用 DeepSeek Harness(DSH)写自动化或智能体流程时,经常会碰到需要引用 API Key、站点密码或 TOTP 的场景。把秘密直接贴进对话,明文会进会话历史,也可能被模型上下文带走;让模型去「猜」配置同样不可靠。本插件把本机 MimaVault(密匣) 接到 DSH:提供检索、剪贴板复制、代发 HTTP、生成口令等能力,设计上让库中密码与种子默认不进入模型上下文。

这是什么

dsh-mimavault(显示名「MimaVault 密匣」)由 startime-ltk 维护,归类为 admin-security。它是 DSH 与密匣本地 API 之间的桥:插件侧只做 HTTP 客户端,不碰加密数据;解密留在 MimaVault 进程内。仓库:https://github.com/startime-ltk/dsh-mimavault。社区目录页:https://www.skillhub.cn/plugins/startime-ltk/dsh-mimavault(独立站点,与 DeepSeek / 幻方无官方从属关系)。

当前包版本为 0.3.1(见仓库 package.json),许可证 MIT。

工作方式概览

DSH Host 中的插件通过 Bearer Token 访问仅监听 127.0.0.1 随机端口的 LocalApiServer(须在密匣解锁且勾选 Local API (DSH) 后可用)。常用工具包括 vault_search、vault_entry、vault_copy、vault_totp、vault_generate、vault_call_api;v0.3.0 起还支持 builtin 内置明文库模式(与默认 external 互斥、数据不互通)。

关切 external(默认) builtin
数据位置 PC 密匣加密库 %APPDATA%/MimaVault/builtin-vault.json(明文 JSON)
是否需安装密匣 需要 不需要
明文是否进入 DSH 进程 否 是(文件可读即可见全部条目)

下面分节以 external 为主;内置模式的安全边界见后文「适用场景与注意」。

核心功能

面向模型的工具

工具 作用 会向模型返回库中明文吗
vault_search 按关键词/分类检索元数据(备注可命中但不返回内容) 否
vault_entry 单条元数据;敏感字段如 api_key 打码为 *** 否
vault_copy 指定字段写入剪贴板(external 由密匣侧执行) 否
vault_totp 6 位动态码 + 剩余秒数 仅短时效验证码
vault_generate 生成新随机口令 是(新生成,非库内秘密)
vault_call_api 用库中令牌代理 HTTP,仅把对方响应给模型 否
vault_clear 仅发起清空内置库请求,须人工确认 否

安全模型要点(README 归纳):vault_search / vault_entry 不传密码、备注全文与 TOTP 种子;vault_call_api 限目标域名为条目 api_endpoint 的域名、不自动跟随 3xx;未解锁时插件提示未运行/未解锁;密匣约 3 分钟无操作自动登出后 API 立即失效。

侧栏面板「密匣」

注册在 sidebar.panellist,打开行时会尝试 POST /plugins/dsh-mimavault/launch 拉起密匣。面板展示连接状态(已连接 / 已启动未就绪 / 未运行 / 未找到);未找到时可在配置中填写 appPath。builtin 模式下可切换数据源、CSV 导入、条目列表与带二次确认的清空;面板只显示元数据,不显示密码明文。侧栏「关于」区块可检查更新(多源读 version.txt,只提示不自动覆盖 link: 开发目录)。

安装与启用

资料中的部署方式为:将包加入 profile 依赖并在 bundle 中启用,不是凭插件名拼接 dsh plugin add。

  1. 在 %USERPROFILE%\.dsh\profiles\<profile>\package.json 中加入依赖与 bundle(开发期可用 link: 指向本地目录):
{
  "dependencies": {
    "dsh-mimavault": "link:D:/path/to/dsh-mimavault"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-mimavault"
      ]
    }
  }
}
  1. 在 profile 目录执行 pnpm install 并重启 DSH。

  2. external 模式:需 MimaVault v8.35.5 或更高,登录后托盘勾选 Local API (DSH),确认生成 %APPDATA%\MimaVault\api.json。

  3. 运行环境:package.json 要求 Node >= 22.19.0,peer 依赖 @deepseek-ai/cordis 与 @deepseek-ai/dsh-tools 版本区间见仓库。

配置

在 profile 的 cordis.patch.yml 中覆盖插件项,例如:

- id: dsh-mimavault
  name: dsh-mimavault
  config:
    requestTimeoutMs: 8000
    maxResponseBytes: 20000
    allowedHosts:
      - "*.openai.com"
    apiJsonPath: ""
    appPath: ""
    storePath: ""
    enableBuiltinCallApi: false
    updateTimeoutMs: 8000

allowedHosts 为 vault_call_api 额外放行域名;enableBuiltinCallApi 默认 false,builtin 下不建议开启。

典型用法

经过上面的步骤连接 external 密匣后,可在会话中让 DSH 调用工具(具体由模型与 profile 工具策略决定),例如:

  1. vault_search:用服务名或分类缩小条目,再 vault_entry 看端点、用户名等元数据(无密码明文)。
  2. 填表:对目标字段调用 vault_copy,在用户本机剪贴板取用(external 下密匣侧约 30 秒条件清除)。
  3. 调第三方 API:在条目已配置 api_endpoint 与密钥时,用 vault_call_api 发起单次请求,模型只见响应体(受 maxResponseBytes 等限制)。
  4. 双因素:对带 TOTP 的条目调用 vault_totp 取当前 6 位码。
  5. builtin 迁移:在密匣中「导出 CSV(明文)」→ 侧栏粘贴并「导入 CSV」;解析在 Host 内完成,不把明文发给模型。不要用「让 AI 转格式」的方式导入整库。

内置库清空:侧栏或 vault_clear 仅发起请求,须在确认框点「确认清空」;执行前会写 builtin-vault.json.backup。

适用场景与注意

适合谁:已在用或愿意用 MimaVault、又需要 DSH 在编排里引用凭据但不希望秘密进入对话的开发者;可接受本机常驻密匣与手动解锁的 external 流程。

务必知情:

  • 插件以当前 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,自行评估信任边界。
  • external:主密码不经过 DSH;插件无法代理解锁。
  • builtin:明文存盘,任何能读 builtin-vault.json 的程序(含 DSH 的 shell 工具)可见全部秘密;vault_call_api 默认关闭;剪贴板复制依赖 Windows PowerShell,非 Windows 不支持。
  • 同 Windows 用户下的恶意程序仍可能读取 API 描述文件中的 Bearer token;设计主要防范 CSRF 与误操作。
  • vault_call_api 不支持重定向与分页;两套数据源切换不会自动迁移条目。

结尾

dsh-mimavault 把「搜条目、复制字段、代发 API、读 TOTP」收成 DSH 工具,并在 external 模式下把解密与剪贴板写回留在密匣进程。若你已在 profile 里用 link: 做本地开发,侧栏检查更新只会提示新版本,需自行拉代码并重启 DSH 或重新安装。

  • 目录页:https://www.skillhub.cn/plugins/startime-ltk/dsh-mimavault
  • GitHub:https://github.com/startime-ltk/dsh-mimavault
羽毛球分组比赛记分
小程序二维码

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

小夜