Advanced Informatics Scholar · 你的个人 AI 研究助手(Android)
Gist 是面向科研/学习场景的信息采集与分析助手:
- 移动端负责入口与轻处理,提供快速采集、浏览、编辑与管理。
- 云端负责结构化与 AI 解析(NocoDB + SiliconFlow)。
- 本地负责流畅展示与离线缓存(Room SSOT)。
应用采用 Hybrid UI:主列表与交互使用 WebView 内的 React/Tailwind 页面,详情页与系统能力使用 原生 Compose。
- 混合 UI:
assets/main_ui.html+assets/login.html作为主/登录界面,详情页为 Compose。 - 研究卡片管理:paper / competition / insight / voice 统一列表,支持搜索、过滤、项目归属、星标、阅读状态。
- 详情页:Markdown 渲染、编辑保存、标记已读/星标/删除、项目归属同步。
- 账号系统:NocoDB 用户表注册/登录;本地 EncryptedSharedPreferences 缓存 token。
- 悬浮窗助手:全局悬浮球,支持全屏/区域截图、剪贴板链接检测、手动输入链接;AI 解析入库。
- 语音采集:语音录制 + 本地识别 + AI 润色优化,快速记录灵感。
- AI 能力:SiliconFlow(Qwen2.5 文本/视觉)用于链接解析、OCR、摘要、语音优化。
- 启动优化:WebView 预热与页面缓存,Splash 动画等待初始化完成。
注意:Web UI 依赖 CDN/ESM(React、Tailwind、Framer Motion、Lucide),运行时需要网络。
- UI:Compose + WebView Hybrid
- 状态:MVVM(ViewModel + StateFlow)
- 数据:Room 作为 SSOT;NocoDB 作为远端数据源
- 依赖注入:Hilt
- 网络:Retrofit + OkHttp + Kotlinx Serialization
- 本地存储:Room + DataStore + EncryptedSharedPreferences
数据流(简化):
Web UI (React) <-> JS Bridge <-> ViewModel <-> Repository
|-> Room (SSOT)
|-> NocoDB API
|-> AIService (SiliconFlow)
FloatingWindowService -> AIService -> Repository -> Room/NocoDB
| 模块 | 技术选型 |
|---|---|
| 语言 | Kotlin (2.0.21) |
| UI | Jetpack Compose (Material 3, iOS 风格主题) |
| 架构 | MVVM + Clean Architecture |
| 依赖注入 | Hilt |
| 网络 | Retrofit + OkHttp + Kotlinx Serialization |
| 本地存储 | Room + DataStore |
| 安全存储 | EncryptedSharedPreferences |
| Markdown | compose-markdown |
| 模块 | 技术选型 |
|---|---|
| 核心 | React 18(ESM 运行时导入) |
| 样式 | Tailwind CSS(CDN) |
| 动画 | Framer Motion |
| 图标 | Lucide React |
| 模块 | 技术选型 |
|---|---|
| Headless CMS | NocoDB(自建) |
| AI 服务 | SiliconFlow API(Qwen2.5) |
app/src/main/
├─ assets/ # Web 前端资源
│ ├─ main_ui.html # 主界面(React)
│ └─ login.html # 登录界面(React)
├─ java/com/example/ai4research/
│ ├─ core/ # 主题、网络拦截、工具、安全
│ ├─ data/ # 数据层(Room + Retrofit)
│ ├─ domain/ # 领域模型与仓库接口
│ ├─ ui/ # Compose 界面
│ ├─ service/ # 悬浮窗、截图、AI 服务
│ ├─ navigation/ # 导航图
│ └─ di/ # Hilt 模块
└─ res/ # Android 资源
- Android Studio Koala 或更高版本
- JDK 17(AGP 8.x 需要)
- Android SDK 34(Target),Min SDK 26
- 克隆仓库并打开项目。
- 等待 Gradle 同步完成。
- 连接设备或启动模拟器。
- 运行
app。
- NocoDB:在
app/src/main/java/com/example/ai4research/core/util/Constants.kt设置NOCO_BASE_URL与NOCO_TOKEN。 - SiliconFlow:在
app/src/main/java/com/example/ai4research/service/AIService.kt设置API_KEY。
生产环境建议将密钥移至安全配置(例如
local.properties+ CI 注入),避免硬编码。
| 权限 | 用途 |
|---|---|
INTERNET |
访问 NocoDB / AI 服务 / Web 依赖 |
RECORD_AUDIO |
语音采集录音 |
SYSTEM_ALERT_WINDOW |
悬浮窗显示 |
FOREGROUND_SERVICE |
悬浮窗服务常驻 |
FOREGROUND_SERVICE_MEDIA_PROJECTION |
截图能力 |
POST_NOTIFICATIONS |
通知权限(Android 13+) |
欢迎提交 Issue 或 PR 改进项目。
