コンテンツにスキップ

OpenClaw RPC アダプターの仕組み

外部ツールを自分のシステムに組み込もうとして、プロセスの管理や通信プロトコルの違いに頭を抱えたことはありませんか?ツールごとに異なるインターフェースを扱うのは、開発者にとって大きな負担になります。

OpenClaw では、JSON-RPC を活用したアダプター方式を採用することで、この問題をスマートに解決しています。外部 CLI との連携を標準化し、一貫した方法でメッセージング機能を拡張できます。

  • OpenClaw Gateway
  • signal-cli(パターン A を使用する場合)
  • imsg(パターン B / レガシー iMessage の場合)

OpenClaw は、外部 CLI との連携に 2 つの主要なパターンを使用しています。それぞれの特徴と設定方法を見ていきましょう。

パターン A: HTTP デーモン (signal-cli)

Section titled “パターン A: HTTP デーモン (signal-cli)”

signal-cli をデーモンとして実行し、HTTP 経由で JSON-RPC 通信を行う方法です。

  • イベントストリーム: SSE (/api/v1/events) を通じてリアルタイムにイベントを受け取ります。
  • ヘルスチェック: /api/v1/check エンドポイントで接続状態を監視できます。
  • ライフサイクル管理: channels.signal.autoStart=true に設定すると、OpenClaw がプロセスの起動と停止を自動的に制御します。

パターン B: stdio 子プロセス (legacy: imsg)

Section titled “パターン B: stdio 子プロセス (legacy: imsg)”

imsg rpc を子プロセスとして直接起動し、標準入出力(stdin/stdout)でやり取りする方法です。

  • 通信方式: 1 行につき 1 つの JSON オブジェクトをやり取りする行区切り形式です。
  • メリット: TCP ポートの開放やデーモンの常駐が必要ありません。

主に使用される RPC メソッドは以下の通りです:

  • watch.subscribe: 通知(method: "message")の購読を開始します。
  • watch.unsubscribe: 購読を解除します。
  • send: メッセージを送信します。
  • chats.list: チャット一覧を取得し、診断やプロブに使用します。
  • 接続の不安定さ: RPC クライアントは回復力を重視して設計してください。タイムアウトの設定や、プロセス終了時の自動再起動ロジックを組み込むことを推奨します。
  • 宛先指定のエラー: ユーザーの表示名などは変更される可能性があるため、可能な限り chat_id などの永続的な ID を使用して宛先を指定してください。
  • iMessage の新規セットアップ: imsg を使用したパターン B はレガシーな方法です。新しい iMessage 環境を構築する場合は、BlueBubbles の使用を検討してください。

設定中に不明な点があれば、AI Setup Assistant に質問してください。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。