Giải ngố AI Agent, Code Harness và MCP — Vì sao cùng một model mà chỗ chạy khôn, chỗ chạy “lỏ”?
Dạo gần đây ngồi nói chuyện với mấy anh em dev, mình thấy mọi người hay so kè xem model nào mạnh hơn: GPT-6.1 Sol, Claude Opus 5.5 hay Gemini 4 Argon. Nhưng lúc trực tiếp vác từng con vào làm project thật trên máy, mình mới nhận ra một chuyện: Model chỉ là cái não, còn làm việc có ra hồn hay không thì phụ thuộc một nửa vào bộ Code Harness và dàn MCP tools bọc bên ngoài.
Cùng một con model rất mạnh, nhưng nhét vào cái app có Harness sơ sài thì output trả về vừa dài dòng vừa ngáo; còn đặt vào đúng bộ khung chuẩn thì nó tự tìm file, tự sửa bug, tự chạy test từ đầu tới cuối. Trước khi kể chuyện mình ghép con Gemini 4 Argon từ Antigravity sang OpenAI Codex ở bài sau, mình tóm gọn lại bức tranh về AI Agent, Code Harness và MCP kèm sơ đồ trực quan để anh em dễ hình dung.
1. AI Agent khác gì với Chatbot bình thường?
Hồi mới dùng ChatGPT hay Gemini trên web, luồng làm việc quen thuộc của anh em mình là: copy một đoạn code lỗi → dán vào chat → chờ AI đoán mò → copy code nó sửa về dán lại vào IDE → chạy thử vẫn lỗi → lại copy error log ném vào chat tiếp. Kiểu đó AI chỉ là một con Chatbot thuần văn bản, còn người chạy việc chính là bạn.
Còn AI Agent thì vận hành theo một vòng lặp khép kín (Agent Loop) gồm 5 bước như sơ đồ dưới đây. Giả sử bạn giao đúng một câu "Fix this bug":

- Bước 1 — Context Assembly (Gom Context): Trước khi gửi câu lệnh đi, bộ khung Codex tự động gom toàn bộ thông tin môi trường đính kèm vào request: thư mục đang đứng (
cwd), loại shell, cấu hìnhSandbox, file chỉ dẫnAGENTS.mdcủa project và danh sách toàn bộtoolsmà model được phép gọi. - Bước 2 — Inference & Tool Call (Suy luận và gọi Tool): Gói dữ liệu được gửi tới Responses API. Model nhận ra nó chưa biết bug nằm ở file nào nên chưa trả lời vội, mà phát ra một yêu cầu Tool Call: gọi
rg(ripgrep) để quét danh sách file trong project. - Bước 3 — Execution & Observation (Chạy lệnh và đọc kết quả): Bộ khung Codex trên máy bạn hứng lấy yêu cầu
rg, chạy lệnh ngay trên ổ cứng, lấy kết quả trả về rồi nối tiếp vào lịch sử hội thoại gửi ngược lên cho model. - Bước 4 — Iterative Loop (Lặp Đọc → Sửa → Test): Dựa trên kết quả vừa nhận, model tự động gọi tiếp chuỗi tool tiếp theo mà không cần bạn can thiệp: đọc file nghi ngờ gây lỗi, sửa code, rồi tự chạy lệnh test (như
tsc --noEmithoặcpytest). Nếu test vẫn báo đỏ, nó tự đọc error log rồi vòng theo đường mũi tên vàng ở dưới sơ đồ quay về Bước 2 để sửa tiếp cho tới khi pass hết. - Bước 5 — Complete (Hoàn tất): Khi thấy kết quả test báo xanh, model ngừng gọi tool và trả câu trả lời cuối cùng ra màn hình cho bạn.
Hiểu ngắn gọn: Chatbot chỉ trả lời bằng chữ, còn AI Agent có cả một vòng lặp tự gọi tool, tự chạy test và tự sửa sai cho tới khi xong việc.
2. Code Harness và Sandbox hoạt động như thế nào?
Nhìn vào vòng lặp 5 bước ở trên, bạn sẽ thấy bản thân con AI model thực ra chỉ làm việc ở Bước 2. Nó nằm trên server, không hề chạm trực tiếp vào máy Mac của bạn. Toàn bộ Bước 1, Bước 3, Bước 4 và Bước 5 đều do cái chương trình chạy trên máy bạn điều phối — đó chính là Code Harness.
Trong bộ Harness của OpenAI Codex Desktop, cơ chế quan trọng nhất là lớp chặn bảo vệ Sandbox (workspace-write). Bạn nhìn sơ đồ phân luồng dưới đây là hiểu ngay cách nó giữ an toàn cho máy:

- Luồng 1 — Lệnh làm việc trong Project (Màu xanh): Khi AI gọi
exec_commandđể tìm file bằngrg, đọc/sửa code trong đúng thư mục project hoặc chạytsc, lớp Sandbox tự động cho qua thẳng để Agent chạy một mạch không bị ngắt quãng. - Luồng 2 — Lệnh đụng tới mạng hoặc ngoài vùng cho phép (Màu vàng): Mặc định Sandbox khóa kết nối mạng ngầm và cấm ghi file ra ngoài project. Khi AI cần chạy lệnh như
git pushhoặc sửa một project khác ngoài Desktop, Sandbox sẽ chặn lại và bật bảng hỏi quyền (require_escalated). Khi nào bạn bấm Approve thì lệnh mới được thực thi. - Chạy Multi-Agent và Bundled Runtime: Ngoài việc quản lý terminal (
PTY), Harness của Codex còn cho phép bật cùng lúc 4 luồng Sub-agent (spawn_agent) chạy song song để quét project lớn, kèm sẵn bộ Python/Node đóng gói riêng để xử lý file Word, Excel, PDF ngay trên máy.
3. Còn MCP (Model Context Protocol) dùng để làm gì?
Tới đây sẽ có câu hỏi: “Ủa, nếu Sandbox chặn mạng ở terminal để bảo mật, vậy lúc con AI cần đọc GitHub Pull Request, tra cứu tài liệu trên web hay mở trình duyệt kiểm tra UI thì làm kiểu gì?”
Đó chính là vai trò của MCP (Model Context Protocol). Thay vì để AI tự chạy lệnh mạng ngầm trong terminal, ứng dụng Codex mở sẵn một MCP Host Hub nằm ở tầng App chủ để nối thẳng ra 5 cụm đồ nghề chuyên dụng:

codex_app: Quản lý các thread chat, tự tạo Git worktree độc lập và biên dịch tài liệu LaTeX.cua_repl(Computer Use): Điều khiển trực tiếp trình duyệt tích hợp (In-App Browser) và 28 ứng dụng trên màn hình macOS để test giao diện thật.node_repl: Môi trường Node.js VM giữ nguyên state giữa các lượt gọi để tính toán dữ liệu lớn hoặc xuất hình ảnh.artifact_session: Chạy mã JavaScript dựng trực tiếp bảng tính Excel, bài thuyết trình Slide và Canvas.codex_apps(Connectors): Nối trực tiếp với tài khoản GitHub (đọc diff, tạo PR, comment) và công cụ tìm kiếm Web.
4. Khi đã quen hệ sinh thái Codex nhưng hết tiền mua Plus, còn Antigravity thì quá "lỏ"!
Hiểu rõ chuyện Model (cái não suy luận) và Code Harness + MCP (cái khung đồ nghề) tách rời nhau rồi, mình mới nhìn lại bài toán thực tế của bản thân:
- Một bên là OpenAI Codex Desktop: Mình đã dùng rất quen tay, cực kỳ ưng cái hệ sinh thái MCP + Harness của nó. Ngặt nỗi sau khi dùng hết đợt ChatGPT Plus miễn phí thì mình cũng... hết tiền mua tiếp.
- Một bên là Google Antigravity: Mình đang có sẵn tài khoản dùng được con Gemini 4 Argon (High) với Context Window 1M tokens. Nhưng khổ nỗi, khi mở app Antigravity lên dùng trực tiếp thì hệ sinh thái MCP của nó gần như trống không, luồng làm việc tù túng, và chán nhất là output của AI Agent bên Antigravity trả về rất "lỏ" — vừa dài dòng lê thê, vừa hay lặp chữ, lại hay dừng hỏi vặt làm đứt mạch code và ngốn sạch quota tuần.
“Nếu mình đã quen dùng hệ sinh thái của Codex mà lại chê cái output lỏ của app Antigravity, sao không giữ nguyên bộ khung Harness + MCP của Codex rồi bắc cầu lấy con Gemini 4 Argon (High) sang làm não chạy bên dưới?”
Cách mình dùng CLIProxyAPI để nối hai thế giới đó lại với nhau và "cấy" thêm bộ System Instructions của gpt-6.1-sol để trị dứt điểm cái nết output lỏ của Argon được mình ghi lại chi tiết ở ngay bài tiếp theo: Đọc tiếp Phần 2: Mày mò đem Gemini 4 Argon (High) sang chạy trên OpenAI Codex ↗