- Tác giả

- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
Hướng Dẫn Cài Đặt Và Sử Dụng CLI Của Các AI Coding Tool
Giới Thiệu
Ở bài Introduction - Popular AI Coding Tools, chúng ta đã phân loại các công cụ AI lập trình và thấy một xu hướng rõ ràng: hầu như hãng nào cũng có CLI — một coding agent chạy ngay trong terminal. Bài How AI Coding Assistants Work đã giải thích vì sao một vòng lặp agent đơn giản lại làm được nhiều việc đến vậy.
Bài này là phần thực hành: cài đặt và sử dụng CLI của từng tool, kèm cách gọi các AI chatbot từ terminal. Sau bài này, bạn sẽ:
- Cài đặt được CLI của Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Kiro và Google Antigravity
- Biết các lệnh cơ bản: mở session tương tác, chạy non-interactive (headless), tiếp tục session cũ
- Gọi ChatGPT, Claude, Gemini, Perplexity, Grok từ terminal qua API
- Chạy cùng một task với nhiều CLI agent để so sánh
Yêu Cầu
- macOS, Linux hoặc Windows (khuyến khích dùng WSL)
- Node.js 22+ nếu cài bằng npm (khuyến khích quản lý bằng
nvmhoặcfnm) - Tài khoản và gói dịch vụ tương ứng của từng tool (một số tool có gói Free để dùng thử)
- Một project mẫu có git để thử nghiệm
Các Lệnh CLI Tổng Hợp
| Tool | Lệnh | Cài đặt nhanh | Chạy headless |
|---|---|---|---|
| Claude Code | claude |
curl -fsSL https://claude.ai/install.sh | bash |
claude -p "..." |
| OpenAI Codex | codex |
npm install -g @openai/codex |
codex exec "..." |
| GitHub Copilot | copilot |
npm install -g @github/copilot |
copilot -p "..." |
| Cursor | cursor-agent |
curl https://cursor.com/install -fsS | bash |
cursor-agent -p "..." |
| Kiro (Amazon Q) | kiro-cli |
curl -fsSL https://cli.kiro.dev/install | bash |
— |
| Google Antigravity | agy |
Installer tại antigravity.google/cli | — |
| Gemini CLI (API key) | gemini |
npm install -g @google/gemini-cli |
gemini -p "..." |
Claude Code
# Cài đặt native (khuyến nghị) — macOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash
# Hoặc Homebrew
brew install --cask claude-code
# Hoặc npm (cần Node.js 18+)
npm install -g @anthropic-ai/claude-code
# Kiểm tra cài đặt và môi trường
claude --version
claude doctor
Sử dụng cơ bản:
# Mở session tương tác, lần đầu sẽ mở browser để đăng nhập
cd my-project
claude
# Tạo CLAUDE.md mô tả project (chạy trong session)
> /init
# Chạy non-interactive (headless), phù hợp cho script và CI
claude -p "Tìm và sửa các lỗi TypeScript trong thư mục src/"
# Tiếp tục session gần nhất
claude -c
# Chọn session cũ để tiếp tục
claude -r
# Chọn model
claude --model opus
# Pipe dữ liệu vào Claude
git diff main | claude -p "Review đoạn diff này, tập trung vào bug và security"
Giải thích:
/initsinh fileCLAUDE.md— Claude sẽ đọc file này ở mỗi session để biết convention, lệnh build/test của project.-p(print mode) chạy một lần và in kết quả ra stdout, kết hợp được với pipe Unix.-c/-rgiúp tiếp tục công việc dang dở mà không mất context.- Trong session, nhấn
Shift+Tabđể chuyển giữa các chế độ (mặc định → tự động chấp nhận sửa file → plan mode).
OpenAI Codex CLI
# Cài đặt qua npm
npm install -g @openai/codex
# Hoặc Homebrew
brew install codex
# Đăng nhập bằng tài khoản ChatGPT (hoặc dùng API key)
codex login
# Mở session tương tác
cd my-project
codex
# Bắt đầu với một prompt
codex "Thêm validate email cho form đăng ký"
# Chạy non-interactive (dùng trong script/CI)
codex exec "Cập nhật README với hướng dẫn chạy project bằng Docker"
# Tiếp tục session trước
codex resume
Giải thích:
- Codex đọc file
AGENTS.mdtrong project làm hướng dẫn — đây là định dạng mở mà Cursor, Copilot, Kiro... cũng hỗ trợ. codex execchạy headless, in kết quả ra stdout.- Trong session, dùng
/modelđể đổi model và mức reasoning,/approvalsđể chỉnh mức tự chủ (hỏi trước mỗi lệnh hay tự động trong workspace).
GitHub Copilot CLI
Copilot CLI yêu cầu Node.js 22+ và một gói Copilot đang hoạt động (gói Business/Enterprise cần admin bật policy cho CLI).
# Cài đặt qua npm
npm install -g @github/copilot
# Hoặc qua Homebrew (macOS/Linux)
brew install copilot-cli
# Hoặc WinGet (Windows)
winget install GitHub.Copilot
# Kiểm tra version
copilot --version
Sử dụng:
# Mở session tương tác trong thư mục project
cd my-project
copilot
# Lần đầu, đăng nhập bằng lệnh trong session
> /login
# Chạy non-interactive với một prompt (phù hợp cho script, CI)
copilot -p "Giải thích cấu trúc thư mục src/ và liệt kê các API endpoint"
# Cập nhật lên version mới nhất
npm update -g @github/copilot
Giải thích:
copilotmở giao diện chat trong terminal, agent có thể đọc file, đề xuất sửa code và chạy lệnh shell (sẽ hỏi bạn xác nhận trước mỗi hành động nhạy cảm).-p/--promptchạy một lần rồi thoát, phù hợp để tích hợp vào script.- Gõ
/helptrong session để xem danh sách slash command mới nhất, vì Copilot CLI cập nhật rất nhanh.
Cursor CLI
# Cài đặt (macOS / Linux / WSL)
curl https://cursor.com/install -fsS | bash
# Đăng nhập bằng tài khoản Cursor
cursor-agent login
# Mở session tương tác
cd my-project
cursor-agent
# Chạy non-interactive (print mode), chọn model cụ thể
cursor-agent -p "Viết unit test cho src/utils/date.ts" --model auto
# Xuất kết quả dạng JSON để xử lý trong pipeline CI
cursor-agent -p "Review các thay đổi trong git diff hiện tại" --output-format json
Giải thích:
- Cursor CLI dùng chung rules (
.cursor/rules,AGENTS.md) và MCP config với Cursor IDE. - Print mode (
-p) rất hữu ích để chạy trong GitHub Actions, ví dụ tự động review hoặc tự sửa lỗi lint.
Kiro CLI (Thay Thế Amazon Q Developer CLI)
# Cài đặt (macOS / Linux) — nếu máy có Amazon Q CLI, installer sẽ nâng cấp tại chỗ
curl -fsSL https://cli.kiro.dev/install | bash
# Nếu shell báo không tìm thấy lệnh, thêm ~/.local/bin vào PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# Đăng nhập (Builder ID, Google, GitHub hoặc IAM Identity Center)
kiro-cli login
# Mở session chat với agent trong project hiện tại
cd my-terraform-project
kiro-cli
Giải thích:
- Cấu hình cũ trong
~/.aws/amazonq(prompt, agent, MCP server) được copy sang~/.kiro, MCP config nằm ở~/.kiro/settings/mcp.json. - Thư mục
.amazonqtrong project vẫn được Kiro CLI đọc, nên rules và agent của team không bị mất. - Muốn quay lại Q CLI: chạy
kiro-cli uninstallrồi cài lại Amazon Q Developer CLI.
Google Antigravity CLI Và Gemini CLI
Từ ngày 18/6/2026, Gemini CLI ngừng phục vụ tài khoản Google AI cá nhân (Free/Pro/Ultra). Công cụ thay thế là Antigravity CLI với lệnh agy, dùng chung agent harness với Antigravity IDE.
# Cài đặt: tải installer cho hệ điều hành của bạn tại https://antigravity.google/cli
# Installer đặt binary `agy` vào ~/.local/bin và thêm thư mục này vào PATH
# Kiểm tra cài đặt
agy --version
# Mở session tương tác (lần đầu sẽ yêu cầu đăng nhập tài khoản Google)
cd my-project
agy
Nếu bạn dùng API key (trả theo token) hoặc license Gemini Code Assist doanh nghiệp, Gemini CLI vẫn hoạt động:
# Cài Gemini CLI
npm install -g @google/gemini-cli
# Dùng với API key từ Google AI Studio
export GEMINI_API_KEY="your-api-key"
gemini
# Chạy non-interactive
gemini -p "Tóm tắt những thay đổi chính trong CHANGELOG.md"
Lưu ý trên Linux: nếu cài cả Antigravity desktop app và CLI, lệnh agy có thể bị trùng tên. Cách xử lý: tạo alias hoặc symlink trỏ đúng binary trong ~/.local/bin.
Windsurf
Về CLI: Windsurf không có CLI agent riêng như Claude Code hay Codex. Bạn có thể mở project từ terminal bằng lệnh windsurf . (cài qua Command Palette → "Install 'windsurf' command in PATH"), còn nếu cần agent chạy trên terminal/cloud thì Cognition hướng người dùng sang Devin.
# Mở thư mục hiện tại bằng Windsurf
windsurf .
# Mở một file cụ thể
windsurf src/app.ts
Sử Dụng AI Chatbot Từ CLI
Các chatbot không có CLI chính thức dạng "chat", nhưng bạn hoàn toàn có thể gọi chúng từ terminal qua API. Lưu ý: API được tính phí riêng theo token, không dùng chung gói subscription của web/app.
Cách 1: Gọi API trực tiếp bằng curl
# ChatGPT (OpenAI API)
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-5", "input": "Giải thích sự khác nhau giữa process và thread"}'
# Claude (Anthropic API)
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-5-5", "max_tokens": 1024,
"messages": [{"role": "user", "content": "Viết regex validate số điện thoại Việt Nam"}]}'
# Perplexity (API tương thích OpenAI, có trích dẫn nguồn)
curl https://api.perplexity.ai/chat/completions \
-H "Authorization: Bearer $PERPLEXITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "sonar", "messages": [{"role": "user", "content": "Laravel phiên bản mới nhất có gì thay đổi?"}]}'
# Grok (xAI API tương thích OpenAI)
curl https://api.x.ai/v1/chat/completions \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "grok-4", "messages": [{"role": "user", "content": "So sánh Redis và Memcached"}]}'
Giải thích:
- Mỗi nhà cung cấp cấp API key riêng trên trang console của họ (OpenAI Platform, Anthropic Console, Google AI Studio, Perplexity API, xAI Console).
- Perplexity và xAI dùng định dạng request giống OpenAI, nên có thể dùng chung OpenAI SDK chỉ bằng cách đổi
base_url. - Tên model thay đổi thường xuyên, hãy xem danh sách model hiện tại trong tài liệu API của từng nhà cung cấp.
Cách 2: Dùng tool llm — một CLI cho mọi chatbot
llm là CLI mã nguồn mở cho phép gọi nhiều model qua plugin, lưu lịch sử chat vào SQLite.
# Cài đặt
pipx install llm # hoặc: brew install llm
# Cài plugin cho từng nhà cung cấp (OpenAI có sẵn)
llm install llm-anthropic llm-gemini llm-perplexity llm-grok
# Lưu API key
llm keys set openai
llm keys set anthropic
llm keys set gemini
# Hỏi nhanh
llm "Giải thích CAP theorem bằng ví dụ thực tế"
# Chọn model cụ thể (xem danh sách bằng: llm models)
llm -m gemini-2.5-flash "Viết Dockerfile multi-stage cho app Node.js"
# Pipe nội dung file vào và đặt system prompt
cat src/auth.ts | llm -s "Bạn là senior reviewer, tìm lỗi bảo mật"
# Chat nhiều lượt
llm chat -m claude-sonnet-4.5
Giải thích:
-mchọn model,-sđặt system prompt,llm chatmở hội thoại nhiều lượt.- Toàn bộ prompt/response được lưu lại, xem bằng
llm logs. - Đây là cách nhẹ nhất để đưa chatbot vào shell script, ví dụ tự sinh commit message:
git diff --staged | llm -s "Viết commit message theo Conventional Commits".
Ví Dụ Thực Tế: Cùng Một Task Với Các CLI Agent
Giả sử bạn muốn agent thêm endpoint GET /health cho một project Express và viết test. Đây là cách chạy headless với từng tool:
PROMPT="Thêm endpoint GET /health trả về {status: 'ok', uptime} vào src/app.ts, viết test bằng Jest và chạy test cho đến khi pass"
claude -p "$PROMPT" # Claude Code
codex exec "$PROMPT" # OpenAI Codex
copilot -p "$PROMPT" # GitHub Copilot CLI
cursor-agent -p "$PROMPT" # Cursor CLI
Mẹo để kết quả ổn định giữa các tool:
- Viết file hướng dẫn cho agent:
AGENTS.mdđược hầu hết tool hỗ trợ; Claude Code dùngCLAUDE.md(có thể chỉ cần một dòng import@AGENTS.md). Ghi rõ lệnh build, test, lint và coding convention. - Đảm bảo có test: agent làm việc tốt nhất khi có tín hiệu "đúng/sai" rõ ràng để tự kiểm tra.
- Commit trước khi chạy agent: để dễ
git diffreview vàgit restorenếu kết quả không như ý.
Xử Lý Lỗi Thường Gặp
| Lỗi | Nguyên nhân | Cách xử lý |
|---|---|---|
command not found: claude / kiro-cli / agy |
Thư mục ~/.local/bin chưa có trong PATH |
Thêm export PATH="$HOME/.local/bin:$PATH" vào ~/.zshrc hoặc ~/.bashrc |
EACCES khi npm install -g |
npm global cài vào thư mục hệ thống | Dùng nvm/fnm để quản lý Node, hoặc dùng installer native thay vì npm |
| Copilot CLI báo không có quyền | Gói Business/Enterprise chưa bật policy CLI | Nhờ admin tổ chức bật "Copilot CLI" trong settings |
| Gemini CLI báo tài khoản không được hỗ trợ | Gemini CLI đã ngừng hỗ trợ tài khoản cá nhân từ 6/2026 | Chuyển sang Antigravity CLI (agy) hoặc dùng GEMINI_API_KEY |
401 Unauthorized khi gọi API bằng curl |
Chưa export API key hoặc key sai | Kiểm tra echo $OPENAI_API_KEY, tạo key mới trên console của nhà cung cấp |
| CLI chạy version cũ dù đã update | Có nhiều bản cài (npm và native) trong PATH | Chạy which -a claude (hoặc tên lệnh tương ứng), gỡ bản thừa |
Best Practices
- Ưu tiên installer native (Claude Code, Cursor, Kiro, Antigravity) — tự cập nhật và không phụ thuộc phiên bản Node.js.
- Commit trước khi chạy agent để dễ review bằng
git diffvà hoàn tác bằnggit restore. - Bắt đầu với chế độ hỏi xác nhận trước mỗi lệnh; chỉ nới quyền khi đã quen với cách agent làm việc.
- Không hard-code API key trong script — dùng biến môi trường hoặc trình quản lý secret.
- Dùng chế độ headless có giới hạn trong CI: chỉ cấp quyền tool cần thiết, chạy trong container hoặc sandbox.
Tổng Kết
- Mọi CLI agent đều có hai chế độ chính: session tương tác (gõ tên lệnh trong thư mục project) và headless (
-phoặcexec) cho script và CI/CD. - Claude Code, Codex, Copilot CLI và Cursor CLI có cách dùng rất giống nhau; điểm khác nằm ở file hướng dẫn (
CLAUDE.md,AGENTS.md, rules), cơ chế permission và hệ sinh thái mở rộng. - Amazon Q Developer CLI đã chuyển thành Kiro CLI, Gemini CLI cho tài khoản cá nhân đã chuyển thành Antigravity CLI.
- AI chatbot có thể gọi từ terminal qua API (
curl) hoặc toolllm, nhưng API được tính phí riêng theo token.
Bài tiếp theo: Bảng Giá Các Công Cụ AI Lập Trình — so sánh các gói và chọn gói phù hợp với nhu cầu.
