254 lines
8.7 KiB
Markdown
254 lines
8.7 KiB
Markdown
# 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提交历史。 |