主题
Channels(向运行中的会话推送事件)
通过 MCP server 把外部消息、告警、webhook 推进正在运行的 Claude Code 会话。
是什么
Channel 是一个会把事件推送进正在运行的 Claude Code 会话的 MCP server,让 Claude 在你不在终端前时也能对发生的事情做出反应。它可以是双向的:Claude 读取事件并通过同一 channel 回复,像一座聊天桥。事件只在会话开启期间到达,因此常驻使用需把 Claude 跑在后台进程或常驻终端里。
与"另起一个云端会话"或"等待轮询"的集成不同,事件直接到达你已打开的会话。你以插件方式安装 channel,并用自己的凭据配置它。研究预览阶段内置 Telegram、Discord 和 iMessage,另有 localhost 演示用的 fakechat。
怎么工作
- 以插件形式安装:
/plugin install <name>@claude-plugins-official;安装后运行/reload-plugins激活其 configure 命令。 - 退出后用
--channels标志重启会话来启用,例如claude --channels plugin:fakechat@claude-plugins-official;可空格分隔传入多个插件。 - Telegram/Discord 通过 BotFather 或 Discord 开发者门户创建 bot,用
/<plugin>:configure <token>配置 token(保存到~/.claude/channels/<plugin>/.env)。 - 事件以
<channel source="...">形式进入会话,Claude 读取后调用该 channel 的reply工具回复;终端只显示工具调用与确认(如 sent),回复正文出现在对端平台。 - 通过配对建立发送者 allowlist:给 bot 发消息→bot 返回配对码→在会话中用
/<plugin>:access pair <code>批准→用/<plugin>:access policy allowlist锁定。 - iMessage 直接读取本机 Messages 数据库并经 AppleScript 回复,无需 token;给自己发消息自动绕过门禁。
- 遇到权限提示时会话会暂停等待响应;声明了 permission relay 能力的 channel 可远程转发该提示。
怎么配置 / 用法
启用与重启:
bash
claude --channels plugin:telegram@claude-plugins-official配置 token(Telegram 示例,保存到 ~/.claude/channels/telegram/.env):
/telegram:configure <token>iMessage 放行其他联系人:
/imessage:access allow +15551234567组织级 managed settings 限制可注册插件:
json
{
"channelsEnabled": true,
"allowedChannelPlugins": [
{ "marketplace": "claude-plugins-official", "plugin": "telegram" },
{ "marketplace": "claude-plugins-official", "plugin": "discord" },
{ "marketplace": "acme-corp-plugins", "plugin": "internal-alerts" }
]
}什么时候用
- 作为聊天桥:通过 Telegram/Discord/iMessage 从手机问 Claude,工作在本机你的真实文件上运行,答案回到同一聊天。
- 作为 webhook 接收端:CI、错误跟踪、部署流水线等外部服务的 webhook 直接到达 Claude 已打开你文件的会话。
- 需要在你离开终端时让 Claude 对外部事件实时反应(区别于另起云端会话或定时轮询)。
- 转发 CI 结果、聊天消息、监控事件,让 Claude 在你不在场时处理。
限制 / 坑
- 处于 research preview,需 Claude Code v2.1.80 或更高版本;
--channels语法与协议契约可能变化。 - 需通过 claude.ai 账号或 Console API key 的 Anthropic 认证;不支持 Amazon Bedrock、Google Vertex AI、Microsoft Foundry。
- Team/Enterprise 组织默认被阻止,须管理员显式启用(
channelsEnabled);事件只在会话开启时到达。 - 预览期
--channels仅接受 Anthropic 维护的 allowlist(或组织allowedChannelPlugins)中的插件;自建 channel 测试需--dangerously-load-development-channels。 - 各 channel 插件需要 Bun;iMessage 仅限 macOS 且需 Full Disk Access。
硬事实速查(12 条)
- 启用标志为
--channels,可空格分隔传多个插件;仅写进.mcp.json不足以推送,server 必须在--channels中被命名。 - 内置/官方支持的 channel:Telegram、Discord、iMessage,以及 localhost 演示 fakechat(UI 在 http://localhost:8787)。
- 插件源自 marketplace
claude-plugins-official;缺失时用/plugin marketplace add anthropics/claude-plugins-official或update刷新。 - token 保存路径为
~/.claude/channels/<plugin>/.env,也可用环境变量如TELEGRAM_BOT_TOKEN、DISCORD_BOT_TOKEN。 - 配对命令
/<plugin>:access pair <code>,锁定命令/<plugin>:access policy allowlist。 - iMessage 读取
~/Library/Messages/chat.db(受 macOS 保护,需 Full Disk Access),handle 为+国家码电话或 Apple ID 邮箱。 - Discord 需启用 Message Content Intent,并授予 View Channels、Send Messages 等权限。
- 两个 managed settings:
channelsEnabled(总开关,必须为 true)与allowedChannelPlugins(设定后完全替换 Anthropic 默认 allowlist)。 - claude.ai Team/Enterprise 默认阻止 channels;Console API key 认证默认允许(除非部署了 managed settings);Pro/Max 个人用户跳过这些检查。
- 无人值守可用
--dangerously-skip-permissions绕过权限提示(仅限可信环境);-p非交互模式下需终端输入的工具(多选、plan 模式审批)被禁用。 - Claude 回复时终端不显示回复正文,只显示工具调用与确认;回复出现在对端平台。
- 自建 channel 见 Channels reference,测试用
--dangerously-load-development-channels。