Plan Mode trong Claude Code: Lập kế hoạch trước khi code
Dùng /plan và Plan Mode để Claude phân tích kiến trúc trước khi đụng vào code, giảm 80% refactoring và tránh lỗi 'sửa xong mới phát hiện sai kiến trúc'
Định nghĩa
Plan Mode là permission mode và slash command (/plan) trong Claude Code buộc AI phải phân tích, thiết kế kiến trúc và trình bày roadmap chi tiết trước khi chạm vào bất kỳ file nào, biến quy trình từ "code ngay rồi sửa" thành "plan trước, execute sau".
Giải thích chi tiết
Cơ chế Two-Phase Workflow
Plan Mode hoạt động theo nguyên tắc separation of concerns giữa thiết kế và thực thi. Thay vì lao vào viết code ngay lập tức, Claude thực hiện hai phase riêng biệt:
- Phase 1 - Analysis & Planning: Claude đọc codebase, phân tích dependencies, xác định breaking changes, và tạo implementation plan với các phase rõ ràng (ví dụ: "Phase 1: Setup types, Phase 2: Migrate database, Phase 3: Update API layer")
- Phase 2 - Execution (sau khi user approve): Chỉ sau khi bạn review và approve kế hoạch, Claude mới bắt đầu chỉnh sửa file
Điều này ngăn chặn "discovery during execution" — hiện tượng AI code được 50% mới phát hiện kiến trúc không phù hợp, buộc phải revert và viết lại, gây lãng phí context window và API tokens.
Tại sao cần Plan Mode?
Khi bạn yêu cầu refactor một module phức tạp (ví dụ: chuyển từ REST sang GraphQL), Claude thường rơi vào context pollution: nó vừa phải nhớ cấu trúc cũ, vừa thiết kế cấu trúc mới, vừa viết code, khiến context window (200K tokens) nhanh chóng đầy và chất lượng suy giảm.
Plan Mode giải quyết điều này bằng cách:
- Giới hạn phase 1 chỉ ở read-only operations (
Read,Grep,Glob), không đụng chạm file - Cho phép bạn bắt lỗi architectural mismatch trước khi có một dòng code được commit
- Tạo "blueprint" có thể review, chia sẻ với team, hoặc lưu vào
CLAUDE.mdcho lần sau
Cách kích hoạt Plan Mode
Có hai cách sử dụng:
Cách 1: Slash command /plan
claude
/plan refactor authentication system to use JWT instead of session cookiesClaude sẽ chuyển sang chế độ plan-only, không thực thi bất kỳ write operation nào cho đến khi bạn gõ y hoặc approve.
Cách 2: CLI flag --permission-mode plan
claude --permission-mode plan "implement Stripe payment webhook handler"Toàn bộ session sẽ chạy ở plan mode. Mỗi lần Claude muốn edit file, nó phải trình bày plan chi tiết và chờ approval.
Cấu trúc một kế hoạch tốt
Một plan chất lượng cao thường bao gồm:
- Time-boxed phases: Ví dụ "Phase 1 (30 min): Define Prisma schema changes", "Phase 2 (45 min): Update service layer"
- File-level mapping: Liệt kê cụ thể từng file sẽ bị ảnh hưởng và cách thay đổi
- Dependency graph: Xác định thứ tự migration (ví dụ: phải migrate database trước khi update API)
- Rollback strategy: Plan B nếu có breaking change phát hiện muộn
Ví dụ thực tế
Refactor Zalo Mini App từ Class Components sang Hooks
Thay vì bắt đầu rewrite file đầu tiên ngay lập tức, bạn dùng Plan Mode cho codebase Zalo Mini App cũ:
/plan migrate all class components in src/components/ to functional components with hooks, targeting Zalo Mini App frameworkClaude sẽ:
- Grep tất cả class components và lifecycle methods đặc thù của Zalo Mini App (như
onShow,onHide) - Xác định dependencies giữa các components (ví dụ: component A extend component B)
- Tạo plan 3 phase: (1) Convert leaf components, (2) Convert parent components, (3) Remove legacy HOCs
- Điểm quan trọng: Phát hiện component
UserProfiledùngcomponentWillReceivePropsvới logic phức tạp cần chuyển sanguseEffectđặc biệt, và lưu ý Zalo Mini App có giới hạn bundle size khác React web thông thường
Bạn review plan, thấy phase 2 có thể break Dashboard vì shared state, nên yêu cầu Claude thêm step migration tạm thời. Sau khi plan được chỉnh sửa, mới bắt đầu execution.
Thêm tính năng xuất hóa đơn điện tử VietQR
Yêu cầu: "Thêm tính năng xuất hóa đơn tài chính định dạng VietQR cho app bán hàng Shopee-like"
Plan Mode giúp Claude nhận ra:
- Cần tuân thủ chuẩn VietQR của Napas (chứ không phải chỉ là QR text đơn giản)
- Cần thêm trường
tax_idvào database để hỗ trợ hóa đơn VAT - PDF generation nên chạy trong background job (Redis queue) thay vì sync API để tránh timeout khi render đơn hàng có 100+ items
- Ảnh hưởng đến 4 files:
routes/invoices.ts,services/vietqrGenerator.ts,workers/pdfWorker.ts,frontend/InvoiceButton.tsx
Thay vì code ngay và gặp lỗi "Request timeout" vì PDF render 30 giây, plan đã chỉ ra cần async worker ngay từ đầu.
Tích hợp cổng thanh toán MoMo cho app giao hàng
claude --permission-mode plan "integrate MoMo payment gateway for a Grab-like delivery app with wallet and QR scan options"Claude tạo plan chi tiết:
- Phase 1: Setup MoMo webhook endpoint và verify signature theo tài liệu chính thức của MoMo Partner Portal
- Phase 2: Sync payment methods từ MoMo dashboard vào database (không hardcode trong code) để hỗ trợ cả ví MoMo lẫn thẻ ngân hàng
- Phase 3: Update middleware
requireAuthđể check wallet balance trước khi đặt đơn - Phase 4: Thêm grace period logic khi thanh toán thất bại (retry 3 lần trước khi hủy đơn)
Insight: Plan Mode giúp phát hiện bạn cần lưu momo_partner_ref trong bảng users ngay từ đầu, tránh việc phải thêm column sau này và migrate dữ liệu production phức tạp.
Ứng dụng
Developer cá nhân (Indie hackers, Freelancers)
Tránh technical debt explosion khi vibe coding. Plan Mode đảm bảo bạn không tạo ra codebase "không ai hiểu nổi" sau 3 tuần, đặc biệt khi dùng vibe coding để build MVP nhanh cho khách hàng Việt Nam.
Tech Lead / Senior Developers
Dùng Plan Mode để tạo executable specification. Thay vì viết tài liệu kiến trúc rồi bắt junior dev implement, bạn dùng /plan để Claude tạo implementation roadmap, rồi giao plan đó cho team member execute theo từng phase. Đặc biệt hữu ích khi làm việc với các team outsource hoặc intern mới vào dự án.
Non-coders (Product Managers, Designers)
Khi dùng Claude Code để prototype mà không rành về kiến trúc phần mềm, Plan Mode là safety guardrail. Nó buộc AI phải giải thích rõ ràng "tại sao cần thay đổi database" trước khi thực hiện, giúp bạn hiểu implications và tránh phá hỏng production data của khách hàng.
Teams và Doanh nghiệp
Plan output có thể lưu vào .claude/plans/ và commit lên Git như architecture decision records (ADRs). Khi có bug, team có thể trace back xem plan gốc có bỏ sót edge case nào không. Đây là cách institutionalize knowledge mà không cần viết tài liệu dài dòng bằng tiếng Việt hoặc tiếng Anh.
So sánh
| Permission Mode | Khi nào dùng | Đặc điểm | Rủi ro |
|---|---|---|---|
| Plan Mode | Task phức tạp, multi-file, architectural changes | Read-only analysis trước, explicit approval sau | Chậm hơn cho task đơn giản |
| Auto Mode | Task lặp đi lặp lại, trusted codebase | Background safety classifier auto-approve | Research Preview, có thể false positive |
| Interactive | Quick fixes, typo corrections, formatting | Hỏi từng lần edit, manual approval | Context-switching fatigue |
| BypassPermissions | CI/CD, headless automation | Không hỏi, execute ngay | Nguy hiểm nếu prompt injection |
Kết luận: Plan Mode không phải để thay thế Auto Mode hay các permission mode khác, mà là layer zero của mọi task phức tạp. Bạn dùng Plan để thiết kế, rồi có thể chuyển sang Auto Mode cho các sub-tasks đã được xác định rõ ràng trong plan.
Bài viết liên quan
Cùng cụm (daily-workflow)
- 55+ Slash Commands: Tổng quan và cách dùng — Khám phá toàn bộ slash commands bao gồm
/plan,/commit,/review - Git workflow với Claude Code: commit, PR, rebase — Tích hợp Plan Mode vào git workflow để plan trước khi commit
- Refactor code an toàn với Claude Code — Kết hợp Plan Mode với subagents để refactor legacy code
- Debug hiệu quả với Claude Code — Dùng Plan Mode để phân tích root cause trước khi fix
Đọc tiếp
- Skills là gì? Từ slash command đến auto-invoke — Tạo custom skills để lưu lại plan templates cho các loại task thường gặp
- Subagents là gì? 6 built-in agents giải thích — Dùng Plan subagent để phân tích trong context window riêng biệt
- MCP là gì? Model Context Protocol giải thích đơn giản — Kết nối external data vào planning phase qua MCP servers
55+ Slash Commands trong Claude Code: Hướng dẫn từ A-Z và workflow thực chiến
55+ slash commands Claude Code từ A-Z: /plan, /commit, /batch giúp bạn tự động hóa mọi workflow phát triển. Hướng dẫn thực chiến cho dev Việt.
Git workflow thông minh với Claude Code: Từ commit đến PR không cần nhớ lệnh
Tự động hóa Git từ commit message chuẩn Conventional đến rebase và tạo PR chỉ bằng vài câu lệnh. Giải pháp thực chiến cho developer Việt Nam.