设置DEEPSEEK_API_KEY变量后只在当前窗口有效对吗,orca启动的tui就用不了;我直接设置到系统环境变量也不行

23 次阅读

本文最后更新于 2026年10月30日。

对,你的判断基本正确,但这里有两个不同的问题:

  1. $env:DEEPSEEK_API_KEY 只对当前 PowerShell 进程及其子进程有效,关闭窗口就失效。

  2. 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 托管凭据

官方凭据优先级是:

  1. 启动进程环境变量

  2. .credentials.yaml

  3. 当前项目 .env

  4. 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 配置目录。