OpenClaw App SDKは、OpenClawプロセスの外部にあるアプリ向けの公開クライアントAPIです。スクリプト、ダッシュボード、CIジョブ、IDE拡張、その他の外部アプリがGatewayへ接続し、agent runを開始し、イベントをストリームし、結果を待機し、作業をキャンセルし、Gatewayリソースを検査したい場合はDocumentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
@openclaw/sdkを使用します。
App SDKはPlugin SDKとは異なります。
@openclaw/sdkはOpenClawの外部からGatewayと通信します。
openclaw/plugin-sdk/*は、OpenClaw内部で実行され、プロバイダー、チャンネル、ツール、フック、信頼済みランタイムを登録するPlugin専用です。現在提供されているもの
@openclaw/sdkには次が含まれています。
| サーフェス | 状態 | 機能 |
|---|---|---|
OpenClaw | 準備完了 | メインのクライアントエントリポイント。transport、接続、リクエスト、イベントを所有します。 |
GatewayClientTransport | 準備完了 | Gatewayクライアントに支えられたWebSocket transport。 |
oc.agents | 準備完了 | agentハンドルを一覧表示、作成、更新、削除、取得します。 |
Agent.run() | 準備完了 | Gatewayのagent runを開始し、Runを返します。 |
oc.runs | 準備完了 | runを作成、取得、待機、キャンセル、ストリームします。 |
Run.events() | 準備完了 | 高速なrun向けのリプレイ付きで、runごとの正規化済みイベントをストリームします。 |
Run.wait() | 準備完了 | agent.waitを呼び出し、安定したRunResultを返します。 |
Run.cancel() | 準備完了 | run idでsessions.abortを呼び出し、利用可能な場合はsession keyも使用します。 |
oc.sessions | 準備完了 | sessionハンドルを作成、解決、送信、パッチ、compact、取得します。 |
Session.send() | 準備完了 | sessions.sendを呼び出し、Runを返します。 |
oc.tasks | 準備完了 | Gateway task台帳のエントリを一覧表示、読み取り、キャンセルします。 |
oc.models | 準備完了 | models.listと現在のmodels.authStatusステータスRPCを呼び出します。 |
oc.tools | 準備完了 | ポリシーパイプラインを通じてGatewayツールを一覧表示、スコープ設定、呼び出します。 |
oc.artifacts | 準備完了 | Gateway transcript artifactを一覧表示、取得、ダウンロードします。 |
oc.approvals | 準備完了 | Gateway approval RPCを通じてexec approvalを一覧表示、解決します。 |
oc.environments | 一部対応 | Gateway-localおよびnode environment候補を一覧表示します。create/deleteは未接続です。 |
oc.rawEvents() | 準備完了 | 高度なコンシューマー向けに生のGatewayイベントを公開します。 |
normalizeGatewayEvent() | 準備完了 | 生のGatewayイベントを安定したSDKイベント形状に変換します。 |
AgentRunParams、RunResult、RunStatus、OpenClawEvent、
OpenClawEventType、GatewayEvent、OpenClawTransport、
GatewayRequestOptions、SessionCreateParams、SessionSendParams、
ArtifactSummary、ArtifactQuery、ArtifactsListResult、
ArtifactsGetResult、ArtifactsDownloadResult、
TaskSummary、TaskStatus、TasksListParams、TasksListResult、
TasksGetResult、TasksCancelResult、RuntimeSelection、
EnvironmentSelection、WorkspaceSelection、ApprovalMode、および関連する
結果型です。
Gatewayへ接続する
明示的なGateway URLでクライアントを作成するか、テストや組み込みアプリランタイム向けにカスタムtransportを注入します。new OpenClaw({ gateway: "ws://..." })はurlと同等です。gateway: "auto"オプションはコンストラクターで受け付けられますが、自動Gateway discoveryはまだ独立したSDK機能ではありません。アプリがGatewayの検出方法をまだ知らない場合はurlを渡してください。
テストでは、OpenClawTransportを実装するオブジェクトを渡します。
agentを実行する
アプリがagentハンドルを必要とする場合はoc.agents.get(id)を使用し、その後agent.run()を呼び出します。
openai/gpt-5.5のようなプロバイダー修飾付きmodel refは、Gatewayのproviderおよびmodelオーバーライドに分割されます。timeoutMsはSDK内ではミリ秒のままで、agent RPC向けにGateway timeout秒へ変換されます。
run.wait()はGatewayのagent.wait RPCを使用します。runがまだアクティブな間にwait期限が切れた場合、run自体がタイムアウトしたかのように見せかけるのではなく、status: "accepted"を返します。ランタイムタイムアウト、中止されたrun、キャンセルされたrunは、timed_outまたはcancelledに正規化されます。
sessionを作成して再利用する
アプリが永続的なtranscript状態を必要とする場合はsessionを使用します。Session.send()はsessions.sendを呼び出し、Runを返します。sessionハンドルは次もサポートします。
イベントをストリームする
SDKは生のGatewayイベントを安定したOpenClawEventエンベロープに正規化します。
| イベントタイプ | 元のGatewayイベント |
|---|---|
run.started | agentライフサイクル開始 |
run.completed | agentライフサイクル終了 |
run.failed | agentライフサイクルエラー |
run.cancelled | 中止/キャンセルされたライフサイクル終了 |
run.timed_out | タイムアウトによるライフサイクル終了 |
assistant.delta | Assistantストリーミング差分 |
assistant.message | Assistantメッセージ |
thinking.delta | 思考またはplanストリーム |
tool.call.started | ツール/item/command開始 |
tool.call.delta | ツール/item/command更新 |
tool.call.completed | ツール/item/command完了 |
tool.call.failed | ツール/item/command失敗またはブロック状態 |
approval.requested | ExecまたはPlugin approval request |
approval.resolved | ExecまたはPlugin approval resolution |
session.created | sessions.changed作成 |
session.updated | sessions.changed更新 |
session.compacted | sessions.changed compaction |
task.updated | Task更新イベント |
artifact.updated | Patchストリームイベント |
raw | まだ安定したSDKマッピングがない任意のイベント |
Run.events()はイベントを1つのrun idに絞り込み、高速なrun向けにすでに見たイベントをリプレイします。つまり、ドキュメント化された次のフローは安全です。
oc.events()を使用します。生のGatewayフレームにはoc.rawEvents()を使用します。
モデル、ツール、artifact、approval
モデルヘルパーは現在のGatewayメソッドに対応します。oc.tools.invoke()は、ポリシーまたはapproval拒否でthrowするのではなく、型付きエンベロープを返します。
sessionKey、runId、またはtaskIdスコープが1つ必要です。
openclaw tasksも支える永続的なtask台帳を使用します。
現在明示的に未対応のもの
SDKには目指しているプロダクトモデル向けの名前が含まれていますが、Gateway RPCが存在するかのように暗黙的に振る舞うことはありません。これらの呼び出しは現在、明示的なunsupported errorをthrowします。workspace、runtime、environment、approvalsフィールドは将来の形状として型付けされていますが、現在のGatewayはagent RPC上でこれらのオーバーライドをサポートしていません。呼び出し元がそれらを渡した場合、SDKはrunを送信する前にthrowするため、デフォルトのworkspace、runtime、environment、approval動作で作業が誤って実行されることはありません。
App SDKとPlugin SDK
コードがOpenClawの外部にある場合はApp SDKを使用します。- agent runを開始または監視するNodeスクリプト
- Gatewayを呼び出すCIジョブ
- ダッシュボードと管理パネル
- IDE拡張
- channel pluginになる必要がない外部ブリッジ
- 偽または実際のGateway transportを使うintegration test
- provider plugin
- channel plugin
- ツールまたはライフサイクルフック
- agent harness plugin
- 信頼済みランタイムヘルパー
@openclaw/sdkからimportする必要があります。Pluginコードは、ドキュメント化されたopenclaw/plugin-sdk/*サブパスからimportする必要があります。2つの契約を混在させないでください。