So sánh 6 công cụ chạy coding agent trong CI: chọn thế nào để việc tự động không đổ vỡ
Một nhóm làm SEO chạy thử 6 công cụ điều khiển coding agent trong CI: Claude Code chạy trọn 6 việc, OpenCode linh hoạt nhất, Aider hay tụt về chế độ hỏi tay, còn ZCode vẫn chưa kiểm chứng được ở quy mô lớn. Bài rút ra checklist 7 câu hỏi để chọn công cụ, cùng một hiệu chỉnh quan trọng về câu chuyện mở mã nguồn của ZCode.
Một nhóm làm SEO vừa chạy thử sáu công cụ điều khiển coding agent trên cùng sáu công việc định kỳ. Tất cả chạy ở chế độ tự động, không cần người ngồi canh, bên trong CI. Kết quả gây bất ngờ: thứ làm hỏng pipeline nhiều nhất không phải câu trả lời sai của model, mà là công cụ không chạy nổi khi vắng người giám sát.
Harness ở đây là "khung chạy" bọc quanh model ngôn ngữ: vòng lặp, công cụ, cơ chế phân quyền, quản lý ngữ cảnh và điểm mở rộng. Khung chạy cho phép model đọc file, chạy lệnh và hoàn thành việc nhiều bước mà không cần ai gõ từng lệnh.
Khi các model đầu bảng đã gần ngang nhau về chất lượng, khung chạy trở thành yếu tố quyết định. Nó quyết định agent có chạy qua đêm trong CI được không. Nó quyết định agent có gọi được nguồn dữ liệu của bạn qua MCP không, và có ở yên trong giới hạn quyền an toàn không.
MCP là giao thức chuẩn mở để agent kết nối với nguồn dữ liệu ngoài như Search Console hay trình thu thập dữ liệu, thay vì mỗi công cụ tự nghĩ một cách cắm riêng.
Sáu công việc đem ra thử
Nhóm Echloe chạy agent ở chế độ tự động trong GitHub Actions, trên sáu việc lặp đi lặp lại:
- Phân tích chênh lệch hai bản thu thập dữ liệu (crawl diff), đánh dấu lỗi mới.
- Sinh schema markup cho trang sản phẩm, tức đoạn mã mô tả cấu trúc để công cụ tìm kiếm hiểu trang.
- Phát hiện cơ hội liên kết nội bộ.
- Sinh brief nội dung từ dữ liệu trang kết quả tìm kiếm.
- Kiểm tra cách công cụ tìm kiếm AI hiển thị trang của họ (GEO audit).
- Viết lại hàng loạt meta description, có người duyệt trước khi đăng.
Điểm chung của sáu việc: lặp lại, làm việc trên file, và kiểm chứng được kết quả. Đúng kiểu việc agent làm tốt, với điều kiện harness chịu chạy mà không cần ai bấm tiếp.
Từng công cụ thể hiện ra sao
Claude Code chạy trọn cả sáu việc ở chế độ headless. Cờ --print và các tầng phân quyền cho phép khóa ở chế độ chỉ đọc khi kiểm tra, chỉ mở quyền ghi cho việc sinh nội dung. MCP cắm thẳng dữ liệu Search Console vào. Cái giá là bị khóa vào model của Anthropic.
# Chạy Claude Code headless trong CI
claude -p "Phân tích chênh lệch crawl trong /data/crawl-diff.csv. \
Đánh dấu trang có lỗi 4xx mới hoặc title đổi. \
Ghi kết quả ra /output/crawl-report.md" \
--allowedTools "Read,Write(/output/*)" \
--print
Codex CLI làm tốt các việc sinh nội dung. Mô hình sandbox của nó nghiêm, tốt cho an toàn, nhưng việc phân tích crawl diff phải cấu hình thêm mới được quyền đọc file. Chế độ headless chạy được, dù cờ --quiet nuốt mất một phần thông tin chẩn đoán hữu ích.
Gemini CLI cắm gọn với nguồn dữ liệu của Google Cloud nên truy vấn Search Console rất nhẹ. Chạy headless ổn định. Cửa sổ ngữ cảnh dài giúp ích ở việc tìm liên kết nội bộ, nơi phải nạp cả sơ đồ trang lớn. Đánh đổi là khóa vào model Google.
OpenCode là bất ngờ thú vị về độ linh hoạt. Nhóm trỏ nó vào Claude qua proxy tương thích OpenAI rồi sang GPT-4o, chạy cùng một việc với cả hai model để so sánh. Hỗ trợ MCP đầy đủ. Danh sách đường dẫn cho phép tuy đơn giản nhưng hiệu quả trong CI.
# Đoạn cấu hình OpenCode cho CI
model: claude-sonnet-4-20250514
provider: anthropic-compatible
allowed_paths:
- /workspace/data/*
- /workspace/output/*
mcp_servers:
- name: search-console
url: http://localhost:3001
Aider chắc tay ở việc viết lại nội dung, vì cách tiếp cận dựa trên git khiến mọi thay đổi đều là commit có thể xem lại hoặc hoàn tác. Nhưng chế độ headless phải xoay xở bằng script: thỉnh thoảng nó tụt về hỏi tương tác giữa chừng, giết chết pipeline CI cho đến khi nhóm bọc thêm bộ đếm giờ.
ZCode là cái tên cần đọc kỹ nhất. Tác giả bài gốc chỉ chạy tương tác hai việc, chạy được, và thành thật rằng không thể nói gì thêm nếu chưa chạy không giám sát vài tuần. Đó là cách đánh giá trung thực duy nhất cho một harness tự động hóa.
Về ZCode còn một hiệu chỉnh quan trọng. Bài gốc viết theo hướng "Z.ai mở mã nguồn ZCode vào tháng 10/2026". Thực tế đã kiểm chứng thì khác. Z.ai mở mã nguồn client ZCode ngày 20/9/2026 tại github.com/zai-org/ZCode, nhưng đó là phản ứng xử lý khủng hoảng, không phải một buổi ra mắt.
Hai ngày trước đó, một bài phân tích kỹ thuật của ferstar đăng trên Hacker News phát hiện điều đáng lo. Bản desktop đóng gói sẵn của ZCode đã gom cả thư mục làm việc, gồm toàn bộ lịch sử git, rồi đẩy lên lưu trữ Aliyun OSS. Trong một phiên được ghi nhận, 313MB trên tổng 345MB tải lên là lịch sử git, tức 86,6%. Ngày 21/9 công ty đăng biện pháp khắc phục: repo mở ngày 20/9, đạt 3.400 sao trong một ngày, kiểm toán độc lập bên thứ ba, tuyên bố đã xóa bucket lưu trữ. Chất lượng harness của ZCode vì thế vẫn ở trạng thái chưa kiểm chứng, và câu chuyện mở mã nguồn của nó là bài học về niềm tin, không phải về tính năng.
Bảng so sánh nhanh
| Công cụ | Khóa model | Chạy headless/CI | Hỗ trợ MCP | Mô hình phân quyền | Giấy phép |
|---|---|---|---|---|---|
| Claude Code | Chỉ model Anthropic | Có (--print) |
Gốc | Theo tầng (gợi ý / tự sửa / toàn quyền) | Độc quyền + mở mã nguồn |
| Codex CLI | Chỉ model OpenAI | Có (--quiet) |
Qua plugin | Dựa trên sandbox | Mở (Apache 2.0) |
| Gemini CLI | Chỉ model Google | Có | Gốc | Tích hợp IAM của Google Cloud | Mở (Apache 2.0) |
| OpenCode | Mọi API tương thích OpenAI | Có | Gốc | Danh sách đường dẫn cho phép | Mở (MIT) |
| Aider | Nhiều nhà cung cấp | Một phần (chế độ script) | Qua adapter cộng đồng | Lưới an toàn dựa trên git | Mở (Apache 2.0) |
| ZCode | Nhiều nhà cung cấp (mô tả) | Tuyên bố có, chưa kiểm chứng ở quy mô lớn | Dự kiến | Chưa rõ | Mở (MIT) |
Bảy câu hỏi trước khi chọn
Bài gốc đưa ra một checklist quyết định, đáng giữ nguyên:
- Chạy headless: nó có chạy trong CI mà không bao giờ hỏi nhập liệu không?
- Kiểm soát quyền: có giới hạn được đường dẫn file, truy cập mạng và lệnh shell theo từng việc không?
- Hỗ trợ MCP: có nối được nguồn dữ liệu của bạn qua giao thức chuẩn không?
- Linh hoạt model: đổi model có phải viết lại prompt và cấu hình công cụ không?
- Dấu vết kiểm tra: có thấy chính xác agent đã đọc, đã ghi và đã chạy gì không?
- Chế độ hỏng: khi hỏng, nó hỏng ồn ào (mã lỗi, log) hay hỏng im lặng?
- Kiểm soát chi phí: có đặt được ngân sách token hoặc giới hạn bước cho mỗi lần chạy không?
Ba mục đầu cộng với dấu vết kiểm tra là ngưỡng tối thiểu cho tự động hóa marketing an toàn. Phần còn lại là sở thích.
Con số đáng nhớ đi kèm đến từ METR. Thử nghiệm ngẫu nhiên có đối chứng tháng 7/2025 của họ (Becker và cộng sự, arXiv 2507.09089) cho thấy lập trình viên giàu kinh nghiệm dùng công cụ AI lại chậm hơn 19%. Điều trớ trêu: những người này tưởng mình nhanh hơn khoảng 20%.
Chọn sâu của hãng hay linh hoạt của mở
Nhóm công cụ của hãng (Claude Code, Codex CLI, Gemini CLI) có độ tinh chỉnh sâu nhất cho đúng model của họ. Chúng hiểu định dạng gọi công cụ của model một cách tự nhiên. Chúng xử lý được trường hợp biên và thường có tính năng mới trước.
Nhóm mở, không khóa nhà cung cấp (OpenCode, Aider, ZCode) cắt được khóa chặt và cho định tuyến sang model rẻ nhất hoặc hợp nhất cho từng việc. Cái giá là cấu hình nhiều hơn và thỉnh thoảng va vào chỗ tương thích chưa mượt.
Với đội chạy nhiều việc SEO mỗi đêm, nhóm tác giả chia việc cho hai công cụ. Claude Code đảm nhận các việc kiểm tra quan trọng, nơi mô hình phân quyền của Anthropic cho họ sự yên tâm. OpenCode đảm nhận các việc nội dung hàng loạt, nơi họ muốn thử A/B model mà không đổi pipeline.
Việc kiểm tra lại code do agent viết bằng công cụ phân tích tĩnh cũng thuộc cùng một triết lý. Bài chạy Larastan từng level trên code AI viết trên blog này đã cho thấy: đừng tin agent, hãy kiểm chứng đầu ra của nó.
Quy tắc rút gọn: chọn theo độ ổn định khi chạy tự động và kiểm soát quyền trước, chọn model sau. Một công cụ chạy xuyên đêm không đổ vỡ đáng giá hơn một model thông minh hơn vài phần trăm nhưng cần người ngồi canh.
Nguồn tham khảo
- dev.to/devtoaaron, "Coding Agent Harnesses Compared for SEO and GEO Work" (bản đầy đủ trên echloe.io), 2026-10-22.
- Becker và cộng sự, "Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity", arXiv 2507.09089 (thử nghiệm METR, tháng 7/2025).
- github.com/zai-org/ZCode — repo mở mã nguồn ZCode (20/9/2026); bài phân tích của ferstar trên Hacker News (18/9/2026) về việc ứng dụng đóng gói tải lịch sử git lên Aliyun OSS.