Agent ZeroとOllama:Dockerでのインストールと limites
はい、Agent Zero(agent0ai プロジェクト)は Docker コンテナ内で動作し、接続先を http://host.docker.internal:11434 に設定することで、ローカルの Ollama を呼び出せます。これは、コンテナからホストに接続するためにプロジェクトが用意しているデフォルトのアドレスです。エージェントのコンピューター(Linux デスクトップとブラウザを備えたコンテナ)は、推論を行うマシンとは別のものです。すべてをローカルでホストするだけでは、内蔵ブラウザや拡張機能がオフラインのままであることは保証されません。
Agent Zero は、agent0ai が公開しているオープンソースのエージェントフレームワークです。Docker コンテナ内の本格的な Linux デスクトップ、操作可能なブラウザ、ドキュメントで共同作業するためのツールをエージェントに提供します。このガイドでは、インストール、ローカルで動く Ollama への接続、役割(会話用またはユーティリティ用)に応じたモデルの選び方、そしてこの範囲のタスクに取り組む際の小型ローカルモデルの実際の限界を説明します。
#Agent Zero とは何か
Agent Zero(リポジトリ:agent0ai/agent-zero)は、エージェントに完全なLinuxコンピュータを提供するフレームワークと紹介されています。Dockerコンテナ内のXFCEデスクトップ、DOMに注釈を付けられるブラウザ、Markdownファイル・表計算シート・プレゼンテーションでのリアルタイム共同作業、100を超えるコミュニティ製プラグインのハブを備えています。2026年9月28日時点で、このプロジェクトのGitHubスター数は19,000を超えており、最新のタグ付きバージョンは2026年9月23日に公開されたv2.13でした。
Agent Zeroは、OpenCodeやClineのようなコーディング特化型エージェントではありません。調査、デスクトップアプリの操作、Webインターフェースのレビュー、分析など、幅広いタスクを対象としており、その分、ターミナルで動く単体のバイナリよりも大がかりなインフラが必要です。
このプロジェクトは、「エージェントプロファイル」(必要に応じてその場で作成される専門エージェント。例えば、スプレッドシートを成果物とする慎重な財務分析用)、コンテキストごとにファイル、シークレット、メモリ、リポジトリを分離するプロジェクト管理、そしてメインエージェントが調査、コード作成、分析、レビューを専用のサブエージェントに委任するマルチエージェント協働も特徴として挙げています。これらの機能はそれぞれ、コンテキストと指示に従う能力を必要とします。そのため、単純なチャットを超えた使い方では、モデル選びに直接影響します。
#Dockerコンテナをインストールする
あなたのマシンで動作するエージェント:エージェント型 Cline、MCP、n8n + Ollama、ローカル自動化。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
Docker がすでにインストールされている場合、最も直接的な方法は、インスタンスのデータを永続ボリュームにマウントする単一のコマンドです。プロジェクトでは、サーバーやヘッドレスモード向けにスクリプトによるインストーラー(A0 Install)も提供されており、また、Docker、インスタンス、ポートをユーザーに代わって管理するグラフィカルなランチャー(A0 Launcher)も提供されています。
コンテナを起動すると、選択したポート(デフォルトは80、またはパラメータで指定したポート)でWebインターフェースが開き、最初のタスクを実行する前にモデルプロバイダーを設定できます。GUIのないサーバーでは、スクリプト形式のインストーラーでサイレントモードを利用できます。このモードでは、メニューを開かずに、指定したインスタンスとポートを作成できます。自動デプロイや、SSHでしかアクセスできないリモートマシンで役立ちます。
#ローカルOllamaとの接続
インストールの公式ドキュメントには、次の手順が詳しく説明されています。会話モデル、ユーティリティモデル、または埋め込みモデルの設定で、プロバイダーとしてOllamaを選択し、Ollamaが受け付けるモデル名(例:llama3.2、qwen2.5:7b)を入力する。その後、APIのURLがデフォルト値と異なる場合は、そのURLを入力する。
コンテナからOllamaに接続できない場合、ドキュメントでは、コンテナからポート11434にアクセスできる必要があると説明されています。付属のDocker Composeファイルは、Linux上のDockerでhost.docker.internalをホストのゲートウェイに対応付けています。また、両サービスが同じDockerネットワークを共有している場合は、アドレスをhttp://(nom du conteneur):11434にすることもできます。
#どのモデルを選択し、どのような役割に使うか
Agent Zeroには、チャット(メインの会話)、ユーティリティ(記憶の整理、要約)、埋め込み(記憶の検索)という3つのモデル設定枠があります。モデル名の形式はプロバイダーによって異なります。Ollamaでは、OpenRouterとは異なり、プロバイダーの接頭辞を付けず、モデル名だけ(gpt-oss:20b)を指定します。
| 役割 | 記載された要件 |
|---|---|
| チャット(会話) | エージェントの通信フォーマット(JSONでtool_name/tool_args)に従う必要があります |
| ユーティリティ(メモリ、要約) | 非常に小さなモデル(4B)は頻繁に失敗します。代わりに70Bモデルまたは品質の高いクラウド「フラッシュ/ミニ」モデルがより適しています。 |
| Embedding | サイズの影響を受けにくく、類似度検索のためにメモリをインデックス化する用途にのみ使われます。 |
最も見落とされがちな点は、会話には十分なモデルでも、小さすぎると補助的な処理を担う役割では失敗することがあるという点です。その結果、ユーザーが気づかないうちにメモリの品質が低下し、なぜエージェントが「忘れる」のか、あるいはセッションをまたいで事実を混同するのか分からなくなります。
#ローカルの小型モデルを用いたツール呼び出し
Agent Zero自身も、軽量なローカルモデルで広く見られる問題を文書化しています。モデルがコマンドを実行するツールを呼び出さず、コマンドの説明をしてしまうという問題です。このプロジェクトは、コードに手を加えず、プロンプトだけで対処する「Tiny Local」プロファイルを提供しています。標準のツール呼び出し形式を維持しながら、通信用プロンプトから可視の推論フィールドを取り除き、tool_nameとtool_argsを含む実行可能なJSONオブジェクトだけを要求します。
プロフィールを変更せずに代替策として、専用のプロンプトファイル(拡張子 .promptinclude.md)を追加することで、期待される行動を繰り返すことができます。その内容は、Markdown バリエーションや前後テキストを含まない、正確に JSON 形式で構成された応答で、tool_name および tool_args という正確なフィールドを持つ必要があります。この補正の制限については、ドキュメントが明確に述べています:これはプロンプトおよびプロフィールの調整にすぎず、実行コードの変更ではありません。もし特定のモデルがこの規則に従っても依然として失敗する場合、次のステップはモデルの変更であり、プロンプトの複雑化ではなく、モデルの切り替えです。
#Linuxデスクトップで実際に変わること
ターミナルだけで動作するエージェントと比べたAgent Zeroの特徴は、コンテナ内に完全なXFCEデスクトップ環境があることです。エージェントは実際のGUIソフトウェア(オブジェクトをモデリングするためのBlender、ファイルマネージャー、画面上に表示されるターミナルなど)を開くことができます。ユーザーは同じ仮想マウスと仮想キーボードを共有しながら各操作を観察でき、いつでも介入できます。
内蔵ブラウザは、単なるページ操作にとどまりません。Annotateモードでは、どんなウェブページでも、クリックして指示を出せる画面に変えられます。要素の変更や調査、別のプロジェクトでの再利用、あるいは特定の箇所へのコメントが可能で、そのコメントは後からエージェントがタスクとして処理します。
#MCPサーバーを接続
統合ツール(ブラウザ、ターミナル、ファイル)に加えて、Agent Zeroは外部MCPサーバーに接続して他のサービスにアクセスできます。公式ドキュメントでは、各MCP接続は橋渡しとして説明されており、一つはGmailに、別のはデータベースに、さらにもう一つは自動化ツールに接続できます。MCPサーバーは、ローカルで実行されるコマンドとして、またはリモートURLとして宣言されます。これにより、ネットワーク上の問題が変わります。コンテナ内のローカルコマンドは、Ollama へのアクセス(host.docker.internal、共有Dockerネットワーク)と同じ制約を受け、リモートURLはコンテナの通常のネットワークルールに従います。
ドキュメントでは、念のために接続を追加するのではなく、各接続を必要最小限にとどめることを勧めています。接続するMCPサーバーが増えるたびに、モデルがアクセスできる範囲が広がるためです。これは、ツール呼び出し時の挙動が高性能なクラウドモデルより予測しにくいローカルモデルを使う場合も同様です。
#モデルとツールを接続する前に実施するセキュリティチェックリスト
Agent Zero を常時の監督なしで動作させる前に、明示的な確認が必要な 3 つの領域があります。コンテナの分離、シークレットおよび API キー、そして接続された MCP サーバーです。
| 攻撃対象領域 | 確認すべきポイント |
|---|---|
| サンドボックス/コンテナ | ホスト上で直接実行せず、Docker内で実行すること。リスクを理解しないままホームディレクトリ全体をボリュームにマウントしないこと。 |
| シークレットとAPIキー | キーを平文でプロンプト、スクリーンショット、バグ報告チケットに貼り付けるのではなく、グローバルまたはプロジェクト単位のシークレットを使用する |
| シークレットの範囲 | グローバルシークレットは、上書き設定がない限り、すべての会話とプロジェクトに適用されます。プロジェクトは、グローバルシークレットより優先される、独自の隔離されたシークレットを定義できます。 |
| 接続されているMCPサーバー | 追加する接続は実際に必要なものに限る;各MCP接続の追加は、モデルが達成可能な範囲を広げるが、Ollama のローカルまたはクラウド選択と直接的な関係はない |
#他のローカルエージェントと比較する
| Framework | その特徴 |
|---|---|
| Agent Zero | Dockerコンテナ内に、フル機能のLinuxデスクトップ(XFCE)と操作可能なブラウザを備え、コーディングの枠を超えた分野横断的なタスクに対応 |
| Hermes Agent | 永続メモリを中心に据えた、ターミナルおよびメッセージング(Telegram、Discord など)用のエージェント。グラフィカルなデスクトップはありません。 |
| OpenCode / Cline | ターミナルまたはエディタ内で動作するコーディングエージェント。専用コンテナや操作可能なブラウザは備えていません。 |
#開始前に理解すべき制限
- 誤解を招く検索ボリューム
- 検索エンジンでは「Agent Zero」という語に娯楽コンテンツも含まれるため、開発フレームワークに対する実際の需要は、このキーワードの総検索数から想像されるほど大きくありません。
- ディスクとRAMの使用量
- コンテナには、エージェントのランタイムに加えて、完全なデスクトップ環境も含まれています。推論自体を Ollama 経由で別の場所で実行する場合でも、最小構成の CLI エージェントより多くのリソースを確保する必要があります。
- ユーティリティモデルの規模が小さすぎる
- 補助モデルが小さすぎると、明示的なエラーメッセージが出ないまま、記憶の質が低下します。エージェントがセッションをまたぐと「話の流れを見失う」ように見える場合、まずこの点を確認してください。
- コンテナ内部のネットワーク
- host.docker.internalはDocker Desktopと、提示されているLinux設定で機能します。ただし、独自の構成でデプロイする場合(カスタムDockerネットワーク、リモートホスティング)は、APIのURLを手動で再入力する必要があります。
- Docker Compose で LLM を本番環境にデプロイ
- Docker で Ollama をインストール
- AIエージェント:一般的な定義と限界
- 出典:Agent Zero の公式 GitHub リポジトリ
- 出典:公式インストールガイド
- 出典:ローカルツール呼び出しに関する公式ガイド
Docker内のAgent ZeroからOllamaに接続するには、どのアドレスを使えばよいですか?+
Agent Zeroは専用GPUがなくても動作しますか?+
なぜ自分のローカルモデルはAgent Zeroで一度もツールを呼び出さないのですか?+
Agent ZeroのLinuxデスクトップは、ターミナルだけで動作するエージェントと比べて、エージェントの安全性を高めますか?+
Agent Zero と Hermes Agent は同じことをしますか?+
Agent ZeroにおけるシークレットやAPIキーのセキュリティはどのように確保しますか?+
利用可能なMCPサーバーをすべてAgent Zeroに追加すべきですか?+
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。