附錄:環境變數
已安裝 1.1.1 環境的規範化 31 條約定,明確寫出歸屬、設定方式、機密性與程序邊界行為。
適用對象: 開發者、維運、整合方與發布工程師
這份附錄覆蓋什麼#
這是目前 ait-native 1.1.1 家族(ait、Agent worker、ait-server 和 ait-runner)已安裝程序環境的完整約定。它包含 31 個規範化名稱或有界 名稱族。這些條目來自三份機器可讀的執行時登錄檔,而不是在原始碼裡搜 AIT_ 字樣搜出來的。
整份約定就放在這一篇裡。每一行都寫明:哪個元件擁有這個值、由誰設定、 是不是機密,以及它會改變什麼。
- 使用者和維運類的值可以放進被拉起的程序環境裡。命令若暴露了同樣 的選擇,明確的命令列選項仍然優先。
- AIT 注入類的值會跨越受管的子程序邊界。使用者不應該靠設定它們去把 另一個 Task 或 CI 嘗試引到別處。
- 自動化類的值只屬於指名的、受支援的建置或發布邊界。
- 機密應該放進服務或 CI 的金鑰庫。不要提交、不要列印,也不要留在會被 儲存的命令列歷史裡。
ait-server 和 ait-runner 都不會自動載入專案的 .env 檔案。必須由 shell、服務管理器、容器執行時或 Agent 監管程序把設定好的值放進程序環境。
登錄檔口徑#
| 登錄檔 | 公佈的口徑 |
|---|---|
ait.environment-contract/v1 | 23 條 ait-core、CLI、Agent 與發布邊界條目。 |
ait.server.environment-contract/v1 | 7 條 server 條目。AIT_NATIVE_SERVER_DATA 和 AIT_PERFETTO_TRACE 已經歸 core 所有,所以 server 淨增 5 個新名稱。 |
ait.runner.environment-contract/v1 | 4 條 runner 條目。它的外部儲存庫名稱族裡包含了 core 那個具體的 AIT_EXTERNAL_CORE_REPO_ROOT 輸入,所以 runner 淨增 3 個規範化名稱。 |
| 公佈總數 | 31 個唯一名稱或有界名稱族。 runner 那個有界的外部 Repository 名稱族裡含有 core 的具體診斷成員,所以只算一次。 |
執行時、儲存庫與身份#
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_NATIVE_ACTOR | ait-core · 使用者或維運 · 非機密。 記入本地溯源和遠端請求的作者身份。 |
AIT_NATIVE_SERVER_DATA | ait-core 與 ait-server · 維運 · 非機密。 沒有傳 ait-server --data 時使用的持久 server 權威根目錄,server 感知型的 core 操作也會用到。放在持久儲存上。 |
AIT_REPO_ROOT | ait-cli · 使用者或監管程序 · 非機密。 用於程序發現的顯式儲存庫根。優先正常進入儲存庫目錄;只有呼叫方無法確定工作目錄時才用它。 |
AIT_RUNTIME_DATA | ait-core · 維運 · 非機密。 本地診斷、Snapshot 後設資料、status 快取和 server 感知型操作共用的執行時資料根目錄。 |
AIT_SERVER_TOKEN | ait-runner · 維運 · 機密。 runner 發往設定好的 ait-server 端點的可選 bearer 憑據。server URL 和 worker 身份仍然是 runner 的顯式命令列選項。 |
Agent worker 與整合憑據#
Agent worker 先選定一份帶型別的 worker 清單。下面這些環境值提供有界的 worker 引導引數和憑據——這些東西不適合直接放進普通的儲存庫內容裡。
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_AGENT_CONFIG_PATH | ait-agent-worker · 使用者或監管程序 · 非機密。 帶型別的 Agent worker 清單路徑。普通儲存庫的預設值是 .ait/agent-workers.json。 |
AIT_DISCORD_APPLICATION_ID | ait-agent-worker · 維運 · 非機密。 所選 worker 的 Discord 應用身份。 |
AIT_DISCORD_BOT_TOKEN | ait-agent-worker · 維運 · 機密。 所選 worker 的 Discord bot 憑據。 |
AIT_DISCORD_PUBLIC_KEY | ait-agent-worker · 維運 · 非機密。 用於校驗 interaction 請求的 Discord 公鑰。 |
AIT_LINE_CHANNEL_ACCESS_TOKEN | ait-agent-worker · 維運 · 機密。 所選 worker 的 LINE channel access 憑據。 |
AIT_LINE_CHANNEL_SECRET | ait-agent-worker · 維運 · 機密。 所選 worker 的 LINE 請求校驗金鑰。 |
AIT_OPENAI_API_KEY | ait-agent-worker · 維運 · 機密。 當所選 worker 走 OpenAI 邊界時,提供給它的 OpenAI 憑據。 |
AIT_SLACK_APP_TOKEN | ait-agent-worker · 維運 · 機密。 所選 worker 的 Slack app 級憑據。 |
AIT_SLACK_SIGNING_SECRET | ait-agent-worker · 維運 · 機密。 Slack 請求籤名校驗金鑰。 |
AIT_TELEGRAM_BOT_TOKEN | ait-agent-worker · 維運 · 機密。 所選 worker 的 Telegram bot 憑據。 |
AIT_TELEGRAM_OPENAI_API_KEY | ait-agent-worker · 維運 · 機密。 當該 worker 用單獨的 key 時,Telegram 專用的 OpenAI 憑據。 |
AIT_TELEGRAM_WEBHOOK_SECRET | ait-agent-worker · 維運 · 機密。 Telegram webhook 校驗金鑰。 |
server CI 記憶體接納#
這三個變數只屬於 server 持有的 CI 接納環節。Task worktree 的 RAM 放置 屬於儲存庫設定,在 task_worktree.memory_root 下面,不是程序環境設定。 它帶型別的欄位、macOS 上 8 GiB 的預設值、只讀診斷和回落到持久磁碟的 規則,都寫在 並行 Task 隔離。
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_NATIVE_SERVER_CI_RAM_MIN_AVAILABLE_BYTES | ait-server · 維運 · 非機密。 可選的確切空閒位元組下限,在把 server CI 接納到已驗證的 RAM 根目錄時生效。不設定就只做掛載校驗,不額外加下限。 |
AIT_NATIVE_SERVER_CI_RAM_RECLAIM_TARGET_BYTES | ait-server · 維運 · 非機密。 可選的回收後空閒位元組目標值。生效目標永遠不會低於接納下限。 |
AIT_NATIVE_SERVER_CI_RAM_ROOT | ait-server · 維運 · 非機密。 用於隔離 server CI 作業的絕對路徑、經過校驗的記憶體宿主根目錄。它必須位於持久 server 權威之外。 |
儲存與遠端操作調優#
這些是高階的有界控制項。取值非法時會走寫明的回落值,或者在擁有它的 邊界上校驗失敗;它們不會改寫已經存下來的物件。
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_OBJECT_PACK_CHUNK_MIB | ait-server · 維運 · 非機密。 object pack 寫入分塊大小,單位 MiB,取正數。不設定、非法或為零時用 8 MiB。 |
AIT_REMOTE_MUTATION_RESPONSE_DEADLINE_SECONDS | ait-core · 維運 · 非機密。 遠端變更的響應截止時間。普通變更預設 10 秒,Task Land 預設 30 秒;取值小於等於零時,僅關閉這一項響應截止時間。 |
AIT_REMOTE_MUTATION_SETTLE_POLL_SECONDS | ait-core · 維運 · 非機密。 遠端變更之後的對賬輪詢間隔。預設 0.25 秒。 |
AIT_REMOTE_MUTATION_SETTLE_WINDOW_SECONDS | ait-core · 維運 · 非機密。 變更之後的對賬視窗。預設 5 秒。 |
AIT_TREE_PACK_CHUNK_MIB | ait-server · 維運 · 非機密。 Tree pack 寫入分塊大小,單位 MiB,取正數。不設定、非法或為零時用 8 MiB。 |
受管程序邊界#
下面這些值在子程序裡能看到,但不是普通設定項。AIT 會用目前操作確切的 路徑或歸屬令牌把它們覆蓋掉。
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_EXTERNAL_<NAME>_REPO_ROOT | ait-runner 與 ait-core · AIT 注入名稱族 · 非機密。 runner 建立的、指向某個已鎖定外部儲存庫的路徑。<NAME> 是非空的規範化大寫 ASCII,可含數字或下劃線;core 的診斷用的是具體的 AIT_EXTERNAL_CORE_REPO_ROOT 成員。 |
AIT_RUNNER_ATTEMPT_ROOT | ait-runner · AIT 注入 · 非機密。 目前這次執行嘗試的確切 runner 私有根目錄。runner 的父級位置用 --attempt-root 選定;環境裡現成的值無法把子嘗試引到別處。 |
AIT_RUNNER_WORKSPACE | ait-runner · AIT 注入 · 非機密。 目前這次執行物化出來的確切工作區。 |
AIT_WORKSPACE_LOCK_OWNER_TOKEN | ait-cli · AIT 注入 · 機密。 只傳給共用目前工作區鎖、且已透過校驗的巢狀命令的不透明令牌。不要自己造,也不要打日誌。 |
診斷與發布邊界自動化#
| 名稱 | 歸屬、設定方、是否機密及行為 |
|---|---|
AIT_PERFETTO_TRACE | ait-core 與 ait-server · 使用者或維運 · 非機密。 在開啟 tracing 的程序中,選擇性採集 Perfetto trace 的非空輸出路徑。 |
AIT_SHARED_CARGO_TARGET_DIR | ait-release · 自動化 · 非機密。 受支援的原生髮布冒煙邊界所用的顯式共享 Cargo target 目錄。它不是通用的執行時儲存選擇器。 |
哪些是有意排除的#
發布清單裡的佔位符是由發布介面卡解析的 argv 模板 token,不是環境輸入。 工作流程裡區域性的 CI env: 別名、測試夾具、故障注入開關、生成的 ID、報告 標籤,以及只歸儲存庫建置或部署指令碼所有的值,同樣不在已安裝執行時約定的 範圍內。這些東西應該在擁有它們的工作流程或指令碼旁邊說明,而不是擺出來當 成使用者必須理解的設定項。
這條範圍規則讓這份附錄保持完整,又不至於把原始碼裡每一個 token 都變成 對外的設定承諾。