AI阅读心得助手 (AI Reading Reflection Assistant)
一个基于Electron和Vue开发的桌面应用程序,利用人工智能技术帮助用户快速生成高质量的读书心得和反思。
🚀 功能特色
- AI驱动的读书心得生成:基于用户输入的书籍信息,利用大语言模型自动生成深度读书心得
- 多职业视角:根据用户的职业背景(学生、教师、职场人士、科研工作者等)定制化生成内容
- 智能摘要与关键词提取:自动生成内容摘要和关键词,便于回顾和索引
- 任务管理:支持批量处理多个读书反思任务
- 现代化UI界面:使用Vue和Arco Design构建的精致极简主义界面
- 离线数据存储:使用SQLite数据库本地存储所有任务和用户配置
🛠️ 技术架构
- 主框架:Electron + Vue 3
- AI集成:LangChain + LangGraph,支持结构化AI内容生成
- 数据库:TypeORM + SQLite,本地数据存储
- 后端通信:tRPC,类型安全的API调用
- 构建工具:Vite + TypeScript
- UI组件库:Arco Design Vue
- 样式框架:UnoCSS
- 状态管理:Pinia
📋 核心功能模块
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
开发环境设置
-
克隆项目:
git clone <your-repo-url> cd read_book -
安装依赖(推荐使用pnpm):
pnpm install -
启动开发模式:
pnpm dev
构建与打包
-
构建应用:
pnpm build -
打包为桌面应用:
# Windows pnpm build:win # macOS pnpm build:mac # Linux pnpm build:linux
应用配置
- 启动应用后,进入设置页面配置AI模型参数
- 输入您的API密钥和模型信息
- 选择适合的模型用于心得生成和摘要提取
🧠 AI工作流程详解
1. 内容生成节点
- 接收书籍信息(书名、作者、描述等)
- 根据用户职业背景定制生成内容
- 使用结构化输出确保标题和正文格式正确
2. 摘要生成节点
- 接收上一节点生成的标题和正文
- 提取100字以内的摘要
- 生成3-5个关键词便于检索
3. 状态管理
- 使用LangGraph管理整个AI工作流程
- 状态流转:START → 生成内容 → 生成摘要 → END
- 每个步骤都更新任务状态和进度
4. 提示词工程
- 角色定义:根据职业背景设定专家角色
- 约束条件:避免身份陈述,直接场景切入
- 输出格式:严格JSON格式确保数据一致性
🔧 配置说明
AI模型配置
应用支持自定义AI服务提供商:
// 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来改进项目:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
开发约定
- 使用TypeScript进行类型安全开发
- 遵循ESLint和Prettier代码规范
- 提交信息遵循Conventional Commits规范
- 使用Husky进行Git Hooks自动化检查
📄 许可证
本项目采用 MIT 许可证。
🙏 致谢
- Electron - 跨平台桌面应用框架
- Vue.js - 前端框架
- LangChain & LangGraph - AI开发框架
- TypeORM - ORM框架
- Arco Design - UI组件库
- UnoCSS - 即时原子化CSS引擎
- tRPC - 类型安全的API调用
📞 支持
如需帮助或有建议,请:
- 提交GitHub Issues
- 查看FAQ页面获取常见问题解答
- 检查设置页面的配置选项
📈 版本历史
项目使用语义化版本控制,详细的版本更新信息请查看Git提交历史。
Description
Languages
Vue
42.6%
TypeScript
31.1%
Python
22.5%
JavaScript
1.9%
Less
1.5%
Other
0.4%