claude-code-notifier
cách hoạt động hướng dẫn câu hỏi thường gặp
◐Tiếng Việt
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
Bắt đầu
Tất cả hướng dẫn

Chạy nhiều session Claude Code: biết session nào đang cần bạn

Cập nhật ngày 31 tháng 10 năm 2026 · 6 phút đọc
trong trang này 01Vì sao các session song song dễ gây rối 02Tách biệt các session cho đúng cách trước đã 03Đưa tên project vào mọi thông báo tự làm 04Phần khó: trả lời đúng session 05Câu hỏi thường gặp

Khi chạy nhiều session Claude Code cùng lúc, một thông báo kiểu "Claude cần bạn chú ý" là không đủ, vì bạn không biết session nào gửi nó. Cách khắc phục là đưa project hoặc thư mục của session vào mọi thông báo. Mỗi hook nhận cwd và session_id của session dưới dạng JSON, nên hook của bạn có thể đọc chúng và thêm tên project vào thông báo. Đặt tên rõ ràng cho session bằng claude -n <name> hoặc /rename, và dùng claude --worktree <name> để các session song song trên cùng một repository có thư mục riêng, rồi thư mục đó sẽ hiện trong thông báo.

01Vì sao các session song song dễ gây rối

Chạy hai ba session Claude Code cạnh nhau giờ đã là cách làm việc bình thường: một cái sửa bug, một cái viết test, một cái thử refactor. Mỗi session dừng lại theo nhịp riêng. Vấn đề lúc nào cũng giống nhau:

  • có thông báo đến mà bạn không biết nó từ tab terminal nào;
  • một session đã chờ permission prompt hai mươi phút trong khi bạn mải theo dõi session khác;
  • bạn trả lời nhầm cửa sổ.

Cả ba đều quy về chuyện nhận diện. Mỗi thông báo phải cho biết nó đến từ đâu, và mỗi câu trả lời phải quay về đúng session đã hỏi.

02Tách biệt các session cho đúng cách trước đã

Dùng worktree cho cùng một repository

Hai session cùng sửa một checkout sẽ giẫm lên thay đổi của nhau. Flag --worktree (viết tắt -w) của Claude Code tạo một git worktree cô lập và khởi động session trong đó:

claude --worktree feature-auth
claude --worktree fix-login

Mặc định mỗi worktree được tạo trong .claude/worktrees/<name>/ ở thư mục gốc của repository, trên một branch mới tên worktree-<name>. Chạy mỗi lệnh trong một terminal riêng. Thêm .claude/worktrees/ vào .gitignore để các worktree không hiện thành untracked file.

Khi bạn thoát, Claude Code sẽ kiểm tra worktree. Nếu nó sạch và bạn chưa từng đặt tên session, Claude Code sẽ xoá worktree và branch của nó; nếu không thì sẽ hỏi có giữ lại không. Để quay lại một worktree đã giữ, chạy lệnh claude --worktree <name> --resume được in ra khi thoát. Nếu muốn tự quản lý worktree, git worktree add ../project-feature-a -b feature-a cũng được; chỉ cần chạy claude trong thư mục đó.

Một lợi ích phụ cho thông báo: mỗi session giờ có tên thư mục riêng, ví dụ feature-auth, đúng thứ bạn muốn thấy trong thông báo.

Đặt tên cho session

Có tên thì dễ tìm và resume session hơn:

claude -n auth-refactor

Trong một session đang chạy, /rename auth-refactor cũng làm điều tương tự, và tên sẽ hiện trên thanh prompt. Sau này, claude --resume auth-refactor đưa bạn quay lại ngay. Trong session picker (claude --resume không kèm tên), Ctrl+W mở rộng danh sách ra mọi worktree của repository.

03Đưa tên project vào mọi thông báo tự làm

Mỗi command hook nhận JSON qua standard input với các trường chung cho mọi event, gồm session_id, cwd, transcript_path và hook_event_name. Trong session worktree, cwd là thư mục gốc của worktree, và nó thay đổi theo nếu Claude chuyển thư mục. Hãy đọc nó trong hook và dùng phần cuối của đường dẫn làm nhãn.

Trên Mac và Linux, lưu đoạn này thành ~/.claude/hooks/notify-session.sh và cấp quyền thực thi bằng chmod +x. Script cần jq.

#!/bin/sh
input=$(cat)
project=$(basename "$(printf '%s' "$input" | jq -r '.cwd')")
event=$(printf '%s' "$input" | jq -r '.hook_event_name')

case "$event" in
  Stop) msg="Claude has finished" ;;
  *)    msg="Claude needs you" ;;
esac

notify-send "Claude Code: $project" "$msg"

Trên Mac, thay dòng cuối bằng một thông báo osascript như trong hướng dẫn macOS. Trên Windows, đọc cùng JSON đó trong PowerShell bằng ConvertFrom-Json; hướng dẫn Windows có ví dụ đầy đủ.

Sau đó đăng ký nó cho các sự kiện bạn quan tâm trong ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
    ],
    "Notification": [
      { "matcher": "permission_prompt", "hooks": [{ "type": "command", "command": "~/.claude/hooks/notify-session.sh" }] }
    ]
  }
}

Hai lưu ý về đường dẫn. Hãy đặt biến như "$input" trong dấu ngoặc kép, vì tên thư mục có thể chứa dấu cách. Và nếu bạn tham chiếu script bằng ${CLAUDE_PROJECT_DIR}, nhớ rằng nó luôn trỏ tới thư mục nơi session bắt đầu, kể cả khi Claude đã chuyển sang một worktree. Khi cần thư mục hiện tại, hãy đọc cwd từ input.

Nếu bạn làm việc trong tmux, pane hoặc window thường là nhãn tốt hơn tên thư mục. Hướng dẫn tmux chỉ cách tìm và chuyển sang đúng pane.

04Phần khó: trả lời đúng session

Thông báo có nhãn cho bạn biết session nào đang cần bạn. Nhưng bạn vẫn phải tới terminal đó để trả lời. Với ba session, nghĩa là phải tìm đúng tab, cuộn tới prompt rồi gõ. Một hook tự viết khó gửi câu trả lời ngược lại, vì chỉ hook đang chờ bên trong session đó mới trả được quyết định cho Claude Code.

Đó là khoảng trống mà Claude Code Notifier lấp vào. Đây là công cụ độc lập, không do Anthropic phát triển. Công cụ dòng lệnh của nó, ccn, được cài dưới dạng hook của Claude Code trên Mac, Windows và Linux, nên mọi session bạn mở đều được hỗ trợ, trong bất kỳ terminal nào, mà không cần cấu hình cho từng session. Mỗi thông báo kèm tên và thư mục của dự án, nên trên điện thoại iPhone hoặc Android bạn biết session nào đã gửi. Vì chính hook gửi yêu cầu là hook đang chờ câu trả lời, nên việc phê duyệt, lựa chọn hay chỉ dẫn tiếp theo từ điện thoại sẽ quay về đúng session đã hỏi.

Vài chi tiết quan trọng khi chạy nhiều session:

  • Nhiều máy tính. Một điện thoại có thể ghép nối với nhiều máy tính, và một máy tính với nhiều điện thoại. ccn devices liệt kê các điện thoại đã ghép nối với máy này.
  • Hiện diện. Nếu bạn đã gõ phím trong 30 giây gần nhất, sẽ không có gì chờ điện thoại và terminal hỏi như bình thường. Nếu bạn vắng mặt, session sẽ chờ câu trả lời từ điện thoại tới mức tối đa bạn chọn (hold_ceiling_seconds) và ngừng chờ ngay khi bạn chạm bàn phím.
  • Thông báo desktop khi chưa có điện thoại. Trước khi bạn ghép nối điện thoại, ccn hiển thị thông báo desktop trên máy tính khi bất kỳ session nào hoàn thành, cần cấp quyền hoặc đặt câu hỏi.

Nếu bạn chỉ chạy một session mỗi lúc và ngồi tại bàn, một thông báo desktop có nhãn có lẽ là đủ. Hướng dẫn so sánh đặt các lựa chọn cạnh nhau.

05Câu hỏi thường gặp

Làm sao biết session Claude Code nào đã gửi thông báo?

Đọc trường cwd từ JSON input của hook và đưa tên thư mục vào tiêu đề thông báo. Với worktree, mỗi session có thư mục riêng nên tên sẽ khác nhau cho từng session. Các công cụ như Claude Code Notifier tự thêm tên dự án và thư mục vào mỗi thông báo cho bạn.

Có thể chạy hai session Claude Code trong cùng một repository không?

Có, nhưng hãy cho mỗi session một worktree riêng để các chỉnh sửa không đụng nhau. claude --worktree <name> tạo một worktree trong .claude/worktrees/<name>/ trên một branch mới và khởi động session ở đó.

Làm sao đặt tên cho session Claude Code?

Khởi động bằng claude -n <name>, hoặc chạy /rename <name> trong session. Sau đó tiếp tục bằng claude --resume <name>.

Hook có chạy riêng cho từng session không?

Có. Mỗi session chạy hook của riêng nó khi sự kiện xảy ra, và truyền session_id cùng cwd của session đó trong input. Hook trong ~/.claude/settings.json áp dụng cho mọi session bạn mở.

Thông báo từ các máy tính khác nhau có bị lẫn lộn không?

Không, với ccn. Mỗi máy tính ghép nối với điện thoại của bạn riêng biệt và có tên riêng, và mỗi thông báo đều ghi rõ dự án gửi nó.

Claude Code Notifier Nhận push trên điện thoại khi Claude Code chạy xong hoặc cần bạn, rồi duyệt, từ chối hoặc trả lời ngay tại đó. Công cụ dòng lệnh ccn miễn phí trên Mac, Windows và Linux.
Tải cho iOS Tải cho Android Cài đặt ccn

Hướng dẫn liên quan

  • Giải thích hook trong Claude Code: mọi sự kiện và công dụng của chúngHook trong Claude Code là gì, đặt ở đâu trong settings.json, matcher, input và exit code hoạt động thế nào, và mỗi sự kiện hook dùng để làm gì.
  • Claude Code trong tmux hoặc screen: nhận thông báo từ phiên đã detachNhận thông báo khi Claude Code trong tmux hoặc screen làm xong hoặc cần bạn: allow-passthrough, cảnh báo bell, đặt tên phiên, và push về điện thoại khi đã detach.
  • So sánh mọi cách nhận thông báo từ Claude CodeSo sánh thông báo có sẵn, hook tự viết, ntfy và webhook chat, Remote Control của Anthropic cùng các ứng dụng notifier: mỗi cách làm được gì và không làm được gì.
  • Để Claude Code tự chạy rồi rời máy: một quy trìnhQuy trình thực tế cho các tác vụ dài với Claude Code: giữ máy không ngủ, bớt các prompt không cần thiết, nhận thông báo trên điện thoại và trả lời ngay từ đó.
claude-code-notifier

Claude Code Notifier là ứng dụng độc lập của bên thứ ba. Ứng dụng không liên kết với, không được chứng thực hay tài trợ bởi Anthropic, PBC. "Claude" và "Claude Code" là nhãn hiệu của Anthropic, PBC.

ứng dụng Ứng dụng iOS Ứng dụng Android ccn cho macOS, Windows & Linux Tất cả hướng dẫn
pháp lý Chính sách quyền riêng tư Điều khoản dịch vụ Ngôn ngữ khác © 2026 touchtap. Bảo lưu mọi quyền. TouchTap Ltd được đăng ký tại Anh và xứ Wales, số công ty 13942589.