← Lập trình với Claude Code

Bài 3 · Cơ bản · 20 phút· Cập nhật 11/06/2026

Tương tác hiệu quả & chế độ quyền

Biên soạn bởi Nguyễn Anh Tuấn

Mô tả task rõ, cấp ngữ cảnh, plan mode; chế độ quyền (default/acceptEdits/plan), ngắt & lái; /clear, /compact, /context.

bài trước bạn thấy Claude tự sửa tới khi kiểm chứng đạt. Vậy bí quyết tương tác là: cho nó một cái đích rõ ràng để tự đối chiếu. Một yêu cầu tốt thường có ba phần:

  • Mục tiêu: bạn muốn ĐIỀU GÌ xảy ra (cụ thể, không chung chung).
  • Ngữ cảnh: ở ĐÂU - chỉ file/màn hình liên quan (dùng @ để nhắc đích danh).
  • Cách kiểm chứng: “đúng khi nào” - một test, kết quả mong đợi, hay ảnh giao diện.
Mơ hồRõ ràng
“Sửa form đăng nhập”“Trong @src/auth/login.ts, mật khẩu sai thì hiện báo lỗi đỏ; thêm test.”
“Tối ưu code đi”“Hàm loadUsers gọi DB trong vòng lặp - gộp thành 1 truy vấn.”
“Làm nó đẹp hơn”“Căn giữa nút, tăng khoảng cách 16px; khớp ảnh mẫu tôi gửi.”

Một yêu cầu rõ ràng cho ra một phiên gọn, đúng ngay:

claude - ~/web-app

Trong @src/auth/login.ts, khi mật khẩu sai hãy hiện thông báo lỗi đỏ dưới ô nhập. Thêm test cho trường hợp này và chạy test.

Read(src/auth/login.ts)

Edit(src/auth/login.ts) · Write(src/auth/login.test.ts)

Bash(npm test)

✓ 14 test pass (gồm “mật khẩu sai → báo lỗi”)

Xong đúng yêu cầu. Mời bạn xem diff.

Không cần hoàn hảo - cứ hội thoại

Bạn không phải viết prompt hoàn hảo ngay. Claude Code là hội thoại: bắt đầu, xem kết quả, rồi tinh chỉnh (“gần rồi, nhưng đổi màu sang xanh”). Rõ ràng giúp ít vòng qua lại hơn, chứ không phải điều kiện bắt buộc.

Với việc lớn hoặc rủi ro (đụng nhiều file, đổi cấu trúc), đừng để Claude lao vào sửa ngay. Dùng plan mode: nó chỉ đọc, khảo sát dự án rồi trình một kế hoạch để bạn duyệt - chưa đụng file nào.

  • Bấm Shift+Tab để chuyển chế độ; chọn plan mode (chỉ đọc).
  • Claude trình kế hoạch theo bước; bạn chỉnh sửa/duyệt TRƯỚC khi cho chạy.
  • Quy trình kinh điển: Khảo sát → Lập kế hoạch → Code → Commit.

Đọc trước, sửa sau - ở cấp con người

Plan mode đưa nguyên tắc “hiểu trước khi làm” lên tay BẠN: bạn thấy Claude định làm gì và can thiệp sớm - rẻ hơn nhiều so với để nó sửa sai 12 file rồi mới phát hiện. Việc nhỏ, rõ ràng thì bỏ qua bước này cho nhanh.

Claude Code không tự ý sửa file hay chạy lệnh sau lưng bạn (trừ khi bạn cho phép). Một chế độ quyền quyết định hành động nào cần bạn duyệt. Bấm chọn để xem từng chế độ xử lý ra sao:

Bấm chọn một chế độ quyền - xem nó xử lý từng loại hành động ra sao. (Trong terminal, bấm Shift+Tab để đổi nhanh giữa các chế độ.)

Mặc định default

An toàn nhất. Đọc thì cho, nhưng HỎI trước khi sửa file hay chạy lệnh thay đổi. Hợp khi mới làm quen.

Đọc file

Read / Grep / Glob - chỉ xem, không đổi gì

Tự chạy

Lệnh chỉ đọc

ls, cat, git status - không thay đổi máy

Tự chạy

Sửa / ghi file

Edit / Write - thay đổi mã nguồn của bạn

Hỏi bạn

Lệnh thay đổi

npm install, git commit, rm - đổi máy/dự án

Hỏi bạn
  • default: an toàn, hỏi trước khi sửa/chạy - hợp khi mới làm quen.
  • acceptEdits: tự nhận sửa file, vẫn hỏi lệnh nguy hiểm - khi đã tin task.
  • plan: chỉ đọc, để duyệt kế hoạch trước.
  • bypassPermissions: bỏ qua mọi hỏi - CHỈ trong môi trường cô lập.

Đánh đổi: tự chủ ↔ an toàn

Càng tự chủ (acceptEdits, bypass) càng nhanh nhưng càng dễ “lọt” một thay đổi bạn không muốn. Quy tắc an toàn: ở default/acceptEdits trên máy thật, dành bypass cho môi trường cô lập. Bài “Đọc, sửa code & chạy lệnh an toàn” sẽ dạy tinh chỉnh bằng danh sách cho-phép/từ-chối (allow/deny).

Không phải cứ gửi yêu cầu rồi ngồi chờ. Bạn lái Claude liên tục:

  • Esc: NGẮT ngay lập tức - Claude dừng, chờ chỉ dẫn mới.
  • Gõ thêm khi nó ĐANG chạy: nó đọc và điều chỉnh ở bước kế (không cần khởi động lại).
  • Chia nhỏ việc lớn: làm từng phần, kiểm chứng từng phần - dễ kiểm soát hơn một cú “làm hết”.

Việc lớn → nhiều bước nhỏ

Thay vì “viết cả app cho tôi”, hãy đi từng nhịp: dựng khung → thêm một tính năng → test → tính năng kế. Mỗi nhịp là một điểm để bạn kiểm chứnglái. Vừa an toàn, vừa giữ ngữ cảnh gọn.

Nhắc lại từ bài trước, nhưng giờ là thói quen tương tác: ngữ cảnh gọn thì Claude tập trung và đỡ tốn token.

  • Một việc - một phiên gọn; xong việc khác hẳn thì /clear.
  • Phiên dài cùng một việc: /compact để nén nhưng giữ mạch.
  • /context khi thấy Claude “đãng trí” - xem ngữ cảnh đang chứa gì.

Tổng kết nửa đầu khoá

Bạn đã biết Claude Code là gì, hoạt động thế nào (vòng lặp + ngữ cảnh), và cách tương tác hiệu quả (yêu cầu rõ, plan mode, quyền, lái). Tiếp theo ta đi sâu vào làm việc với code an toàn, rồi mở rộng năng lực với CLAUDE.md, slash command, Skills, Subagents, Hooks và MCP.

Câu hỏi thường gặp

Không. Claude Code là cuộc HỘI THOẠI - bạn có thể bắt đầu sơ sài rồi tinh chỉnh dần qua phản hồi. Nhưng yêu cầu càng rõ (mục tiêu + ngữ cảnh + cách kiểm chứng) thì càng ít qua lại và thường đúng ngay từ đầu. Mơ hồ vẫn chạy được, chỉ tốn thêm vài vòng chỉnh qua lại.

Nhớ vòng lặp ở bài trước: Claude tự sửa tới khi KIỂM CHỨNG đạt. Nếu bạn đưa tiêu chí kiểm chứng - một test, mô tả kết quả mong đợi, ảnh chụp giao diện đúng - nó có “đích” để tự đối chiếu và sửa. Không có đích, nó chỉ đoán là đã xong.

@ rồi tên file (vd @src/app.ts) để CHỈ ĐÍCH DANH file bạn muốn Claude xem, thay vì để nó tự đi tìm. Tiết kiệm thời gian và ngữ cảnh, lại chính xác hơn - nhất là khi bạn đã biết chỗ cần sửa.

Plan mode là chế độ CHỈ ĐỌC: Claude khảo sát dự án và trình một KẾ HOẠCH cho bạn duyệt, chưa đụng vào file. Hợp với việc lớn/rủi ro: bạn chỉnh kế hoạch trước, rồi mới cho chạy. Với việc nhỏ rõ ràng thì không cần.

Bấm Esc để NGẮT ngay (nó dừng, chờ bạn). Hoặc cứ gõ thêm một câu trong lúc nó đang chạy - nó đọc và điều chỉnh ở bước kế tiếp, không cần khởi động lại. Bạn “lái” liên tục, không phải chờ hết lượt.

Vì nó bỏ qua MỌI câu hỏi: Claude có thể chạy bất kỳ lệnh nào, kể cả lệnh phá hỏng. Chỉ dùng trong môi trường CÔ LẬP (máy ảo, container) nơi sai cũng không hại máy thật/dữ liệu thật. Trên máy làm việc, hãy ở default hoặc acceptEdits và đọc trước khi đồng ý.

Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.

Tick những điều em tự tin làm được sau khi học bài này. 0/6

Trả lời vài câu để chắc rằng em đã nắm bài.

Câu 1/3 Điểm: 0

Một yêu cầu (task) rõ ràng theo bài thường gồm ba phần nào?

  1. 1

    Viết lại cho rõ

    Lấy một yêu cầu mơ hồ: “Sửa cái form đăng nhập”. Viết lại thành một yêu cầu rõ ràng có đủ: mục tiêu + ngữ cảnh (file/màn hình) + cách kiểm chứng.

    Hoàn thành khi: Bản viết lại nêu cụ thể đổi gì, ở đâu, và “đúng khi nào” (vd: “nhập sai mật khẩu thì hiện báo lỗi đỏ; có test cho trường hợp này”).

  2. 2

    Chỉ đích danh bằng @

    Trong một phiên thật, nhờ Claude sửa một file CỤ THỂ bằng cách dùng @ để nhắc tên file đó.

    Hoàn thành khi: Claude đọc đúng file bạn nhắc thay vì đi tìm khắp dự án; bạn thấy nó nhanh và đúng chỗ hơn.

  3. 3

    Thử plan mode

    Với một việc lớn hơn (vd “thêm trang cài đặt”), vào plan mode (Shift+Tab), để Claude trình kế hoạch, đọc và chỉnh kế hoạch TRƯỚC khi cho chạy.

    Hoàn thành khi: Bạn nhận được một kế hoạch theo bước; bạn sửa/duyệt nó; chỉ sau khi đồng ý Claude mới bắt đầu sửa file.

  4. 4

    Đổi chế độ quyền

    Dùng công cụ ở Bước 3 trả lời: bạn đang làm trên máy thật với một task đã tin tưởng, muốn khỏi bấm duyệt từng file nhưng vẫn chặn lệnh nguy hiểm - chọn chế độ nào?

    Hoàn thành khi: acceptEdits - tự nhận sửa file, vẫn HỎI trước các lệnh thay đổi dễ gây hại. (Không phải bypassPermissions.)

  5. 5

    Ngắt & lái

    Khi Claude đang chạy, thử gõ thêm một câu hướng dẫn (vd “đừng đụng vào file cấu hình”) và xem nó điều chỉnh. Rồi thử bấm Esc để dừng hẳn.

    Hoàn thành khi: Bạn thấy Claude tiếp nhận chỉ dẫn giữa chừng; và Esc dừng nó lại ngay, trả quyền cho bạn.