SuperAPI AI 工具集

moai-lang-kotlin

编程与开发

查看项目

更新于 10-16 10:33

技能介绍

用途

moai-lang-kotlin 是一个 Kotlin 2.0+ 开发专家型技能,用于在编码过程中提供 Kotlin 生态的语言与框架指导。它面向服务器应用与跨平台 UI 开发,覆盖从语言特性到构建、测试的完整链路。

主要能力

  • Kotlin 2.0:K2 编译器、协程、Flow、密封类、值类。
  • Ktor 3.0:异步 HTTP 服务器/客户端、WebSocket、JWT 认证。
  • Exposed 0.55:支持协程的 Kotlin SQL 框架。
  • Spring Boot(Kotlin):Kotlin 风格 Spring 与 WebFlux。
  • Compose Multiplatform:桌面、iOS、Web、Android UI。
  • 测试:JUnit 5、MockK、Kotest、用于 Flow 测试的 Turbine。
  • Context7 集成:为 Ktor、Exposed、Kotlin、kotlinx.coroutines、Compose Multiplatform、Arrow 等库映射最新文档。

使用方式

  • 自动触发:处理 Kotlin 文件(.kt、.kts)或 Gradle Kotlin DSL(build.gradle.kts、settings.gradle.kts)时触发。
  • 协程与 Flow:使用 coroutineScope 配合 async 进行并行操作,创建 deferred 值后对每个调用 await,再合并为数据类;响应式流使用 flow 块配合 emit、delay 与 flowOn 指定调度器。
  • 密封类与值类:定义带泛型参数的密封接口,用数据类与 data object 表达成功/加载等状态;用 @JvmInline 包装原始类型,并在 init 块中用 require 校验。
  • Ktor 3.0 服务端:使用 embeddedServer 配置 Netty、端口与主机,安装 Koin、安全、路由与内容协商;用 Authentication 插件配置 JWT(realm、verifier、validate),用 ContentNegotiation 配置 json;路由中用 route 定义路径前缀,用 authenticate 包裹受保护路由,用 call.receive 读取请求体,用 call.respond 返回状态码与响应体。
  • Exposed:用 LongIdTable 定义表对象与列,配合 uniqueIndex、defaultExpression;用 LongEntity 与伴生对象映射实体,toModel 转为领域模型;仓储实现接收 Database,通过 newSuspendedTransaction 与 IO 调度器封装 suspending 查询。
  • Spring Boot + Kotlin:在 @RestController 中用 suspend 函数配合 @GetMapping、@PostMapping,集合返回 Flow,通过 map 转换实体,用 @Valid 校验请求。
  • Compose Multiplatform:用 @Composable 接收 ViewModel 与回调,collectAsState 收集 uiState,用 when 匹配密封状态展示加载/成功/错误界面;列表项用 Card、Row、AsyncImage 与 MaterialTheme.typography。
  • 测试:用 MockK 创建 mock,runTest 运行协程测试,coEvery/coAnswers 模拟异步与延迟,assertThat 断言;Flow 测试用 toList 收集发射结果。
  • Gradle 配置:plugins 块声明 kotlin("jvm")、kotlin("plugin.serialization") 与 ktor.plugin,kotlin 块配置 jvmToolchain,dependencies 中加入 Ktor 服务端模块、kotlinx coroutines、Exposed 模块、PostgreSQL 驱动及 mockk、coroutines-test、turbine 测试依赖。
  • Context7 调用:使用 mcp__context7__get_library_docs,传入 context7CompatibleLibraryID、topic 与 tokens 参数。

适用场景

  • 开发 Android 应用(官方语言)。
  • 使用 Ktor 构建现代服务器应用。
  • 偏好简洁、表达力强的语法。
  • 使用协程与 Flow 构建响应式服务。
  • 创建多平台应用(iOS、桌面、Web)。
  • 需要与 Java 完整互操作。

限制与替代建议

  • 若为遗留 Java 代码库且要求最小改动,请考虑替代方案。
  • 大数据流水线场景建议使用 Scala 配合 Spark。
  • 与其他技能配合:moai-lang-java(Java 互操作与 Spring Boot)、moai-domain-backend(REST API、GraphQL、微服务)、moai-domain-database(JPA、Exposed、R2DBC)、moai-quality-testing(JUnit 5、MockK、TestContainers)、moai-infra-docker(JVM 容器优化)。

故障排查

  • K2 编译器:在 gradle.properties 添加 kotlin.experimental.tryK2=true,清理 .gradle 目录后完整重建。
  • 协程:避免在 suspending 上下文中使用 runBlocking;阻塞操作使用 Dispatchers.IO。
  • Ktor:确认已安装 ContentNegotiation,检查 JWT verifier 配置与路由层级。
  • Exposed:确保所有数据库操作在事务上下文中执行;注意事务外实体延迟加载。

补充说明

更完整的参考材料包括 reference.md(生态系统、Context7 映射、测试模式、性能)与 examples.md(生产级代码示例、Ktor、Compose、Android 模式)。资料标注最后更新为 2026-01-11,状态为 Production Ready(v1.1.0)。具体的安装命令、收费与价格信息暂未提供。