Skip to content

Telegram AI assistant based on LangGraph, supporting long-term memory, web search, in-depth research, and multi-user permission management

Notifications You must be signed in to change notification settings

itsmorninghao/TELEPAL

Repository files navigation

TelePal

基于 LangGraph 的 Telegram AI 助手,支持长期记忆、网络搜索、深度研究和多用户权限管理。

功能特性

  • AI 对话 - 基于 OpenAI 兼容 API,支持上下文记忆
  • Supervisor 架构 - 采用 LangGraph Supervisor 模式,智能调度工具调用
  • 深度思考/研究 - 支持异步深度研究和分析任务,自动生成研究报告
  • 长期记忆 - 使用向量数据库存储用户偏好和重要信息
  • 网络搜索 - 集成 Tavily Search,获取实时信息
  • 网页抓取 - 抓取并解析网页内容
  • 定时任务/提醒 - 支持自然语言创建定时提醒,系统重启后自动恢复
  • 多时区支持 - 基于用户位置自动识别时区,支持跨时区任务调度
  • 权限管理 - 超管、群管、白名单三级权限体系
  • 群组支持 - 支持私聊和群组,群组需 @ 或回复触发

技术栈

快速开始

环境要求

  • Python >= 3.11
  • PostgreSQL >= 14
  • uv 包管理器(推荐)

安装

# 克隆项目
git clone https://github.com/itsmorninghao/TelePal.git
cd TelePal

# 安装依赖
uv sync

创建 Telegram Bot

  1. 在 Telegram 中搜索 @BotFather 并打开对话
  2. 发送 /newbot 命令
  3. 按提示输入机器人名称(显示名)和用户名(以 _bot 结尾)
  4. 创建成功后会收到 Bot Token,格式如 123456789:ABCdefGHIjklMNOpqrsTUVwxyz

配置

# 复制配置文件
cp .env.example .env

# 编辑配置
vim .env

必填配置项:

  • TELEGRAM_BOT_TOKEN - 上一步获取的 Bot Token
  • POSTGRES_* - 数据库连接信息
  • OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL - LLM 配置
  • EMBEDDING_* - 嵌入模型配置(用于长期记忆)
  • INITIAL_SUPER_ADMINS - 初始超管的 Telegram User ID

可选配置:

  • TAVILY_API_KEY - 启用网络搜索功能

部署

方式一:一键部署所有服务

使用 Docker Compose 一键部署所有服务(包括 PostgreSQL 和 Ollama):

# 进入 docker 目录
cd docker

# 启动所有服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

方式二:单独启动应用服务

如果 PostgreSQL 和 Ollama 服务已经通过其他方式部署,可以单独启动应用服务(默认使用 host 网络模式):

# 进入 docker 目录
cd docker

# 使用 docker-compose.app.yml 单独启动应用
docker-compose -f docker-compose.app.yml up -d

# 查看日志
docker-compose -f docker-compose.app.yml logs -f

# 停止服务
docker-compose -f docker-compose.app.yml down

注意:默认使用 host 网络模式,应用可以通过 localhost 访问主机上的服务。如果需要连接到 Docker 网络中的服务,请参考 docker/README.md 中的配置说明。

详细说明请参考 docker/README.md

方式三:本地运行

如果不想使用 Docker,可以在本地直接运行应用:

# 使用启动脚本
./bot.sh start

# 查看状态
./bot.sh status

# 查看日志
./bot.sh logs

# 停止
./bot.sh stop

或直接运行:

uv run python main.py

命令列表

超管命令(仅私聊)

命令 说明
/group_authorize <chat_id> 授权群组
/group_revoke <chat_id> 撤销群组授权
/group_list 查看已授权群组
/permission_set <user_id> <role> 设置用户权限

管理命令(私聊和群组)

命令 说明
/whitelist_add <user_id> [type] [chat_id] 添加白名单
/whitelist_remove <user_id> [type] [chat_id] 移除白名单
/whitelist_list [type] [chat_id] 查看白名单

普通命令

命令 说明
/memory_list [user_id] [query] 查看长期记忆(超管可指定用户)
/memory_delete [user_id] <key> 删除记忆(超管可指定用户)
/set_location 设置位置信息以获取时区(仅私聊)
/help 显示可用命令列表(根据身份动态显示)

项目结构

省略部分文件,只保留了核心目录结构展示

TelePal/
├── main.py              # 入口
├── bot.sh               # 启动脚本
├── .env.example         # 配置模板
├── src/
│   ├── agent/           # LangGraph Agent
│   │   ├── graph.py     # Graph 定义
│   │   ├── state.py     # 状态定义
│   │   ├── graphs/      # Graph 实现
│   │   │   ├── supervisor.py  # Supervisor 主图
│   │   │   └── deep_think.py  # 深度思考图
│   │   ├── prompts/     # 系统提示词模板
│   │   └── tools/       # Agent 工具
│   ├── auth/            # 权限系统
│   │   ├── models.py    # 领域模型(dataclass)
│   │   └── service.py   # 权限检查服务
│   ├── bot/             # Telegram Bot
│   ├── database/        # 数据库模块
│   │   ├── engine.py    # SQLAlchemy 异步引擎
│   │   ├── langgraph_pool.py  # LangGraph 连接池
│   │   ├── models.py    # ORM 模型
│   │   ├── init_db.py   # 数据库初始化
│   │   ├── langgraph/   # LangGraph 存储
│   │   └── repositories/  # 数据访问层
│   └── utils/
│       ├── logger.py
│       ├── settings.py
│       └── langchain_utils.py
├── data/                # 数据目录
├── docs/                # 文档目录
├── docker/             # Docker 配置
│   ├── docker-compose.yml
│   ├── docker-compose.app.yml
│   ├── Dockerfile
│   ├── init-db.sql
│   └── README.md
└── logs/                # 日志目录

开发计划

  • 让模型能够感知时间,兼容多时区
  • 基于自然语言的生成/执行定时任务
  • 采用 supervisor 的架构形式
  • 深度思考/研究功能(异步任务)
  • 在群聊中能够识别出不同的人,而不是把所有人当成同一个人
  • 可能会做多会话管理,正在考虑是否需要这样的功能
  • 可能会考虑对 SQLite 的支持以简化部署

Star History

Star History Chart

License

MIT

About

Telegram AI assistant based on LangGraph, supporting long-term memory, web search, in-depth research, and multi-user permission management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published