AstrBot 调研笔记
本文为 AstrBot 开源项目的调研笔记。AstrBot 是中文社区最活跃的多平台 LLM 聊天机器人框架之一,以"一站式 Agent 聊天机器人平台"为定位,支持 15+ 消息平台接入、海量插件生态和完整的 Web 管理面板。
开源地址:https://github.com/AstrBotDevs/AstrBot
当前版本:v4.24.x(2026 年 5 月),4600+ commits
这篇文章说了什么
AstrBot 是一个用 Python 编写的一站式多平台 LLM 聊天机器人及开发框架。它的核心定位是:让任何人都能快速搭建一个能接入 QQ、微信、飞书、Telegram、Discord 等 15+ 消息平台的 AI Agent。
它最大的特色有三个:
-
插件生态极其丰富——社区贡献了 1000+ 个插件,通过 Web 管理面板一键安装。从天气查询、翻译、游戏到工作流自动化,几乎没有找不到的插件。这种插件生态在国内开源项目里非常罕见。
-
以 Chatbot 为入口的 Agent 平台——表面上是个聊天机器人,实际上内置了 Agent 沙箱(代码执行 + Shell)、MCP 协议集成、知识库(RAG)、自动上下文压缩、人格设定等完整的 Agent 能力。它还对接了 Dify、阿里云百炼、Coze 等外部 Agent 平台。
-
部署方式极其友好——
uv tool install astrbot一行命令就能跑起来,还有 Docker、Windows/Mac 桌面启动器、宝塔面板、CasaOS、雨云一键部署等十几种部署方式。
从项目数据来看:4600+ commits、1000+ 插件、15+ 消息平台、版本号已经到 v4.24,迭代速度和社区活跃度都非常惊人。
观后感
- AstrBot 证明了插件生态 + 低门槛部署是开源项目成功的关键公式。1000+ 插件的网络效应让新用户愿意来、老用户离不开
- 它是少有的"国内 IM 生态全覆盖"的 Agent 框架——QQ、微信(个人号/企业微信/公众号)、飞书、钉钉全部支持,这在海外框架里不可能做到
- 事件总线 + 流水线架构是高频消息场景下的成熟选择,松耦合让多平台适配变得简单
- MCP 协议集成 + Agent 沙箱 + 知识库 + Dify 对接——AstrBot 正在从"聊天机器人"升级为"Agent 运行时"
- v3.6.0 规划的长短期记忆 + 情绪控制模型如果做出来,角色扮演赛道会有质的飞跃
- AGPL-3.0 许可证对于商用项目需要注意合规
- 插件隔离 RFC(MCP 风格进程隔离)说明团队在认真解决规模化问题
一、项目定位与核心价值
1.1 定位
AstrBot 的定位经历了从"聊天机器人框架"到"一站式 Agent 聊天机器人平台"的演进:
- v1-v3:多平台 LLM 聊天机器人,核心是"让 LLM 接入 IM"
- v4:Agent 平台化——加入沙箱、MCP、知识库、Skills、子 Agent 编排、WebUI
- v3.6.0(规划中):加入长短期记忆模型 + 情绪控制模型,面向角色扮演和情感陪伴场景
一句话概括现在的 AstrBot:用 Python 写的、跑在 IM 里的、带 1000+ 插件的 Agent 平台。
1.2 核心卖点
| 卖点 | 说明 |
|---|---|
| 插件生态 | 1000+ 社区插件,WebUI 一键安装 |
| 多平台 | QQ、微信、企微、飞书、钉钉、Telegram、Discord 等 15+ |
| 部署简单 | uv tool install astrbot 一行命令 |
| Agent 能力 | 沙箱、MCP、知识库、Skills、子 Agent |
| Web 管理面板 | 可视化管理配置、插件、日志、对话 |
| 开源免费 | AGPL-3.0 |
二、架构设计
2.1 整体架构
AstrBot 基于 事件总线 + 流水线 的异步架构:
消息平台(QQ/微信/飞书/...)
│
▼
平台适配器(统一消息格式 UMO)
│
▼
事件总线(EventBus)—— 异步路由
│
▼
消息处理流水线(Pipeline)
├── Stage 1: 安全过滤(关键词/白名单/速率限制/百度内容审核)
├── Stage 2: Agent 处理(LLM 对话 + Tool Calling + MCP)
├── Stage 3: 结果装饰(格式化、媒体处理)
└── Stage 4: 响应发送(按平台格式返回)
│
▼
插件系统(事件 hook + 指令注册 + Tool 注册)
2.2 UMO 统一消息格式
AstrBot 的跨平台核心抽象——Unified Message Object(UMO)。所有平台的消息都被转换为统一的 UMO 格式,包括:
- 消息内容(文本、图片、语音)
- 消息来源(平台类型 + 会话 ID + 用户 ID)
- 会话上下文
这意味着:
- 写一个回复逻辑,自动适配所有平台
- 不同平台的用户可以和同一个 Agent 对话
- 配置可以 per-session 覆盖(UMOP 配置路由)
2.3 事件总线
EventBus 类实现异步事件分发,使用 asyncio.Queue 做非阻塞事件处理。插件通过注册事件处理器来响应消息事件,不需要修改核心代码。
2.4 流水线调度
PipelineScheduler 管理消息处理的流水线阶段,每个阶段可独立启用/禁用、可插拔。这种设计让安全审核、LLM 调用、结果装饰等逻辑清晰分离。
三、插件系统
3.1 插件规模
1000+ 社区插件,涵盖:
| 类别 | 典型插件 |
|---|---|
| 实用工具 | 天气查询、翻译、计算器、日程提醒 |
| 娱乐 | 游戏、表情包、点歌、占卜 |
| AI 增强 | 知识库管理、画图、TTS、角色扮演 |
| 自动化 | 定时任务、消息转发、数据统计 |
| 平台扩展 | 新增消息平台适配器 |
3.2 插件开发
插件开发极简——Python 编写,通过装饰器注册:
# 注册指令
@plugin.command("hello")
async def hello():
return "Hello from plugin!"
# 注册事件处理器
@plugin.on_event("on_message")
async def on_message(event):
# 处理消息
pass
# 注册 LLM Tool
@plugin.llm_tool("web_search")
async def search(query: str) -> str:
# 搜索逻辑
return results
3.3 插件隔离 RFC
这是 AstrBot 正在推进的一个重要架构升级(RFC #3210):
当前问题:
- 插件与核心共享 Python 环境,依赖版本冲突
- 插件可以读取核心的内存数据,存在安全隐患
- 随着插件数量增加,维护成本非线性增长
解决方案——MCP 式进程隔离:
- 每个插件跑在独立进程中
- 核心与插件通过 stdio / WebSocket + JSON-RPC / MessagePack 通信
- 使用 msgspec 做高性能序列化(比标准 json 快很多)
- 使用 pydantic 做数据校验
- 抽离 SDK 仓库,插件开发不再依赖核心仓库
这个架构本质上就是用 MCP 的思路来做插件隔离,非常务实且正确。
四、Agent 能力
4.1 Agent Sandbox
AstrBot 内置沙箱环境,支持:
- 代码执行:Python 代码在隔离环境中运行
- Shell 命令:执行系统命令
- 会话级资源复用:同一个 session 的多次 Agent 调用共享沙箱状态
- 安全隔离:防止 Agent 操作越界
4.2 MCP 协议
完整的 MCP Client 实现,支持:
- stdio 传输(本地 MCP Server)
- SSE 传输(远程 MCP Server)
- 自动工具发现和注册
- 与内置工具无缝混合使用
4.3 知识库(RAG)
- 文档上传和向量化(支持 PDF、EPUB、Markdown 等)
- 自动分段和索引
- 对话时自动检索相关内容注入上下文
- WebUI 管理知识库
4.4 自动上下文压缩
当对话历史超过 token 限制时自动触发:
- LLM 生成对话摘要
- 旧消息替换为摘要
- 保留最近几条消息保持上下文连贯性
4.5 人格设定
支持 Agent 人格配置:
- 系统 prompt 自定义
- 角色设定(角色扮演场景)
- 多模态能力(图片理解、语音转文字、语音合成)
4.6 外部 Agent 平台对接
AstrBot 不只是自己跑 Agent,还能对接外部 Agent 平台:
- Dify:接入 Dify 智能助手、知识库、工作流
- 阿里云百炼:阿里云的 LLMOps 平台
- Coze:字节跳动的 Agent 平台
- Google Agent SDK:使用 Google 的 Agent 框架
这个设计意味着 AstrBot 定位为"Agent 汇聚层"——不管 Agent 跑在哪,最终都在 AstrBot 的 WebUI 和 IM 渠道中触达用户。
五、消息平台支持
5.1 支持的平台
| 平台 | 维护方 | 消息类型 |
|---|---|---|
| QQ(官方 Bot) | 官方 | 文字、图片 |
| QQ(OneBot v11) | 官方 | 文字、图片、语音 |
| 微信个人号 | 官方 | 文字、图片、语音 |
| 企业微信 | 官方 | 文字、图片、语音 |
| 微信公众号 | 官方 | 文字、图片 |
| 飞书 | 官方 | 文字、图片 |
| 钉钉 | 官方 | 文字、图片 |
| Telegram | 官方 | 文字、图片 |
| Discord | 官方 | — |
| Slack | 官方 | — |
| LINE | 官方 | — |
| KOOK | 官方 | — |
| Satori | 官方 | — |
| Matrix | 社区 | — |
| Rocket.Chat | 社区 | — |
| VoceChat | 社区 | — |
| 即将支持 | — |
15+ 官方平台 + 社区扩展,基本覆盖了中文用户常用的所有 IM。
5.2 平台适配架构
Platform Adapter Interface
├── register() —— 注册平台
├── send_message() —— 发送消息
├── on_message() —— 接收消息
└── 统一 Webhook 系统
每个平台适配器实现统一接口,核心不关心消息来自哪个平台。
六、LLM 提供商支持
| 提供商 | 类型 | 备注 |
|---|---|---|
| OpenAI API | 文本生成 | 兼容所有 OpenAI API 格式的服务 |
| Anthropic | 文本生成 | Claude 系列 |
| Google Gemini | 文本生成 | — |
| DeepSeek | 文本生成 | — |
| 月之暗面(Moonshot) | 文本生成 | Kimi |
| 智谱 AI(GLM) | 文本生成 | ChatGLM |
| Ollama(自部署) | 模型加载 | 本地运行开源模型 |
| LM Studio(自部署) | 模型加载 | 本地运行开源模型 |
| 硅基流动 | API 平台 | 多模型 API 服务 |
| OneAPI | LLM 分发 | 统一 API 网关 |
| AIHubMix | API 网关 | 多模型聚合 |
| Whisper | 语音转文本 | API + 本地 |
| SenseVoice | 语音转文本 | 本地部署 |
| OpenAI TTS | 文本转语音 | — |
| Edge TTS | 文本转语音 | 免费 |
| Azure TTS | 文本转语音 | — |
七、部署方式
AstrBot 的部署方式可能是所有 Agent 框架里最丰富的:
| 方式 | 适用场景 | 难度 |
|---|---|---|
uv tool install astrbot | 一键命令行部署 | ⭐ |
| Docker / Docker Compose | 生产环境 | ⭐⭐ |
| AstrBot Launcher | Windows/Mac 桌面启动器 | ⭐ |
| AstrBot Desktop App | 桌面应用 | ⭐ |
| 宝塔面板 | 面板管理用户 | ⭐⭐ |
| 1Panel | 面板管理用户 | ⭐⭐ |
| CasaOS | NAS/家庭服务器 | ⭐⭐ |
| 雨云一键部署 | 不想管服务器 | ⭐ |
| Replit | 在线体验 | ⭐ |
| AUR (Arch Linux) | Arch 用户 | ⭐⭐ |
| 手动部署 | 深度自定义 | ⭐⭐⭐ |
它还提供了 uvx astrbot init && uvx astrbot run 这样真正的一行命令启动方式。
八、Web 管理面板
AstrBot 有一个功能完整的 Vue.js Web 管理面板:
| 功能模块 | 说明 |
|---|---|
| 配置管理 | 可视化修改 LLM、平台、Agent 配置 |
| 插件管理 | 一键安装/卸载/启用/禁用插件 |
| 日志查看 | 实时监控机器人运行状态 |
| WebChat | 浏览器内直接与 Agent 对话 |
| 对话历史 | 查看和管理历史会话 |
| 知识库管理 | 上传文档、管理知识库 |
| 更新系统 | WebUI 一键更新 |
Demo: https://demo.astrbot.app/(用户名/密码: astrbot)
九、与其他 Agent 框架的对比
| 维度 | AstrBot | DeerFlow | GoClaw | DeepAgents |
|---|---|---|---|---|
| 定位 | 一站式 Chatbot + Agent 平台 | Super Agent Harness | AI Agent 网关 | Agent Harness SDK |
| 语言 | Python | Python + Node.js | Go | Python |
| 消息平台 | 15+(QQ/微信/飞书/钉钉/...) | 无 | 7 个 IM | 无 |
| 插件生态 | 1000+ 社区插件 | Skills 系统 | 30+ 内置工具 | Middleware |
| WebUI | ✅ 完整管理面板 | ✅ Web UI | ✅ Dashboard | ❌(仅 CLI) |
| Agent Sandbox | ✅ | ✅ | ✅ | ✅ |
| MCP | ✅ | ✅ | ✅ | ✅ |
| 部署门槛 | 极低(一行命令) | 中 | 低(单二进制) | 中 |
| 社区 | ⭐ 非常活跃 | ⭐ 活跃 | ⭐ 活跃 | ⭐ 活跃 |
| 许可证 | AGPL-3.0 | MIT | CC BY-NC 4.0 | MIT |
| 适合谁 | 想在 IM 里跑 Agent 的个人/团队 | 需要 Agent 产品化 + Skills 生态 | 需要多租户 Agent 网关的企业 | 需要 SDK 深度定制的开发者 |
十、核心经验总结
- 插件生态是开源 Agent 框架的护城河:1000+ 插件意味着几乎任何需求都有人做过,新用户不需要从零开始
- IM 渠道集成是触达用户的最佳方式:用户不需要装新 App、学新界面,在熟悉的微信/QQ/飞书里直接跟 Agent 对话
- 部署门槛决定用户规模:
uv tool install astrbot一行命令 vs 需要配 Docker/数据库的框架,前者能触达十倍以上的用户 - MCP 正在成为 Agent 框架的标准组件:AstrBot、DeepAgents、DeerFlow 全部支持 MCP,这个趋势不可逆
- 插件进程隔离是规模化必经之路:AstrBot 的 RFC 说明团队在认真思考 1000+ 插件后的架构问题,MCP 式的进程隔离方案很务实
- AGPL-3.0 是双刃剑:保护了开源生态(改代码必须开源),但也限制了商用场景
- "Agent 汇聚层"的定位很聪明:不只自己做 Agent,还能对接 Dify/百炼/Coze/Google ADK,AstrBot 变成 Agent 的"统一前端"