一个论坛群组 + 一个 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 里已经配了 botToken,channels.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
夜雨聆风