月額費用も APIキーも不要なコーディングエージェントが、手元のPCで動く。

Claude CodeやCursorは便利だが、月額20〜100ドルのサブスクリプションがネックになることがある。Pi(コーディングエージェント)とGoogleのオープンソースモデルGemma 4を組み合わせると、クラウドに一切依存しない自分専用のローカルAIコーディング環境を構築できる。

この記事でわかること:

  • Pi(コーディングエージェント)の設計思想と特徴
  • Gemma 4の4つのモデルサイズとおすすめの選び方
  • LM Studio / Ollama 経由でのセットアップ手順
  • 長いセッションを維持するためのコンテキスト管理のコツ
  • スキルとエクステンションで機能を拡張する方法

Piとは — 4つのツールだけのミニマルなコーディングエージェント

https://github.com/badlogic/pi-mono

Mario Zechnerが開発したOSSのターミナル向けコーディングエージェント。設計のコアはシンプルで、モデルに与えるツールは readwriteeditbash の4つだけだ。

この4ツール構成には意図がある。ツールが多いとシステムプロンプトが膨らみ、ローカルモデルのような限られたコンテキストを圧迫する。Piはスリムなシステムプロンプトを維持することで、トークン効率を上げながら実際のコーディング作業に集中できる設計になっている。

機能を増やしたい場合は「スキル」と「エクステンション」で後から追加する。スキルはMarkdownで書かれた指示ファイルで、AgentSkills標準に準拠している。エクステンションはTypeScriptモジュールで、カスタムツールやUIコンポーネント、サブエージェントまで実装できる。

インストールは1コマンドで済む。

npm install -g @mariozechner/pi-coding-agent

なぜ月額ゼロで動くのか

コストがかかる理由の大半は、クラウドAPIの利用料だ。OpenAIやAnthropicのAPIを呼ぶたびに課金が発生する。

Piはローカルに立ち上げたOpenAI互換サーバーと接続する設計なので、クラウドAPIを使わなくても動く。モデルにはGoogleがApache 2.0ライセンスで公開しているGemma 4を選べば、ライセンス費用も商用利用制限もない。データがローカルマシンの外に出ることもない。

Gemma 4 — モデルサイズと選び方

Gemma 4はGoogleが2026年にリリースしたオープンウェイトモデルで、Apache 2.0ライセンスのもと無償で利用できる。コーディングエージェント用途で重要な機能、ネイティブ関数呼び出し・システムプロンプト対応・思考モードが揃っている点が、以前のGemmaシリーズとの大きな違いだ。

4つのサイズがある。

モデル アーキテクチャ コンテキスト長
Gemma 4 E2B Dense 128K トークン
Gemma 4 E4B Dense 128K トークン
Gemma 4 26B A4B MoE 256K トークン
Gemma 4 31B Dense 256K トークン

コーディングエージェントとして使う場合、Gemma 4 26B A4B が最も実用的だ。MoE(Mixture-of-Experts)アーキテクチャを採用しており、26Bのパラメータを持ちながら推論時に動かすのは4Bだけ。品質は大きなモデルに近く、推論速度は小さなモデルに近い。テキスト・画像理解・関数呼び出し・思考モードに対応している。

VRAMが限られている場合はE4Bも選択肢になるが、より具体的なプロンプトが必要になる場面が増える。

LM Studioでモデルをサーバーとして動かす

Piはローカルサーバーと接続するため、まずモデルを動かすサーバーを準備する。LM Studio、Ollama、llama.cpp のいずれも利用できる。LM StudioはGUIで操作できるため、初回のセットアップが最も簡単だ。

LM Studio をインストールしたら、Developerタブを開いて gemma-4-26b-a4b を検索・ダウンロードする。量子化はVRAMに合わせて選ぶ。

量子化 ダウンロードサイズ 品質目安
Q4_K_M 18 GB バランス型
Q6_K 24 GB 高品質
Q8_0 28 GB ほぼオリジナル相当

モデルをダウンロードしたら「Start Server」をクリックする。デフォルトで http://localhost:1234 にOpenAI互換APIが立ち上がる。起動確認は以下のコマンドで行える。

curl http://localhost:1234/v1/models

Ollamaを使う場合は ollama run gemma4:26b-a4b でモデルを起動し、同様にOpenAI互換エンドポイントが http://localhost:11434/v1 に立ち上がる。

Pi をローカルモデルに接続する

~/.pi/agent/models.json を作成して、PiにローカルサーバーのURLとモデルIDを教える。

{
  "providers": {
    "lmstudio": {
      "baseUrl": "http://localhost:1234/v1",
      "api": "openai-completions",
      "apiKey": "lm-studio",
      "models": [
        {
          "id": "google/gemma-4-26b-a4b",
          "input": ["text", "image"]
        }
      ]
    }
  }
}

id はLM StudioのサーバータブでモデルIDをそのままコピーする。設定できたらターミナルで pi を実行し、/model コマンドで上記のローカルモデルに切り替えれば動き始める。

コンテキスト管理 — 長いセッションを維持するコツ

コーディングセッションは、ファイル内容・ツール出力・会話履歴が積み重なってコンテキストを消費していく。Gemma 4 26B A4Bは最大256Kトークンに対応しているが、VRAMと処理速度はトレードオフになる。

用途別の目安を以下にまとめた。

用途 コンテキストサイズ 追加VRAMの目安
小さなファイル編集 16K 約1 GB
通常のコーディング 64K 約4 GB
複数ファイルのリファクタリング 128K 約8 GB
リポジトリ全体を読み込む 256K 約16 GB

通常のコーディング用途では128Kが現実的な出発点だ。

Piにはセッション管理のコマンドが組み込まれている。/compact は古いメッセージを要約してコンテキストを解放する。/new で新しいセッションを始め、/tree でセッション履歴をナビゲートして任意の時点に戻れる。/fork は過去のメッセージから別のセッションに分岐させるコマンドで、試行錯誤の際に役立つ。

スキルとエクステンションで機能を追加する

スキルの追加

スキルはコミュニティが公開しているものをgit cloneで追加する。

# ユーザーレベル(全プロジェクトで有効)
git clone https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills

# プロジェクトレベル(そのプロジェクトのみ)
git clone https://github.com/badlogic/pi-skills .pi/skills/pi-skills

セッション中は /skill:名前 で呼び出すか、エージェントが自動で検出して使う。PDFやDOCXをモデルが扱える形式に変換する「liteparse」、HTMLスライドを生成する「frontend-slides」などが公開されている。

エクステンションとセキュリティ

Piはデフォルトで bashコマンドを確認なしに実行する。ローカルモデルは幻覚が起きやすい面もあるため、破壊的なコマンドへの安全策として permission-gate エクステンションの使用を検討したい。

pi --extension examples/extensions/permission-gate.ts

permission-gateは危険が疑われるコマンドの前に確認を求める。より強固なサンドボックスが必要な場合は、コマンドをコンテナ内で実行する ccosandbox エクステンションも選択肢だ。

ローカルで動かすことのトレードオフ

Gemma 4 26B A4B はクラウドのフロンティアモデルと同等ではない。複雑なアーキテクチャ設計や高度な推論を要するタスクでは出力の品質に差が出る場面がある。また、26Bパラメータを全量メモリに展開するため、VRAMが24GB以上必要になる。

一方、コストゼロ・プライバシー保護・ネット接続不要という条件を満たすのはローカル実行だけだ。コーディングエージェントを日常的に使いながら費用を抑えたい開発者や、データをクラウドに送りたくない用途には有力な選択肢になる。