Naar hoofdinhoud gaan

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.

Deze pagina is een ontwerpvoorstel voor een toekomstige publieke OpenClaw-app-SDK. Deze staat los van de bestaande Plugin-SDK. De Plugin-SDK is bedoeld voor code die binnen OpenClaw draait en providers, kanalen, tools, hooks en vertrouwde runtimes uitbreidt. De app-SDK is bedoeld voor externe applicaties, scripts, dashboards, CI-taken, IDE-extensies en automatiseringssystemen die OpenClaw-agents via een stabiele publieke API willen uitvoeren en observeren.

Status

Conceptarchitectuur. Dit document legt de ontwerprichting vast uit een vergelijkende beoordeling van deze agent-SDK- en runtime-oppervlakken:
ProjectNuttige les
Cursor SDK cookbookBeste product-API op hoog niveau: Agent, Run, lokale en cloud-runtimes, streaming, annulering, modeldetectie, repository’s, artefacten en cloudstromen voor pull requests.
Claude Agent SDKSterke bidirectionele sessieclient, ondersteuning voor onderbreken en bijsturen, toestemmingsmodi, hooks, aangepaste tools, sessiestores en hervatbare transcripten.
OpenAI Agents SDKSterke workflowconcepten: overdrachten, guardrails, menselijke goedkeuringen, tracing, runstatus, streaming-resultaatobjecten en hervatten na onderbrekingen.
Google ADKSterke interne architectuur: runner, sessieservice, geheugendienst, artefactservice, credentialservice, plugins, eventacties en bevestigingen voor langlopende tools.
OpenCodeSterke client/server-vorm: gegenereerde API-client, REST plus SSE, sessies, workspaces, worktrees, toestemmingen, vragen, bestanden, VCS, PTY, tools, agents, Skills en MCP.
CodexSterke lokale runtimegrens: goedkeuringen, sandboxing, netwerkbeleid, lokale en externe exec-servers, gestructureerde protocol-events en threadbewuste app-serversessies.
ACP en acpxSterke interoperabiliteitslaag voor externe codeharnassen met benoemde sessies, promptwachtrijen, coöperatieve annulering en runtime-adapters.
De aanbeveling is om een eenvoudige publieke facade in Cursor-stijl te bouwen boven op een gegenereerde Gateway-client in OpenCode-stijl, terwijl Claude-, OpenAI Agents-, ADK-, Codex- en ACP-concepten als interne ontwerpreferenties worden behouden waar ze passen.

Doelen

  • Appontwikkelaars een kleine API op hoog niveau geven voor het uitvoeren van OpenClaw-agents.
  • OpenClaw met lokale uitvoering als uitgangspunt de standaardruntime laten blijven.
  • Cloud- of beheerde omgevingen een aanvullende omgevingsprovider maken, geen andere agent-API.
  • Bestaande OpenClaw-grenzen behouden: Gateway bezit het publieke protocol, de Plugin-SDK bezit in-process extensies, ACP bezit interoperabiliteit met externe harnassen.
  • stream, wait, cancel, resume, fork, artefacten, goedkeuringen en achtergrondtaken ondersteunen als eersteklas operaties.
  • Stabiele genormaliseerde events blootstellen en runtime-native raw events behouden voor geavanceerde consumenten.
  • SDK-toestemmingen, doorgeven van secrets, goedkeuringen, sandboxing en externe omgevingen expliciet maken.
  • Het publieke contract klein genoeg houden om te documenteren, testen, versioneren en genereren.

Niet-doelen

  • openclaw/plugin-sdk/* niet blootstellen als de app-SDK.
  • ACP niet het enige runtimemodel maken.
  • Geen cloudservice vereisen voordat de SDK nuttig is.
  • Cursor-, Claude-, OpenAI-, ADK-, OpenCode-, Codex- of ACP-API’s niet exact klonen.
  • Geen onbegrensde any-eventpayloads blootstellen als het enige publieke contract.
  • Geen sandbox- of netwerkisolatie beloven voor een extern harnas tenzij de geselecteerde omgeving dit daadwerkelijk kan afdwingen.
  • Plugin-auteurs niet afhankelijk maken van app-SDK-objecten binnen runtimecode van Plugins.

Huidige OpenClaw-inpassing

OpenClaw heeft al het grootste deel van de onderlaag:
Bestaand oppervlakWat het bijdraagt
AgentlusLevenscyclus van agent- en agent.wait-runs, streaming, time-out en sessieserialisatie.
Agent-runtimesScheiding tussen provider, model, runtime en kanaal.
ACP-agentsExterne harnassessies voor Claude Code, Cursor, Gemini CLI, OpenCode, expliciete Codex ACP en vergelijkbare tools.
AchtergrondtakenLosgekoppeld activiteitenlogboek voor ACP, subagents, Cron, CLI-bewerkingen en asynchrone mediataken.
Sub-agentsGeisoleerde agentruns op de achtergrond, optionele geforkte context, teruglevering aan aanvragersessies.
Agent-harnas-PluginsRegistratie van vertrouwde native runtimes voor ingesloten harnassen zoals Codex.
Gateway-protocolschema’sHuidige getypte methode- en eventdefinities voor agentparameters, sessies, abonnementen, afbrekingen, Compaction en checkpoints.
Het gat zit niet in agentuitvoering. Het gat is een stabiele, vriendelijke publieke facade boven deze onderdelen.

Kernmodel

De app-SDK moet een kleine set duurzame naamwoorden gebruiken.
NaamwoordBetekenis
OpenClawClientingangspunt. Beheert Gateway-detectie, auth, low-level clienttoegang en namespace-fabrieken.
AgentGeconfigureerde actor. Draagt agent-id, standaardmodel, standaardruntime, standaardtoolbeleid en appgerichte helpers.
SessionDuurzaam transcript, routering, workspace, context en runtimebinding.
RunEen ingediende beurt of taak. Streamt events, wacht op resultaat, annuleert en stelt artefacten bloot.
TaskLosgekoppeld of achtergronditem in het activiteitenlogboek. Omvat subagents, ACP-spawns, Cron-taken, CLI-runs en asynchrone taken.
ArtifactBestanden, patches, diffs, media, logs, trajecten, pull requests, screenshots en gegenereerde bundels.
EnvironmentWaar de run wordt uitgevoerd: lokale Gateway, lokale workspace, nodehost, ACP-harnas, beheerde runner of toekomstige cloudworkspace.
ToolSpaceHet effectieve tooloppervlak: OpenClaw-tools, MCP-servers, kanaaltools, apptools, goedkeuringsregels en toolmetadata.
ApprovalMenselijke of beleidsbeslissing gevraagd door een run, tool, omgeving of harnas.
Deze naamwoorden sluiten netjes aan op bestaande OpenClaw-concepten, maar vermijden het lekken van implementatiespecifieke namen zoals interne onderdelen van de PI-runner, registratie van Plugin-harnassen of details van ACP-adapters.

Productvorm

De SDK op hoog niveau moet zo aanvoelen:
import { OpenClaw } from "@openclaw/sdk";

const oc = new OpenClaw({ gateway: "auto" });
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",
});

for await (const event of run.events()) {
  if (event.type === "assistant.delta") {
    process.stdout.write(event.text);
  }
}

const result = await run.wait();
console.log(result.status);
Dezelfde app moet een duurzame sessie kunnen gebruiken:
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();
Opmerking over de huidige implementatie: @openclaw/sdk begint met het door de Gateway ondersteunde oppervlak dat vandaag bestaat. Provider-gekwalificeerde modelrefs zoals openai/gpt-5.5 worden opgesplitst in Gateway-overschrijvingen voor provider en model. Selecties per run voor workspace, runtime, environment en approvals zijn nog steeds ontwerpdoelen; de client gooit een fout wanneer aanroepers ze instellen, zodat verzoeken niet stilzwijgend met standaardwaarden worden uitgevoerd. Helpers voor taak-, artifact-, environment- en generieke tool- aanroepen zijn ook gescaffold als toekomstige API-vorm en gooien expliciete niet-ondersteunde fouten totdat er Gateway-RPC’s voor bestaan. En dezelfde API moet een externe ACP-harness kunnen gebruiken:
const run = await oc.runs.create({
  input: "Deep review this repository and return only high-risk findings.",
  workspace: { cwd: process.cwd() },
  runtime: { type: "acp", harness: "claude" },
  mode: "task",
});
Beheerde environments mogen de API op het hoogste niveau niet veranderen:
const run = await agent.run({
  input: "Run the full changed gate and summarize failures.",
  workspace: { repo: "openclaw/openclaw", ref: "main" },
  runtime: {
    type: "managed",
    provider: "testbox",
    timeoutMinutes: 90,
  },
});

Runtime-selectie

De app-SDK moet runtime-selectie als een genormaliseerde union blootstellen:
type RuntimeSelection =
  | "auto"
  | { type: "embedded"; id: "pi" | "codex" | string }
  | { type: "cli"; id: "claude-cli" | string }
  | { type: "acp"; harness: "claude" | "cursor" | "gemini" | "opencode" | string }
  | { type: "managed"; provider: "local" | "node" | "testbox" | "cloud" | string };
Regels:
  • auto volgt de runtime-selectieregels van OpenClaw.
  • embedded richt zich op vertrouwde in-process harnesses die via de Plugin SDK zijn geregistreerd, zoals pi of codex.
  • cli richt zich op door OpenClaw beheerde CLI-backenduitvoering waar beschikbaar.
  • acp richt zich via ACP/acpx op externe harnesses.
  • managed richt zich op een environment-provider en kan nog steeds een embedded, CLI- of ACP-runtime binnen die environment uitvoeren.
Het runtime-selectieobject moet beschrijvend zijn. Het mag niet de plaats zijn waar geheime afhandeling, sandboxbeleid of workspace-provisioning verborgen zit.

Environment-model

De environment is het uitvoeringssubstraat. Deze moet expliciet zijn omdat lokale CLI-runs, externe harnesses, node-hosts en cloud-workspaces verschillende veiligheids- en levenscycluseigenschappen hebben.
type EnvironmentSelection =
  | { type: "local"; cwd?: string }
  | { type: "gateway"; url?: string; cwd?: string }
  | { type: "node"; nodeId: string; cwd?: string }
  | { type: "managed"; provider: string; repo?: string; ref?: string }
  | { type: "ephemeral"; provider: string; repo?: string; ref?: string };
De environment beheert:
  • checkout- of workspacevoorbereiding
  • proces- en bestandstoegang
  • sandbox- en netwerkhandhaving
  • omgevingsvariabelen en geheime referenties
  • logs, traces en artifacts
  • opschoning en retentie
  • runtime-beschikbaarheid
Deze scheiding maakt beheerde agents een natuurlijke uitbreiding van de SDK. Een beheerde agent is een normale run in een beheerde environment, geen speciale productfork. De gedetailleerde namespace-, event-, resultaat-, goedkeurings-, artifact-, security-, pakket-, en environment-providercontracten staan in OpenClaw SDK-API-ontwerp.

Cookbook-plan

De SDK moet worden geleverd met een cookbook, niet alleen met referentiedocumentatie. Aanbevolen voorbeelden:
VoorbeeldToont
QuickstartClient maken, een agent uitvoeren, uitvoer streamen, wachten op resultaat.
Coding agent CLILokale werkruimte, modelkiezer, annulering, goedkeuringen, JSON-uitvoer.
AgentdashboardSessies, runs, achtergrondtaken, artefacten, eventreplay, statusfilters.
AppbouwerAgent bewerkt een werkruimte terwijl een previewserver ernaast draait.
Pull-requestreviewerUitvoeren tegen een repository-ref, diff-opmerkingen en artefacten verzamelen.
GoedkeuringsconsoleAbonneren op goedkeuringen en ze vanuit een UI beantwoorden.
ACP-harnessrunnerClaude Code, Cursor, Gemini CLI of OpenCode via ACP uitvoeren met dezelfde Run-API.
Provider voor beheerde omgevingMinimale provider die een werkruimte voorbereidt, gebeurtenissen streamt, artefacten opslaat en opruimt.
Slack- of Discord-brugExterne app ontvangt gebeurtenissen en plaatst voortgangssamenvattingen zonder een kanaal-Plugin te worden.
Multi-agentonderzoekParallelle runs spawnen, artefacten verzamelen en een eindrapport synthetiseren.
Cookbookvoorbeelden moeten eerst de high-level API gebruiken. Low-level gegenereerde clientvoorbeelden horen in een geavanceerde sectie.

Gefaseerde implementatie

Fase 0: RFC en vocabulaire

  • Spreek publieke zelfstandige naamwoorden en namen af.
  • Beslis over pakketnamen.
  • Definieer de eerste eventtaxonomie.
  • Markeer de huidige Plugin SDK in de docs als bewust apart.

Fase 1: Low-level gegenereerde client

  • Genereer een TypeScript-client uit Gateway-protocolschema’s.
  • Dek eerst agent, agent.wait, sessies, abonnementen, afbreken en taken af.
  • Voeg smoketests toe die controleren dat gegenereerde methoden overeenkomen met Gateway-methodenamen en schema- vormen.
  • Publiceer als experimenteel of intern pakket.

Fase 2: High-level run-API

  • Voeg OpenClaw, Agent, Session en Run toe.
  • Ondersteun run.events(), run.wait() en run.cancel().
  • Ondersteun lokale Gateway-detectie en expliciete Gateway-URL’s.
  • Ondersteun duurzame sessies en sessieverzending.

Fase 3: Genormaliseerde eventprojectie

  • Voeg Gateway-side genormaliseerde eventprojectie toe naast bestaande ruwe gebeurtenissen.
  • Behoud ruwe runtimegebeurtenissen waar beleid dit toestaat.
  • Voeg replaycursors en reconnectgedrag toe.
  • Map PI-, Codex-, ACP- en taakgebeurtenissen naar de stabiele taxonomie.

Fase 4: Artefacten en goedkeuringen

  • Voeg artefactlijst en download toe.
  • Voeg helpers voor goedkeuringsabonnementen en antwoorden toe.
  • Voeg helpers voor vraagabonnementen en antwoorden toe.
  • Voeg een cookbook-goedkeuringsconsole toe.

Fase 5: Omgevingsproviders

  • Introduceer contracten voor lokale, node- en beheerde omgevingsproviders.
  • Begin met een omgeving die operationeel al bestaat.
  • Voeg werkruimtevoorbereiding, logs, artefacten, time-out, opruiming en retentie toe.

Fase 6: Cloudstijlworkflows

  • Voeg repository- en branch-georiënteerde runs toe.
  • Voeg pull-requestartefacten toe.
  • Voeg runborden toe, gegroepeerd op repo, branch, status en toegewezene.
  • Voeg langlopende beheerde sessies en retentiebeleid toe.

Ontwerpkeuzes om over te nemen

Neem deze ideeën over:
  • Van Cursor: Agent plus Run, lokale en cloudsymmetrie, modeldetectie, artefacten en cookbook-gestuurde onboarding.
  • Van Claude Agent SDK: bidirectionele clients, interrupt, machtigingen, hooks, aangepaste tools, sessiestores en hervattingssemantiek.
  • Van OpenAI Agents: handoffs, guardrails, hervatting na menselijke goedkeuring, tracing en gestructureerde gestreamde resultaatobjecten.
  • Van Google ADK: services achter runner, eventacties, geheugen, artefacten, credentialservices en Plugin-interceptie rond de run-lifecycle.
  • Van OpenCode: gegenereerde protocolclient, REST plus SSE, sessies, werkruimten, vragen, machtigingen, bestanden, VCS, PTY, MCP, agents en Skills.
  • Van Codex: expliciete sandbox, goedkeuring, netwerk, lokale en remote exec, en threadgrenzen voor appserver.
  • Van ACP en acpx: adaptergebaseerde interoperabiliteit met externe harnesses en benoemde promptwachtrijen.

Ontwerpkeuzes om te vermijden

Vermijd deze valkuilen:
  • Een publieke SDK die slechts een dunne dump van Gateway-internals is.
  • Een publieke SDK die Plugin SDK-subpaden importeert.
  • Een publieke SDK waarin gebeurtenissen alleen stream plus data zijn.
  • Een cloud-first API die lokale OpenClaw als een legacy-modus laat aanvoelen.
  • Runtimekeuze verborgen in model-id-prefixen.
  • Secret-forwarding verborgen in omgevingsmaps.
  • ACP-specifieke opties op het topniveau van elke run.
  • Sandboxvlaggen die niet kunnen worden afgedwongen door de gekozen runtime.
  • Een SDK-object dat tegelijk provider-Plugin, kanaal-Plugin, appclient en beheerde runner probeert te zijn.

Open vragen

  • Moet het initiële pakket in deze repo staan of in een aparte SDK-repo?
  • Moet de gegenereerde low-level client publiek worden gepubliceerd voordat de high-level wrapper stabiliseert?
  • Wat is het eerste ondersteunde app-authmechanisme: lokale token, admintoken, OAuth-deviceflow of ondertekende appregistratie?
  • Hoeveel sessieberichtgeschiedenis moet de SDK standaard blootstellen?
  • Moeten beheerde omgevingen alleen in Gateway-configuratie worden geconfigureerd, of kunnen SDK- aanroepers ze direct aanvragen met scoped tokens?
  • Welke retentieregels gelden voor artefacten die door lokale runs worden gegenereerd?
  • Welke eventpayloads vereisen redactie vóór applevering?
  • Moet Run normale chatbeurten en losgekoppelde taken dekken, of moet losgekoppeld achtergrondwerk altijd een Task-wrapper met een geneste Run teruggeven?

Gerelateerde docs