RPC and API
OpenClaw Uygulama SDK'sı
OpenClaw App SDK, OpenClaw sürecinin dışındaki uygulamalar için genel istemci API’sidir. Bir betik, pano, CI işi, IDE eklentisi veya başka bir dış uygulama Gateway’e bağlanmak, agent çalıştırmaları başlatmak, olayları akışla almak, sonuçları beklemek, işi iptal etmek ya da Gateway kaynaklarını incelemek istediğinde @openclaw/sdk kullanın.
Bugün sunulanlar
@openclaw/sdk şunlarla birlikte sunulur:
| Yüzey | Durum | Ne yapar |
|---|---|---|
OpenClaw |
Hazır | Ana istemci giriş noktası. Aktarımı, bağlantıyı, istekleri ve olayları yönetir. |
GatewayClientTransport |
Hazır | Gateway istemcisi tarafından desteklenen WebSocket aktarımı. |
oc.agents |
Hazır | Agent tanıtıcılarını listeler, oluşturur, günceller, siler ve alır. |
Agent.run() |
Hazır | Bir Gateway agent çalıştırması başlatır ve bir Run döndürür. |
oc.runs |
Hazır | Çalıştırmaları oluşturur, alır, bekler, iptal eder ve akışla iletir. |
Run.events() |
Hazır | Hızlı çalıştırmalar için yeniden oynatma ile çalıştırma başına normalize olayları akıtır. |
Run.wait() |
Hazır | agent.wait çağırır ve kararlı bir RunResult döndürür. |
Run.cancel() |
Hazır | Kullanılabiliyorsa oturum anahtarıyla birlikte çalıştırma kimliğine göre sessions.abort çağırır. |
oc.sessions |
Hazır | Oturum tanıtıcılarını oluşturur, çözer, gönderir, yamalar, compaction uygular ve alır. |
Session.send() |
Hazır | sessions.send çağırır ve bir Run döndürür. |
oc.models |
Hazır | models.list ve geçerli models.authStatus durum RPC’sini çağırır. |
oc.tools |
Hazır | Gateway araçlarını ilke hattı üzerinden listeler, kapsamlandırır ve çağırır. |
oc.artifacts |
Hazır | Gateway transcript artifact’lerini listeler, alır ve indirir. |
oc.approvals |
Hazır | Gateway onay RPC’leri üzerinden exec onaylarını listeler ve çözer. |
oc.environments |
Kısmi | Gateway-yerel ve node ortam adaylarını listeler; oluşturma/silme bağlı değildir. |
oc.rawEvents() |
Hazır | Gelişmiş tüketiciler için ham Gateway olaylarını açığa çıkarır. |
normalizeGatewayEvent() |
Hazır | Ham Gateway olaylarını kararlı SDK olay şekline dönüştürür. |
SDK ayrıca bu yüzeyler tarafından kullanılan temel türleri dışa aktarır:
AgentRunParams, RunResult, RunStatus, OpenClawEvent,
OpenClawEventType, GatewayEvent, OpenClawTransport,
GatewayRequestOptions, SessionCreateParams, SessionSendParams,
ArtifactSummary, ArtifactQuery, ArtifactsListResult,
ArtifactsGetResult, ArtifactsDownloadResult, RuntimeSelection,
EnvironmentSelection, WorkspaceSelection, ApprovalMode ve ilgili
sonuç türleri.
Bir Gateway’e bağlanma
Açık bir Gateway URL’siyle bir istemci oluşturun veya testler ve gömülü uygulama çalışma zamanları için özel bir aktarım enjekte edin.
const oc = new OpenClaw({
url: "ws://127.0.0.1:18789",
token: process.env.OPENCLAW_GATEWAY_TOKEN,
requestTimeoutMs: 30_000,
});
await oc.connect();
new OpenClaw({ gateway: "ws://..." }), url ile eşdeğerdir.
gateway: "auto" seçeneği kurucu tarafından kabul edilir, ancak otomatik Gateway
keşfi henüz ayrı bir SDK özelliği değildir; uygulama Gateway’i nasıl keşfedeceğini
zaten bilmiyorsa url iletin.
Testler için OpenClawTransport uygulayan bir nesne iletin:
const oc = new OpenClaw({
transport: {
async request(method, params) {
return { method, params };
},
async *events() {},
},
});
Bir agent çalıştırma
Uygulama bir agent tanıtıcısı istediğinde oc.agents.get(id) kullanın, ardından
agent.run() çağırın.
const agent = await oc.agents.get("main");
const run = await agent.run({
input: "Review this pull request and suggest the smallest safe fix.",
model: "openai/gpt-5.5",
sessionKey: "main",
timeoutMs: 30_000,
});
for await (const event of run.events()) {
const data = event.data as { delta?: unknown };
if (event.type === "assistant.delta" && typeof data.delta === "string") {
process.stdout.write(data.delta);
}
}
const result = await run.wait({ timeoutMs: 120_000 });
console.log(result.status);
openai/gpt-5.5 gibi sağlayıcı nitelikli model başvuruları Gateway provider
ve model geçersiz kılmalarına ayrılır. timeoutMs SDK içinde milisaniye
olarak kalır ve agent RPC’si için Gateway zaman aşımı saniyelerine dönüştürülür.
run.wait(), Gateway agent.wait RPC’sini kullanır. Çalıştırma hâlâ etkinken
süresi dolan bir bekleme son tarihi, çalıştırmanın kendisi zaman aşımına uğramış
gibi davranmak yerine status: "accepted" döndürür. Çalışma zamanı zaman
aşımları, durdurulan çalıştırmalar ve iptal edilen çalıştırmalar timed_out
veya cancelled olarak normalize edilir.
Oturum oluşturma ve yeniden kullanma
Uygulama kalıcı transcript durumu istediğinde oturumları kullanın.
const session = await oc.sessions.create({
agentId: "main",
label: "release-review",
});
const run = await session.send("Prepare release notes from the current diff.");
await run.wait();
Session.send(), sessions.send çağırır ve bir Run döndürür. Oturum
tanıtıcıları ayrıca şunları destekler:
await session.abort(run.id);
await session.patch({ label: "renamed-session" });
await session.compact({ maxLines: 200 });
Olayları akışla alma
SDK, ham Gateway olaylarını kararlı bir OpenClawEvent zarfına normalize eder:
type OpenClawEvent = {
version: 1;
id: string;
ts: number;
type: OpenClawEventType;
runId?: string;
sessionId?: string;
sessionKey?: string;
taskId?: string;
agentId?: string;
data: unknown;
raw?: GatewayEvent;
};
Yaygın olay türleri şunlardır:
| Olay türü | Kaynak Gateway olayı |
|---|---|
run.started |
agent yaşam döngüsü başlangıcı |
run.completed |
agent yaşam döngüsü sonu |
run.failed |
agent yaşam döngüsü hatası |
run.cancelled |
Durdurulan/iptal edilen yaşam döngüsü sonu |
run.timed_out |
Zaman aşımı yaşam döngüsü sonu |
assistant.delta |
Assistant akış deltası |
assistant.message |
Assistant iletisi |
thinking.delta |
Düşünme veya plan akışı |
tool.call.started |
Araç/öğe/komut başlangıcı |
tool.call.delta |
Araç/öğe/komut güncellemesi |
tool.call.completed |
Araç/öğe/komut tamamlanması |
tool.call.failed |
Araç/öğe/komut hatası veya engellenmiş durum |
approval.requested |
Exec veya plugin onay isteği |
approval.resolved |
Exec veya plugin onay çözümü |
session.created |
sessions.changed oluşturma |
session.updated |
sessions.changed güncelleme |
session.compacted |
sessions.changed compaction |
task.updated |
Görev güncelleme olayları |
artifact.updated |
Yama akışı olayları |
raw |
Henüz kararlı SDK eşlemesi olmayan herhangi bir olay |
Run.events(), olayları tek bir çalıştırma kimliğine filtreler ve hızlı
çalıştırmalar için daha önce görülmüş olayları yeniden oynatır. Bu, belgelenen
akışın güvenli olduğu anlamına gelir:
const run = await agent.run("Summarize the latest session.");
for await (const event of run.events()) {
if (event.type === "run.completed") {
break;
}
}
Uygulama genelindeki akışlar için oc.events() kullanın. Ham Gateway frame’leri
için oc.rawEvents() kullanın.
Modeller, araçlar, artifact’ler ve onaylar
Model yardımcıları geçerli Gateway yöntemlerine eşlenir:
await oc.models.list();
await oc.models.status({ probe: false }); // calls models.authStatus
Araç yardımcıları Gateway kataloğunu, etkili araç görünümünü ve doğrudan Gateway
araç çağrısını açığa çıkarır. oc.tools.invoke(), ilke veya onay reddetmeleri
için hata fırlatmak yerine türlendirilmiş bir zarf döndürür.
await oc.tools.list();
await oc.tools.effective({ sessionKey: "main" });
await oc.tools.invoke("tool-name", {
args: { input: "value" },
sessionKey: "main",
confirm: false,
idempotencyKey: "tool-call-1",
});
Artifact yardımcıları, oturum, çalıştırma veya görev bağlamı için Gateway
artifact projeksiyonunu açığa çıkarır. Her çağrı açıkça bir sessionKey,
runId veya taskId kapsamı gerektirir:
const { artifacts } = await oc.artifacts.list({ sessionKey: "main" });
const first = artifacts[0];
if (first) {
const { artifact } = await oc.artifacts.get(first.id, { sessionKey: "main" });
const download = await oc.artifacts.download(artifact.id, { sessionKey: "main" });
console.log(download.encoding, download.url);
}
Onay yardımcıları exec onay RPC’lerini kullanır:
const approvals = await oc.approvals.list();
await oc.approvals.respond("approval-id", { decision: "approve" });
Ortam yardımcıları salt okunur Gateway-yerel ve node keşfini açığa çıkarır:
const { environments } = await oc.environments.list();
await oc.environments.status(environments[0].id);
Bugün açıkça desteklenmeyenler
SDK, istediğimiz ürün modeli için adlar içerir, ancak Gateway RPC’leri varmış gibi sessizce davranmaz. Bu çağrılar şu anda açık desteklenmeyen hata verir:
await oc.tasks.list();
await oc.tasks.get("task-id");
await oc.tasks.cancel("task-id");
await oc.environments.create({});
await oc.environments.delete("environment-id");
Çalıştırma başına workspace, runtime, environment ve approvals alanları
gelecekteki şekil olarak türlendirilmiştir, ancak mevcut Gateway bu geçersiz
kılmaları agent RPC’sinde desteklemez. Çağıranlar bunları iletirse, SDK
çalıştırmayı göndermeden önce hata fırlatır; böylece iş yanlışlıkla varsayılan
çalışma alanı, çalışma zamanı, ortam veya onay davranışıyla yürütülmez.
App SDK ve Plugin SDK
Kod OpenClaw dışında yaşadığında App SDK kullanın:
- Agent çalıştırmaları başlatan veya gözlemleyen Node betikleri
- Gateway çağıran CI işleri
- panolar ve yönetim panelleri
- IDE eklentileri
- kanal plugin’i olması gerekmeyen dış köprüler
- sahte veya gerçek Gateway aktarımlarıyla entegrasyon testleri
Kod OpenClaw içinde çalıştığında Plugin SDK kullanın:
- sağlayıcı plugin’leri
- kanal plugin’leri
- araç veya yaşam döngüsü hook’ları
- agent harness plugin’leri
- güvenilir çalışma zamanı yardımcıları
App SDK kodu @openclaw/sdk içinden içe aktarmalıdır. Plugin kodu belgelenmiş
openclaw/plugin-sdk/* alt yollarından içe aktarmalıdır. İki sözleşmeyi
karıştırmayın.