Mày mò đem Gemini 4 Argon (High) sang chạy trên OpenAI Codex — Khi hết tiền mua Plus nhưng chê Antigravity “lỏ” (Phần 2)
Ở Phần 1 — Giải ngố AI Agent, Code Harness và MCP, mình đã chia sẻ lý do vì sao bộ khung điều phối (Harness) và dàn công cụ MCP mới là thứ quyết định trải nghiệm thực tế khi code cùng AI. Còn bài viết này xuất phát từ tình cảnh rất thật của mình sau khi hết hạn gói dùng thử ChatGPT Plus miễn phí:
- Quen tay với hệ sinh thái Codex nhưng hết tiền mua tiếp: Dùng OpenAI Codex Desktop một thời gian, mình thực sự nghiện cái hệ sinh thái của nó — từ cơ chế Sandbox
workspace-write, tách nhánh Git worktree, bật 4 Sub-agent chạy song song cho tới hơn 60 công cụ MCP nối sẵn với Browser, GitHub, Word, Excel, PDF. Ngặt nỗi khi hết đợt dùng thử ChatGPT Plus miễn phí thì túi tiền của mình cũng đang... cạn, chưa muốn tốn thêm 20 USD mỗi tháng. - Có sẵn Gemini 4 Argon (High) nhưng app Antigravity trả output quá "lỏ": Trong khi đó, mình đang có sẵn tài khoản chạy được Gemini 4 Argon (High) bên kênh Antigravity. Nhưng ngồi dùng trực tiếp trên app Antigravity thì cực kỳ ức chế: hệ sinh thái xung quanh nghèo nàn, thiếu hẳn dàn MCP mình hay dùng, mà output của AI Agent bên Antigravity trả về lại rất "lỏ" — nói năng dài dòng, hay bị lỗi lặp lại cùng một câu dẫn hàng chục lần trên luồng SSE, hơi tí lại dừng hỏi vặt và đốt quota tuần nhanh khủng khiếp.
“Đằng nào cũng mê cái hệ sinh thái của Codex mà ngán cái output lỏ bên Antigravity, giờ giữ nguyên cái vỏ MCP + Harness của Codex rồi nhét con Gemini 4 Argon (High) vào làm não chạy bên dưới được không?”
Mò thử cấu hình của Codex cùng với repo mã nguồn mở router-for-me/CLIProxyAPI trong một buổi tối thì hóa ra ghép được thật. Thậm chí sau khi mình "cấy" thêm bộ System Instructions của gpt-6.1-sol vào, con Argon lột xác hoàn toàn: trả lời ngắn gọn, tự chạy test, gọi 13 công cụ MCP song song mượt như model chính chủ mà không tốn một đồng phí ChatGPT Plus nào.
Sơ đồ kiến trúc ghép OpenAI Codex với Gemini 4 Argon (High)
Như mình đã giải thích ở Phần 1, ứng dụng Codex Desktop tách rời hoàn toàn phần khung điều phối trên máy Mac (Harness + MCP) và phần gọi model suy luận qua giao thức OpenAI Responses API (wire_api = "responses"). Toàn bộ đường đi của request và tool call sau khi bắc cầu qua CLIProxyAPI ở cổng 8317 hoạt động đúng như sơ đồ dưới đây:

- Khung Codex Desktop (Bên trái): Giữ nguyên toàn bộ 60+ MCP tools, Sandbox
workspace-write, bộ chỉ thịsol61_instructions.mdvà cơ chế gọi tooldirect. Đặc biệt, hơn 98% lượng token đầu vào (chứa định nghĩa 60+ MCP tools) đều được lấy từ Prompt Cache. - Local Proxy
CLIProxyAPI :8317(Ở giữa): Nhận request chuẩn/v1/responsestừ Codex, tự động giả lậpUser-Agentcủa Antigravity CLI để mở khóagemini-4-argon-high, giữ nguyênthoughtSignaturekhi gọi tool nhiều vòng rồi dịch ngược luồng SSE trả về cho Codex. - Gemini 4 Argon High (Bên phải): Chạy bằng tài khoản OAuth Google có sẵn với Context Window 1 triệu token và tự động nén lịch sử (Auto-Compact) ở mốc 500k tokens.
Bước 1: Cài đặt CLIProxyAPI và đăng nhập tài khoản Antigravity
Trên macOS, bạn cài thẳng cliproxyapi qua Homebrew cho gọn (hoặc tải binary từ mục Releases của repo router-for-me/CLIProxyAPI):
# 1. Cài CLIProxyAPI qua Homebrew
brew install cliproxyapi
# 2. Mở trình duyệt đăng nhập OAuth tài khoản Antigravity
cliproxyapi --antigravity-loginGõ xong dòng thứ hai thì trình duyệt sẽ bật lên để bạn đăng nhập tài khoản Google có quyền Antigravity. Xác thực xong, công cụ sẽ tự lưu một file token dạng ~/.cli-proxy-api/antigravity-<email-cua-ban>.json.
Bước 2: Tạo file cấu hình và cho CLIProxyAPI chạy ngầm tự động
Có token rồi thì mình tạo file ~/.cli-proxy-api/config.yaml để quy định cổng chạy local là 8317, trỏ vào thư mục chứa token vừa lấy và tự đặt một cái API key nội bộ (mình để là sk-local-ultra-key).
Lưu ý ở lệnh dưới mình dùng cat << END_CFG (không có dấu nháy đơn) để Terminal tự động bung biến $HOME thành đường dẫn tuyệt đối của máy bạn (ví dụ /Users/ten-ban/.cli-proxy-api), giúp dịch vụ chạy ngầm qua launchd không bị lỗi lệch đường dẫn:
mkdir -p ~/.cli-proxy-api
cat << END_CFG > ~/.cli-proxy-api/config.yaml
port: 8317
auth-dir: "$HOME/.cli-proxy-api"
api-keys:
- "sk-local-ultra-key"
END_CFGTrước khi cho chạy ngầm, bạn bật thử trực tiếp trên Terminal một lần xem nó đã nhận cổng 8317 và đọc được file token OAuth ngon lành chưa:
cliproxyapi --config ~/.cli-proxy-api/config.yamlThấy báo lắng nghe ở cổng 8317 là ổn. Lúc này bạn bấm Ctrl + C để tắt đi, rồi chép file cấu hình đó vào thư mục của Homebrew và bật brew services cho nó tự chạy ngầm mỗi khi mở máy:
cp ~/.cli-proxy-api/config.yaml "$(brew --prefix)/etc/cliproxyapi.conf"
brew services restart cliproxyapiBước 3: Nối Gemini 4 Argon (High) vào ứng dụng OpenAI Codex
Tới đây bạn có thể dùng Argon 4.0 theo hai kiểu: chạy thẳng trên giao diện ứng dụng Codex Desktop hoặc gõ lệnh nhanh trên Terminal (Codex CLI).
Cách 1: Cấu hình cho ứng dụng OpenAI Codex Desktop (Đầy đủ MCP Server + Harness)
Ứng dụng Codex Desktop đọc cấu hình ở file ~/.codex/config.toml.
Lưu ý quan trọng để không làm mất cấu hình MCP cũ: Nếu bạn đã dùng Codex trước đó, trong
~/.codex/config.tomlthường đã có sẵn các khối[mcp_servers.*],[plugins]và danh sách[projects]đã cấp quyền trusted. Theo chuẩn định dạng TOML, các khóa cấu hình chung (model,model_provider...) bắt buộc phải nằm ở trên cùng của file (trước bất kỳ dấu ngoặc vuông[...]nào).
Bạn hãy chạy đoạn lệnh dưới đây để tạo bản sao lưu .bak an toàn và mở file cấu hình lên:
# 1. Tạo bản backup file config.toml hiện tại (nếu có)
mkdir -p ~/.codex
cp ~/.codex/config.toml ~/.codex/config.toml.bak 2>/dev/null || true
# 2. Mở file config.toml bằng TextEdit (hoặc VS Code / nano tùy bạn)
open -e ~/.codex/config.tomlKhi file ~/.codex/config.toml mở ra, bạn chèn khối cấu hình sau lên trên cùng của file (ngay trên các khối [mcp_servers] hoặc [projects] cũ của bạn, tuyệt đối không xóa các khối cũ bên dưới):
model = "gemini-4-argon-high"
model_provider = "cliproxy"
model_reasoning_effort = "high"
[model_providers.cliproxy]
name = "CLIProxyAPI"
base_url = "http://127.0.0.1:8317/v1"
wire_api = "responses"
http_headers = { "Authorization" = "Bearer sk-local-ultra-key" }
# --- Giữ nguyên các khối [mcp_servers.*] và [projects.*] cũ của bạn ở bên dưới ---Làm sao để kiểm tra chắc chắn Codex Desktop đã Sync được model?
Lưu file ~/.codex/config.toml xong, bạn mở ứng dụng Codex lên (hoặc bấm ⌘ + N tạo New Thread mới). Codex sẽ gọi ngầm vào http://127.0.0.1:8317/v1/models để đồng bộ danh sách model từ CLIProxyAPI về lưu trong ~/.codex/models_cache.json.
Để kiểm tra tận gốc trên Terminal, bạn gõ thử 3 lệnh này:
# 1. Xem dịch vụ cliproxyapi đã ở trạng thái started chưa
brew services list | grep cliproxyapi
# 2. Xem cổng 8317 đã mở khóa đủ 9 model từ tài khoản Antigravity chưa
curl -s http://127.0.0.1:8317/v1/models \
-H "Authorization: Bearer sk-local-ultra-key" | jq -r '.data[].id'
# 3. Kiểm tra xem Codex Desktop đã đồng bộ (Sync) gemini-4-argon-high vào cache chưa
jq '.models[] | select(.slug=="gemini-4-argon-high") | {slug, display_name, context_window, reasoning_efforts: [.supported_reasoning_levels[].effort]}' ~/.codex/models_cache.json
cliproxyapi đã started, cổng 8317 trả về 9 model và file ~/.codex/models_cache.json của Codex đã đồng bộ xong gemini-4-argon-high cùng 3 mức suy luận low / medium / high.Khi thấy Terminal trả về đúng JSON có "slug": "gemini-4-argon-high" kèm "context_window": 1048576 như Hình 1, đồng thời góc dưới khung chat của Codex hiện tên Gemini 4 Argon là quá trình Sync đã hoàn tất.
Cách 2: Tạo thêm alias codex-argon để gọi nhanh ngoài Terminal
Nếu bạn đã cấu hình ~/.codex/config.toml ở Cách 1 thì bản thân lệnh codex trên Terminal cũng sẽ tự nhận gemini-4-argon-high. Tuy nhiên, nếu bạn muốn giữ config.toml mặc định cho một model khác và chỉ gọi riêng Argon khi cần trên Terminal, bạn có thể cài gói CLI @openai/codex rồi gắn alias codex-argon vào ~/.zshrc:
npm install -g @openai/codex
cat << 'END_ZSH' >> ~/.zshrc
# Chạy nhanh OpenAI Codex CLI bằng Gemini 4 Argon High
alias codex-argon='OPENAI_BASE_URL=http://127.0.0.1:8317/v1 \
OPENAI_API_KEY=sk-local-ultra-key \
codex -m gemini-4-argon-high'
END_ZSH
source ~/.zshrcBước 4: "Cấy" bộ System Instructions của Sol 6.1 để trị dứt điểm cái nết output lỏ
Lúc mới nối xong, mình phát hiện ra hai lý do cốt lõi khiến model chạy qua custom provider hoặc chạy bên Antigravity hay trả về output lỏ:
- System Prompt mặc định cho custom provider quá cụt: Khi chạy
gpt-6.1-solchính chủ, Codex nạp bộbase_instructionsdài tới 18,448 ký tự quy định rõ cách tự chủ làm việc, cách chạy test và cách viết câu trả lời gọn gàng. Trong khi đó, model đi qua custom provider mặc định chỉ được gắn đúng 1 câu dài 68 ký tự:"You are Codex, a coding agent. You and the user share one workspace.". - Tật viết câu dẫn lê thê và khác biệt công cụ sửa file: Bản thân Gemini 4 Argon khi không bị ràng buộc rất hay viết câu dẫn dài dòng trước lúc gọi tool (dễ dẫn tới lỗi lặp chữ trên luồng SSE khi context vượt 300k tokens) và hay bị vấp cú pháp
*** Begin Patchnếu cố gọi công cụapply_patchđộc quyền của dòng GPT.
Cách xử lý triệt để của mình là trích xuất bộ chỉ thị chuẩn của gpt-6.1-sol lưu vào ~/.codex/sol61_instructions.md, khóa câu dẫn trung gian ở mức tối đa 1 câu ngắn dưới 18 từ và hướng dẫn Argon sửa file bằng script chuẩn qua exec_command:
# Tự động tìm file log phiên chạy OpenAI chính chủ gần nhất để trích xuất chỉ thị (nếu có)
OPENAI_SESSION=$(grep -l '"model_provider":"openai"' ~/.codex/sessions/*/*/*/rollout-*.jsonl 2>/dev/null | tail -n 1)
if [ -n "$OPENAI_SESSION" ]; then
head -n 1 "$OPENAI_SESSION" | jq -r '.payload.base_instructions.text' > ~/.codex/sol61_instructions.md
echo "Đã trích xuất $(wc -c < ~/.codex/sol61_instructions.md) bytes vào ~/.codex/sol61_instructions.md"
else
cat << 'END_SOL' > ~/.codex/sol61_instructions.md
You are Codex, an autonomous coding agent collaborating with the user in a shared workspace.
- Bias towards action: read the code, implement the complete solution, and verify with relevant tests before yielding back.
- Batch independent searches and reads in parallel; prefer rg and rg --files for fast search.
- Keep intermediate commentary before tool calls to at most 1 short sentence under 18 words.
- Keep technical communication clear, concise, and direct without horizontal rules (---) or concluding summary headers.
END_SOL
fi
cat << 'END_NOTE' >> ~/.codex/sol61_instructions.md
# Tooling note for Gemini Argon
When editing files via exec_command, use standard POSIX/Node/Python scripts cleanly instead of raw patch syntax.
END_NOTETiếp theo, bạn lấy đường dẫn tuyệt đối của file sol61_instructions.md trên máy bạn bằng lệnh:
echo "$HOME/.codex/sol61_instructions.md"Sau đó mở lại file ~/.codex/config.toml và cập nhật cụm cấu hình ở đầu file (nhớ thay /Users/<ten-user-cua-ban> bằng đúng đường dẫn vừa in ra ở trên, vì file TOML không tự dịch ký tự ~ hay $HOME):
model = "gemini-4-argon-high"
model_provider = "cliproxy"
model_reasoning_effort = "high"
model_context_window = 1048576
model_auto_compact_token_limit = 500000
tool_output_token_limit = 30000
project_doc_max_bytes = 65536
model_instructions_file = "/Users/<ten-user-cua-ban>/.codex/sol61_instructions.md"
[model_providers.cliproxy]
name = "CLIProxyAPI"
base_url = "http://127.0.0.1:8317/v1"
wire_api = "responses"
http_headers = { "Authorization" = "Bearer sk-local-ultra-key" }
# --- Giữ nguyên các khối [mcp_servers.*] và [projects.*] cũ của bạn ở bên dưới ---Nhớ tạo New Thread mới: Codex chỉ đọc
model_instructions_filemột lần lúc khởi tạo thread. Sửaconfig.tomlxong, bạn nhớ bấm⌘ + Nmở thread mới thì bộ chỉ thị 18.4KB mới chính thức được nạp vào phiên làm việc.
Bước 5: Test thực chiến từ cổng API, dàn MCP cho tới Prompt Cache
1. Test trực tiếp endpoint /v1/responses trên Terminal
curl -s http://127.0.0.1:8317/v1/responses -H "Authorization: Bearer sk-local-ultra-key" -H "Content-Type: application/json" -d '{
"model": "gemini-4-argon-high",
"input": "Trả lời 1 câu tiếng Việt: Bạn là mô hình AI nào và của hãng nào?"
}' | jq '{model, status, reply: ([.output[].content[]?.text] | join(""))}'
~/.codex/config.toml và bắn thử một request /v1/responses — kết quả trả về "status": "completed" cùng câu trả lời từ chính Gemini của Google.2. Test gọi 13 MCP tools song song và bật 4 Sub-agent quét project thật
Mình tạo một New Thread trên Codex Desktop và giao luôn một chuỗi việc thực tế: tự kiểm tra 13 nhánh MCP trong 1 lượt, mở In-App Browser qua cua_repl, rồi bật đồng thời 4 luồng Multi-Agent quét hơn 700 file của project discord_gpt_bot ngoài Desktop. Nó tìm ra đúng 5 điểm nghẽn re-render và layout thrashing, tự sửa code cả 5 file, chạy tsc --noEmit pass xanh mượt rồi hỏi quyền require_escalated để commit và push thẳng lên GitHub.
3. Soi trực tiếp file log .jsonl để kiểm chứng Prompt Cache
# Lấy file log của phiên chat đang chạy mới nhất
LATEST_SESSION=$(ls -t ~/.codex/sessions/*/*/*/rollout-*.jsonl | head -n 1)
# 1. Xem provider và tổng số ký tự System Instructions đã nạp vào phiên
head -n 1 "$LATEST_SESSION" | jq '{
model_provider: .payload.model_provider,
base_instructions_chars: (.payload.base_instructions.text | length)
}'
# 2. Xem chính xác model, mức suy luận (effort) và chế độ Sandbox đang chạy
jq 'select(.type=="turn_context") | {
model: .payload.model,
effort: .payload.effort,
sandbox: .payload.sandbox_policy.type
}' "$LATEST_SESSION" | tail -n 5
# 3. Xem lượng token đầu vào được lấy từ Prompt Cache (cached_input_tokens)
jq 'select(.payload.type=="token_count") | .payload.info.last_token_usage | {
input_tokens,
cached_input_tokens,
output_tokens
}' "$LATEST_SESSION" | tail -n 5
Nhìn vào kết quả ở Hình 3 là yên tâm tuyệt đối:
"base_instructions_chars": 22091: Bộ chỉ thịsol61_instructions.md(~18.4KB) cộng với phần context của Codex Desktop (~3.6KB) đã nạp đủ 100%."model": "gemini-4-argon-high","effort": "high","sandbox": "workspace-write": Đúng model Argon 4.0 High và giữ nguyên cơ chế bảo vệ Sandbox."input_tokens": 197667và"cached_input_tokens": 194754: Hơn 98.5% lượng token đầu vào (bao gồm định nghĩa 60+ MCP tools và lịch sử hội thoại) được lấy thẳng từ Prompt Cache, giúp tốc độ phản hồi cực nhanh và không lo đốt cạn quota.
Vậy là giải quyết trọn vẹn bài toán: dù hết hạn ChatGPT Plus miễn phí và không tốn thêm đồng nào, mình vẫn giữ được nguyên hệ sinh thái làm việc cực xịn của OpenAI Codex Desktop và biến con Gemini 4 Argon (High) thành một trợ lý code sắc bén, gọn gàng thay vì phải chịu đựng cái output lỏ bên app Antigravity gốc.