本文最后更新于 2026年10月30日。
对,你的判断基本正确,但这里有两个不同的问题:
-
$env:DEEPSEEK_API_KEY只对当前 PowerShell 进程及其子进程有效,关闭窗口就失效。 -
Orca 启动 TUI 时,可能没有继承你设置的环境变量;即使设置成 Windows 系统环境变量,也可能因为 Orca 已经启动而没有读取到新值。
不过,我更建议你不要再依赖 Windows 环境变量,直接使用 DSH 自己的持久化凭据文件。
1. 推荐方案:配置 DSH 的 .env
DSH 官方支持将 API Key 保存到:
%USERPROFILE%\.dsh\.env
这是 DSH 官方提供的持久化环境变量配置方式。
DeepSeek Harness+1
PowerShell 执行:
$dir = "$env:USERPROFILE\.dsh"
New-Item -ItemType Directory -Force -Path $dir
notepad "$dir\.env"
写入:
DEEPSEEK_API_KEY=sk-你的真实API密钥
保存后关闭记事本。
这样:
-
不需要每次打开 PowerShell 设置变量。
-
不依赖 Orca 是否继承环境变量。
-
DSH 重启后仍然可以读取。
-
dsh-TUI 和其他使用同一个 DSH_HOME 的配置都可以使用。
2. 检查是否生效
关闭 Orca,重新启动 Orca,再启动 TUI。
如果仍然报错,执行:
Test-Path "$env:USERPROFILE\.dsh\.env"
然后确认 Orca 和 TUI 使用的是不是同一个 DSH_HOME。
$env:DSH_HOME
如果 Orca 使用了自定义 DSH_HOME,那么凭据文件应该放到:
$env:DSH_HOME\.env
而不是默认用户目录。
3. 还有一个重要区别
DSH 有两种凭据存储:
| 文件 | 用途 |
|---|---|
.env |
环境变量兜底 |
.credentials.yaml |
DSH 托管凭据 |
官方凭据优先级是:
-
启动进程环境变量
-
.credentials.yaml -
当前项目
.env -
DSH_HOME 下的
.env
因此,如果 .credentials.yaml 已经保存了旧密钥,它可能覆盖你后来写入的 .env。
GitHub
我的建议:先采用第一种方案。
如果仍然报 no API key for provider route "deepseek-official",把下面三条命令的结果发给我(不要提供密钥):
echo $env:DSH_HOME
Test-Path "$env:USERPROFILE\.dsh\.env"
Test-Path "$env:USERPROFILE\.dsh\.credentials.yaml"
这样可以进一步定位是不是 Orca 使用了另一套 DSH 配置目录。