Thinking 是一个类似 NotebookLM 的知识处理系统,帮助用户通过 AI 技术分析、总结和重新组织知识文档。支持多种知识输入源(文件上传、URL抓取),通过自然语言对话进行知识加工,最终生成 Markdown 或 PDF 格式的新文档。
- 文件上传:支持 PDF、Markdown 格式文档上传
- URL 抓取:智能抓取网页内容,自动提取标题、正文、图片和表格,转换为 Markdown 文档
- 图片处理:自动下载并本地化存储图片,使用相对路径引用
- 左栏 - 文件库:管理所有上传和抓取的知识文档
- 中栏 - 选中文件:灵活选择一个或多个文档作为分析输入
- 右栏 - 加工区:对话式 AI 交互界面,实时生成和预览内容
- 多轮对话:通过自然语言与 AI 交互,逐步完善分析需求
- 上下文理解:基于选中的文档内容进行智能分析和总结
- 实时响应:流式输出,即时查看 AI 生成的内容
- Markdown 导出:保留原始格式和结构
- PDF 导出:专业排版,适合打印和分享
- 思维导图生成:自动从内容生成可视化 XML 思维导图
- 支持多种大模型:Qoder Assistant、百炼平台、智谱 GLM-4-Flash
- 本地数据存储,保护隐私安全
- 无需用户认证,开箱即用
- Python: 3.11 或更高版本
- Node.js: 18 或更高版本
- 系统: macOS, Linux, Windows
git clone git@github.com:logan-xuan/Thinking.git
cd Thinkingcd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 配置环境变量 cp .env.example .env # 编辑 .env 文件,配置大模型和存储路径
后端环境变量配置 (.env):
# 数据库配置 DATABASE_URL=sqlite:///xknowledge/db/thinking.db # 大模型配置(选择其一) LLM_PROVIDER=qoder # 可选: qoder, bailian, zhipu # 百炼平台配置(如果使用 bailian) BAILIAN_API_KEY=your_api_key BAILIAN_MODEL=qwen-turbo # 智谱配置(如果使用 zhipu) ZHIPU_API_KEY=your_api_key ZHIPU_MODEL=glm-4-flash # 存储路径 STORAGE_PATH=xknowledge # 开发模式 DEBUG=true
# 在 backend 目录下
playwright install chromiumcd ../frontend # 安装依赖 npm install # 配置环境变量 cp .env.example .env # 编辑 .env 文件,配置 API 地址
前端环境变量配置 (.env):
VITE_API_BASE_URL=http://localhost:8000
cd backend source venv/bin/activate # Windows: venv\Scripts\activate python -m uvicorn src.main:app --reload --host 0.0.0.0 --port 8000
后端服务将运行在 http://localhost:8000
打开新的终端窗口:
cd frontend
npm run dev前端服务将运行在 http://localhost:5173
- 在浏览器中打开
http://localhost:5173 - 在左侧文件库上传 PDF/MD 文件,或输入 URL 抓取网页内容
- 从文件库中选择一个或多个文档到中间栏
- 在右侧对话框输入分析需求,与 AI 交互
- 导出生成的内容为 Markdown 或 PDF 格式
- 点击文件库顶部的"上传文件"按钮
- 支持 PDF 和 Markdown 格式
- 文件大小限制:50MB
- 点击"添加 URL"按钮
- 输入完整的网页地址
- 系统自动抓取标题、正文、图片和表格
- 生成的 Markdown 文档自动保存到文件库
- 在左侧文件库中点击文档名称
- 选中的文档将显示在中间栏
- 支持多选,组合不同文档进行综合分析
- 点击"清空选择"可取消所有选中
在右侧对话框输入指令,例如:
- "请总结这些文档的核心观点"
- "提取所有技术要点并整理成清单"
- "基于这些内容写一篇技术文章"
- "生成这些知识的思维导图"
- 点击"导出 Markdown"生成 .md 文件
- 点击"导出 PDF"生成 .pdf 文件
- 点击"生成思维导图"查看 XML 格式的思维导图可视化
Thinking/
├── backend/ # Python 后端服务
│ ├── src/
│ │ ├── api/ # API 路由
│ │ ├── db/ # 数据库配置
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑
│ │ └── main.py # 应用入口
│ ├── tests/ # 测试代码
│ └── requirements.txt # Python 依赖
│
├── frontend/ # React 前端应用
│ ├── src/
│ │ ├── components/ # UI 组件
│ │ ├── services/ # API 服务
│ │ ├── stores/ # 状态管理
│ │ └── pages/ # 页面
│ └── package.json # Node.js 依赖
│
├── xknowledge/ # 数据存储目录
│ ├── documents/ # 上传的文档
│ ├── images/ # 图片资源
│ ├── exports/ # 导出的文件
│ └── db/ # SQLite 数据库
│
├── specs/ # 功能规格文档
├── openspec/ # OpenSpec 变更管理
└── README.md # 项目说明
- 框架: FastAPI
- 数据库: SQLite + SQLAlchemy
- PDF 处理: PyMuPDF
- 网页抓取: Trafilatura, BeautifulSoup4, Playwright
- PDF 生成: WeasyPrint
- 大模型: OpenAI SDK(兼容多种模型)
- 框架: React 19
- 构建工具: Vite
- 样式: TailwindCSS 4
- 状态管理: Zustand
- UI 组件: 自定义组件库
- 思维导图: Markmap
启动后端服务后,访问以下地址查看自动生成的 API 文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: add some amazing feature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
遵循 Conventional Commits 规范:
feat: 新功能fix: 修复问题docs: 文档更新style: 代码格式调整refactor: 代码重构test: 测试相关chore: 构建/工具链更新
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 灵感来源于 Google NotebookLM
- 感谢所有开源贡献者
- 项目主页: https://github.com/logan-xuan/Thinking
- Issue 反馈: https://github.com/logan-xuan/Thinking/issues
⭐ 如果这个项目对你有帮助,请给个 Star!