Slash commands & plan mode
Bài 7 — Slash commands & plan mode
#Vấn đề: bạn đang gõ quá nhiều thứ lẽ ra không cần gõ
Mỗi lần muốn reset context, bạn gõ "hãy quên hết conversation trước đó và bắt đầu lại". Mỗi lần muốn xem memory, bạn hỏi "đọc file CLAUDE.md cho tôi". Mỗi lần muốn compact context, bạn giải thích dài dòng "tóm tắt conversation hiện tại ngắn gọn nhưng giữ lại những điểm quan trọng".
Đó là những thao tác lặp đi lặp lại — và Claude Code đã có sẵn lệnh cho tất cả chúng.
#Slash commands là gì?
Slash commands là các lệnh tích hợp sẵn, bạn gõ trực tiếp trong chat session. Bắt đầu bằng ký tự /, giống cách bạn dùng /help trong Slack hoặc Discord.
Ví dụ nhanh:
/clearChỉ cần vậy. Không cần giải thích, không cần thêm prompt. Agent hiểu ngay bạn muốn xóa context và bắt đầu lại.
Điểm quan trọng: slash commands không tốn token trong context window. Khi bạn gõ /clear, nó không thêm text vào conversation — nó trigger một hành động hệ thống. Đây là khác biệt lớn so với việc bạn gõ "hãy xóa context" bằng ngôn ngữ tự nhiên (lúc đó câu lệnh của bạn vẫn chiếm token).
#Các slash commands thường dùng
#/clear — Xóa context, bắt đầu lại
/clearXóa toàn bộ lịch sử conversation hiện tại. Context window trở về trạng thái sạch. Agent không còn "nhớ" bất kỳ message nào trước đó.
Khi nào dùng: Sau khi hoàn thành một task và muốn chuyển sang task khác không liên quan. Hoặc khi bạn cảm thấy agent bắt đầu "quên" hoặc gợi ý lại những gì đã discussed — dấu hiệu context window đang đầy.
Thực tế, đây là lệnh bạn sẽ dùng nhiều nhất. Cứ mỗi 15-20 phút làm việc, hoặc mỗi khi hoàn thành một task, nên /clear một lần.
#/compact — Nén context giữ lại tóm tắt
/compactKhác với /clear xóa sạch, /compact giữ lại bản tóm tắt của conversation hiện tại. Agent sẽ tự tóm tắt những gì đã xảy ra — task gì đã làm, quyết định gì đã đưa ra, file nào đã sửa — rồi xóa message gốc.
Khi nào dùng: Khi bạn đang giữa một task dài (refactor lớn, fix bug nhiều bước) nhưng context window gần đầy. /compact giúp bạn tiếp tục mà không mất hoàn toàn context.
Bạn cũng có thể hướng dẫn cách tóm tắt:
/compact Tập trung vào các thay đổi ở module auth, bỏ qua phần UI#/init — Khởi tạo CLAUDE.md
/initTạo file CLAUDE.md trong thư mục hiện tại. File này chứa thông tin về project — convention, cấu trúc, cách build — và được agent đọc tự động mỗi session.
Khi nào dùng: Lần đầu tiên chạy Claude Code trong một project mới. Agent sẽ scan codebase và tạo CLAUDE.md dựa trên những gì nó tìm thấy.
Với biến môi trường CLAUDE_CODE_NEW_INIT=1, /init sẽ chạy chế độ interactive multi-phase — agent hỏi bạn từng bước thay vì tự generate toàn bộ:
CLAUDE_CODE_NEW_INIT=1 claude
> /initChế này hữu ích khi bạn muốn kiểm soát nội dung CLAUDE.md ngay từ đầu, thay vì để agent tự quyết định.
#/memory — Xem và sửa memory
/memoryMở file CLAUDE.md hiện tại để bạn xem và chỉnh sửa. Nhanh hơn là tự tìm file trong explorer.
Khi nào dùng: Khi muốn thêm một convention mới, sửa đổi hướng dẫn cho agent, hoặc kiểm tra xem agent đang "nhớ" những gì về project.
#/hooks — Quản lý lifecycle hooks
/hooksMở giao diện quản lý hooks — các callback chạy trước/sau khi agent thực hiện hành động (preToolUse, postToolUse, notification). Hooks đã được đề cập ở bài trước về automation.
#/desktop — Mở Claude Desktop
/desktopMở Claude Desktop app (nếu đã cài). Hữu ích khi bạn đang ở terminal nhưng muốn chuyển sang giao diện GUI.
#/schedule — Lên lịch task
/scheduleLên lịch chạy task tự động. Ví dụ: chạy test mỗi sáng, sync dependency mỗi tuần. Chi tiết về scheduling sẽ được đề cập trong bài về workflow nâng cao.
#/loop — Chạy lặp
/loopKích hoạt chế độ lặp — agent chạy đi chạy lại một task cho đến khi đạt điều kiện dừng. Hữu ích cho việc "chạy test cho đến khi pass" hoặc "refactor cho đến khi không còn warning".
#Bảng tổng hợp nhanh
| Lệnh | Tác dụng | Thường dùng nhất |
|---|---|---|
/clear | Xóa toàn bộ context | Chuyển task mới |
/compact | Nén context, giữ tóm tắt | Task dài, context gần đầy |
/init | Tạo CLAUDE.md | Lần đầu project mới |
/memory | Xem/sửa CLAUDE.md | Cập nhật convention |
/hooks | Quản lý lifecycle hooks | Automation nâng cao |
/desktop | Mở Desktop app | Chuyển giao diện GUI |
/schedule | Lên lịch task | Task định kỳ |
/loop | Chạy lặp cho đến khi đạt | Test loop, refactor loop |
#Plan mode: để agent lập kế hoạch trước khi thực thi
Đây là tính năng thay đổi cách bạn làm việc với agent ở mức căn bản.
#Vấn đề: agent hành động quá nhanh
Bạn mô tả một task phức tạp — "refactor module authentication, migrate từ JWT sang session-based, giữ nguyên tất cả endpoints". Agent ngay lập tức bắt đầu sửa file. Được 3 file thì bạn nhận ra hướng đi sai — nó migrate cả phần không cần migrate.
Bạn phải undo, giải thích lại, chờ nó làm lại. Mất 15 phút.
#Giải pháp: plan mode
Plan mode yêu cầu agent tạo kế hoạch trước, chờ bạn duyệt, rồi mới thực thi.
Cách kích hoạt: giữ Shift khi gửi prompt (trên terminal), hoặc dùng flag --plan khi khởi động. Trong plan mode, agent sẽ:
- Đọc codebase liên quan đến task
- Tạo một kế hoạch chi tiết: file nào sửa, thứ tự nào, lý do gì
- Dừng lại chờ bạn duyệt
- Chỉ thực thi sau khi bạn approve
Ví dụ. Bạn gửi trong plan mode:
Refactor module authentication: migrate từ JWT sang session-based,
giữ nguyên tất cả endpoints.Agent sẽ trả về plan kiểu:
Kế hoạch:
1. Tạo session middleware mới trong src/middleware/session.ts
2. Sửa src/auth/controller.ts — thay JWT verify bằng session lookup
3. Thêm session store config trong src/config/session.ts (mới)
4. Cập nhật src/routes/auth.ts — thay token response bằng session create
5. Sửa test files: auth.controller.test.ts, auth.routes.test.ts
6. KHÔNG đụng: user model, password hashing, OAuth flow
Files sẽ sửa: 5 files
Files mới: 2 files
Files không sửa: user.ts, oauth.ts, password.tsBạn đọc plan, thấy hợp lý → approve. Thấy thiếu sót → yêu cầu sửa plan. Thấy sai hướng → reject và mô tả lại.
#Khi nào dùng plan mode?
Nên dùng:
- Task phức tạp, nhiều file cần sửa
- Task bạn chưa rõ cách làm (migration, refactor lớn)
- Task có nhiều cách tiếp cận khác nhau
- Khi bạn muốn kiểm soát từng bước
Không cần thiết:
- Task đơn giản, 1-2 file
- Task bạn đã rõ cách làm
- Fix bug nhỏ, thêm config
⚠️ Cẩn thận: Anti-pattern — luôn chạy auto-approve
Nhiều người bật auto-approve (agent tự thực thi không cần duyệt) cho mọi thứ để "cho nhanh". Đây là cách nhanh nhất để agent phá codebase của bạn — đặc biệt với task phức tạp. Auto-approve hợp lý cho task đơn giản bạn đã kiểm soát (chạy test, format code). Nhưng với refactor, migration, hay sửa logic phức tạp — luôn dùng plan mode hoặc ít nhất đọc diff trước khi approve. 30 giây đọc plan có thể tiết kiệm 30 phút undo.
#Kết hợp plan mode với workflow hàng ngày
Một workflow thực tế tôi hay dùng:
1. Mô tả task trong plan mode
2. Đọc plan, điều chỉnh nếu cần
3. Approve → agent thực thi
4. Review diff trước khi commit
5. /clear → chuyển task tiếp theoVới task đơn giản, skip bước 1-2, để agent chạy thẳng. Nhưng luôn giữ thói quen review diff ở bước 4.
#Demo: Chạy thử slash commands
Mở Claude Code trong bất kỳ project nào:
cd ~/my-project
claudeThử lần lượt:
> Đọc file package.json và tóm tắt dependencies chínhSau khi agent trả lời:
/compactQuan sát: context được nén, conversation vẫn tiếp tục nhưng ngắn gọn hơn.
/memoryXem file CLAUDE.md hiện tại (có thể chưa có nếu chưa /init).
/initTạo CLAUDE.md cho project. Đọc nội dung file vừa tạo — đây là những gì agent "nhớ" về project của bạn.
/clearContext sạch. Bắt đầu task mới.
#Bài tập thực hành
#Bài tập 1: Làm quen với /clear và /compact
Mở Claude Code, thực hiện 2-3 task nhỏ (đọc file, giải thích code, tìm function). Sau đó:
- Dùng
/compact— quan sát context được nén thế nào - Tiếp tục conversation thêm vài message
- Dùng
/clear— context sạch hoàn toàn - Hỏi agent về task trước đó — xem nó có "quên" không
Ghi nhận: /compact giữ được bao nhiêu context so với /clear?
#Bài tập 2: Tạo và chỉnh sửa CLAUDE.md
- Chạy
/inittrong project của bạn - Đọc file
CLAUDE.mdđược tạo - Thêm một convention của project bạn (ví dụ: "luôn dùng async/await, không dùng .then()")
- Chạy
/memoryđể xác nhận thay đổi - Mở session mới, hỏi agent về convention đó — xem nó có biết không
#Bài tập 3: So sánh plan mode vs auto-run
Chọn một task phức tạp vừa phải (ví dụ: thêm một API endpoint mới). Thực hiện hai lần:
- Lần 1: Không dùng plan mode, để agent chạy thẳng. Ghi lại số lần phải undo/sửa.
- Lần 2: Dùng plan mode, đọc plan trước khi approve. Ghi lại số lần phải undo/sửa.
So sánh kết quả.
#Tổng kết
Slash commands là phím tắt cho các thao tác bạn sẽ dùng hàng ngày — /clear, /compact, /init là ba lệnh quan trọng nhất. Chúng không tốn token, chạy ngay lập tức, và giúp bạn quản lý context window chủ động.
Plan mode là công cụ kiểm soát: agent lập kế hoạch, bạn duyệt, rồi mới thực thi. Không phải mọi task đều cần plan mode, nhưng với task phức tạp — nó là sự khác biệt giữa "làm đúng lần đầu" và "undo rồi làm lại".
Bài tiếp theo: Subagents — cách chia task thành các agent con chạy song song, mỗi agent có context riêng, và vì sao điều đó giúp bạn xử lý task lớn mà không phình context.