> ## Content Index
> Fetch the complete content index at: https://locdang.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Quản lý session trên Claude Code - tất tần tật tử A đến Z
- URL: https://locdang.com/quan-ly-session-tren-claude-code-tat-tan-tat-tu-a-en-z/
- Published: 2026-11-08T02:00:00.000Z
- Updated: 2026-11-08T12:38:16.000Z
- Description: Phiên bản Claude Code 2.1.319 vừa bổ sung một số cập nhật quan trọng để hỗ trợ quản lý nhiều Claude Code session trong một session duy nhất.
- Author: Đặng Hải Lộc
- Tags: Share to learn, claude code, ai, tech learn

> Phiên bản Claude Code 2.1.319 vừa bổ sung một số cập nhật quan trọng để hỗ trợ quản lý nhiều Claude Code session trong một session duy nhất. Vì sao điều này quan trọng? vì nó cho phép Claude Code giữ vị thế độc tôn, là ứng dụng agent orchestration tốt nhất hiện nay, cho phép điều phối hàng trăm agents cùng lúc để phối hợp thực hiện nhiệm vụ. Trong bài viết này, chúng ta sẽ cùng tìm hiểu session managememt trong Claude Code là gì, và vì sao session management trong Claude Code lại đang là tốt nhất hiện nay.

## Session là một căn phòng, terminal chỉ là cánh cửa

Hình dung căn phòng làm việc của bạn. Tài liệu bày kín bàn, ghi chú dán ven màn hình, cuốn sổ đang mở ở trang dở dang. Chiều nay ra về, bạn khóa cửa. Sáng mai quay lại, mọi thứ vẫn nguyên như hôm qua.

Session của Claude Code là căn phòng đó. Terminal chỉ là cánh cửa. Phần lớn thiệt hại mà người dùng gán cho câu "đóng terminal mất hết" thực ra đến từ việc không biết đường quay lại phòng, chứ phòng chưa từng bị dọn.

Lý do nằm ở cách lưu dữ liệu. Mỗi dòng hội thoại, mỗi lần gọi tool, mỗi kết quả trả về đều được ghi liên tục vào đúng một file transcript dạng JSONL, tại `~/.claude/projects/<tên-project>/<session-id>.jsonl` ([docs sessions](https://code.claude.com/docs/en/sessions.md?ref=locdang.com)). Resume không phải AI "cố nhớ lại" mà là đọc nguyên file đó vào lại. Trí nhớ của Claude Code là một file, không phải một cảm giác. Muốn dời cả kho session đi chỗ khác thì đặt biến `CLAUDE_CONFIG_DIR`. Muốn không để vết thì có cờ `--no-session-persistence`.

Vòng đời đầy đủ của một session trông như thế này.

![Vòng đời session Claude Code theo analogy bàn làm việc - bắt đầu với biển tên, checkpoint tự chụp khi làm việc, đóng terminal không mất gì, quay lại qua ba đường, fork thử hướng mới, và đồng hồ dọn phòng ~30 ngày chạy ngầm](https://locdang.com/content/images/2026/11/session-lifecycle.png)

Analogy này dừng đúng ở ba chỗ, và ba chỗ đó mới là phần đáng tiền. Phòng thật chỉ có một phiên bản duy nhất - session thì `/branch` ra được nhiều dòng riêng, mỗi dòng tự sống đời mình, phòng không tự nhân bản được. Quay lại phòng thật thì chính bạn còn nhớ định làm gì tiếp - resume trả lại trí nhớ cho Claude, còn các tab editor đang mở của bạn thì không, phần đó vẫn là trách nhiệm của bạn. Cuối cùng, bảo mẫu thật sẽ không dọn phòng đang có người dùng - còn `cleanupPeriodDays` dọn theo thời gian đồng hồ, nó không biết session nào quý với bạn. Chỗ gãy thứ ba này nguy hiểm nhất, nói kỹ ở phần hiểu nhầm dưới.

## Đặt tên cho session để dễ dàng resume

Đặt tên có ba cách. Lúc start thì `claude -n ten-session`. Giữa chừng thì gõ `/rename`. Hoặc `Ctrl+R` ngay trong màn hình chọn. Session không đặt tên cũng không lạc - AI tự sinh tiêu đề bằng một request nền chạy model lớp Haiku, và tiêu đề tự sinh đó vẫn dùng để resume được ([docs sessions](https://code.claude.com/docs/en/sessions.md?ref=locdang.com)). Cái tên chỉ là nhãn dán lên file transcript, nhãn nào cũng mở được cửa.

Để mở lại một session đã làm việc có bốn cách.

Cách một là `claude --continue`. Mở lại session gần nhất trong thư mục hiện tại, một lệnh, không cần nhớ gì.

Tiếp theo là cách hai, `claude --resume`, màn hình chọn session. `↑/↓` hoặc `k/j` di chuyển, `Space` xem trước nội dung, `/` để tìm - và có thể dán nguyên URL của một pull request vào để tìm session đã tạo PR đó. `Ctrl+A` mở rộng sang mọi project, `Ctrl+W` mọi worktree, `Ctrl+B` lọc theo nhánh git ([docs sessions](https://code.claude.com/docs/en/sessions.md?ref=locdang.com)).

Cách ba là vào thẳng bằng tên hoặc ID.

```bash
claude -n auth-refactor          # đặt tên lúc bắt đầu
claude --resume auth-refactor    # quay lại bằng tên

```

Một chi tiết tài liệu ghi rõ mà mình đã đối chiếu: resume bằng session ID chạy được từ bất kỳ thư mục nào, còn resume bằng tên thì gắn với phạm vi thư mục.

Cách bốn là quay lại từ bên trong một session đang mở. `/resume` để nhảy sang session khác. `claude --from-pr <số>` mở danh sách session liên quan đến một pull request - tiện khi quay lại kiểm tra việc của tuần trước.

## Phân nhánh và nút hoàn tác

`/branch` tạo nhánh từ session hiện tại. Từ dòng lệnh thì tương đương `claude --continue --fork-session` ([docs sessions](https://code.claude.com/docs/en/sessions.md?ref=locdang.com)). Tình huống dùng là khi hướng đang đi ổn, muốn thử một hướng liều hơn, nhưng không muốn làm bẩn bản đang chạy. Giống tạo nhánh git trước khi refactor lớn.

`/rewind`, hoặc nhấn Esc hai lần, là nút hoàn tác. Trước mỗi prompt Claude Code tự chụp một checkpoint, giữ tối đa 100 checkpoint gần nhất mỗi session, và checkpoint sống cùng conversation, vì vậy `/rewind` vẫn hoạt động cả sau khi resume ([docs checkpointing](https://code.claude.com/docs/en/checkpointing.md?ref=locdang.com)). Khi rewind có bốn lựa chọn: khôi phục cả code lẫn hội thoại, chỉ hội thoại, chỉ code, hoặc tóm tắt lại từ điểm đó.

> **Lưu ý quan trọng:** checkpoint không theo dõi file bị đổi bằng lệnh Bash thuần, và đa số chỉnh sửa do subagent thực hiện không khôi phục được. Bản 2.1.319 còn phải sửa lỗi `/rewind` hoạt động sai sau `/branch` (changelog). `/rewind` dùng để quay lại một quyết định vừa sai. Git vẫn là Git.

## Chạy session trong background và session supervisor

Một session giờ sống được ngoài terminal của nó. `claude --bg "prompt"` đẩy thẳng một session xuống nền, hoặc `/bg` nhấc session hiện tại đi, hoặc `/fork` sao chép session đang chạy thành một bản nền riêng. Đóng terminal, máy ngủ, session vẫn chạy - một tiến trình supervisor riêng giữ chức đó ([docs agent view](https://code.claude.com/docs/en/agent-view.md?ref=locdang.com)).

Gõ `claude agents`, một màn hình khác hiện ra: mọi background session trên máy, đủ mọi project, xếp theo nhóm Needs input, Working, Completed. Ô input dưới đáy nhận task mới - gõ xong Enter là một session nữa lặng lẽ ra quân, tự đặt tên bằng Haiku. `Space` soi session đang nói gì và trả lời ngay không cần nhập cuộc. `Enter` attach vào conversation đầy đủ. `Ctrl+X` dừng. Thậm chí `claude` không tham số cũng có thể mở thẳng màn này nếu bật cấu hình `defaultToAgentsView`. Một quản ca trực tổng đài.

Câu hỏi thú vị hơn là ai làm quản ca. Mặc định là bạn. Nhưng tài liệu còn hở một cửa khác: `claude agents --json` xuất trạng thái từng session dạng JSON, và [docs agent view](https://code.claude.com/docs/en/agent-view.md?ref=locdang.com) gọi thẳng nó là cách chuẩn để đọc trạng thái "từ một Claude session khác đang giám sát background work". Nói cách khác, một session Claude có thể canh cả đội - poll JSON đó, thấy session nào kẹt thì nhắn, cần thêm quân thì `claude --bg`, hỏng thì `claude respawn`. Kèm bộ lệnh quản lý từ shell: `claude attach`, `claude logs`, `claude stop/kill/respawn/rm` (cùng trang docs agent view).

Giới hạn cũng nên nói đủ. Session canh session đi qua CLI polling, không phải điều khiển trực tiếp. Muốn một conversation tự khởi động và theo dõi cả đội chạy cùng lúc thì phải lên cloud - tính năng Projects. Trên máy local, vai giám đốc vận hành vẫn thuộc về bạn.

## Session lên cloud, điều khiển từ điện thoại

`claude --cloud "task"` khởi chạy một session trên hạ tầng claude.ai, tiếp tục được trên web hoặc tab Code trong mobile. `claude -p "thêm test vào" --cloud <session-id>` bắn một follow-up vào session mây từ bất kỳ máy nào. `claude --teleport` kéo nguyên session mây về terminal của bạn. Chia sẻ từng session ở mức Private hoặc Team ([docs web](https://code.claude.com/docs/en/claude-code-on-the-web.md?ref=locdang.com)).

> **Lưu ý quan trọng:** toàn bộ phần mây phía trên là tài liệu mô tả tính đến 2.1.319 - mình chưa có dịp chạy nó trong tình huống thật, nên độ tin ở đây thấp hơn một bậc so với phần local. Phần relay dưới đây thì ngược lại, đang chạy thật mỗi ngày.

## Ba điều nhiều người tin sai

**"Đóng terminal là mất hết."** Không. File transcript vẫn nằm trong `~/.claude/projects/`. Thử mà xem: giữa việc phải tắt máy gấp, hôm sau `claude --continue`, Claude vẫn nhớ hôm qua đã đọc file nào và hàm nào bug vì sao.

**"Session nằm trong máy, để bao lâu cũng được."** Bẫy nguy hiểm nhất, vì nó đúng đến ngày thứ 29\. Cấu hình `cleanupPeriodDays` mặc định dọn transcript cũ sau khoảng 30 ngày ([docs settings](https://code.claude.com/docs/en/settings-reference?ref=locdang.com)). Session là tài sản có hạn dùng - session quan trọng thì tổng kết lại khi nó còn sống, ví dụ `claude -p --resume <session-id> "summarize what we changed"` rồi lưu ra file riêng.

**"/rewind là undo toàn năng, khỏi cần Git."** Đã nói ở phần checkpoint. Mười file bị `sed` xong rồi rewind - hội thoại quay về, mười file thì không.

## So sánh session management của Claude Code với hệ relay Telegram mình tự build

Trước khi Claude Code có phần cloud và agent view, mình đã tự giải bài toán điều khiển Claude từ điện thoại. Hai lớp, đều mở nguồn. Lớp engine là `ccc` (Claude Code Companion) của kidandcat - binary chạy service, nối Telegram với các Claude session trong tmux. Lớp orchestration là [claude-telegram-multi-relay](https://github.com/hailoc12/claude-telegram-multi-relay?ref=locdang.com) của mình, thêm phần nhiều session - mỗi session một topic Telegram kiểu kênh Slack, một bot phục vụ nhiều group.

Kiến trúc nó thế này (nguồn: SKILL.md của vibe-ccc-orchestrator + README repo). Mỗi Claude session chạy trong một cửa sổ tmux, map một-một với một Telegram topic. Hướng vào: tin nhắn từ topic được bắn vào session bằng tmux send-keys. Hướng ra: hook `Stop` (ccc hook-stop) bắt response cuối của Claude đẩy về đúng topic. Quyền hạn: hook `PreToolUse` (ccc hook-permission) gửi OTP phê duyệt lên Telegram - duyệt từ xa những thao tác nhạy cảm. Lịch chạy: cron định nghĩa trong registry, render thành plist `com.vccc.*`, macOS launchd giữ nhịp qua bridge script - sống qua reboot, tự chạy khi máy thức dậy, không phụ thuộc session Claude còn thở. Một session registry JSON ghi trạng thái cả đội kèm auto\_restart, max\_idle và nhóm.

Vậy native 2.1.319 đáp ứng được những gì ccc từng phải tự làm?

| Việc                                  | Native 2.1.319                                | Relay tự build (ccc)                           |
| ------------------------------------- | --------------------------------------------- | ---------------------------------------------- |
| Vào session từ điện thoại             | \--cloud \+ tab Code + \--teleport            | Telegram topic                                 |
| Nhiều session song song               | claude agents xem cả đội, dispatch từ ô input | N session - N topic, mỗi cái một project       |
| Xem session đang làm gì không cần vào | Peek bằng Space, tóm tắt Haiku mỗi hàng       | Mỗi response cuối về topic của nó              |
| Phê duyệt quyền từ xa                 | Chưa thấy cơ chế tương đương trên cloud       | OTP phê duyệt trên Telegram                    |
| Chia cho nhiều người cùng xem         | Sharing mức Private/Team từng session         | Một bot nhiều group, mỗi nhóm không gian riêng |
| Chạy định kỳ qua reboot               | Chưa thấy cơ chế tương đương                  | launchd plist, bridge script, auto-retry       |
| Session chết tự hồi sinh              | Supervisor restart process local              | auto\_restart theo registry + health check     |
| Ràng buộc                             | Hạ tầng claude.ai cho phần mây                | Tự host trên Mac của mình                      |

Đọc bảng đó thành câu thì thế này. Phần điều khiển từ điện thoại - thứ cách đây hai năm phải viết cả một engine relay mới có - native giờ lo được. Phần xem cả đội cũng gần tới, agent view là màn của một người nhưng `claude agents --json` đã mở đường cho session canh session. Ba thứ relay vẫn đứng vững: lịch chạy bền qua reboot không phụ thuộc ai mở máy, phê duyệt quyền từ xa, và mô hình đa người - một bot phục vụ nhiều group. Mọi ô "chưa thấy cơ chế tương đương" trong bảng đều có nghĩa là chưa thấy trong docs chính thức và changelog tính đến 2.1.319 ngày 07/11 - phạm vi mình đã sweep, không phải lời khẳng định vĩnh viễn. Cái nào native làm tới nơi rồi thì mình tháo dần, cái nào chưa thì relay sống tiếp. Khoảng trống đang hẹp theo từng bản 2.1.3xx, nên thói quen mới là cứ mỗi bản lại đem bảng này ra soi một vòng.

## Thử trong vòng 5 phút

Nếu máy có Claude Code, chạy nguyên một vòng đời cho biết.

```bash
claude -n thu-nghiem              # bắt đầu session có biển tên
/rename thu-nghiem-phan-2         # đổi tên giữa chừng
# thoát ra, rồi:
claude --resume thu-nghiem-phan-2 # quay lại bằng biển tên
claude --continue --fork-session  # thử hướng khác, giữ bản gốc
ls ~/.claude/projects/            # xem phòng của mình nằm ở đâu

```

Nhìn thấy file transcript của mình nằm trong đó một lần là hiểu ngay session thực chất là gì.

## Ba câu tự kiểm tra

Đọc thì dễ, tự kiểm tra xem đã hiểu thật chưa.

Một. Đóng terminal giữa chừng, hôm sau mở lại cùng thư mục, gõ lệnh gì? Mở ở thư mục khác thì cách nào vẫn chạy?

Hai. Đang có một session refactor ổn, muốn thử hướng liều hơn mà không làm hỏng bản đang tốt. Dùng gì, và vì sao không dùng `/rewind`?

Ba. Bạn muốn năm session nghiên cứu đối thủ chạy lúc 7 giờ sáng mỗi thứ Hai, không cần mở máy, kèm phê duyệt từ xa cho lệnh nhạy cảm. Chọn native hay relay, vì sao?

## Mang về

Session thực chất là ngữ cảnh đóng băng thành file. Một khi thấy điều đó, mọi tính năng của 2.1.319 chỉ là công cụ quản kho - tìm, đặt biển, nhân bản, chụp ảnh, canh cả kho, dọn hàng cũ. Vốn của bạn là ngữ cảnh, và nó có hạn dùng.

Bảy câu khẩu quyết mang đi được:

1. Đặt tên cho ngữ cảnh trước khi cần tìm lại nó
2. Xem transcript là tài sản, đừng để thành rác theo lịch dọn
3. Tổng kết session quý khi nó còn sống
4. Tạo nhánh trước khi đi hướng mạo hiểm
5. Nút hoàn tác tự động không thay được commit
6. Cập nhật vì cần tính năng, không vì sợ cũ
7. So từng trục rồi mới tháo tool tự xây

Và một câu bản thể, dùng được ngoài Claude Code: trong công việc tri thức, tài sản thật là ngữ cảnh chứ không phải sản phẩm in ra cuối ngày. Hệ thống giữ được ngữ cảnh thì cho bạn tiếp tục. Hệ thống không giữ thì mỗi buổi sáng đều là ngày đầu tiên.

## Tham khảo

- Changelog chính thức - github.com/anthropics/claude-code, nhánh main (truy cập 07/11/2026)
- Docs sessions - code.claude.com/docs/en/sessions.md (truy cập 07/11/2026)
- Docs checkpointing - code.claude.com/docs/en/checkpointing.md (truy cập 07/11/2026)
- Docs agent view - code.claude.com/docs/en/agent-view.md (truy cập 07/11/2026)
- Docs Claude Code on the web - code.claude.com/docs/en/claude-code-on-the-web.md (truy cập 07/11/2026)
- Registry npm @anthropic-ai/claude-code - dist-tags và timestamp publish (truy cập 07/11/2026)
- claude-telegram-multi-relay - github.com/hailoc12/claude-telegram-multi-relay (repo của người viết)
- vibe-ccc-orchestrator SKILL.md - kiến trúc relay, hooks và launchd bridge (máy người viết)

---

---

*Lộc Đặng viết về vibe coding và cách giao việc cho AI như quản lý nhân sự. Nếu bạn đang muốn đưa AI vào quy trình làm việc của mình, xem thêm tại [facebook.com/locdh90](https://facebook.com/locdh90) hoặc nhắn tin trực tiếp.*

---