SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-28

OpenClaw風AIエージェントを自作する方法

OpenClawは自分のサーバーでshell commandやbrowser操作を行う個人向けAIエージェントです。構成部品を分解し、CVE-2026-32922の深刻度9.9を踏まえて安全な作り方を解説します。

OpenClaw の実体

OpenClaw は、自分でホストする個人向け AI エージェントです。自分のサーバーで実行し、普段使っているチャットアプリに接続すると、shell command の実行、browser の操作、ファイルの読み書き、送信したメッセージへの応答を行えます。MIT ライセンスで提供され、local-first の設計です。2026 年半ばの時点で GitHub stars は 380,000 を超えており、同プラットフォームで最も多く stars を集めたプロジェクトの 1 つです。内部は、適切に接続された比較的小規模な部品群で構成されています。この記事では各部品を説明し、このようなツールがどのように構築されているか、またどこに注意すべき点があるかを確認します。

最初に、以下の設計判断すべてに関わる重要な警告があります。2026 年 3 月、OpenClaw では 4 日間に 9 件のセキュリティ問題が公開されました。その中には、深刻度が 10 段階中 9.9 と評価された重大な権限昇格の脆弱性(CVE-2026-32922)も含まれます。このプロジェクトは、運用者自身がセキュリティ強化を行うことを前提に設計されています。任意の command を実行できるエージェントの安全性は、実行先のサーバーと、その周囲に設けた制限によって決まります。読み進める際は、この点を常に意識してください。

ゲートウェイデーモン: 1 つのプロセスを非公開で運用する

中心となるのは、通常ゲートウェイと呼ばれる、単一の長時間稼働プロセスです。これはコントロールプレーンです。メッセージを受信し、実行内容を決定し、ツールを実行して、応答を返します。それ以外のすべての要素は、このプロセスに接続します。

ゲートウェイで最も重要なのは、どこで待ち受けるかです。デフォルトでは、OpenClaw はループバックアドレス 127.0.0.1 にバインドするため、意図的に外部公開しない限りインターネットから到達できません。この設定を維持してください。ゲートウェイはコマンドを実行する単一のプロセスです。そのため、ゲートウェイを公開すると、発見した第三者にサーバーへのリモート侵入口を与えることになります。ノート PC から接続する必要がある場合は、ポートを開放せず、VPN または SSH トンネルを使用してください。到達できないポートは攻撃できません。

チャネルコネクター: メッセージを受信し、返信を返す

パーソナルエージェントは、普段使用しているアプリから会話できて初めて役に立ちます。それを担うのがチャネルコネクターです。各コネクターは、Telegram、WhatsApp、Slack、Discord などの 1 つのプラットフォームに対応し、そのプラットフォームの bot API または webhooks を使用します。

構成はすべて同じです。コネクターはプラットフォームに bot を登録し、受信メッセージを取得します。メッセージの取得方法は、プラットフォームをポーリングするか、プラットフォームから送信された webhook を受信するかのいずれかです。次に、そのメッセージを gateway に渡し、gateway の返信を同じ API 経由で投稿します。コネクターは薄い変換層です。「Telegram message が届いた」を「エージェントに渡すテキスト」に変換し、その逆も行います。独自のコネクターを作成する作業の大半は、1 つのプラットフォームの bot ドキュメントを読み、そのメッセージ形式を gateway の形式に対応付けることです。

脳とツールのループ

ゲートウェイの内部には、これをチャットボットではなくエージェントにする部分があります。それがループです。

メッセージが届くと、ゲートウェイはモデルが使用を許可されているツールの一覧とともに、そのメッセージを言語モデルへ送ります。モデルはメッセージを読み、直接回答するか、ツールを呼び出すかを判断します。ツールを呼び出した場合、ゲートウェイはそのツールを実行し、結果を取得してモデルへ返します。モデルは結果を確認し、再び判断します。モデルに実行すべき処理がなくなり、最終回答を生成するまで、この処理を繰り返します。

このループがエージェントの基本概念です。エージェントがチャットアプリケーション上で動作していても、端末上で動作していても、同じループになります。ツールをこのループに標準的な方法で接続する方法については、Model Context Protocol を介したツールの接続を次に読むとよいでしょう。モデル側については、モデル自体を自分のハードウェアで実行することで、もう一方の仕組みを理解できます。

ツール群が要であり、危険の源でもある

OpenClaw を強力にするのはツールです。シェルコマンドを実行するツール、ブラウザーを操作するツール、ファイルを読み書きするツールがあります。上記のループからこれらにアクセスできるようにすると、キーボードで実行できることのほぼすべてを実行できます。この到達範囲が製品全体であり、同時にリスク全体でもあります。

チャットアプリから届いた指示に従って任意のコマンドを実行できるエージェントは、攻撃対象領域が大きくなります。悪意のある指示、ブラウザーツールが訪問した Web ページに埋め込まれたプロンプトインジェクション攻撃、または March 2026 の脆弱性のようなバグによって、「カレンダーを読んで」が「ファイルを削除して」に変わる可能性があります。そのため、制限は任意の追加機能ではありません。侵害されても権限昇格できないように、sudo 権限のない専用の非特権ユーザーでエージェントを実行します。破壊的な操作を実行する前にエージェントが確認できるよう、危険なツールには承認手順を設けます。ツールの実行をサンドボックス化し、暴走したコマンドを封じ込めます。API key を隔離し、漏えいしても攻撃者にアカウントを渡さないようにします。同じサーバーに保存されている他の Secret についても検討してください。Vaultwarden の本当の弱点は暗号化ではなく管理トークンとバックアップファイルです。シェルアクセスを持つエージェントは、その両方に到達できます。

シェルコマンドを実行するものを外部公開する前に、基本事項を意識的に確認してください。ここで自分のサーバー用のチェックリストを作成し、上から順に実行します。

ToolVPS hardening checklist

非特権ユーザーでサービスを実行する方法については、非特権ユーザーでサービスを実行するで詳しく説明しています。実際のプロジェクトに対する安全な設定手順全体については、VPS 上で OpenClaw を安全に実行するを参照してください。

メモリをプレーンファイルとして保存する

多くの人は、エージェントのメモリはデータベースに保存されると考えます。OpenClaw はそうではありません。メモリをディスク上のプレーンな Markdown ファイルとして保存しており、この方式は採用する価値があります。

ファイルはシンプルです。移行するスキーマがなく、稼働させ続けるサービスも不要で、習得するクエリ言語もありません。内容を確認できます。フォルダーを開けば、エージェントがユーザーについて把握している内容をそのまま読めます。誤ったメモはファイルを編集して修正でき、メモリを削除する場合はそのファイルを削除できます。また、移植性にも優れています。エージェントを新しいサーバーへ移す作業は、ディレクトリをコピーするだけです。単一ユーザー向けの個人エージェントであれば、テキストファイルをまとめたフォルダーで十分です。システム全体の動作も把握しやすくなります。

スキル: 能力を追加する移植可能な方法

組み込みツールに加えて、OpenClaw は移植可能なスキル形式を使用します。これにより、コミュニティはコアを変更せずに機能を拡張できます。スキルは、エージェントに新しいタスクを教える自己完結型の手順セットです。場合によってはコードも含みます。エージェントは、タスクで必要になったときにスキルを読み込みます。Web 検索は、最初に追加するスキルとして一般的です。そのスキルを自分の SearXNG インスタンスに向けると、商用検索 API にクエリを送らずに済みます。また、スキルの信頼境界がどこにあるかも明確になります。スキルが返す内容は、見知らぬ第三者が書いたテキストだからです。

このような形式の価値は、能力を共有できることです。誰かが特定の作業向けのスキルを作成して公開し、他の人がそれを追加します。この手軽さには別の側面もあります。スキルは見知らぬ第三者が作成したコードであり、エージェントはためらわずに実行します。そのため、自分で作成していないものは、読み込む前に自分でホストするセキュリティスキャナーにかける価値があります。独自のエージェントを構築する場合は、早い段階で小さく明確な拡張形式を定義すると、後からすべての機能をコアにハードコードせずに済みます。

自分でモデルを用意する

OpenClaw はモデルに依存しません。独自の言語モデルは同梱していません。代わりに、ホスト型 API または自分で運用するモデルなど、選択したモデルに接続します。

この分離は、コスト、プライバシー、制御性に関わります。ホスト型 API では、管理するハードウェアなしで高性能なモデルを利用できます。ただし、トークン単位の料金がかかり、プロンプトがサーバーの外部に送信されます。Ollama などで提供する自己ホスト型モデルでは、すべてのメッセージを自分の環境内に保持できます。必要な費用はハードウェアと電力だけですが、より小規模または低速なモデルを運用することになります。両方を組み合わせる利用者も多くいます。エージェントを完全に非公開にしたい場合は、VPS 上でモデルを自己ホストすることが最後に残る外部依存を解消します。比較対象として、Hermes Agent も自己ホスト型エージェントの候補です。

自作するべきでしょうか?

これらはすべて自分で構築できます。構成要素は特殊なものではありません。daemon、いくつかのチャットコネクター、モデルとツールのループ、Markdown のフォルダー、そして plugin 形式です。これらを理解することには実用的な価値があります。利用するすべての agent の仕組みが明確になり、危険が存在する場所も正確に把握できるためです。

ただし、多くの人にとっての正直な答えは、同じものを作り直すのではなく、実際のものを動かして堅牢化することです。OpenClaw はすでにコネクター、ループ、スキル形式を解決しており、実際にセキュリティ面でも検証されています。自分で正しく対応すべき部分、つまり自分のサーバーでのセットアップと堅牢化に労力をかけるほうが有効です。まず学習を優先するなら、概念を段階的に学んでいくほうが、エージェントのソースコードをいきなり読むより効果的です。各段階で、実際に構築したものが1つ手元に残るためです。学習目的なら小さなものを1つ作ってください。利用目的なら実際のものを動かし、アクセスを制限して堅牢化してください。

基本的な内容については、VPS 上で独自の AI agent を構築するを参照してください。Claude を使って agent を構築するでは、同じ考え方を特定のモデルを中核として説明しています。

FAQ

OpenClaw のようなエージェントを構築するのは難しいですか?

個々の要素は難しくありません。ゲートウェイプロセス、チャットコネクター、モデルとツールのループ、ファイルを保存するディレクトリは、それぞれ単独なら簡単に実装できます。難しいのは、安全に動作させることです。チャットメッセージから shell コマンドを実行するエージェントは、重大なセキュリティ攻撃面になります。サンドボックス、権限、非特権ユーザーの設定を適切に行う作業は、機能同士を接続する作業よりも大きくなります。

OpenClaw がメモリをデータベースではなく Markdown ファイルに保存するのはなぜですか?

単一ユーザー向けの個人エージェントであれば、ファイルで十分であり、はるかに簡単だからです。実行するデータベースサービスが不要で、メモリを手動で読み取り、修正しやすく、別のサーバーへの移行もディレクトリをコピーするだけで済みます。データベースが必要になるのは、より大規模な環境です。この用途では必要ありません。

個人用 AI エージェントで最も危険な部分は何ですか?

エージェントに操作を許可するツールです。shell コマンドの実行、ブラウザーの制御、ファイルへの書き込みが該当します。これらはエージェントを構築する理由である一方、被害を受ける原因にもなります。OpenClaw で March 2026 に発生したセキュリティインシデントでは、4 日間に 9 件の問題が見つかり、そのうち 1 件は深刻度 9.9 の Critical でした。これは、ツール層を慎重に扱うべきことを明確に示しています。非特権ユーザーとして実行し、破壊的な操作には承認を設け、実行環境をサンドボックス化してください。

構築するために、自分専用の言語モデルは必要ですか?

いいえ。OpenClaw のようなエージェントはモデルに依存しないため、任意のモデルを接続できます。最も高性能なモデルを利用するならホスト型 API を選べます。完全なプライバシーを確保するなら、自分で実行するモデルを選べます。Ollama でセルフホストすると、すべてのメッセージを自分のサーバー内に保持できますが、より小規模なモデルを実行する必要があります。