Codex 訂閱與客戶端
Codex 帳號授權、額度感知、客戶端設定與網關行為。
已有個人金鑰時,直接按下方設定客戶端。還沒有金鑰,先完成第一次使用,或請管理員提供登入帳號。
客戶端配置
- 在個人 API 金鑰頁面建立金鑰,選擇自己有權存取的資源群組。
- 使用該金鑰查詢
/v1/models,選取實際傳回的模型 ID。 - 在客戶端進程環境中設定
SUBLANE_API_KEY。 - 將以下欄位合併到使用者級
~/.codex/config.toml,取代實例位址和模型 ID。
model = "<model-id-from-your-account>"
model_provider = "sublane"
[model_providers.sublane]
name = "SubLane"
base_url = "http://127.0.0.1:8080/v1"
env_key = "SUBLANE_API_KEY"
wire_api = "responses"
requires_openai_auth = false
supports_websockets = true網路部署填入實際 HTTPS 位址。使用 HTTP/SSE 時將 supports_websockets 設為 false。
已經運行的桌面使用者端不會自動繼承另一個終端機中剛導出的環境變數。請在能夠讀取金鑰的環境中重新啟動客戶端,並確認它讀取了預期的使用者級配置。現有協議測試不等於完整的真實桌面使用者端驗收。
API 金鑰頁面提供設定指南;也可以選擇 CC Switch 導入。 CC Switch 使用自身的認證檔案儲存方式,不保留此處的環境變數與 WebSocket 設定語意。
**配置完成後:**發送一條訊息並確認回复,然後查看日常使用。以下的帳號、額度和協定細節可按需查閱。
新增帳號
在訂閱帳號頁面選擇新增帳號,使用瀏覽器授權或匯入 auth.json。支援 Codex CLI 的嵌套 tokens 結構及扁平匯出格式,不支援官方 API Key。
瀏覽器授權後,將完整的 http://localhost:1455/auth/callback?... 地址複製回表單。最後的 localhost 連線失敗是正常的,因為 SubLane 不監聽該回呼連接埠。
驗證連線會刷新並儲存帳號模型目錄。帳號可啟用、停用、重新授權或刪除。重新授權不能更換上游身分;刪除本機帳號會刪除其已儲存的憑證,但不會主動撤銷服務提供者的登入。
訂閱額度
帳號頁面顯示已啟用 Codex 帳號的額度視窗、剩餘百分比、重設倒數及觀測時間,以及上游提供的額外模型限制。可用重設卡數量獨立顯示:未提供時為「未知」,明確回傳零時才為 0。清單及選擇性兌換見重設卡。缺失額度保持未知;更新失敗保留舊快照並警告。到達重設時間不代表已補充額度,應重新整理使用量確認。
查詢時先讀取 https://chatgpt.com/backend-api/wham/usage,再讀取獨立的 https://chatgpt.com/backend-api/wham/rate-limit-reset-credits。兩個請求使用所選帳號的憑證,並共用 20 秒期限;每份回應最多讀取 128 KiB。重置卡片詳情請求失敗或未提供數量時,正常額度仍可用,並保留額度回應中已有的有效卡片數。額度回應與快照只保存規範化後的額度與數量,不保存卡片 ID、原始回應或憑證。
到達上游報告的重置時間不會憑空把額度還原為滿值,必須重新取得實際快照。新會話選擇會排除快照新鮮且主額度耗盡的帳號;已有綁定會話得到額度相關拒絕,不會自動換號。
額度快照持久化到 SQLite。新鮮資料最多復用兩分鐘;過期資料可先返回並後台刷新。主動刷新有冷卻,同一帳號的並發刷新共享一次上游請求。頁面只在刷新進行中輪詢本地狀態,空閒時不週期性請求服務商。
這些資料描述訂閱帳號額度;成員額度由用量分配單獨記賬,不是實際帳單。按比例分配使用設定的 Token 或內部金額總預算,直接計入請求上報用量。詳細路由規則見資源群組調度。
重設卡
工作空間管理員可查看及使用已啟用、無需重新授權的 Codex 帳號的重設卡,一般成員沒有此管理權限。定時使用及額度耗盡時使用預設均關閉;查看或重新整理清單不會消耗卡片。
設定與使用
- 開啟「訂閱帳號」,在 Codex 帳號資訊卡選擇重設卡設定,查看清單、可用數量及觀測時間。「未知」數量與 0 不同。
- 按需啟用定時使用、額度耗盡時使用,或同時啟用。單次計畫設定未來日期與時間;每日計畫設定時間;每週計畫設定星期與時間。確認畫面顯示的執行個體時區。
- 設定共用每日上限(1 至 100 張,預設 1 張),儲存後確認成功提示及下次排程時間。
- 手動使用前先儲存變更,再選擇立即使用一張;每次最多一張,結果在執行記錄中查看。僅開啟設定不會兌換。
清單與到期優先規則
清單顯示名稱、狀態、取得及到期時間,區分可用、兌換中、已使用、已過期、未知及不支援類型,不顯示原始卡片 ID。「下一張使用」代表自動選擇順序,不是手動選卡功能;有待確認兌換時隱藏該標記。數量大於零不保證有符合條件的卡片。
每次新的手動、定時或額度耗盡兌換均重新讀取清單,並明確傳入 credit_id。只選擇可用、受支援且未過期的卡;最早到期優先,沒有到期時間的最後使用;到期時間相同時,依取得時間由早到晚,再依穩定 ID 順序。無適用卡片或無法確認清單時跳過,不使用上游預設選卡。首次載入失敗與空清單分開顯示;重新整理失敗保留舊清單並警告,可再次重新整理卡片。
排程與限制
額度耗盡模式約每分鐘在背景檢查一次,要求新鮮額度資料、已知正數卡片數量及主額度明確不可用。100%、未知資料或網路錯誤本身不會觸發。手動和定時使用也要求新鮮額度及已知正數卡片數量。
兩種模式與手動使用共用每日上限,以執行個體時區的本地日期計算,成功及待確認兌換均占用次數。停用或需重新授權的帳號會跳過;錯過超過五分鐘的排程不補執行。夏令時間不存在的時刻會跳過,重複小時在同一本地日期只執行一次。更改時區會重算未來排程;關閉瀏覽器不影響背景執行。示範模式不執行自動任務,也不允許兌換。
結果與復原
| 情況 | 處理方式 |
|---|---|
| 無法取得卡片明細或無符合條件的卡片 | 重新整理卡片,檢查狀態及到期時間;未確認選卡就不兌換。 |
| 額度未知或無法讀取 | 重新整理額度並處理連線或授權問題。 |
| 達到每日上限 | 等待下一個本地日期,或確認需要後提高上限並儲存。 |
| 結果待確認 | 核對待確認結果;確認前不會發起新的兌換。 |
服務商決定帳號資格及重設範圍。兌換使用 POST /backend-api/wham/rate-limit-reset-credits/consume,結果包括 reset、already_redeemed、nothing_to_reset、no_credit。成功後重新整理額度及卡片數,不清除其他網關限制,也不保證解除所有限制。
傳送前持久化 redeem_request_id 與選中的卡片 ID;逾時或未知回應保留待確認狀態。核對時,即使清單或到期狀態改變,也重用同一組參數;數量變化不能證明兌換成功。舊版待確認請求繼續省略原本未傳入的 credit_id。結果明確後清除選中卡片 ID;額度快照、公開執行記錄及稽核輸出均不包含該 ID,也不保存憑證、原始回應或服務商個人資料。刪除帳號會刪除設定與記錄。
管理員瀏覽器介面:GET /api/accounts/{id}/resets 讀取設定與記錄,GET /api/accounts/{id}/resets/cards 讀取正規化清單,PUT /api/accounts/{id}/resets 儲存設定,POST /api/accounts/{id}/resets/consume 或 POST /api/accounts/{id}/resets/retry 兌換或核對。介面要求瀏覽器工作階段及工作空間角色,網關 API 金鑰不能授權。查詢重用憑證、代理及帳號生命週期檢查,排除個人資料識別碼、頭像網址及原始回應。服務商內部協定可能改變;合成測試不代表已驗證真實帳號資格或線上兌換。
設定變更及手動成功操作會寫入管理稽核,自動結果保存在有界執行記錄中。
憑證加密與刷新
帳號存取令牌、刷新令牌和 ID Token 使用 AES-256-GCM 加密。實例在資料庫旁建立私有的 credentials.key,它不是初始化密碼,也不需要手動填寫。
資料庫和金鑰要一起備份。已有加密資料時,金鑰缺失、不符或無效會阻止啟動,無法透過重新產生金鑰恢復存取。
SubLane 是唯一刷新所有者:先持久化輪換後的憑證,然後發布給請求。上游 401 最多觸發一次刷新和同一帳號的一次重試,並發請求復用已刷新的結果。
網關介面
| 路徑 | 作用 |
|---|---|
GET /v1/models | 傳回金鑰所在資源群組允許的模型目錄 |
POST /v1/responses | Responses JSON 或 SSE |
POST /v1/responses/compact | Codex 非流動式壓縮 |
GET /v1/responses,升級 WebSocket | 連續對話與連線內上下文 |
POST /v1/chat/completions | Chat Completions 協定轉換 |
HTTP 請求必須攜帶完整輸入;HTTP previous_response_id 被拒絕,避免遺失上下文。 WebSocket 使用有界的連結內歷史,未知續接 ID 需要重新提交完整歷史。每輪都重新校驗成員、金鑰、資源群組和模型權限。
請求體、WebSocket 訊息和重建後的上下文預設限制為 128 MiB,可透過 SUBLANE_MAX_REQUEST_BODY_MB 調整;響應體和流事件分別限制為 8 MiB。配置方式見部署指南。
已有會話綁定的帳號停用或刪除時不會自動取代。主動換模型時,攜帶完整可重播歷史且原帳號不支援新機型可重新選取帳號;上游續接仍保留原綁定,詳見模型路由。其他有意切換帳號的情況應開啟新會話。請求取消會釋放上游工作和並發配額。
版本與驗證
Codex 發現模型、額度元資料及轉送使用實例配置的有效客戶端版本。目錄過少或為空時,檢查系統設定,過舊的客戶端版本可能只能取得隱藏或不完整的模型清單。
自動化測試使用合成憑證和本地模擬上游。 Codex CLI 0.152.1 曾透過模擬上游的 HTTP/SSE 與 WebSocket 測試;真實訂閱授權、真實模型請求與桌面端需另外驗證。不要把安全上限或空閒資源觀測作為吞吐和記憶體承諾。