0

Đừng coi Claude chỉ là hộp thoại chat: Hướng dẫn cài đặt Claude Code CLI và Quản lý ngữ cảnh (Phần 1)

Không biết cách sử dụng Claude Code? Bài hướng dẫn này sẽ đưa bạn đi từ con số không để cấu hình môi trường lập trình AI của mình. Tìm hiểu cách viết CLAUDE.md để thiết lập bộ nhớ dự án, quản lý token ngữ cảnh và sử dụng Plan Mode (Chế độ Kế hoạch) để tái cấu trúc mã một cách an toàn nhằm cải thiện quy trình phát triển của bạn.

Với sự xuất hiện của các AI agent ở khắp mọi nơi, bạn vẫn chỉ đang sử dụng AI như một công cụ trò chuyện sao? Nếu quy trình làm việc hiện tại của bạn là sao chép mã nguồn, dán vào trình duyệt, đặt câu hỏi, rồi lại dán đoạn mã được tạo ra trở lại trình soạn thảo—bạn có thể sẽ gặp phải một số rào cản. Vấn đề của phương pháp này là mỗi truy vấn mới sẽ bắt đầu một cuộc trò chuyện hoàn toàn mới. AI không hề biết về cấu trúc thư mục tổng thể của dự án, quy tắc viết mã của nhóm bạn, hay việc một module cụ thể đã được tái cấu trúc trong suốt ba ngày qua.

Để thực sự khai phá năng suất của AI, bạn cần xem nó như một môi trường phát triển tích hợp liền mạch với không gian làm việc cục bộ của mình. Đối với các lập trình viên, Claude Code của Anthropic—thường được xem là một giải pháp thay thế mạnh mẽ cho GitHub Copilot—là một công cụ tuyệt vời cho nhiệm vụ này.

Cách sử dụng Claude Code

Bài viết này là phần đầu tiên trong hướng dẫn toàn diện của chúng tôi. Chúng tôi sẽ hướng dẫn người mới bắt đầu cách cài đặt và sử dụng Claude Code CLI, biến nó thành một trợ lý lập trình cục bộ thực sự hiểu codebase của bạn. (Nếu bạn đã là một cao thủ, bạn có thể bỏ qua bài viết này vì nó khá quen thuộc.)

1. Chuẩn bị Cơ bản và Tích hợp Môi trường

Để tích hợp AI vào quy trình làm việc cục bộ, bước đầu tiên là "đánh thức" nó trong terminal của bạn—giống như chiếc đồng hồ báo thức gọi bạn dậy đi làm mỗi sáng vậy.

Các bước Cài đặt Claude Code

Trước khi chạy công cụ này, bạn phải có môi trường Node.js cục bộ. Đối với những nhà phát triển không muốn phải vật lộn với việc quản lý nvm hay các biến môi trường hệ thống, sử dụng ServBay để triển khai là một lựa chọn cực kỳ hiệu quả.

Là một công cụ quản lý môi trường phát triển cục bộ tích hợp, ServBay cung cấp giao diện đồ họa hỗ trợ cài đặt môi trường chạy (runtime) cho nhiều ngôn ngữ lập trình chỉ với một cú nhấp chuột. Chỉ cần chọn phiên bản Node.js mong muốn trong ứng dụng để hoàn tất quá trình thiết lập trong vài giây, loại bỏ hoàn toàn sự phiền toái khi cấu hình môi trường thủ công.

Giải pháp Thay thế Docker Tốt nhất

Sau khi môi trường của bạn đã sẵn sàng thông qua ServBay, hãy mở terminal và chạy lệnh sau để cài đặt toàn cục (global):

npm i -g @anthropic-ai/claude-code

Sau khi quá trình cài đặt hoàn tất, hãy xác minh bằng cách chạy claude --version. Lần đầu tiên bạn chạy công cụ, một cửa sổ sẽ bật lên yêu cầu khóa API Anthropic hoặc cấp quyền đăng ký Claude Pro của bạn.

Sau khi khởi tạo, các tệp cấu hình cụ thể sẽ được tạo ra trong cả thư mục dự án hiện tại và thư mục toàn cục của bạn. Việc hiểu rõ hệ thống phân cấp tệp này sẽ giúp ích cho việc cộng tác nhóm và cá nhân hóa:

  • Thư mục .claude/ ở thư mục gốc của dự án chứa settings.json (có thể được commit lên Git để chia sẻ với nhóm) và settings.local.json (bỏ qua trên máy cục bộ, dùng để ghi đè sở thích cá nhân).
  • Thư mục người dùng hệ thống ~/.claude/ lưu trữ các tùy chọn cấu hình dùng chung trên toàn cục.

Cơ chế phân tách này đảm bảo rằng cả nhóm vẫn thống nhất về các tiêu chuẩn viết mã, đồng thời cho phép từng nhà phát triển giữ lại thói quen thao tác terminal cá nhân của mình.

2. Thiết lập Ngữ cảnh Dự án Toàn cục

Làm sao để một AI lập trình viên ghi nhớ ngữ cảnh dự án là một vấn đề phổ biến. Nếu bạn cứ phải giải thích đi giải thích lại logic nghiệp vụ, hiệu suất phát triển sẽ giảm sút—giống như việc bạn phải giải thích lại dự án cho đồng nghiệp mỗi ngày vậy. Claude Code giải quyết vấn đề này bằng cách thiết lập bộ nhớ dự án.

Trong terminal của bạn, điều hướng đến thư mục gốc của dự án, chạy lệnh claude để khởi động giao diện, sau đó nhập lệnh /init.

Công cụ sẽ quét codebase cục bộ của bạn, phân tích các phần phụ thuộc trong package.json, kiểm tra cấu trúc thư mục, xác định tech stack hiện tại và tạo ra một tệp CLAUDE.md trong thư mục gốc.

Cách viết CLAUDE.md

Tệp này đóng vai trò là "bộ não" cho toàn bộ quy trình làm việc của bạn. Trước khi bắt đầu bất kỳ cuộc trò chuyện nào, chương trình sẽ ưu tiên đọc các chỉ thị bên trong nó. Một cấu hình có cấu trúc rõ ràng có thể giảm thiểu đáng kể chi phí giao tiếp. Dưới đây là ví dụ được điều chỉnh cho một dự án full-stack:

# Tên Dự án: SaaS Dashboard

## Kiến trúc Kỹ thuật
- Frontend: React 18 + Vite
- Quản lý State: Zustand
- Backend: NestJS + TypeScript
- Cơ sở dữ liệu: MySQL + TypeORM

## Quy chuẩn Thư mục
- `/frontend/src/views` lưu trữ các component cấp độ trang
- `/frontend/src/shared` lưu trữ các hàm thuần (pure functions) và Hooks dùng chung
- `/backend/src/modules` phân chia logic backend theo từng module nghiệp vụ

## Ràng buộc Lập trình
- Các component frontend phải sử dụng đồng nhất arrow function (hàm mũi tên) và destructuring assignment (cú pháp phân rã)
- Định dạng phản hồi API phải tuân thủ cấu trúc `{ code, data, message }`
- Tuyệt đối nghiêm cấm sử dụng kiểu `any` trong TypeScript; phải định nghĩa interface cho các kiểu dữ liệu phức tạp
- Xử lý ngày tháng phải đồng nhất sử dụng thư viện `dayjs`, không sử dụng `Date` nguyên bản

## Các Script Thông dụng
- `npm run dev:all` khởi động service cục bộ cho cả frontend và backend
- `npm run lint` chạy kiểm tra quy chuẩn mã nguồn

Khi những quy tắc này được ghi chép rõ ràng, lần tới khi bạn yêu cầu tạo một API hiển thị dữ liệu mới, công cụ sẽ tự động định dạng phản hồi theo tiêu chuẩn của bạn và đặt tệp vào đúng thư mục /backend/src/modules đã chỉ định.

Lưu ý Quan trọng: Tuyệt đối không bao giờ viết mật khẩu cơ sở dữ liệu hoặc khóa API vào tệp này, vì nó sẽ được commit lên hệ thống kiểm soát phiên bản cùng với mã nguồn của bạn.

3. Quản lý Bộ nhớ: Ngăn chặn Phình to Ngữ cảnh

Giao diện terminal bao gồm một chỉ báo ngữ cảnh phản ánh mức sử dụng bộ nhớ của cuộc trò chuyện hiện tại.

Khi cuộc trò chuyện đi sâu hơn và có nhiều tệp được tham chiếu, cửa sổ ngữ cảnh sẽ dần bị lấp đầy. Khi mức sử dụng vượt quá 75%, tốc độ phản hồi có thể giảm rõ rệt và công cụ thậm chí có thể bắt đầu quên các chỉ thị trước đó. Điều này cũng dễ hiểu—rốt cuộc thì ngay cả con người cũng khó mà nhớ được mọi thứ cùng một lúc. Do đó, việc mở rộng ngữ cảnh một cách mù quáng không phải là giải pháp lâu dài; quản lý chi tiết, tinh gọn mới là hướng đi đúng đắn.

Tham chiếu Tệp Chính xác

Một sai lầm phổ biến là ném toàn bộ thư mục src cho chương trình cùng một lúc. Cách tiếp cận đúng là tải theo nhu cầu. Bằng cách sử dụng ký hiệu @ theo sau là tên tệp, bạn có thể tải chính xác các tệp mục tiêu.

Ví dụ: bạn có thể viết một prompt như sau: "Kiểm tra logic xác thực biểu mẫu trong @frontend/src/views/Login.tsx và sửa lỗi báo cáo xác thực độ dài mật khẩu." Cách đọc có chọn lọc này giúp tiết kiệm đáng kể lượng token tiêu thụ.

Nén Cuộc trò chuyện

Nén Cuộc trò chuyện Claude Code

Khi bạn đang phát triển dở dang một module tính năng và chỉ báo ngữ cảnh chuyển sang màu đỏ, bạn có thể chạy lệnh /compact.

Khi được thực thi, chương trình sẽ cô đọng lịch sử trò chuyện dài dòng thành một bản tóm tắt, giữ lại các quyết định kỹ thuật quan trọng, tiến độ nhiệm vụ hiện tại và trạng thái sửa đổi tệp, đồng thời loại bỏ những đoạn hội thoại lan man trong quá trình thử và sai.

Nếu bạn bắt đầu một nhiệm vụ hoàn toàn không liên quan, chỉ cần chạy lệnh /clear để xóa lịch sử trò chuyện. Các bộ nhớ dự án trong CLAUDE.md vẫn sẽ có hiệu lực, chỉ có bản ghi giao tiếp hiện tại là được đặt lại.

4. Kiểm soát Quyền Thực thi: Tránh làm hỏng Code

Trong môi trường phát triển thực tế, bạn phải cẩn thận với việc AI tùy tiện sửa đổi mã của bạn, đặc biệt là trong các tác vụ tái cấu trúc liên quan đến nhiều tệp. Nếu để AI trực tiếp sửa đổi, rất dễ gây ra lỗi dây chuyền.

Claude Code cung cấp các chế độ tương tác khác nhau để xử lý các nhiệm vụ có độ phức tạp khác nhau.

Chế độ Kế hoạch (Plan Mode)

Chế độ Kế hoạch Claude Code

Nhấn phím Shift+Tab có thể chuyển sang Chế độ Kế hoạch. Đây là một tính năng cực kỳ giá trị khi thực hiện các quá trình phát triển phức tạp.

Khi bạn nhập yêu cầu trong chế độ này, chương trình sẽ không bắt tay vào viết mã ngay lập tức. Thay vào đó, nó sẽ tạo ra một bản kế hoạch thực thi chi tiết từng bước.

Ví dụ: nếu bạn yêu cầu tái cấu trúc đăng nhập Session cũ sang đăng nhập JWT, công cụ có thể liệt kê kế hoạch như sau:

  1. Cài đặt các gói phụ thuộc jsonwebtoken liên quan.
  2. Tạo các phương thức tạo và phân tích token trong thư mục tiện ích (utils).
  3. Sửa đổi API đăng nhập của backend, thay thế logic Session cũ bằng JWT.
  4. Cập nhật interceptor của frontend để đính kèm Token trong header của yêu cầu.

Các nhà phát triển có thể xem xét kế hoạch này trước, xác nhận không có lỗi hoặc đưa ra ý kiến sửa đổi, sau đó mới phê duyệt để thực thi. Điều này tương đương với việc thực hiện đánh giá giải pháp trước khi bắt tay vào làm, giúp ngăn chặn triệt để rủi ro codebase bị phá hỏng trên diện rộng.

Chế độ Tư duy Mở rộng (Extended Thinking)

Khi gặp phải các Bug ẩn sâu, ngẫu nhiên hoặc cần cân nhắc thiết kế kiến trúc, bạn có thể bật Chế độ Tư duy Mở rộng. Chế độ này sẽ tiêu tốn nhiều tài nguyên tính toán hơn, cho phép chương trình thực hiện suy luận nội bộ sâu hơn trước khi đưa ra câu trả lời cuối cùng. Nó thường được dùng để khắc phục các sự cố nan giải và không được khuyến nghị dùng trong các tác vụ thêm-sửa-xóa (CRUD) đơn giản hàng ngày.

5. Quyền hạn và Ranh giới Bảo mật

Là một công cụ dòng lệnh chạy cục bộ, Claude Code có khả năng đọc tệp, sửa đổi mã nguồn và thậm chí thực thi các shell script. Dựa trên nguyên tắc đặc quyền tối thiểu, chương trình sẽ luôn bật cửa sổ yêu cầu cấp quyền trước khi thực hiện các thao tác nhạy cảm.

Các nhà phát triển có thể tùy chỉnh ranh giới quyền hạn dựa trên mức độ tin cậy của dự án. Quản lý điều này bằng cách sửa đổi tệp settings.json cục bộ:

{
  "permissions": {
    "allowedTools": ["Read", "Write", "Glob", "Bash(npm run dev)"],
    "blockedTools": ["Bash(rm *)", "Bash(git push -f)"],
    "autoApprove": ["Write(frontend/src/views/*)"]
  }
}

Trong cấu hình trên, allowedTools xác định danh sách trắng (whitelist), blockedTools khóa các thao tác nguy hiểm và autoApprove cho phép chương trình miễn trừ các thông báo khi sửa đổi mã trong các thư mục cụ thể. Tuyệt đối không bao giờ thêm các quyền thực thi terminal quá rộng vào danh sách phê duyệt tự động.

Tóm tắt Phần 1 & Giới thiệu Phần tiếp theo

Trong phần đầu tiên này, chúng ta đã hoàn thành việc thiết lập môi trường cơ bản. Bằng cách sử dụng ServBay để triển khai môi trường Node.js, tạo ra tệp CLAUDE.md có cấu trúc cho bộ nhớ dự án, nắm vững các kỹ thuật quản lý ngữ cảnh tinh gọn, cũng như học cách sử dụng Chế độ Kế hoạch và kiểm soát quyền hạn để bảo vệ an toàn cho mã nguồn, chúng ta đã thiết lập thành công một quy trình phát triển cục bộ an toàn.

Sau khi hệ thống này được thiết lập, công cụ lập trình AI qua dòng lệnh mới thực sự hòa nhập hoàn toàn vào quy trình nghiên cứu và phát triển cục bộ của bạn.

Trong Phần 2 sắp ra mắt, chúng ta sẽ khám phá các khả năng nâng cao hơn, bao gồm cách cấu hình MCP (Model Context Protocol - Giao thức Ngữ cảnh Mô hình) để kết nối với cơ sở dữ liệu và tài liệu bên ngoài, cũng như cách viết các kỹ năng tùy chỉnh cho Claude để giải phóng năng suất hơn nữa.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí