环境变量与 .env 加载
环境变量与 .env 加载¶
OpenClaw 如何加载环境变量?
OpenClaw 会从父进程(shell、launchd/systemd、CI 等)读取环境变量,并额外加载:
- 当前工作目录中的
.env。 - 来自
~/.openclaw/.env($OPENCLAW_STATE_DIR/.env)的全局回退.env。
通常,这两个 .env 文件都不会覆盖已有的环境变量。对于由 OpenClaw 安装的 systemd 服务,全局 .env 仅可能替换 OpenClaw 记录为受管的服务值;操作者拥有的服务值仍然优先。对于工作区 .env,提供商凭据和端点路由键则是一个例外:诸如 GEMINI_API_KEY、XAI_API_KEY、MISTRAL_API_KEY 或以 _ENDPOINT 结尾的任何键(以及其他捆绑提供商的身份验证或端点环境变量)都会从工作区 .env 中被忽略,而应放在进程环境、~/.openclaw/.env 或配置 env.vars 中。
配置中的内联环境变量仅当进程环境中缺失时才生效:
完整的优先级和来源请参阅 /environment。
我通过服务启动了 Gateway,但我的环境变量消失了。怎么办?
两种解决方法:
- 将缺失的键放入
~/.openclaw/.env,这样即使服务未继承你的 shell 环境,也能加载它们。 - 启用 shell 导入(可选便利功能):
这会运行你的登录 shell,并且只导入缺失的预期键(绝不覆盖)。等效的环境变量:
OPENCLAW_LOAD_SHELL_ENV=1、OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000。
我设置了 COPILOT_GITHUB_TOKEN,但 models status 显示 “Shell env: off.”,为什么?
openclaw models status 报告的是 shell env import(shell 环境导入)是否已启用。“Shell env: off” 并不表示你的环境变量缺失——它只是表示 OpenClaw 不会自动加载你的登录 shell。
如果 Gateway 作为服务(launchd/systemd)运行,它将不会继承你的 shell 环境。解决方法:将令牌放入 ~/.openclaw/.env,启用 env.shellEnv.enabled: true,或将其添加到配置 env(仅在缺失时生效),然后重启 Gateway 并重新检查:
Copilot 仅会在存在显式的 models.providers.github-copilot 条目、已保存的 Copilot 身份验证配置文件或 COPILOT_GITHUB_TOKEN 时激活。通用的 GH_TOKEN 和 GITHUB_TOKEN 变量不会启用或验证 Copilot。请运行 openclaw models auth login --provider github-copilot 以登录。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw