Một phiên (session) là một cuộc hội thoại được lưu lại, gắn với một thư mục dự án. Claude Code liên tục ghi phiên xuống máy trong lúc bạn làm việc - nhờ vậy bạn có thể quay lại đúng chỗ đã dừng, phân nhánh để thử hướng khác, hoặc chuyển qua lại giữa nhiều việc song song.
Desktop app, Claude Code on the web và extension VS Code mỗi nơi có lịch sử phiên riêng. Trang này nói về CLI.
Tiếp tục một phiên
Phần tiêu đề “Tiếp tục một phiên”| Lệnh | Tác dụng |
|---|---|
claude --continue | Tiếp tục phiên gần nhất trong thư mục hiện tại |
claude --resume | Mở bảng chọn phiên (session picker) |
claude --resume <tên> | Tiếp tục trực tiếp phiên có tên đó |
claude --from-pr <số> | Mở bảng chọn, lọc theo các phiên gắn với pull request đó |
/resume | Chuyển sang một hội thoại khác ngay trong phiên đang chạy |
Phiên tạo bằng claude -p (chế độ headless) hoặc Agent SDK không hiện trong bảng chọn, nhưng vẫn tiếp tục được nếu bạn truyền session ID: claude --resume <session-id>. Bạn có thể chạy lệnh này từ bất kỳ thư mục nào - Claude Code tìm session ID trong thư mục dự án hiện tại và các git worktree của nó trước, sau đó tìm tiếp ở mọi dự án khác trên máy, nên vẫn tìm ra một phiên đã khởi động ở nơi khác hoặc đã di chuyển bằng /cd.
Phiên được phục hồi mang theo những gì
Phần tiêu đề “Phiên được phục hồi mang theo những gì”- Lịch sử hội thoại - đầy đủ, kể cả các lần gọi tool và kết quả trả về.
- Model - phiên tiếp tục với model nó đang dùng. Không phục hồi nếu model đã bị khai tử, bị
availableModelschặn, hoặc bạn truyền--model/biến môi trườngANTHROPIC_MODELlúc khởi động. - Agent - phiên khởi động bằng
--agentsẽ tiếp tục với đúng agent đó (giữ system prompt, giới hạn tool, model). Truyền--agentkhi resume để đổi sang agent khác. - Chế độ quyền hạn - giữ nguyên chế độ cũ, trừ
planvàbypassPermissions(không bao giờ được phục hồi).autochỉ phục hồi nếu tài khoản bạn vẫn đủ điều kiện. Truyền--permission-modeđể ghi đè. - Scheduled task chưa hết hạn. Background Bash và monitor task thì không.
Resume từ bản tóm tắt
Phần tiêu đề “Resume từ bản tóm tắt”Trên gói Pro hoặc Max, khi bạn resume một phiên đã im lặng hơn khoảng một giờ và có trên 100.000 token, Claude Code khôi phục hội thoại rồi mở một hộp thoại trước khi bạn gửi tin nhắn đầu tiên - vì prompt cache lúc này đã hết hạn, request đầu tiên phải xử lý lại toàn bộ lịch sử dù bạn chọn phương án nào.
Hộp thoại đưa ra ba lựa chọn, khác nhau ở lượng hội thoại được mang theo cho các request sau đó:
- Resume từ bản tóm tắt - chạy
/compactngay lập tức. Claude Code gửi một request tóm tắt toàn bộ lịch sử, rồi thay lịch sử bằng bản tóm tắt đó, các trao đổi gần nhất, và tối đa 5 file vừa đọc gần đây. Các request sau chỉ mang theo bản tóm tắt. - Resume nguyên trạng - nạp lại hội thoại không đổi. Sau tin nhắn đầu tiên, Claude Code xử lý và cache lại toàn bộ lịch sử, rồi đọc từ cache ở các request sau trong khi cache còn “ấm”.
- Đừng hỏi lại - resume nguyên trạng và không hiện hộp thoại này ở các lần resume sau.
Resume nguyên trạng giữ mọi chi tiết của hội thoại, nhưng chi phí mỗi request tăng theo độ dài hội thoại. Resume từ tóm tắt rẻ hơn ở mỗi request sau đó, nhưng phần nào bản tóm tắt bỏ sót sẽ không còn trong ngữ cảnh của Claude nữa.
Bảng chọn phiên tìm ở đâu
Phần tiêu đề “Bảng chọn phiên tìm ở đâu”Claude Code lưu phiên theo từng thư mục dự án. Mặc định bảng chọn hiện:
- Các phiên trong worktree hiện tại (phiên chạy nền được đánh dấu
bg). - Các phiên khởi động ở nơi khác nhưng đã thêm thư mục hiện tại bằng
/add-dir.
Nhấn Ctrl+W để mở rộng ra mọi worktree của repo, Ctrl+A để xem mọi dự án trên máy.
Chọn một phiên thuộc worktree khác cùng repo → resume ngay tại chỗ. Chọn phiên thuộc dự án hoàn toàn khác → Claude Code copy sẵn lệnh cd + resume vào clipboard để bạn tự chạy.
Khi resume bằng tên, cả hai dạng lệnh đều tìm khớp chính xác trong repo hiện tại và các worktree:
| Lệnh | Khớp chính xác | Tên trùng/nhập nhằng |
|---|---|---|
claude --resume <tên> | Resume trực tiếp | Mở bảng chọn với tên đó điền sẵn làm từ khoá tìm |
/resume <tên> | Resume trực tiếp | Báo lỗi; chạy /resume không tham số để mở bảng chọn |
Đặt tên cho phiên
Phần tiêu đề “Đặt tên cho phiên”Đặt tên gợi nhớ để dễ tìm lại và resume bằng tên - đặc biệt quan trọng khi bạn làm nhiều việc song song.
| Khi nào | Cách đặt |
|---|---|
| Lúc khởi động | claude -n auth-refactor |
| Đang trong phiên | /rename auth-refactor - tên hiện luôn trên thanh prompt |
| Từ bảng chọn phiên | Chọn phiên rồi nhấn Ctrl+R |
| Khi duyệt plan | Duyệt một plan trong plan mode sẽ tự đặt tên phiên theo nội dung plan (nếu bạn chưa đặt tên) |
Nếu bạn không đặt tên, Claude Code tự sinh một tiêu đề ngắn tóm tắt prompt đầu tiên (do một model nhỏ/nhanh viết ở tác vụ nền), cộng một tên hiển thị mặc định kiểu my-app-3f. Lưu ý: tiêu đề tự sinh và tên mặc định không dùng được để resume - claude --resume <tên> chỉ khớp với tên bạn tự đặt.
Bảng chọn phiên (session picker)
Phần tiêu đề “Bảng chọn phiên (session picker)”Chạy /resume trong phiên, hoặc claude --resume không tham số, để mở bảng chọn tương tác:
| Phím | Hành động |
|---|---|
↑ / ↓ | Di chuyển giữa các phiên |
→ / ← | Mở/thu gọn nhóm phiên |
Enter | Resume phiên đang chọn |
Space | Xem trước nội dung phiên |
Ctrl+R | Đổi tên phiên đang chọn |
/ hoặc bất kỳ ký tự | Vào chế độ tìm kiếm, lọc danh sách. Dán URL của pull/merge request (GitHub, GitLab, Bitbucket) để tìm phiên đã tạo ra nó |
Ctrl+A | Hiện phiên của mọi dự án trên máy (nhấn lại để về repo hiện tại) |
Ctrl+W | Hiện phiên của mọi worktree trong repo (chỉ hiện với repo nhiều worktree) |
Ctrl+B | Chỉ hiện phiên thuộc git branch hiện tại (nhấn lại để bỏ lọc) |
Esc | Thoát bảng chọn hoặc thoát chế độ tìm |
Mỗi dòng hiện tên phiên (hoặc tiêu đề tự sinh / prompt đầu tiên), thời gian từ lần hoạt động cuối, git branch và dung lượng file.
Phân nhánh một phiên (/branch)
Phần tiêu đề “Phân nhánh một phiên (/branch)”Phân nhánh tạo một bản sao của hội thoại tính đến thời điểm hiện tại rồi chuyển bạn sang bản sao đó - phiên gốc giữ nguyên. Dùng khi muốn thử một hướng khác mà không mất hướng đang đi.
/branch try-streaming-approachBỏ tên thì Claude Code tự đặt theo prompt đầu tiên của hội thoại. Từ dòng lệnh, kết hợp --fork-session:
claude --continue --fork-sessionNhánh mới thừa hưởng gì:
| Trạng thái | Sau /branch |
|---|---|
| Lịch sử hội thoại | Được copy sang nhánh, tính đến lúc bạn chạy /branch |
| Quyền đã cấp “cho phiên này” | Vẫn còn - nhánh chạy trong cùng process. Nếu fork ra process riêng bằng --fork-session, bạn phải duyệt lại từ đầu |
| Subagent / lệnh Bash đang chạy nền | Vẫn chạy tiếp, nhưng output xuất hiện ở nhánh mới, không phải phiên gốc |
Phiên gốc không đổi trên đĩa và vẫn nằm trong bảng chọn - quay lại bằng /resume <tên-gốc> hoặc truyền session ID của nó.
Quản lý ngữ cảnh trong phiên
Phần tiêu đề “Quản lý ngữ cảnh trong phiên”Ba lệnh điều khiển những gì đang chiếm cửa sổ ngữ cảnh mà không cần thoát phiên:
/clear- bắt đầu lại với ngữ cảnh trống. Hội thoại cũ vẫn được lưu, resume lại bằng/resume. Tên bạn tự đặt (--name//rename) được giữ; tiêu đề tự sinh thì không./compact [chỉ dẫn]- thay lịch sử bằng một bản tóm tắt, có thể yêu cầu tập trung vào phần bạn chỉ định, ví dụ/compact tập trung vào các thay đổi API./context- xem hiện tại cái gì đang chiếm ngữ cảnh.
Xuất và lưu trữ dữ liệu phiên
Phần tiêu đề “Xuất và lưu trữ dữ liệu phiên”Chạy /export để mở menu cho phép copy hội thoại vào clipboard hoặc lưu ra file text thuần (tin nhắn và output tool được render thành văn bản dễ đọc). Truyền thẳng tên file để bỏ qua menu.
Truy cập hội thoại từ script
Phần tiêu đề “Truy cập hội thoại từ script”/export tạo bản transcript cho người đọc. Muốn dữ liệu có cấu trúc cho script xử lý, chọn theo cách script được kích hoạt:
- Chạy Claude một lần rồi lấy kết quả:
claude -pvới--output-format json(hoặcstream-json) trả về kết quả, session ID, usage và chi phí dưới dạng JSON. - Hỏi thêm một phiên đã có: truyền session ID vào
claude -p --resumeđể gửi prompt tiếp và nhận phản hồi có cấu trúc. - Phản ứng theo sự kiện phiên: đọc field
transcript_pathmà hooks và statusline nhận được ở input. MộtSessionEndhook có thể lưu trữ transcript khi phiên kết thúc. - Nhúng Claude vào app TypeScript/Python: dùng Agent SDK để nhận từng tin nhắn theo cách lập trình.
Ví dụ gửi prompt tiếp vào một phiên đã có và đọc câu trả lời bằng jq:
claude -p --resume <session-id> --output-format json "tóm tắt những gì chúng ta đã thay đổi" | jq -r '.result'Transcript được lưu ở đâu
Phần tiêu đề “Transcript được lưu ở đâu”Mặc định transcript lưu dạng JSONL tại ~/.claude/projects/<project>/<session-id>.jsonl, trong đó <project> là đường dẫn thư mục làm việc với mọi ký tự không phải chữ/số đổi thành -. Mỗi dòng là một object JSON (một tin nhắn, một lần gọi tool, hoặc metadata).
Vị trí lưu, thời gian giữ và việc có ghi transcript hay không đều cấu hình được:
| Muốn | Đặt | Ở đâu |
|---|---|---|
Chuyển chỗ lưu khỏi ~/.claude | CLAUDE_CONFIG_DIR | Biến môi trường |
| Đổi thời gian giữ mặc định 30 ngày | cleanupPeriodDays | settings.json |
| Tắt ghi transcript ở mọi chế độ | CLAUDE_CODE_SKIP_PROMPT_HISTORY | Biến môi trường |
| Tắt ghi cho một lần chạy không tương tác | --no-session-persistence | Cờ CLI, dùng với claude -p |
Xem thêm
Phần tiêu đề “Xem thêm”- Chạy nhiều phiên song song với worktree - mỗi worktree một checkout riêng trên branch riêng.
- Cửa sổ ngữ cảnh - cái gì chiếm ngữ cảnh và cái gì sống sót qua compaction.
- Lệnh & chế độ quyền hạn - danh sách slash command và các chế độ quyền.
lượt xem