# 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 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提交历史。