Files

2.0 KiB

id, title, phase, deps, status, created
id title phase deps status created
T-600 AI工场 BYOK Key 本地 DPAPI 存储与设置 UI 8
T-599
TODO 2026-07-11

问题 / 背景

自定义 OpenAI Key 属于高敏感信息。既不能写进 data/config.json 明文,也不能沿用旧 data/config/ai_models.json 的普通 direct 模型清单给用户暴露。Windows 桌面版需要用当前用户/设备绑定的本地加密保存,并且 UI 只允许录入、替换、清除和测试,不回显明文。

方案

  • 新增 BYOK secret 存储模块,Windows 使用 DPAPI 保护 Key;非 Windows 开发环境可用测试替身,但正式打包只面向 Windows。
  • 存储文件放 data/config/byok_secrets.json 或同级专用文件,必须 gitignore;文件复制到另一 Windows 用户/设备不能直接解密。
  • ⑤设置或 AI工场设置区新增“自定义模型”配置入口,但默认仍是 cmhub 托管;只有用户显式选择自定义才显示 OpenAI Key 输入、替换、清除、测试连接。
  • UI 只显示掩码和保存状态;保存/替换时弹中文提示“密钥仅本机加密保存,模型费用由服务商收取”。
  • 所有日志、状态栏、弹窗、run_logs 和本地诊断日志都不得包含 Key、Key 片段、完整请求头或 DPAPI 原始密文。

验收要点

  • 保存、加载、替换、清除、错误密文、跨用户不可解密均有纯逻辑测试或可控平台测试。
  • UI 不回显明文;离开未保存确认与现有 T-531 设置脏状态兼容。
  • 未配置 Key 时自定义来源不可提交任务,提示用户先配置;cmhub 托管来源不受影响。
  • 打包校验确认不会把本地 Key 文件打进 release。
  • 运行 ruff、compileall、unittest、git diff --check。

边界(不改什么)

  • 不实现 submit/poll 生图,不调用 OpenAI,不改 cmhub 托管默认来源。
  • 不把 Key 存 SQLite 普通字段,不支持云同步 Key。
  • 不支持用户填写任意 Provider URL。

执行记录

(完成后记录存储文件、DPAPI 兼容性和 GUI 验证。)