OpenClaw 应用 SDK 是面向 OpenClaw 进程外应用的公开客户端 API。当脚本、仪表板、CI 作业、IDE 扩展或其他外部应用需要连接到 Gateway 网关、启动智能体运行、流式传输事件、等待结果、取消工作或检查 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。
应用 SDK 不同于 插件 SDK。
@openclaw/sdk 从 OpenClaw 外部与 Gateway 网关通信。
openclaw/plugin-sdk/* 仅用于在 OpenClaw 内部运行并注册提供商、渠道、工具、钩子或可信运行时的插件。当前提供的内容
@openclaw/sdk 提供:
| 表面 | Status | 作用 |
|---|---|---|
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.tasks | 就绪 | 列出、读取并取消 Gateway 网关任务账本条目。 |
oc.models | 就绪 | 调用 models.list 和当前的 models.authStatus 状态 RPC。 |
oc.tools | 就绪 | 通过策略管线列出、限定作用域并调用 Gateway 网关工具。 |
oc.artifacts | 就绪 | 列出、获取并下载 Gateway 网关转录产物。 |
oc.approvals | 就绪 | 通过 Gateway 网关审批 RPC 列出并处理 exec 审批。 |
oc.environments | 部分支持 | 列出 Gateway 网关本地和节点环境候选项;创建/删除尚未接线。 |
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 创建客户端,或为测试和嵌入式应用运行时注入自定义传输。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 或插件审批请求 |
approval.resolved | Exec 或插件审批处理结果 |
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 网关方法:oc.tools.invoke() 会返回一个类型化信封,而不是因策略或审批拒绝而抛出异常。
sessionKey、runId 或 taskId 作用域:
openclaw tasks 的持久任务账本:
当前明确不支持
SDK 包含我们期望的产品模型名称,但它不会静默假装 Gateway 网关 RPC 存在。这些调用目前会抛出明确的不支持错误:workspace、runtime、environment 和 approvals 字段被类型化为未来形状,但当前 Gateway 网关不支持在 agent RPC 上使用这些覆盖项。如果调用方传入这些字段,SDK 会在提交运行前抛出异常,确保工作不会意外使用默认工作区、运行时、环境或审批行为执行。
应用 SDK 与插件 SDK
当代码位于 OpenClaw 外部时,使用应用 SDK:- 启动或观察智能体运行的 Node 脚本
- 调用 Gateway 网关的 CI 作业
- 仪表板和管理面板
- IDE 扩展
- 不需要成为渠道插件的外部桥接
- 使用虚假或真实 Gateway 网关传输的集成测试
- 提供商插件
- 渠道插件
- 工具或生命周期钩子
- Agent harness plugins
- 可信运行时辅助方法
@openclaw/sdk 导入。插件代码应从文档化的 openclaw/plugin-sdk/* 子路径导入。不要混用这两套契约。