2cda2141707d811093c8f4d4cf501c202364f369
- Conversation 加 kind(book/assistant)、book_id 可空;SQLite 老表迁移保留数据 - rag/engine.py: search_all_books 跨书混合检索;citations 带 book_title 出处 - app/assistant/service.py: 知识库概览 + 第二大脑 persona + 原生工具 (bm_list_conversations / bm_read_conversation / bm_search_books),并入 MCP agent 循环 - chat.py: create/list 支持 kind;send_message 委托助手管线 - llm/hub.py: 解析 DeepSeek DSML 文本工具调用(模型非确定性输出标准/DSML) - mcp/agent.py: 工具轮中段追加强制文本收尾,防模型反复调工具不出答案 - 前端: 侧栏「AI 助手」入口 + 抽取共享 ChatPanel 复用书/助手两套对话 UI Co-Authored-By: Claude Code <noreply@anthropic.com>
BookMate
基于 FastAPI 和 Next.js 的 AI 读书助手。支持 EPUB 导入、围绕书籍内容对话、原文引用和完整 EPUB 网页阅读。
本地启动
后端(Python 3.12):
cd backend
python -m venv .venv
.venv/Scripts/python.exe -m pip install -r requirements.txt
Copy-Item .env.example .env
.venv/Scripts/python.exe -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
在 .env 配置模型 API,或启动后在网页的模型管理中添加模型。数据库和上传目录会自动创建。未配置向量服务时使用关键词检索。
另开终端启动前端(Node.js 20.9+):
cd frontend
npm ci
npm run dev
访问 http://localhost:3000。前端默认连接 http://localhost:8000/api。
阅读与对话
导入 EPUB 后,在书架或聊天页面点击「阅读全书」。阅读器支持目录、翻页、字号调整,以及在当前浏览器保存阅读位置。选中文字后可将原文带入 AI 聊天输入框。
MCP 外部工具
侧栏底部「MCP 服务」可添加远程 MCP 服务器(Streamable HTTP / 老式 SSE),配置 URL 与请求头(如 Authorization)。启用后,对话 AI 可调用其暴露的外部工具(如 Firecrawl 的搜索 / 抓取)获取书中没有的信息,回答时注明外部信息来源。工具调用过程会在流式回答中显示。配置会保存在 mcp_servers 表;模型需原生支持 function calling(OpenAI 兼容协议)才会启用工具循环。
验证
cd backend
.venv/Scripts/python.exe -B -m unittest test_book_file
cd frontend
npm run build
本地 .env、模型凭据、数据库、上传书籍和构建产物不纳入版本控制。
Languages
Python
48.6%
TypeScript
44.7%
CSS
6.1%
Dockerfile
0.5%
JavaScript
0.1%