跳至主要内容

Codex 橋接

alc --codex <agent> 會啟動一個 loopback 轉接器,並把某一個 agent 的 session 指向它。一次 codex login 就夠 alc 啟動的每個 agent 一起用。Antigravity CLI 自己的模型仍用它自己的 Google 登入,再在旁邊多出 Codex 的模型(見在 Codex 登入上)。同一個橋接也能讓其他每個 agent,包括 Claude Code,跑在那個 Google 登入上:alc --agy <agent>(見 Antigravity)。

codex login
alc --codex claude
alc --codex opencode # or pi, copilot, goose, qwen, kimi
alc --codex agy # the Codex models in agy's own /model picker
Agent橋接提供給它的協定它怎麼選模型
Claude CodeAnthropic Messages/model 選單,session 中途也能換
OpenCode、Pi、Kimi Code CLIOpenAI Responses一個模型,啟動時選定
Copilot CLI、Goose、Qwen CodeOpenAI Chat Completions一個模型,啟動時選定
Antigravity CLI它自己的 Code Assist API,與它的 Google 模型並列/model 選單,session 中途也能換

Claude Code 與 Antigravity CLI 能在 session 中途切換,因為它們每次請求都會指明 模型與推理強度,所以 alc 兩者都不必釘在轉接器上。agy 是透過 CLOUD_CODE_URL 指向轉接器,每個強度列出一筆 Codex 模型;不是 Codex 模型的請求就繼續送往 Google。其他 agent 則是沿用它們各自處理 openai 這個 kind 的那套既有機制接上來,只是改指向轉接器、帶一個佔位用的 key —— 每個 agent 實際收到什麼,見支援的 agent。

模型​

Claude Code 會把這幾個列進它自己的 /model 選單:

模型適合的情境Codex 預設強度
gpt-6.1-solGPT-6.1 Sol。最新的主力模型,適合寫程式與日常工作,建議從這個開始low
gpt-6-astraGPT-6。適合複雜吃重的工作medium
gpt-6-solGPT-6。日常寫程式與代理式工作medium
gpt-5.6-sol上一代,適合複雜的專業工作low
gpt-5.6-terra上一代,日常寫程式的均衡選擇medium
gpt-5.6-luna上一代,快、便宜medium
gpt-6-lunaGPT-6。快、最便宜,適合快速修正與大量的例行工作medium

上游的最新細節可參考 OpenAI 的 GPT-6.1 Sol 說明與 GPT-6 Luna 說明。

橋接本身不保留任何允許清單:收到什麼 slug 就往上游送,由 chatgpt.com 決定, 所以 alc 沒有追蹤的模型,一樣可以用 --model 指名使用。這正是為什麼一個新模型 在 Codex 推出的那天就能用,而不是等 alc 追上的那天。

每一個 Claude 模型都變成 Codex 模型​

在 alc --codex claude 底下,沒有任何一個請求會送到 Claude 模型:/model 選單列出這七個,以及同步時新增的模型。Claude Code 所有的別名 —— opus、 sonnet、haiku、fable、best、opusplan —— 都會落在 Codex 模型上,而 指名完整名稱的 Claude 模型,則由同一級的 Codex 模型來回答。opus 與 fable 使用 GPT-6.1 Sol;haiku 與 small-fast 工作維持 GPT-6 Luna;sonnet 跟著 session 的起始模型。Claude Code 自己的背景工作也走同一條路,所以一個標題或 一份摘要花掉的是 Codex 的額度,而不是一個送去 Anthropic 的請求。背景 session有整張 表,一個別名一個別名地列出來。

推理強度​

/model 畫面的左右方向鍵可以移動強度滑桿,/effort 則能直接指定一個等級。 每個模型都接受 low、medium、high、xhigh 或 max。強度越高,模型思考的 空間越大,也越吃你的額度。

除了兩個 Luna 之外,每個模型都另外提供 ultra:原生的 alc codex 用得到,橋接 則不行。alc 會在啟動時把它降到 max 並明說,而不是讓請求在 session 進行到一半 才被拒絕。

Context window​

每個模型一開始用的是 Codex 自己給它的 window:GPT-6.1 Sol 是 500K token,其他 模型是 272K。它們每一個都能用到 872K,--context max 就是要這個:

alc --codex claude --context max # 只有這一次
alc config upsert codex --context max # Codex profile 的預設值

超過標準 window 之後,每一輪消耗方案額度的速度會變快。OpenAI 在 Codex 裡也把 較大的 window 寫成要自己選擇開啟(Codex 自己設定裡的 model_context_window), alc 也照同樣的方式處理:standard 是預設值,永遠不會寫進設定;max 會以 context = "max" 存在 Codex profile 上,設定用的 TUI 裡緊接在 Reasoning effort 後面也有一個 Context 欄位可以切換。

alc models 會印出兩個數字 —— Codex context: 500K (max 872K) —— 而 profile 設成 max 時,alc doctor 會在那個 profile 的橋接那一列加上 / max context。 profile 的選擇會套用到橋接上的每一個 agent,不只 Claude Code。單次執行用的 --context 跟 --effort 一樣只屬於 alc claude,provider 不是 Codex 或 Antigravity 時會被拒絕。

換一個起點​

沒有設定過的 session 會以 GPT-6.1 Sol、low 強度啟動。你已在 alc profile 或 Codex 設定裡選好的模型與強度仍然優先。

alc --codex claude --model gpt-6-luna --effort low
alc --codex claude --model gpt-6.1-sol --effort low --save
alc --codex claude --context max --save

--save 會把模型、強度與 context 選擇一起存進 provider profile。沒有這些參數 時,session 的起始值依序取自 profile 的設定、選定的 Codex profile,最後是模型 自己的預設值;context 選擇只看 --context 與 profile,兩者都沒有時就是標準 window。放在 -- 之後的東西會原封不動交給 agent,而且蓋過前面所有來源。

用 /model 選的模型只對那一次 session 有效;下次啟動又會從 profile 的值開始。

你原本的 claude 仍然連得到 Anthropic​

Claude Code 會把你最後停在的那個模型寫進 ~/.claude/settings.json,當成之後 新 session 的預設值,而這台機器上每一個 session 都會讀那個檔案 —— 包含不是 alc 啟動的那些:它們前面沒有轉接器,卻會拿一個 GPT 模型去向 Anthropic 要。

alc 會在啟動前把那一個欄位讀下來,並在 session 結束時放回去。檔案裡其他東西 一概不動;而且除非它讀到的值只有轉接器服務得了,否則根本不會寫。

有兩種情況它刻意不碰。一是你在 session 中途自己切到某個真正的 Claude 模型: 那是你對自己預設值做的決定,就該算數。二是 session 被直接砍掉,任何收尾都不會 跑 —— 這時 alc doctor 會指出那個檔案與那一行,而下一次經過橋接的啟動會把它 清掉。

不要想用 CLAUDE_CONFIG_DIR 來隔離這件事:那會把 Claude Code 的整個設定家目錄 搬走,連登入資訊也一起搬走。

模型目錄​

直接向你的 ChatGPT 帳號同步——也就是轉接器每一輪請求送去的同一方——所以只要那個 帳號跑得動的模型,即使已安裝的 Codex CLI 沒聽過,也照樣會出現。抓不到時才退回 codex debug models,而執行檔內建的那份清單是兩者都不能低於的底線:同步回來的 清單只能新增模型,不能拿掉。同步每天一次,Codex 一升級就會立刻再同步一次。

alc 宣告的 Codex client 版本至少是 0.160.0,也就是擷取內建模型目錄時所用的 client 版本;已安裝的版本更新時,則使用那個版本。這個運作上的版本底線,與上游 模型那一列實際填的 minimal_client_version 值 0.153.0 是兩件事;不必只為了 看見內建的模型就升級 Codex。

alc models
alc models --refresh
alc models --json

profile 選定的 window —— 模型的標準 window,或 context = "max" 時的最大 window —— 會以 CLAUDE_CODE_MAX_CONTEXT_TOKENS 傳給 Claude Code,讓 GPT 模型依 Codex 的實際上限壓縮對話,而不是照 Claude Code 對不認得的 ID 假設的 200k。其他 agent 會在各自的 window 欄位拿到同一個數字, alc --codex --dry-run claude 也會在它要傳入的設定裡顯示這個值。

Auto 模式與提示快取​

不用額外設定或旗標。

Auto 模式仍然可用。 Codex 無法執行 Claude Code 的伺服器端檢查,因此 Claude Code 會改用自己的分類器,跑在這次 session 的模型上。分類器請求會經過 Codex,也會使用 Codex 額度。除了 anthropic 這個 kind,其他每個 provider 也都是這樣運作 —— 見 Auto 模式在每個 provider 上都能用。

提示快取路由會自動設定。 alc 會讓同一個 Claude Code session 保持穩定的 Codex 快取路由。快取重用仍需要相同的提示前綴;切換模型或 effort、修改工具或提示、壓縮 對話、快取到期,以及 Claude Code 升級都可能造成未命中。

用 alc usage 查看 Codex 實際重用了多少輸入。CACHED 是從快取讀取的 輸入 token 數,CACHE % 是它占總輸入的比例,不是請求命中率。快取重用也不保證 減少額度消耗或費用。

升級 alc 後請開啟新的 session,才能取得這些預設值;已在執行的背景 session 會保留 啟動時的設定。你自己的 --settings 仍可覆寫 alc 的 Claude Code 預設值。

運作方式​

橋接是 alc 自己的程式碼。給 Claude Code 用的時候,它是一個獨立的背景行程,綁在 一個它會一直留著的 loopback port 上(alc bridge),因為一個被移到背景的 session,活得比啟動它的那個 alc 還久 —— 見背景 session。其他每一個 agent 則仍然跑在 alc 行程內、綁在隨機的 port 上,只服務它啟動的那個 agent,並在該 session 結束時 關閉。它會讀取、必要時更新 ~/.codex/auth.json;憑證絕不會被複製進 alc 自己的 設定裡。新 helper 與 host 都釘住 runtime 世代;更新保留既有 host/session route,新啟動使用新世代。新版 alc-managed 更新會跨行程鎖住正規 auth 路徑, 鎖定後再讀一次。舊 host 與外部 Codex CLI 不配合這把鎖,共用登入輪替仍可能 影響它們。

這是第三方相容層

這個轉接器不是 OpenAI 或 Anthropic 的官方整合。在把訂閱憑證交給它之前,請先 看過專案的 THIRD_PARTY.md 與你的 provider 條款。