10
Dev.to Kotlin
作者:Nguyen Phuc Hai
發布:02-17 00:54
Building a Desktop AI Chat App for ChatGPT, Claude, Gemini & Ollama
Askimo is an open-source Kotlin Compose desktop client that unifies multiple AI providers and implements streaming, RAG, and token-aware memory while keeping conversations local.
重點摘要
Unifies multiple AI providers (ChatGPT, Claude, Gemini, Ollama) in one desktop client
Desktop-first benefits: privacy, persistent state, native performance and offline access
Core patterns: provider abstraction, streaming responses, hybrid RAG retrieval, token-aware summarization
Nguyen Phuc Hai presents Askimo, an open-source desktop AI chat client built with Kotlin and Compose for Desktop that consolidates ChatGPT, Claude, Gemini and local Ollama models into a single application. The article argues for a desktop-first approach—zero infrastructure, persistent local state, stronger privacy, native performance and offline capabilities—and explains why Kotlin/Compose enables substantial code reuse for future mobile apps. It details Askimo’s architecture: a provider-agnostic ChatModelFactory, streaming response handling via Coroutines and StateFlow, LRU session caching, and token-aware summarization to compress old messages and control API costs and context limits. The RAG pipeline uses hybrid vector (JVector) and keyword (Lucene) retrieval merged by Reciprocal Rank Fusion. Practical features include incremental persistence of partial streams on errors, cheap utility clients to reduce cost, memory/performance trade-offs, and guidance for extending providers and RAG sources.
为 ChatGPT、Claude、Gemini 与 Ollama 构建桌面 AI 聊天应用
Askimo 是使用 Kotlin 与 Compose for Desktop 开发的开源桌面客户端,整合多家 AI 提供商,支持流式响应、RAG 与基于 token 的记忆管理,并以本地优先保障隐私。
重點摘要
将多家 AI 提供商整合到单一桌面客户端(ChatGPT、Claude、Gemini、Ollama)
桌面优势:零基础设施、持久状态、本地隐私、原生性能与离线访问
核心架构:提供者抽象、Coroutine/StateFlow 串流、混合 RAG 检索、token-aware 自动摘要
本文介绍 Askimo:一个用 Kotlin 与 Compose for Desktop 构建的开源桌面 AI 聊天客户端,将 ChatGPT、Claude、Gemini 以及本地 Ollama 等模型整合到单一应用中。文章阐述桌面优先的理由——无需服务器、持久本地状态、更好的隐私、原生性能和离线能力,并说明 Kotlin/Compose 如何在未来复用大量代码到移动端。文中详细描述架构要点:提供者无关的 ChatModelFactory、通过协程与 StateFlow 处理流式响应、LRU 会话缓存与并发管理、以及基于 token 的摘要策略以控制 API 成本和上下文窗口。RAG 流程采用向量(JVector)与关键词(Lucene)混合检索并以 RRF 合并结果。还涵盖了部分响应的增量保存、低成本工具模型、内存与性能权衡,以及扩展与贡献路径。
為 ChatGPT、Claude、Gemini 與 Ollama 建置桌面 AI 聊天應用
Askimo 是以 Kotlin 與 Compose for Desktop 開發的開源桌面客戶端,整合多個 AI 提供者,支援串流回應、RAG 與基於 token 的記憶管理,並以本地優先保障隱私。
重點摘要
整合多家 AI 供應商於單一桌面應用(ChatGPT、Claude、Gemini、Ollama)
桌面優勢:零伺服器、持久狀態、本地隱私、原生效能與離線能力
關鍵實作:提供者抽象、Coroutine/StateFlow 串流、混合 RAG 檢索、token-aware 自動摘要
本文介紹 Askimo:以 Kotlin 與 Compose for Desktop 開發的開源桌面 AI 聊天客戶端,整合 ChatGPT、Claude、Gemini 與本地 Ollama 等多種模型。作者說明為何選擇桌面優先(零伺服器、永續狀態、本地隱私、原生效能與離線能力),並解析系統架構:提供者抽象(ChatModelFactory)、以 Coroutine/StateFlow 處理串流回應、LRU 會話管理、混合向量+關鍵字檢索的 RAG 流程(以 RRF 合併 JVector 與 Lucene)及基於 token 的自動摘要以控制 API 成本與上下文限制。文章也說明部分回覆的增量保存、廉價工具模型以降低費用、記憶體與效能的權衡,並提供擴充與貢獻的方向。