Back / 文章

2026/8/1 · 项目日志

Lociant Android Runtime:启动稳定性修复与架构说明

基于 C++/Kotlin 的本地 AI 运行时,支持 OpenAI/MCP 协议。本次更新修复了主线程访问数据库导致的崩溃问题,确保启动稳定性及控制 API 规范一致性。

Lociant 是一个基于 Android 原生的本地 AI 运行时,旨在将手机转化为可见的、优先本地的推理环境。项目采用 C++与 Kotlin混合开发,支持 OpenAI 兼容接口及 MCP协议。近期在构建过程中遇到启动稳定性问题,现对数据库访问逻辑进行了调整。

这次变化

最近一次提交修复了主线程访问 Room 数据库导致的启动闪退现象。LociantServer构造函数会急切创建默认会话,而 LociantRuntime在主线程初始化时触发了Room的主线程保护异常。鉴于会话数据库是小型本地库且仅在进程启动时被触及,请求路径的数据库访问仍全部位于后台线程,本次调整仅针对单次启动读写解锁主线程权限,通过添加allowMainThreadQueries()实现。

实现与取舍

Lociant 1.0版本确立了清晰的协议边界与控制面分离原则。OpenAI数据平面、MCP流式HTTP以及控制API分别对应不同的路径和契约设计。这种架构决策避免了旧版路由的混合用途,确保了错误形状符合各自协议规范。同时,前景服务独占 HTTP 服务器生命周期,WebView桥接仅暴露显式原生方法而非字符串命令总线。这些限制虽然增加了开发复杂度,但提升了系统的可维护性与安全性。此外,模型目录扫描使用不可变快照机制,Store读写采用原子文件提交策略,确保数据一致性不受并发影响。

后续计划

目前项目处于稳定迭代阶段。接下来的工作将集中在验证现有控制 API的行为一致性以及确保模型目录扫描使用不可变快照机制。对于旧版本应用 ID或数据库的迁移不存在支持策略,升级需重新安装并配置新令牌。在没有明确需求的情况下,将继续维护现有的协议边界与工具暴露策略,不随意引入新功能路线,优先保证 OpenAI、MCP 及控制端口的兼容性验证工作顺利完成。同时关注 Android SDK 36 环境下的构建稳定性,确保调试测试通过后再进行发布准备。