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

open-sourcebeginner

# なぜ私はプロプライエタリな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時間を節約しましょう:

```bash

# これをしないでください - 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に更新を投稿するシステムを作成します。

```python

# 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`はこんな感じです:

```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レート制限に達しました。

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

```bash

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

openclaw run system.yaml

# 失敗した場合、ゾンビプロセスを確認

lsof -i :6379 # Redisポート

kill -9 <PID> # 確信がある場合のみ

# リアルタイムで監視

openclaw dashboard # localhost:8080でブラウザを開く

```

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

- エージェントの状態(実行中、アイドル、エラー)

- メッセージキューの深さ

- エージェントごとのメモリ使用量

## 諦めかけさせたバグ

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

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

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

```python

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で壊れています。水平スケーリングが必要な場合、自分で実装する必要があります:

```python

# 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を送信してドキュメントのギャップを修正しました。あなたもできます。

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