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

在 Codex CLI 中使用 Daybreak

透過本指南,在 Codex CLI 中啟用 Daybreak,完成自動化工作流程與 SDK 整合所需的設定,並排解存取或拒絕回應問題。 

更新日期:3 days 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 已開啟也一樣。模型未列在目錄中,本身不會導致請求無法成功。 

資安模型可能會另行逐步開放,供你在模型選擇器中選用。開放後,已使用支援版本的使用者無須再次下載,即可看到新開放的模型。重新開啟模型選擇器或重新啟動 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。OpenAI 的 Daybreak 專案存取權說明文件

  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)可從應用程式或開發工具執行安全掃描。它與上述一般用途的 Codex SDK 是不同的 SDK。

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

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

這篇文章有幫助嗎?