メインコンテンツへ移動
AIチュートリアル

DSH-Android入門ガイド:自然言語でAndroidスマートフォンを操作し、自動化タスクを作成

このガイドでは、DSH-Androidのインストールと設定、DeepSeekまたはサードパーティ製モデルとの接続、自然言語によるファイル管理・画面操作・システム設定の変更に加え、Shizuku、自動化トリガー、ソースコードのビルド環境の設定方法を解説します。

DSH-Android入門:自然言語でAndroidを操作し自動化タスクを作成

DSH-Android とは

DSH-Android は、DeepSeek Harness を Android デバイス上で直接実行するコミュニティプロジェクトです。APK をインストールすると、自然言語でタスクを説明して、agent にファイルの整理、アプリの操作、システム設定の変更、時間やデバイスイベントをトリガーにした自動化タスクの作成などを任せられます。

Root は不要で、Termux にも依存しません。Node 24 と fork していない dsh エンジンをアプリに組み込み、Kotlin で実装したデバイス機能を通じて Android システムと連携します。現在のバージョンには、Android 10 以降および arm64-v8a デバイスが必要です。

DSH-Android はコミュニティプロジェクトであり、DeepSeek 公式とは無関係で、公式の承認も受けていません。

DSH-Android ホーム画面

主な機能

ファイルとドキュメントの処理

DSH-Android にファイルの検索、整理、移動、名前変更を指示したり、圧縮や展開を実行したりできます。PDF、Word、Excel、PPT ファイル内のテキストを読み取ることもできます。

  • 容量の大きいファイルを検索する。
  • 種類や日付に基づいてダウンロードフォルダーを整理する。
  • ファイルを一括で移動または名前変更する。
  • 一般的なオフィス文書のテキストを読み取る。

画面とアプリの操作

アクセシビリティサービスを有効にすると、DSH-Android は画面の読み取り、タップ、スワイプ、テキスト入力を行えるほか、アプリを開いたり指定したページへ移動したりできます。グラフィカルユーザーインターフェースを操作する複数ステップのタスクに適しています。

スマートフォン操作画面

システム設定と通知

明るさ、音量、サイレントモード、アラーム、Wi-Fi、Bluetooth、位置情報を制御でき、通知の読み取りと返信、メディア再生の制御も可能です。一部のシステム機能はそのまま利用できますが、追加の権限やオプションの Shizuku が必要な機能もあります。

自動化トリガー

コマンドをすぐに実行できるだけでなく、スケジュールタスクを作成したり、Wi-Fi への接続、Bluetooth への接続、充電開始、指定場所への到着、通知の受信などの条件でタスクを実行したりできます。

dsh の完全な機能

アプリ内では個別に保守された fork ではなく、オリジナル版の dsh が動作しているため、スキル、MCP、サブ agent、ウェブ検索などの機能を引き続き利用できます。タスクの軌跡には agent が実行した操作がラウンドごとに表示され、処理内容を確認できます。

Agent タスクの軌跡

インストール前の準備

開始する前に、デバイスが次の条件を満たしていることを確認してください。

  • Android 10 以降。
  • プロセッサの ABI が arm64-v8a。
  • インストールパッケージは約 110 MB。少なくとも 500 MB の空き容量を確保することを推奨します。
  • 設定したモデル API にデバイスからアクセスできる。
  • DeepSeek アカウント、DeepSeek API key、またはサポートされているサードパーティモデルサービスの認証情報を持っている。

インストールと初期設定

  1. プロジェクトの Releases ページから最新の APK をダウンロードし、Android デバイスにインストールします。

  2. アプリを開き、DeepSeek アカウントでログインするか、DeepSeek プラットフォームから取得した API key を入力します。

  3. 別のモデルを使用する場合は、設定 → モデルサービスを開き、対応するプロバイダーと API key を追加してからモデル一覧を取得します。

  4. ホーム画面に戻り、簡単なタスクを入力します。デバイス機能を初めて使用するときは、アプリが必要な権限の付与を案内します。

権限は必要に応じて要求されるため、最初からすべての権限を開放する必要はありません。設定 → スマートフォンの権限でまとめて確認・管理できます。

スマートフォンの権限管理

初めてタスクを実行する

例 1:大きなファイルを検索する

ホーム画面に次のように入力します。

ダウンロードフォルダーにある最も大きいファイルを 5 件一覧表示して

agent はタスクに応じてファイル機能を呼び出し、結果を返します。さらに処理する場合は、同じセッションで次のように入力できます。

その中で 500 MB を超えるファイルを「大きなファイル」という名前のフォルダーに整理して。ただしファイルは削除しないで

移動、変更、その他の機密性の高い操作が関係する場合は、アプリに表示されるタスクの手順と承認プロンプトをよく確認してください。

例 2:スマートフォンの状態を調整する

次のように目的を直接説明できます。

メディア音量を下げて、サイレントモードをオンにして

操作を直接完了できるかどうかは、Android のバージョン、デバイスの ROM、付与済みの権限によって異なります。権限が必要な場合は、アプリが有効化の手順を案内します。

例 3:アプリを操作する

アクセシビリティサービスを有効にしたら、次の操作を試せます。

システム設定を開いて、Bluetooth のページに移動して

画面操作は現在の画面状態に依存します。タスク完了後は軌跡ページを開き、agent の動作と結果をラウンドごとに確認できます。

ショートカットによる起動方法を設定する

DSH-Android は、フローティングボール、システムアシスタント、クイック設定タイル、システムの共有メニューから起動できます。利用スタイルに合わせて入口を有効にすれば、毎回アプリのホーム画面に戻らなくてもタスクを送信できます。

ショートカット起動画面

一部の中国メーカー製 ROM では、フローティングボールやバックグラウンド自動化を利用するために、バックグラウンドでのポップアップ表示と自動起動を手動で許可する必要があります。アプリの診断ページを確認し、案内に従ってシステム設定を調整してください。

Shizuku を設定してシステム機能を拡張する

基本的な利用に Shizuku は必須ではありませんが、shell 権限を提供し、より多くのシステムスイッチを利用できるようにします。プロジェクトには公式インストールパッケージが組み込まれており、次の手順で設定できます。

  1. 設定 → スマートフォンの権限を開きます。

  2. ワンタップインストール機能で Shizuku をインストールします。

  3. Shizuku の案内に従って起動と認証を完了します。

  4. デバイスが Android 11 以降で、Shizuku のバージョンが 13.6 以上の場合は、起動時に開始(ワイヤレスデバッグ)を有効にすることを推奨します。

デバイスの再起動後、通常は Shizuku も再起動する必要があります。ワイヤレスデバッグの起動時開始を有効にすると繰り返しの操作を減らせますが、実際の動作はシステムバージョンやメーカーの制限にも左右されます。

自動化タスクを作成する

自動化タスクは固定時刻に実行することも、デバイスイベントでトリガーすることもできます。Wi-Fi への接続、Bluetooth への接続、充電開始、指定場所への到着、通知の受信などのイベントに対応しています。

タスクを作成するときは、トリガー条件、実行する操作、必要な制限条件を明確に記述することを推奨します。たとえば次のように入力します。

毎晩 11 時にサイレントモードをオンにして、メディア音量を低く設定して
自宅の Wi-Fi に接続したら指定したタスクを実行して

2 つ目の例では、アプリ内で実際のネットワーク条件と具体的な操作を設定する必要があります。位置情報、通知、バックグラウンド実行に関係するルールには、対応する権限の付与が必要です。データを変更または移動する可能性のある自動化は、まず破壊的でない操作でテストすることを推奨します。

サードパーティモデルサービスを使用する

DeepSeek のほか、OpenAI、Claude、Gemini、Grok、OpenRouter、Kimi、智谱 GLM、通義千問、火山方舟、MiniMax、硅基流動、階躍星辰、または任意の互換インターフェースを追加できます。

  1. 設定 → モデルサービスを開きます。

  2. サービスプロバイダーを選択するか、互換インターフェースを設定します。

  3. API key を入力し、モデル一覧を取得します。

  4. モデルセレクターで使用するモデルに切り替えます。

サードパーティモデルは現在、HTTPS 経由でアクセスする OpenAI 互換 Chat Completions インターフェースにのみ対応しています。コンテキストは一律 128K として計算され、推論レベルの選択には対応していません。ツール呼び出しの効果は選択したモデルによって異なります。DeepSeek が提供するウェブ検索を使用する場合は、メインモデルがサードパーティ製であっても、別途 DeepSeek API key の設定が必要です。

セッション一覧画面

応用的な使用方法

軌跡で複雑なタスクを確認する

複数ステップの操作では、最終回答だけを確認しないでください。タスク完了後に軌跡を開き、agent が各ラウンドでどの機能を呼び出し、どの操作を実行したかを確認します。権限不足、画面の変化、モデルの判断のずれを見つけやすくなります。

タスクをより明確に記述する

自然言語の指示には、目標、範囲、安全上の境界を含めるのが望ましいです。たとえば「ダウンロードフォルダーを整理して」より、次のように書くと制御しやすくなります。

ダウンロードフォルダー内の PDF を Documents/PDF に移動して。ファイル名が重複する場合は上書きせず、その他のファイルは変更しないで

削除、上書き、メッセージの送信、通知への返信が関係する場合は、候補を先に一覧表示するか、確認を待つよう明示することを推奨します。

画面操作とシステム機能を区別する

画面ロック後も、ファイル、システム設定、通知などのシステム API を利用するタスクは実行できます。ただし、安全な画面ロックが有効な場合、Android はアプリが他のアプリの画面を操作することを許可しません。この種のタスクは一時停止し、ロック解除後に続行するよう案内されます。

コールドスタートの時間を見込む

現在のエンジンはコールドスタートに約 5 秒かかります。アプリを初めて開いたときやエンジンがまだ起動していないときは、タスクへの応答が少し遅くなる場合があります。

セッションと権限を管理する

目的の異なるタスクを別々のセッションに分けると、コンテキストを明確に保ちやすくなります。スマートフォンの権限、アクセシビリティサービス、通知へのアクセス権、バックグラウンド実行の設定を定期的に確認し、使用しなくなった機能は無効にできます。

ソースコードからビルドする

開発に参加する場合は、JDK 21、Android SDK(compileSdk は 37.2)、NDK r29 を準備する必要があります。arm64 Linux ホストでビルドする場合は、arm64 版 aapt2 のパスも指定する必要があります。

まず、libnode などのビルド済みネイティブライブラリをダウンロードして検証します。

native/prebuilt.sh fetch

生成物は次の場所に書き込まれます。

toolchains/out/jniLibs/arm64-v8a/

次に、dsh、プラグイン、パッチを含むエンジンパッケージをビルドします。

OUT_DIR=<engineOut> js/build-engine.sh

最後に Debug APK をビルドします。

./gradlew :app:assembleDebug -Pdsh.engineOut=<engineOut>

arm64 Linux ホストで Gradle を実行する場合は、環境に応じて次のオプションも追加する必要があります。

-Pandroid.aapt2FromMavenOverride=<arm64 版 aapt2 のパス>

通常、Node を自分でコンパイルする必要はありません。Node をアップグレードする場合やネイティブパッチを変更する場合に限り、先に次を実行します。

native/build.sh

その後、次のコマンドでビルド済み成果物を公開します。

native/prebuilt.sh publish

ホスト側のエンドツーエンドテストを実行する

プロジェクトには、DeepSeek API を実際に呼び出すホスト側のエンドツーエンドテストが用意されています。

node js/test/host-e2e.mjs

API key をファイルに保存し、DSH_E2E_KEY_FILE でパスを指定します。デフォルトのパスは次のとおりです。

~/.config/dsh/deepseek_api_key

アーキテクチャ概要

App のメインプロセスは Kotlin と Compose を使用し、会話、軌跡、承認、設定、デバイス機能、自動化トリガーを担当します。Node 24 は Android ネイティブ共有ライブラリとして独立した :engine フォアグラウンドサービス内で動作し、JNI を介して dsh を起動します。

UI と dsh は SDK の JSON-RPC で通信します。デバイス機能は Kotlin で実装され、プライベートソケット通信を通じて dsh に公開されます。オプションの Shizuku は一部の機能に shell 権限を提供し、モデルへのリクエストは HTTPS で対応する API に送信されます。

この設計では proot や Termux を使用せず、追加の独立した Node プロセスへの依存も避けています。dsh 自体は fork を実行せず、Android 対応はプラグインと少数のパッチに集約されています。

まとめ

DSH-Android は完全な dsh agent エンジンを Android APK に組み込み、自然言語によるタスクからファイル、アプリの UI、システム設定、通知、自動化トリガーに接続できるようにします。初めて使用する際は、読み取り専用のファイル検索などリスクの低いタスクから始め、必要に応じて権限を付与し、その後、ユーザー補助サービス、Shizuku、ショートカット、自動化ルールを段階的に設定することをおすすめします。

プロジェクトは Apache License 2.0 を採用していますが、内蔵されている Node.js、dsh、Shizuku、ripgrep などのサードパーティコンポーネントは、それぞれのライセンスに従います。