雲端環境
為 Codex Cloud 中的任務建立、設定和共享可複用的環境
Codex Cloud 在雲端執行程式設計任務,因此即使你的 電腦處於睡眠狀態,工作也能繼續。你可以在網頁版、移動端或桌面應用中使用它來編輯 程式碼、執行命令和檢視結果。
雲端環境 是任務使用的可複用設定,包括儲存庫、 依賴項、工具和存取設定。Codex 會檢查你的儲存庫, 準備環境設定,並與你一起測試。每個新任務都會基於已發布的環境獲得獨立的 工作區。
入門介紹請參閱 Codex Cloud 概述。
在 Codex Cloud 中啟動任務
在網頁版或桌面應用中,選擇工作位置 > 雲端, 然後選擇一個已發布的環境。在移動端,開啟 Codex 並選擇 已發布的環境。描述你希望 Codex 完成的工作,然後傳送請求。 如果需要新的設定,請在網頁版或桌面應用中建立環境。
Enterprise 管理員可以在推出 Codex Cloud 之前檢視工作區存取權限 。
建立和發布環境
請在網頁版或桌面應用中新建環境。 使用你的 ChatGPT 帳號登入:
- 在新任務中,選擇工作位置 > 雲端,開啟選擇環境, 然後選擇建立環境。
- 選擇要檢出的 GitHub 儲存庫。如果出現提示,請連線 GitHub。
- 選擇開始使用。Codex 會檢查儲存庫、安裝依賴項 和工具,並測試工作流程。
- 出現提示時,提供缺少的存取權限或資訊。你也可以指定 特定版本、命令或服務。
- 檢視設定報告、設定和檔案。完成尚未完成的工作, 儲存更改,然後選擇發布。
- 出現環境已發布 後,選擇啟動新任務,並 描述你希望 Codex 完成的工作。
你也可以從設定 > Codex Cloud > 環境 > 建立環境 開始。
自定義安裝和啟動
Codex 會從你的儲存庫中識別執行時、軟體包版本、工具和服務。 在對話中完善設定即可;你無需自行編寫 安裝指令碼。
Codex 可以將經過測試的設定記錄在兩個欄位中:
- 安裝指令碼: 用於安裝依賴項和準備開發資源的命令。
- 啟動技能: 用於啟動服務並檢查服務是否就緒的指令。
複用和更新已儲存的狀態
- 新任務: 從已發布環境中準備好的檔案系統開始。
- 現有任務: 繼續使用自己儲存的檔案,包括未提交的 更改和已安裝的工具。
- 儲存庫重新整理: 在後臺自動執行,保留 依賴項快取,不重新執行安裝或啟動命令。
要更新可複用的設定,請開啟設定 > Codex Cloud > 環境。 在環境的 … 選單中,選擇編輯。描述更改, 讓 Codex 準備並測試,儲存更改,然後選擇重新發布。啟動 新任務以使用更新;現有任務會保留各自的狀態。
提交重要工作,或儲存你需要的輸出。已儲存的狀態不能替代 版本控制。
設定環境變數和網路敏感資訊
Codex 會識別缺少的設定,並向你詢問無法推斷的值。 在環境設定中,選擇環境變數 或 網路敏感資訊 旁邊的管理。選擇每個值的提供方式:
| 設定 | 用途 | 提供方式 |
|---|---|---|
| 環境變數 | 程式必須直接讀取的值 | 直接傳遞給環境中的程式。 |
| 網路敏感資訊 | 傳送到特定 HTTPS 服務的憑據 | 程式收到佔位符;代理會在發往允許目標地址的請求中將其替換為真實值。 |
對於網路敏感資訊,請設定鍵、值 和允許的域名。使用的 鍵必須與任何直接傳遞的變數不同。替換機制適用於通過 443 埠傳送的 HTTPS 請求, 在設定和任務執行期間均有效;它不會將原始憑據放入本機程序或 檔案。
儲存歸環境所有的網路敏感資訊會將其目標地址新增到受限的 網際網路存取範圍。直接傳遞的變數和個人值不會新增目標地址。 測試前請檢視已儲存的網路策略。 工作區要求請參閱智能體安全。
提供個人值
使用個人保險庫儲存你自己的環境變數和網路敏感資訊, 供工作區中的雲端環境使用。
共享環境可以要求每個人從自己的 帳號提供值。共享環境會共享這些要求,而不會共享你的 個人憑據。
出現提示時,在添加個人敏感資訊 中輸入必填值,然後選擇 儲存並啟動。可選值可以留空。
要提前管理這些值:
- 開啟設定 > Codex Cloud,然後選擇個人保險庫 選項卡。
- 選擇新增,在類型 下選擇環境變數 或網路敏感資訊, 然後輸入匹配的鍵 和你的值。
- 在適用範圍 下,選擇所有環境 或指定環境, 然後選擇儲存。
只有被請求的值才會傳遞給任務。針對特定環境設定的值 優先於通用預設值。個人網路敏感資訊使用環境的 允許目標地址,並以相同方式替換佔位符。
在 Enterprise 工作區內共享
共享準備好的設定,讓同事可以基於它啟動自己的任務:
- 開啟環境設定。
- 在隱私 > 誰可以使用 下,選擇你的工作區。
- 儲存更改。如果尚未發布環境,請將其發布。
在誰可以使用 下選擇僅自己,即可將環境保持為私有。 每個任務都有獨立的工作檔案;擁有設定的存取權限並不意味著可以存取 他人的任務,也不意味著擁有編輯環境的權限。
共享前,請查看準備好的檔案和歸環境所有的憑據。雲端 身份和 VPN 連線也可以提供共享的服務存取權限。 儲存庫存取權限和個人連線取決於執行任務的帳號。
在雲端使用 Codex 控制任務存取權限。管理工作區環境 控制建立和編輯與工作區共享的環境的權限。請參閱 角色和工作區權限。
智能體安全
環境的網際網路存取設定定義了其 VM 可以存取哪些域名。VPN 設定將該 VM 連線到私有 網路上的服務。
在 Enterprise 工作區中,管理員使用 智能體安全設定工作區對 智能體行為、受管執行環境的網路連線以及支援的 工具使用的要求。這些要求與每個環境中儲存的域名設定 共同生效。全域策略和支援的 Codex Cloud 覆蓋設定請參閱智能體安全。
連線服務
設定對工作流程所需的套件來源、API 和其他服務的 存取權限:
- 在環境設定中,啟用允許 Codex 存取網際網路。
- 在允許的域名 下,選擇包管理器 或僅自定義域名, 然後在額外允許的域名 下新增所需的主機。當 工作流程需要更廣泛的存取範圍時,使用全部(無限制)。
- 儲存,並在設定期間測試服務。發布或重新發布,然後在新任務中驗證 存取是否正常。
工作區要求請參閱智能體安全。允許存取某個 目標地址並不會提供憑據,也不會授予該服務中的權限。
包管理器預設包含的域名
包管理器 預設允許存取以下套件來源、儲存庫和 下載主機:
- npm 和 Yarn:
registry.npmjs.org,registry.yarnpkg.com - PyPI 和 PyTorch:
pypi.org,files.pythonhosted.org,download.pytorch.org,download-r2.pytorch.org - Rust:
crates.io,index.crates.io,static.crates.io,static.rust-lang.org - Go:
proxy.golang.org,sum.golang.org - Maven 和 Gradle:
repo.maven.apache.org,repo1.maven.org,plugins.gradle.org,plugins-artifacts.gradle.org,services.gradle.org,downloads.gradle.org - Bazel:
bcr.bazel.build,mirror.bazel.build - Buf:
buf.build - CPAN:
cpan.metacpan.org - Ubuntu 和 Debian 儲存庫:
archive.ubuntu.com,security.ubuntu.com,ports.ubuntu.com,ppa.launchpadcontent.net,deb.debian.org,security.debian.org - 供應商儲存庫:
packages.microsoft.com,apt.buildkite.com,developer.download.nvidia.com,deb.nodesource.com - GitHub 原始碼、歸檔、發布版本和 LFS:
github.com,codeload.github.com,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,release-assets.githubusercontent.com - 其他下載:
dl.google.com,pkgconfig.freedesktop.org
對於已登記的根域名,Codex 也允許存取對應的 www 主機名。
其他子域名需要單獨新增允許域名條目。請在額外允許的域名 下新增
依賴項所需的其他主機。
對於通過公共網際網路存取、且按源 IP 篩選連線的服務,請使用智能體出站 IP 資料來源。 允許所有已公佈的地址範圍,每天檢查資料來源,並在範圍變化時更新服務的 允許列表。這些地址範圍由多個客戶共享;請保留 服務的身份驗證和授權控制。
私有網路連線(VPN)
通過 VPN 連線,讓雲端任務存取私有網路上的內部 API、套件來源以及其他 HTTP 或 HTTPS 服務。
- 開啟環境的高階 > VPN 設定,然後選擇新增。
- 輸入 VPN 供應商提供的連線憑據。
- 在 VPN 的存取規則和環境的 網際網路存取設定中允許所需的目標地址。
- 儲存,然後發布或重新發布。啟動新任務並測試服務。
目前支援的 VPN 供應商是 Tailscale。建立 Tailscale 身份驗證金鑰時,請同時啟用可複用 和臨時。可複用金鑰允許新的 雲端任務 VM 加入你的網路。Tailscale 會在臨時 裝置離線後自動將其移除。我們計劃支援更多 VPN 供應商。
支援私有 IPv4 子網路由。任務可以通過 Tailscale 分流 DNS 和 MagicDNS,使用主機名存取私有服務。
如果服務使用組織內部的 DNS,請在 Tailscale 管理控制台設定分流 DNS,
將內部域名的查詢傳送到你的 DNS 伺服器。使用服務的完整限定主機名,
例如 api.corp.example.com,且該主機名必須解析為 IPv4 地址。
環境的網際網路存取設定和 Tailscale 存取規則也必須允許該目標地址。
共享環境中的任務使用該環境設定的 VPN 身份。
使用 OIDC 存取雲資源
OpenID Connect(OIDC)允許任務取得用於存取雲 資源的短期憑據。你的組織需要與雲供應商設定可信關係,並 授予該身份工作流程所需的權限。
- 開啟已儲存環境的高階 > OIDC 設定。
- 選擇新增,然後選擇可用的連線,或選擇 建立連線…,為支援的供應商建立連線。
- 對於新連線,輸入供應商的身份詳細資訊並建立連線。 在供應商端,使用顯示的 簽發者(Issuer)、受眾(Audience)、 主體(Subject) 或宣告條件設定可信關係,並授予資源權限。
- 確認連線已關聯,並檢視其別名。儲存,然後發布 或重新發布環境。
- 啟動新任務,分別測試一項允許的操作和一項被拒絕的操作。
不同供應商的設定方式有所不同,且只能關聯受支援的連線。 存取權限由該身份的權限決定;你個人在供應商端的權限 不會轉移給它。請在網路策略中單獨允許所需的供應商端點和服務 目標地址。
儲存關聯或別名更改,即可在設定期間應用;發布或 重新發布後,新任務才會使用這些更改。編輯共享身份連線可能 影響使用它的其他環境。
Enterprise 工作區可申請使用 OIDC。請聯絡你的 OpenAI 客戶團隊啟用此功能。
執行和返回任務
選擇一個已發布的環境,並描述你的目標。Codex 會使用其中的 儲存庫和工具來編輯檔案、執行命令和檢查工作。 提交或建立PR之前,請檢視更改和測試結果。
在網頁版或移動端繼續
在網頁版中,選擇工作位置 > 雲端,然後選擇環境。在移動端中, 開啟 Codex 並選擇可用的環境。請在網頁版或桌面應用中 新建環境。
重新開啟同一個任務,即可跨裝置繼續工作。新任務會基於 已發布的設定開始獨立的工作。即使你的電腦處於睡眠狀態,Codex Cloud 中的任務也能 繼續執行。
從 Slack 或 Microsoft Teams 啟動任務
在啟用了雲端委派的 Enterprise 工作區中,在
Slack 或 Microsoft Teams 中請 @ChatGPT 處理儲存庫。Codex 會使用對話
上下文,選擇一個與工作區共享且執行任務的
帳號可以使用的環境。你可以在提示詞中指定首選環境或新增
指導說明。
對於 Slack,啟用了 Codex Cloud 基於角色的存取控制的工作區必須同時向 部署的服務帳號和發起請求的 使用者授予 Codex Cloud 存取權限。請參閱為 Slack 啟用 Codex Cloud 瞭解管理員設定方法。
完成所有連線和審批提示,然後在 對話中檢視結果。使用同一個已連線的帳號繼續跟進,即可繼續任務; 其他參與者的請求不會自動繼續你的任務。
請參閱在 Slack 和 Teams 中管理 ChatGPT 瞭解工作區設定,並參閱在 Slack 中使用 ChatGPT瞭解 Slack 任務控制功能。
VM 規格
每個雲端任務都在具有以下預設資源的 VM 中執行:
| ChatGPT 套餐 | vCPUs | 記憶體 | 磁碟空間 |
|---|---|---|---|
| Plus, Edu Plus | 2 | 8 GiB | 8 GiB |
| Pro, Business, Enterprise | 4 | 16 GiB | 32 GiB |
| Edu, Edu Pro | 4 | 16 GiB | 32 GiB |
預設情況下,從你最後一次 開始一個輪次或恢復任務起,任務儲存的 VM 狀態最多可在七天內恢復。
Enterprise 可使用更大的 VM 和自定義規格。請聯絡你的 OpenAI 客戶團隊,瞭解可用設定和價格。
當前限制
雲端環境目前尚不支援以下功能, 我們已將其列入路線圖:
- 電腦和瀏覽器操作
- GitLab 和自託管的 GitHub Enterprise Server
儲存在儲存庫中的技能可用於雲端任務。本機電腦中的個人技能 不會同步到雲端環境。
排查設定和執行時存取問題
設定失敗或缺少必要工具
檢視設定對話,找到失敗的命令。請 Codex 診斷 錯誤,並在修復後重新執行命令。例如:“安裝 pnpm 並 執行專案測試。”
- 如果初始設定失敗,選擇重試,使用該設定會話中 已選擇的儲存庫再次嘗試。
- 如果修復需要更改原始檔、軟體包清單或鎖檔案, 請在程式設計任務中完成更改,然後返回設定流程。
Codex 驗證設定後,發布或重新發布環境。
軟體包下載或 HTTPS 請求失敗
分別檢查目標主機名和身份驗證:
- 確認環境的
網際網路存取設定允許存取該主機。對於位於
packages.example.com的私有套件來源,請檢查這一確切的主機名。如果下載還使用downloads.example.com,也需要允許存取該主機。 - 檢查包管理器或客戶端設定的 URL 和憑據。 允許存取某個域名並不會授予該服務的存取權限。
- 如果身份驗證使用網路敏感資訊,請檢查其允許的域名 是否包含目標地址,以及請求是否通過 443 埠使用 HTTPS。
- 在 Enterprise 工作區中,請管理員結合 環境設定,檢查適用的 智能體安全要求。
儲存所有設定更改,並在設定期間測試請求。發布或 重新發布,然後在新任務中驗證存取是否正常。
缺少必需的值或該值無法使用
檢查你是否將值新增到了環境設定中的正確位置:
- 環境變數: 用於程式需要直接讀取的值,
例如
APP_MODE=development。 - 網路敏感資訊: 用於傳送到允許存取的 HTTPS 服務的憑據,例如私有套件來源令牌。程式收到佔位符; 代理會在匹配的請求中替換為憑據。如果程式 需要讀取原始值,請將其新增到環境變數 中。
對於個人值,請檢查其鍵 是否與環境的請求匹配, 以及適用範圍 是否包含該環境。針對特定 環境設定的值優先於通用預設值。
請參閱環境變數和網路敏感資訊 瞭解設定說明。
VPN 已連線,但無法存取 HTTP 或 HTTPS 服務
- 確認客戶端使用環境設定的 HTTP/HTTPS 代理。
使用
curl測試時,請省略--noproxy,以便請求使用該代理。 - 檢查目標地址是否同時符合環境允許的域名和 VPN 的存取規則。
- 如果可以通過 IP 地址存取服務,卻無法通過主機名存取,請檢查 Tailscale DNS 設定。對於公司內部域名,請確認分流 DNS 指向正確的 DNS 伺服器,且該伺服器可通過 Tailscale 網路存取。 使用服務的完整限定主機名,並確認它解析為 IPv4 地址。
請參閱私有網路連線瞭解連線設定。
任務無法使用環境或其更新
在設定 > Codex Cloud > 環境 中檢查該環境。 如果顯示未發布 標記,請完成設定並選擇發布,使其 可供任務使用。
要更改已發布的環境,請開啟其編輯 流程,讓 Codex 準備 並測試更改,然後選擇重新發布。從更新後的環境啟動新任務, 即可使用新設定。現有任務會保留各自的工作狀態。