OpenOmniBot

English | 简体中文

你的端侧 AI 助手

GitHub Repo stars GitHub Release
omnimind-ai%2FOmniBot | Trendshift

| Demo | Quick Start | Release | Issues |

> OmniBot 直接运行在 Android 设备上,将聊天、Agent 工具、本地工作区与系统级集成整合在一个应用中。 > 🎉我们的iOS&macOS版本:https://github.com/omnimind-ai/ViaVera OmniBot 是一个基于 Android 原生 Kotlin 与 Flutter 构建的端侧 AI Agent。与传统 AI Chat 不同,它关注的是 **从理解 -> 决策 -> 执行 -> 反馈的完整闭环**。

核心能力

- **工具生态扩展**:Skills、Alpine 环境、浏览器、MCP、安卓系统级工具等。 - **系统级能力**:支持定时任务、闹钟提醒、日历创建/查询/修改、音频播放控制。 - **个人上下文**:无需 root,按授权查询日历、联系人、通知、应用使用情况、位置、媒体文件、文档、短信与通话记录,并支持日程和联系人管理。 - **记忆系统**:支持短期与长期记忆嵌入。 - **生产力工具**:支持读写文件、浏览工作区、调用浏览器、调用终端。

示例

快速开始 ### 配置应用 从左侧栏打开设置页面:

配置 AI 能力 配置 AI 提供商

然后前往场景模型配置:

配置 AI 模型

说明:除了 `Memory embedding` 强制需要嵌入模型之外,其他场景为了获得更好的体验,建议优先使用多模态或视觉模型。

Alpine 环境

一般情况下,应用启动时会自动初始化 Alpine 环境,你也可以在这里自行管理环境。

使用场景

### 个人上下文 在“设置 → 应用权限授权 → 个人上下文”逐项开启。AI 使用共享的设备工具按需查询,查询结果可能发送给当前配置的模型,不会自动建立长期记忆。日历与通讯录的读取、写入分别授权;后台查询位置还需单独选择“始终允许”。大致位置及仅选定照片也可使用。 通知访问与接收小万消息通知的开关独立。授权后观察到的通知在本地保留最多 7 天、10000 条,排除系统备份,可手动清空;无法恢复授权前已消失的通知或系统遮蔽的内容。撤销授权后停止记录和查询,聊天记录不受影响。 文件查询先返回元数据,读取内容时才导入已有文件收件箱。可通过系统选择器授权文件或文件夹,并在同一入口撤销。短信和通话记录仅支持读取,能否授权取决于安装器和系统限制;不会申请默认短信、电话或助理身份。本功能不需要 Shizuku、root 或无障碍,也不读取其他应用的私有数据库。 设备 MCP 与内置 Agent 共用工具定义和执行服务。`context_capabilities` 返回真实授权状态;缺少权限不会自动弹窗或终止普通聊天。联系人修改使用查询返回的 `rawContactId` 和 `version`,只修改选定账户记录;日历查询支持 `offset` 分页,全天日程使用 UTC 日期和不含结束日的区间。 ### Skills 你可以直接把 skills 仓库链接发给小万,让她帮你安装。推荐仓库:https://github.com/OpenMinis/MinisSkills 在技能仓库中可以选择开启或关闭某项技能:

技能仓库 技能示例

### 定时任务

定时任务 时间设置

定时任务用于执行 subagent 流程;闹钟仅用于提醒。你也可以把一个完整任务交给 subagent,它会像完整 agent 一样执行。 ### 浏览器

浏览器

### Workspace

Workspace

### Remote Codex bridge 如果希望在手机端使用运行在电脑上的 Codex 模式,请在已安装并登录 Codex CLI 的电脑上启动 `codex-bridge`: ```bash npx @thuocean/codex-bridge ``` 在终端交互中选择监听的局域网地址和 token 模式,然后在 OpenOmniBot 的 Codex 设置中扫码连接。更多选项和排障说明见 [codex-bridge README](tools/codex-bridge/README.md)。

开发指南

### 环境要求 - Flutter SDK `3.47.2+` - JDK `17+` - Node.js `20.19+` 或 `22.12+`、pnpm `10.28.0`(用于 WebUI 开发) ### 获取代码 ```bash git clone https://github.com/omnimind-ai/OpenOmniBot.git cd OpenOmniBot cd ui flutter pub get ``` 如果 Flutter 提示 `Could not read script '.../ui/.android/include_flutter.groovy'`,可以执行: ```bash flutter clean flutter pub get ``` ### 本地开发 WebUI `webchat/` 是独立的 React + TypeScript + Vite 项目。本地开发时由 Vite 提供热更新,并将 `/webchat/api` 请求代理到 Android 应用提供的本地服务。 1. 在 Android 设备上安装并启动 OpenOmniBot,确保电脑和设备位于同一个可信局域网。 2. 在应用中打开 **设置 > 本地服务**,启用服务并复制地址和 Token。默认端口是 `8899`,但应以应用实际显示的地址为准。 3. 从仓库根目录启动 WebUI 开发服务器。将下面的示例地址替换为 Android 本地服务地址,地址末尾不要添加 `/webchat`: ```bash cd webchat pnpm install --frozen-lockfile VITE_WEBCHAT_PROXY_TARGET=http://192.168.1.20:8899 pnpm dev ``` PowerShell 使用以下方式设置代理地址: ```powershell $env:VITE_WEBCHAT_PROXY_TARGET = "http://192.168.1.20:8899" pnpm dev ``` 打开 Vite 输出的地址(通常为 `http://localhost:5173`),输入从应用复制的 Token。端到端调试 API、SSE 实时事件、工作区和浏览器镜像时应使用 `pnpm dev`,开发代理会让这些请求和会话 Cookie 保持在同一本地域名下。 提交 WebUI 修改前执行: ```bash cd webchat pnpm run typecheck pnpm run build ``` 生产静态文件会生成到 `webchat/dist/`。`dist/` 和 `node_modules/` 都是本地产物,不应提交到仓库。 Android 构建会自动处理 WebUI:Gradle 使用锁文件安装依赖、执行 Vite 生产构建、清除旧 WebChat 资源,并且只将 `dist/` 复制进 APK。如需跳过完整 APK 构建、单独验证该流程,可以执行: ```bash ./gradlew :app:syncWebChatBundle -Ptarget=lib/main_standard.dart ``` 此流程不再使用 Flutter Web。 ### 构建并安装 安卓版本通过 `OMNIBOT_UPDATE_WORKER_URL` 访问网站后端,统一完成更新检查、 匿名统计、云服务门禁和官方视觉模型代理配置。默认地址为 `https://omnibot.omnimind.com.cn`,上游代理 Key 只保存在后端。 设置 → 关于小万 → 我要反馈使用同一网站表单,支持选择附件和可选联系方式; 迁移与发布配置见[集成说明](docs/website-backend-migration.md)。 Debug APK 统一使用 `LLMTHU_API_BASE`、`LLMTHU_API_KEY` 和 `LLMTHU_MODEL` 配置的 OpenAI-compatible LLM API,覆盖普通 LLM、上下文压缩 和 `scene.vlm.operation.primary`。 本地验收 Release 可显式传入 `-POOB_BUNDLE_LLMTHU_PROVIDER=1`,使用同一组 `LLMTHU_*` 配置完成开箱即用验收;普通 Release 和 CI 默认不内置该配置。 ```bash cd .. ./gradlew :app:installDevelopStandardDebug -Ptarget=lib/main_standard.dart ``` 真机验收可以使用仓库提供的 LLMTHU 安装入口。它默认启用 LLMTHU Provider,并从当前 shell 的 `LLMTHU_API_KEY` 读取密钥;未配置密钥时会直接 失败,不会生成无效的验收包。普通 Release 和 CI 仍不会自动内置密钥。 ```bash export LLMTHU_API_KEY='你的密钥' ./scripts/install_release_llmthu_device.sh ```

架构概览

```text OpenOmniBot/ ├── app/ # Android 主宿主模块:入口、Agent 编排、系统能力、MCP、前台服务 ├── ui/ # Flutter Android UI 模块:聊天、设置、任务和记忆 ├── webchat/ # React + TypeScript WebUI;由 Vite 构建并通过 Android 打包静态产物 ├── baselib/ # 基础核心库:数据库、存储、网络、模型配置、权限等 ├── assists/ # 公共任务生命周期与聊天/模型协调 ├── uikit/ # 原生浮层 UI:悬浮球、覆盖层面板、半屏界面 └── ReTerminal/core/ # 内嵌终端体验相关模块 ```

其他

感谢 [LINUX.DO](linux.do) 等社区开发者对 OpenOmniBot 的支持。 特别感谢这些优秀的开源项目: - https://github.com/RohitKushvaha01/ReTerminal - https://github.com/OpenMinis
WeChat Group
WeChat Group
加入 Discord 社区