スマートフォンの上で動作する自律型AIエージェント — OpenDroidの徹底解説
GoogleアシスタントやSiriのような従来のモバイルアシスタントは、長い間天井にぶつかってきました。タイマーを設定したりアプリを開いたりすることは得意ですが、複数の関連するアクションを順番に実行するように電話に指示してみてください:天気予報を確認、奥さんにWhatsAppでメッセージを送る、アラームを設定する、などです。通常は、Web検索の提案か、認識エラーが表示されます。
開発者のYashab Alamさんはこの問題に違うアプローチを取り、GitHubでOpenDroidプロジェクトを公開しました。これは、Android向けの完全にオープンソースの自律型AIエージェントで、スマートフォンをLLM実行環境に変えます。

なぜもう1つのアシスタントが必要なのか
OpenDroidの主なアイデアは、ニューラルネットワークに標準的なAndroidサービスを通じてデバイスへの直接制御を与えることです。単純なテンプレートではなく、システム全体が完全な計画と実行サイクルを使用します。
複雑なコマンドを与えると、エージェントはそれをサブタスクに分解し、各ステップの結果を確認し、問題があれば計画を再度構築します。プロジェクトのソースコードは完全にオープンで、使用するモデルはクラウドベースか完全にローカルかを選択できます。
このプロジェクトはGitHubで600以上のスターを獲得しており、Kotlinベースの堅実なアーキテクチャで注目されています。
エージェントの内部動作
OpenDroidのアーキテクチャは、Clean Architectureの原則に従い、Dagger-Hiltによる依存性注入を使用しています。テキストとロジックは明確なモジュールに分離され、インターフェースはJetpack Composeで書かれています。
com.opendroid.ai
│
├── accessibility/ Автоматизация сторонних приложений
├── actions/ 60+ исполнителей действий в 10 модулях
├── core/
│ ├── agent/ AgentLoop, PlanManager, IntentClassifier
│ ├── llm/ Провайдеры LLM, цепочки фоллбеков, промпты
│ ├── memory/ 4-уровневая система памяти
│ └── voice/ Детекция активационного слова, STT, TTS
├── data/ База данных Room и хранилище DataStore
└── ui/ 16 экранов на Jetpack Compose
内部では、複数の専門エンジンが動作しており、それぞれが独自の作業領域を担当しています。
アクションプランナーおよびエラー処理
PlanManagerモジュールは、受入コマンドを処理します。テキストまたは音声を受け取り、AIに送信し、逐次的な計画を出力として受け取ります。
コマンドに複数の意図が含まれていた場合,例如「WhatsAppを開いてメッセージを書く」のように、エンジンは依存関係を考慮してステップを正しく分解します。実行中にインターネットが切断された거나 앱이 충돌하면、AgentLoopがエラーをキャッチし、代替アクションの実行を試みます。
アクセシビリティAPIによる画面理解
最も興味深いコンポーネントの1つは、Vision Engineです。画面上で何が起きているかを分析するために、OpenDroidはアクセシビリティサービス(Accessibility API)を通じてスクリーンショットを取得し、マルチモーダルニューラルネットワークに送信します。
古いデバイスや軽量なローカルモデルで作業する場合、アシスタントはアクセシビリティツリーのパースに切り替わり、画像処理なしでUI要素のテキスト構造を抽出します。

4レベルのメモリ
人間のコンテキストは単一のダイアログに収まることはめったにありません。OpenDroidは4レベルの情報保存システムを使用しています:
- ワーキングメモリは、実行中のタスクの現在のコンテキストを処理します。
- エピソードメモリは、過去の実行とその結果の履歴を保存します。
- セマンティックメモリは、ユーザーとその好みに関する事実を記憶します。
- 手続きメモリは、ユーザーマクロと готовых сценариевを保持します。
すべてのローカル情報は7つのテーブルを持つRoomデータベースに書き込まれ、APIキーなどのシークレットはAES-GCM暗号化でAndroid Keystoreに保存されます。
12のAIプロバイダー対応
OpenDroidは開発者を特定のサービスに縛りません。このアプリは12のニューラルネットワークプロバイダーをサポートし、構成可能なフォールバックチェーンを備えています。プライマリモデルが応答しない場合、リクエストは自動的に次のプロバイダーに送られます。
リストには、Google Gemini、Anthropic Claude、OpenAI、Groq、DeepSeek、Mistral、OpenRouter、Cohere、Together AI、GitHub Copilotが含まれています。
プライバシー重視の人々のために、2つのローカル動作オプションがあります:
- ホームネットワーク上のローカルOllamaサーバーへの接続。
- オフラインモードでモデルを直接スマートフォンにダウンロードして実行できる組み込みLiteRT-LMマネージャー。
アシスタントが実際にできること
リポジトリには60以上の готовых действийが含まれています。これらは事実上、すべての日常的なスマートフォンの使用シナリオをカバーしています:
- システム設定:Wi-Fi、Bluetooth、懐中電灯、おやすみモードの切り替え、明るさと音量の調整。
- 通信:通話、SMS送信、WhatsAppメッセージ、メールの下書き作成。
- ナビゲーションと交通:Google Mapsでのルート計画、タクシーの呼び出し。
- 金融:クイック送金、割り勘。
- メディア:音楽再生の制御、YouTubeでの検索、カメラでの写真撮影。
プロジェクトのビルドと実行方法
プロジェクトのビルドには、Android SDK 35(Android 15)とJDK 21が必要です。JDKバージョンはGradle構成で厳密に固定されています。
ビルドは標準的です:
git clone https://github.com/yashab-cyber/opendroid.git
cd opendroid
./gradlew assembleDebug
готовый APKファイルは、app/build/outputs/apk/debug/app-debug.apkディレクトリにあります。
初回起動時、アプリはいくつかのシステム権限の付与を求めます。これには、アクセシビリティサービスの権限、通知へのアクセス、起動フレーズのトラッキングのための音声録音の権限が含まれます。
その後、設定に移動して、選択したプロバイダーのAPIキーを入力するか、Ollamaサーバーアドレスを指定するだけです。
OpenDroidのコードを勉強する価値はあるか
このプロジェクトは、自律型AIエージェントの作成方法を理解したいAndroid開発者にとって役立ちます。ここでは、モバイルデバイス上で複雑な計画サイクルとUI解析の実際の実装を見ることができます。
欠点としては、操作に必要な権限レベルが高いことがありますが、これはこのクラスのユーティリティにとっては当然のことです。また、完全な画面ビジョン機能には、フラッグシップモデルまたは高性能なスマートフォンのハードウェアが必要です。
OpenDroidは、モバイル自動化がどこに向かっているかを示し、自分の実験のための готовую建築基盤を提供します。
関連プロジェクト