SSD Nodes Learn
ガイド Matt Connor著者 Matt Connor ・更新日 2026-07-24

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

OpenClawのような、サーバー上でコマンドを実行するパーソナルAIエージェントの構築方法を解説します。CVE-2026-32922などの脆弱性リスクを避けるため、設計段階でのセキュリティ強化(hardening)の重要性と、gatewayプロセスの安全な運用についても詳しく説明します。

OpenClawの実体

OpenClawは、セルフホスト型のパーソナルAIエージェントです。自身のサーバーで実行し、既存のチャットアプリと連携させます。これにより、shellコマンドの実行、ブラウザの操作、ファイルの読み書き、送信されたメッセージへの対応が可能になります。MITライセンスで、ローカルファーストな設計です。2026年中盤時点でGitHubのスター数は380,000を超えており、プラットフォーム上で最もスターを集めているプロジェクトの一つです。その実体は、合理的な方法で結合された、比較的シンプルなコンポーネントの集合体です。本記事では、これらのコンポーネントを解説し、このようなツールがどのように構築され、どこにリスク(sharp edges)があるのかを説明します。

設計上の判断に影響を与える重要な警告があります。2026年3月、OpenClawでは4日間で9件のセキュリティ問題が公開されました。その中には、深刻度9.9/10の重大な権限昇格の脆弱性(CVE-2026-32922)が含まれていました。このプロジェクトは、運用者であるユーザー自身が要塞化(harden)することを前提に設計されています。あらゆるコマンドを実行できるエージェントの安全性は、実行環境のセキュリティと、ユーザーが設定する制限に依存します。読み進める際は、この点を念頭に置いてください。

ゲートウェイデーモン:単一のプロセス、非公開の維持

中心となるのは、通常gatewayと呼ばれる単一の長時間実行プロセスです。これがコントロールプレーンとなります。メッセージを受信し、動作を決定し、ツールを実行し、返信を送信します。他のすべてのコンポーネントは、このプロセスに接続されます。

gatewayにおいて最も重要な事実は、リッスンするアドレスです。デフォルトでは、OpenClawはloopbackアドレスである 127.0.0.1 にバインドするため、意図的に公開しない限りインターネットからアクセスされることはありません。そのままにしておいてください。このプロセスはコマンドを実行する役割を担っているため、gatewayを公開すると、発見した者にサーバーへのリモートアクセス権を与えてしまうことになります。ノートPCからアクセスする必要がある場合は、ポートを開放するのではなく、VPNまたはSSHトンネルを使用してください。アクセスできないポートを攻撃することは不可能です。

チャネルコネクタ:メッセージの受信と返信の送信

パーソナルエージェントは、既存のアプリから対話できて初めて実用性を持ちます。それを実現するのがチャネルコネクタです。各コネクタは、Telegram、WhatsApp、Slack、Discordなどの各プラットフォームに対し、そのプラットフォームのbot APIまたはwebhookを使用して通信します。

構造はすべて共通しています。コネクタがプラットフォームにbotを登録し、受信メッセージ(プラットフォームからのポーリング、またはwebhookによる受信)を受け取ります。次に、そのメッセージをgatewayに渡し、gatewayの返信を同じAPIを通じて投稿します。コネクタは軽量な翻訳レイヤーです。「Telegramメッセージを受信した」という事象を「エージェントへのテキスト」に変換し、その逆も行います。独自のコネクタを構築する場合は、プラットフォームのbotドキュメントを読み、そのメッセージ形式をgatewayの形式にマッピングする作業が中心となります。

ブレイン(脳)とツールループ

gatewayの内部には、単なるチャットボットではなくエージェントたらしめている部分があります。それがループです。

メッセージが届くと、gatewayはメッセージを言語モデルに送信します。その際、モデルが使用を許可されているツールのリストも一緒に送られます。モデルはメッセージを読み、直接回答するか、ツールを呼び出すかを決定します。ツールを呼び出す場合、gatewayはそのツールを実行して結果を取得し、結果をモデルに送り返します。モデルは結果を確認し、再度決定を下します。モデルがこれ以上行うことがなくなり、最終的な返信を生成するまで、このプロセスが繰り返されます。

このループこそがエージェントの核となる概念であり、エージェントがチャットアプリにいてもターミナルにいても、同じ仕組みで動作します。ツールをこのループに標準的な方法で接続する方法については、Model Context Protocolによるツールの接続、モデル側については、自身のハードウェアでのモデル実行が参考になります。

ツールセットが目的であり、リスクでもある

ツールこそがOpenClawの強力な点です。shellコマンドを実行するツール、ブラウザを操作するツール、ファイルを読み書きするツール。上記のループにこれらへのアクセス権を与えると、エージェントはキーボードで実行できるほぼすべての操作が可能になります。この到達範囲こそが製品の価値であり、同時に最大のリスクでもあります。

チャットアプリから届く指示に基づいて任意のコマンドを実行できるエージェントは、非常に大きな攻撃対象領域(attack surface)となります。不適切な指示、ブラウザツールが訪問するウェブページに隠されたプロンプトインジェクション攻撃、あるいは2026年3月に発生したようなバグにより、「カレンダーを読んで」という指示が「ファイルを削除して」に変わる可能性があります。したがって、制限の設定はオプションではなく必須です。エージェントは、権限昇格を防ぐため、sudo権限を持たない専用の非特権ユーザーとして実行してください。破壊的な動作を行う前に確認を求めるよう、危険なツールには承認ステップを設けてください。制御不能なコマンドを封じ込めるため、ツール実行はサンドボックス化してください。アカウントの流出を防ぐため、モデルのAPIキーは隔離してください。

shellコマンドを実行するものを公開する前に、基本事項を慎重に検討してください。自身の環境向けのチェックリストを以下に示します。上から順に実行してください。

ToolVPS hardening checklist

非特権ユーザーに関する詳細は 非特権ユーザーとしてのサービス実行 で解説しています。実際のプロジェクトにおける完全な安全設定の手順は、VPSでのOpenClawの安全な実行 にあります。

メモリはプレーンファイルとして

多くの人は、エージェントのメモリはデータベースに保存されるものと考えています。OpenClawは異なります。メモリをディスク上のプレーンなMarkdownファイルとして保存します。この選択は、模範とすべきものです。

ファイルはシンプルです。移行すべきスキーマも、実行し続ける必要のあるサービスも、学習すべきクエリ言語もありません。中身の確認も容易です。フォルダを開けば、エージェントがあなたについて何を認識しているかを正確に読み取ることができ、ファイルを編集して誤った情報を修正したり、ファイルを削除してメモリを消去したりできます。また、ディレクトリをコピーするだけで新しいサーバーへ移動できるため、ポータビリティにも優れています。単一ユーザー向けのパーソナルエージェントであれば、テキストファイルのフォルダで十分であり、システム全体の構造を把握しやすく保てます。

スキル:能力を追加するためのポータブルな方法

組み込みのツール以外に、OpenClawはポータブルなスキル形式を採用しています。これにより、コミュニティはコア部分を変更することなく、機能を拡張できます。スキルとは、エージェントに新しいタスクを学習させるための、指示(および場合によってはコード)をまとめた自己完結型のパッケージです。エージェントは、タスクが必要とする時にスキルをロードします。

このような形式の利点は、機能が共有可能になることです。誰かが特定の業務のためのスキルを作成して公開すれば、他のユーザーはそれを導入するだけで済みます。独自のエージェントを構築する場合、早い段階で明確な拡張形式を定義しておけば、後からすべての機能をコアにハードコードする手間を省けます。

モデルの持ち込み(Bring your own model)

OpenClawはモデルに依存しません(model-agnostic)。独自の言語モデルを同梱しているわけではありません。代わりに、ホストされたAPI、または自身で実行するモデルのいずれかを選択して接続します。

この分離は、コスト、プライバシー、および制御の面で重要です。ホストされたAPIを使用すれば、ハードウェア管理なしで強力なモデルを利用できますが、トークンごとの料金が発生し、プロンプトはサーバー外に送信されます。Ollamaなどで提供される自己ホスト型モデルを使用すれば、すべてのメッセージを自身のマシン内に保持でき、コストはハードウェアと電力のみ(ただし、より小型または低速なモデルを使用することになります)で済みます。多くのユーザーはこれらを組み合わせて使用しています。エージェントのプライバシーを完全に維持したい場合は、VPSでのモデルの自己ホスト が最後の欠落を埋める手段となります。また、比較対象として Hermes Agent もあります。

構築すべきか?

これらすべてを自分で構築することは可能です。構成要素自体は特殊なものではありません。デーモン、いくつかのチャットコネクタ、モデルとツールのループ、Markdownのフォルダ、そしてプラグイン形式です。これらを理解することは非常に有益です。なぜなら、あらゆるエージェントの仕組みが解明され、どこにリスクがあるかが明確になるからです。

しかし、ほとんどの人にとっての誠実な回答は、再発明するのではなく、既存のものを実行して要塞化することです。OpenClawはすでにコネクタ、ループ、スキル形式の問題を解決しており、実際のセキュリティ検証も受けています。あなたの努力は、自身で正しく設定すべき部分、つまり自身のサーバーでのセットアップと要塞化に注力すべきです。学習のために小さなものを作るのは良いですが、実際に使うためには、本物のツールを動かし、ロックダウンしてください。

一般的な基礎については VPSでの独自のAIエージェントの構築 に、特定のモデルを脳として使用したエージェントの構築については Claudeを使用したエージェントの構築 に記載されています。

FAQ

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

個々のコンポーネント自体は難しくありません。gatewayプロセス、チャットコネクタ、モデルとツールのループ、ファイルのフォルダは、それぞれ単体で見れば単純です。難しいのは、それを安全に実装することです。チャットメッセージからshellコマンドを実行するエージェントは、重大なセキュリティリスクとなります。サンドボックス化、権限設定、非特権ユーザーの設定を正しく行う作業は、機能を結合する作業よりも多くの労力を要します。

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

単一ユーザー向けのパーソナルエージェントには、ファイルで十分であり、かつはるかにシンプルだからです。実行すべきデータベースサービスはなく、メモリは手動で簡単に読み取り・修正でき、エージェントを別のサーバーへ移動する際もディレクトリをコピーするだけです。データベースが必要になるのは、より大規模なスケールにおいてです。

パーソナルAIエージェントの最も危険な部分はどこですか?

エージェントに動作を許可するツールです。shellコマンドの実行、ブラウザの操作、ファイルの書き込みです。これらはエージェントを構築する理由であると同時に、あなたに危害を加える理由でもあります。OpenClawの2026年3月のセキュリティ事象(4日間で9件の脆弱性、うち深刻度9.9の重大なものを含む)は、ツールレイヤーを慎重に扱うべきであるという明確な根拠です。非特権ユーザーとして実行し、破壊的なアクションには承認を挟み、実行をサンドボックス化してください。

構築するために独自の言語モデルが必要ですか?

いいえ。OpenClawのようなエージェントはモデルに依存しないため、任意のモデルを接続できます。強力なモデルを使用するためにホストされたAPIを使うことも、プライバシーのために自身でモデルを動かすことも可能です。Ollamaを使用した自己ホストは、より小型のモデルを使用することになりますが、すべてのメッセージを自身のサーバー内に保持できます。