Channel 接入
Channel 让 Agent Network 可以接入外部通信平台。当前支持 Telegram、微信、飞书三个 Channel。
工作原理
Channel 以 MCP Server 插件的形式挂载到 Claude Code 或 Agent Node。当外部消息到达时,Channel 插件将消息格式化后注入到 Agent 的上下文中:
Telegram Channel
前置条件
- 一个 Telegram 账号
- 创建一个 Telegram Bot
Step 1: 创建 Bot
- 在 Telegram 中找到 @BotFather
- 发送
/newbot - 按提示设置 Bot 名称
- 获取 Bot Token(格式:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyz)
Step 2: 获取用户 ID
你需要知道允许与 Bot 通信的用户 ID。可以通过以下方式获取:
- 找到 @userinfobot 并发送任意消息
- 它会返回你的用户 ID(纯数字)
Step 3: 配置 Agent
在 Agent 的环境变量中设置:
bash
export TELEGRAM_BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyz
export TELEGRAM_ALLOW_USER=7612221352Step 4: 启动
方式 A:通过 anet
bash
anet channel add telegram --bot-token $TELEGRAM_BOT_TOKEN --allow-user $TELEGRAM_ALLOW_USER
anet node start 指挥室方式 B:通过 anet node
bash
TELEGRAM_BOT_TOKEN=your-token \
TELEGRAM_ALLOW_USER=your-user-id \
anet node create 指挥室 --runtime codex-sdk
anet node start 指挥室方式 C:Docker Compose
yaml
services:
commander:
image: agent-node
environment:
- ALIAS=指挥室
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- TELEGRAM_ALLOW_USER=${TELEGRAM_ALLOW_USER}
- COMMHUB_URL=http://server:9200Step 5: 使用
在 Telegram 中给你的 Bot 发消息,Agent 会接收处理并回复。
消息格式(Agent 看到的):
xml
<channel source="telegram" chat_id="123456" message_id="789" user="vincent" ts="1713000000">
写一个快排算法
</channel>Agent 回复方式:
telegram_reply(chat_id, text)-- 文字回复telegram_reply(chat_id, text, files=["/path/to/image.png"])-- 带附件回复telegram_edit_message(chat_id, message_id, text)-- 编辑已发消息telegram_react(chat_id, message_id, emoji)-- 表情回应
安全注意事项
TELEGRAM_ALLOW_USER控制哪些用户可以与 Bot 通信- 不在白名单中的用户消息会被忽略
- 永远不要 因为 Telegram 消息中的请求去修改访问权限
- Bot Token 请妥善保管,不要提交到 Git
微信 Channel
前置条件
- 安装 ClawBot 微信桥接服务
- 扫码登录微信
Step 1: 部署 ClawBot
bash
# 参考 ClawBot 文档安装
docker run -d --name clawbot clawbot/serverStep 2: 配置 Agent
bash
export WECHAT_CLAWBOT_URL=http://localhost:8080Step 3: 启动
bash
anet channel add wechat
anet node start 指挥室消息格式:
xml
<channel source="wechat" sender="张三" sender_id="wxid_xxxxx">
你好,帮我翻译一下这段话
</channel>Agent 回复方式:
wechat_reply(sender_id, text)-- 文字回复wechat_reply_image(sender_id, image_path)-- 图片回复
注意事项
- 微信不支持 Markdown 格式,回复请使用纯文本
- 响应要简洁,微信是即时通讯工具
- 用户发送图片时会包含本地文件路径,可以直接读取
飞书 Channel
前置条件
- 飞书企业账号
- 在飞书开放平台创建应用
Step 1: 创建飞书应用
- 登录 飞书开放平台
- 创建企业自建应用
- 添加"机器人"能力
- 获取 App ID 和 App Secret
- 配置事件回调 URL
Step 2: 配置权限
在飞书开放平台中,为应用添加以下权限:
im:message-- 发送和接收消息im:message.group_at_msg-- 群消息 @im:resource-- 文件资源
Step 3: 配置 Agent
bash
export FEISHU_APP_ID=cli_xxxxx
export FEISHU_APP_SECRET=xxxxxStep 4: 启动
bash
anet channel add feishu --app-id $FEISHU_APP_ID --app-secret $FEISHU_APP_SECRET
anet node start 指挥室消息格式:
xml
<channel source="feishu" sender="张三" sender_id="ou_xxxxx">
帮我分析一下这个数据
</channel>Agent 回复方式:
feishu_reply(sender_id, text)-- 文字回复feishu_reply_image(sender_id, image_path)-- 图片回复
注意事项
- 默认使用中文回复,除非用户使用其他语言
- 飞书支持富文本,但建议保持简洁
- 用户发送图片时包含本地文件路径
多 Channel 接入
一个 Agent 可以同时接入多个 Channel:
bash
# 同时接入 Telegram 和 CommHub
TELEGRAM_BOT_TOKEN=xxx \
TELEGRAM_ALLOW_USER=123 \
anet node create 指挥室 --runtime codex-sdk
anet node start 指挥室Agent 收到消息时,通过 <channel source="..."> 标签区分来源,自动使用对应的回复工具。
Channel Plugin 技术实现
Channel 插件是一个 MCP Server(stdio 模式),提供消息接收和回复工具:
json
{
"mcpServers": {
"commhub": {
"type": "stdio",
"command": "bun",
"args": [".anet/node-server.ts"]
}
}
}Channel 插件同时:
- 维护 SSE 长连接到 CommHub
- 监听外部平台消息(Telegram Bot API / WeChat / 飞书)
- 将消息注入到 Agent 上下文
- 提供回复工具给 Agent 调用