OpenAI
此頁面由機器翻譯。查看原文英文文章。

在 Codex CLI 中使用 Daybreak

本指南說明如何在 Codex CLI 中啟用 Daybreak、設定自動化工作流程及 SDK 整合,以及排解存取或模型拒絕回應的問題。 

更新日期:21 hours ago

請注意,你需要升級至 Codex CLI 0.163.0 或更新版本,才能使用這些變更。CLI 升級由你自行決定:已安裝的版本在更新前會維持目前的運作方式。

  • 如果你的自動化流程會安裝 @openai/codex@latest,下次安裝或更新時便可能套用此變更。如果你透過 npm 全域安裝了 Codex CLI,請執行 npm install -g @openai/codex@latest,然後執行 codex --version 以確認升級。

  • 如要延後套用此變更,請將版本固定為 @openai/codex@0.162.0。單次使用 @latest 安裝後,該版本不會自行更新。固定使用舊版本的工作流程會維持原有的運作方式。

  • 如使用 TypeScript 整合,請更新 @openai/codex-sdk 及其隨附的執行環境。如使用 Python 整合,請更新 openai-codex 及其 Codex 執行環境。單是更新全域安裝的 CLI,不一定會更新 SDK 的執行環境。如果你設定了自訂的可執行檔路徑,也請更新該可執行檔。

如果模型目錄可正常使用,但未收錄手動設定的模型 ID,CLI 和 Codex Desktop 仍會沿用原有的自動處理方式,即使 Daybreak 已開啟亦然。模型 ID 未列於目錄中,本身並不會妨礙請求成功執行。 

模型選擇器中的網絡安全模型可能會另行逐步開放。開放後,已使用支援版本的用戶無需再次下載,即可看到新推出的模型。請重新開啟模型選擇器或重新啟動 Codex,以重新整理清單。

在互動式 CLI 中啟用 Daybreak

  1. 使用平常的驗證方式啟動 Codex。

  2. 如要開啟 Daybreak,請輸入 /daybreak。

  3. Codex 會顯示 Daybreak on. Applies to new turns.

  4. 這會套用至目前的對話串,並儲存為新工作階段的預設設定。

  5. 如要關閉 Daybreak,請再次執行相同命令(/daybreak)。

在無介面 CLI 中啟用 Daybreak

無介面工作流程不使用互動式使用者介面,通常會透過指令碼、排程工作或 CI 中的 codex exec 執行。此模式不會顯示互動式「啟用 Daybreak」(/daybreak)提示。你可以改用以下方式:

  1. 在指定的 CLI 執行中啟用 Daybreak:為每個需要減少拒絕回應的指令加上 -c daybreak=true。例如,你可以輸入:

codex exec -c daybreak=true "Review the changes in this repository."

  1. 保留現有的提示詞及其他指令選項。每次需要使用 Daybreak 時,都要在呼叫中加入此設定,包括指令碼、排程工作及 CI 設定中的指令。

  2. 讓新的 CLI 工作階段及執行預設使用 Daybreak:在 Codex 載入的設定檔中加入 daybreak=true。

  3. 預設的使用者設定檔為 ~/.codex/config.toml。如果你的自動化流程設定了 CODEX_HOME,請改用 $CODEX_HOME/config.toml。請將此設定放在最上層,而非 [features] 等區段內。

  4. 請在自動化流程實際執行的環境中進行變更。更新手提電腦上的設定,不會更新 CI 執行器或遠端電腦上的設定。

  5. 此設定亦適用於使用同一設定檔的新互動式工作階段。恢復的工作階段及分支工作階段會保留已儲存的 Daybreak 選項;新的預設設定不會取代該選項。

  6. 請注意,命令列設定會在該次呼叫中覆寫已儲存的設定。因此,你可以在設定檔中保留 daybreak = true,並在個別執行中使用 -c daybreak=false。

透過代理使用推論服務供應商時啟用 Daybreak

你可以在 Codex CLI 中使用 Daybreak,同時透過現有的代理轉送推論請求。Codex 會另外查詢模型目錄,以確認哪些模型支援你的專案使用 Daybreak。

開始前,請確保 Codex CLI 中已設定可正常運作的代理供應商,並備有 OpenAI API 金鑰,且該金鑰所屬專案具有 Daybreak 及所需模型的存取權;另需使用 Codex CLI v0.167.0。有關專案 Daybreak 存取權的 OpenAI 文件

  1. 更新代理供應商設定:開啟 ~/.codex/config.toml,並找到代理對應的 [model_providers.<id>] 區段。將以下範例的最後兩行加入該區段。保留現有的供應商 ID、代理 URL 及驗證設定。


    [model_providers.proxy]

    name = "Proxied with Cyber"

    base_url = "https://<your-proxy>/v1"

    model_catalog_url = "<https://chatgpt.com/backend-api/codex/models>"

    capabilities.cyber_access_programs = true

    如果設定檔中已有 [model_providers.<id>.capabilities] 區段,請將 cyber_access_programs = true 放入該區段,並將 model_catalog_url 保留在上一層的供應商區段中。Codex 設定參考文件

  2. 為目錄查詢設定驗證:選擇與 CLI 所用憑證相符的選項。

    1. 如果 Codex 使用 OpenAI API 金鑰,請保留步驟 1 中的 OpenAI 目錄 URL。使用已啟用 Daybreak 的專案所屬金鑰執行 Codex,讓它能直接向目錄進行驗證。

    2. 如果 Codex 使用代理的憑證,請將 model_catalog_url 設為代理上目錄路由的完整 URL。設定該路由以執行以下操作:

      1. 使用慣常的代理憑證驗證 CLI 請求。

      2. 使用已啟用 Daybreak 的專案所屬的 OpenAI API 金鑰,將請求轉送至 https://chatgpt.com/backend-api/codex/models。

      3. 將目錄回應傳回 Codex。

  3. 啟用 Daybreak:使用代理供應商啟動新的 Codex CLI 工作階段。選取符合 Daybreak 使用資格的模型,然後輸入 /daybreak 以啟用。

    1. 如果無法使用 Daybreak,請先檢查目錄查詢。即使目錄請求失敗,推論仍可能成功。請確認請求使用預期專案的金鑰送達 OpenAI,且該專案同時具有 Daybreak 和所選模型的存取權。

透過 TypeScript SDK 啟用 Daybreak

透過客戶端設定傳遞 Daybreak 設定:

import { Codex } from "@openai/codex-sdk";

const codex = new Codex({

  config: { daybreak: true },

});

const thread = codex.startThread();

const result = await thread.run("Review the changes in this repository.");

console.log(result.finalResponse);

使用 daybreak: false 關閉 Daybreak,並採用一般的拒絕回應機制。保留現有的驗證設定。

透過應用程式伺服器或 Python SDK 啟用 Daybreak

1. 從 model/list 讀取所選模型的 availableAccessPrograms.cyber 值,然後在 turn/start 參數中設定 cyberAccessProgram。

a.如使用主系列模型,且帳戶擁有 Daybreak Blue 存取權限:

{ "cyberAccessProgram": "daybreakBlue" }

b.如使用網絡安全模型,且帳戶擁有 Daybreak Red 存取權限:

{ "cyberAccessProgram": "daybreakRed" }

c.如要採用一般的拒絕回應機制:

{ "cyberAccessProgram": "standard" }

2. 在每個需要套用此選擇的回合中加入該參數;不要假設省略參數就會關閉 Daybreak。直接連接應用程式伺服器的客戶端,必須在初始化時啟用 experimentalApi 功能,才能使用此參數。

3. Python SDK 的低階 CodexClient 可傳遞相同參數:

from openai_codex.client import CodexClient

with CodexClient() as client:

client.initialize()

thread = client.thread_start()

turn = client.turn_start(

thread.thread.id,

"Review the changes in this repository.",

params={"cyberAccessProgram": "daybreakBlue"},

)

client.wait_for_turn_completed(turn.turn.id)

4. 此範例假設所選模型可使用 Daybreak Blue。Python 客戶端預設會啟用實驗性 API 功能。單憑已儲存的對話串偏好設定,並不會為應用程式伺服器的回合選定存取計劃。

如果你在這些變更推出前已新增本機模型目錄

如果之前使用 API 金鑰登入時未顯示預期的模型,你可能曾在 config.toml 中使用 model_catalog_json 新增本機目錄。Codex 會使用該本機檔案,而非自動目錄,因此你的模型清單可能會過時。當你的環境支援自動目錄後,請按照以下步驟切換回去:

  1. 開啟 config.toml。如使用 Codex CLI,請開啟 ~/.codex/config.toml(如果已設定 CODEX_HOME,則開啟 $CODEX_HOME/config.toml)。在 Codex Desktop 中,前往設定 > 配置,然後選取開啟 config.toml。

  2. 暫時停用本機目錄。在 model_catalog_json 所在行的開頭加上 #,儲存檔案,然後使用相同的帳戶或 API 金鑰重新啟動 Codex。保留機構要求使用的所有目錄網址。

  3. 驗證你的存取權限。在 CLI 中啟動 codex,然後在工作階段內輸入 /daybreak。在桌面版中開啟進階模型選擇器,並開啟 Daybreak。如果你擁有 Daybreak Red 存取權限,請確認預期的網絡安全模型已顯示,且你能使用該模型傳送請求。

  4. 保留可正常運作的設定。如果驗證成功,請刪除已停用的那一行,並儲存檔案。如果驗證失敗,請移除 #、儲存檔案並重新啟動 Codex,以還原先前的設定。

排解 CLI 中的拒絕回應問題

  • 使用與自動化流程相同的憑證、模型和設定,執行一項具代表性的工作。

  • 如果無法使用 Daybreak,請確認以下事項:

    • 你的帳戶或 API 專案擁有 Daybreak 存取權限。

    • 所選模型支援 Daybreak。

  • 在互動式 CLI 中,請檢查 Daybreak 是否已開啟。當 Daybreak 可用但未開啟時,互動式 CLI 可能會顯示拒絕回應訊息:Daybreak is currently off. If you’re doing authorized security work, turn it on and try your request again.

    • 系統會顯示提示:Turn on Daybreak for your next request?並提供 Enable Daybreak 或 Not now 選項。

    • 選取啟用 Daybreak,為下一次請求開啟此功能,然後再次提交請求。請注意,被拒絕的請求不會自動重試;你必須再次提交請求。即使已開啟 Daybreak,部分請求仍可能被拒絕。

    • 選取暫時不要,讓 Daybreak 維持關閉。

  • 如使用自動化流程,請確認 daybreak=true 已傳遞至實際執行的 Codex 程序,且未被其他命令列設定覆寫。

在 Codex Security CLI 中使用 Daybreak

Codex Security CLI 使用 @openai/codex-security 進行安全掃描。其存取計劃選項與上述一般 Codex CLI 範例中的選項不同。

如使用 API 金鑰驗證,請使用已啟用 Daybreak 的 API 專案所屬的金鑰,並明確選取該專案獲准使用的計劃。若使用 Daybreak Blue:


npx @openai/codex-security scan . --auth api-key --cyber-access-program daybreak_blue

只有在專案獲准使用 Daybreak Red 時,才使用 daybreak_red;如需採用標準防護措施,則使用 standard。選取計劃並不會授予該計劃或額外模型的存取權。

有關驗證和掃描選項,請參閱 Codex Security CLI 參考文件。

在 Codex Security SDK 中使用 Daybreak

Codex Security TypeScript SDK(@openai/codex-security)可從應用程式或開發工具執行安全掃描。此 SDK 與上述一般 Codex SDK 並不相同。

請使用已獲批准的帳戶或 API 專案的憑證。部分網絡安全請求及受保護的掃描結果需要 Trusted Access for Cyber 存取權。安裝 SDK 或選取模型並不會授予 Daybreak 存取權。

有關支援的驗證方式、設定及掃描範例,請參閱 Codex Security SDK 指南。

這篇文章對你有幫助嗎?