所有页面
本页内容

环境变量

OAR 的大部分设置都在网页界面或 config.json 中完成。环境变量用于中继启动之前就必须知道的事项,或者你想从外部固定的事项:中继把文件放在哪里、是否可以联系 oar.sh、某个提供商的程序在哪里。本页按领域分组,列出用户可以设置的变量。

在哪里设置 #

中继只在启动时读取一次变量。请在启动中继的那个进程的环境中设置它们,更改后重新启动中继。

  • 不使用服务的 oar start:中继在后台启动,使用你运行 oar start 的那个 shell 的环境。在该 shell 中,或在该 shell 读取的 profile 文件中设置变量。
  • systemd 用户服务(oar service install,以及在存在用户会话的 Linux 上的安装程序)不读取你的 shell。它写入的 unit 文件设置 COPILOT_WEB_RELAY_CONFIG、COPILOT_WEB_RELAY_DATA_DIR(始终是该安装自己的 data/,即使你的 shell 设置了别的目录)、COPILOT_WEB_RELAY_LOG_DIR,以及运行该命令的 shell 的 PATH(并加入 ~/.local/bin 和 Node.js 所在的文件夹),除此之外什么都不设置。只要 unit 文件存在且 systemd 用户会话有响应,oar start 就会使用这个服务,因此你在 shell 中导出的变量到达不了中继。OAR 没有用于在 unit 中添加更多变量的设置,而且 oar service install 和 oar setup --start 会重新写入 unit 文件,所以你添加到其中的行不会保留。参见自启动与服务。
  • Windows 自启动在 Settings → General → Autostart (Windows)(设置 → 常规 → 自启动,Windows)中设置,在登录时或开机时触发。它运行一个小脚本,设置 COPILOT_WEB_RELAY_CONFIG、COPILOT_WEB_RELAY_DATA_DIR 和 COPILOT_WEB_RELAY_LOG_DIR(开机时的那个还会把 Node.js 的文件夹加入 PATH),然后启动中继。它同样不会从 shell 复制变量,OAR 也没有用于添加更多变量的设置。
  • 用 oar restart 对不以服务方式运行的中继进行重启时,新进程使用与旧进程相同的环境。要在这种情况下更改变量,先运行 oar stop,再从设置了该变量的 shell 中运行 oar start。

安装程序变量由安装脚本在运行它的命令行中读取,而不是由中继读取。参见安装 OAR。

哪些变量会到达智能体的 worker #

每个对话都在中继启动的一个 worker 进程中运行。本页的大多数变量由中继自己读取。有几个由 worker 读取,中继的值能否到达 worker 取决于 worker 的启动方式:

  • 不使用 tmux 时(Windows,以及未安装 tmux 的 Linux 或 macOS),worker 以中继的环境启动,减去中继为每个 worker 移除的那些变量(见下文)。为中继设置变量就足够了。
  • 在 tmux 下(安装了 tmux 的 Linux 和 macOS),中继只把一个固定的变量列表传给 worker,其他一概不传。任何其他变量都到达不了 worker。如果还没有运行中的 tmux 服务器,某次启动所启动的那个 tmux 服务器可能会保留中继环境中的其余变量,但不要依赖这一点。

就本页涉及的范围而言,这个固定列表是:COPILOT_WEB_RELAY_CONFIG、COPILOT_WEB_RELAY_LOG_DIR、COPILOT_WEB_RELAY_DATA_DIR、COPILOT_SDK_PATH、COPILOT_PROVIDER_MAX_PROMPT_TOKENS、COPILOT_PROVIDER_MAX_OUTPUT_TOKENS、CLAUDE_CONFIG_DIR、CLAUDE_CODE_EXECUTABLE、CURSOR_AGENT_STORE_DIR、GROK_CLI_COMMAND、GROK_ALWAYS_APPROVE 和 OAR_MCP_SERVER。0.9.17 新增 这些变量,以及一次启动的值(worker 的种类、它的模型、它的文件夹),只进入该 worker 自己的命令,不再进入 tmux 服务器为之后每个会话保留的环境。每个 worker 的命令一开始都会取消设置宿主 Claude Code 会话的变量(见下文),以及本次启动没有值的列表变量和提供商密钥。之前某次启动、较旧的中继或启动 tmux 服务器的 shell 留在那里的值都不会到达 worker。

0.9.17 新增 CLAUDE_CODE_OAUTH_TOKEN 只传给 Claude 和 Claude Cloud 的 worker,在所有平台上都是如此;在 tmux 下通过一个只有中继的用户才能读取的文件传递。参见 Claude Cloud。 0.9.18 新增 为 Claude API 保存的密钥以同样的方式只传给 Claude API 的 worker。参见 Claude API。 ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN 在所有平台上都不传给任何 worker;在 tmux 下,worker 的命令还会取消设置它们,无论 tmux 服务器或你的登录 profile 中有什么。参见 Claude。

由 worker 读取 在 tmux 下
OAR_TURN_STALL_IDLE_MS、OAR_TURN_STALL_MODEL_MS、OAR_TURN_STALL_TOOL_MS 不传递。它们对在 tmux 下运行的 worker 没有效果。
CLAUDE_CODE_AUTO_COMPACT_WINDOW(由 Claude Code 读取,Claude worker 运行的就是它;DeepSeek 或 0.9.18 新增 Claude API 对话中的 Claude Code 永远得不到它) 不传递。
OAR_MCP_SERVER、CLAUDE_CONFIG_DIR、CLAUDE_CODE_EXECUTABLE、CURSOR_AGENT_STORE_DIR、GROK_CLI_COMMAND、COPILOT_PROVIDER_MAX_* 传递。中继把 GROK_CLI_COMMAND(未设置时则是 GROK_COMMAND)作为 GROK_CLI_COMMAND 交给每个 Grok worker。
XAI_API_KEY(由 Grok CLI 读取) 不传递。
COPILOT_SDK_PATH 传递:你的值,或中继解析出的文件夹。COPILOT_PKG_DIR 只由中继读取。

从 Claude Code 内部启动的中继 #

0.9.17 新增 你从某个 Claude Code 会话的 shell(例如某个智能体的 shell)中启动的中继,其环境中带有该会话的变量。无论是否使用 tmux,中继都会为每个 worker 去掉这些变量,这样任何 worker 的 Claude Code 都不会把自己当作那个会话的一部分:

  • 按名称:CLAUDECODE、CLAUDE_CODE_ENTRYPOINT、CLAUDE_CODE_EXECPATH、CLAUDE_CODE_CHILD_SESSION、CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS、CLAUDE_AGENT_SDK_VERSION、CLAUDE_AGENT_SDK_CLIENT_APP、CLAUDE_PID、CLAUDE_EFFORT、CLAUDE_PROJECT_DIR 和 CLAUDE_ENV_FILE;
  • 按系列:每个 CLAUDE_CODE_SESSION_*(会话 id 也在其中)、每个 CLAUDE_CODE_*_SESSION_ID 和每个 CLAUDE_CODE_MESSAGING_*。

你自己的设置会保留:其他所有 CLAUDE_CODE_* 变量(例如 CLAUDE_CODE_USE_BEDROCK 或 CLAUDE_CODE_GIT_BASH_PATH)、其他所有 CLAUDE_AGENT_SDK_* 变量、CLAUDE_CONFIG_DIR,以及某个系列中的两个设置:CLAUDE_CODE_SESSION_START_ANNOUNCEMENTS_BEFORE_PROMPT 和 CLAUDE_CODE_SESSION_LOG。DeepSeek 对话中的 Claude Code 得到的还要更少:参见 DeepSeek。

谁优先 #

这因变量而异,各表格会注明。简而言之:

  • 变量优先于 config.json:适用于数据文件夹(dataDir)、工作区允许列表、预览设置,以及隧道的令牌、二进制文件和模式。两者的隧道标记请求头会合并。config.json 中没有日志文件夹的键。
  • 从面板安装的程序优先于变量:适用于 CLAUDE_CODE_EXECUTABLE 和 GROK_CLI_COMMAND。面板会把程序保存在 config.json 中,并在每次中继启动时重新设置它。
  • 在网页界面中保存的值优先于变量:适用于 Cursor 会话令牌。功能开关则相反:变量优先于 Features(功能)选项卡保存的值。
  • 没有用于中继端口或令牌的变量。它们保存在 config.json 中(参见 config.json);oar setup --port 可以更改端口。

安装程序 #

由 oar.sh/install(macOS 和 Linux)和 oar.sh/install.ps1(Windows)读取。把它们放在运行脚本的 shell 前面:

curl -fsSL oar.sh/install | OAR_VERSION=0.9.19 OAR_PORT=3400 sh
$env:OAR_VERSION = '0.9.19'; irm oar.sh/install.ps1 | iex
变量 取值 / 默认值 作用
OAR_VERSION x.y.z;不设置则安装最新版本 安装该版本。优先于 OAR_CHANNEL。适用于 macOS、Linux 和 Windows。
OAR_CHANNEL beta(在 Windows 上也可以是 BETA,那里不区分大小写);其他任何值或不设置都表示稳定渠道 跟随 beta 渠道。适用于 macOS、Linux 和 Windows。
OAR_PORT 一个端口号;不设置则保留配置中的端口,或使用 3333(如果已被占用则使用下一个空闲端口) 把这个端口写入配置,也会覆盖已有配置中的端口。端口被占用会中止安装。仅限 macOS 和 Linux:Windows 安装程序没有这个变量,oar setup 会询问端口。
OAR_NODE private 即使你自己的 Node.js 可用,也使用 OAR 自己位于 ~/.oar/runtime/node 的 Node.js。仅限 macOS 和 Linux。
OAR_DRY_RUN 任何非空值,例如 1 打印计划,不安装任何东西。即使是 0 也算已设置。适用于 macOS、Linux 和 Windows。
OAR_YES 任何非空值 与 --yes 相同:安装前不提问。仅限 macOS 和 Linux。
OAR_STATE_ROOT 一个文件夹;默认为 ~/.oar 安装程序放置配置、数据和它自己的文件夹的位置(OAR 把文件放在哪里)。中继和 oar 命令也会读取它:参见下文。macOS 和 Linux 安装程序会读取它;在 Windows 上,脚本本身会忽略它,但脚本最后运行的 oar setup 会读取它。

中继 #

变量 取值 / 默认值 作用
OAR_STATE_ROOT 一个文件夹;默认为 ~/.oar,在 Windows 上为 %APPDATA%\oar 移动全局安装的状态:config.json、data/ 和 logs/。在每个运行 oar 的 shell 中都要设置它,否则该命令会在默认位置查找。git 检出保留自己的布局,并忽略它。
COPILOT_WEB_RELAY_CONFIG 一个文件路径;默认为包中的 server/config.json 你自己启动中继(node server/server.js)时中继读取的配置文件。文件存在时,oar copilot 会使用它。oar start 和服务使用该安装自己的 config.json。参见 oar 命令。
COPILOT_WEB_RELAY_DATA_DIR 一个文件夹;默认为 config.json 中的 dataDir,否则为 server/data 数据文件夹(数据库、上传文件、Cursor 智能体存储,以及 0.9.17 新增 位于 deepseek-claude 中的 DeepSeek 对话的 Claude Code 状态)。优先于 dataDir。oar start 和 oar copilot 会把它传给中继;systemd 服务和 oar status 使用该安装自己的 data/。
COPILOT_WEB_RELAY_LOG_DIR 一个文件夹 日志文件夹;全局安装默认为状态文件夹中的 logs。你自己启动的中继,在设置了 COPILOT_WEB_RELAY_DATA_DIR 时把 relay-console.log 放在其中的 logs 里,否则放在 server/logs 中;它的 worker 日志放在 server/logs 中。
COPILOT_WEB_RELAY_NODE 一个 node 程序的路径;默认为运行中继的 Node.js 中继用来启动其 worker 的 Node.js。0.9.11 新增 不设置时,worker 在所有平台上都通过完整路径运行在中继自己的 Node.js 上,因此即使中继的 PATH 中没有 node,它们也能启动。它还用于运行 Copilot 扩展引擎所用的 OAR MCP 服务器。
OAR_NO_CONSOLE_LOG 1 表示关闭;其他值不起作用 让中继不再在日志文件夹的 relay-console.log 中保留其控制台输出的副本。
OAR_NO_UPDATE_CHECK 1 从不联系 oar.sh,连手动检查也不会(更新 OAR):Settings → General 中的更新检查会回答检查已被禁用,不带 --to 的 oar update 会拒绝执行。oar update --to X.Y.Z 仍然可用。其他值不起作用。
OAR_UPDATE_MANIFEST_URL 一个 URL;默认为 https://oar.sh/latest.json 中继和 oar update 读取的更新清单。
OAR_MCP_SERVER 0、false、off 或 no 表示关闭 让 OAR 的 MCP 服务器不进入 Grok 会话和 Copilot 扩展引擎。它们随后会以文本形式获得预览说明,也没有 relay_tool 工具。其他提供商在进程内携带自己的工具,不受影响。参见智能体工具。
OAR_TURN_STALL_IDLE_MS、OAR_TURN_STALL_MODEL_MS、OAR_TURN_STALL_TOOL_MS 毫秒;默认值分别为 120000、300000 和 1800000 一轮在失败之前可以保持静默多久,分别对应没有进行中的请求时、模型请求期间和工具调用期间。0 表示该阶段没有限制。由 worker 读取,在 tmux 下不会传给 worker:参见哪些变量会到达智能体的 worker和下文。
COPILOT_WORKSPACE_ROOT_ALLOW_LIST 以 : 分隔的文件夹(在 Windows 上为 ;);不设置则允许任何文件夹 对话可以在其中启动的文件夹及其子文件夹。优先于 workspaceRootAllowList。不存在的文件夹会被丢弃并给出警告;如果一个都不剩,则允许任何文件夹。变量为空时由配置键决定。参见开始对话。
COPILOT_REMOTE_<FLAG> 1、true、yes、on 或 0、false、no、off 固定一个功能开关。参见下文。
OAR_HOST_SUSPEND_DRY_RUN 1、true、yes 或 on 在 Windows 上,Suspend host(让主机休眠)只把休眠写入日志,而不让机器进入睡眠。用于试用这一流程。

轮次停滞计时器 #

三个 OAR_TURN_STALL_* 变量由以下 worker 读取:SDK 引擎上的 GitHub Copilot 和 OpenAI、Cursor 以及 Grok。如果一轮的静默时间超过其当前阶段的窗口,它会以一条系统提示失败;轮次与队列中的表格展示了你会看到什么。

  • 值必须是大于或等于 0 的数字。其他任何值都会被忽略,并使用默认值。
  • 如果只设置 OAR_TURN_STALL_IDLE_MS,模型窗口和工具窗口会保持与它的比例:把它设为 240000 会让这两个默认值都翻倍。若要固定它们,也请设置它们。空闲窗口为 0 时,除非你另行设置,另外两个也会变为 0,即三个阶段都没有限制。
  • Claude,以及 0.9.17 新增 运行在 Claude worker 上的 DeepSeek,只会记录静默的一轮,从不结束它。对它们而言,OAR_TURN_STALL_MODEL_MS 的默认值为 600000,其工具窗口同样随 OAR_TURN_STALL_IDLE_MS 缩放。如果那里的值已设置但为空或不是数字,得到的是 300000(按空闲窗口缩放),而不是 600000。
  • 扩展引擎和 Claude Cloud 不读取这些变量。
  • 在 Grok 上,空闲窗口为 0 并不会关闭监视:三个窗口都会回到默认值,OAR_TURN_STALL_MODEL_MS 和 OAR_TURN_STALL_TOOL_MS 会被忽略。
  • 这些变量由 worker 读取,因此在 tmux 下不起作用(参见上文)。

功能开关 #

设置中的 Features 选项卡显示这些开关。变量会把开关固定为某个值,无论该选项卡保存了什么;中继在启动时读取它。把开关名称用大写字母写在 COPILOT_REMOTE_ 之后。值为 1、true、yes 或 on 表示开启,0、false、no 或 off 表示关闭,不区分大小写;其他任何值都会被忽略,保存的值继续有效。共有以下四个开关:

变量 选项卡标签 默认值
COPILOT_REMOTE_SESSION_WORKER_ROUTING_ENABLED Session worker routing(会话 worker 路由) 开启
COPILOT_REMOTE_SESSION_WORKER_CONTINUATION_ROUTING_ENABLED Continuation answer routing(续接回复路由) 开启
COPILOT_REMOTE_SESSION_WORKER_FALLBACK_RESTART_ENABLED Worker fallback restart (reserved)(worker 回退重启,保留) 关闭,且不改变任何东西
COPILOT_REMOTE_IMAGE_CONVERSATION_CONTINUITY_ENABLED Generated-image continuity(生成图片连续性) 开启

关闭会话 worker 路由会使 SDK 引擎不可用。

预览 #

预览还需要一个 previews 块和一个单独的主机名:参见 preview。每个变量都优先于该块中的同名键。

变量 取值 / 默认值 作用
COPILOT_PREVIEWS_ENABLED 1/true 或 0/false 开启或关闭预览。其他任何值都由 previews.enabled 决定。
COPILOT_PREVIEWS_PORT 一个端口号 预览监听器的端口。0 表示使用一个空闲端口;否则须为 1024 或更高,且不能是中继的端口。不可用的值由 port 键决定。既没有变量也没有 port 键时,它是中继的端口加一。
COPILOT_PREVIEWS_BIND_HOST 一个地址;默认为 127.0.0.1 预览监听器绑定的地址。环回地址以外的地址还需要在 config.json 中设置 previews.allowPublicBind: true,否则预览保持关闭。
COPILOT_PREVIEWS_PUBLIC_BASE_URL 一个 http(s) URL 预览的公开地址。预览开启时必须设置,且其主机名必须与中继的不同。不是 http(s) URL 的值视为缺失;不会改用对应的键。
COPILOT_PREVIEWS_ALLOWED_TARGET_HOSTS 以逗号分隔的主机名 除中继所在的机器之外,端口预览可以指向的主机。变量已设置但为空表示空列表,并忽略 allowedTargetHosts。

Cloudflare 隧道 #

用于 config.json 的 cloudflaredTunnel 块,以及任何隧道的标记请求头。每个 COPILOT_CLOUDFLARED_* 变量都优先于其对应的键;标记请求头会合并。

变量 取值 / 默认值 作用
COPILOT_CLOUDFLARED_MODE managed 或 disabled 覆盖 cloudflaredTunnel.mode(Cloudflare Tunnel)。其他任何值都会被忽略。managed 需要令牌。
COPILOT_CLOUDFLARED_TOKEN 一个隧道令牌 覆盖 cloudflaredTunnel.token。
COPILOT_CLOUDFLARED_BINARY 一个名称或路径;默认为 PATH 中的 cloudflared 覆盖 cloudflaredTunnel.binary。
COPILOT_TUNNEL_MARKER_HEADERS 以逗号分隔的请求头名称 除 cf-ray 之外,使请求被视为经由隧道而来的更多标记请求头:会话 worker 路径保护会拒绝这样的请求,其中错误的令牌会计入登录锁定。0.9.11 新增 它会添加到 config.json 中的 tunnelMarkerHeaders,而不是被它替换:tunnelMarkerHeaders: [] 不再能关闭这个变量。

提供商 #

GitHub Copilot #

关于如何找到 CLI,参见 GitHub Copilot。

变量 取值 / 默认值 作用
COPILOT_SDK_PATH 一个文件夹 SDK 引擎的 worker 加载的 copilot-sdk 文件夹,取代包缓存中最新 CLI 旁边的那个。中继自己的模型列表和会话导入不读取它。
先 COPILOT_WEB_RELAY_CLI_EXECUTABLE,再 COPILOT_CLI_EXECUTABLE,最后 COPILOT_CLI_PATH 一个程序;默认为 copilot 扩展引擎在 Linux 和 macOS 上运行的 Copilot CLI(Windows 始终运行 gh copilot)。第一个优先于 config.json 中的 cliPath。
COPILOT_CONFIG_HOME 一个文件夹;默认为 ~/.copilot oar copilot 写入其扩展包装器的位置。
COPILOT_PKG_DIR 一个文件夹 额外搜索的一个包缓存。
XDG_CACHE_HOME、XDG_DATA_HOME 文件夹 在 Linux 上,两个默认包缓存所在的位置(各自其中的 copilot/pkg)。
GH_TOKEN、GITHUB_TOKEN 一个 GitHub 令牌 用于 Check Usage(查看用量)中的 Copilot 卡片,取代 gh auth token 的结果。先读取 GH_TOKEN。
COPILOT_SESSION_STATE_DIR 一个文件夹;默认为 ~/.copilot/session-state Copilot CLI 的会话状态文件夹(如果它在别处)。仅当该文件夹存在时才使用。

OAR_MCP_SERVER 和 COPILOT_REMOTE_SESSION_WORKER_ROUTING_ENABLED 同样适用于 Copilot(见上文)。

OpenAI #

API 密钥和基础 URL 在 Settings → Providers → OpenAI(设置 → 提供商 → OpenAI)中设置,没有对应的变量。有两个变量用于调整 SDK 引擎上 OpenAI 的 token 上限;参见 OpenAI。

变量 取值 / 默认值 作用
COPILOT_PROVIDER_MAX_PROMPT_TOKENS 一个正整数 模型的提示词上限,取代 OAR 表格中的值。不可用的值会被记入日志并忽略。
COPILOT_PROVIDER_MAX_OUTPUT_TOKENS 一个正整数 输出的相应上限。

生成图片所在的文件夹跟随 COPILOT_SESSION_STATE_DIR。

Claude #

参见 Claude。

变量 取值 / 默认值 作用
CLAUDE_CONFIG_DIR 一个文件夹;默认为 ~/.claude Claude 配置文件夹:登录信息,以及查找会话文件夹的位置。0.9.17 新增 不适用于 DeepSeek 对话:它们的 Claude Code 把状态保存在数据文件夹中的 deepseek-claude 里(DeepSeek)。0.9.18 新增 Claude API 对话与 Claude 对话一样使用它。
CLAUDE_CODE_EXECUTABLE 一个文件路径 worker 使用的 Claude Code 程序,取代 Agent SDK 自带的构建。从面板安装或更新会设置它,并把程序保存在 config.json 中,此后每次启动时,该程序都优先于你的变量。登录时运行的是 PATH 中的 claude。
CLAUDE_CODE_OAUTH_TOKEN 一个 Claude 登录令牌 Claude Code 读取它,以取代 CLAUDE_CONFIG_DIR 中的登录信息。0.9.17 新增 Claude worker 在 tmux 下也能得到它。哪些 worker 能得到它:参见 Claude Cloud。
ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN 一个 Anthropic 密钥或令牌 0.9.17 新增 不传给任何 worker。Claude 对话运行在主机的 Claude 登录上(CLI 的登录文件,或 CLAUDE_CODE_OAUTH_TOKEN),从不使用中继环境中的密钥。0.9.17 之前,每个 worker 都会得到它们,而且 Claude Code 会优先使用其中任何一个,而不是 Claude 登录。0.9.18 新增 Claude API 对话运行在 Settings → Providers → Claude API(设置 → 提供商 → Claude API)中保存的密钥上,而不是这些变量上。
BASH_DEFAULT_TIMEOUT_MS、BASH_MAX_TIMEOUT_MS、CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS 由 OAR 设置 0.9.12 新增 不从中继的环境中读取:OAR 会根据 Claude background command limit(Claude 后台命令上限),为它启动的每个 Claude 会话以及 0.9.17 新增 每个 DeepSeek 会话设置它们(分别为该上限、8 小时和 2 分钟)。参见后台命令上限。
CLAUDE_CODE_AUTO_COMPACT_WINDOW 一个 token 数 由 Claude Code 读取,而不是由 OAR 读取:它设置自动压缩窗口。当 Claude Code 报告它从这里获取了窗口时,滑块下方的那一行会显示 from CLAUDE_CODE_AUTO_COMPACT_WINDOW(来自该环境变量)。在 tmux 下不传给 worker。0.9.17 新增 DeepSeek 对话会忽略它(DeepSeek)。参见压缩对话。

Claude API 0.9.18 新增 #

Claude API 没有自己的变量。密钥在 Settings → Providers → Claude API 中设置;中继环境中的 ANTHROPIC_API_KEY 不会被使用。中继只把保存的密钥交给 Claude API 的 worker,它们的 Claude Code 在自己的环境中以 ANTHROPIC_API_KEY 的形式得到它。参见 Claude API。

Claude API 对话在中继主机上运行 Claude Code,因此 Claude 的变量也适用于它,但有以下区别:

变量 在 Claude API 对话中
CLAUDE_CONFIG_DIR 与 Claude 一样使用:这些对话共享 Claude 配置文件夹。
CLAUDE_CODE_EXECUTABLE 与 Claude 一样使用。
BASH_DEFAULT_TIMEOUT_MS、BASH_MAX_TIMEOUT_MS、CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS 与 Claude 一样,由 OAR 根据 Claude background command limit 设置。
CLAUDE_CODE_AUTO_COMPACT_WINDOW 忽略。
CLAUDE_CODE_OAUTH_TOKEN、CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX、CLAUDE_CODE_USE_FOUNDRY、每个 ANTHROPIC_* 忽略:OAR 让 Claude Code 使用保存的密钥连接 https://api.anthropic.com。
CLAUDE_CODE_EFFORT_LEVEL、CLAUDE_CODE_SUBAGENT_MODEL、CLAUDE_CODE_SUBAGENT_MODEL_FORCE、CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL 忽略:OAR 根据对话设置推理强度和模型。
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 忽略:它会让 Claude Code 离开 plan 模式,并在沙箱中运行每个 shell 命令。

Claude Cloud #

参见 Claude Cloud。

变量 取值 / 默认值 作用
CLAUDE_CODE_OAUTH_TOKEN 一个 Claude 登录令牌 中继及其云端 worker 用它代替 CLI 的凭据文件来使用 Claude Cloud。0.9.17 新增 它只到达 Claude Cloud 和 Claude 的 worker,在所有平台上都是如此:在 tmux 下通过一个只有中继的用户才能读取的文件,不使用 tmux 时则通过它们继承的环境。GitHub Copilot、OpenAI、Cursor、Grok 和 DeepSeek 的 worker,以及 0.9.18 新增 Claude API 的 worker,启动时都不带它。0.9.17 之前,每个不使用 tmux 启动的 worker 都会得到它;在 tmux 下,某次启动所启动的 tmux 服务器会为之后的每个会话保留它。在仅用该令牌登录的主机上,Claude 对话现在在 tmux 下也能得到它。
CLAUDE_CONFIG_DIR 一个文件夹;默认为 ~/.claude 读取 CLI 登录信息(.credentials.json)的位置。
OAR_CLAUDE_CLOUD_BRANCH_LOOKUP off、0、false 或 no(不区分大小写) 让 New Chat(新建对话)中的分支列表不再询问 git。其他任何值都保持开启。

DeepSeek #

0.9.17 新增 DeepSeek 没有自己的变量。API 密钥和基础 URL 在 Settings → Providers → DeepSeek(设置 → 提供商 → DeepSeek)中设置,基础 URL 位于 Advanced(高级)下。中继环境中的 DEEPSEEK_API_KEY 或 DEEPSEEK_BASE_URL 不会被使用:中继把保存的值交给 DeepSeek 的 worker,其他 worker 两者都得不到。参见 DeepSeek。

DeepSeek 对话在中继主机上运行 Claude Code,因此上面的 Claude 变量会起作用,但并非全部:

变量 在 DeepSeek 对话中
CLAUDE_CODE_EXECUTABLE 与 Claude 一样使用。
BASH_DEFAULT_TIMEOUT_MS、BASH_MAX_TIMEOUT_MS、CLAUDE_CODE_AUTO_BACKGROUND_TIMEOUT_MS 与 Claude 一样,由 OAR 根据 Claude background command limit 设置。
CLAUDE_CONFIG_DIR 忽略。Claude Code 把状态保存在数据文件夹中的 deepseek-claude 里(文件夹与会话)。
CLAUDE_CODE_AUTO_COMPACT_WINDOW 忽略。
CLAUDE_CODE_OAUTH_TOKEN、CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX、CLAUDE_CODE_USE_FOUNDRY、每个 ANTHROPIC_* 忽略:OAR 让 Claude Code 使用保存的密钥连接 DeepSeek 的端点。
CLAUDE_CODE_EFFORT_LEVEL、CLAUDE_CODE_SUBAGENT_MODEL、CLAUDE_CODE_SUBAGENT_MODEL_FORCE、CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL 忽略:OAR 根据对话设置推理强度和模型(推理强度、模型)。
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 忽略:它会让 Claude Code 离开 plan 模式而进入其默认模式,使智能体能够编辑文件,并会在沙箱中运行每个 shell 命令。
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 由 OAR 设为 1,无论你的设置是什么:Claude Code 自己发往 Anthropic 的流量(更新、遥测)被关闭。

中继为其 worker 所做的设置(worker 种类、中继的文件夹和工具文件、SESSION_ID,以及每个 COPILOT_WEB_RELAY_*、COPILOT_PROVIDER_*、DEEPSEEK_* 和 OAR_* 变量)只留在 worker 中:Claude Code 和它的智能体运行的命令都看不到它们。密钥本身会作为 Claude Code 访问 DeepSeek 端点的令牌到达 Claude Code,因此智能体的命令可以读取它;参见密钥保存在哪里。你的其他变量会像到达 Claude 对话那样到达它。

Cursor #

Cursor API 密钥保存在 Settings → Providers → Cursor(设置 → 提供商 → Cursor)中。中继环境中的 CURSOR_API_KEY 不会被使用:中继把保存的密钥交给它的 worker。参见 Cursor。

变量 取值 / 默认值 作用
CURSOR_SESSION_TOKEN 一个控制台会话令牌 用于实时套餐进度条(Check Usage)。在面板中保存的令牌优先于它,而它优先于 Cursor 应用的登录。
CURSOR_AGENT_STORE_DIR 一个文件夹;默认为中继数据文件夹中的 cursor-agents(0.9.14 新增;此前为中继 server 文件夹中的 data/cursor-agents) 保存每个对话的智能体状态的位置。

Grok #

参见 Grok。

变量 取值 / 默认值 作用
GROK_CLI_COMMAND 一个程序名称或路径;默认为 grok 用于登录、模型发现和 worker 的 Grok 程序。未设置时读取 GROK_COMMAND;中继把两者中的一个作为 GROK_CLI_COMMAND 交给 worker,在 tmux 下也是如此。从面板安装或更新会把程序保存在 config.json 中,此后每次启动时,它都优先于该变量。
GROK_ALWAYS_APPROVE 0;默认为 1 0 会在启动 Grok 时不带 --always-approve;OAR 随后会以 allow-once(允许一次)回答每个权限请求。在 tmux 下会传给 worker。
XAI_API_KEY 一个 xAI 密钥 由 Grok CLI 读取,而不是由 OAR 读取,可代替其登录。账户行只认得通过 CLI 完成的登录。在 tmux 下不传给 worker。

不供你设置 #

源代码和日志中还会出现其他名称。它们不是设置:桩和测试 hook(*_STUB_*、*_ALLOW_STUB_SPAWN、COPILOT_WEB_RELAY_DISABLE_CLI_SPAWN、OAR_PACKAGE_SPEC、OAR_CLAUDE_CLOUD_API_BASE_URL、0.9.18 新增 OAR_ANTHROPIC_API_BASE_URL、OAR_HYGIENE_DENYLIST);中继为自己的 worker 进程设置的变量(COPILOT_WEB_RELAY_WORKER_KIND、*_RELAY_MODEL、SESSION_ID、COPILOT_WEB_RELAY_ROOT、COPILOT_WEB_RELAY_SERVER_DIR、OAR_MCP_SERVER_ATTACHED 和其他 COPILOT_PROVIDER_*——中继根据 OpenAI 设置填充它们——以及 0.9.17 新增 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL 和 DEEPSEEK_CLAUDE_CONFIG_DIR——中继根据 DeepSeek 设置填充它们——还有 0.9.18 新增 OAR_CLAUDE_API_KEY 和 CLAUDE_API_RELAY_MODEL,中继根据 Claude API 设置填充它们;在 tmux 下,这些密钥通过仅所有者可读的文件传给 worker);面向开发者的调优参数(COPILOT_SDK_RELAY_*、CLAUDE_RELAY_*、OAR_BOOT_REPORTING_WINDOW_MS、OAR_RELAY_RESTART_MAX_WAIT_MS、COPILOT_WEB_RELAY_CLAUDE_AUTH_BIN、COPILOT_WEB_RELAY_CLI_BIN_DIR、COPILOT_WEB_RELAY_*_WORKER_PATH);OAR 为 Grok 设为 1 的 GROK_DISABLE_AUTOUPDATER;以及由启动器设置的 COPILOT_WORKSPACE_ROOT。oar 菜单遵循 NO_COLOR。其余的请不要改动。