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 Code | Anthropic Messages | /model 選單,session 中途也能換 |
| OpenCode、Pi、Kimi Code CLI | OpenAI Responses | 一個模型,啟動時選定 |
| Copilot CLI、Goose、Qwen Code | OpenAI 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-sol | GPT-6.1 Sol。最新的主力模型,適合寫程式與日常工作,建議從這個開始 | low |
gpt-6-astra | GPT-6。適合複雜吃重的工作 | medium |
gpt-6-sol | GPT-6。日常寫程式與代理式工作 | medium |
gpt-5.6-sol | 上一代,適合複雜的專業工作 | low |
gpt-5.6-terra | 上一代,日常寫程式的均衡選擇 | medium |
gpt-5.6-luna | 上一代,快、便宜 | medium |
gpt-6-luna | GPT-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 條款。