所有頁面
本頁內容

環境變數

OAR 的大部分設定都在網頁介面或 config.json 中完成。環境變數用於中繼啟動前就必須知道的事,或是你想從外部固定下來的事:中繼把檔案放在哪裡、它是否可以連絡 oar.sh、供應商的程式在哪裡。本頁依領域分組,列出使用者可以設定的變數。

在哪裡設定 #

中繼只在啟動時讀取一次它的變數。請在啟動中繼的那個處理程序的環境中設定變數,變更後再重新啟動中繼。

  • 沒有服務時的 oar start:中繼會在背景啟動,並沿用你執行 oar start 的那個 shell 的環境。請在那個 shell 中設定變數,或在那個 shell 讀取的設定檔中設定。
  • systemd 使用者服務(oar service install,以及在有使用者 session 的 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 使用者 session 有回應,oar start 就會使用這個服務,所以在你的 shell 中 export 的變數不會傳到中繼。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。

哪些變數會傳到 agent 的 worker #

每個對話都在中繼啟動的 worker 處理程序中執行。本頁的大部分變數由中繼本身讀取。有幾個由 worker 讀取,而中繼的值是否會傳到 worker,取決於 worker 的啟動方式:

  • 不使用 tmux 時(Windows,以及沒有安裝 tmux 的 Linux 或 macOS),worker 會以中繼的環境啟動,但會扣掉中繼為每個 worker 移除的變數(見下方)。為中繼設定變數就夠了。
  • 在 tmux 下(安裝了 tmux 的 Linux 和 macOS),中繼會把一份固定的變數清單傳給 worker,其他都不傳。其他任何變數都不會傳到 worker。如果還沒有 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 伺服器為之後每個 session 保留的環境。每個 worker 的指令一開始都會 unset 主機 Claude Code session 的變數(見下方),以及清單中每個變數和每個供應商金鑰裡這次啟動沒有值的那些。先前某次啟動、較舊的中繼,或啟動 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 的指令還會 unset 它們,不論 tmux 伺服器或你的登入設定檔中有什麼值。見 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 worker 所執行的 Claude Code 讀取;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 session 的 shell(例如某個 agent 的 shell)啟動的中繼,環境中會帶有該 session 的變數。中繼會為每個 worker 移除這些變數,不論是否使用 tmux,這樣就不會有 worker 的 Claude Code 把自己當成那個 session 的一部分:

  • 依名稱: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_*(其中包括 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)、workspace 允許清單、預覽設定,以及 tunnel 的 token、程式和模式。兩者的 tunnel 標記標頭會合併。config.json 中沒有記錄資料夾的 key。
  • 從面板安裝的程式優先於變數:適用於 CLAUDE_CODE_EXECUTABLE 和 GROK_CLI_COMMAND,面板會把程式存進 config.json,並在每次中繼啟動時重新設定。
  • 網頁介面中儲存的值優先於變數:適用於 Cursor 的 session token。功能旗標則相反:變數優先於 Features(功能)分頁所儲存的值。
  • 中繼的連接埠和 token 沒有對應的變數。它們存放在 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;在那裡大小寫不影響);其他任何值或未設定都是 stable 通道 追蹤 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 agent 儲存區,以及 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,worker 也能啟動。它也用來執行 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 網址;預設為 https://oar.sh/latest.json 中繼和 oar update 讀取的更新清單檔。
OAR_MCP_SERVER 0、false、off 或 no 會關閉它 讓 Grok session 和 Copilot 擴充功能引擎不使用 OAR 的 MCP 伺服器。它們會改以文字形式取得預覽的說明,而且沒有 relay_tool 工具。其他供應商在處理程序內提供它們的工具,不受影響。見 Agent 工具。
OAR_TURN_STALL_IDLE_MS、OAR_TURN_STALL_MODEL_MS、OAR_TURN_STALL_TOOL_MS 毫秒;預設分別為 120000、300000 和 1800000 回合在沒有任何進行中的請求時、模型請求期間,以及工具呼叫期間,可以保持安靜多久才失敗。0 表示該階段沒有限制。由 worker 讀取,且不會傳給在 tmux 下的 worker:見哪些變數會傳到 agent 的 worker 和下方。
COPILOT_WORKSPACE_ROOT_ALLOW_LIST 以 : 分隔的資料夾(Windows 上為 ;);未設定時允許任何資料夾 對話可以在其中開始的資料夾,以及它們的子資料夾。優先於 workspaceRootAllowList。不存在的資料夾會被捨棄並發出警告;如果一個都不剩,就允許任何資料夾。空的變數會交由設定檔的 key 決定。見開始對話。
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_* 變數由 SDK 引擎上的 GitHub Copilot 與 OpenAI、Cursor 和 Grok 的 worker 讀取。回合安靜的時間超過目前階段的時間窗時,會以一則系統註記失敗;回合與佇列中的表格說明你會看到什麼。

  • 值必須是 0 或更大的數字。其他任何值都會被忽略,並套用預設值。
  • 如果你只設定 OAR_TURN_STALL_IDLE_MS,模型和工具的時間窗會維持與它的比例:把它設為 240000 會讓兩者的預設值加倍。要固定它們,請也設定它們。閒置時間窗為 0 時,除非你另外設定,兩者都會變成 0,也就是三個階段都沒有限制。
  • Claude,以及在 Claude worker 上執行的 0.9.17 新增 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(Session 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(生成圖片連續性) 開啟

關閉 session worker 路由會讓 SDK 引擎無法使用。

預覽 #

預覽還需要一個 previews 區塊和自己的主機名稱:見 preview。每個變數都優先於該區塊中的同一個 key。

變數 值 / 預設值 作用
COPILOT_PREVIEWS_ENABLED 1/true 或 0/false 開啟或關閉預覽。其他任何值都交由 previews.enabled 決定。
COPILOT_PREVIEWS_PORT 連接埠號碼 預覽監聽器的連接埠。0 會取一個空閒的連接埠;否則必須是 1024 或更高,且不能是中繼的連接埠。無法使用的值會交由 port key 決定。既沒有變數也沒有 port key 時,就是中繼的連接埠加一。
COPILOT_PREVIEWS_BIND_HOST 位址;預設為 127.0.0.1 預覽監聽器綁定的位址。迴路位址以外的位址還需要在 config.json 中設定 previews.allowPublicBind: true,否則預覽會保持關閉。
COPILOT_PREVIEWS_PUBLIC_BASE_URL http(s) 網址 預覽的公開位址。預覽開啟時為必填,而且它的主機名稱必須與中繼的不同。不是 http(s) 網址的值會視為缺少;不會改用 key 的值。
COPILOT_PREVIEWS_ALLOWED_TARGET_HOSTS 以逗號分隔的主機名稱 除了中繼自己的機器之外,連接埠預覽可以指向的主機。設定了但為空的變數表示空清單,並會忽略 allowedTargetHosts。

Cloudflare tunnel #

用於 config.json 的 cloudflaredTunnel 區塊,以及任何 tunnel 的標記標頭。每個 COPILOT_CLOUDFLARED_* 變數都優先於它對應的 key;標記標頭則會合併。

變數 值 / 預設值 作用
COPILOT_CLOUDFLARED_MODE managed 或 disabled 覆寫 cloudflaredTunnel.mode(Cloudflare Tunnel)。其他任何值都會被忽略。managed 需要 token。
COPILOT_CLOUDFLARED_TOKEN tunnel token 覆寫 cloudflaredTunnel.token。
COPILOT_CLOUDFLARED_BINARY 名稱或路徑;預設為 PATH 上的 cloudflared 覆寫 cloudflaredTunnel.binary。
COPILOT_TUNNEL_MARKER_HEADERS 以逗號分隔的標頭名稱 除了 cf-ray 之外,讓請求被視為經由 tunnel 而來的其他標記標頭:session worker 路徑保護會拒絕這種請求,而它帶的錯誤 token 會計入登入鎖定。0.9.11 新增 會加到 config.json 的 tunnelMarkerHeaders 上,而不是被它取代:tunnelMarkerHeaders: [] 不再會關閉這個變數。

供應商 #

GitHub Copilot #

CLI 如何被找到,見 GitHub Copilot。

變數 值 / 預設值 作用
COPILOT_SDK_PATH 資料夾 SDK 引擎的 worker 載入的 copilot-sdk 資料夾,取代套件快取中最新 CLI 旁邊的那一個。中繼自己的模型清單和 session 匯入不會讀取它。
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 token 用於 Check Usage(檢查用量)中的 Copilot 卡片,取代 gh auth token 的結果。會先讀取 GH_TOKEN。
COPILOT_SESSION_STATE_DIR 資料夾;預設為 ~/.copilot/session-state Copilot CLI 的 session 狀態資料夾,如果它在別的地方。只有在該資料夾存在時才會使用。

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 的設定資料夾:登入資訊,以及查找 session 資料夾的位置。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 登入 token Claude Code 會讀取它,取代 CLAUDE_CONFIG_DIR 中的登入資訊。0.9.17 新增 Claude worker 在 tmux 下也會收到它。哪些 worker 會收到它:見 Claude Cloud。
ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN Anthropic 金鑰或 token 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 session,以及 0.9.17 新增 每個 DeepSeek session,依 Claude background command limit(Claude 背景指令上限)設定它們(分別為該上限、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 由 OAR 依 Claude background command limit 設定,和 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 以儲存的金鑰連到 https://api.anthropic.com。
CLAUDE_CODE_EFFORT_LEVEL、CLAUDE_CODE_SUBAGENT_MODEL、CLAUDE_CODE_SUBAGENT_MODEL_FORCE、CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL 忽略:OAR 會依對話設定 effort 和模型。
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 忽略:它會讓 Claude Code 離開 plan 模式,並在沙箱中執行每個 shell 指令。

Claude Cloud #

見 Claude Cloud。

變數 值 / 預設值 作用
CLAUDE_CODE_OAUTH_TOKEN Claude 登入 token 中繼和它的雲端 worker 用它來使用 Claude Cloud,取代 CLI 的憑證檔。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 伺服器會為之後每個 session 保留它。在只用這個 token 登入的主機上,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 由 OAR 依 Claude background command limit 設定,和 Claude 一樣。
CLAUDE_CONFIG_DIR 忽略。Claude Code 把狀態保存在資料目錄中的 deepseek-claude(資料夾與 session)。
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 會依對話設定 effort 和模型(Reasoning effort、模型)。
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 忽略:它會讓 Claude Code 離開 plan 模式、改用它的預設模式,使 agent 能夠編輯檔案,並在沙箱中執行每個 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 和它的 agent 所執行的指令都看不到它們。金鑰本身會作為 Claude Code 連到 DeepSeek 端點的 token 傳給它,所以 agent 的指令可以讀到金鑰;見金鑰存放在哪裡。你的其他變數會像傳到 Claude 對話一樣傳到它。

Cursor #

Cursor API 金鑰儲存在 Settings → Providers → Cursor(設定 → 供應商 → Cursor)中。中繼環境中的 CURSOR_API_KEY 不會被使用:中繼會把儲存的金鑰交給它的 worker。見 Cursor。

變數 值 / 預設值 作用
CURSOR_SESSION_TOKEN 儀表板 session token 用於即時方案進度條(Check Usage)。在面板中儲存的 token 優先於它,而它優先於 Cursor App 的登入。
CURSOR_AGENT_STORE_DIR 資料夾;預設為中繼資料目錄中的 cursor-agents(0.9.14 新增;之前是中繼伺服器資料夾中的 data/cursor-agents) 保存每個對話 agent 狀態的位置。

Grok #

見 Grok。

變數 值 / 預設值 作用
GROK_CLI_COMMAND 程式名稱或路徑;預設為 grok 用於登入、模型探索和 worker 的 Grok 程式。沒有設定時會讀取 GROK_COMMAND;中繼會把其中任一個以 GROK_CLI_COMMAND 的名稱交給 worker,在 tmux 下也一樣。從面板安裝或更新時會把程式存進 config.json,從此以後每次啟動時,它都優先於這個變數。
GROK_ALWAYS_APPROVE 0;預設為 1 0 會不帶 --always-approve 啟動 Grok;OAR 接著會以允許一次回應每個權限請求。在 tmux 下會傳給 worker。
XAI_API_KEY xAI 金鑰 由 Grok CLI 讀取,不是由 OAR 讀取,作為它登入的替代方式。帳戶列只認得透過 CLI 完成的登入。不會傳給在 tmux 下的 worker。

不是給你用的 #

原始碼和記錄中還會出現其他名稱。它們不是設定:stub 和測試用的 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,以及其他由中繼依 OpenAI 設定填入的 COPILOT_PROVIDER_*,還有 0.9.17 新增 由中繼依 DeepSeek 設定填入的 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL 和 DEEPSEEK_CLAUDE_CONFIG_DIR,以及 0.9.18 新增 由中繼依 Claude API 設定填入的 OAR_CLAUDE_API_KEY 和 CLAUDE_API_RELAY_MODEL;這些金鑰會透過只有擁有者能讀取的檔案傳給在 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。其餘的請不要動。