Files
read_book/README.md
2026-01-11 15:42:13 +08:00

254 lines
8.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI阅读心得助手 (AI Reading Reflection Assistant)
一个基于Electron和Vue开发的桌面应用程序利用人工智能技术帮助用户快速生成高质量的读书心得和反思。
## 🚀 功能特色
- **AI驱动的读书心得生成**:基于用户输入的书籍信息,利用大语言模型自动生成深度读书心得
- **多职业视角**:根据用户的职业背景(学生、教师、职场人士、科研工作者等)定制化生成内容
- **智能摘要与关键词提取**:自动生成内容摘要和关键词,便于回顾和索引
- **任务管理**:支持批量处理多个读书反思任务
- **现代化UI界面**使用Vue和Arco Design构建的精致极简主义界面
- **离线数据存储**使用SQLite数据库本地存储所有任务和用户配置
## 🛠️ 技术架构
- **主框架**[Electron](https://www.electronjs.org/) + [Vue 3](https://vuejs.org/)
- **AI集成**[LangChain](https://js.langchain.com/) + [LangGraph](https://langchain-ai.github.io/langgraphjs/)支持结构化AI内容生成
- **数据库**[TypeORM](https://typeorm.io/) + [SQLite](https://www.sqlite.org/),本地数据存储
- **后端通信**[tRPC](https://trpc.io/)类型安全的API调用
- **构建工具**[Vite](https://vitejs.dev/) + [TypeScript](https://www.typescriptlang.org/)
- **UI组件库**[Arco Design Vue](https://arco.design/vue/)
- **样式框架**[UnoCSS](https://unocss.dev/)
- **状态管理**[Pinia](https://pinia.vuejs.org/)
## 📋 核心功能模块
### 1. AI服务模块
- 集成大语言模型,实现读书心得的智能生成
- 支持自定义API端点和模型配置
- 结构化输出确保格式一致性
### 2. AI工作流程 (LangGraph)
- **内容生成节点**:根据书籍信息和用户职业背景生成读书心得正文
- **摘要生成节点**:对生成的内容进行摘要和关键词提取
- **状态管理**使用LangGraph管理AI生成流程的状态
### 3. 数据库管理
- 使用TypeORM管理任务数据和用户配置
- 支持阅读用户画像、任务批次和任务项的存储
- SQLite数据库确保数据离线安全存储
### 4. 任务管理器
- 支持批量处理和任务状态追踪
- 实时任务进度显示
- 任务状态管理(待处理、生成中、已完成等)
### 5. 用户界面
- 现代化Vue界面支持任务创建、查看和管理
- 个人用户画像管理
- AI模型配置界面
## 📁 项目结构
```
src/
├── main/ # Electron主进程
│ ├── db/ # 数据库配置
│ │ ├── data-source.ts # 数据库连接配置
│ │ └── entities/ # 数据实体定义
│ │ ├── ReadingPersona.ts # 用户画像实体
│ │ ├── ReadingReflectionTaskBatch.ts # 任务批次实体
│ │ └── ReadingReflectionTaskItem.ts # 任务项实体
│ ├── manager/ # 任务管理器
│ │ └── readingReflectionsTaskManager.ts # 任务管理逻辑
│ └── services/ # 核心服务
│ ├── persona.service.ts # 用户画像服务
│ ├── search.service.ts # 搜索服务
│ └── ai/ # AI服务目录
│ ├── llmService.ts # LLM服务配置
│ ├── graph/
│ │ └── readingReflectionGraph.ts # AI工作流程图
│ ├── nodes/
│ │ ├── readingReflectionContent.ts # 内容生成节点
│ │ └── readingReflectionSummary.ts # 摘要生成节点
│ ├── prompts/
│ │ └── readingReflactionPrompts.ts # AI提示词模板
│ └── state/
│ └── readingReflectionState.ts # AI状态定义
├── renderer/ # Vue渲染进程
│ ├── components/ # UI组件
│ ├── pages/ # 页面组件
│ │ ├── about/ # 关于页面
│ │ ├── faq/ # 常见问题
│ │ ├── home/ # 首页
│ │ ├── menus/ # 菜单页面
│ │ ├── reflection/ # 反思页面
│ │ ├── setting/ # 设置页面
│ │ └── task/ # 任务页面
│ ├── views/ # 视图组件
│ └── src/
│ ├── App.vue # 主应用组件
│ ├── main.ts # Vue入口文件
│ ├── style.css # 样式文件
│ ├── assets/ # 静态资源
│ ├── common/ # 公共工具
│ ├── hooks/ # Vue钩子函数
│ ├── lib/ # 库文件
│ ├── router/ # 路由配置
│ └── utils/ # 工具函数
├── preload/ # 预加载脚本
├── rpc/ # tRPC配置
│ ├── context.ts # tRPC上下文
│ ├── index.ts # tRPC入口
│ └── router/ # tRPC路由
│ ├── config.router.ts # 配置路由
│ ├── notice.router.ts # 通知路由
│ ├── persona.router.ts # 用户画像路由
│ ├── search.router.ts # 搜索路由
│ └── task.router.ts # 任务路由
└── shared/ # 共享类型定义
├── types/ # TypeScript类型定义
└── utils/ # 共享工具函数
```
## 🚀 安装与运行
### 环境要求
- Node.js >= 18
- pnpm (推荐) 或 npm
### 开发环境设置
1. 克隆项目:
```bash
git clone <your-repo-url>
cd read_book
```
2. 安装依赖推荐使用pnpm
```bash
pnpm install
```
3. 启动开发模式:
```bash
pnpm dev
```
### 构建与打包
1. 构建应用:
```bash
pnpm build
```
2. 打包为桌面应用:
```bash
# Windows
pnpm build:win
# macOS
pnpm build:mac
# Linux
pnpm build:linux
```
### 应用配置
1. 启动应用后进入设置页面配置AI模型参数
2. 输入您的API密钥和模型信息
3. 选择适合的模型用于心得生成和摘要提取
## 🧠 AI工作流程详解
### 1. 内容生成节点
- 接收书籍信息(书名、作者、描述等)
- 根据用户职业背景定制生成内容
- 使用结构化输出确保标题和正文格式正确
### 2. 摘要生成节点
- 接收上一节点生成的标题和正文
- 提取100字以内的摘要
- 生成3-5个关键词便于检索
### 3. 状态管理
- 使用LangGraph管理整个AI工作流程
- 状态流转START → 生成内容 → 生成摘要 → END
- 每个步骤都更新任务状态和进度
### 4. 提示词工程
- **角色定义**:根据职业背景设定专家角色
- **约束条件**:避免身份陈述,直接场景切入
- **输出格式**严格JSON格式确保数据一致性
## 🔧 配置说明
### AI模型配置
应用支持自定义AI服务提供商
```typescript
// src/main/services/ai/llmService.ts
const config = store.get(`chatModels.${type}`) as any
return new ChatOpenAI({
apiKey: config.apiKey,
configuration: {
baseURL: config.baseURL || 'https://api.openai.com/v1'
},
modelName: config.modelName,
temperature: config.temperature
})
```
### 数据库配置
- 使用TypeORM + SQLite
- 数据存储在本地,确保隐私安全
- 支持阅读用户画像、任务批次和任务项的CRUD操作
### 用户界面配置
- 使用Vue 3 + TypeScript
- 组件化开发,易于维护
- 响应式设计,适配不同屏幕尺寸
## 🤝 贡献
欢迎提交Issue和Pull Request来改进项目
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
### 开发约定
- 使用TypeScript进行类型安全开发
- 遵循ESLint和Prettier代码规范
- 提交信息遵循Conventional Commits规范
- 使用Husky进行Git Hooks自动化检查
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证。
## 🙏 致谢
- [Electron](https://www.electronjs.org/) - 跨平台桌面应用框架
- [Vue.js](https://vuejs.org/) - 前端框架
- [LangChain & LangGraph](https://langchain-ai.github.io/langgraphjs/) - AI开发框架
- [TypeORM](https://typeorm.io/) - ORM框架
- [Arco Design](https://arco.design/vue/) - UI组件库
- [UnoCSS](https://unocss.dev/) - 即时原子化CSS引擎
- [tRPC](https://trpc.io/) - 类型安全的API调用
## 📞 支持
如需帮助或有建议,请:
- 提交GitHub Issues
- 查看FAQ页面获取常见问题解答
- 检查设置页面的配置选项
## 📈 版本历史
项目使用语义化版本控制详细的版本更新信息请查看Git提交历史。