Kelivo 项目深度解析
与 Flutter 技术实践
基于 Flutter 3.x 的跨平台 LLM 聊天客户端技术架构与实现指南
项目指标
"打破 AI 服务生态壁垒,实现多提供商自由切换"
项目概述与定位
项目基本信息
Kelivo 是一个基于 Flutter 3.x 框架开发的开源大型语言模型(LLM)聊天客户端,由开发者 Chevey339 主导维护。截至 2025 年,该项目在 GitHub 上已获得超过 2000 个星标和 200 余个分支 [34],显示出较强的社区活跃度。
项目的核心定位并非简单的聊天工具封装,而是一个企业级的多 AI 服务集成平台,通过抽象化的架构设计,实现了对多种主流 LLM 提供商的无缝接入。与市面上单一服务商的聊天应用不同,Kelivo 的最大特色在于其"多提供商自由切换"架构[135]。
多模态对话
支持文本、图片、PDF、Word 混合输入,通过文件预处理和 Vision API 实现
Markdown 富文本
代码高亮、LaTeX 公式、表格渲染,基于 flutter_markdown 扩展
语音交互
系统 TTS + 云端语音合成,支持流式接收和队列管理
MCP 工具调用
Model Context Protocol 标准支持,可扩展外部工具链[135]
支持平台矩阵
| 平台 | 支持状态 | 分发渠道 | 特殊说明 |
|---|---|---|---|
| Android | ✅ 完全支持 | Google Play、GitHub Releases、F-Droid | Material You 动态主题(API 31+) |
| iOS | ✅ 完全支持 | App Store、TestFlight | 完整审核通过,TestFlight 公测可用 |
| Windows | ✅ 完全支持 | Microsoft Store、GitHub Releases | MSIX 打包,自动更新集成 |
| macOS | ✅ 完全支持 | Mac App Store、GitHub Releases | Notarization 公证,DMG 分发 |
| Linux | ✅ 完全支持 | Snap、Flatpak、AppImage、软件中心 | 多格式覆盖主流发行版 |
| OpenHarmony | ⚠️ 适配中 | 鸿蒙应用市场(规划中) | 独立分支 kelivo-ohos,部分功能降级[154] |
项目目录结构详解
核心架构分层
UI Widgets"] --> B["Business Logic Layer
Providers"] B --> C["Data Access Layer
Repositories"] C --> D["Infrastructure Layer
Network/Storage"] E["Features/"] --> F["Chat/
Models/Providers/Services"] E --> G["Settings/
Configuration"] E --> H["Models/
AI Service Integration"] I["Core/"] --> J["Network/
Dio Configuration"] I --> K["Storage/
Hive/SharedPreferences"] I --> L["Logger/
Logging System"] style A fill:#dbeafe,stroke:#1e40af,stroke-width:2px,color:#1f2937 style B fill:#dcfce7,stroke:#166534,stroke-width:2px,color:#1f2937 style C fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#1f2937 style D fill:#fce7f3,stroke:#be185d,stroke-width:2px,color:#1f2937 style E fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#1f2937 style F fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#1f2937 style G fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#1f2937 style H fill:#fdf2f8,stroke:#be185d,stroke-width:2px,color:#1f2937 style I fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#1f2937 style J fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#1f2937 style K fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#1f2937 style L fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#1f2937
聊天模块结构
构建与编译指南
环境准备
Flutter SDK 要求
验证安装:
flutter doctor
平台工具链
- • Android: Android Studio, SDK API 33+
- • iOS: Xcode 15+, CocoaPods
- • Windows: Visual Studio 2022
- • macOS: Xcode 15+
- • Linux: Clang, CMake, Ninja
依赖预加载
flutter pub get
中国大陆开发者建议配置镜像:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
发布构建命令
Android
iOS
Windows
OpenHarmony
Flutter 核心概念与特性
一切皆 Widget
UI 组件化与组合式构建,从简单的 Text 到复杂的 ListView 都是 Widget
声明式编程
状态驱动 UI 自动更新,框架负责状态变化时的自动同步
自绘引擎
Skia/Impeller 跨平台渲染一致性,像素级相同的视觉效果
热重载(Hot Reload)
工作原理
- • JIT 编译:开发模式 Dart VM 执行字节码
- • 状态保持:重建 Widget 树,保留 State 对象
- • 毫秒级反馈:增量编译 + 增量传输
Kelivo 应用场景
- • 调整消息气泡圆角 → 保存 → 立即查看效果
- • 修改主题色值 → 实时预览
- • 优化动画曲线 → 反复微调至满意
开发环境搭建
IDE 选择与配置
VS Code
轻量快速、插件丰富
- • Flutter 插件
- • Awesome Flutter Snippets
- • Error Lens
Android Studio
官方支持、重构强大
- • Flutter/Dart 插件
- • 布局编辑器
- • .env 文件支持
IntelliJ IDEA
企业级功能、多语言支持
- • 同 Android Studio
- • 企业级特性
SDK 版本管理
fvm 推荐配置
dart pub global activate fvm
# 项目级版本锁定
cd kelivo
fvm install 3.8.1
fvm use 3.8.1
创建 .fvm/fvm_config.json 纳入版本控制,确保团队环境一致
常用组件与布局系统
核心布局组件
基础布局
线性排列,用于工具栏按钮横向排列
层叠布局,消息气泡上的引用标记
空间分配,输入框与发送按钮比例
响应式布局
return switch (width) {
< 600 => MobileLayout(),
< 900 => TabletLayout(),
_ => DesktopLayout(),
};
聊天界面专项实现
消息气泡渲染
CustomPainter + ShapeDecoration 实现带"尾巴"的不规则气泡
- • BorderRadius: 仅圆角矩形
- • ShapeDecoration: 自定义路径(主要方案)
- • CustomPainter: 完全自由(特殊效果)
代码高亮
flutter_highlight 集成,支持 180+ 编程语言
- • 行号显示
- • 复制按钮
- • 语言标签
- • 多主题支持
Markdown 渲染
flutter_markdown + 自定义元素构建器
- • 代码块(code)
- • 数学公式(latex)
- • 流程图(mermaid)
图片与文件预览
Hero 动画 + photo_view 实现流畅预览
- • 点击放大
- • 双指缩放
- • 左右滑动切换
- • 文件类型识别
路由与导航管理
路由方案选型
| 方案 | 特点 | 适用场景 | Kelivo 选择 |
|---|---|---|---|
| MaterialApp.routes | 静态配置、简单直观 | 页面少、无复杂参数 | 基础配置 |
| Navigator 1.0 | 动态灵活、栈操作 | 需要手动控制返回栈 | 部分使用 |
| go_router | 深层链接、路径参数 | 需要 URL 路由、Web 支持 | 未采用 |
| auto_route | 代码生成、类型安全 | 大型项目、复杂导航 | 未采用 |
页面层级结构
路由守卫
无 API 密钥配置时,强制跳转引导页面
插件生态系统与关键依赖
核心功能插件
网络通信
本地存储
文件处理
桌面端专属插件
| 插件 | 版本 | 功能 | 平台 |
|---|---|---|---|
| window_manager | ^0.3.7 | 窗口管理、尺寸、位置、置顶 | 全桌面平台 |
| tray_manager | ^0.2.2 | 系统托盘图标、右键菜单 | 全桌面平台 |
| desktop_drop | ^0.4.4 | 文件拖放进入应用窗口 | 全桌面平台 |
| hotkey_manager | ^0.1.7 | 全局快捷键注册 | 全桌面平台 |
| screen_retriever | ^0.1.9 | 多显示器信息获取 | 全桌面平台 |
状态管理架构
Provider 架构分层
Widgets"] --> B["ChangeNotifier
Provider"] B --> C["Service Layer
Business Logic"] C --> D["Repository Layer
Data Abstraction"] D --> E["Data Source
API / Local DB / Cache"] style A fill:#dbeafe,stroke:#1e40af,stroke-width:2px,color:#1f2937 style B fill:#dcfce7,stroke:#166534,stroke-width:2px,color:#1f2937 style C fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#1f2937 style D fill:#fce7f3,stroke:#be185d,stroke-width:2px,color:#1f2937 style E fill:#f1f5f9,stroke:#475569,stroke-width:2px,color:#1f2937
聊天状态管理:ChatProvider
性能优化
使用 Selector 替代 Consumer,避免整树重建
局部更新优化,消息列表流畅滚动
API 交互与网络层设计
多服务商抽象架构
OpenAI 实现
- • HTTP + SSE 协议
- • Bearer Token 认证
- • 组织 ID 可选
- • 函数调用支持
Claude 实现
- • x-api-key 头认证
- • 系统提示词单独字段
- • thinking 块处理
- • API 版本管理
流式响应处理
SSE 解析
UI 实时更新
错误处理
核心功能模块实现
对话系统
消息模型设计
上下文压缩策略
多模态输入
图片理解
- • Vision API 集成
- • 本地压缩优化
- • Base64 编码
- • 多模态消息格式
语音输入
- • speech_to_text 插件
- • 权限申请处理
- • 实时语音识别
- • 标点优化
文件解析
- • PDF 文本提取
- • Word 文档解析
- • 代码文件处理
- • 大文件分批处理
本地模型支持
Ollama 对接
离线检测
UI 适配:显示提示条,提供重试或切换选项
出行/配送类应用最佳实践
技术迁移说明
虽然 Kelivo 是 LLM 聊天应用,但其技术架构与出行/配送类应用有诸多共通之处。以下基于 Kelivo 的实践经验,推导可迁移的最佳实践。
地图与定位集成
地图插件选型
实时定位
- • geolocator 插件
- • 前台高精度定位
- • 后台位置更新
- • 电量优化策略
轨迹绘制
- • Polyline 动态更新
- • 平滑动画效果
- • 轨迹回放功能
- • 性能优化处理
Kelivo 架构迁移启示
多服务商抽象架构可直接迁移——定义
MapService 接口,实现
AmapService、
GoogleMapService,运行时根据区域切换
订单状态机设计
推送通知方案
实时同步架构
性能优化模式
列表优化
- • ListView.builder 按需构建
- • 图片懒加载
- • 内存缓存管理
- • 分页加载机制
地图优化
- • Marker 聚合算法
- • 瓦片缓存策略
- • 层级动态控制
- • 内存管理优化
电量优化
- • 定位精度动态调整
- • 后台任务限制
- • 地理围栏替代
- • 批量上传策略
特定技术实现细节
国际化(i18n)完整方案
ARB 文件管理
动态语言切换
主题系统深度定制
Material 3 适配
- • 动态配色提取
- • 系统主题跟随
- • 组件主题覆盖
- • 自定义主题扩展
自定义组件主题
系统主题监听
安全与隐私合规
证书固定(SSL Pinning)
防止中间人攻击