
Harness là gì? Nói gọn: model là bộ não, harness là thân và tay chân. Model chỉ biết đọc chữ vào và viết chữ ra. Harness là phần mềm bao quanh, cho model công cụ để đọc file, sửa code, chạy lệnh, và nạp các quy tắc của dự án. Claude Code là một harness. Điều ít người biết: bạn có thể giữ nguyên harness Claude Code và chỉ thay bộ não bằng một model rẻ hơn.
Khi tìm AI phụ để code cho đỡ hạn mức, tôi mất khá lâu mới nhận ra câu hỏi đúng không phải «mua model nào» mà là «chạy model đó trong harness nào».
Harness làm những việc gì?
Trong một phiên code, phần lớn việc bạn thấy là harness làm, không phải model:
- Công cụ: đọc file, sửa file, chạy lệnh terminal, tìm kiếm trong repo.
- Quy tắc dự án: nạp
CLAUDE.md, các file quy tắc theo mảng, skill, hook. - Quyền: lệnh nào được chạy, file nào cấm đọc, việc nào phải hỏi trước.
- Ngữ cảnh: khi nào tóm tắt hội thoại, khi nào nạp thêm tài liệu.
- Sub-agent: chia việc con cho agent khác.
Các harness phổ biến hiện nay: Claude Code (Anthropic), Codex CLI (OpenAI), Gemini CLI và Antigravity (Google), OpenCode (mã nguồn mở). Nếu bạn mới làm quen, bài Claude Code là gì giải thích phần cơ bản.
Vì sao harness quan trọng không kém model?
Repo của tôi có một file CLAUDE.md khoảng 21 KB ghi đủ thứ: database là bản thật nên cấm thử nghiệm bừa, phải dùng hàm chung nào cho việc nào, test đặt ở đâu. Ngoài ra còn bảy file quy tắc theo mảng, mỗi file chỉ tự nạp khi AI chạm vào thư mục tương ứng.
Một model giỏi mà không đọc được những thứ đó sẽ viết code «đúng nhưng lệch nếp»: tự viết lại hàm đã có sẵn, đặt file test sai chỗ, gọi database theo cách bị cấm. Mức độ hiểu quy tắc của từng harness:
| Harness | Đọc CLAUDE.md | Quy tắc theo mảng, skill |
|---|---|---|
| Claude Code | Có, mặc định | Có đủ |
| OpenCode | Có, khi repo không có AGENTS.md | Có skill, không tự nạp quy tắc theo mảng |
| Codex CLI | Phải cấu hình thêm | Không |
| Gemini CLI | Phải cấu hình thêm | Không |
| Antigravity | Không, chỉ đọc AGENTS.md và GEMINI.md | Có file quy tắc riêng, nghe nói giới hạn khoảng 12.000 ký tự mỗi file |
Chạy Claude Code bằng model rẻ như thế nào?
Claude Code đọc biến môi trường ANTHROPIC_BASE_URL để biết gửi yêu cầu tới đâu. Nhà cung cấp nào có cổng tương thích Anthropic thì Claude Code chạy được với họ. Ví dụ, tài liệu chính thức của DeepSeek ghi cổng https://api.deepseek.com/anthropic. Tên model Opus được tự đổi thành model mạnh của họ, Sonnet và Haiku đổi thành bản Flash.
Các nhà cung cấp tôi biết có cổng kiểu này: DeepSeek, GLM của Z.ai (có hẳn gói thuê bao làm riêng cho Claude Code), Kimi, MiniMax. Mỗi bên có hướng dẫn riêng trong tài liệu chính thức. Bạn xem hướng dẫn Anthropic API của DeepSeek làm mẫu.
Ba điều tôi làm khi dựng:
- Tách thư mục cấu hình riêng cho bản Claude Code chạy model rẻ, để không đụng phiên đăng nhập của tài khoản chính.
- Lưu khoá API ở kho khoá của hệ điều hành, không dán vào file trong repo.
- Chặn quyền chặt hơn bình thường: cấm đọc
.envvà thư mục bí mật, cấm lệnh vào database và máy chủ, cấm đẩy code lên git. Code của bạn sẽ đi tới máy chủ của nhà cung cấp đó, nên chỉ đưa thứ bạn chấp nhận gửi đi.
Một lưu ý: nhà cung cấp chỉ «tương thích» chứ không giống hệt Anthropic. Bảng tương thích của DeepSeek ghi rõ vài tính năng không hỗ trợ. Hãy chạy thử một việc nhỏ trước khi giao việc thật.
Còn Codex CLI và Gemini CLI thì sao?
Hai harness này mặc định đọc file quy tắc riêng (AGENTS.md, GEMINI.md), nhưng cấu hình được để đọc CLAUDE.md:
- Codex CLI: thêm dòng
project_doc_fallback_filenames = ["CLAUDE.md"]vào fileconfig.toml. Tôi đã chạy thử: cấm Codex đọc file rồi hỏi «hàm gọi API phía client tên gì, lệnh typecheck là gì», nó trả lời đúng theoCLAUDE.md. Lưu ý: thư mục nào cóAGENTS.mdthì Codex bỏ quaCLAUDE.md. - Gemini CLI: trong
settings.json, khaicontext.fileNamelà danh sách gồmAGENTS.md,CLAUDE.md,GEMINI.md. Phần này tôi mới cấu hình, chưa chạy thử.
Cả hai chỉ đọc file CLAUDE.md, không tự nạp quy tắc theo mảng hay skill. Repo càng nhiều quy tắc thì khoảng cách với Claude Code càng lớn.
Tóm tắt và bước tiếp theo
- Harness là phần thân bao quanh model: công cụ, quy tắc, quyền, ngữ cảnh.
- Muốn giữ đủ quy trình của repo mà dùng model rẻ: chạy Claude Code với
ANTHROPIC_BASE_URLtrỏ về nhà cung cấp có cổng tương thích Anthropic. - Codex CLI và Gemini CLI đọc được
CLAUDE.mdnếu cấu hình, nhưng không nạp đủ quy tắc theo mảng.
Bước tiếp theo: mở CLAUDE.md của repo bạn và đếm xem có bao nhiêu quy tắc mà «model giỏi nhưng không đọc file này» sẽ làm sai. Con số đó cho biết bạn cần harness nào. So sánh giá các gói, tôi viết ở bài so sánh gói AI code giá rẻ.
Câu hỏi thường gặp
›Harness là gì trong AI lập trình?
Harness là phần mềm bao quanh model: cho model công cụ đọc, sửa file và chạy lệnh, nạp quy tắc của dự án, quản lý quyền và ngữ cảnh. Claude Code, Codex CLI, OpenCode, Gemini CLI đều là harness.
›Claude Code có chạy được model không phải của Anthropic không?
Có, nếu nhà cung cấp có cổng tương thích Anthropic. Bạn đặt biến ANTHROPIC_BASE_URL trỏ về cổng đó cùng khoá API, Claude Code vẫn chạy như bình thường.
›Codex CLI có đọc được CLAUDE.md không?
Được nếu cấu hình. Thêm dòng project_doc_fallback_filenames = ["CLAUDE.md"] vào config.toml của Codex. Nó sẽ đọc CLAUDE.md của repo nhưng không tự nạp các file quy tắc theo mảng.
›Chạy Claude Code bằng model rẻ có rủi ro gì?
Code và quy tắc của repo được gửi tới máy chủ của nhà cung cấp đó. Cần chặn AI đọc file bí mật như .env, cấm lệnh vào cơ sở dữ liệu thật, và đọc kỹ chính sách dữ liệu của họ.
Tác giả
Chuyên gia chuyển đổi số · Đại diện 5F Edu
Hơn 8 năm triển khai và tư vấn chuyển đổi số cho doanh nghiệp vừa và nhỏ: chuẩn hoá quy trình, xây phần mềm quản lý bằng AppSheet và web app, tự động hoá bằng N8N. Người làm kênh YouTube Nghiện AppSheet.



