OpenClaw App SDK 是供 OpenClaw 程序外應用程式使用的公開用戶端 API。當腳本、儀表板、CI 工作、IDE 擴充功能,或其他外部應用程式想連接到 Gateway、啟動代理程式執行、串流事件、等待結果、取消工作,或檢查 Gateway 資源時,請使用Documentation Index
Fetch the complete documentation index at: https://docs.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 內部執行,並註冊提供者、頻道、工具、掛鉤或可信任執行階段的 plugins 使用。目前提供的內容
@openclaw/sdk 隨附:
| 介面 | 狀態 | 功能 |
|---|---|---|
OpenClaw | 就緒 | 主要用戶端進入點。擁有傳輸、連線、請求與事件。 |
GatewayClientTransport | 就緒 | 由 Gateway 用戶端支援的 WebSocket 傳輸。 |
oc.agents | 就緒 | 列出、建立、更新、刪除並取得代理程式控制代碼。 |
Agent.run() | 就緒 | 啟動 Gateway agent 執行並傳回 Run。 |
oc.runs | 就緒 | 建立、取得、等待、取消並串流執行。 |
Run.events() | 就緒 | 串流已正規化的每次執行事件,並為快速執行提供重播。 |
Run.wait() | 就緒 | 呼叫 agent.wait 並傳回穩定的 RunResult。 |
Run.cancel() | 就緒 | 依執行 ID 呼叫 sessions.abort,可用時會附上工作階段金鑰。 |
oc.sessions | 就緒 | 建立、解析、傳送至、修補、壓縮並取得工作階段控制代碼。 |
Session.send() | 就緒 | 呼叫 sessions.send 並傳回 Run。 |
oc.models | 就緒 | 呼叫 models.list 與目前的 models.authStatus 狀態 RPC。 |
oc.tools | 部分 | 列出工具目錄與有效工具;尚未接線直接工具叫用。 |
oc.approvals | 就緒 | 透過 Gateway 核准 RPC 列出並解析 exec 核准。 |
oc.rawEvents() | 就緒 | 為進階消費者公開原始 Gateway 事件。 |
normalizeGatewayEvent() | 就緒 | 將原始 Gateway 事件轉換成穩定的 SDK 事件形狀。 |
AgentRunParams, RunResult, RunStatus, OpenClawEvent,
OpenClawEventType, GatewayEvent, OpenClawTransport,
GatewayRequestOptions, SessionCreateParams, SessionSendParams,
RuntimeSelection, EnvironmentSelection, WorkspaceSelection,
ApprovalMode,以及相關結果型別。
連接到 Gateway
使用明確的 Gateway URL 建立用戶端,或為測試與嵌入式應用程式執行階段注入自訂傳輸。new OpenClaw({ gateway: "ws://..." }) 等同於 url。建構函式接受 gateway: "auto" 選項,但自動 Gateway 探索尚未是獨立的 SDK 功能;當應用程式尚不知道如何探索 Gateway 時,請傳入 url。
對於測試,請傳入實作 OpenClawTransport 的物件:
執行代理程式
當應用程式需要代理程式控制代碼時,使用oc.agents.get(id),然後呼叫 agent.run()。
openai/gpt-5.5 這類提供者限定模型參照,會被拆成 Gateway provider 與 model 覆寫。timeoutMs 在 SDK 中維持毫秒,並會為 agent RPC 轉換成 Gateway 逾時秒數。
run.wait() 使用 Gateway agent.wait RPC。若等待期限到期時執行仍在進行中,會傳回 status: "accepted",而不是假裝執行本身已逾時。執行階段逾時、中止的執行與已取消的執行,會被正規化為 timed_out 或 cancelled。
建立並重複使用工作階段
當應用程式需要持久的對話紀錄狀態時,請使用工作階段。Session.send() 呼叫 sessions.send 並傳回 Run。工作階段控制代碼也支援:
串流事件
SDK 會將原始 Gateway 事件正規化為穩定的OpenClawEvent 信封:
| 事件類型 | 來源 Gateway 事件 |
|---|---|
run.started | agent 生命週期開始 |
run.completed | agent 生命週期結束 |
run.failed | agent 生命週期錯誤 |
run.cancelled | 已中止/已取消的生命週期結束 |
run.timed_out | 逾時生命週期結束 |
assistant.delta | 助理串流增量 |
assistant.message | 助理訊息 |
thinking.delta | 思考或計畫串流 |
tool.call.started | 工具/項目/命令開始 |
tool.call.delta | 工具/項目/命令更新 |
tool.call.completed | 工具/項目/命令完成 |
tool.call.failed | 工具/項目/命令失敗或受阻狀態 |
approval.requested | Exec 或 Plugin 核准請求 |
approval.resolved | Exec 或 Plugin 核准解析 |
session.created | sessions.changed 建立 |
session.updated | sessions.changed 更新 |
session.compacted | sessions.changed 壓縮 |
task.updated | 任務更新事件 |
artifact.updated | 修補串流事件 |
raw | 尚無穩定 SDK 對應的任何事件 |
Run.events() 會將事件篩選為單一執行 ID,並為快速執行重播已看過的事件。這表示文件化流程是安全的:
oc.events()。對於原始 Gateway 框架,請使用 oc.rawEvents()。
模型、工具與核准
模型輔助工具會對應到目前的 Gateway 方法:目前明確不支援
SDK 包含我們想要的產品模型名稱,但不會默默假裝 Gateway RPC 存在。這些呼叫目前會擲回明確的不支援錯誤:workspace、runtime、environment 與 approvals 欄位會被型別化為未來形狀,但目前的 Gateway 不支援在 agent RPC 上使用這些覆寫。如果呼叫端傳入這些欄位,SDK 會在提交執行前擲回錯誤,讓工作不會意外以預設工作區、執行階段、環境或核准行為執行。
App SDK 與 Plugin SDK 的比較
當程式碼位於 OpenClaw 外部時,請使用 App SDK:- 啟動或觀察代理程式執行的 Node 腳本
- 呼叫 Gateway 的 CI 工作
- 儀表板與管理面板
- IDE 擴充功能
- 不需要成為頻道 plugins 的外部橋接器
- 搭配假或真實 Gateway 傳輸的整合測試
- 提供者 plugins
- 頻道 plugins
- 工具或生命週期掛鉤
- 代理程式繫具 plugins
- 可信任執行階段輔助工具
@openclaw/sdk 匯入。Plugin 程式碼應從文件化的 openclaw/plugin-sdk/* 子路徑匯入。不要混用這兩個契約。