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

发布时间:2026/10/8 17:37:14

拆解OmniBot模块化架构:app、ui、baselib、assists等模块如何协作 拆解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),仅供参考
延伸阅读

更多相关文章

2026/10/8 17:37:14

如何自定义Zap的系统提示词:minijinja模板编辑完整教程

如何自定义Zap的系统提示词:minijinja模板编辑完整教程 【免费下载链接】zap Zap is an open, local-first terminal with first-class AI and agent support. 项目地址: https://gitcode.com/gh_mirrors/warp50/zap Zap 是一款开放、本地优先的 AI 终端&…

2026/10/8 17:37:14

给Claude Code装上记忆:claude-mem部署与召回机制全解

说句大实话:我最早对这个工具感兴趣,纯粹是因为一个特别尴尬的场面。当时我在一个大型 monorepo 里做跨模块重构,Claude Code 干了一半,切到别的分支处理紧急 bug,回来之后它把之前的上下文忘得一干二净。CLAUDE.md 里…

2026/10/8 18:32:29

2026全国知识管理软件排行榜 5个核心维度实力横评

开篇速览:2026知识管理软件选型核心参考标准中国软件行业协会2025年企业级软件选型调研数据显示,68%的企业在知识管理工具选型时,最关注系统集成能力、数据安全合规性、功能与业务场景的适配度三类核心指标,当前知识分散、系统割裂…

2026/10/8 18:32:29

多智能体系统混合架构设计:自研编排与通用框架协同落地

1. 这不是技术站队,而是工程现实的妥协:一个真实落地项目里的架构选择逻辑“多智能体系统”这个词现在听上去很酷,但如果你真在一线带过三个以上Agent协同任务的项目,就会发现它背后藏着一连串让人头皮发紧的问题:任务…

2026/10/8 18:32:29

从全员级AI Agent落地实践看企业智能体架构、并发与信任建设

接近100%员工都在用AI Agent,这个数据刚看到的时候,我的第一反应是:多半又是PR稿。直到把他们的技术分享材料翻了一遍,又跟几个正在用这套系统的朋友聊了聊,才确认这是真事,而且比"全员使用"这个…

2026/10/8 18:32:29

编程自学第二阶段复盘:从照抄代码到独立写项目

从第一个“hello world”到现在能独立写完一个小工具,中间隔着的不是代码量,而是对“编程到底是什么”这件事的理解。这篇“初学总结2”是我自己第二阶段的复盘笔记——第一阶段我在学语法,第二阶段我在学怎么“用代码解决问题”。如果你也处…

2026/10/8 18:27:29

子智能体只是分身,多智能体才是责任组织

既然 Workbuddy、Codex、TRAE、OpenClaw 都能使用"子智能体"同时开工,是不是所谓"多智能体"也就实现了,那为什么还要折腾一套多智能体体系出来呢?子智能体Subagent和多智能体 Multi-Agent 的区别:一个是主控临…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑