用途与实际影响
这项功能怎样使用
为什么需要它
把第三方密钥写进聊天、命令或全局设置,既容易泄露,也可能让官方登录误走第三方。配置档只记受保护引用,真正的值仅在目标程序启动时交给它。
举个实际例子
“让这个指定程序使用我的DeepSeek凭据,但不要把密钥发回聊天,也别留在新开终端里。”程序通过对应配置档取得本次所需值;按目标进程注入与本地密文保存分别核对,不把连接成功当成任务成功。
最后我会得到什么
配置档只显示密钥是否已准备,目标程序启动时得到本次所需值;其他终端和普通预览不会出现明文。连接成功和任务成功仍分别确认。
正常时
选定程序拿到其需要的密钥,其他程序和父终端不继承。
发现问题时
旧环境或设置可能改送服务时标出具体冲突,不替用户改原文件。
入口不可用或证据不足时
本机受保护保存、密钥引用或服务身份不对时拒绝,不退回明文传递。
从哪里开始
在本机 aicli configure 中为点名的第三方 Profile 无回显录入 Key,随后用该 Profile 启动目标进程。
需要准备什么
- 需要凭据的具体服务和 Profile
- 当前设备上的受保护保存位置
从开始到拿到结果
- 1
只配置这条线路
选需凭据的模板并确认目标服务,不把 Key 写进命令行或聊天。
- 2
启动时才交给程序
本机密文保存引用,目标进程启动时短时取得所需值,父终端保持原样。
- 3
分开核对结果
配置已保存、服务能连接与模型真正完成任务分别说明;卸载本地资料也不会自动撤销远程授权。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
DPAPI、SecretRef、环境重建与脱敏回归通过关键规则与设计选择
进程环境隔离不是文件权限沙箱;Codex run 仍是完全访问。
OpenClaw 导入拿到的 DeepSeek Key 会立即写成 DPAPI 密文;预览、Profile JSON 和输出都不显示明文。
官方 run 只在独占 CODEX_HOME 复制 auth.json,不复制用户配置、rules、skills 或其他会话。
代理 OAuth(账号授权协议) 由第三方程序持有;AICLI 不读取 token 正文。
本模块用到的名词
- DPAPI(Windows 数据保护接口)
- 把密文绑定到当前 Windows 用户;产品不保存一个通用主密码。
- EnvironmentDelta(环境差异)
- 本次目标进程明确要增加或移除的变量集合,不是全局环境副本。
- auth.json(官方登录副本)
- 官方 Codex machine run 为独占临时 home 复制的登录材料;不进入网页或第三方 Profile。
专业定义
秘密存储、Profile 与启动环境是三个对象,不把 Key 塞进配置文本。
解决什么
防止秘密泄露和配置串线,同时不把“隐藏所有技术细节”误当成秘密保护。
当前怎样实现
- SecretStore.ps1 使用 Windows DPAPI CurrentUser;失败不写明文。
- ProfileService 只保存 SecretRef,并限制同 Provider/认证域复用;删除最后一个引用时才移除对应密文,官方登录不受影响。
- Import-FromOpenClaw.ps1只有在来源主机和当前codex-deepseek-flash目标可证明时,才把Key交给同一DPAPI存储;默认预览零写入,旧四目标集合不再适用。
- ChildProcess 从运行所需 allowlist 重建 machine 环境,再用 EnvironmentDelta 注入当前 Profile 必需项。
- Redaction 在 JSON、异常与显示层移除已知秘密;原生命令参数使用 ArgumentList,不做 Invoke-Expression。
执行流程
- 1
选择需要凭据的模板。
- 2
无回显读取 Key并写入 DPAPI 密文。
- 3
Profile 保存 SecretRef。
- 4
启动计划标明数据去向和 env_key。
- 5
目标进程启动时解封并注入;结束后不改父终端。
边界
- 本页不读取或发布用户 Profile、Key、OAuth(账号授权协议)、私有 endpoint 或 auth.json。
- 普通卸载默认保留 DPAPI 数据;purge 才删除本工具的本地副本。
- 本地 OAuth(账号授权协议) 文件删除与远程授权撤销分开。
失败与恢复
- SecretRef 指向不存在密文
- Doctor 与启动返回不可用,不要求把 Key 放进命令行补救。
- 跨 Provider 复用秘密或 OpenClaw 来源主机不符
- 拒绝,避免把一个服务的 Key 发送给另一个 host。
- 输出可能含秘密
- 脱敏后再显示;结构无法确认时整项失败,不保存原始正文。
真实入口
E:\Projects\Tools\ai-cli-profile-manager\src\AiCliProfileManager\Private\SecretStore.ps1DPAPI 保存和读取
E:\Projects\Tools\ai-cli-profile-manager\scripts\Import-FromOpenClaw.ps1来源校验与导入秘密入库
E:\Projects\Tools\ai-cli-profile-manager\src\AiCliProfileManager\Private\ChildProcess.ps1目标进程环境与清理
E:\Projects\Tools\ai-cli-profile-manager\src\AiCliProfileManager\Private\Redaction.ps1显示与回执脱敏
如何验证
- 全量回归覆盖 DPAPI、跨域复用拒绝、父环境清理与秘密不进 argv/JSON。
- 当前 profile list 只显示 secretPresence,不显示值。
- 本轮未打开任何秘密文件,也未执行云端 Live。
与其他模块的关系
Profile 模块只保存引用;本模块定义凭据生命周期,验证和恢复模块只能消费脱敏身份。
