diff --git a/auto-setup.ps1 b/auto-setup.ps1 index 9adfa4b..232d118 100644 --- a/auto-setup.ps1 +++ b/auto-setup.ps1 @@ -952,9 +952,25 @@ Log-Phase 4 "凭证解密" $secretsDecrypted = $false -# 先查缓存 -if (Get-CachedSecrets) { - Log-OK "从本日缓存加载凭证 (免密)" +# 优先级 1: User 级环境变量已有 (上次安装已永久写入) +$existingKey = [System.Environment]::GetEnvironmentVariable("ANTHROPIC_API_KEY", "User") +$existingUrl = [System.Environment]::GetEnvironmentVariable("ANTHROPIC_BASE_URL", "User") +if ($existingKey) { + # 注入到当前 Process (User 环境变量新终端才生效, 当前进程需手动加载) + $env:ANTHROPIC_API_KEY = $existingKey + if ($existingUrl) { $env:ANTHROPIC_BASE_URL = $existingUrl } + # 加载其他 Key (如果有) + foreach ($k in $CacheAllowedKeys) { + $v = [System.Environment]::GetEnvironmentVariable($k, "User") + if ($v) { [System.Environment]::SetEnvironmentVariable($k, $v, "Process") } + } + Log-OK "从系统环境变量加载凭证 (已有安装记录, 免输授权码)" + $secretsDecrypted = $true +} + +# 优先级 2: Registry DPAPI 缓存 +if (-not $secretsDecrypted -and (Get-CachedSecrets)) { + Log-OK "从 Registry 缓存加载凭证" $secretsDecrypted = $true } # 再解密 (缓存命中则跳过)