RepoDaily · 2026-07-22 · Self-hosted app

AstrBot:用一套 Python 自托管框架连接八大 IM 平台与多个大模型

#14 Self-hosted app Python +416 AstrBotDevs/AstrBot 打开仓库

4.26.7 版本内置 QQ、Telegram、Discord、微信、Slack、飞书、钉钉适配器,集成 OpenAI、Claude、Gemini 及 MCP 工具调用。AGPL-3.0 许可,需 Python 3.12+。

项目类型Self-hosted app
最适合希望用一套 Python 服务同时对接多个聊天平台和多个大模型供应商、而不想为每个平台单独编写集成代码的开发者。
风险等级中等 — AGPL-3.0 copyleft、依赖项超过 60 个、需 Python 3.12+
评估时间2–4 小时完成 Docker 部署并接入一个 IM 平台与一个大模型供应商

核心问题: AGPL-3.0 许可证和庞大的依赖树是否符合你的部署与合规要求?

91/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 91/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 6 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 5 个工作流步骤、5 个下一步动作,以及 6 个命令/安装信号。

63维护可信度

趋势热度为 +416 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

93生产准备度

采纳风险标记为 medium,并包含 5 条安全说明与 4 条跳过条件。

97差异化

2 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 7 个 AI/Agent 相关信号。

项目概览

AstrBot 是一个基于 Python 的 AI Agent 框架,定位是即时通讯平台与大语言模型之间的统一桥梁。你不需要为 QQ、Telegram、Discord 等平台分别编写机器人代码,只需配置适配器并将对话路由到共享的 LLM 管线。项目自我描述为 openclaw 的替代方案,面向希望自主掌控聊天机器人基础设施的开发者。

在 4.26.7 版本中,依赖清单揭示了广泛的集成范围。IM 连接方面集成了 python-telegram-bot、py-cord(Discord)、aiocqhttp 和 qq-botpy(QQ)、dingtalk-stream(钉钉)、lark-oapi(飞书/Lark)、slack-sdk(Slack)以及 wechatpy(微信)。LLM 方面打包了 OpenAI、Anthropic、Google GenAI(Gemini)和阿里云 DashScope 的官方 SDK。MCP(Model Context Protocol)支持通过 mcp>=1.8.0,<2 实现,可用于工具调用和 function-calling。

本趋势周期内项目获得 416 颗星,排名第 14 位。仓库采用 commitizen 强制的语义化提交、Ruff 代码质量检查,并通过自定义 Hatch 构建钩子在打包时构建 Vue.js 仪表盘。

解决什么问题

  • 将聊天机器人接入多个 IM 平台通常需要为每个平台的 API 单独编写 SDK 集成、部署流程和消息格式化逻辑。
  • 将这些消息路由到不同的 LLM 供应商(OpenAI、Anthropic、Google、通过 Xinference 的本地模型)还需要额外一层适配代码,大多数开发者不愿从头维护。
  • 运行带工具调用能力的 AI Agent 通常需要手动搭建 MCP 或 function-calling 基础设施,对没有 Agent 开发经验的人来说门槛较高。
  • 中文 RAG 管线需要正确的分词(jieba)和混合检索(BM25 + 向量),这在以英语为中心的 LLM 框架中经常缺失。

工作原理

  1. 通过 Docker 部署(python:3.12-slim 基础镜像),或从源码直接使用 uv 作为包管理器运行。Docker 容器暴露端口 6185,启动命令为 `python main.py`。
  2. 通过仪表盘或配置文件配置 IM 平台适配器 — 每个平台(QQ、Telegram、Discord 等)的 SDK 依赖已在依赖树中安装。
  3. 使用各供应商的 API Key 配置一个或多个 LLM — 项目已打包 openai、anthropic、google-genai 和 dashscope SDK。
  4. IM 平台的消息流入框架管线,经过 RAG(faiss-cpu 和 rank-bm25)、MCP 工具调用和插件逻辑处理后返回响应。
  5. 内置的 Vue 仪表盘(通过自定义 Hatch 钩子构建,从 astrbot/dashboard/dist/ 提供服务)在端口 6185 提供 Web 管理界面。

集成范围:捆绑了哪些平台和大模型

  • IM 平台:aiocqhttp(QQ/OneBot)、qq-botpy 1.2.1(QQ 官方 API)、python-telegram-bot>=22.6(Telegram)、py-cord>=2.6.1(Discord)、dingtalk-stream>=0.22.1(钉钉)、lark-oapi>=1.4.15(飞书/Lark)、slack-sdk>=3.35.0(Slack)、wechatpy>=1.8.18(微信)。
  • LLM 供应商:openai>=1.78.0、anthropic>=0.51.0、google-genai>=1.56.0(Gemini)、dashscope>=1.23.2(阿里云)、xinference-client(本地/自托管模型)。
  • MCP:mcp>=1.8.0,<2,用于 Model Context Protocol 工具集成。
  • RAG:faiss-cpu>=1.14.3(向量检索)、rank-bm25>=0.2.2(BM25 词法检索)、jieba>=0.42.1(中文分词)、pypdf>=6.1.1 和 markitdown-no-magika(文档解析)。
  • 音频处理:pydub>=0.25.1、silk-python>=0.2.6、audioop-lts(Python 3.13+)、Dockerfile 中安装 ffmpeg。
  • CLI 入口点(pyproject.toml):`astrbot = astrbot.cli.__main__:cli`。

部署说明:Docker、依赖与运行时

  • Docker 基础镜像:python:3.12-slim,apt 安装 gcc、build-essential、ffmpeg、libavcodec-extra、ripgrep 和 Node.js LTS(用于仪表盘构建)。
  • 暴露端口 6185,启动命令为 `python main.py`。CI 流程中的冒烟测试检查 http://localhost:6185 的连通性。
  • 包管理使用 uv — Dockerfile 执行 `uv lock`、`uv export --format requirements.txt --frozen` 和 `uv pip install --system`。
  • Python 版本要求:pyproject.toml 声明 >=3.12,Docker 镜像中 .python-version 设为 3.12。
  • Docker 额外安装的包(不在 pyproject.toml 中):socksio、uv、pilk。
  • Vue 仪表盘不由 VCS 跟踪,通过自定义 Hatch 钩子(scripts/hatch_build.py)在打包时构建,产物放在 astrbot/dashboard/dist/**。

命令面:开发与 CI 命令

  • 代码质量:每次提交 PR 前运行 `ruff format .` 和 `ruff check .`。
  • 本地 CI 等效:`make pr-test-neo` 执行 uv sync(dev 组)、ruff format check、ruff check、Neo 相关关键测试以及 main.py 启动冒烟测试(检查 localhost:6185)。
  • 完整验证:`make pr-test-full` 运行包括仪表盘构建在内的完整测试套件。
  • 快速重复:`make pr-test-full-fast` 跳过依赖同步和仪表盘构建,适合迭代测试。
  • 提交风格:commitizen>=4.9.1 强制使用 fix:、feat:、docs:、style:、refactor:、test:、chore: 前缀。

谁适合关注

适合关注

  • 你需要同时在 QQ 和至少一个其他 IM 平台(Telegram、Discord 等)部署聊天机器人,并希望用一套代码搞定。
  • 你的场景涉及中文文档问答,需要 jieba 分词和 BM25+向量混合检索。
  • 你想在不同 LLM 供应商之间实验 MCP 工具调用模式,而不想为每个供应商单独编写工具调用代码。
  • 你接受 AGPL-3.0 许可证,且部署环境中有 Python 3.12+。

可以先跳过

  • 你需要专有或闭源产品 — AGPL-3.0-or-later 要求将作为网络服务部署的修改版本源码向用户公开。
  • 你只需要单平台机器人(如仅 Discord)— 框架的价值在于多平台整合。
  • 你的基础设施运行 Python 3.11 或更早版本 — pyproject.toml 最低要求为 Python 3.12。
  • 你需要即开即用的托管 SaaS,不想做任何自托管。

风险与注意事项

AGPL-3.0 copyleft、Python 3.12+ 硬性要求和超过 60 个包的依赖树,对商业或受限制环境构成中等采纳阻力。

  • AGPL-3.0-or-later 许可证要求作为网络服务运行的修改版本向其用户公开源码 — 比 MIT 或 Apache-2.0 更严格。
  • pyproject.toml 声明需要 Python >=3.12,可能与运行旧版 Python 的现有基础设施冲突。
  • 依赖列表涵盖 60 多个包,横跨 IM SDK、LLM SDK 和基础设施库,增加了供应链和兼容性风险。
  • 项目捆绑了平台相关的二进制包(silk-python、audioop-lts、faiss-cpu),可能需要编译或特定操作系统支持。
  • 仪表盘在打包时通过自定义 Hatch 钩子构建,需要 Node.js LTS,对非 Docker 部署增加了构建复杂度。
  • 许可证为 GNU AGPL v3(AGPL-3.0-or-later)— 网络使用 copyleft 适用,部署前请审查与你的分发模式的兼容性。
  • Dockerfile 从 deb.nodesource.com 安装 Node.js LTS 用于仪表盘构建,使容器镜像包含第二个运行时。
  • LLM 供应商和 IM 平台的 API Key 存储在配置中;请审查你部署中的密钥管理方式。
  • 框架包含 cryptography>=44.0.3、pyjwt>=2.10.1 和 pyotp>=2.9.0,表明内置了加密、JWT 和 TOTP 认证支持。
  • Docker 镜像以 root 用户运行(Dockerfile 中无 USER 指令)— 生产环境建议添加非 root 用户。

替代方案比较

方案适用场景代价
LangChain
你需要通用的 LLM 应用框架,不需要内置 IM 平台适配器。MIT 许可
NoneBot2
你主要面向 QQ,想要成熟的 Python 机器人框架,不需要捆绑的 LLM 功能。MIT 许可
Dify
你希望通过可视化拖拽构建 AI 应用,偏好 Web UI 而非代码优先框架。Apache-2.0 附带额外企业条款
商业聊天机器人平台(供应商托管机器人)
你不想管理基础设施,愿意按消息量或席位数付费。订阅或按量计费

这个趋势说明了什么

面向中国企业 IM 的 MCP 工具

AstrBot 的 MCP 支持(mcp>=1.8.0,<2)结合飞书和钉钉适配器形成了特定利基:通过中国企业通讯平台访问的 MCP 驱动 Agent,而当前大多数 MCP 工具面向英语开发者。

构建一个将中国企业 API(如飞书文档搜索)暴露为 MCP 工具的插件,在 AstrBot 插件社区中衡量采纳情况。

面向合规中文场景的自托管 RAG

内置的 jieba + BM25 + faiss-cpu 检索栈支持中文文档问答而无需将文档发送到境外 LLM API,这对受监管行业中不能跨境传输数据的机构有实际意义。

使用本地 Xinference 模型部署 AstrBot,对至少 500 篇中文文档语料测试检索质量。

下一步建议

通过 Docker 部署并接入一个 IM 平台

最快的验证路径是 Docker 镜像,其中捆绑了所有系统依赖(包括 ffmpeg、Node.js、ripgrep)。选择一个你已有凭证的 IM 平台和一个 LLM 供应商 API Key,测试端到端消息流程。

  1. 从仓库的 Dockerfile 拉取或构建 Docker 镜像(python:3.12-slim 基础,端口 6185)。
  2. 启动容器并在浏览器访问 http://localhost:6185 仪表盘。
  3. 在仪表盘中配置一个 IM 平台适配器(如通过 BotFather 获取 Telegram bot token)。
  4. 添加一个 LLM 供应商 API Key(如 OpenAI 或 DashScope),测试消息到 LLM 的路由。
  5. 从 IM 客户端发送测试消息,验证响应是否通过框架完成往返。

RepoDaily 判断

AstrBot 填补了一个真实空白:没有其他开源 Python 框架在一个自托管包中同时捆绑八个 IM 平台适配器、五个 LLM 供应商 SDK、MCP 工具支持和中文 RAG 能力。AGPL-3.0 许可证和 Python 3.12+ 要求是主要摩擦点。对于构建跨平台 AI 助手 — 尤其是在中文市场的开发者 — 值得花时间实际部署试用。

信息来源