このプロジェクトについて

これは DeepSeek Harness(dsh)を Android スマホに載せるためのシェルアプリで、アプリ名は DeepCode、パッケージ名は com.dsharnessmobile.shell、現行バージョンは 0.14.0-preview、内蔵エンジンは @deepseek-ai/dsh 0.1.5-rc.1。 中心となる考え方は「解凍すればすぐ動く」。APK には xz 圧縮された Termux ランタイムのスナップショットが埋め込まれており、node、git、bash、coreutils、dsh、プラグイン、pnpm、さらに python/perl/ruby を含む。初回起動時は解凍に 2〜4 分かかり、その後エンジンは 127.0.0.1:3080 をリッスンし、完全にオフラインで動作する。ユーザーが別途 Termux アプリをインストールする必要はない。 ランタイムとライフサイクルについては、manifest 駆動のオンラインランタイム更新をサポートする。ダウンロード、sha256 検証、アトミックな切り替え、自動再起動を行い、ツリーの差し替えは単一トランザクションで、中断時はロールバック可能であり、ユーザーデータ(セッション、添付ファイル、設定、資格情報、ワークスペース)には触れない。APK の自己更新は起動画面で手動で「更新を確認」をタップして発動する必要があり、自動確認は行わない。GitHub の latest release を確認し、デバイスの ABI に合わせてアセットを照合する。常駐機構にはフォアグラウンドサービス、5 秒のウォッチドッグによるハングしたエンジンの自動再起動、3 秒の UI ポーリング、クラッシュ時のフォールバックゲートが含まれる。また、独立した bash 対話コンソールがあり、エンジンが動作していないときでも問題を調査できる。 AI ブラウザはメイン画面と完全に分離された 2 つ目の WebView ワークベンチで、AI は複数のタブを開くことができ、人間も直接閲覧できる。解像度は CSS ビューポートとして注入され、window.innerWidth は要求値に正確に一致し、PC/スマホの識別切り替えをサポートする。 仮想ディスプレイ機能は Shizuku 特権チャネルを通じて独立した画面を作成し、サードパーティアプリを実行する。ユーザーのフォアグラウンドを占有せず、単一インスタンスの上限は 1 枚。画面をまたぐ起動はシェル側の Shizuku UserService の am start --display 経路を通る。座標入力は仮想ディスプレイ上で絶対 x/y と screenId を使用し、正規化座標は実画面への誤タップを避けるため明示的に拒否される。スクリーンショットは対象の displayId に保存され、その画面自身のピクセルを解像度アンカーとして使用する。仮想ディスプレイは 10 分間アイドル状態が続くと自動回収される。 スマホ操作はアクセシビリティと Shizuku の二重チャネルを提供する。アクセシビリティチャネルはセマンティックツリーと ref アクションを担当し、Shizuku チャネルは uid 2000 で screencap、uiautomator、dumpsys、input などの読み取りおよび入力系コマンドを実行し、システム設定の書き込み面は一律拒否する。 添付ファイルとファイルについては、クリップの上方向メニューをシングルタップすると「添付ファイルをアップロード/画像をアップロード」が表示され、それぞれシステムのファイルピッカーとシステムのフォトアルバムを通る。「他のアプリで開く/共有」によりファイルをセッションへ直接送ることができ、自動的に一時ワークスペースを新規作成し、7 日の TTL でクリーンアップする。SAF ブリッジは選択したディレクトリを実パスにマッピングできる。 ブリッジプロトコル v1 は 51 個の @JavascriptInterface メソッドを公開し、ページは androidBridge.version による機能検出を行うため、APK と dsh のバージョンは分離される。モデルから見えるツールはすべてプラグイン由来で、現在 45 個。能力グループごとに段階的に開示され、まず android_capabilities を呼び出してロックを解除する必要があり、phone、browser、virtual-display などのグループに分かれる。 権限には INTERNET、POST_NOTIFICATIONS、フォアグラウンドサービス、MANAGE_EXTERNAL_STORAGE、REQUEST_INSTALL_PACKAGES が含まれる。仮想ディスプレイと特権シェルには、ユーザー自身が Shizuku をインストールして認可する必要がある。 リリースでは arm64 と x86_64 のデュアル ABI パッケージを提供する。ABI はデバイスに一致しなければならず、そうでなければエンジンは起動直後にクラッシュする。ビルドには JDK 17+、Android SDK(compileSdk 36)が必要で、Gradle 8.11.1 は wrapper が提供し、スナップショットのビルドとパッケージングは調整リポジトリで行われる。 README では明確に注意喚起している。内蔵プラグインマーケットの大多数のサードパーティプラグインはスマホ側で必ずしも使用可能とは限らず、高い確率でバグがある。ベータ段階では可用性の検証とフィードバックを主とし、現時点では本番依存として推奨しない。プロジェクトは MIT ライセンスを採用し、GPL コンプライアンス処理も行っている。