Claude Code Channels:配置外部消息推入运行会话
Channels 是 Claude Code 的研究预览功能,让 Telegram、Discord、iMessage 等外部平台的消息直接推入你正在运行的本地 Claude Code 会话。配置思路:安装对应插件、用 Bot Token 或配对码完成身份绑定、用 claude --channels plugin:<name> 启动带频道功能的会话。企业环境需管理员在 managed settings 中设置 channelsEnabled: true 才可使用。
Channels 是研究预览功能,需要 Claude Code v2.1.80 或更新版本。认证方式支持 claude.ai 登录或 Console API key。不支持 Amazon Bedrock、Google Vertex AI、Microsoft Foundry。Team/Enterprise 组织需管理员显式启用(见企业控制)。
一个 Channel 是一个 MCP 服务器插件,能把事件推送到你正在运行的 Claude Code 会话,让 Claude 在你不坐在终端前时也能响应发生的事情。Channel 可以是双向的:Claude 读取事件并通过同一 Channel 回复。事件只在会话打开时到达,长期运行需要在后台进程或持久终端中运行 Claude。
典型场景:
- 用手机通过 Telegram 发消息给 Claude,让它在你的机器上完成任务,答案直接回到 Telegram。
- CI 失败后 webhook 把错误推给 Claude,Claude 已有文件打开,可以直接调试。
- Discord 群聊里触发代码审查。
支持的 Channel
研究预览版内置 Telegram、Discord 和 iMessage(macOS 专属)。配置前需要安装 Bun(运行 bun --version 检查)。
Telegram
-
创建 Bot:在 Telegram 找 @BotFather,发
/newbot,设置名称和唯一 @username(必须以bot结尾),复制返回的 token。 -
安装插件:
/plugin install telegram@claude-plugins-official安装后运行
/reload-plugins激活配置命令。
如果提示找不到插件,先更新市场:/plugin marketplace update claude-plugins-official -
配置 Token:
/telegram:configure <你的token>Token 保存到
~/.claude/channels/telegram/.env。也可设置环境变量TELEGRAM_BOT_TOKEN。 -
启用频道重启:
claude --channels plugin:telegram@claude-plugins-official -
配对账号:在 Telegram 给你的 Bot 发任意消息,Bot 会回复一个配对码。在 Claude Code 里运行:
/telegram:access pair <配对码> /telegram:access policy allowlistallowlist策略确保只有你的账号能向 Claude 发消息。
Discord
-
创建 Bot:进入 Discord Developer Portal,点 New Application,在 Bot 部分点 Reset Token 复制 token。
-
启用 Message Content Intent:在 Bot 设置中找到 Privileged Gateway Intents,开启 Message Content Intent。
-
邀请 Bot 到服务器:在 OAuth2 > URL Generator 选择
botscope,开启权限:View ChannelsSend MessagesSend Messages in ThreadsRead Message HistoryAttach FilesAdd Reactions。打开生成的 URL 将 Bot 加入服务器。 -
安装插件:
/plugin install discord@claude-plugins-official安装后运行
/reload-plugins。市场问题处理同 Telegram。 -
配置 Token:
/discord:configure <你的token> -
启用频道重启:
claude --channels plugin:discord@claude-plugins-official -
配对账号:在 Discord 给 Bot 发私信,Bot 回复配对码,然后在 Claude Code 里运行:
/discord:access pair <配对码> /discord:access policy allowlist
iMessage(macOS 专属)
iMessage channel 直接读取 Messages 数据库,通过 AppleScript 发送回复。无需 Bot Token 或外部服务,仅限 macOS。
-
授权全文磁盘访问:The Messages database at
~/Library/Messages/chat.dbis protected by macOS. 首次运行时 macOS 会弹出授权窗口,点 Allow。若错过,手动前往 系统设置 > 隐私与安全性 > 完整磁盘访问 添加你的终端。否则 server 会立即因authorization denied退出。 -
安装插件:
/plugin install imessage@claude-plugins-official -
启用频道重启:
claude --channels plugin:imessage@claude-plugins-official -
自测试:在任意设备上给自己的 Apple ID 发一条 iMessage,会立即到达 Claude。自聊无需配对,直接可用。
-
添加其他联系人(可选):
/imessage:access allow +15551234567手机号格式为
+country,或 Apple ID 邮箱。
快速体验:fakechat 演示
fakechat 是官方提供的演示 Channel,在 localhost 运行一个聊天 UI,无需认证和外部服务。
前提:
- Claude Code 已安装并认证(claude.ai 或 Console API key)
- Bun 已安装(
bun --version检查) - Team/Enterprise/Console 组织用户:管理员必须启用 Channels
步骤:
-
安装插件:
/plugin install fakechat@claude-plugins-official -
退出 Claude Code,用
--channels重启:claude --channels plugin:fakechat@claude-plugins-official -
浏览器打开 http://localhost:8787,输入消息,Claude 会处理并通过 fakechat 回复。
注意:如果 Claude 遇到权限提示而你不在终端,会话会暂停。支持权限中继的 Channel 可以把确认框转发到手机上。非交互模式下(-p),需要终端输入的工具(如选择题、计划模式确认)会被禁用,以免阻塞。
安全机制
每个 Channel 插件维护一个发送方白名单:只有加入白名单的 ID 能推送消息,其他人被静默丢弃。
- Telegram/Discord 配对流程:找到 Bot 发一条消息 → Bot 回复配对码 → 在 Claude Code 会话中确认 → 你的 ID 被计入白名单。
- iMessage:自聊自动绕过验证,添加其他联系人用
/imessage:access allow <handle>。 - 会话级控制:只有
--channels参数里明确列出的服务器会推送消息。放在.mcp.json里不够,必须在--channels里指定。 - 权限中继:如果 Channel 声明了该能力,能通过该 Channel 回复的人可以批准或拒绝当前会话中的工具调用。因此只把您信任的人加入白名单。
企业控制
管理员通过 managed settings 控制 Channels 可用性。默认行为取决于认证方式:
| 认证方式 | 默认 Channels 状态 |
|---|---|
| claude.ai Team/Enterprise | 禁用,需管理员启用 |
| Console API key | 允许(除非组织部署了 managed settings) |
设置项
| 设置 | 用途 | 未配置时的行为 |
|---|---|---|
channelsEnabled |
主开关。必须为 true 才能传递消息。设为 false 时阻止所有 Channel(包括开发标志)。 |
claude.ai Team/Enterprise:禁用。Console:允许(除非部署了 managed settings,此时同样禁用)。 |
allowedChannelPlugins |
指定允许注册的插件(替换 Anthropic 默认列表)。仅当 channelsEnabled 为 true 时生效。 |
使用 Anthropic 默认列表。 |
管理员启用 Channels
通过 claude.ai → Admin settings → Claude Code → Channels 开启,或在 managed settings 里设置 channelsEnabled: true。
启用后,组织内用户可用 --channels 为单个会话启用 Channel。若设置未开启,MCP 服务器会连接、工具能用,但 Channel 消息不会到达,启动时显示警告提示联系管理员。
限制可用 Channel 插件
Team/Enterprise 管理员可在 managed settings 中设置 allowedChannelPlugins 来替换 Anthropic 默认列表。示例:
{
"channelsEnabled": true,
"allowedChannelPlugins": [
{ "marketplace": "claude-plugins-official", "plugin": "telegram" },
{ "marketplace": "claude-plugins-official", "plugin": "discord" },
{ "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
]
}
设置后只有列出的插件能注册(完全替换 Anthropic 默认列表)。留空则使用默认列表。设为空数组可阻止所有白名单插件,但 --dangerously-load-development-channels 仍可绕过。要完全禁用 Channel(包括开发标志),请用 channelsEnabled 而非 allowedChannelPlugins。
研究预览限制
--channels只接受 Anthropic 维护的白名单插件(claude-plugins-official 中的插件),或组织管理员设置的allowedChannelPlugins列表中的插件。- 要测试你开发的 Channel,需要使用
--dangerously-load-development-channels,详见研究预览期间测试。 - 参数语法和协议合约可能根据反馈变化。
Channels 与其他功能对比
| 功能 | 说明 | 适合场景 |
|---|---|---|
| Claude Code on the web | 在云端新沙箱运行,从 GitHub 克隆代码 | 委托自包含的异步工作,你稍后检查 |
| Claude in Slack | 在频道或线程中 @Claude 提及,生成云端会话 |
从团队对话启动任务 |
| 标准 MCP 服务器 | Claude 在任务中主动查询,不推送事件 | 给 Claude 按需读取或查询系统 |
| Remote Control | 从 claude.ai 或手机 App 驱动本地会话 | 离开桌面时手动操控进行中的会话 |
| Channels | 外部系统主动推送事件到运行中的本地会话 | CI 通知、聊天桥接、webhook 响应 |
下一步
- 构建你自己的 Channel — 为尚无插件的系统开发插件。
- Remote Control — 从手机驱动本地会话(而非向它推送事件)。
- 定时任务 — 按计划轮询,而不是等待推送。
常见问题
Claude Code Channels 和 Remote Control 有什么区别?
Remote Control 是你从 claude.ai 或手机 App 主动驾驶本地会话;Channels 是外部系统(如 Telegram 消息、CI webhook)主动推事件到本地会话。Channels 适合事件驱动的自动响应,Remote Control 适合你离开桌面时的手动干预。
Team/Enterprise 用户为什么看不到 Channels 功能?
Team/Enterprise 计划中 Channels 默认关闭。管理员需要在 claude.ai 的 Admin settings 中开启 channelsEnabled: true,或通过 managed settings 设置。开启后用户才能使用 --channels 标志激活频道。
配置 Telegram 时 Bot 不回复怎么办?
确保 Claude Code 正在运行并且使用了 --channels 标志(如 claude --channels plugin:telegram@claude-plugins-official)。Bot 只在频道(Channel)激活时才能响应。如果 Bot 仍不回复,检查 Token 是否正确、Bot 是否已启动(/telegram:configure <token> 已执行)。