3.4 Plan Mode vs Direct Execution
Những gì cần nắm
Phần tiêu đề “Những gì cần nắm”Claude Code làm việc ở hai chế độ chính: plan mode và direct execution. Đề thi kiểm tra xem bạn có chọn đúng chế độ cho từng tác vụ hay không. Đây không phải chuyện sở thích — có tiêu chí rõ ràng cho từng chế độ.
Plan mode: khi nào dùng
Phần tiêu đề “Plan mode: khi nào dùng”Plan mode dành cho tác vụ phức tạp, nơi bạn cần khảo sát codebase, cân nhắc nhiều hướng tiếp cận và thiết kế chiến lược trước khi đụng vào code. Dùng plan mode khi:
- Có thay đổi quy mô lớn. Tách monolith thành microservices, tổ chức lại hệ thống module, hay refactor một abstraction lõi — tất cả đều đòi hiểu cấu trúc hiện tại trước khi đổi.
- Có nhiều hướng làm đều hợp lệ. Khi bài toán giải được theo nhiều cách (ví dụ các kiến trúc tích hợp khác nhau với yêu cầu hạ tầng khác nhau), bạn cần đánh giá trước khi chốt.
- Cần quyết định kiến trúc. Ranh giới service, phụ thuộc giữa module, API contract — những quyết định này để lại hệ quả về sau. Lập kế hoạch tránh được việc phải làm lại tốn kém.
- Cần sửa nhiều file. Migrate một library ảnh hưởng 45+ file cần một chiến lược nhất quán. Không có kế hoạch, bạn có nguy cơ áp migration không đồng đều giữa các file.
- Cần khảo sát codebase. Khi bạn phải hiểu phụ thuộc, lần theo luồng dữ liệu, hay vẽ lại cấu trúc hiện có trước khi thay đổi bất cứ thứ gì.
Plan mode cho phép khảo sát và thiết kế an toàn. Claude đọc codebase, phân tích phụ thuộc và đề xuất hướng làm — tất cả mà không sửa file nào.
Direct execution: khi nào dùng
Phần tiêu đề “Direct execution: khi nào dùng”Direct execution dành cho những thay đổi đã hiểu rõ, phạm vi rõ ràng và giới hạn. Dùng direct execution khi:
- Thay đổi có phạm vi rõ. Một bug fix trong một file với stack trace rõ ràng. Thêm một điều kiện validate ngày tháng. Cập nhật một giá trị cấu hình.
- Đã biết cách làm đúng. Bạn biết cần đổi gì, ở đâu, và đổi thế nào. Không còn quyết định thiết kế nào phải ra.
- Phạm vi hẹp. Một hàm, một file, một thay đổi rõ ràng.
Direct execution bỏ qua giai đoạn lập kế hoạch và sửa luôn. Với tác vụ đơn giản, định nghĩa rõ, lập kế hoạch chẳng thêm được gì.
Explore subagent
Phần tiêu đề “Explore subagent”Explore subagent giữ output khảo sát dài dòng ra khỏi hội thoại chính. Trong tác vụ nhiều giai đoạn, việc khảo sát codebase đẻ ra rất nhiều thứ: file listing, dependency graph, trích đoạn code, ghi chú phân tích. Để tất cả đổ vào hội thoại chính thì context window đầy, và chất lượng các response sau đó tụt xuống.
Explore subagent:
- Chạy phần khảo sát trong môi trường tách biệt
- Sinh ra bản tóm tắt những gì tìm được
- Trả bản tóm tắt đó về hội thoại chính
- Giữ context window chính sạch cho phần triển khai thực sự
Dùng Explore subagent trong tác vụ nhiều giai đoạn, nơi giai đoạn khảo sát dài dòng còn giai đoạn triển khai cần context tập trung.
Cách hybrid: plan rồi execute
Phần tiêu đề “Cách hybrid: plan rồi execute”Kết hợp plan mode để điều tra và direct execution để triển khai là chuyện thường gặp trong thực tế và có trong đề thi. Pattern:
- Giai đoạn plan: Dùng plan mode để khảo sát codebase, hiểu phụ thuộc, đánh giá các hướng làm, và thiết kế chiến lược triển khai.
- Giai đoạn execute: Chuyển sang direct execution để triển khai theo hướng đã chốt, từng file một, với chiến lược đã có sẵn.
Ví dụ, migrate từ một logging library sang một cái khác trên 30 file:
- Plan: Xác định mọi file import library cũ, ánh xạ khác biệt API giữa cũ và mới, thiết kế pattern migration, kiểm tra edge case.
- Execute: Áp pattern migration cho từng file theo hướng đã lên kế hoạch.
Là plan RỒI direct, không phải plan HOẶC direct. Đề thi muốn bạn nhận ra pattern này.
Tóm tắt khung quyết định
Phần tiêu đề “Tóm tắt khung quyết định”| Đặc điểm tác vụ | Chế độ |
|---|---|
| Tái cấu trúc kiến trúc | Plan mode |
| Migrate library (nhiều file) | Plan mode (rồi direct execution) |
| Có nhiều hướng triển khai đều hợp lệ | Plan mode |
| Cần khảo sát codebase | Plan mode (với Explore subagent) |
| Bug fix một file với stack trace rõ ràng | Direct execution |
| Thêm một bước validate vào một hàm | Direct execution |
| Cập nhật một giá trị cấu hình | Direct execution |
| Biết cách sửa, biết chỗ sửa, biết hướng làm | Direct execution |
Nhận ra độ phức tạp ngay từ đầu
Phần tiêu đề “Nhận ra độ phức tạp ngay từ đầu”Một bẫy thi quen thuộc: bắt đầu bằng direct execution rồi mới chuyển sang plan mode khi độ phức tạp lộ ra. Khi yêu cầu đã nói rõ tác vụ là phức tạp (ví dụ “tách monolith thành microservices”), hãy dùng plan mode ngay. Độ phức tạp không phải thứ sẽ xuất hiện sau — nó nằm ngay trong mô tả tác vụ. Chờ bị bất ngờ là nước đi sai.
Bẫy thi
Phần tiêu đề “Bẫy thi”Tình huống luyện tập
Phần tiêu đề “Tình huống luyện tập”Team của bạn có ba việc: (1) tách monolith thành microservices, (2) sửa null pointer exception trong một hàm với stack trace rõ ràng, (3) migrate từ một logging library sang cái khác trên 30 file. Mỗi việc nên dùng chế độ nào?
- A. Plan mode cho cả ba, vì cả ba đều động vào code
- B. Plan mode chỉ cho (1), còn lại direct execution
- C. Plan mode cho (1) và (3), direct execution cho (2)
- D. Direct execution cho cả ba với instruction đầy đủ ngay từ đầu
Đáp án & giải thích
Đúng: C
- A — Việc 2 là bug fix đã hiểu rõ, phạm vi hẹp, có stack trace rõ ràng. Plan mode không thêm giá trị gì khi vấn đề, vị trí và cách sửa đều đã rõ.
- B — Việc 3 đụng 30 file với khác biệt API giữa library cũ và mới. Không lên pattern migration trước thì có nguy cơ áp không đồng đều giữa các file và bỏ sót edge case.
- C — Việc 1 có quyết định kiến trúc với nhiều lựa chọn ranh giới service đều hợp lệ — plan mode là bắt buộc. Việc 3 đụng 30 file và cần chiến lược migration nhất quán, thiết kế trước khi thực thi. Việc 2 là sửa một hàm với stack trace rõ — direct execution là phù hợp.
- D — Việc 1 cần khảo sát codebase để hiểu phụ thuộc trước khi tái cấu trúc. Instruction đầy đủ ngay từ đầu giả định bạn đã biết cấu trúc đúng — nhưng bạn không thể biết điều đó nếu chưa khảo sát code.
Nguồn
Phần tiêu đề “Nguồn”- Claude Code Plan Mode Documentation — Anthropic
- Claude Certified Architect Foundations Exam Guide — Task Statement 3.4 — Anthropic
- Claude Certified Architect Foundations Exam Guide — Sample Question 5 — Anthropic
Exam Simulator
Phần tiêu đề “Exam Simulator”Năm câu trắc nghiệm theo format đề thi về Plan Mode vs Direct Execution. Chọn đáp án trước, rồi mở phần giải thích.
Câu 1
Phần tiêu đề “Câu 1”Team của bạn có ba việc: (1) tách monolith thành microservices, (2) sửa null pointer exception trong một hàm với stack trace rõ ràng, (3) migrate từ một logging library sang cái khác trên 30 file. Mỗi việc nên dùng chế độ nào?
- A. Plan mode cho cả ba, vì cả ba đều động vào code
- B. Plan mode cho (1) và (3), direct execution cho (2)
- C. Plan mode cho (1), direct execution cho (2) và (3)
- D. Direct execution cho cả ba với instruction đầy đủ ngay từ đầu
Đáp án & giải thích
Đúng: B
- A sai vì: Việc 2 là bug fix đã hiểu rõ, phạm vi hẹp, có stack trace rõ ràng. Plan mode không thêm giá trị gì khi vấn đề, vị trí và cách sửa đều đã rõ.
- B đúng vì: Việc 1 có quyết định kiến trúc với nhiều lựa chọn ranh giới service đều hợp lệ — plan mode là bắt buộc. Việc 3 đụng 30 file và cần chiến lược migration nhất quán, thiết kế trước khi thực thi. Việc 2 là sửa một hàm với stack trace rõ — direct execution là phù hợp.
- C sai vì: Việc 3 đụng 30 file với khác biệt API giữa library cũ và mới. Không lên pattern migration trước thì có nguy cơ áp không đồng đều giữa các file và bỏ sót edge case.
- D sai vì: Việc 1 cần khảo sát codebase để hiểu phụ thuộc trước khi tái cấu trúc. Instruction đầy đủ ngay từ đầu giả định bạn đã biết cấu trúc đúng mà chưa hề khảo sát.
Câu 2
Phần tiêu đề “Câu 2”Một developer được giao migrate một date library trên 25 file. Họ dự định dùng plan mode để thiết kế chiến lược migration, rồi chuyển sang direct execution để áp từng file. Cách làm này gọi là gì?
- A. Incremental execution với checkpoint
- B. Sequential plan mode
- C. Staged deployment sau feature flag
- D. Pattern hybrid plan-then-execute
Đáp án & giải thích
Đúng: D
- A sai vì: Incremental execution không phải pattern được định nghĩa của Claude Code trong tài liệu thi.
- B sai vì: Sequential plan mode không phải một khái niệm có thật. Plan mode là một giai đoạn; direct execution là giai đoạn kia.
- C sai vì: Staged deployment nói về chiến lược triển khai, không phải chế độ thực thi của Claude Code.
- D đúng vì: Pattern hybrid dùng plan mode để điều tra và thiết kế, rồi direct execution để triển khai hướng đã chốt. Đây là tên chính thức của việc kết hợp cả hai chế độ.
Câu 3
Phần tiêu đề “Câu 3”Trong một đợt phân tích codebase nhiều giai đoạn, Explore subagent dựng dependency map, nhận diện pattern và phân tích 50 file. Hội thoại chính chỉ nhận được bản tóm tắt. Vì sao việc cách ly này quan trọng?
- A. Explore subagent truy cập được những file mà session chính không truy cập được
- B. Explore subagent chạy trên model mạnh hơn, hợp với việc phân tích
- C. Output khảo sát dài dòng sẽ lấp đầy context window của hội thoại chính
- D. Cách ly ngăn phần phân tích sửa vào file source
Đáp án & giải thích
Đúng: C
- A sai vì: Explore subagent không có quyền truy cập file đặc biệt. Nó có cùng quyền với session chính.
- B sai vì: Explore subagent dùng cùng model. Mục đích của nó là cách ly output, không phải chọn model.
- C đúng vì: Giữ gìn context window mới là mục đích chính. Không cách ly thì hàng loạt file listing, dependency graph và trích đoạn code lấp đầy context window. Các response triển khai sau đó tệ đi vì context liên quan bị đẩy ra bởi output khảo sát dài dòng.
- D sai vì: Plan mode mới là thứ ngăn việc sửa file, không phải riêng Explore subagent. Mục đích của Explore subagent là cách ly context.
Câu 4
Phần tiêu đề “Câu 4”Một đồng nghiệp đề nghị bắt đầu bằng direct execution cho một tính năng đòi tái cấu trúc module authentication trên 15 file. Họ lập luận rằng có thể chuyển sang plan mode nếu độ phức tạp lộ ra. Cách làm này có đúng không?
- A. Không, phạm vi đã biết rồi nên plan mode phải nằm ở ngay đầu
- B. Có, bắt đầu gọn bằng direct execution rồi leo thang sang plan mode khi cần luôn là best practice
- C. Có, vì 15 file còn dưới ngưỡng cần plan mode
- D. Không, vì luôn phải dùng plan mode cho mọi tác vụ, bất kể phạm vi
Đáp án & giải thích
Đúng: A
- A đúng vì: Yêu cầu nói rõ là tái cấu trúc trên 15 file. Đây là thay đổi kiến trúc nhiều file với độ phức tạp đã biết. Plan mode phải được chọn ngay từ đầu để khảo sát phụ thuộc và thiết kế hướng làm trước khi sửa.
- B sai vì: Khi độ phức tạp đã nằm sẵn trong yêu cầu (tái cấu trúc, 15 file, xuyên module), chờ bị bất ngờ là cách làm sai. Độ phức tạp là đã biết, không phải suy đoán.
- C sai vì: Không có ngưỡng số file cố định nào. Quyết định dựa trên độ mơ hồ và việc có nhiều hướng làm hợp lệ hay không, không phải một con số thần kỳ.
- D sai vì: Dùng plan mode cho mọi tác vụ là phí thời gian với những thay đổi đã định nghĩa rõ, phạm vi hẹp.
Câu 5
Phần tiêu đề “Câu 5”Tác vụ nào sau đây phù hợp nhất với direct execution mà không cần giai đoạn lập kế hoạch?
- A. Tách một module tiện ích dùng chung đang được 12 service khác nhau sử dụng
- B. Đánh giá ba chiến lược caching khác nhau cho một API endpoint
- C. Sửa một lỗi gõ trong file cấu hình gây hỏng deployment
- D. Migrate pattern truy cập database từ callback sang async/await trên toàn project
Đáp án & giải thích
Đúng: C
- A sai vì: Một tiện ích dùng chung bởi 12 service đòi hiểu hết bên tiêu thụ trước khi tách. Cần plan mode để vẽ phụ thuộc.
- B sai vì: Đánh giá ba chiến lược là so sánh các hướng làm với đánh đổi khác nhau. Đây là việc ra quyết định kiến trúc, cần plan mode.
- C đúng vì: Sửa lỗi gõ trong file cấu hình có phạm vi rõ, đã hiểu rõ và không mơ hồ gì. Vấn đề đã biết, vị trí đã biết, cách sửa hiển nhiên.
- D sai vì: Migrate pattern trên toàn project là thay đổi nhiều file cần chiến lược nhất quán. Plan mode thiết kế migration; direct execution áp nó.