跳到主要内容

技术栈

本文列出 Evatar 项目使用的所有技术及其版本和用途,基于实际 requirements.txtpackage.jsonbuild.gradle.kts


后端 (Python)

后端位于 backend/ 目录,基于 Python FastAPI 框架。

技术版本用途
Python3.11+运行时环境,使用 asyncio 异步编程
FastAPI0.115.12Web 框架,自动生成 OpenAPI 文档,依赖注入
Uvicorn0.34.3ASGI 服务器,支持 WebSocket 和 HTTP/2
SQLAlchemy2.0.41ORM 框架,声明式模型定义,查询构建
SQLite内置嵌入式数据库,启用 WAL 模式和 FTS5 全文检索
httpx0.28.1异步 HTTP 客户端,用于调用 LLM API 和搜索 API
Pillow11.2.1图片处理,生成缩略图和缩放大图(>2048px)
Pydantic2.11.3数据校验和序列化
pydantic-settings2.9.1环境变量配置管理,前缀 EVATAR_
python-multipart0.0.20文件上传解析(Multipart form data)
aiofiles24.1.0异步文件 I/O
cryptography44.0.3Fernet 对称加密,保护敏感数据字段

后端依赖安装

cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

完整的 requirements.txt

fastapi==0.115.12
uvicorn[standard]==0.34.3
sqlalchemy==2.0.41
aiofiles==24.1.0
httpx==0.28.1
pillow==11.2.1
python-multipart==0.0.20
pydantic==2.11.3
pydantic-settings==2.9.1
cryptography==44.0.3

LLM 集成

后端通过 OpenAI 兼容 API 调用 LLM,默认配置:

配置项默认值说明
llm_base_urlhttps://token-plan-cn.xiaomimimo.com/v1API 端点
llm_modelmimo-v2.5模型名称(支持 Vision + Tool Calling)
llm_max_tokens4096最大输出 token 数
llm_temperature0.1生成温度(截图分析使用低温度保证准确性)
agent_max_rounds3Agent 工具调用最大轮次
agent_history_limit20聊天历史消息加载数量

Web 搜索集成

服务优先级配置变量
Tavily优先EVATAR_TAVILY_API_KEY
Brave Search备选EVATAR_BRAVE_API_KEY

Android 客户端 (Kotlin)

Android 客户端位于 android/ 目录,最低支持 API 26 (Android 8.0)。

技术版本用途
Kotlin2.0+ (plugin.compose)主要开发语言,协程异步编程
Jetpack ComposeBOM 2024.06.00声明式 UI 框架
Material3compose-bomMaterial Design 3 组件库
OkHttp4.12.0HTTP 客户端,支持连接池、拦截器、自动重试
Gson2.11.0JSON 序列化/反序列化
WorkManager2.9.1后台定时任务调度(截图同步)
Coil2.6.0Compose 原生图片加载库
Accompanist0.34.0运行时权限请求封装
Navigation Compose2.7.7页面导航
Lifecycle2.8.4ViewModel + Compose 生命周期管理
Coroutines1.8.1Kotlin 协程,异步网络请求和并发上传

构建配置

// android/app/build.gradle.kts
android {
namespace = "com.evatar.app"
compileSdk = 34
defaultConfig {
applicationId = "com.evatar.app"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "0.1.0"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}

Gradle 版本

工具版本
Gradle8.14
Android Gradle Plugin通过 plugins 块声明
Kotlin Pluginorg.jetbrains.kotlin.android + org.jetbrains.kotlin.plugin.compose

关键设计模式

模式实现
单例ApiClient.getInstance(context) — 共享 OkHttpClient 实例
MVVMChatViewModel / DynamicViewModel / SettingsViewModel — 状态管理
后台同步SyncWorker (CoroutineWorker) + SyncService (ForegroundService)
并发控制Semaphore(3) 限制截图上传并发数
重试机制executeWithRetry() — 最多 3 次,指数退避 (1s, 2s, 4s)
缓存服务器 URL 内存缓存 (@Volatile cachedUrl)

设备 ID 生成

val deviceId: String by lazy {
"${Build.MANUFACTURER}_${Build.MODEL}_${
Settings.Secure.getString(appContext.contentResolver, Settings.Secure.ANDROID_ID)
}"
}
// 示例: "Xiaomi_2312DRAABC_abc123def456"

Web 前端 (React)

前端位于 frontend/ 目录,使用 Vite 8 构建。

技术版本用途
React19.2.6UI 框架,函数组件 + Hooks
TypeScript6.0.2类型安全的 JavaScript 超集
Vite8.0.12构建工具,HMR 热更新,API 代理
Tailwind CSS4.3.0原子化 CSS 框架
@tailwindcss/vite4.3.0Vite 插件集成
@tailwindcss/typography0.5.19Markdown 排版样式
Axios1.16.1HTTP 客户端,请求/响应拦截
react-markdown10.1.0Markdown 渲染组件(聊天消息、动态笔记)
lucide-react1.17.0图标库
i18next26.3.0国际化框架
react-i18next17.0.8React i18n 绑定
i18next-browser-languagedetector8.2.1自动检测浏览器语言

开发配置

// vite.config.ts
export default defineConfig({
plugins: [react(), tailwindcss()],
server: {
port: 3000,
proxy: {
'/api': {
target: 'http://localhost:8421', // 后端地址
changeOrigin: true,
},
},
},
})

API 客户端

前端使用 Axios 封装了完整的 API 客户端(src/api/client.ts),覆盖所有后端端点:

模块主要函数
截图getPhotos(), getPhoto(), getPhotoUrl(), deletePhoto(), getStats()
聊天getConversations(), getConversation(), deleteConversation()
动态getDynamics(), getDynamic(), markDynamicRead(), triggerReasoning()
记忆getMemories(), getMemoryStats()
配置getLLMConfig(), updateLLMConfig(), getLLMPresets(), applyLLMPreset()
数据getDataStats(), getRetentionDays(), clearAllData(), exportData()
推送registerPushToken(), sendTestNotification(), getDevices()

前端页面

页面组件功能
DashboardDashboard.tsx数据总览:截图统计、分析状态、意图/分类分布
PhotosPhotos.tsx截图列表:分页浏览、状态筛选、缩略图、详情查看
ChatChat.tsx智能助手:多轮对话、Markdown 渲染、工具调用展示
DynamicsDynamics.tsx动态笔记:游标分页、分类筛选、已读/置顶操作
SettingsSettings.tsx系统配置:LLM 设置、数据管理、推送通知

完整版本对照表

类别技术版本
后端Python3.11+
FastAPI0.115.12
SQLAlchemy2.0.41
httpx0.28.1
Pillow11.2.1
Pydantic2.11.3
cryptography44.0.3
AndroidKotlin2.0+
Jetpack Compose BOM2024.06.00
OkHttp4.12.0
WorkManager2.9.1
Coil2.6.0
Gradle8.14
compileSdk / targetSdk34
minSdk26
JDK17
前端React19.2.6
TypeScript6.0.2
Vite8.0.12
Tailwind CSS4.3.0
Axios1.16.1
react-markdown10.1.0
i18next26.3.0
文档Docusaurus3.x