// DOCS · 账号保险库

账号保险库 · Account Vault

统一记录 AI 平台的 API Key / token / 密码,密文存储、本地解密。本文说明架构、解密设计与当前状态。

一句话: 线上 /accounts/ 是浏览器端解密的密钥保险库;WorkBuddy 里另有一套同算法的 account-vault 技能。两者算法一致、存储独立、master 未统一——这是当前最大的隐患。

1. 架构:两套独立保险库

维度线上保险库WorkBuddy 技能
存储位置站点 accounts/vault.json本地 ~/.workbuddy/accounts/vault.json
当前内容阿里云百炼、智谱、硅基流动(8/5–8/6)DeepSeek Codex(8/7 存入)
解锁方式浏览器输入 VAULT_MASTER.envVAULT_MASTER
访问入口/accounts/index.html对话里让我"记一下/查一下"

2. 解密设计(你忘的那部分)

算法与 WorkBuddy 技能 完全对齐(app.js 注释原话):

PBKDF2(master, salt, 100000 次, SHA-256)
  → AES-256-GCM(iv 12 字节,authTag 独立附加在密文尾部)

master = VAULT_MASTER,一串 64 位十六进制(不是人类口令)
解密全程在浏览器本地用 Web Crypto 完成,主密码与明文不离开本机

使用步骤(线上)

  1. 打开 /accounts/index.html
  2. 在输入框粘贴 VAULT_MASTER(64 位 hex),点「解锁」
  3. 解密后列出全部条目,密钥默认脱敏(前 6 + 后 4,中间 *
  4. 点「显示」出明文,「复制」写入剪贴板

3. 当前已知问题

⚠️ 两套 master 未统一。 线上库的 3 条由你 8/5 设的原 master加密;8/7 我因技能 .env 缺失,新建了一个随机 master 来存 DeepSeek Codex。两者算法相同但 master 不同,互相打不开对方的条目
线上库 master 若遗忘 → 那 3 条不可恢复(加密设计本就如此)。若能回忆起原 64-hex master,把技能 .envVAULT_MASTER 改成同一个值、并用该 master 重新存一遍 DeepSeek,即可两库统一。
暂无关键词搜索。 你记忆里"输入 deepseek 能筛选"目前未实现——app.js 解锁后是铺开全部条目,不按关键词过滤。可作为后续增强。

4. WorkBuddy 技能用法

# 存入
node ~/.workbuddy/skills/account-vault/vault.js add "服务名" "密钥值" "描述"
# 查询(脱敏)
node ~/.workbuddy/skills/account-vault/vault.js get 关键词
# 取明文(谨慎)
node ~/.workbuddy/skills/account-vault/vault.js raw 服务名
# 列表 / 删除
node ~/.workbuddy/skills/account-vault/vault.js list
node ~/.workbuddy/skills/account-vault/vault.js delete 服务名

5. 安全说明

6. 演进建议