先看实际情况。本机凭据文件的结构是这样(值已打码):
version: 1
refs:
DEEPSEEK_API_KEY: <你的 key>
records:
client-connection/browser-session:
kind: grant
payload:
version: 1
secret: <会话密钥>refs下的key是明文,不是引用外部密钥库。所以这个文件必须当成钥匙本身对待:不进仓库、不进公开备份、不发给别人排查。
为什么还要用环境变量
两个理由,都很实际:
- 备份粒度:上一页已经算过,真正要保的配置只有几十MB。如果key在环境变量里,配置包可以放心传;如果在文件里,每次打包都要挑着排。
- 多机器:环境变量天然是每台机器各自的,配置文件同步过去不会把key带过去。
怎么放
export DEEPSEEK_API_KEY='sk-...' # 当前 shell echo 'export DEEPSEEK_API_KEY=...' >> ~/.bashrc # 长期,注意文件权限
Windows PowerShell里是 $env:DEEPSEEK_API_KEY = "sk-...";要持久化用 [Environment]::SetEnvironmentVariable。Grafana、systemd这类场景各有自己的注入方式,思路一样:值不进配置文件。
环境变量不是绝对安全:同用户的进程能读到,
ps e 在某些系统上能翻出来。它解决的是「配置被同步走」这个问题,不是「本机被入侵」。别把它当成加密。验证它真的生效
dsh --dump-config | grep -i -A3 model
如果dump里显示的是环境变量引用而不是字面key,说明生效路径对了。再跑一条读文件任务确认端到端可用。