Kotlin Multiplatform pro AI agenty: výhody, nevýhody a nástrahy releasů
Vývoj dvou aplikací na Kotlin Multiplatform (KMP) během půl roku odhalil klíčové aspekty: opětovné využití kódu na Androidu, iOS, Webu, Desktopu a backendu. Společný kód agentů se integrovat s knihovnami jako koog, mcp-sdk a cactus pro lokální modely. Zkušenost ukázala rovnováhu mezi ekosystémem JVM a platformově specifickými omezeními.
Hlavní výhody KMP
KMP umožňuje centralizovat obchodní logiku agentů a minimalizovat duplikaci. Ekosystém JVM poskytuje SDK pro poskytovatele LLM, zatímco Compose Multiplatform zjednodušuje UI s hot reload. Nativní sestavy pro Android využívají Skia pro iOS, i když Desktop spoléhá na JAR obálky.
Klíčové výhody:
- Opětovné využití společného kódu na 4+ platformách.
- Bohatý ekosystém JVM pro agenty a modely.
- Stabilní Kotlin se zpětnou kompatibilitou.
- Compose s minimálními chybami UI.
Zřejmé omezení
Podpora více platform vyžaduje expect/actual pro specifický kód. Desktopové aplikace rostou kvůli JVM a Swing, Web zůstává v beta fázi s chybami knihoven a problémy s SEO. Ladění na iOS je primitivní, interop se Swift zaostává za JVM. UI na Desktopu vypadá neidiomaticky.
Neočekávané problémy vývoje
Releasové sestavy pro macOS trvají týdny: dva app ID (JRE a aplikace), tři podpisové klíče, oddělené konfigurace pro store a DMG s notářstvím (15+ min na iteraci). Nativní knihovny proces komplikují – zdroje v JAR před podpisem, výjimky ProGuard, kompatibilita s Catalina (63 % uživatelů). Vyžaduje JDK 18+ pro TestFlight, oddělené sestavy aarch64/x86_64.
Příklad typických kroků pro releasovou sestavu:
- Generování klíčů pro store a přímou distribuci.
- Umístění nativních zdrojů do JAR.
- Zpracování obfuskace ProGuard.
- Notářství a ladění (5+ iterací).
- Ověření na starších macOS.
Chybí senior specialisté na KMP: trh se zaměřuje na jednu platformu. Platformově specifické úkoly (certifikáty ministerstva na iOS vs Android) vyžadují hluboké znalosti. LLM ne vždy zvládnou nestandardní scénáře.
Konflikty knihoven a předimenzování
Alfa knihovny jako kotlinx-datetime způsobují konflikty verzí: koog táhne nekompatibilní závislosti od září. Web bez Dispatchers.IO nutí větvení ve společném kódu. Vyvádění JVM logiky pro Android/Desktop/backend přidává kompilaci, ale duplikuje reflexi.
Řešení volby:
- JVM společný kód: kompromis u reflexe.
- Loggery: rovnováha logback a rozumných výchozích nastavení.
- Testy: mockování kontextu Androidu, přidání Desktopu pro rychlost.
XCode zhoršuje bolest: pomalý start, zpomalené autodoplňování, náhodné chyby. 6,1 % vývojářů na Stack Overflow 2025 jsou ochotni to snášet.
Realizace AI agentů bez frameworků
Odmítnutí langchain4j (nafouknutý, legacy) a koog (alfa, zbytečné závislosti jako simpleOpenAIExecutor). Vlastní realizace: graf uzlů s callback na přechody, klasifikace, RAG, zpracování chyb. Výhody – kontrola, minimum závislostí, bez OpenTelemetry.
Graf agenta se vizualizuje pro ladění, persistence state machine se realizuje ručně pro odolnost vůči chybám. Testování se zaměřuje na společný kód s platformově specifickými mockery.
Testování agentního kódu
Testy běží na iOS/Android s mockováním kontextu. Desktop urychluje CI. Problémy: dlouhá kompilace, platformově závislé Dispatchers. Doporučení – unit testy na JVM, integrační na cílových platformách.
Co je důležité:
- Releas macOS vyžaduje týdny na klíče, notářství, ProGuard.
- Konflikty verzí alfa knihoven (kotlinx-datetime) láme sestavu.
- Vlastní agenti jsou jednodušší než frameworky pro niche LLM (GigaChat).
- Senior na KMP je vzácnost; potřebné platformově specifické dovednosti.
- XCode je bottleneck pro iOS vývoj.
Celková zkušenost: KMP se vyplatí pro AI agenty s JVM backendem, ale releas a iOS/Web vyžadují expertizu.
— Editorial Team
Zatím žádné komentáře.