基于 Tencent KuiklyUI 的 AI 股票行情原型 Demo,使用 Kotlin Multiplatform(KMP)编写,一套代码跨 Android / iOS。
- 股票名称、代码、最新价、涨跌额、涨跌幅色块展示(红涨绿跌)
- 顶部市场概况:实时统计上涨 / 下跌 / 平盘家数
- 搜索:输入股票名称或代码,列表实时过滤;清空即恢复全量
- 排序:默认 / 涨幅榜 / 跌幅榜三档,点击立即重排,选中标签高亮
- 点击任意行跳转个股详情页
- 基础信息:名称、代码、最新价、涨跌幅
- 8 项指标网格:今开、昨收、最高、最低、成交量、成交额、市值、市盈率
- 趋势判断(看涨 / 看跌 / 震荡)+ 置信度进度条
- 信号标签(利多 / 利空)
- 买入 / 卖出建议卡片
- 操作提示区
- 风险等级徽章(高 / 中 / 低)+ 风险提醒文案
- 行情总结
- 可折叠 AI 配置面板,支持接入任意 OpenAI 兼容大模型(DeepSeek、通义千问、Kimi 等)
| 项目 | 版本 |
|---|---|
| KuiklyUI | 2.7.0 |
| Kotlin | 2.1.21 |
| Android compileSdk | 34 |
| Android minSdk | 23 |
只能通过 Android Studio 构建,不支持纯命令行
assembleDebug(环境 dex 工具链限制)。
- 打开 Android Studio,导入项目根目录
- 等待 Gradle 同步完成
- 选择
androidApprun configuration,连接设备或启动模拟器后点击运行
默认使用本地规则引擎生成 AI 分析。接入真实大模型:
- 复制配置模板:
cp shared/src/commonMain/kotlin/com/elyric/aistockmarket/ai/AiRuntimeConfig.kt.example \ shared/src/commonMain/kotlin/com/elyric/aistockmarket/ai/AiRuntimeConfig.kt
- 填入
BASE_URL、MODEL、API_KEY(示例见模板注释) - 该文件已加入
.gitignore,不会被提交到 git
支持的服务商示例:
| 服务商 | BASE_URL | MODEL |
|---|---|---|
| DeepSeek | https://api.deepseek.com |
deepseek-chat |
| OpenAI | https://api.openai.com |
gpt-4o |
| 通义千问 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
qwen-turbo |
| Kimi | https://api.moonshot.cn/v1 |
moonshot-v1-8k |
BASE_URL末尾不要加/chat/completions,框架会自动拼接。
body()只在页面构建时执行一次,普通 KotlinforEach/if不会随 Observable 变化重渲染- 列表必须用
vfor { observableList },且 creator lambda 只能产生一个顶层子节点(多个子节点会抛运行时错误) - 条件渲染用
vif { condition } - 需要随 Observable 变化更新的样式(背景色、字体色等),必须在
attr {}闭包内直接读,不能提前缓存到val
body()的 lambda 及各 helper 函数内,访问页面成员需要显式 receiver,推荐在每个渲染函数顶部val ctx = this@PageClass- helper 函数签名用
fun render(c: ViewContainer<*, *>, ...) = with(c) { ... },不要写成扩展函数
- 使用
RouterModule.openPage("page_name", jsonObject)跳转 - 目标页通过
getPager().pageData接收参数 - 入口页在
KuiklyRenderActivity中配置,当前默认为stock_list
AiRuntimeConfig.kt已加入.gitignore,严禁提交含真实 Key 的文件- 提交前用
git status确认该文件未出现在暂存区


