乐于分享
好东西不私藏

OpenClaw * Telegram :一个 Agent 多话题并行配置指南

OpenClaw * Telegram :一个 Agent 多话题并行配置指南

一个论坛群组 + 一个 Agent + 多个 Topic = 天然的多任务并行,还不串台

为什么不用多 Agent?

刚开始用的多个 Agent 方案,但实际用下来问题很多:

  • 技能不共享:code-agent 装了代码相关 skill,doc-agent 装了文档 skill,彼此看不到对方的能力
  • 配置膨胀:每个 Agent 都要单独配 workspace、agentDir、model、botToken
  • 人格割裂:每个 Agent 是独立的上下文,无法跨 Topic 引用之前的讨论

更好的方案:只用一个 Agent,利用 Telegram Forum 的 Topic 做天然的会话隔离。

架构设计

Telegram 论坛群组(一个 Bot,一个 Agent)
├── 📰 新闻热点 ──→ session: chat_id:topic:1001(独立上下文)
├── 💬 闲聊 ──→ session: chat_id:topic:1002(独立上下文)
├── 🖥️ 写代码 ──→ session: chat_id:topic:1003(独立上下文)
└── 📝 写文档 ──→ session: chat_id:topic:1004(独立上下文)
 ↓
 同一个 Agent,共享全部 skill 和工具

OpenClaw 自动为每个 Topic 生成独立的 session key,格式为 chat_id:topic:thread_id。你在「写代码」Topic 里讨论的内容不会出现在「新闻热点」里,但 Agent 拥有的所有能力(联网搜索、代码执行、文档生成……)在每个 Topic 里都能用。

前置准备

1. 创建 tg 群组

新建 Telegram 群组 → 群设置 → 开启「Topics / 话题」→ 按需创建 Topic。

2. 创建 Bot

通过 @BotFather 创建一个 Bot 即可,拿到 Token。

3. 获取群组 ID 和用户 ID

把 Bot 加入群组,在任意 Topic 发条消息,然后:

openclaw logs --follow
# 找到 chat.id(负数,如 -1001234567890)和 from.id(你的用户 ID)

4. 让 Bot 能收到群消息

如果设置了 requireMention: false(不 @bot 也能触发),省去每次艾特的麻烦,需要二选一:

  • 推荐:把 Bot 设为群管理员(自动绕过 Privacy Mode)
  • 或通过 BotFather /setprivacy → Disable,然后把 Bot 移出群组再重新加入

配置示例

只需要一个 Agent、一个 Bot 账号,配置非常简洁。

openclaw.json 关键部分

{
 "agents": {
 "defaults": {
 "model": {
 "primary": "your-provider/your-model"
 },
 "workspace": "/root/.openclaw/workspace",
 "timeoutSeconds": 600,
 "maxConcurrent": 8 // 允许同时处理 8 个请求,多 Topic 并行的关键
 },
 "list": [
 { "id": "main" } // 一个 Agent 就够了
 ]
 },

 "channels": {
 "telegram": {
 "enabled": true,
 "botToken": "<YOUR_BOT_TOKEN>", // ⚠️ 顶层必须有 botToken
 "dmPolicy": "pairing",
 "groupPolicy": "allowlist",
 "streaming": "partial",
 "mediaMaxMb": 50,

 // 群组白名单(对象格式,不是数组!)
 "groups": {
 "-100XXXXXXXXXX": { // 你的群组 ID
 "requireMention": false // 不用 @bot 也能触发
 }
 },

 // 发送者白名单(只有你能触发 Bot)
 "groupAllowFrom": [
 123456789 // 你的 Telegram 用户 ID
 ]
 }
 },

 "bindings": [
 {
 "agentId": "main",
 "match": {
 "channel": "telegram",
 "accountId": "main"
 }
 }
 ]
}

就这些。没有多余的 Agent 定义,没有多余的 Bot Token,没有复杂的路由规则。

配置避坑指南

⚠️ groups 必须是对象,不是数组

// ❌ 报错:expected record, received array
"groups": [ -100XXXXXXXXXX ]

// ✅ 正确:群组 ID 作为 key,值是配置对象
"groups": {
 "-100XXXXXXXXXX": { "requireMention": false }
}

⚠️ 顶层必须有 botToken

即使 accounts.main 里已经配了 botTokenchannels.telegram 顶层也要有一份,否则报:

Error: Telegram bot token missing

⚠️ groupAllowFrom 只填用户 ID

不要把群组 ID 放进去,它只接受 Telegram 用户 ID(正数)。

⚠️ 改完 Privacy Mode 要重新加入群

BotFather 里 /setprivacy → Disable 后,必须把 Bot 移出群组再加回来,Telegram 才会生效。设为管理员则不需要这一步。

使用效果

配置完成后,你在论坛群组里的使用方式:

  • 打开「新闻热点」Topic → 问今天有什么新闻 → Bot 联网搜索后回复
  • 切到「写代码」Topic → 让它写个脚本 → Bot 用代码执行 skill 完成
  • 切到「写文档」Topic → 让它生成一份 docx → 同一个 Agent,同样能用 docx skill
  • 每个 Topic 的对话记忆互不干扰,但 所有 skill 和工具全部共享
  • 可以在多个 Topic 里同时发消息,maxConcurrent: 8 保证并行处理

这就是单 Agent 方案的核心优势:Topic 提供隔离,Agent 提供能力,不需要拆分。

安全审计

配置完后跑一下安全审计:

openclaw security audit
告警 修复
CRITICAL: group commands have no sender allowlist 添加 groupAllowFrom
WARN: multi-user setup detected 已配 groupAllowFrom,可忽略

排错速查表

现象 原因 解决
expected record, received array groups 写成了 [] 改为 {}
bot token missing 顶层缺 botToken channels.telegram 顶层加上
群里发消息无回复 Privacy Mode / Bot 不是管理员 设管理员或关闭 Privacy Mode 后重新加入
not-allowed 用户 ID 不在白名单 检查 groupAllowFrom
Topic 间消息串了 一般不会,OpenClaw 自动隔离 检查是否误用了同一个 Topic

总结

Telegram Forum 的 Topic 机制 + OpenClaw 的 Session 隔离 = 天然的多任务并行方案。

核心优势:

  • ✅ 一个 Agent 搞定所有场景,技能完全共享
  • ✅ 配置简洁,没有冗余的 Bot 和 Agent 定义
  • ✅ Topic 天然隔离上下文,不会串台
  • ✅ 支持真正的并行处理,maxConcurrent 控制并发数

如果你也在用 Telegram Bot + AI Agent,不妨试试这个方案。


本文基于 OpenClaw 实战经验总结,更多文档见:https://docs.openclaw.ai[1]

引用链接

[1]https://docs.openclaw.ai