Vượt xa giao diện GUI: Tại sao CLI lại chiếm ưu thế trong lập trình AI
Tôi đã dành hàng tháng trời chuyển đổi qua lại giữa Cursor và terminal trước khi nhận ra mình đang tự làm khó quy trình làm việc của chính mình. Các công cụ như GitHub Copilot rất tuyệt vời để tự động hoàn thành mã (autocomplete), nhưng chúng thường tạo cảm giác như một lớp riêng biệt nằm trên mã nguồn của bạn. Claude Code, trợ lý dựa trên CLI của Anthropic, đã đảo ngược kịch bản này. Nó hoạt động ngay tại nơi các tiến trình build, kiểm thử (test) và các thao tác git thực sự diễn ra.
Đây không chỉ là một cửa sổ chat thông thường. Claude Code coi terminal là một thành phần cốt lõi. Các lệnh slash của nó đóng vai trò là các điểm truy cập chuyên biệt cho phép AI tương tác trực tiếp với hệ thống tệp và shell của bạn. Sau khi sử dụng nó cho một đợt di chuyển lớn từ CommonJS sang ESM trên hơn 50 tệp, tôi thấy cách tiếp cận bằng CLI ổn định hơn nhiều so với các tiện ích mở rộng IDE truyền thống.
CLI Agent và IDE Extension: Sự khác biệt là gì?
Hiểu được sự khác biệt giữa hai loại này sẽ giúp bạn chọn đúng công cụ cho công việc. Các tiện ích mở rộng IDE tập trung vào trải nghiệm “ghost text” (văn bản gợi ý mờ). Chúng gợi ý mã khi bạn nhập dựa trên các tệp bạn hiện đang mở trong các tab.
Claude Code là một agent (tác nhân). Bạn không chỉ yêu cầu một gợi ý; bạn giao cho nó một nhiệm vụ. Vì có quyền truy cập trực tiếp để chạy ls, grep và npm test, nó có thể tự xác minh kết quả công việc của mình. Điều này loại bỏ việc phải chuyển đổi ngữ cảnh liên tục giữa trình soạn thảo và terminal. Đây là một công cụ chuyên dụng cho các tác vụ bảo trì như sửa lỗi hoặc cập nhật tài liệu.
Thực tế của quy trình làm việc dựa trên Terminal
Chuyển sang một trợ lý ưu tiên CLI không phải lúc nào cũng toàn màu hồng. Tôi đã ghi lại hơn 200 giờ sử dụng Claude Code, và dưới đây là bảng phân tích trung thực về ưu và nhược điểm.
Lợi ích
- Ngữ cảnh sâu: Claude Code tự động lập chỉ mục (index) dự án của bạn. Nó hiểu cấu trúc thư mục mà bạn không cần phải giải thích thư mục
/servicesnằm ở đâu. - Khả năng thực thi: Nó có thể chạy bộ kiểm thử của bạn. Nếu một test thất bại, nó sẽ đọc stack trace và lặp lại việc sửa lỗi mà không cần nhập liệu thủ công.
- Hiệu quả: Nhập
/bugkèm theo một đoạn log sẽ nhanh hơn đáng kể so với việc điều hướng thủ công đến một tệp và bôi đen mã nguồn.
Đánh đổi
- Chi phí cao hơn: Vì agent đọc nhiều tệp hơn để lấy ngữ cảnh, nó tiêu tốn token nhanh chóng. Một lệnh
/reviewsâu trên một repo lớn có thể dễ dàng tốn từ 0,50 đến 1,00 USD phí API. - Thành thạo Terminal: Bạn cần phải thoải mái với các lệnh shell. Nếu bạn thích các công cụ git dựa trên GUI, lộ trình học tập có thể sẽ hơi dốc.
- Rủi ro lặp lại: Thỉnh thoảng, agent bị kẹt khi cố gắng sửa một lỗi build mà thực tế yêu cầu thay đổi cấu hình thủ công.
Bắt đầu
Bạn cần một môi trường ổn định để có kết quả tốt nhất. Tôi khuyên dùng phiên bản Node.js LTS mới nhất. Việc cài đặt rất đơn giản, nhưng tôi thực sự khuyên bạn nên thiết lập một alias để tiết kiệm thao tác gõ phím.
# Cài đặt toàn cục
npm install -g @anthropic-ai/claude-code
# Khởi chạy và xác thực
claude
# Mẹo nhỏ: Thêm dòng này vào tệp .zshrc hoặc .bashrc của bạn
alias ai='claude'
Sau khi đã vào, hãy chạy /init. Điều này giúp agent lập chỉ mục dự án và tìm hiểu các quy ước lập trình cụ thể của bạn, chẳng hạn như bạn thích thụt lề bằng Tab hay Space.
Bốn lệnh thiết yếu cho công việc lập trình hàng ngày
Sức mạnh thực sự của Claude Code nằm ở các lệnh slash cụ thể. Dưới đây là cách tôi sử dụng chúng để xử lý các công việc nặng nhọc trong môi trường production.
1. Debug nhanh với /bug
Khi một lượt chạy Vitest hoặc Jest thất bại, đừng lãng phí thời gian tìm kiếm tệp tin. Hãy dán trực tiếp lỗi vào lệnh.
/bug Tôi đang gặp lỗi 'TypeError: null is not an object' trong luồng đăng nhập của AuthService
Claude sẽ tìm kiếm trong mã nguồn, tìm tệp AuthService.ts, xác định việc thiếu kiểm tra null và đề nghị áp dụng bản sửa lỗi. Sau đó, nó có thể chạy lại các bài kiểm thử để xác nhận bản sửa lỗi hoạt động tốt.
2. Chỉnh sửa đa tệp với /edit
Lệnh /edit hoàn hảo cho các thay đổi về cấu trúc. Hãy tưởng tượng bạn cần thêm tenant_id vào schema cơ sở dữ liệu Prisma và cập nhật các route API tương ứng.
/edit Thêm 'tenant_id' vào Prisma schema, cập nhật User controller, và sửa lỗi xác thực Zod
Nó sẽ định vị schema, controller và các tệp xác thực, áp dụng tất cả các thay đổi trong một lần chạy. Điều này giúp tiết kiệm hàng phút điều hướng tệp thủ công.
3. Kiểm tra trước khi đẩy mã với /review
Trước khi đẩy một Pull Request, tôi sử dụng /review như một lưới an toàn. Nó rất xuất sắc trong việc phát hiện các câu lệnh console.log hoặc các lỗi logic tiềm ẩn trong mã mới.
/review Kiểm tra hai commit cuối của tôi để tìm các vấn đề về hiệu suất hoặc rủi ro bảo mật
4. Quản lý ngữ cảnh với /compact
Các phiên làm việc dài với AI có thể dẫn đến “trôi dạt ngữ cảnh” (context drift). Mô hình có thể bị nhầm lẫn bởi các phần cũ của cuộc hội thoại. Tôi sử dụng /compact để tóm tắt tiến trình và đặt lại lịch sử token. Điều này giúp các phản hồi của AI luôn sắc bén và ngăn hóa đơn API của bạn tăng vọt.
Mẹo nâng cao: Piping Output
Bạn có thể truyền (pipe) đầu ra của terminal trực tiếp vào Claude. Điều này cực kỳ hữu ích để sửa các lỗi build trong pipeline CI/CD hoặc môi trường local.
npm run build | claude "Xác định lý do tại sao quá trình build thất bại và đề xuất cách sửa"
Điều này cho phép agent tiếp nhận toàn bộ log ngay lập tức. Nó giúp bạn không cần phải sao chép-dán nhiều màn hình văn bản vào cửa sổ chat.
Lời kết
Sử dụng các lệnh slash của Claude Code đã giúp tôi cắt giảm khoảng 40% “thời gian rập khuôn” (boilerplate time). Nó không thay thế nhu cầu hiểu rõ mã nguồn của bạn, nhưng nó xử lý các công việc tẻ nhạt khi phải nhảy qua lại giữa các tệp. Nếu bạn đã mệt mỏi với những hạn chế của thanh sidebar trong IDE, việc chuyển các tương tác AI vào terminal là một bước tiến logic tiếp theo.

