返回博客2026年3月20日2 分钟阅读

Claude Code 现在可以用 Telegram 遥控了

摘要

Anthropic 刚发布了 Claude Code Channels,让你通过 Telegram 远程操控 Claude Code。手机发条消息,它就在你电脑上干活。这篇讲清楚它是什么、怎么配、能干嘛。

用 Claude Code 写代码有个前提 - 你得坐在电脑前面。

不在工位上的时候,想让它帮你跑个测试、查个日志、改个小 bug?没办法。Terminal 关了就关了。

今天 Anthropic 发布了 Claude Code Channels,解决的就是这个问题。它让你通过 Telegram 给 Claude Code 发消息,Claude 收到后在你电脑上执行,再把结果发回来。

Channels 是什么

Channels 是一种基于 MCP 协议的插件机制。它的作用是把外部事件"推"进正在运行的 Claude Code session 里,让 Claude 能响应你不在终端时发生的事情。

架构很简单:

  • Telegram Bot 收到你的消息
  • Channel 插件(一个 MCP server)把消息转发给 Claude Code
  • Claude 处理完后,通过 Bot 把结果发回给你

整个过程不需要暴露任何公网端口。Telegram 那边用的是 Bot API 的轮询模式,Channel 插件跑在你本地,通过 stdio 跟 Claude Code 通信。

Telegram 只是第一个场景。Channels 的设计是通用的 - 同样的机制可以接 Discord、Slack,甚至 CI/CD 的 webhook。官方目前提供了 Telegram 和 Discord 两个插件。

怎么配置

整个过程大概 5 分钟。

先装 Bun(官方 Telegram 插件用 Bun 写的,所以需要它作为运行时):

curl -fsSL https://bun.sh/install | bash

不过 Channel 协议本身不绑定 Bun - Node.js、Deno 都行。只是 Anthropic 官方选了 Bun 来实现预置插件。如果你不想装 Bun,理论上可以用 Node.js 重写一个,核心就是 @modelcontextprotocol/sdk + Telegram Bot API,代码量不大。

创建 Telegram Bot

打开 Telegram,找 @BotFather,发 /newbot,按提示给 Bot 取个名字和用户名。完成后它会给你一个 token,长这样:123456789:AAHfiqksKZ8...

在 Claude Code 里装插件(如果没添加过官方 marketplace,先跑一下 /plugin marketplace add anthropics/claude-plugins-official):

/plugin install telegram@claude-plugins-official

配置 token

/telegram:configure YOUR_TOKEN_HERE

Token 会存到 .claude/channels/telegram/.env,也可以直接设环境变量 TELEGRAM_BOT_TOKEN

启动

claude --channels plugin:telegram@claude-plugins-official

配对

在 Telegram 上给你的 Bot 发条消息,它会回复一个 6 位配对码。在终端里输入:

/telegram:access pair ABCDEF

配对成功后,你的 Telegram 账号就跟这个 Claude Code session 绑定了。

最后一步,锁定访问

/telegram:access policy allowlist

这一步很重要 - 不设的话,任何人给你的 Bot 发消息都能拿到配对码。设成 allowlist 模式后,只有已配对的用户才能跟 Claude 交互。

能干什么

配好之后,你可以在 Telegram 上跟 Claude Code 像聊天一样交互。

远程下任务:出门在外,想起一个要改的地方,直接在手机上发消息。Claude 在你电脑上执行,完成后把结果发回来。

发文件过去处理:支持发送图片、PDF 等文件(最大 50MB),Claude 会识别内容并处理。

收通知:构建完成、测试跑完、出了报错 - 这些事件都可以通过 Channel 推送到你的 Telegram。

插件提供了三个工具:

工具用途
reply发消息、回复、发送文件附件
react加 emoji 表情回应
edit_message编辑之前发过的消息

有个限制值得注意:Telegram Bot API 不支持读取历史消息。Bot 只能处理它运行期间新收到的消息,不能回溯之前的对话。

运行时到底发生了什么

理解这个有助于排查问题,也能帮你判断它适不适合你的使用场景。

运行 claude --channels plugin:telegram@claude-plugins-official 后,不是一个进程,是两个

你的终端
  └── claude (主进程,交互式 CLI)
        └── bun server.ts (子进程,MCP server)
              └── 轮询 Telegram Bot API

Claude Code 启动时读取插件的 .mcp.json,发现需要一个 MCP server,于是把 bun server.ts 作为子进程 spawn 出来。两者通过 stdio(stdin/stdout)通信,这是标准的 MCP 传输协议。

这个命令会阻塞终端。 你面前还是那个正常的 Claude Code 交互界面,只不过同时多挂了一个 Telegram Channel 子进程在后台轮询。终端里正常打字交互,手机上也能通过 Telegram 发消息 - 两边共享同一个 session。

没有独立的后台守护进程。 Channel 插件的生命周期完全由 Claude Code 管理。Ctrl+C 退出 Claude Code,Telegram 那边也就断了。

消息的流向:

  • 入站:Telegram → Bot API → server.ts 轮询拿到 → stdio 通知 Claude Code → Claude 处理
  • 出站:Claude 调用 MCP tool → stdio → server.ts → Telegram Bot API → 你的手机

跟你在 .mcp.json 里配一个普通 MCP server(比如 filesystem)本质上是一样的机制。区别在于 Channel 类型的 MCP server 多了一个能力 - 它可以主动推送事件,而不只是被动等 Claude 调用。

安全模型

Channels 的安全设计围绕一个核心原则:未经验证的消息就是 prompt injection 的入口

所以它用了 sender allowlist 机制 - 只有配对过的用户 ID 才能推送消息,其他人的消息直接丢弃,连错误提示都不给。

这里有个细节:验证的是发送者的 ID,不是聊天室的 ID。即使在群聊里,也是逐人验证,而不是"这个群的人都放行"。

如果你想自己写 Channel 插件,这是官方文档里反复强调的一点 - 不做 sender gating 的 Channel 等于把 Claude 的输入暴露给了任何人。

一些限制

Channels 目前还是 research preview,有几个需要知道的事:

电脑必须开着。Channel 插件跑在本地,Claude Code session 必须活着才能处理消息。笔记本合盖就断了。

这就引出一个实际问题:你总不能一直开着一个终端窗口不动吧。用 tmux 可以比较优雅地解决这个问题。

用 tmux 保持 session 存活

# 创建一个专门的 tmux session
tmux new-session -d -s claude-tg \
  'claude --channels plugin:telegram@claude-plugins-official'

这一行做了三件事:创建一个叫 claude-tg 的 tmux session,在里面启动带 Telegram Channel 的 Claude Code,然后自动 detach(-d)回到你的 shell。Claude Code 在后台跑着,Telegram 消息正常收发。

# 想看看 Claude 在干嘛,随时 attach 进去
tmux attach -t claude-tg

# 看完了按 Ctrl+B 再按 D,detach 回来,不影响运行

# 不用了,关掉
tmux kill-session -t claude-tg

如果你经常用,可以写个 alias 放进 .zshrc

alias claude-tg='tmux new-session -d -s claude-tg \
  "claude --channels plugin:telegram@claude-plugins-official" \
  && echo "Claude Code + Telegram 已在后台启动,tmux attach -t claude-tg 可查看"'

这样每次打开电脑,跑一下 claude-tg 就行了。合盖休眠的话还是会断 - 这个没办法,除非你跑在一台常开的服务器或 NAS 上。

版本要求。需要 Claude Code v2.1.80 以上。

Team/Enterprise 用户需要管理员在组织策略里显式开启 Channels 功能,默认是关的。

接口可能会变。Research preview 意味着协议和命令格式都不是最终版。

自己写一个 Channel

Channels 的协议是开放的,你可以自己写。核心就三件事:

声明 claude/channel capability,让 Claude Code 注册事件监听。发送 notifications/claude/channel 通知,把外部事件推进去。如果需要双向通信,再暴露 MCP tools 让 Claude 能回复。

一个最简单的 webhook 接收器,大概 20 行代码:

const mcp = new Server(
  { name: 'webhook', version: '0.0.1' },
  {
    capabilities: { experimental: { 'claude/channel': {} } },
    instructions: '收到 webhook 事件,读取并执行。'
  }
)

await mcp.connect(new StdioServerTransport())

Bun.serve({
  port: 8788,
  hostname: '127.0.0.1',
  async fetch(req) {
    const body = await req.text()
    await mcp.notification({
      method: 'notifications/claude/channel',
      params: { content: body }
    })
    return new Response('ok')
  }
})

localhost:8788 发个 POST 请求,内容就会出现在 Claude Code 的上下文里。在这个基础上可以接 GitHub webhook、监控告警、CI 通知 - 任何能发 HTTP 请求的系统都行。

想分享给别人用的话,包装成插件发布到 marketplace 就行。不过目前自定义插件还需要用 --dangerously-load-development-channels 标志加载,正式上架需要通过安全审核。


Claude Code 从一个"必须坐在电脑前用"的终端工具,变成了一个可以随时随地发消息调度的 agent。这个变化不大,但确实补上了日常使用中最明显的一块短板。

相关文章

2026年3月29日

用飞书 CLI + AI Agent 搭了个 A 股投资助手

飞书命令行工具刚开源,我拿它配合 Claude Code 搭了个 A 股每日跟踪系统:多维表格管理持仓、自动抓取行情数据、一句话创建盘中提醒。从安装到跑通,全程自然语言驱动。

飞书CLIAI Agent

2026年3月6日

MCP Apps:让 AI 对话里长出交互界面

MCP 工具一直只能返回文本。现在 MCP Apps 让工具可以返回完整的交互式界面 - 表单、仪表盘、3D 模型、实时监控 - 直接嵌在对话里。这是 MCP 协议最重要的一次扩展。

MCPMCP AppsAI Agent

合作伙伴

CompeteMap — 英国及爱尔兰学生竞赛一站式搜索

数学、编程、科学、写作等各类竞赛信息汇总,支持按年龄和科目筛选,再也不错过报名截止日。

准备开始了吗?

先简单说明目标,我会给出最合适的沟通方式。