Releases: xiaoyaya191/bilibili_learning_bot
Release list
v3.1.5 Beta / 内测版
v3.1.5 Beta / 内测版\n\n本 Release 同时包含 Web 端和 Android Jetpack Compose 工程。\n\nAndroid 附件:\n- BiliLearn-Android-v3.1.5-beta-source.zip:清理后的 Android 源码(不含签名密钥、本机路径和构建缓存)\n- BiliLearn-release.apk:Release 安装包\n- BiliLearn-debug.apk:测试安装包\n- SHA256SUMS.txt:APK 校验值\n\nAndroid 工程使用 Gradle Wrapper,compileSdk/targetSdk 35。手机端 ASR 显示暂不支持,其他功能依赖 B 站账号和 AI 服务配置。
v3.1.4
v3.1.3
v3.1.2大更新
BiliLearn v3.1.2 更新总结
🐛 Bug 修复
- 人格保存失败"不存在" — 面板未重启导致的旧代码残留问题
- AI 429 限流雪崩 — 新增全局 60 秒冷却机制,3 次失败后优雅放弃,不再无限重试拖垮整个系统
- 评论 12006"没有该评论" — rpid 路由逻辑修复,优先使用真实评论 ID(source_id),不再误用分类编号(business_id),加了
> 100阈值区分 - 导出缺少 Cookie — 修复了两个导出相关的真实 bug
- 思维导图加载失败 — jsdelivr CDN 国内不可达,改为内联资源 + 本地回退
- 备份恢复不认 .zip — api_import 只接受 .json,现在 .zip 也能识别
- EXE 窗口崩溃 — stdout=None 导致 print 异常,加了
_safe_flush()保护 - 高分视频不给三连 — 新增 ≥ 8.0 分保底机制,AI 明确想互动就直接执行,跳过随机骰子
✨ 功能增强
- 观看历史封面补全 —
add_history_video新增pic参数,新视频自动带封面;点赞/收藏调用处传递pic_url - 批量重新获取资料 — 自动补全逻辑修复:切换筛选/刷新时清空尝试记录,允许重试之前失败的封面
- 知识辅导封面优化 — 封面获取增加
history.pic回退,和观看历史逻辑一致 - Agent 上下文增强 — PrivateContextDB 新增 5 个方法:对话摘要、上下文压缩、关键信息提取
- Web UI 性能优化 — 7 个重页面加了 loading 动画(评论、观看历史、收藏夹、知识库、思维导图、UP关注、审核记录),API 分页缩小(评论 30、观看历史 30、审核 50)
🧪 测试 & 工程
- 测试套件 319 passed — 全部通过
- 项目清理打包 — 从 418 MB 清理到 8.8 MB 纯净源码,EXE 发布包 96 MB
- 数据目录统一 — 用户数据统一放
%LOCALAPPDATA%\BiliLearn,旧数据已清理
v3.0.2
bilibili_learning_bot v3.0.1
v3.0.1 — 紧急修复 + 视频下载/抽帧功能增强 + 多项Bug修复
🩹 紧急修复(2026-07-02)
- 修复
_mask_urlsNameError:brain/_brain_ai.py、brain/_brain_interact.py、brain/_brain_loop.py中补充显式导入from utils.helpers import _mask_urls,解决因 Pythonimport *不导出下划线前缀函数导致的崩溃
🎬 视频下载:DASH 音视频分离 + ffmpeg 合并
问题:下载的视频没有声音。原代码使用 fnval=0 (FLV模式) + qn=32 (480P) 单流下载,新 B站视频的 FLV 流不含音频轨道。
方案A:DASH 模式(fnval=4048, qn=127)获取分离的视频流+音频流 → 分别下载 .m4s → ffmpeg 合并为 mp4(-c:v copy -c:a aac -b:a 192k)
方案B:FLV 回退(无 ffmpeg 时)
使用 WBI 签名 + x/player/wbi/playurl 端点,超时 90s → 180s。
涉及文件:xingye_bot/video_modes.py、brain/_brain_video.py、utils/helpers.py、README.md
🎞️ 抽帧功能修复
3 个 Bug 修复:
| # | Bug | 文件 | 影响 |
|---|---|---|---|
| 1 | 缺少 from pathlib import Path |
utils/helpers.py |
find_ffprobe() 调用时 NameError 崩溃 |
| 2 | fps + -frames:v 组合冲突 |
xingye_bot/video_modes.py |
-frames:v 无法增加 fps filter 已决定的帧数,帧数经常不足 |
| 3 | ffmpeg 静默失败 | brain/_brain_video.py |
capture_output=True 无 check=True,失败没有任何日志 |
核心改动:
extract_frames():移除-frames:v,改为fps={frame_count}/{duration}精确计算帧率 +-vsync vfrprobe_duration():ffprobe 不可用时 fallback 到 ffmpeg stderr 解析Duration: HH:MM:SS.ms_extract_and_analyze_frames():同样的 fps 精确计算 + ffmpeg 返回码检查 + 错误/空帧日志
⚠️ 注意事项
- 视频下载需要安装 ffmpeg(
winget install ffmpeg或brew install ffmpeg) - 不是
pip install ffmpeg!
bilibili_learning_bot v3.0.0
bilibili_learning_bot v3.0.0 更新日志
v3.0.0 - 架构重构 + 新功能 + Bug修复
🏗️ 架构重构
• 16.8K 行单体 new_agent.py → 4 行入口 start_cli.py + 24 个职责清晰的模块文件
• 新增 main.py 主入口,统一 CLI 和 Web 面板启动
• 拆分为 api/ / brain/ / knowledge/ / persona/ / security/ / services/ / utils/ / xingye_bot/
• 删除重复代码(interaction_service.py 17K 行)、死代码
• 统一配置系统,密码 SHA-256 哈希存储
• 网页界面优化
🆕 新增功能
🔔 @通知响应:在任何视频下评论"@bot 总结这个视频",bot 自动识别所在视频并总结回复
• 通过 B站 x/msg/at API 拉取 @我通知
• 无需手动提供 BV 号,从评论上下文自动提取
• 双模式支持:通知模式 + legacy 模式
📡 实时监听模式:独立于视频刷取的消息监听引擎
• 只盯私信和评论,有新消息立刻 AI 回复,不刷视频、不消耗精力
• Web面板新增「📡 实时监听」页面
🎨 视频→网页 + Claude 设计系统:将已学视频生成精美 PPT 风格 HTML
• 毛玻璃卡片 + 数字滚动动画(easeOutExpo 缓动)
• templates/claude/ 含 6 个参考页面 + AI 设计规范
🌐 Web面板UI全面重设计:毛玻璃效果、渐变按钮、动画过渡、响应式布局
🛡️ 安全审查:关键词过滤 + 政治敏感拦截 + 提示词注入防护
🔄 备用API降级:主 API 连续失败自动切换备用提供商,10分钟后自动恢复
📤 隐私导出:一键导出配置,API Key/Cookie 脱敏保护
🔧 Bug 修复
• 按 Q 切换快速模式时 bili.throttle 引用错误崩溃
• 主循环 _safe_task_callback 未定义崩溃
• 评论/私信节奏控制静默失效(缺少 datetime 导入)
• _reload_all_globals 遗漏 AI_MARKER 全局变量
• asyncio.gather 无 return_exceptions=True 导致并发异常
• 13 处 JSON 写入改为 tmp+replace 原子操作
• Flask session 密钥持久化
• 字幕获取 player/wbi/v2 412 风控修复:快速 fallback 到 player/v2 获取 AI 字幕
• V 命令字幕检测修复:改用 player/wbi/v2 + WBI 签名,正确识别 AI 字幕
• Cookie 扫描增强:V 命令自动扫描多个兄弟项目目录加载登录 cookie
• 未登录字幕提示:明确提示「部分视频需登录账号获取 AI 字幕」
• W 命令保存路径:默认改为项目根目录 web/ 文件夹
🔒 隐私数据全局扫描 + 恢复出厂设置完善
• 全局扫描:发现并修补 10 个遗漏的隐私文件
• R 命令简化:从 5 个 y/N 子问题 → 一键 YES 清空全部
• 安全性验证:所有被删除文件均自动重建或带 fallback 兜底
📁 新增文件
• main.py — 主入口
• brain/standby.py — 待机监听引擎 v2
• brain/monitor.py — 实时监听引擎
• services/video_to_ppt.py — 视频→HTML 网页生成
• services/agent_service.py — Agent 技能执行
• services/knowledge_tutor.py — 知识辅导
• templates/claude/ — Claude 设计系统
• tests/ — 43 个 pytest 测试
• 监听模式与机器人主进程互斥
• 配置文件格式有变动,请参考 config.example.json
🩹 紧急修复 (2026-07-02)
• 修复 _mask_urls NameError:brain/_brain_ai.py、brain/_brain_interact.py、brain/_brain_loop.py 中补充显式导入 from utils.helpers import _mask_urls,解决因 Python import * 不导出下划线前缀函数导致的崩溃
bilibili_learning_bot v2.2.1
🏗️ 模块化重构
- 新增
core/、services/、adapters/模块目录 - 拆出 10+ 独立模块(config、managers、reply_safety、utils 等)
🔒 安全增强
- CSRF 修复
- Web 面板安全加固
🐳 部署
- Docker 部署支持
start.sh一键启动脚本
🧹 清理
- 移除旧备份文件
- 更新
.gitignore
bilibili_learning_bot v2.2.0
🔧 行为优化
- 字幕校验不再兜底返回不匹配内容
- 移除 8 轮外层重试及
best_fallback_text收集机制 - 字幕轨与视频标题不匹配时,逐轨尝试,全部失败则直接返回
False跳过视频 - 不再将
[极低置信度字幕-8轮重试均失败]喂给 AI 学习 - 节省了大量无效的 API 请求和 AI token 消耗
- 内层重试次数优化: 字幕列表获取从 10 次降为 5 次
⚠️ 已知局限性
字幕与视频内容可能不匹配 — B站字幕由 ASR(语音识别)自动生成,部分视频的字幕文本可能存在识别错误、时序错乱或与画面实际内容有偏差。bot 依赖字幕理解视频,若字幕不准会影响 AI 评分和知识库质量。v2.2.0 已移除兜底机制使不匹配字幕直接跳过,但无法根本解决 ASR 质量问题。
📦 模块补全(services/ 迁移)
从 new_agent.py 内联版迁移到 services/ 统一管理:
MoodManager.shift(reason, delta)— 根据事件偏移心情值UserProfileManager.update_impression(user_id, name, impression)— 记录用户印象ReplySafetyGuard.find_hits(text)/review()/review_video_for_comment()— 敏感词审查
🌟 项目完整功能
🖥️ Web 控制台
python3 web_panel.py → 浏览器打开 http://127.0.0.1:8080
| 面板 | 功能 |
|---|---|
| 📊 仪表盘 | 实时统计卡片 + 评论活跃度趋势图 + 心情/精力曲线 + 每日操作统计图 + 视频处理速率图 |
| 🎮 机器人控制 | 启动/停止/重启机器人大脑,实时输出日志流 |
| 🔑 B站登录 | 网页生成二维码 → 手机扫码登录,支持登出和状态检查 |
| ⚙️ 配置编辑 | JSON 编辑器直接修改 config.json |
| 🎭 人格管理 | 创建/切换/删除 AI 对话人格(毒舌/温柔/学术...) |
| 💡 心情管理 | 快速切换心情、随机心情间隔、自定义心情文字 |
| ⚡ 行为设置 | AI免责声明开关、精力恢复参数、评论真实/模拟模式、敏感词黑名单 |
| 💬 评论日志 | 浏览所有评论互动历史,查看AI回复 |
| 👤 用户画像 | 每个互动用户的好感度和印象标签 |
| 🧠 记忆知识库 | 浏览bot的长期记忆和知识库内容 |
| 📖 日记进化 | 阅读AI写的日记和自我进化记录 |
| 📋 操作日志 | 按时间线查看所有操作 |
| 🎓 知识辅导 | Web端选知识文件 → AI讲解/问答/二次创作/生成HTML网页 |
| 👥 UP主关注 | 查看AI已关注的UP主列表 |
| 🔧 功能中心 | 手动视频分析、手动发送弹幕、Agent技能、知识库整理/复习/统计、ASR设置 |
| 💾 系统管理 | 导出/导入配置、恢复出厂设置、登录鉴权 |
⌨️ 命令行菜单
python new_agent.py → 交互式主菜单,20+ 热键操作:
| 键 | 功能 |
|---|---|
| 1 | [START] 启动机器人 |
| 2 | ⚙️ 配置 AI 参数(API/模型/提示词/并发/Token/备用API/随机数/会话限制) |
| 3 | 🔑 配置登录(扫码登录 / Cookie管理) |
| 4 | 📚 管理知识库(浏览/搜索/统计/复习/重命名/辅导入口) |
| 5 | [TARGET] 管理兴趣爱好 |
| 6 | [MSG] 评论互动设置(模式/概率/上限/冷却/情感图片分析) |
| 7 | 📩 私信设置(开关/自动回复/上下文/频率/通用回复) |
| 8 | 🧬 日记/自我进化(写日记/查看/触发进化/开关/阈值) |
| 9 | 🛠️ Agent技能(定目标→搜索→看→写总结 / 历史记录) |
| F | [*] UP主关注/弹幕(关注概率/上限/弹幕概率/发送/点赞频率) |
| G | [ASR] ASR语音识别(开关/后端Whisper或FunASR) |
| M | 😊 AI心情管理(随机/自定义/间隔) |
| D | [GOLD] 干货归档(高分→highlights/) |
| V | 📹 手动视频分析(BV号/链接/标题→AI解析评分) |
| K | 🔄 知识库重温(选已学视频→重看或优化笔记) |
| T | 🎓 知识辅导(讲解/问答/二次创作/生成HTML网页) |
| O | 📂 一键整理知识库(AI自动归类) |
| E | 📤 导出配置 |
| I | 📥 导入配置 |
| R | 🔄 恢复出厂设置 |
| S | 🛡️ 关键词审查开关 |
🎓 AI 知识辅导
选知识文件 → AI 讲解/问答/二次创作/生成HTML网页 — AI会写出完整的 .html 网页用卡片、代码块、流程图展示知识点,可直接浏览器打开或分享。
🤖 Agent 技能系统
给AI自然语言目标:「搜深度学习入门,看前3个视频,总结核心概念」→ AI自主 search_bilibili_videos → watch_bilibili_videos → write_diary/write_memory。支持深度搜索和自动触发。