0

Quản lý session trong Claude Code: /rewind, /rename, và hơn thế

Một session trong Claude Code là ngữ cảnh làm việc của bạn — cuộc trò chuyện, các file mà Claude đã đụng vào, việc đang làm. Không quản lý thì session chất đống mà không có tên, ngữ cảnh đầy ắp lịch sử cũ, và một chỉnh sửa hỏng khiến bạn cuống cuồng tìm tới git reset. Vài lệnh biến mớ hỗn độn đó thành thứ bạn điều khiển được: hoàn tác về bất kỳ điểm nào trước đó, đặt tên session để tìm lại, và giữ ngữ cảnh gọn nhẹ. Bài này đi qua những lệnh tôi hay dùng, kèm một ví dụ thực hành cho mỗi cái.

/rewind — nút undo cho cả một session

Đây là lệnh làm thay đổi cách bạn làm việc. Claude Code tạo một checkpoint mỗi khi bạn gửi một prompt — tự động, hồi tố, không cần thiết lập. Khi có gì đó hỏng, /rewind cho bạn nhảy về bất kỳ điểm nào trong số đó.

Mở nó bằng lệnh /rewind, hoặc nhấn Esc hai lần khi ô nhập đang trống. (Nếu bạn đã gõ gì đó, Esc hai lần sẽ xóa ô nhập thay vì mở menu.) Bạn nhận được một menu liệt kê mọi prompt trong session, và với mỗi cái, một lựa chọn về việc khôi phục gì:

  • Restore code and conversation — cuộn cả file lẫn cuộc trò chuyện về điểm đó.
  • Restore conversation — quay lại cuộc trò chuyện, giữ nguyên file hiện tại.
  • Restore code — hoàn tác các chỉnh sửa file của Claude, giữ cuộc trò chuyện.
  • Summarize from / up to here — nén một phần lịch sử để giải phóng ngữ cảnh (nói thêm ở phần sau).

Hạn chế bạn buộc phải biết: /rewind chỉ hoàn tác các chỉnh sửa mà Claude thực hiện qua công cụ chỉnh sửa của chính nó. Nó không hoàn tác:

  • Tác dụng phụ của Bash. Nếu Claude chạy rm old.js hay mv a b trong một lệnh shell, cái đó không được theo dõi — rewind sẽ không mang file trở lại.
  • Chỉnh sửa của subagent và các job chạy nền.
  • Bất cứ thứ gì ngoài dự án — database, deployment, lời gọi API.

Với những cái đó, git vẫn là lưới an toàn của bạn. Rewind lo cái thường ngày "Claude vừa sửa một file và tôi muốn bỏ chỉnh sửa đó", vốn là đa số trường hợp. (Snapshot được giữ cho 100 checkpoint gần nhất và hết hạn sau khoảng 30 ngày.)

Ví dụ thực hành. Bạn nhờ Claude refactor một module. Nó viết lại ba file, và giờ test hỏng theo kiểu khó lần ra. Thay vì hoàn tác bằng tay:

> /rewind
  ↑/↓ tới prompt ngay trước cuộc refactor
  Chọn "Restore code and conversation"

Bạn trở lại trạng thái xanh (test pass) — cả file lẫn cuộc trò chuyện — như thể cuộc refactor chưa từng xảy ra. Giờ bạn có thể diễn đạt lại yêu cầu và thử lại.

/rename — đặt cho session cái tên bạn nhận ra

Mặc định, một session được đặt một tiêu đề do AI tạo từ prompt đầu tiên của bạn. Ổn thôi, cho tới khi bạn có năm session đang mở và trình chọn (picker) là một bức tường những tiêu đề na ná nhau. /rename đặt cho một session một cái tên ngắn, dễ nhớ, hiện ra ở status line, trong session picker, và trong các danh sách session.

> /rename auth-refactor

Bạn cũng có thể đặt tên session lúc khởi động bằng claude -n auth-refactor, hoặc đổi tên từ trong session picker bằng cách tô sáng nó và nhấn Ctrl+R. Cái tên trở thành một resume handle (đầu mối để mở lại) — bạn có thể nhảy thẳng về bằng claude --resume auth-refactor (nói thêm ở dưới).

Ví dụ thực hành. Bạn đang xoay ba việc cùng lúc: một bug fix, một feature, và một code review. Đặt tên mỗi session ngay khi bắt đầu:

> /rename fix-login-race
# ... ở một terminal khác ...
> /rename feat-csv-export
# ... ở một terminal thứ ba ...
> /rename review-pr-482

Giờ picker đọc như một danh sách việc cần làm, và claude --resume fix-login-race thả bạn thẳng vào đúng cái — không cuộn, không đoán.

/resume--continue — quay lại làm việc

Session tồn tại lâu dài, nên bạn có thể rời đi rồi quay lại. Có hai đường vào:

  • claude --continue (hay claude -c) mở lại cuộc trò chuyện gần nhất trong thư mục hiện tại. Không menu — cứ thế tiếp tục chỗ bạn dừng.
  • claude --resume mở session picker để chọn từ các session cũ. Truyền một cái tên để bỏ qua menu: claude --resume auth-refactor.
  • Bên trong một session, /resume mở đúng cái picker đó để đổi cuộc trò chuyện mà không cần rời Claude Code.

Picker đáng để học. Phím mũi tên để di chuyển; Enter để mở lại; / (hoặc cứ gõ) để lọc theo tên hay tiêu đề; Ctrl+R để đổi tên; Ctrl+A để mở rộng ra các session từ mọi dự án trên máy. Bạn thậm chí có thể dán một URL của PR vào ô tìm kiếm để tìm ra session đã tạo ra nó.

Ví dụ thực hành. Hôm qua bạn gập laptop giữa chừng. Hôm nay, từ thư mục dự án:

claude -c          # nhảy thẳng về session của hôm qua

Hoặc, nếu bạn có vài cái đang chạy và muốn đúng một cái:

claude --resume    # chọn "fix-login-race" từ danh sách

/clear/compact — giữ ngữ cảnh gọn nhẹ

Một session dài làm đầy cửa sổ ngữ cảnh (context window). Hai lệnh xử lý việc đó, và chúng ngược nhau:

  • /clear bắt đầu một cuộc trò chuyện mới toanh trong cùng session — ngữ cảnh trống, tờ giấy trắng. Cuộc trò chuyện cũ được lưu và vẫn mở lại được. CLAUDE.md và memory của bạn được mang theo; các file bạn đã đọc thì không.
  • /compact tóm tắt cuộc trò chuyện tại chỗ, thay lịch sử dài bằng một bản tóm tắt có cấu trúc để bạn tiếp tục trong cùng một mạch. Nó tiêm lại CLAUDE.md, memory, và vài file bạn sửa gần nhất, nên ngữ cảnh của việc vẫn còn.

Quy tắc chung: /clear khi bạn chuyển sang việc không liên quan (lịch sử debug cũ giờ chỉ là tiếng ồn và tốn token ở mỗi tin nhắn). /compact khi vẫn cùng một việc mà ngữ cảnh đầy dần và bạn muốn đi tiếp.

/compact nhận một focus (trọng tâm) tùy chọn:

> /compact focus on the auth changes and the failing test

Cái đó bảo bản tóm tắt cần giữ rõ những gì. Và các lựa chọn /rewindSummarize là bản dao mổ — nén đúng một đoạn dài dòng (chẳng hạn một khúc debug lê thê) trong khi để nguyên hướng dẫn ban đầu và phần việc về sau.

Ví dụ thực hành. Bạn dành một tiếng debug một race condition; ngữ cảnh phình lên với những lần thử cụt đường. Bạn đã sửa xong và muốn chuyển sang viết test:

> /compact focus on the final fix for the login race
# ngữ cảnh co lại thành một bản tóm tắt gọn; bạn giữ nguyên session và bắt đầu viết test

Nếu thay vào đó bạn đã xong hẳn con bug đó và chuyển sang một feature không liên quan, /clear mới là lựa chọn tốt hơn — một tờ giấy trắng, ngữ cảnh cũ được lưu để dành.

Vài lệnh nữa đáng biết

  • /branch [name] tách (fork) cuộc trò chuyện hiện tại thành một session mới, để nguyên cái gốc. Rất hợp cho "để tôi thử một cách khác mà không mất cái này". Từ CLI: claude --continue --fork-session.
  • /export sao chép hoặc lưu cuộc trò chuyện hiện tại thành văn bản dễ đọc — tiện để chia sẻ một phiên debug hay lưu lại cách một thứ được dựng nên.
  • /context cho thấy một bản phân tích trực tiếp về thứ gì đang ngốn cửa sổ ngữ cảnh của bạn (CLAUDE.md, memory, file, lịch sử). Chạy nó trước khi /compact để thấy cái gì thật sự đang chiếm chỗ.

Một cheat sheet để lấy dùng

  • Lỡ sửa hỏng? /rewind (hoặc Esc Esc) → khôi phục code hoặc code+conversation. Nhớ là nó không hoàn tác Bash rm/mv — đó là việc của git.
  • Quá nhiều session? /rename từng cái; mở lại theo tên bằng claude --resume <name>.
  • Quay lại? claude -c cho session gần nhất, claude --resume để chọn một cái.
  • Chuyển việc? /clear. Cùng một việc, ngữ cảnh đầy? /compact (thêm một focus).
  • Muốn thử hai hướng? /branch.

Session thì rẻ để tạo và dễ để lạc mất dấu. Bỏ ra hai phút học mấy lệnh này và Claude Code thôi là một cuộc trò chuyện độc nhất chạy loạn, mà trở thành một tập các không gian làm việc có tên, hoàn tác được, mở lại được, mà bạn thật sự kiểm soát.

Link tham khảo

Bài viết gốc (tiếng Anh): Managing Sessions in Claude Code: /rewind, /rename, and More


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.