资讯动态

拆解OmniBot模块化架构:app、ui、baselib、assists等模块如何协作

发布时间:2026/10/8 17:37:14 来源:尧图企业网站定制
拆解OmniBot模块化架构app、ui、baselib、assists等模块如何协作【免费下载链接】OmniBotYour on-phone / mobile AI Agent / Claw, capable of operating terminals and performing a wide range of tasks in the Android world || 你的手机 AI 代理她可以操作终端也可以完成 Android 世界的广泛任务项目地址: https://gitcode.com/gh_mirrors/op/OmniBotOmniBot 是一款运行在 Android 手机上的 AI Agent 应用可以操作终端、完成 Android 世界的各种任务。它的源码采用典型的模块化架构app做宿主编排、ui承载 Flutter 聊天界面、baselib提供数据库与网络等基础能力、assists管理任务生命周期。本文带你逐一看清这些模块的职责边界与协作方式快速建立对 OmniBot 整体架构的认知。一张图看懂8 个核心模块各管一摊OmniBot 是一个 Android 原生 Kotlin Flutter 的混合应用。所有模块在 settings.gradle.kts 中统一注册一眼就能看出架构全貌模块路径一句话职责appapp/Android 主宿主入口、Agent 编排、MCP 服务、前台服务uiui/Flutter UI 模块聊天、设置、任务与记忆界面baselibbaselib/基础核心库数据库、存储、网络、模型配置、权限assistsassists/任务状态机与聊天/模型协调uikituikit/原生浮层 UI悬浮球、覆盖层面板、半屏界面androidgui/accessibilityandroidgui/Android 系统操作与无障碍能力封装omniflow-androidomniflow-android/GUI VLM视觉操作Android 适配层coreReTerminalReTerminal/core/内嵌终端terminal-emulator 与 terminal-view▲ OmniBot AI Agent 应用界面聊天、工作区与终端能力整合在一个应用中可以看到app是唯一的应用模块application其余全部是 library 模块职责单一、相互按需依赖。app 模块宿主入口与 Agent 编排中枢app是整个应用的“总装车间”。它的依赖清单基本就是架构的缩影见 app/build.gradle.kts:flutter来自ui/模块加载 Flutter 界面:baselib、:assists、:uikit三大核心库:core:main、:core:terminal-view、:core:terminal-emulator内嵌终端运行时:omniflow-androidGUI 视觉操作能力MCP Server SDK、Ktor 本地服务器、Shizuku支撑工具生态、本地 Web 服务与系统级特权操作也就是说Agent 的“理解 → 决策 → 执行 → 反馈”闭环编排逻辑都发生在app层它向下调度各模块能力向上为 UI 提供统一接口。开发相关的构建与测试命令可参考 AGENTS.md 与 README.zh-CN.md。ui 模块Flutter 打造的聊天与设置界面用户日常看到的聊天窗口、场景模型配置、定时任务、记忆管理都在ui/这个 Flutter 模块里。目录结构清晰lib/features/放功能页面lib/services/放服务层lib/models/放数据模型。ui模块并不是独立 App而是以 Flutter Module 形式被 Gradle 引入settings.gradle.kts 通过ui/.android/include_flutter.groovy脚本把它注册为:flutter项目再由app以implementation(project(:flutter))的方式嵌入原生壳中。Kotlin 与 Flutter 之间通过通信通道Method ChannelFlutterEngineGroup共享引擎实例实现高效协作见 AGENTS.md 的架构说明。▲ 左侧抽屉进入设置ui 模块承载 AI 能力配置、模型选择等界面baselib 模块所有模块共享的地基baselib是依赖链的最底层数据库、文件存储、网络请求、模型配置、权限管理等横切能力都在这里。assists、androidgui、omniflow-android等模块都直接或间接依赖它如 assists/build.gradle.kts。这样设计的收益很直接单一事实来源——其他模块不重复造轮子稳定边界——基础能力改动不影响上层业务易于测试——baselib/src/test/下有大量单元测试保障地基质量。assists 模块任务状态机让 Agent 行为可控OmniBot 的 Agent 任务陪伴对话、学习、定时任务三类由assists模块中的状态机统一管理核心实现见 assists/ 下的StateMachine.kt。▲ 配置页面由 ui 呈现底层任务调度则交给 assists 状态机协调状态机负责三类任务的状态流转与生命周期协调并在 UI、前台服务和后台协程之间传递消息。对新手来说理解这个模块的关键是界面ui只负责“展示”执行编排交给 assists系统能力下沉到 baselib——三层分离是 OmniBot 最核心的设计思想。小而精的支撑模块uikit、androidgui 与终端uikit原生浮层组件悬浮球、覆盖层面板、半屏界面等不经过 Flutter 的轻量 UI 都在这里适合需要系统级悬浮的场景androidguiaccessibility封装 Android 系统操作与无障碍服务是 Agent 能“操作手机”的底层通道依赖关系见 androidgui/build.gradle.ktsReTerminal/core提供内嵌终端体验terminal-emulator负责终端仿真内核terminal-view负责渲染视图让 Agent 可以直接在手机上操作 Alpine 等 Linux 环境。模块如何被串起来构建流水线视角除了 Gradle 依赖还有两条“隐性”装配链路值得注意WebUI 打包webchat/ 是独立的 React TypeScript 项目。app构建时会先用 pnpm 安装锁文件依赖、执行 Vite 生产构建再把dist/产物拷入 APK assets见 app/build.gradle.kts插件资源同步plugins/catalog.v1.json 描述插件目录构建时按main/investor两种 profile 选择性同步进 APKapp/build.gradle.kts。这意味着一次./gradlew installDevelopStandardDebug命令背后Flutter 模块、React 构建、插件同步、原生模块编译是协同完成的。总结这套模块化架构好在哪职责清晰入口编排在app、界面在ui、地基在baselib、调度在assists新人按目录即可上手依赖方向严格向下业务模块依赖baselib但baselib不反向依赖任何业务模块扩展位预留充分插件目录、MCP、Shizuku 特权通道都是独立模块接入不侵入核心混合技术栈不打架Flutter、React、原生 Kotlin 各有边界通过构建脚本统一装配。如果你想继续阅读建议从 README.zh-CN.md 的「架构概览」和 AGENTS.md 入手再按本文的模块顺序逐个打开对应目录整个 OmniBot 的架构地图就完整了。【免费下载链接】OmniBotYour on-phone / mobile AI Agent / Claw, capable of operating terminals and performing a wide range of tasks in the Android world || 你的手机 AI 代理她可以操作终端也可以完成 Android 世界的广泛任务项目地址: https://gitcode.com/gh_mirrors/op/OmniBot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑