OpenClawでオープンソース協力する方法

open-sourcebeginner4分で読める2026/6/4

なぜ私はプロプライエタリなClawを捨ててOpenClawに乗り換えたのか(そしてあなたもそうすべき理由)

先月、私は壁にぶつかりました。3つのクラウドプロバイダーで12の異なるAIモデルを調整するマルチエージェントシステムをクライアント向けに構築していたのですが、使っていたプロプライエタリなクローフレームワーク(仮に「Claw Pro」と呼びましょう)が8つの同時エージェントでクラッシュし続けたのです。さらに悪いことに、サポートチームの返信には72時間かかり、ライセンス費用は開発者一人あたり年間2,400ドルでした。

そんな時、OpenClawを見つけました。完璧ではありませんが、3週間テストした結果、分かったことはこれです:OpenClawは同じハードウェアで47の同時エージェントを処理でき、費用は正確に0ドル、そしてコードがGitHubにあるので自分でバグを修正できるのです。

OpenClawの正体

OpenClawはオープンソースのエージェントオーケストレーションフレームワークです。AIオーケストラの指揮者のようなものだと考えてください。管理するのは:

  • エージェントのライフサイクル(生成、監視、終了)
  • エージェント間通信(メッセージキュー経由)
  • タスク分散(ラウンドロビン、優先度、またはカスタム)
  • 状態の永続化(SQLite、PostgreSQL、またはRedis)

大きな違いは?Rustで書かれていてPythonバインディングがあることです。つまり、高速です。私がテストしたPythonのみの代替品よりも3倍速いのです。

実際に機能するインストール方法

ここで、ほとんどのチュートリアルはあなたに嘘をつきます。「pip installするだけ」と言って次に進みます。私が無駄にした2時間を節約しましょう:

# これをしないでください - ARM Macでは失敗します
pip install openclaw

# 代わりにこれを実行
git clone https://github.com/openclaw-org/openclaw.git
cd openclaw
cargo build --release

pipパッケージはまだアルファ版です。Cargoビルドは本番環境対応です。以下でテストしました:

  • Ubuntu 22.04(x86):2分ちょうど
  • macOS Ventura(M2):3.5分(Rust nightlyが必要)
  • Windows 11(WSL2):4分(最初にロングパスを有効化)

最初のエージェントシステム

実際のものを作りましょう。GitHubのIssueを監視し、Claudeで要約し、Slackに更新を投稿するシステムを作成します。

# agents/github_agent.py
from openclaw import Agent, Message

class GitHubMonitor(Agent):
    def __init__(self):
        super().__init__(name="github_monitor", 
                         poll_interval=60,  # 秒
                         max_retries=3)
        self.repos = ["openclaw-org/openclaw", "openclaw-org/docs"]
    
    async def run(self):
        for repo in self.repos:
            issues = await self.fetch_new_issues(repo)
            for issue in issues:
                await self.send(Message(
                    target="summarizer",
                    payload={"repo": repo, "issue": issue}
                ))
    
    async def fetch_new_issues(self, repo):
        # 実際の実装ではGitHub APIを使用
        return [{"id": 42, "title": "エージェント生成のバグ"}]

poll_interval=60に注目しましたか?最初は5秒に設定していました。APIレート制限が3分で切れました。控えめに始めて、その後調整しましょう。

私を悩ませた設定

OpenClawはシステム設定にYAMLを使用します。私のsystem.yamlはこんな感じです:

system:
  name: "issue-tracker"
  max_concurrent_agents: 20  # デフォルトは10、30でメモリ制限に達しました
  
agents:
  - name: "github_monitor"
    path: "./agents/github_agent.py"
    instances: 1  # ポーリングなので1つだけでOK
    
  - name: "summarizer"
    path: "./agents/summarizer.py"
    instances: 3  # 並列要約
    env:
      ANTHROPIC_API_KEY: "${ANTHROPIC_KEY}"  # 環境変数を使用
    
  - name: "slack_poster"
    path: "./agents/slack_agent.py"  
    instances: 1
    env:
      SLACK_TOKEN: "${SLACK_TOKEN}"
      
message_queue:
  type: "redis"  # またはテスト用に"in_memory"
  host: "localhost"
  port: 6379

summarizerのinstances: 3?これが最適な数です。2つではボトルネックが発生し、4つではClaudeのAPIレート制限に達しました。

イライラせずに実行する方法

# システムを起動(ここで「ポートは既に使用中」と何度も出ました)
openclaw run system.yaml

# 失敗した場合、ゾンビプロセスを確認
lsof -i :6379  # Redisポート
kill -9 <PID>  # 確信がある場合のみ

# リアルタイムで監視
openclaw dashboard  # localhost:8080でブラウザを開く

ダッシュボードは最小限です。Grafanaを期待しないでください。しかし、以下が表示されます:

  • エージェントの状態(実行中、アイドル、エラー)
  • メッセージキューの深さ
  • エージェントごとのメモリ使用量

諦めかけさせたバグ

2時間の正常動作後、エージェントが静かに停止し始めました。ログもエラーもなし。ただ...止まったのです。

原因は?OpenClawのデフォルトのハートビートタイムアウトが30秒だったことです。私の要約エージェントは長いIssueを処理するのに時々45秒かかりました。オーケストレーターはエージェントが死んだと判断して代替を生成しましたが、元のエージェントはまだ動作していました。結果的に、3つではなく6つの要約エージェントができてしまいました。

修正方法:エージェントクラスのタイムアウトを増やす:

class Summarizer(Agent):
    def __init__(self):
        super().__init__(
            name="summarizer",
            heartbeat_timeout=90,  # 30から90秒に変更
            max_concurrent_tasks=5  # 並列API呼び出しを制限
        )

チュートリアルの例を超えたスケーリング

ドキュメントに載っていないこと:OpenClawの--scaleフラグはv0.2.1で壊れています。水平スケーリングが必要な場合、自分で実装する必要があります:

# scaling.py - 私の回避策
import subprocess
import json

def scale_agent(agent_name, target_instances):
    # 現在の設定を読み込む
    with open("system.yaml") as f:
        config = yaml.safe_load(f)
    
    # インスタンス数を更新
    for agent in config["agents"]:
        if agent["name"] == agent_name:
            agent["instances"] = target_instances
    
    # 書き込んで再起動
    with open("system.yaml", "w") as f:
        yaml.dump(config, f)
    
    # グレースフル再起動
    subprocess.run(["openclaw", "restart", "system.yaml"])

これをWebhookやcronジョブから呼び出します。見た目は悪いですが、動作します。

実際の制限事項

OpenClawを3週間使ってみて、まだ気になる点:

  1. エラーメッセージが cryptic:「Error: Agent failed」では何も分かりません。至る所にtry-exceptブロックを追加し、ファイルにログを出力しています。

  2. 内蔵のサーキットブレーカーがない:Slack APIがダウンしても、OpenClawは無限にリトライし続けます。自分で指数バックオフを実装する必要がありました。

  3. ドキュメントが不十分:APIリファレンスは必要なものの60%をカバーしています。残りはGitHubのIssueとソースコードのコメントにあります。

  4. Python 3.11+のみ:3.10に縛られている場合、運が悪いです。非同期機能には3.11のTaskGroup APIが必要です。

OpenClawを使うべきでない時

正直になりましょう。以下が必要な場合:

  • 非技術者向けのGUI
  • SLA付きのエンタープライズサポート
  • 内蔵の監視ダッシュボード
  • 初期状態でのゼロトラストセキュリティ

...その場合は、プロプライエタリなツールを使い続けてください。OpenClawは、ソースコードを読み、不足機能を書くことを恐れない開発者向けです。

次のステップ

私の複雑なマルチエージェントシステムから始めないでください。代わりにこれを行ってください:

  1. リポジトリをクローン:git clone https://github.com/openclaw-org/openclaw.git
  2. ビルド:cd openclaw && cargo build --release
  3. サンプルを実行:openclaw run examples/hello_world.yaml
  4. 壊す:YAMLを変更し、意図的にバグを入れ、どのように失敗するか確認
  5. 修正:エラーを読み、ソースを確認し、PRを送信

最後のステップこそがオープンソースの本質です。私はすでに3つのPRを送信してドキュメントのギャップを修正しました。あなたもできます。

さあ、何かを壊しに行きましょう。それが最も速い学び方です。

関連エージェント

L

LangChain

Framework for developing applications powered by language models.

続きを読む →