AI・機械学習
エージェントの進化:VMを活用したモバイルAIエージェントの仕組み(Claude Code, Instinct)
The VMs Powering Mobile Agents (Instinct, Claude Code) (rohanadwankar.github.io)
要約
AIエージェントがローカルコンピュータからクラウド上のVMへと移行し、スマートフォンなど様々なデバイスから利用可能になる進化について解説しています。Claude CodeはFirecracker microVM上で独自のRust製initプロセスを実行し、セキュアな環境でユーザーセッションを管理しています。一方、InstinctはE2Bというサービスが提供する使い捨てのUbuntu VMを利用し、エージェントの「記憶」をMarkdown形式のGitリポジトリとしてS3に永続化するユニークなアプローチを採用しています。両者ともVM技術を活用しつつ、異なるアーキテクチャと永続化戦略でユーザー体験を向上させています。
全文翻訳
エージェント(Claude Code、Instinct、Pokeなど)がローカルコンピュータから離れ、スマートフォンなどで利用できるようになるのは、素晴らしい製品の進化です。最終的には、エージェント企業がそれらを実行するためのVMを提供してくれるため、顧客にとって非常に良いことです。ws-termを調べて得られた、主要なプラットフォームがどのように機能するかについてのメモを以下に示します。
スマートフォン上のClaude Code
Claude Codeのボックスは、独自のカーネルを持つKVMゲストであるFirecracker microVMであり、Rustで書かれたinitに直接ブートされます。
$ cat /proc/cmdline ... rdinit=/process_api ... --listen-vsock-port 2024
$ uname -r
6.18.5-fc-v20 # -fc- = Firecracker; カスタムビルドされたゲストカーネル
$ ps -o comm -p 1
process_api # PID 1はsystemdではなく、Rust/Tokioバイナリです。
process_apiはPID 1であり、VM内に存在するホストの制御エージェントです。ディスクをマウントし、vsockポート2024でリッスンするため、ホストは外部からセッションを駆動できます。それがプラットフォームの定義的な特徴です。オペレーターはテナントスペース内に存在し、多くのエンジニアリングがそれを隔離するために費やされています(PID 1はダンプ不可能、CAP_SYS_PTRACEでも/proc/1/memへのアクセスは拒否され、シェルにはCAP_SYS_RESOURCEがありません)。
ディスクは、あなたのもの(書き込み可能、永続的)と彼らのもの(読み取り専用、共有)にきれいに分割されます。
$ lsblk -o NAME,SIZE,RO,MOUNTPOINT
vda 256G 0 /
# あなたのもの:書き込み可能、リクレーム後も保持
vdc 341M 1 /opt/claude-code
# 彼らのもの:324 MBの`claude`ハーネス(Bun)
vdd 45.6M 1 /opt/env-runner
# 彼らのもの:タスクランチャー
vde/vdf ... 1 /mnt/skills/...
# 彼らのもの:スキル
ハーネスは、ツールの呼び出しを実行するもので、読み取り専用ディスク上の324 MBのコンパイル済みBunバイナリです。
モデルは別の場所で実行されます。推論は、HTTPS/2(WebSocketではない)経由でServer-Sent Eventsとして/v1/messagesに送信され、443のみでMITMされた(CN = Egress Gateway ... (production))エグレスゲートウェイを通過し、api.anthropic.comは/etc/hostsにピン留めされています。インバウンドは一切ありません(192.0.2.2、RFC-5737テストアドレス)。認証はホスト発行のOAuthトークンで、ディスク上にルート専用でキャッシュされ、ブートごとにローテーションされます。
ライフサイクルはホスト駆動型で、内部から測定されます。initまで約430 ms、ハーネスプロセスまで約6.4秒です。スピンアップはインバウンドメッセージによってトリガーされます(ホストがvsock経由でVMをウェイクアップし、--session-mode resumeを実行します)。スピンダウンは、ホストによって決定されるアイドル時のリクレームです。リクレームされると、プロセスは終了しますが、vdaはそのままデタッチされ、次のコールドブート時に再アタッチされるため、コンピューティングが破壊されたにもかかわらず、会話は継続しているように感じられます。
flowchart TB
user([