Trong bối cảnh công cụ AI cho nhà phát triển bùng nổ, chắc hẳn bạn đã nghe đến Gemini CLI trong các cuộc trò chuyện trên Dev Twitter, Hacker News hay GitHub. Đây là trợ lý mã hóa dòng lệnh mới nhất của Google, được thiết kế để tích hợp AI thông minh, nhận biết ngữ cảnh trực tiếp vào terminal của bạn.
Nhưng trong một thị trường đầy rẫy các agent mã nguồn mở và công cụ phát triển AI, Gemini CLI thực sự nổi bật đến mức nào? Để tìm hiểu, tôi đã dành thời gian thử nghiệm Gemini CLI cùng với các công cụ lập trình AI dòng lệnh phổ biến khác, bao gồm Claude Code CLI, Cody CLI, GPT Engineer, và một vài cái tên khác. Tôi đã chạy từng công cụ thông qua một bộ các tác vụ thực tế:
- Gỡ lỗi các script bị hỏng.
- Tạo các bài kiểm tra (tests).
- Tái cấu trúc (refactor) mã nguồn lộn xộn.
- Xây dựng các sườn API đơn giản.
Một số công cụ có khả năng đáng kinh ngạc. Một số khác thậm chí còn không cài đặt được.
Mục lục
Tại sao Công cụ Lập trình AI Dòng Lệnh (CLI) lại Quan trọng?
Các CLI agent lấp đầy một khoảng trống ngọt ngào giữa các IDE Copilot đầy đủ tính năng và các trình tạo mã dựa trên trình duyệt. Chúng nhẹ hơn, nhanh hơn và tích hợp trực tiếp vào quy trình làm việc mà nhiều nhà phát triển đã sử dụng, đặc biệt là những người làm việc với Docker, Git hoặc các stack phía máy chủ.
Chúng cho phép bạn tự động hóa việc tạo mã, gỡ lỗi, xây dựng sườn (scaffolding), và thậm chí lập kế hoạch tác vụ—tất cả chỉ từ terminal của bạn. Nếu bạn thích làm việc trong tmux
, Vim, hoặc đơn giản là không muốn rời khỏi terminal của mình mỗi 10 giây, những công cụ này có thể là tương lai.
Phương pháp Đánh giá Công cụ AI CLI
Để đảm bảo tính công bằng, tôi đã thử nghiệm mỗi công cụ trong các điều kiện tương đương:
- Hệ điều hành: Windows 11
- CPU: Intel Core i7 (Thế hệ 13)
- GPU: NVIDIA RTX 3060 (Laptop)
- RAM: 32GB DDR5
- Môi trường: VS Code + Git + Windows Terminal
- Bổ sung: WSL2 (Ubuntu), Docker Desktop, Python 3.11, Node.js LTS
Ngôn ngữ tập trung:
- Python
- JavaScript
Các trường hợp sử dụng (Use Cases):
- Xây dựng sườn (scaffold) một API CRUD đơn giản.
- Tạo unit test cho một hàm.
- Gỡ lỗi một script bị hỏng.
- Tái cấu trúc mã nguồn lộn xộn.
- Đặt câu hỏi bằng ngôn ngữ tự nhiên về một dự án cục bộ.
Tiêu chí đánh giá:
- Thời gian thiết lập và độ ổn định.
- Chất lượng mã nguồn đầu ra.
- Dễ sử dụng (lệnh, prompt, giao diện).
- Nhận thức ngữ cảnh (có hiểu dự án của tôi không?).
- Tính hữu ích trong quy trình làm việc thực tế của nhà phát triển.
Tôi đã thử nghiệm các agent này trên các kho mã thực tế, không phải dự án demo, và ghi lại hiệu suất của từng công cụ dưới các ràng buộc này.
Đánh giá Chi tiết các Công cụ Lập trình AI CLI Nổi bật
Gemini CLI
Chức năng: Trợ lý AI mã nguồn mở, dựa trên terminal, được cung cấp bởi các mô hình Gemini của Google. Bạn có thể sử dụng nó để tạo mã, gỡ lỗi, chạy lệnh shell, viết tài liệu, giải quyết vấn đề và các quy trình làm việc được AI hỗ trợ nói chung—tất cả mà không cần rời khỏi terminal.
Thiết lập:
- Cài đặt qua Homebrew/trình quản lý gói Linux (hỗ trợ macOS và Linux-WSL).
- Yêu cầu tài khoản Gemini Code Assist miễn phí.
- Không có Docker hoặc các phụ thuộc nặng—thiết lập nhanh chóng và gọn gàng.
Hiệu suất: Phản hồi nhanh chóng, linh hoạt đối với các prompt liên quan đến mã hóa và câu hỏi shell. Lý tưởng để tạo các đoạn mã (snippets), viết test, sửa lỗi hoặc chạy các lệnh nghiên cứu. Hỗ trợ tùy chỉnh cục bộ và chuỗi prompt với các cờ CLI.
Ưu điểm:
- Đưa LLM cấp độ Google trực tiếp vào terminal của bạn.
- Giao diện gọn gàng, có thể mở rộng (giấy phép Apache 2.0).
- Tích hợp với Gemini Code Assist để chia sẻ ngữ cảnh và tăng năng suất.
Nhược điểm:
- Yêu cầu truy cập internet và tài khoản Gemini.
- Một số tính năng vẫn đang được mở rộng như một phần của đợt ra mắt gần đây.
Đánh giá: Một lựa chọn thay thế hiện đại tuyệt vời cho AutoCode. Gemini CLI cho cảm giác trau chuốt, mạnh mẽ và rõ ràng được thiết kế cho các nhà phát triển yêu thích terminal. Nếu bạn đang tìm kiếm một CLI agent tiên tiến, được duy trì tích cực, đây là một trong những lựa chọn tốt nhất hiện có.
Claude Code CLI
Chức năng: Trợ lý mã hóa AI dựa trên terminal được cung cấp bởi các mô hình Claude 3 từ Anthropic. Được thiết kế cho các tác vụ cục bộ hoặc đặc thù dự án, nó có thể viết, giải thích, gỡ lỗi và tái cấu trúc mã với sự chú trọng vào chiều sâu ngữ cảnh và đầu ra an toàn.
Thiết lập: Cài đặt qua pip hoặc npm (tùy thuộc vào phiên bản cộng đồng). Yêu cầu khóa API Anthropic. Nhẹ nhàng, không có Docker hoặc phụ thuộc bổ sung.
Hiệu suất: Claude Code CLI tỏa sáng khi làm việc với các ngữ cảnh mã nguồn lớn hơn. Nó có thể xử lý toàn bộ tệp và hiểu các chuỗi logic phức tạp trên nhiều tệp tốt hơn hầu hết các agent. Đặc biệt ấn tượng khi được sử dụng trong các monorepo hoặc dự án cũ lộn xộn.
Ưu điểm:
- Xuất sắc trong việc duy trì ngữ cảnh trên các tệp dài.
- Đầu ra an toàn, dễ đọc và dễ giải thích.
- Phản hồi nhanh chóng, ít bị “ảo giác” (hallucination).
- Tuyệt vời cho việc pair-programming hoặc xem xét mã nguồn cũ.
Nhược điểm:
- Yêu cầu khóa API Anthropic (không thân thiện với gói miễn phí).
- Không có bộ nhớ agent hoặc bộ lập kế hoạch tác vụ từng bước.
- Vẫn đang trong quá trình phát triển nhanh chóng—các tính năng khác nhau tùy phiên bản.
Đánh giá: Claude Code CLI mang lại cảm giác giống như lập trình viên cặp thông minh nhất trong terminal của bạn. Nếu bạn đang đối phó với việc tái cấu trúc phức tạp, mã nguồn cũ, hoặc cần lý luận tự tin trên nhiều tệp, công cụ này nổi bật—đặc biệt so với các mô hình thất bại trong việc hiểu ngữ cảnh dài.
Smol Developer
Chức năng: Smol Developer là một CLI agent tối giản được xây dựng để đạt tốc độ. Bạn đưa cho nó một prompt, và nó trả lời bằng mã nguồn, giải thích hoặc gợi ý tệp—không có agent, bộ nhớ hay giao diện người dùng phức tạp.
Thiết lập: Cực kỳ dễ dàng. Clone repo, cài đặt phụ thuộc và chạy. Không có Docker, không rắc rối về khóa API.
Hiệu suất: Xử lý các prompt cơ bản như “xây dựng ứng dụng CRUD FastAPI” hoặc “thêm đăng nhập vào ứng dụng Flask này” mà không gặp vấn đề gì. Nó không giữ bộ nhớ trên toàn dự án, nhưng nhanh, hữu ích và hiếm khi bị lỗi.
Ưu điểm:
- Nhanh và phản hồi tốt.
- Dễ cài đặt.
- Không cố gắng làm quá nhiều thứ.
Nhược điểm:
- Không có bộ nhớ liên tục.
- Không thể lý luận trên nhiều tệp.
Đánh giá: Một trợ lý tuyệt vời để tạo các đoạn mã hoặc tệp nhanh chóng. Ít tốn công học hỏi, tiện ích cao.
OpenHands (trước đây là OpenDevin)
Chức năng: Cố gắng trở thành một nhà phát triển tự hành đầy đủ—lập kế hoạch tác vụ, thực hiện các bước và viết mã trong khi “suy nghĩ lớn”.
Thiết lập: Khó khăn ở lần đầu tiên. Cần Docker, các phiên bản Python cụ thể và tài nguyên hệ thống. Thường gặp sự cố container.
Hiệu suất: Tham vọng ấn tượng. Nó tạo ra toàn bộ cây thư mục tệp, thảo luận về logic của nó và cố gắng thực hiện các quy trình làm việc nhiều bước. Nhưng nó thất bại nhiều hơn thành công.
Ưu điểm:
- Thiết kế có tầm nhìn.
- Lý luận đa bước.
- Giao diện người dùng terminal slick.
Nhược điểm:
- Thiết lập dễ vỡ.
- Hiệu suất không nhất quán.
- Cần nhiều tài nguyên hệ thống.
Đánh giá: Rất hứa hẹn, nhưng chưa đủ ổn định cho công việc hàng ngày—tuy nhiên.
Continue CLI
Chức năng: Một công cụ đồng hành CLI với plugin Continue IDE. Hoạt động như một REPL được hỗ trợ bởi GPT cho codebase của bạn.
Thiết lập: Đơn giản. Chỉ cần cài đặt và chạy.
Sau khi cài đặt, bạn thường sẽ sử dụng các lệnh như:
continue help
continue ask "How does this function work?"
continue edit ./src/file.py --problem "fix the bug on line 42"
Hiệu suất: Hữu ích cho việc đặt câu hỏi, viết các hàm ngắn và giải thích lỗi. Thiếu ngữ cảnh tệp sâu nhưng bù lại bằng tốc độ.
Ưu điểm:
- Giao diện gọn gàng.
- Hữu ích cho hỏi đáp nhanh.
- Nhẹ nhàng.
Nhược điểm:
- Nhận thức dự án hạn chế.
- Không tự động chỉnh sửa tệp.
Đánh giá: Một “Copilot cho terminal của bạn” chắc chắn. Tuyệt vời cho các câu hỏi nhỏ và mã hóa có hướng dẫn.
Devika CLI
Chức năng: Nhận prompt, lập kế hoạch các tác vụ phụ và xây dựng dự án theo từng giai đoạn. Giải thích những gì nó đang làm ở mỗi bước.
Thiết lập: Devika là một AI coding agent cục bộ (giống như một nhà phát triển tự hành). Dưới đây là tóm tắt các bước:
- Clone repo.
- Thiết lập môi trường ảo Python với
uv
. - Cài đặt phụ thuộc Playwright (để duyệt web).
- Chạy backend.
- Chạy frontend.
- Truy cập qua trình duyệt:
http://127.0.0.1:3001
Mất một chút thời gian để cấu hình nhưng không quá tệ.
Hiệu suất: Hoạt động rất tốt với các ứng dụng web đơn giản. Đối với các prompt lớn hơn hoặc phạm vi không rõ ràng, nó bị “ảo giác” hoặc bị kẹt. Nhưng việc theo dõi nó “suy nghĩ” rất thú vị.
Ưu điểm:
- Lập kế hoạch tác vụ phụ.
- Giải thích rõ ràng.
- Có thể tạo ra các ứng dụng hoàn chỉnh.
Nhược điểm:
- Dễ xảy ra lỗi.
- Không xác thực tốt.
- Đầu ra có thể bị nhiễu.
Đánh giá: Tốt cho việc tạo mẫu nhanh (rapid prototyping) và thử nghiệm. Không tốt cho việc hoàn thiện hoặc duy trì mã nguồn.
Cody CLI
Chức năng: Agent CLI của Sourcegraph hiểu codebase thực tế của bạn. Bạn có thể hỏi những điều như “Class này được sử dụng ở đâu?” hoặc “Tái cấu trúc hàm này.”
Thiết lập: Liên kết chặt chẽ với các công cụ lập chỉ mục của Sourcegraph. Nếu bạn đã sử dụng Sourcegraph, đây là lựa chọn hiển nhiên.
Hiệu suất: “Thông minh” nhất về mặt ngữ cảnh. Nó trả lời dựa trên việc sử dụng thực tế và mối quan hệ giữa các tệp. Nhưng bị hạn chế nếu bạn không tích hợp đầy đủ với Sourcegraph.
Ưu điểm:
- Nhận thức mã nguồn sâu sắc.
- Trả lời chính xác.
- Tìm kiếm xuất sắc.
Nhược điểm:
- Yêu cầu Sourcegraph.
- Ít hữu ích bên ngoài hệ sinh thái của nó.
Đánh giá: Đáng kinh ngạc cho các đội nhóm sử dụng Sourcegraph. Mang tính đặc thù, nhưng mạnh mẽ.
GPT Engineer
Chức năng: Bạn đưa cho nó một bản đặc tả (spec), và nó xây dựng một dự án từ đầu. Bao gồm nhật ký quá trình suy nghĩ và giải thích từng tệp.
Thiết lập: Cần thiết lập Python đúng cách và khóa API.
Hiệu suất: Xuất sắc với các prompt có cấu trúc. Bạn nói, “Xây dựng ứng dụng todo trong Flask có đăng nhập”, và nó bắt tay vào việc, tạo tệp và comment.
Ưu điểm:
- Dễ dàng lặp lại (iterate).
- Giải thích lý luận.
- Cấu hình có thể tùy chỉnh.
Nhược điểm:
- Chậm với các prompt lớn.
- Cần hoàn thiện (polishing).
- Không xác thực hoặc kiểm tra.
Đánh giá: Tuyệt vời cho MVPs hoặc khám phá ý tưởng. Cần xem xét lại tất cả đầu ra thủ công.
ChatDev
Chức năng: Một “công ty” AI nơi các vai trò như CEO, CTO và Dev tương tác để xây dựng phần mềm. Đúng vậy, thật đấy.
Thiết lập: Nặng nề, nhưng tài liệu tốt.
Hiệu suất: Giống như một món đồ chơi hơn. Việc xem các vai trò AI tranh luận về kiến trúc rất thú vị, nhưng kết quả không nhất quán và thường dài dòng.
Ưu điểm:
- Ý tưởng độc đáo.
- Xem rất vui.
- Logic đa agent.
Nhược điểm:
- Chậm.
- Dễ tạo ra đầu ra kỳ lạ.
- Không sử dụng được cho các dự án nghiêm túc.
Đánh giá: Tốt nhất chỉ để giải trí. Không dùng cho công việc sản xuất.
Những Phát hiện Bất ngờ
Trong quá trình thử nghiệm, một số điều đã khiến tôi ngạc nhiên:
- Hầu hết các agent bị “ảo giác” ít hơn khi các prompt rất cụ thể.
- Các công cụ không cố gắng làm mọi thứ thường hoạt động tốt nhất.
- Trải nghiệm người dùng (UX) của CLI quan trọng hơn tôi nghĩ—log rõ ràng và các bước có cấu trúc tạo ra sự khác biệt lớn.
Tình hình Hiện tại của Công cụ Lập trình AI trên Dòng lệnh
Liệu chúng đã sẵn sàng thay thế môi trường phát triển đầy đủ của bạn? Không.
Nhưng liệu chúng có hữu ích ngay bây giờ không? Chắc chắn là có.
Đối với việc xây dựng sườn, giải thích, hoặc các tác vụ tự động hóa nhỏ, CLI agent đã rất hữu ích. Đối với các dự án tái cấu trúc lớn hoặc xây dựng full-stack—chúng đang tiến bộ, nhưng vẫn cần sự giám sát.
Kỳ vọng cho Tương lai
Dưới đây là những gì tôi mong muốn thấy tiếp theo từ các công cụ này:
- Hỗ trợ LLM ngoại tuyến/cục bộ.
- Chỉnh sửa tệp thông minh hơn (không chỉ là tạo ra).
- Xử lý tốt hơn các dự án đa tệp.
- Các quy trình làm việc nhận biết Git (ví dụ: tạo commit message, đề xuất PR).
Kết luận
Các CLI coding agent không còn chỉ là một khái niệm—chúng đã thực tế, hoạt động hiệu quả và trong một số trường hợp, khá đáng kinh ngạc. Mặc dù hầu hết chúng vẫn chưa phải là “cài đặt và quên”, nhưng chúng hoàn toàn có thể giúp giảm tải nhận thức và tăng tốc độ phát triển.
Hãy thử chúng, đặc biệt nếu bạn dành nhiều thời gian trong terminal. Chỉ cần giữ kỳ vọng thực tế—và giữ git diff
của bạn sạch sẽ.
Bạn có một CLI coding agent yêu thích nào mà tôi đã bỏ lỡ không? Hãy cho tôi biết—tôi luôn sẵn sàng thử nghiệm một cái khác.