技能
消息通讯 官方
Telegram 智能体集群
将智能体团队接入 Telegram。每个子智能体在群聊中拥有独立的机器人身份。
功能特性
- 团队中的每个子智能体在 Telegram 中显示为独立的机器人
- 池中的机器人会动态更名以匹配智能体角色
- 同一群组内发送者与机器人的映射关系保持稳定
- 未配置池机器人时,自动回退到主机器人
- 轮询分配机制,自动传播机器人名称变更
前置条件
- 已安装并运行 NanoClaw
- 已通过 /add-telegram 配置 Telegram 频道
- 通过 BotFather 额外创建 3-5 个 Telegram 机器人令牌
- 已将池机器人添加到你的 Telegram 群组
安装
/add-telegram-swarm 工作原理
/add-telegram-swarm 技能为已有的 Telegram 频道添加智能体团队(集群)支持。当你的智能体组建团队来处理复杂任务时,每个子智能体会以不同的机器人身份出现在 Telegram 群组中——让你一眼就能分辨是谁在发言。
架构上采用了在主 Telegram 机器人之外配置一组”仅发送”的池机器人。主机器人负责接收消息和发送主智能体的回复(这已经由 /add-telegram 完成配置)。池机器人非常轻量——它们使用 Grammy 的 Api 类,无需轮询,只具备发送消息的能力。
当子智能体调用 send_message 并带有 sender 参数(如 “Researcher” 或 “Code Reviewer”)时,宿主会为该发送者名称分配一个池机器人,并将机器人重命名为对应名称。映射关系在群组内保持稳定——同一发送者名称在整个会话期间始终使用同一个机器人,因此 Telegram 群组中每个团队成员都会显示一致的身份。
配置步骤
运行该技能之前,你需要先创建池机器人:
- 打开 Telegram,找到
@BotFather - 为每个机器人发送
/newbot(通常 3-5 个即可)。先给它们起占位名称和用户名,例如myproject_swarm_1_bot - 复制所有令牌
- 对每个机器人,在 BotFather 中进入 Bot Settings > Group Privacy > Turn off。这样池机器人才能在群组中发送消息。
- 将所有池机器人添加到你的 Telegram 群组
该技能会将令牌以逗号分隔的形式存储在 TELEGRAM_BOT_POOL 环境变量中。
实际效果
当团队处于活跃状态时,你的 Telegram 群组会显示来自多个机器人的消息。例如,如果你让 NanoClaw “组建一个包含研究员和程序员的团队”:
- NanoClaw(主机器人):“我将创建一个包含研究员和程序员的团队。”
- Researcher(池机器人 #1):“正在对该主题进行网络调研……”
- Coder(池机器人 #2):“正在搭建项目结构。”
- Researcher(池机器人 #1):“找到了 3 篇相关论文,正在与团队共享。”
每个机器人在聊天中都有自己的名称和头像位置,使多智能体对话一目了然。
架构说明
- 池机器人使用 Grammy 的
Api类——轻量级实例,可以发送消息但不会轮询接收消息。 - 机器人名称通过 Telegram 的
setMyNameAPI 设置。重命名后会等待 2 秒,让 Telegram 在发送第一条消息之前完成名称传播。 - 发送者与机器人的映射以
{groupFolder}:{senderName}为键,因此不同群组可以独立分配机器人。 - 如果所有池机器人都已分配而又出现新的发送者,分配会循环使用(轮询)。机器人会被重命名为新的发送者。
- 映射关系在服务重启时重置——每次启动时池机器人会重新分配。
使用建议
- 3-5 个池机器人足以覆盖大多数场景。团队很少同时拥有超过 5 个活跃子智能体,而且轮询机制可以优雅地处理溢出情况。
- Telegram 会在客户端缓存机器人名称。池机器人重命名后,用户可能需要滚动聊天或重启 Telegram 才能立即看到更新后的名称。
- 池机器人仅用于发送,不接收消息也不响应命令。所有传入消息都通过主机器人处理。
- 如果某个池机器人没有发送消息,请用
getMe调用验证其令牌,并确认已将其添加到群组且关闭了 Group Privacy。 - 该技能会修改
send_messageMCP 工具,使其接受可选的sender参数。这也需要重新构建容器镜像。