跳转到正文

AI能力增强 - 实施总结 ​

📋 实施概述 ​

本次更新实现了基于历史总结的智能问答系统,允许用户通过自然语言查询频道历史内容。

实施日期: 2026年2月14日 版本: v2.0.0 状态: ✅ 已完成


🎯 实现目标 ​

核心功能 ​

✅ 上下文记忆 - 记住频道特点,生成更精准的总结 ✅ 基于历史总结的问答系统 - 智能检索和回答 ✅ 自然语言查询 - 支持"询问频道上周发生了什么?"等自然问题 ✅ 频道画像 - 自动提取和存储频道特征 ✅ 配额管理 - 防止滥用的使用限制


🏗️ 技术架构 ​

系统设计 ​

采用独立Bot架构,问答Bot与主Bot分离,共享数据库:

┌─────────────────────────────────────────────────────┐
│  主Bot(main.py)                                     │
│  - 频道监控和总结                                      │
│  - 投票功能                                          │
│  - 管理员命令                                         │
└──────────┬──────────────────────────────────────────┘
           │
           │ 共享数据库(MySQL)
           │   - summaries(总结记录)
           │   - usage_quota(配额管理)
           │   - channel_profiles(频道画像)
           │
           ↓
┌─────────────────────────────────────────────────────┐
│  问答Bot(qa_bot.py)                                 │
│  - 自然语言对话接口                                    │
│  - 意图解析器                                         │
│  - 记忆管理器                                         │
│  - 问答引擎                                           │
│  - 配额管理器                                         │
└─────────────────────────────────────────────────────┘

技术选型 ​

组件技术方案说明
数据存储MySQL + aiomysql支持跨进程队列、连接池和并发读写
检索方式SQL + 关键词检索简单高效,易于维护
意图识别规则引擎基于关键词和时间模式
元数据提取AI (LLM)自动提取关键词、主题、情感
配额管理数据库计数每日自动重置

📦 新增文件 ​

核心模块 ​

  1. core/quota_manager.py - 配额管理器

    • 用户配额检查和管理
    • 每日总限额控制
    • 管理员豁免机制
  2. core/intent_parser.py - 意图解析器

    • 自然语言意图识别
    • 时间范围提取
    • 关键词和主题提取
  3. core/memory_manager.py - 记忆管理器

    • 频道画像管理
    • 元数据提取(关键词、主题、情感)
    • 智能搜索功能
  4. core/qa_engine.py - 问答引擎

    • 查询处理主流程
    • AI生成回答
    • 降级方案
  5. qa_bot.py - 问答Bot入口

    • Telegram Bot接口
    • 消息处理逻辑
    • 配额集成

文档 ​

  • wiki/QA_BOT_GUIDE.md - 问答Bot使用指南
  • wiki/QA_BOT_IMPLEMENTATION.md - 本文档

🔄 修改文件 ​

1. core/database.py ​

变更内容:

a) 启用WAL模式 ​

python
cursor.execute("PRAGMA journal_mode=WAL")
cursor.execute("PRAGMA synchronous=NORMAL")
cursor.execute("PRAGMA busy_timeout=5000")

b) 扩展summaries表 ​

sql
ALTER TABLE summaries ADD COLUMN keywords TEXT;
ALTER TABLE summaries ADD COLUMN topics TEXT;
ALTER TABLE summaries ADD COLUMN sentiment TEXT;
ALTER TABLE summaries ADD COLUMN entities TEXT;

c) 新增usage_quota表 ​

sql
CREATE TABLE IF NOT EXISTS usage_quota (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER NOT NULL,
    query_date TEXT NOT NULL,
    usage_count INTEGER DEFAULT 0,
    last_reset TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(user_id, query_date)
);

d) 新增channel_profiles表 ​

sql
CREATE TABLE IF NOT EXISTS channel_profiles (
    channel_id TEXT PRIMARY KEY,
    channel_name TEXT,
    style TEXT DEFAULT 'neutral',
    topics TEXT,
    keywords_freq TEXT,
    tone TEXT,
    avg_message_length REAL DEFAULT 0,
    total_summaries INTEGER DEFAULT 0,
    last_updated TEXT DEFAULT CURRENT_TIMESTAMP
);

e) 新增方法 ​

  • get_quota_usage() - 获取配额使用情况
  • check_and_increment_quota() - 检查并增加配额
  • get_total_daily_usage() - 获取总使用次数
  • get_channel_profile() - 获取频道画像
  • update_channel_profile() - 更新频道画像
  • update_summary_metadata() - 更新总结元数据

2. data/.env.example ​

新增配置:

env
# ===== 问答Bot配置 =====
QA_BOT_TOKEN=your_qa_bot_token_here
QA_BOT_ENABLED=True
QA_BOT_USER_LIMIT=3
QA_BOT_DAILY_LIMIT=200

🎨 功能特性 ​

1. 自然语言查询 ​

支持的查询类型:

  • 总结查询: "上周发生了什么?"
  • 关键词搜索: "关于GPT-4的讨论"
  • 主题查询: "有什么技术讨论?"
  • 统计查询: "系统有多少条总结?"
  • 状态查询: "我的配额还剩多少?"

2. 智能意图识别 ​

识别能力:

  • 时间范围(今天、昨天、本周、上周、最近N天等)
  • 关键词(AI、GPT、Python等)
  • 主题(技术、新闻、讨论等)
  • 查询类型(总结、统计、状态等)

3. 频道画像 ​

画像维度:

  • 风格 (style): tech/casual/neutral
  • 主题 (topics): 常讨论的主题列表
  • 关键词频率 (keywords_freq): 关键词出现频率
  • 情感倾向 (tone): positive/neutral/negative
  • 平均消息长度: 统计数据
  • 总结总数: 统计数据

4. 配额管理 ​

配额规则:

  • 普通用户: 每日3次
  • 管理员: 无限制
  • 系统总限额: 每日200次
  • 自动重置: 每日00:00 (UTC)

🚀 部署指南 ​

自动启动 ​

重要更新:main.py 已集成自动启动问答Bot功能!

启动 main.py 时会自动:

  1. 检查 QA_BOT_ENABLED 配置
  2. 检查 QA_BOT_TOKEN 是否配置
  3. 在后台自动启动问答Bot进程
  4. 主Bot退出时自动停止问答Bot

环境变量:

env
# 问答Bot会随main.py自动启动
QA_BOT_ENABLED=True  # True=自动启动,False=禁用
QA_BOT_TOKEN=your_qa_bot_token_here

无需手动操作:

bash
# 只需启动主Bot即可
python main.py

# 或使用Docker
docker-compose up main_bot

1. 创建问答Bot ​

bash
# 在Telegram中访问 @BotFather
/newbot
# 按提示创建新Bot,获取Token

2. 配置环境变量 ​

编辑 data/.env:

env
QA_BOT_TOKEN=your_qa_bot_token_here
QA_BOT_ENABLED=True
QA_BOT_USER_LIMIT=3
QA_BOT_DAILY_LIMIT=200

3. 启动服务 ​

方式1:独立运行

bash
python qa_bot.py

方式2:Docker部署

yaml
# 添加到docker-compose.yml
services:
  qa_bot:
    build: .
    command: python qa_bot.py
    environment:
      - QA_BOT_TOKEN=${QA_BOT_TOKEN}
      - QA_BOT_ENABLED=${QA_BOT_ENABLED:-True}
      - QA_BOT_USER_LIMIT=${QA_BOT_USER_LIMIT:-3}
      - QA_BOT_DAILY_LIMIT=${QA_BOT_DAILY_LIMIT:-200}
    volumes:
      - ./data:/app/data
    restart: unless-stopped
bash
docker-compose up -d qa_bot

4. 验证部署 ​

在Telegram中向问答Bot发送 /start 命令,应该收到欢迎消息。


📊 性能指标 ​

预期性能 ​

  • 查询响应时间: 2-5秒(包含AI生成)
  • 并发支持: 10+ 并发查询(WAL模式)
  • 数据库大小: 预计每月增长10-50MB
  • AI成本: 每次查询约100-500 tokens

优化措施 ​

  1. 数据库优化

    • WAL模式支持并发
    • 关键字段索引
    • 查询结果缓存
  2. AI优化

    • 精简提示词
    • 温度控制(0.7)
    • 降级方案
  3. 配额控制

    • 防止滥用
    • 成本可控
    • 自动重置

🧪 测试建议 ​

功能测试 ​

bash
# 1. 基础查询测试
"上周发生了什么?"
"最近有什么关于AI的讨论?"
"今天的更新"

# 2. 配额测试
/status  # 查看配额
# 连续查询直到配额用尽

# 3. 错误处理测试
# 测试无结果查询
# 测试AI失败降级

性能测试 ​

bash
# 1. 并发测试
# 同时发送10个查询

# 2. 长时间运行
# 运行24小时,监控稳定性

# 3. 数据库压力
# 插入1000条总结,测试查询性能

📝 使用说明 ​

用户端 ​

  1. 启动对话

    /start
  2. 开始提问

    频道上周发生了什么?
  3. 查看配额

    /status

管理员端 ​

  1. 查看系统状态

    系统统计
  2. 调整配额

    • 修改 data/.env 中的配置
    • 重启Bot生效
  3. 监控日志

    bash
    docker-compose logs -f qa_bot

🐛 已知问题 ​

当前限制 ​

  1. 语义搜索

    • 当前使用关键词匹配
    • 不支持语义相似度搜索
    • 计划Phase 5引入向量数据库
  2. 多轮对话

    • 当前无上下文记忆
    • 每次查询独立处理
    • 计划Phase 5实现会话管理
  3. 数据迁移

    • 旧总结无元数据
    • 需要手动或自动提取
    • 新总结自动提取元数据

解决方案 ​

  • 短期: 使用关键词检索 + 降级方案
  • 中期: 优化提示词提高准确性
  • 长期: 引入向量数据库实现语义搜索

🚧 未来规划 ​

Phase 5: 高级特性 ​

  • [ ] 向量数据库集成

    • ChromaDB / FAISS
    • 语义搜索
    • 相似度排序
  • [ ] 多轮对话支持

    • 会话上下文记忆
    • 跟进问题
    • 上下文引用
  • [ ] 个性化推荐

    • 用户偏好学习
    • 智能推荐总结
    • 自定义查询模板
  • [ ] Web Dashboard

    • 可视化统计
    • 配额管理界面
    • 查询历史
  • [ ] API接口

    • RESTful API
    • Webhook支持
    • 第三方集成

📞 技术支持 ​

文档资源 ​

问题反馈 ​


✅ 总结 ​

本次更新成功实现了基于历史总结的智能问答系统,具有以下特点:

优势 ​

✅ 独立架构 - 不影响主Bot运行 ✅ 简单高效 - SQL + 关键词检索 ✅ 易于维护 - 代码结构清晰 ✅ 成本可控 - 配额管理防止滥用 ✅ 扩展性强 - 为Phase 5预留接口

建议 ​

  1. 监控运行 - 定期检查日志和性能
  2. 收集反馈 - 了解用户真实需求
  3. 迭代优化 - 根据使用数据优化
  4. 文档更新 - 及时更新使用文档

实施完成日期: 2026-02-14 文档版本: v1.0 作者: Sakura520222


🌸 Sakura-Bot

让频道管理更智能 · 让信息查询更便捷

⭐ Star · 🍴 Fork · 📖 文档

基于 AGPL-3.0 许可证发布