なぜローカルエージェントなのか — コードを外に出さずにコーディング支援を使う

AIコーディングエージェントを実務に導入すると、必ず同じ壁にぶつかります。「このソースコード、外部APIにそのまま送っていいのか?」という問題です。社内リポジトリ、顧客先のコード、まだ公開していないプロトタイプ——これらをクラウドモデルに投げるのは、セキュリティ部門から見れば悪夢以外の何物でもありません。

そこで近年の流れは明確です。推論はローカルで、オーケストレーションはそのままという構成が、実務における最も現実的な落としどころになっています。

Antigravity SDKが今回ローカルモデル実行を正式サポートし、Gemma 4 26B A4BをGoogle AI EdgeのLiteRTランタイムで完全オフライン実行できるようになりました。ローカルGPUとRAMを活用し、エージェント支援をそのまま利用できるという意味です。

ローカル実行のメリットは主に3点に整理できます。

  • データプライバシー: コードとプロンプトが外部に送信されません。
  • トークンコストゼロ: ファイル探索やテスト実行のループで課金が発生しません。
  • オフライン動作: 機内や閉域網環境でもエージェントが動作します。

本記事では、インストール → 最初のエージェント実行 → サンドボックスワークスペース構成 → ハイブリッドアーキテクチャまでを順に扱います。クラウドモデルを完全に捨てる話ではなく、どこまでローカルに落とすべきかという実務ガイドとして読んでいただければと思います。

Developer running local Gemma 4 26B agentic coding assistant on laptop terminal with Antigravity SDK Development Concept Image

セットアップから初回実行まで — 5分で完了します

ステップ1: 仮想環境とパッケージのインストール

推奨スペックはVRAM 24GB以上、またはユニファイドメモリ24GB以上です。これを下回るとモデルのロードに失敗するか、極端に低速になります。

python3 -m venv .venv
source .venv/bin/activate
pip install google-antigravity litert-lm

# HuggingFaceからGemma 4 26B A4B(GPU用)モデルをローカルに取得します
litert-lm import \
  --from-huggingface-repo=litert-community/gemma-4-26B-A4B-it-litert-lm \
  gemma-4-26B-A4B-it-gpu.litertlm \
  gemma4-26b

ステップ2: 最初のエージェントスクリプト

同じディレクトリにagy_sample.pyを作成してください。

import asyncio
import os
from google.antigravity import Agent, LiteRTAgentConfig
from google.antigravity.hooks import policy

# 上記の litert-lm import で取得したローカルモデルのパスを指定します
MODEL_PATH = os.path.expanduser("~/.litert-lm/models/gemma4-26b/model.litertlm")

async def main():
    print(f"ローカルLiteRTモデルを使用中: {MODEL_PATH}。初回推論は数分かかる場合があります。")
    config = LiteRTAgentConfig(model_path=MODEL_PATH).lightweight()

    async with Agent(config) as agent:
        response = await agent.chat("現在のディレクトリにはどんなファイルがありますか?")
        async for token in response:
            print(token, end="", flush=True)

if __name__ == "__main__":
    asyncio.run(main())

ここで注意点が一つ。.lightweight()はツールセットを最小限に絞ったモードです。まずはこれで挙動を掴み、ファイル書き込みやシェル実行が必要になったら次のステップに進むのが良いと思います。

ステップ3: ワークスペースとポリシーを設定する

エージェントにファイル書き込みやコマンド実行を許可するには、ワークスペースとポリシーを明示する必要があります。これが本SDKのサンドボックス機構の核心です。

import asyncio
import os
from google.antigravity import Agent, LiteRTAgentConfig
from google.antigravity.hooks import policy

PROMPT = (
    "psutilとrichライブラリを使って、リアルタイム更新されるターミナルダッシュボードを作成してください。"
    "CPU使用率、メモリ消費量、メモリ上位5プロセスのテーブルを表示する必要があります。"
    "スクリプトは 'monitor.py' として保存し、'requirements.txt' も生成してください。動作テストも実施してください。"
)

MODEL_PATH = os.path.expanduser("~/.litert-lm/models/gemma4-26b/model.litertlm")

# エージェントがファイルを書き込めるワークスペースを明示的に指定
WORKING_DIR = os.path.expanduser("~/agy-test")
os.makedirs(WORKING_DIR, exist_ok=True)
os.chdir(WORKING_DIR)

async def main():
    print(f"ローカルLiteRTモデルを使用中: {MODEL_PATH}。初回推論は数分かかる場合があります。")
    config = LiteRTAgentConfig(
        model_path=MODEL_PATH,
        workspaces=[WORKING_DIR],       # このディレクトリの外には出られません
        policies=[policy.allow_all()],  # 実務ではallow_all()ではなくホワイトリストに絞ってください
    ).lightweight()

    async with Agent(config) as agent:
        response = await agent.chat(PROMPT)
        async for token in response:
            print(token, end="", flush=True)

if __name__ == "__main__":
    asyncio.run(main())

workspacesとpoliciesが本SDKのサンドボックス軸です。ワークスペースはファイルシステムの境界を、ポリシーはツール実行権限を制御します。**policy.allow_all()はデモ用です。**実務では必ず許可するコマンド/パスのみをホワイトリストで指定してください。この点はAIコーディングエージェントのサンドボックス化と実行リスク管理 実務ガイドでより深く扱っています。

ステップ4: 他のローカルバックエンドへの切り替え

Ollama、LM Studio、vLLMなどOpenAI互換サーバーであれば、LocalOpenAIAgentConfigでそのまま接続できます。エージェントのオーケストレーション、ツール、ワークフローのコードは変更不要で、バックエンドだけを差し替えられます。ローカル推論環境をベンチマークする際に特に便利です。

Python code editor showing google-antigravity Agent chat loop with LiteRT model path configuration Technical Structure Concept

ハイブリッドパターン — クラウドプランナー + ローカルワーカー

ローカルモデルだけで全てを処理しようとすると、すぐに限界に直面します。26B級のモデルでも、複雑な計画立案(planning)ではクラウドの大型モデルに劣ります。そこで実務で最も効率が良いのがArchitect-Builderパターンです。

  • Architect(クラウド): Gemini 3.8 Flashなどのモデルがプランナー兼指揮者として機能。タスクを分解し優先順位を決定します。
  • Builder(ローカル): Gemma 4 26Bインスタンス複数が、実際のコード生成、パッチ適用、テストをオンデバイスで処理します。

例えば脆弱なモジュール3つ(auth.py、billing.py、database.py)を監査(audit)してパッチを当てる作業をこのパターンで回すと、機密ソースはローカルから出ることなく、計画立案にのみクラウドトークンを消費します。トークン効率が劇的に改善する理由はここにあります。

この技術の限界と注意事項

正直に言えば、万能ではありません。

  1. VRAM 24GBの壁: これを下回る環境では実用が困難です。Mac StudioやRTX 4090級が事実上の最低ラインになります。
  2. 初回推論の遅延: モデルロードと初回トークン生成に数分かかる場合があります。CIに組み込むには不向きです。
  3. ポリシー設定ミス=事故: allow_all()をそのまま本番に置くと、エージェントがワークスペース外のファイルに触れる可能性があります。必ずホワイトリストに絞ってください。
  4. モデル性能の偏り: 26Bはコード生成は得意ですが、複雑なリファクタリングや大規模コンテキスト維持では依然としてクラウド大型モデルが優位です。

ネットワーク層における類似のリアルタイム診断課題はPMTUDブラックホール、Cloudflare Oneがリアルタイムで解決で扱ったことがありますが、ローカルエージェントも結局「経路(path)をどれだけ正確に把握するか」という点で通底するものがあります。

日本の開発現場における適用文脈

日本の金融・製造業の現場では、このパターンが特に有効です。外部API呼び出しがネットワーク分離ポリシーに抵触するケースが多いため、ローカル推論+クラウドプランナーのハイブリッドは「セキュリティ部門を説得するためのカード」として使いやすいです。ただし社内GPUインフラがない場合は、結局個人ワークステーションに依存することになるため、チーム導入前にGPUリソースの実態調査を先に行うことをお勧めします。

Sandboxed local AI coding agent workspace isolating file writes and policy hooks for safe execution Programming Illustration

まとめ — 今すぐ試すべきこと

  1. ローカル環境の確認: VRAM 24GB以上かを確認。難しい場合はOllama+小型モデルでまず感触を掴んでください。
  2. lightweight()モードから開始: ツール権限を最小限にし、エージェントループの挙動を観察します。
  3. ワークスペースとポリシーの明示: ファイル書き込みが必要になった瞬間から、必ず境界を引いてください。
  4. ハイブリッドへの拡張: 計画はクラウド、実行はローカル。トークンコストとプライバシーを同時に確保する実務パターンです。

次のステップ学習の方向性

  • LiteRT最適化: 量子化(quantization)、KVキャッシュチューニングによる推論速度改善。
  • ポリシーフック設計: policyモジュールをカスタマイズし、コマンド単位のホワイトリストを実装。
  • マルチエージェントオーケストレーション: ローカルGemmaインスタンスを複数並列実行し、ビルダースウォームを構成。

エージェントコーディングは既に「試すかどうか」の段階を過ぎています。今はどこまでローカルに落とし、どこでクラウドを呼ぶかを設計する段階です。本記事がその第一歩になれば幸いです。


あわせて読みたい記事

根拠資料: Introducing support for local AI models in the Antigravity SDK

本コンテンツは、信頼性の高い情報源をもとにAIツールを活用して作成され、編集者によるレビューを経て公開されています。専門家によるアドバイスの代替となるものではありません。