Skip to content

一个基于 Electron + React 的智能知识转换应用,将复杂概念转化为儿童友好的童话故事和实验。

License

Notifications You must be signed in to change notification settings

fenwii/magic-treehous

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌳 Magic Treehouse

一个基于 Electron + React 的智能知识转换应用,将复杂概念转化为儿童友好的童话故事和实验。

✨ 核心特性

🦊 智能知识转换

  • 童话化解释: 将复杂概念转换为8岁儿童能理解的童话故事
  • 动手实验: 为每个概念提供简单的厨房小实验
  • 多模态输出: 故事 + 实验 + 表情符号的完整体验

🤖 多AI提供商支持

  • Deepseek API: 推荐使用,性价比高,中文支持优秀
  • OpenAI API: 备选方案,强大的GPT模型支持
  • 智能切换: 自动选择可用提供商,支持手动切换
  • 实时验证: API密钥有效性检测和连接测试

🎨 沉浸式用户体验

  • 时间感知界面: 根据时间自动调整主题和装饰元素
  • 动态动画: 流畅的Framer Motion动画效果
  • 响应式设计: 适配不同屏幕尺寸
  • 直观设置: 可视化API配置界面

💾 便捷内容管理

  • 一键保存: 导出为Markdown格式,兼容Obsidian
  • 本地存储: 安全的本地配置管理
  • 环境变量: 标准的.env配置方式

🚀 快速开始

环境要求

  • Node.js 18+
  • npm 或 yarn
  • macOS/Windows/Linux

安装步骤

  1. 克隆项目

    git clone <repository-url>
    cd magic-treehouse
  2. 安装依赖

    npm install
    #
    yarn install
  3. 配置API密钥

    复制环境变量模板:

    cp .env.example .env

    编辑 .env 文件,至少配置一个API密钥:

    # 推荐:Deepseek API (性价比高,中文支持好)
    DEEPSEEK_API_KEY=sk-your-deepseek-key-here
    
    # 可选:OpenAI API
    OPENAI_API_KEY=sk-your-openai-key-here
  4. 启动应用

    # 开发模式
    npm run dev
    
    # 构建生产版本
    npm run build
    
    # 打包应用
    npm run dist

API密钥获取

Deepseek API (推荐)

OpenAI API

🏗️ 项目架构

技术栈

Frontend:  React 18 + TypeScript + Framer Motion
Backend:   Electron Main Process + Node.js
Build:     Electron Vite + Vite 5
UI:        Lucide React Icons + CSS3 Animations
AI:        OpenAI SDK + Axios (Deepseek)

目录结构

magic-treehouse/
├── src/
│   ├── main/                 # Electron主进程
│   │   ├── index.ts         # 应用入口和IPC处理
│   │   └── ai-service.ts    # AI服务管理器
│   ├── preload/             # 预加载脚本
│   │   ├── index.ts         # IPC API暴露
│   │   └── typed.d.ts       # 类型定义
│   └── renderer/            # React渲染进程
│       ├── App.tsx          # 主应用组件
│       ├── Settings.tsx     # 设置界面
│       ├── index.css        # 样式文件
│       └── main.tsx         # React入口
├── resources/               # 应用资源
├── out/                     # 构建输出
├── .env                     # 环境变量配置
├── .env.example            # 环境变量模板
├── package.json            # 项目配置
├── electron.vite.config.ts # 构建配置
└── tsconfig.json           # TypeScript配置

核心模块

AI服务管理器 (ai-service.ts)

class AIService {
  // 多提供商管理
  private providers: Map<string, AIProvider>
  
  // 智能提供商选择
  initializeProviders()
  
  // API密钥验证
  validateSingleApiKey(provider, apiKey)
  
  // 知识转换核心
  kidify(topic: string): Promise<AIResponse>
}

主进程 (main/index.ts)

  • 环境变量加载和验证
  • IPC通信处理
  • 窗口管理
  • API设置持久化

渲染进程 (renderer/App.tsx)

  • 时间感知UI主题
  • 动态装饰元素
  • 实时状态显示
  • 交互式输入界面

🔧 配置说明

环境变量

# Deepseek API配置 (推荐)
DEEPSEEK_API_KEY=sk-your-key-here

# OpenAI API配置 (可选)
OPENAI_API_KEY=sk-your-key-here

构建配置

  • 开发模式: 热重载,开发者工具
  • 生产构建: 代码压缩,性能优化
  • 应用打包: 跨平台可执行文件

应用设置

  • API提供商: 支持运行时切换
  • 连接测试: 实时验证API可用性
  • 模型列表: 动态获取可用模型
  • 状态监控: 实时显示服务状态

🎯 使用指南

基本使用

  1. 启动应用
  2. 如未配置API,会自动打开设置界面
  3. 输入想要了解的复杂概念
  4. 点击"变童话"获取结果
  5. 可选择保存为Markdown文件

高级功能

  • 提供商切换: 在设置中选择不同的AI服务
  • 连接测试: 验证API密钥有效性
  • 模型查看: 查看当前可用的AI模型
  • 时间主题: 界面会根据时间自动调整

输出格式

{
  "story": "用童话方式解释的概念",
  "experiment": "相关的厨房小实验",
  "emoji": "相关表情符号"
}

🔒 安全性

数据保护

  • API密钥仅存储在本地.env文件
  • 不会上传到任何服务器
  • 界面中密钥默认隐藏显示

网络安全

  • 仅与官方API端点通信
  • 支持连接超时和错误处理
  • 安全的HTTPS通信

🛠️ 开发指南

开发环境设置

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 类型检查
npx tsc --noEmit

# 代码格式化
npx prettier --write src/

构建和发布

# 构建应用
npm run build

# 打包为可执行文件
npm run dist

# 仅打包不压缩
npm run pack

调试技巧

  • 使用Electron开发者工具
  • 查看主进程和渲染进程日志
  • 利用IPC通信调试
  • 环境变量状态检查

📋 API参考

IPC通信接口

// 知识转换
kidify(topic: string): Promise<AIResponse>

// 提供商管理
getAIProviders(): Promise<{available: string[], current: string}>
setAIProvider(name: string): Promise<boolean>

// 设置管理
getAPISettings(): Promise<APISettings>
saveAPISettings(settings: APISettings): Promise<boolean>
testAPIConnection(provider: string, key: string): Promise<TestResult>

// 状态检查
checkAPIStatus(): Promise<StatusInfo>
getAvailableModels(): Promise<ModelInfo[]>

AI提供商接口

interface AIProvider {
  name: string
  kidify(topic: string): Promise<AIResponse>
}

interface AIResponse {
  story: string      // 童话故事
  experiment: string // 实验说明
  emoji: string      // 相关表情
}

🐛 故障排除

常见问题

API连接失败

  • 检查网络连接
  • 验证API密钥格式
  • 确认账户余额充足

设置保存失败

  • 检查.env文件权限
  • 确认磁盘空间充足
  • 重启应用重新加载

界面显示异常

  • 清除应用缓存
  • 检查开发者控制台错误
  • 更新到最新版本

调试信息

应用提供详细的调试日志,包括:

  • 环境变量加载状态
  • API密钥验证结果
  • 提供商初始化过程
  • 网络请求详情

🤝 贡献指南

开发流程

  1. Fork项目
  2. 创建功能分支
  3. 提交代码变更
  4. 创建Pull Request

代码规范

  • 使用TypeScript严格模式
  • 遵循ESLint配置
  • 添加适当的类型注解
  • 编写清晰的注释

测试要求

  • 单元测试覆盖核心功能
  • 集成测试验证IPC通信
  • 手动测试用户界面

📄 许可证

本项目采用 Apache License 2.0 许可证 - 查看 LICENSE 文件了解详情。

👨‍💻 作者

Fenwii AGI

📞 联系方式

如有问题或建议,请通过以下方式联系:

  • 📧 Email: samir.tan.it@gmail.com
  • 🐛 Issues: 在GitHub仓库中提交问题
  • 💡 Feature Requests: 欢迎提交功能建议

🙏 致谢


Magic Treehouse - 让复杂知识变得简单有趣 🌟

About

一个基于 Electron + React 的智能知识转换应用,将复杂概念转化为儿童友好的童话故事和实验。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published