- Thực thi thay đổi hiệu quả: dán screenshot bằng Ctrl+V (kể cả macOS, KHÔNG phải Cmd+V) để chỉ đúng vùng UI; bật Planning Mode (/plan hoặc Shift+Tab 2 lần) để Claude khảo sát codebase → lập plan chi tiết → chờ duyệt trước khi sửa (Ctrl+G mở plan ra sửa tay, Claude dùng bản cuối).
- Effort level điều khiển độ sâu suy luận: /effort xem & chỉnh (low nhanh/rẻ ↔ max nghĩ lâu nhất), ultrathink để nghĩ thêm cho 1 prompt lẻ, Ctrl+O xem reasoning. Mental model: Planning = bề RỘNG (nhiều file/bước), Effort = chiều SÂU (logic/debug/thuật toán khó); cả hai đều tốn thêm token.
- Điều hướng hội thoại để giữ Claude tập trung: Escape ngắt giữa chừng để bẻ lái; Escape 2 lần hoặc /rewind để tua về điểm trước; /compact nén lịch sử mà giữ thông tin cốt (task liên quan); /clear mở hội thoại mới sạch context (task khác hẳn) — vẫn /resume lại được hội thoại cũ.
- Lái session dài: /compact có CHỈ THỊ (gõ "/compact Focus on X" để định hình summary giữ lại gì, tránh trôi hướng khi chi tiết quan trọng bị bỏ sót); rewind menu (Escape 2 lần, mỗi user prompt = 1 checkpoint) tách được Restore code / conversation / cả hai, kèm Summarize from here (nén phần SAU) và Summarize up to here (nén phần TRƯỚC checkpoint).
- Chạy tự chủ: /goal đặt điều kiện "done" và chạy tới khi evaluator xác nhận — evaluator CHỈ đọc transcript nên tiêu chí phải kiểm được từ output (VD test pass), /goal clear để huỷ; /loop chạy prompt theo nhịp để poll CI/deploy (Escape để dừng); worktrees cho mỗi agent một file tree riêng (hết conflict khi chạy song song), .worktreeinclude copy file git-ignored (env/config) vào mỗi cây.
TL;DR — Ba nhóm đòn bẩy để lái một phiên dài: đưa đúng đầu vào (screenshot Ctrl+V, Planning Mode,
/effort), cắt sai sớm (Escape ngắt giữa chừng, rewind,/compactcó chỉ thị vs/clear), và thả tự chủ có kiểm soát (/goalchạy tới khi evaluator xác nhận "done",/loop, worktree cho việc song song).
Phần 2/7 của ghi chú khoá Claude Code in Action — đề thi thử 219 câu (chấm điểm + giải thích) nằm ở tab "Đề thi thử" trên trang tổng quan.
Thực thi thay đổi — screenshot, Planning Mode & Effort
Làm trên project có sẵn thì liên tục phải sửa đổi. Bài này gom mấy kỹ thuật để "ra lệnh" chính xác hơn: giao tiếp bằng hình ảnh (screenshot) và điều khiển cách Claude suy nghĩ (Planning Mode + Effort).
Screenshot — chỉ tận mắt thay vì tả bằng lời
Cách nhanh nhất để nói "chỗ này này" với Claude là dán screenshot. Muốn sửa một mảng UI cụ thể, chụp màn hình rồi dán vào — Claude thấy đúng chỗ đang chỉ, khỏi tả lòng vòng.
- Dán bằng
Ctrl+V— kể cả trên macOS cũng làCtrl+V, KHÔNG phảiCmd+V(đây là phím riêng để dán ảnh vào khung chat). - Dán xong, bảo Claude sửa đúng vùng đó.
Planning Mode — khảo sát & lập kế hoạch TRƯỚC khi ra tay
Với task phức tạp cần hiểu rộng nhiều chỗ trong codebase, bật Planning Mode để Claude thăm dò kỹ trước khi sửa.
Bật bằng: gõ /plan, hoặc bấm Shift+Tab để luân phiên qua các permission mode tới khi dòng chỉ báo dưới màn hình hiện "plan mode on". Thứ tự cycle: manual (default) → accept edits (acceptEdits) → plan → auto — nên từ manual bấm 1 lần ra acceptEdits, 2 lần ra plan. (Bộ mode đầy đủ + auto mode: xem mục "Permission mode" phía dưới.)
⚠️ Đừng lẫn:
plankhácautovà ngược hẳnbypassPermissions.plan= read-only, chỉ khảo sát + lập kế hoạch, không sửa gì;bypassPermissions= bỏ qua mọi câu hỏi permission (nguy hiểm). Plan là mode an toàn nhất, không phải bypass.
Ở plan mode Claude sẽ:
- Đọc nhiều file hơn trong project.
- Lập một plan chi tiết.
- Trình bày đúng ý định nó định làm.
- Chờ duyệt rồi mới làm.
→ Đây là cơ hội để review và bẻ lái nếu Claude bỏ sót gì hoặc chưa tính tới một tình huống.
💡 Tip: khi xem plan, bấm
Ctrl+Gđể mở plan trong text editor, sửa tay cho chính xác rồi submit — Claude dùng đúng bản cuối được gửi.
Effort level — chỉnh Claude "nghĩ" sâu tới đâu
Mặc định Claude reason (suy luận) trước khi trả lời — thấy gợi ý kiểu "still thinking". Muốn xem thực sự nó nghĩ gì, bấm Ctrl+O để mở transcript viewer — xem chi tiết các bước reasoning và tool execution (lưu ý: trên desktop/GUI phím có thể khác terminal; docs nói "shortcuts may vary by platform").
Độ sâu suy luận điều khiển được bằng effort level. Gõ /effort để xem mức hiện tại và chỉnh:
low— nhanh & rẻ hơn (ít token).max— nghĩ lâu nhất, dành cho bài khó.- Mức mặc định tùy model + gói;
/efforthiện đúng mức đang dùng.
Nếu chỉ muốn Claude nghĩ thêm cho ĐÚNG một prompt, thả từ khoá ultrathink vào câu đó. Nó báo Claude reason nhiều hơn turn này thôi, không đổi effort level của cả session.
⚠️ Freshness: video còn dùng các keyword "think / think harder" cũ để ép nghĩ nhiều — những keyword đó nay không còn tác dụng. Cách đúng hiện tại: chỉnh
/effort, và dùngultrathinkcho từng prompt lẻ.
Planning vs Effort — hai loại "khó" khác nhau
Chỗ dễ lẫn nhất, nên tách bạch rõ — hai tính năng giải quyết hai loại độ phức tạp khác nhau:
| Planning Mode = bề RỘNG | Tăng Effort = chiều SÂU | |
|---|---|---|
| Giải quyết | Cần hiểu rộng codebase | Cần nghĩ sâu một bài hóc |
| Hợp với | Task nhiều bước; đổi nhiều file/component | Logic phức tạp, debug bug khó, bài thuật toán |
Kết hợp cả hai khi task vừa cần rộng vừa cần sâu. Nhưng nhớ: cả hai đều ngốn thêm token → cân nhắc chi phí.
Áp dụng thực tế: mental model tôi ghim: Planning = Claude nhìn RỘNG tới đâu; Effort = Claude nghĩ SÂU tới đâu — hai trục độc lập. Plan mode thực chất ép quy trình "chốt phương án trước khi code", giống việc tôi bắt review spec/design trước khi build; với khách Nhật thì cực hợp văn hoá "xác nhận rồi mới làm", tránh Claude (hay dev) lao vào sửa 10 file rồi mới lộ sai hướng. Effort là nút vặn ngân sách suy nghĩ: đừng để
maxchạy suốt (đốt token vô ích cho việc vặt) — chỉ vặn cao khi gặp bug logic thật sự hóc. VàCtrl+Ođọc reasoning là công cụ audit: khi Claude ra kết quả lạ, mở reasoning xem nó hiểu sai từ bước nào rồi sửa trúng chỗ đó, thay vì prompt lại từ đầu.
Điều hướng hội thoại — Escape, rewind, /compact, /clear
Nếu context management ở trên lo phần trước khi hỏi (nạp đúng file), thì phần này lo phần trong lúc hội thoại chạy: cách lái để Claude khỏi lan man và giữ context sạch. Bốn kỹ thuật.
Ngắt Claude bằng Escape
Claude đi sai hướng hoặc ôm quá nhiều việc một lúc → bấm Escape để dừng giữa response và bẻ lái. Rất hữu ích khi muốn Claude tập trung đúng một task. VD: nhờ viết test cho nhiều hàm mà Claude bắt đầu vẽ nguyên một kế hoạch đồ sộ cho tất cả → ngắt, yêu cầu nó làm từng hàm một.
Escape + Memories — dập lỗi lặp lại
Ứng dụng mạnh nhất của Escape: sửa lỗi Claude tái phạm qua nhiều conversation. Quy trình:
Escapeđể dừng response hiện tại.- Chạy
/memory(hoặc sửaCLAUDE.mdtrực tiếp) — ghi lại cách làm đúng. - Tiếp tục hội thoại với thông tin đã sửa.
→ Nhờ vậy các conversation sau trên project không lặp lại cùng lỗi đó. (Freshness: video dùng shortcut # cũ để thêm memory — đã gỡ, giờ dùng /memory.)
Rewind — tua về checkpoint
Hội thoại dài thường tích context nhiễu (VD một màn debug lằng nhằng không còn cần cho task kế). Mỗi prompt của user tạo một checkpoint (điểm khôi phục) — nên khi Claude đi lạc, khỏi cần prompt để gỡ ra, cứ tua thẳng về checkpoint gần nhất. Bấm Escape hai lần trên ô prompt trống (hoặc gõ /rewind) để mở menu, với năm lựa chọn:
- Restore code and conversation — tua lại cả hai (file + chat).
- Restore conversation — chỉ tua lại chat, giữ nguyên file.
- Restore code — chỉ tua lại file, giữ nguyên chat.
- Summarize from here — nén phần SAU checkpoint. Hợp khi vừa có một màn lạc đề (side-conversation) và chỉ muốn giải phóng chỗ.
- Summarize up to here — nén phần TRƯỚC checkpoint. Hợp khi có một pha setup dài muốn ép gọn, nhưng vẫn giữ nguyên phần implement phía sau.
Tách được code với conversation là điểm mạnh: rollback file mà vẫn giữ hiểu biết trong chat (Claude đã hiểu codebase), hoặc ngược lại — bỏ phần lịch sử gây nhiễu mà không đụng tới file.
/compact — nén hội thoại, giữ cái cốt
Lệnh /compact tóm tắt toàn bộ lịch sử hội thoại nhưng giữ lại thông tin then chốt Claude đã học. Lý tưởng khi:
- Claude đã nắm nhiều kiến thức về project.
- Muốn tiếp tục các task liên quan.
- Hội thoại đã dài nhưng chứa context quan trọng.
⭐ Lái cái summary bằng /compact có chỉ thị (directed compact): đừng gõ /compact trơn. Rủi ro của compact là một chi tiết quan trọng bị bỏ khỏi bản tóm tắt → Claude trôi khỏi hướng. Thêm chỉ thị ngay sau lệnh để bảo Claude giữ lại đúng thứ cần — VD debug xong từ lâu, giờ chỉ còn quan tâm mấy thay đổi API thì nói thẳng:
/compact Focus on the --version flag implementation
Mọi thứ viết sau /compact định hình cái summary giữ lại gì — đó là "vô-lăng" của bạn cho context.
/clear — bắt đầu tinh khôi
Lệnh /clear mở một conversation mới với context sạch hoàn toàn. Hợp nhất khi:
- Chuyển sang một task khác hẳn, không liên quan.
- Context hiện tại có thể làm Claude rối cho task mới.
Vẫn quay lại hội thoại cũ được bằng /resume — /clear không xoá nó khỏi session history.
/compact |
/clear |
|
|---|---|---|
| Làm gì | Tóm tắt + giữ thông tin cốt | Xoá sạch, khởi tạo context mới |
| Khi nào | Task liên quan, cần giữ hiểu biết | Task khác hẳn, không cần context cũ |
Khi nào dùng cả cụm này: hội thoại dài context bị nhiễu, lúc chuyển task, khi Claude lặp lỗi, và trong project phức tạp cần giữ tập trung vào từng component. Đây không chỉ là tiện ích — chúng là công cụ thiết yếu để duy trì một session AI-assisted hiệu quả.
Áp dụng thực tế: cả bài này lẫn bài context management ở trên đều xoay quanh cùng một tài nguyên hữu hạn: context window. Cách tôi phân vai:
/compact= "chốt biên bản cuộc họp rồi đi tiếp" (giữ kết luận, bỏ tranh luận thừa) — dùng khi làm chuỗi task liên quan;/clear= "đổi sang phòng họp mới" — khi nhảy sang việc chẳng dính dáng. Còn vòng Escape →/memory→ tiếp tục chính là một vòng cải tiến liên tục: mỗi lần Claude sai một kiểu, tôi không sửa tay lần đó rồi thôi, mà ghi luật vào CLAUDE.md để lỗi không tái diễn — y hệt tinh thần retro/CAPA trong quản lý delivery: chặn lỗi tại nguồn, không chữa cháy lặp lại.
Chạy tự chủ hơn — /goal, /loop, và worktrees
Bốn kỹ thuật trên giả định bạn kè kè bên cạnh — theo dõi và bẻ lái tay. Khi muốn Claude tự chạy dài hơi hơn mà không phải ngồi canh từng bước, có ba công cụ.
/goal — đặt điều kiện "xong"
/goal cho bạn mô tả "done" trông như thế nào; Claude cứ chạy xuyên nhiều turn cho tới khi một evaluator (bộ chấm) nhanh xác nhận các điều kiện đã thoả. Nó không dừng ngay lần đầu tưởng là xong — phải qua evaluator mới thôi.
/goal all tests in src/billing pass, and the type checker reports zero errors
Huỷ bằng /goal clear. ⚠️ Ràng buộc cốt tử: evaluator chỉ đọc transcript (những gì Claude thực sự in ra). Nên điều kiện phải kiểm được từ output — VD kết quả một lần chạy test — chứ không phải thứ chỉ nằm trong đầu bạn hay ngoài màn hình.
/loop — chạy lặp theo nhịp
/loop chạy một prompt theo chu kỳ giữa các turn (cố định hoặc tự-định-nhịp). Dùng để kéo trạng thái từ bên ngoài — như một lần chạy CI hay một lần deploy — rồi hành động khi trạng thái đổi. Dừng bằng Escape. Khác /goal (chạy tới khi một điều kiện "done" được xác nhận), /loop chỉ lặp theo nhịp và phản ứng với thay đổi bên ngoài.
Worktrees — chạy song song không giẫm chân nhau
Ẩn dụ "lái xe" ở trên giả định một vô-lăng trong một xe. Nhưng khi chạy nhiều agent trên cùng codebase, hai session tranh nhau cùng bộ file → conflict. Đó là chỗ worktree vào cuộc: mỗi session được một cây file (file tree) độc lập của riêng nó, nên không thể ghi đè thay đổi của nhau. Session thoát → worktree sạch tự bị dọn.
Có một file đáng biết: .worktreeinclude đặt ở gốc repo, liệt kê các file bị git-ignore cần copy vào mỗi worktree — như file biến môi trường (.env) hay config local mà mọi worktree đều cần nhưng không muốn commit.
Áp dụng thực tế: tôi xếp mấy công cụ này theo trục "mình còn cầm lái bao nhiêu". Directed
/compactvà rewind menu là cầm lái tay — mình còn ngồi trong xe, chỉ tinh chỉnh./goallà giao khoán có nghiệm thu: mình mô tả tiêu chí kiểm được (test pass, type-check sạch) rồi để nó tự chạy — đúng tinh thần Definition of Done trong delivery, "done" phải đo được chứ không phải "Claude nghĩ là xong"./looplà polling một hệ ngoài (CI/deploy). Còn worktree là bài học tôi thấy rõ nhất khi điều phối nhiều luồng: không cho hai người sửa chung một file — tách nhánh vật lý để khỏi conflict, y như mỗi dev một branch. Riêng ràng buộc/goal"chỉ đọc transcript" là một nhắc nhở rất thực tế: muốn tự động nghiệm thu thì phải in bằng chứng ra output, vì evaluator không đọc được thứ nằm ngoài màn hình.
Phần tiếp theo: Claude Code: permission mode & hooks
Nguồn: Claude Code in Action (Anthropic Academy) — Copyright Anthropic. Phần đề thi thử cho khoá này nằm ở tab "Đề thi thử" trên trang tổng quan khoá.