Skip to content
项目

omnimind-ai/OmniBot has 2,134 GitHub stars and 153 forks. GitHot measured +1 stars in 24 hours and +52 in 7 days. Last checked 2026-11-11 12:39 UTC. Last push 2026-11-02.

这些数字如何统计

你的手机 AI 智能体 / Claw,可以操作终端,也能在 Android 世界中完成各种任务。

可以做什么

  • Extensible tool ecosystem: Skills, Alpine environment, browser access, MCP, and Android system-level tools.
  • System-level actions: Supports scheduled tasks, alarms, calendar creation/query/update, and audio playback control.
  • Personal context: Query authorized calendars, contacts, notifications, app usage, location, media, documents, SMS and call history without root, and manage calendar events and contacts.
  • Memory system: Short-term and long-term memory with embedding support.

实测星标增长

24小时
+1
7天
+52
15天
更新延迟
1个月
更新延迟

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README.zh-CN.md

原文

OpenOmniBot

English | 简体中文

你的端侧 AI 助手

GitHub Repo stars GitHub Release

| 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 日期和不含结束日的区间。

可选 Root 与设备控制

直接 Root 默认关闭。在“设置 → 应用权限授权 → 扩展能力”开启 Root 高级能力,主动向设备的 Root 管理器申请授权。授权有效时优先使用直接 Root;关闭后停止其命令与持久 shell。Shizuku 仍作为独立的可选后端使用。

Agent 可查询和修改支持的系统开关、显示与声音设置,管理应用权限、执行诊断和高权限 shell。状态修改与 shell 命令继续通过 ACP 客户端逐次确认;设备状态读回后才报告修改成功,ROM 不支持的接口明确返回错误。工具约定和兼容范围见 Android 高权限操作。

Skills

你可以直接把 skills 仓库链接发给小万,让她帮你安装。推荐仓库:https://github.com/OpenMinis/MinisSkills

在技能仓库中可以选择开启或关闭某项技能:

技能仓库 技能示例

定时任务

定时任务 时间设置

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

浏览器

浏览器

Workspace

Workspace

Remote Codex bridge

如果希望在手机端使用运行在电脑上的 Codex 模式,请在已安装并登录 Codex CLI 的电脑上启动 codex-bridge:

npx @thuocean/codex-bridge

在终端交互中选择监听的局域网地址和 token 模式,然后在 OpenOmniBot 的 Codex 设置中扫码连接。更多选项和排障说明见 codex-bridge README。

开发指南

环境要求

  • Flutter SDK 3.47.2+
  • JDK 17+
  • Node.js 20.19+ 或 22.12+、pnpm 10.28.0(用于 WebUI 开发)

获取代码

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',可以执行:

flutter clean
flutter pub get

本地开发 WebUI

webchat/ 是独立的 React + TypeScript + Vite 项目。本地开发时由 Vite 提供热更新,并将 /webchat/api 请求代理到 Android 应用提供的本地服务。

  1. 在 Android 设备上安装并启动 OpenOmniBot,确保电脑和设备位于同一个可信局域网。
  2. 在应用中打开 设置 > 本地服务,启用服务并复制地址和 Token。默认端口是 8899,但应以应用实际显示的地址为准。
  3. 从仓库根目录启动 WebUI 开发服务器。将下面的示例地址替换为 Android 本地服务地址,地址末尾不要添加 /webchat:
cd webchat
pnpm install --frozen-lockfile

VITE_WEBCHAT_PROXY_TARGET=http://192.168.1.20:8899 pnpm dev

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 修改前执行:

cd webchat
pnpm run typecheck
pnpm run build

生产静态文件会生成到 webchat/dist/。dist/ 和 node_modules/ 都是本地产物,不应提交到仓库。

Android 构建会自动处理 WebUI:Gradle 使用锁文件安装依赖、执行 Vite 生产构建、清除旧 WebChat 资源,并且只将 dist/ 复制进 APK。如需跳过完整 APK 构建、单独验证该流程,可以执行:

./gradlew :app:syncWebChatBundle -Ptarget=lib/main_standard.dart

此流程不再使用 Flutter Web。

构建并安装

安卓版本通过 OMNIBOT_UPDATE_WORKER_URL 访问网站后端,统一完成更新检查、 匿名统计、云服务门禁和官方视觉模型代理配置。默认地址为 https://omnibot.omnimind.com.cn,上游代理 Key 只保存在后端。 设置 → 关于小万 → 我要反馈使用同一网站表单,支持选择附件和可选联系方式; 迁移与发布配置见集成说明。 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 默认不内置该配置。

cd ..

./gradlew :app:installDevelopStandardDebug -Ptarget=lib/main_standard.dart

真机验收可以使用仓库提供的 LLMTHU 安装入口。它默认启用 LLMTHU Provider,并从当前 shell 的 LLMTHU_API_KEY 读取密钥;未配置密钥时会直接 失败,不会生成无效的验收包。普通 Release 和 CI 仍不会自动内置密钥。

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 等社区开发者对 OpenOmniBot 的支持。

特别感谢这些优秀的开源项目:

WeChat Group
WeChat Group
加入 Discord 社区

探索相关项目