Bỏ qua để đến nội dung

Đẩy sự kiện vào phiên đang chạy với channels

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

Channel là một MCP server đẩy sự kiện vào phiên Claude Code đang chạy, để Claude phản ứng với những gì xảy ra khi bạn không ngồi ở terminal. Channel có thể hai chiều: Claude đọc sự kiện rồi trả lời qua cùng channel đó, giống một cầu nối chat. Sự kiện chỉ đến khi phiên đang mở, nên muốn chạy liên tục bạn cần chạy Claude trong tiến trình nền hoặc terminal thường trực.

Khác với các tích hợp tạo phiên cloud mới hoặc chờ được poll, sự kiện đến ngay phiên bạn đang mở sẵn.

Bạn cài channel dưới dạng plugin và cấu hình bằng credential của mình. Telegram, Discord, và iMessage nằm trong research preview.

Khi Claude trả lời qua channel, bạn thấy tin nhắn đến trong terminal nhưng không thấy nội dung trả lời - terminal chỉ hiện tool call và xác nhận (như “sent”), còn nội dung thật hiện ở nền tảng kia.

Nếu bạn quản lý tổ chức Team, Enterprise, hay Console, xem phần Bật channels cho tổ chức. Muốn tự xây channel riêng, xem Channels reference.

Mỗi channel là một plugin yêu cầu Bun. Muốn thử trước khi kết nối nền tảng thật, dùng fakechat quickstart bên dưới.

  1. Mở BotFather trên Telegram, gửi /newbot, đặt tên hiển thị và username kết thúc bằng bot. Copy token BotFather trả về.
  2. Cài plugin trong Claude Code:
    /plugin install telegram@claude-plugins-official
    Nếu báo không tìm thấy marketplace, chạy /plugin marketplace add anthropics/claude-plugins-official trước. Chọn scope user khi được hỏi, sau đó chạy /reload-plugins.
  3. Cấu hình token:
    /telegram:configure <token>
    Token được lưu vào ~/.claude/channels/telegram/.env. Bạn cũng có thể đặt biến môi trường TELEGRAM_BOT_TOKEN.
  4. Thoát Claude Code và khởi động lại với cờ channel:
    Terminal window
    claude --channels plugin:telegram@claude-plugins-official
  5. Nhắn tin bất kỳ cho bot trên Telegram, bot trả lời bằng mã pairing. Trong Claude Code chạy /telegram:access pair <code>, rồi khoá quyền truy cập chỉ cho tài khoản của bạn: /telegram:access policy allowlist.
  1. Vào Discord Developer Portal, tạo New Application, vào mục Bot, tạo username rồi Reset Token để lấy token.
  2. Bật Message Content Intent trong Privileged Gateway Intents.
  3. OAuth2 → URL Generator, chọn scope bot cùng các quyền: View Channels, Send Messages, Send Messages in Threads, Read Message History, Attach Files, Add Reactions. Mở URL sinh ra để thêm bot vào server.
  4. Cài plugin: /plugin install discord@claude-plugins-official (thêm marketplace trước nếu cần), chọn scope user, chạy /reload-plugins.
  5. Cấu hình token: /discord:configure <token> (lưu vào ~/.claude/channels/discord/.env, hoặc dùng biến DISCORD_BOT_TOKEN).
  6. Khởi động lại: claude --channels plugin:discord@claude-plugins-official.
  7. DM bot trên Discord để lấy mã pairing, rồi /discord:access pair <code>/discord:access policy allowlist.

Channel này đọc trực tiếp database Messages và gửi trả lời qua AppleScript - chỉ chạy trên macOS, không cần bot token hay dịch vụ ngoài.

  1. Lần đầu server đọc ~/Library/Messages/chat.db, macOS sẽ hỏi quyền - chọn Allow. Nếu không thấy hỏi, cấp thủ công ở System Settings → Privacy & Security → Full Disk Access.
  2. Cài plugin: /plugin install imessage@claude-plugins-official, chọn scope user (bỏ qua /reload-plugins, bước sau sẽ tự nạp lại).
  3. Khởi động lại: claude --channels plugin:imessage@claude-plugins-official.
  4. Nhắn tin cho chính mình từ thiết bị khác cùng Apple ID - tự động vượt qua kiểm soát truy cập, không cần cấu hình thêm. Lần đầu Claude trả lời, macOS sẽ hỏi quyền điều khiển Messages - chọn OK.
  5. Muốn cho người khác nhắn tới Claude: /imessage:access allow +15551234567 (số điện thoại dạng +quốc gia hoặc email Apple ID).

Bạn cũng có thể tự xây channel riêng cho các hệ thống chưa có plugin.

Fakechat là channel demo chính thức, chạy giao diện chat trên localhost, không cần xác thực hay dịch vụ ngoài. Gõ trong trình duyệt, tin nhắn tới thẳng phiên Claude Code, Claude trả lời và hiện lại trên trình duyệt.

Cần: Claude Code đã cài và đăng nhập, Bun đã cài (bun --version để kiểm tra), và với tổ chức Team/Enterprise/Console quản lý - admin phải bật channels trước.

  1. Cài plugin:
    /plugin install fakechat@claude-plugins-official
  2. Thoát và khởi động lại với channel bật, có thể truyền nhiều plugin cách nhau bằng dấu cách:
    Terminal window
    claude --channels plugin:fakechat@claude-plugins-official
  3. Mở http://localhost:8787 và gõ tin nhắn, ví dụ what's in my working directory?. Terminal hiện dòng inbound như ← fakechat · web: ..., Claude xử lý, gọi tool reply của fakechat. Lần trả lời đầu tiên sẽ có prompt xin quyền trong terminal - chấp nhận để câu trả lời hiện lên chat.

Nếu Claude gặp permission prompt khi bạn không ở terminal, phiên sẽ tạm dừng chờ. Các channel server khai báo khả năng relay permission prompt có thể chuyển tiếp lời hỏi này để bạn duyệt từ xa. Với chế độ không giám sát, --dangerously-skip-permissions bỏ qua hầu hết prompt nhưng chỉ dùng ở môi trường bạn tin tưởng.

Khi chạy channels ở chế độ non-interactive (-p), các tool cần input từ terminal (như câu hỏi trắc nghiệm, duyệt plan mode) bị vô hiệu hoá để phiên không bị treo chờ input.

Mỗi channel plugin duy trì một allowlist người gửi: chỉ ID đã thêm mới đẩy tin nhắn được, còn lại bị âm thầm loại bỏ.

Telegram và Discord khởi tạo allowlist qua pairing: nhắn tin cho bot → nhận mã pairing → duyệt mã trong phiên Claude Code → ID được thêm vào allowlist. iMessage khác: tự nhắn cho mình sẽ tự động vượt qua, còn thêm người khác bằng /imessage:access allow.

Ngoài ra, bạn kiểm soát server nào được bật mỗi phiên bằng --channels, còn tổ chức kiểm soát khả dụng bằng channelsEnabled. Có trong .mcp.json thôi chưa đủ để đẩy tin nhắn - server còn phải được nêu tên trong --channels.

Allowlist cũng kiểm soát cả permission relay nếu channel khai báo khả năng này - ai trả lời được qua channel cũng duyệt/từ chối được tool use trong phiên của bạn, nên chỉ thêm vào allowlist người bạn tin cậy với quyền đó.

Admin kiểm soát khả dụng qua hai managed setting mà user không ghi đè được:

SettingMục đích
channelsEnabledCông tắc chính. Phải là true để bất kỳ channel nào hoạt động. Bật qua claude.ai Admin console hoặc trực tiếp trong managed settings.
allowedChannelPluginsDanh sách plugin được đăng ký khi channels đã bật. Thay thế danh sách mặc định của Anthropic.

Mặc định phụ thuộc cách xác thực: claude.ai Team/Enterprise chặn channels cho đến khi Owner bật; Console với API key thì cho phép mặc định (trừ khi tổ chức triển khai managed settings). Trong mọi trường hợp, channel chỉ chạy khi user chủ động bật bằng --channels cho phiên đó. Người dùng Pro/Max không thuộc tổ chức bỏ qua các kiểm tra này hoàn toàn.

Muốn giới hạn plugin được phép, đặt allowedChannelPlugins trong managed settings:

{
"channelsEnabled": true,
"allowedChannelPlugins": [
{ "marketplace": "claude-plugins-official", "plugin": "telegram" },
{ "marketplace": "claude-plugins-official", "plugin": "discord" },
{ "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
]
}

Khi đã đặt, danh sách này thay thế hoàn toàn allowlist mặc định của Anthropic. Để trống mảng sẽ chặn hết plugin trong allowlist (nhưng --dangerously-load-development-channels vẫn có thể bỏ qua để test cục bộ) - muốn chặn hoàn toàn kể cả cờ dev, để channelsEnabled chưa được đặt.

--channels--dangerously-load-development-channels chưa xuất hiện trong claude --help khi còn ở preview, nhưng vẫn hoạt động. Trong giai đoạn này, --channels chỉ nhận plugin từ allowlist do Anthropic (hoặc tổ chức) quản lý. Muốn test channel tự xây, dùng --dangerously-load-development-channels.

Tính năngLàm gìPhù hợp cho
Claude Code on the webChạy việc trong sandbox cloud mới, clone từ GitHubGiao việc độc lập chạy async, kiểm tra sau
Claude in SlackTạo phiên web từ nhắc @Claude trong kênh/threadBắt đầu việc trực tiếp từ ngữ cảnh trò chuyện nhóm
MCP server thườngClaude truy vấn khi cần, không có gì được đẩy vào phiênCho Claude truy cập theo yêu cầu vào hệ thống khác
Remote ControlBạn điều khiển phiên local từ claude.ai hoặc app di độngLái phiên đang chạy khi không ở bàn làm việc

Channel lấp khoảng trống: đẩy sự kiện từ nguồn ngoài Claude vào phiên local đang chạy sẵn - làm cầu nối chat (hỏi Claude từ điện thoại qua Telegram/Discord/iMessage, việc chạy trên máy với file thật) hoặc làm webhook receiver (CI, error tracker, deploy pipeline đẩy sự kiện tới nơi Claude đã có sẵn file và nhớ ngữ cảnh bạn đang debug).

  • Tự xây channel riêng cho hệ thống chưa có plugin
  • Remote Control để lái phiên local từ điện thoại thay vì đẩy sự kiện vào
  • Scheduled tasks để poll theo lịch thay vì phản ứng theo sự kiện đẩy vào