SirChatalot
sazonovanton/SirChatalot加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
"你不需要拥有一具肉体,才能拥有独特的个性。"
想象一下这个场景:深夜,你躺在床上用手机给 Telegram 机器人发了条消息:"帮我总结一下这周科技圈发生了什么大事。"几秒钟后,机器人不仅帮你搜到了最新资讯,还贴心地标注了重点,甚至反问你:"要不要我帮你把这些存到笔记里?下次直接问我就行。"
这就是 SirChatalot——一个不满足于"一问一答"的传统聊天机器人,它具备主动工具调用能力、多模型切换、文件记忆和MCP扩展,是 Telegram 平台上最接近"AI Agent"体验的开源项目之一。
2024年,AI浪潮席卷开发社区,但大多数 Telegram AI 机器人还停留在"接了GPT API的玩具"阶段——每次对话独立无记忆、无法调用工具、不支持多模型切换。
开发者 sazonovanton 决定改变这一现状。他从自己的痛点出发:日常工作中需要频繁查阅文档、搜索资料、生成图片,而这些操作分散在不同的应用之间。如果有一个统一的 Telegram 入口,可以调用 AI 能力完成这一切呢?
SirChatalot 由此诞生。项目基于 python-telegram-bot v21+ 构建,选择 Telegram 作为前端是因为其天然的即时性、群组支持和媒体处理能力。短短时间内,项目获得了 72 颗 GitHub Stars,并被超过 10 个相关技术 topics 标记为 AI Agent 领域的代表项目。
这是 SirChatalot 与普通聊天机器人的本质区别。它不是简单地发送 prompt、接收回复,而是让 AI 模型自主决定是否调用工具、调用哪些工具,并支持多轮工具迭代。
例如,当你问"帮我查一下这篇论文的核心观点"时,机器人会:
每个工具调用都会在 Telegram 聊天中显示实时状态("🔍 正在搜索网页…"),用户能清晰感知 AI 在做什么。
SirChatalot 内置了 Model Context Protocol(MCP)客户端,这是 Anthropic 主导的 AI 工具标准协议。通过在配置文件中声明 MCP 服务器地址和类型(stdio 或 streamable-http),该服务器提供的所有工具都会自动注册到机器人的工具集中。
这意味着:理论上你可以连接任何 MCP 工具(如 GitHub API、Slack、数据库查询等),让 AI 通过 Telegram 操控一切。换句话说,Telegram 成了你的 AI Agent 控制台。
项目支持同时配置多个 OpenAI 兼容的 API 端点(OpenAI、OpenRouter、Ollama、vLLM、Anthropic、YandexGPT 等),用户可以随时通过 /model 命令切换模型。
更重要的是**容错链(Fallback Chain)**机制:当主模型响应超时、遇到 5xx 错误或触发速率限制时,机器人会自动按配置顺序切换到备选模型,用户完全无感知。这对于需要高可用性的生产环境至关重要。
用户可以上传 PDF、DOCX、PPTX、TXT 等格式的文档,SirChatalot 会自动提取文本内容,按语义分块存入 ChromaDB 向量数据库,后续问答时 AI 自动检索相关内容作为上下文。
这一功能让 Telegram 机器人真正成为了个人文档助手,上传一份合同让它帮你划重点、传一本手册让它教你用功能——不再只是通用问答。
除了对话历史,SirChatalot 还有一个持久化记忆模块——AI 会主动保存关于用户的重要事实(如姓名、偏好、项目信息等),这些记忆被注入到系统提示词中,实现跨对话的个性化服务。用户可以通过 /memory 命令查看和删除 AI 记住的内容,对隐私有完全的控制权。
/imagine 命令或自然语言触发,支持 OpenAI DALL-E 和 OpenRouter 上的图像生成模型核心模块解析:
| 模块 | 文件 | 职责 |
|---|---|---|
| Agent Loop | agent.py | 多轮工具调用循环,最多5轮迭代,实时状态推送,工具去重缓存 |
| LLM Engine | engine.py | OpenAI 兼容 API 封装,token 计数(tiktoken),成本估算 |
| Model Registry | model_registry.py | 多模型注册、切换、容错链执行 |
| Tool Registry | tools/*.py | 内置工具(网页搜索/URL抓取/图片生成/记忆/RAG)统一注册 |
| RAG | files/rag.py + embeddings.py | ChromaDB 向量存储与语义检索 |
| MCP Client | mcp_client.py | MCP 协议 stdio/streamable-http 客户端 |
| Memory | memory.py | 用户持久化记忆(SQLite + system prompt 注入) |
| Telegram Handlers | tg/handlers.py | 命令路由、媒体处理、认证/白名单 |
| Config | config.py | Pydantic 模型校验,运行时配置验证 |
架构采用事件驱动模式:python-telegram-bot 接收 Telegram 消息,通过 handlers.py 分发命令或普通消息,chat_manager.py 管理对话上下文,agent.py 驱动 Agent Loop 调用 LLM 和工具,工具结果通过 engine.py 汇总后回复用户。
Docker 方式(推荐):
git clone https://github.com/sazonovanton/SirChatalot.git
cd SirChatalot
cp config.yaml.example ./data/config.yaml
# 编辑 data/config.yaml 填入 TG token + LLM API key
docker compose up -d --build
配置文件 config.yaml 支持完整的 Pydantic 校验——启动时会验证所有字段,配置错误会给出清晰报错而非静默失败。未知字段直接拒绝,杜绝了"配置项写错了却不知道为什么没生效"的经典问题。
注意: 这不是一个 Web 应用,而是 Telegram 机器人,所以没有传统意义上的 Web-UI。交互完全通过 Telegram 界面完成。优点是任何有 Telegram 的人都能直接使用,缺点是重度依赖 Telegram 的网络可达性(国内使用需要代理)。
部署难度评价:简单。 Docker 化完整,依赖清晰(Python 3.12 + ffmpeg),配置文件有详细注释。
1. 隐私与数据安全
所有对话历史默认存储在本地 SQLite 数据库中,但通过 Telegram 传输意味着消息会经过 Telegram 服务器。对于企业级隐私敏感场景,这可能是个顾虑。项目文档中也提到用户哈希(而非明文 ID)被传递给 API。
2. GPL-3.0 许可证
项目采用 GPL-3.0 许可证,意味着如果基于此项目进行修改并分发,必须开源。对于商业闭源产品集成,需要注意许可证合规。
3. 国内可用性问题
Telegram 在国内网络不可直接访问,这意味着机器人的使用者和部署者都需要代理环境。FFmpeg 依赖、Python 环境在国内服务器上也可能需要额外配置镜像源。
4. 记忆系统的边界
当前记忆系统较为简单——AI 决定"记住什么",用户只能查看和删除。没有细粒度的记忆编辑或分类管理。在长对话场景下,记忆可能不够精准或过于冗余。
SirChatalot 代表了一种新兴趋势:用即时通讯平台作为 AI Agent 的前端交互层。相比网页界面,Telegram 有几个天然优势:
当前 Stars 72、Forks 13 的规模虽然不大,但其架构设计(模块化 MCP 支持、多模型容错、RAG 向量化)为更复杂的 Agent 系统提供了可参考的工程模板。随着 MCP 协议生态的成熟,类似项目有望成为 AI Agent 的"平民化入口"。