ACP is het pad voor externe omgevingen, niet het standaardpad voor Codex. De systeemeigen
Codex-appserverplugin beheert de bedieningselementen voor
/codex ... en de standaard
ingebedde runtime voor openai/gpt-* voor agentbeurten; ACP beheert de bedieningselementen voor /acp ...
en sessions_spawn({ runtime: "acp" })-sessies.Als je Codex of Claude Code als externe MCP-client rechtstreeks verbinding wilt laten maken met
bestaande OpenClaw-kanaalgesprekken, gebruik je
openclaw mcp serve in plaats van ACP.Welke pagina heb ik nodig?
Werkt dit direct?
Ja, na installatie van de officiële ACP-runtimeplugin:extensions/acpx gebruiken na
pnpm install. Voer /acp doctor uit voor een gereedheidscontrole.
OpenClaw leert agents alleen over het starten van ACP wanneer ACP daadwerkelijk bruikbaar is:
ACP moet zijn ingeschakeld, dispatch mag niet zijn uitgeschakeld, de huidige sessie mag
niet door de sandbox zijn geblokkeerd en er moet een gezonde runtimeback-end zijn geladen. Als
aan een voorwaarde niet wordt voldaan, blijven ACP-Skills en de ACP-richtlijnen voor sessions_spawn
verborgen, zodat de agent geen niet-beschikbare back-end voorstelt.
Aandachtspunten bij de eerste uitvoering
Aandachtspunten bij de eerste uitvoering
- Als
plugins.allowis ingesteld, vormt dit een beperkende Plugin-inventaris en moet dezeacpxbevatten, anders wordt de geïnstalleerde ACP-back-end opzettelijk geblokkeerd (/acp doctormeldt het ontbrekende item in de toelatingslijst). - De Codex ACP-adapter wordt geleverd met de Plugin
acpxen wordt waar mogelijk lokaal gestart. - Codex ACP wordt uitgevoerd met een geïsoleerde
CODEX_HOME. OpenClaw kopieert vertrouwde projectvertrouwensvermeldingen en veilige routeringsconfiguratie voor modellen/providers (model,model_provider,model_reasoning_effort,sandbox_modeen veilige velden vanmodel_providers.<name>) uit de Codex-hostconfiguratie; authenticatie, meldingen en hooks blijven uitsluitend in de hostconfiguratie. - Andere adapters voor doelomgevingen kunnen bij het eerste gebruik op aanvraag worden opgehaald met
npx. - Authenticatie bij de leverancier moet voor die omgeving al op de host bestaan.
- Als de host geen npm- of netwerktoegang heeft, mislukt het ophalen van adapters bij de eerste uitvoering totdat caches vooraf zijn gevuld of de adapter op een andere manier is geïnstalleerd.
Runtimevereisten
Runtimevereisten
ACP start een echt extern omgevingsproces. OpenClaw beheert routering,
de status van achtergrondtaken, aflevering, koppelingen en beleid; de omgeving beheert
de eigen provideraanmelding, modelcatalogus, het bestandssysteemgedrag en de systeemeigen tools.Controleer het volgende voordat je OpenClaw de schuld geeft:
/acp doctormeldt een ingeschakelde, gezonde back-end.- De doel-id is toegestaan door
acp.allowedAgentswanneer die toelatingslijst is ingesteld. - De omgevingsopdracht kan op de Gateway-host worden gestart.
- Providerauthenticatie is aanwezig voor die omgeving (
claude,codex,gemini,opencode,droidenzovoort). - Het geselecteerde model bestaat voor die omgeving - model-id’s zijn niet overdraagbaar tussen omgevingen.
- De aangevraagde
cwdbestaat en is toegankelijk; laat anderscwdweg en laat de back-end de standaardwaarde gebruiken. - De machtigingsmodus past bij het werk. Niet-interactieve sessies kunnen niet op systeemeigen machtigingsprompts klikken, dus coderingsuitvoeringen met veel schrijf- of uitvoeracties vereisen doorgaans een ACPX-machtigingsprofiel dat zonder interactie kan doorgaan.
Ondersteunde omgevingsdoelen
Gebruik met de back-endacpx deze id’s als doelen voor /acp spawn <id> of
sessions_spawn({ runtime: "acp", agentId: "<id>" }):
pi (pi-acp) is ook geregistreerd in de acpx-back-end, maar is niet in
dezelfde betekenis een coderingsomgeving als de andere hierboven.
Aangepaste acpx-agentaliases kunnen in acpx zelf worden geconfigureerd, maar het OpenClaw-
beleid controleert vóór dispatch nog steeds acp.allowedAgents en eventuele
agents.entries.*.runtime.acp.agent-toewijzingen.
Draaiboek voor operators
Snelle/acp-workflow vanuit de chat:
1
Starten
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto of expliciet
/acp spawn codex --bind here.2
Werken
Ga verder in het gekoppelde gesprek of de gekoppelde thread (of richt je expliciet
op de sessiesleutel).
3
Status controleren
/acp status4
Afstemmen
/acp model <provider/model>, /acp permissions <profile>,
/acp timeout <seconds>.5
Bijsturen
Zonder de context te vervangen:
/acp steer tighten logging and continue.6
Stoppen
/acp cancel (huidige beurt) of /acp close (sessie + koppelingen).Details van de levenscyclus
Details van de levenscyclus
- Spawnen maakt een ACP-runtimesessie of hervat deze, legt ACP-metadata vast in het OpenClaw-sessiearchief en kan een achtergrondtaak maken wanneer de run eigendom is van de bovenliggende taak.
- ACP-sessies die eigendom zijn van de bovenliggende taak, worden als achtergrondwerk behandeld, zelfs wanneer de runtimesessie persistent is; voltooiing en levering tussen oppervlakken verlopen via de taakmelder van de bovenliggende taak, in plaats van als een normale, voor de gebruiker zichtbare chatsessie.
- Taakonderhoud sluit beëindigde of verweesde eenmalige ACP-sessies die eigendom zijn van een bovenliggende taak. Persistente ACP-sessies blijven behouden zolang er een actieve gespreksbinding bestaat; verouderde persistente sessies zonder actieve binding worden gesloten, zodat ze niet stilzwijgend kunnen worden hervat nadat de bijbehorende taak is voltooid of de taakregistratie ervan is verdwenen.
- Gebonden vervolgberichten gaan rechtstreeks naar de ACP-sessie totdat de binding wordt gesloten, de focus verliest, wordt gereset of verloopt.
- Gateway-opdrachten blijven lokaal.
/acp ...,/statusen/unfocusworden nooit als normale prompttekst naar een gebonden ACP-harnas verzonden. cancelbreekt de actieve beurt af wanneer de backend annulering ondersteunt; de binding of sessiemetadata wordt niet verwijderd.closebeëindigt de ACP-sessie vanuit het perspectief van OpenClaw en verwijdert de binding. Een harnas kan zijn eigen bovenliggende geschiedenis blijven bewaren als het hervatten ondersteunt.- De acpx-Plugin ruimt na
closede processtructuren van wrappers en adapters op die eigendom zijn van OpenClaw, en ruimt tijdens het opstarten van de Gateway verouderde, verweesde ACPX-processen op die eigendom zijn van OpenClaw. - Inactieve runtimeworkers komen na de ingebouwde inactiviteitsperiode in aanmerking voor opruiming; opgeslagen sessiemetadata blijft beschikbaar voor
/acp sessions.
Routeringsregels voor native Codex
Routeringsregels voor native Codex
Triggers in natuurlijke taal die naar de native Codex-Plugin moeten routeren
wanneer deze is ingeschakeld:
- “Bind dit Discord-kanaal aan Codex.”
- “Koppel deze chat aan Codex-thread
<id>.” - “Toon Codex-threads en bind vervolgens deze.”
before_tool_call kunnen blokkeren, after_tool_call kunnen observeren en Codex-
gebeurtenissen van PermissionRequest via OpenClaw-goedkeuringen kunnen routeren. Codex-hooks voor Stop
worden doorgestuurd naar OpenClaw before_agent_finalize, waar Plugins
nog één modeldoorgang kunnen aanvragen voordat Codex het antwoord voltooit. De relay blijft
bewust conservatief: deze wijzigt geen argumenten van native Codex-tools
en herschrijft geen Codex-threadregistraties. Gebruik expliciete ACP alleen wanneer je het
ACP-runtime-/sessiemodel wilt. De ondersteuningsgrens voor ingebedde Codex is
gedocumenteerd in het
ondersteuningscontract voor Codex-harnas v1.Overzicht voor model-, provider- en runtimeselectie
Overzicht voor model-, provider- en runtimeselectie
- verouderde Codex-modelreferenties - verouderde modelroute voor Codex OAuth/abonnement, hersteld door doctor.
openai/*- ingebedde native Codex-app-serverruntime voor OpenAI-agentbeurten./codex ...- native Codex-gespreksbesturing./acp ...ofruntime: "acp"- expliciete ACP-/acpx-besturing.
Triggers in natuurlijke taal voor ACP-routering
Triggers in natuurlijke taal voor ACP-routering
Triggers die naar de ACP-runtime moeten routeren:
- “Voer dit uit als een eenmalige Claude Code ACP-sessie en vat het resultaat samen.”
- “Gebruik Gemini CLI voor deze taak in een thread en houd vervolgberichten daarna in diezelfde thread.”
- “Voer Codex via ACP uit in een achtergrondthread.”
runtime: "acp", bepaalt het harnas agentId, bindt waar ondersteund
aan het huidige gesprek of de huidige thread en routeert vervolgberichten
naar die sessie totdat deze wordt gesloten of verloopt. Codex volgt dit pad alleen wanneer
ACP/acpx expliciet is opgegeven of de native Codex-Plugin niet beschikbaar is voor de
gevraagde bewerking.Voor sessions_spawn wordt runtime: "acp" alleen aangeboden wanneer ACP is
ingeschakeld, de aanvrager niet in een sandbox wordt uitgevoerd en een ACP-runtimebackend is
geladen. acp.dispatch.enabled=false pauzeert automatische ACP-threadverzending,
maar verbergt of blokkeert expliciete aanroepen van sessions_spawn({ runtime: "acp" })
niet. Het is gericht op ACP-harnas-id’s zoals codex, claude, droid,
gemini of opencode. Geef geen normale agent-id uit de OpenClaw-configuratie
van agents_list door, tenzij die vermelding expliciet is geconfigureerd met
agents.entries.*.runtime.type="acp"; gebruik anders de standaardruntime voor sub-agents.
Wanneer een OpenClaw-agent is geconfigureerd met
runtime.type="acp", gebruikt OpenClaw runtime.acp.agent als de onderliggende
harnas-id.ACP versus sub-agents
Gebruik ACP wanneer je een externe harnasruntime wilt. Gebruik de native Codex- app-server voor Codex-gespreksbinding en -besturing wanneer de Plugincodex
is ingeschakeld. Gebruik sub-agents wanneer je gedelegeerde runs wilt die native in OpenClaw zijn.
Zie ook Sub-agents.
Hoe ACP Claude Code uitvoert
Voor Claude Code via ACP bestaat de stack uit:- Besturingslaag voor OpenClaw ACP-sessies.
- Officiële runtime-Plugin
@openclaw/acpx. - Claude ACP-adapter.
- Runtime-/sessiemechanismen aan de Claude-zijde.
- Wil je
/acp spawn, bindbare sessies, runtimebesturing of persistent harnaswerk? Gebruik ACP. - Wil je een eenvoudige lokale tekstfallback via de onbewerkte CLI? Gebruik CLI-backends.
Gebonden sessies
Mentaal model
- Chatoppervlak - waar mensen blijven praten (Discord-kanaal, Telegram-onderwerp, iMessage-chat).
- ACP-sessie - de duurzame Codex-/Claude-/Gemini-runtimestatus waarnaar OpenClaw routeert.
- Onderliggende thread/onderwerp - een optioneel extra berichtenoppervlak dat alleen door
--thread ...wordt gemaakt. - Runtimewerkruimte - de bestandssysteemlocatie (
cwd, repo-check-out, backendwerkruimte) waar het harnas wordt uitgevoerd. Onafhankelijk van het chatoppervlak.
Bindingen aan het huidige gesprek
/acp spawn <harness> --bind here koppelt het huidige gesprek vast aan de
gespawnde ACP-sessie - geen onderliggende thread, hetzelfde chatoppervlak. OpenClaw blijft
verantwoordelijk voor transport, authenticatie, veiligheid en levering. Vervolgberichten in dat
gesprek worden naar dezelfde sessie gerouteerd; /new en /reset resetten de sessie
ter plaatse; /acp close verwijdert de binding.
Voorbeelden:
Bindingsregels en exclusiviteit
Bindingsregels en exclusiviteit
--bind hereen--thread ...sluiten elkaar uit.--bind herewerkt alleen op kanalen die binding aan het huidige gesprek aanbieden; anders retourneert OpenClaw een duidelijk bericht dat dit niet wordt ondersteund. Bindingen blijven behouden na herstarts van de Gateway.- Op Discord bepaalt
spawnSessionsof onderliggende threads voor--thread auto|herekunnen worden gemaakt - niet voor--bind here. - Als je zonder
--cwdnaar een andere ACP-agent spawnt, neemt OpenClaw standaard de werkruimte van de doelagent over. Ontbrekende overgenomen paden (ENOENT/ENOTDIR) vallen terug op de backendstandaard; andere toegangsfouten (bijvoorbeeldEACCES) worden als spawnfouten weergegeven. - Gateway-beheeropdrachten blijven lokaal in gebonden gesprekken - opdrachten van
/acp ...worden door OpenClaw verwerkt, zelfs wanneer normale vervolgtekst naar de gebonden ACP-sessie wordt gerouteerd;/statusen/unfocusblijven ook lokaal wanneer opdrachtverwerking voor dat oppervlak is ingeschakeld.
Aan threads gebonden sessies
Aan threads gebonden sessies
Wanneer threadbindingen zijn ingeschakeld voor een kanaaladapter:
- OpenClaw bindt een thread aan een ACP-doelsessie.
- Vervolgberichten in die thread worden naar de gebonden ACP-sessie gerouteerd.
- ACP-uitvoer wordt teruggeleverd aan dezelfde thread.
- Focusverlies/sluiten/archiveren/inactiviteitstime-out of het verstrijken van de maximale leeftijd verwijdert de binding.
/acp close,/acp cancel,/acp status,/statusen/unfocuszijn Gateway-opdrachten, geen prompts voor het ACP-harnas.
acp.enabled=trueacp.dispatch.enabledis standaard ingeschakeld (stelfalsein om automatische ACP-threadverzending te pauzeren; expliciete aanroepen vansessions_spawn({ runtime: "acp" })blijven werken).- Het spawnen van threadsessies door kanaaladapters is ingeschakeld (standaard:
true):- Discord/Telegram:
session.threadBindings.spawnSessions=true
- Discord/Telegram:
Kanalen met threadondersteuning
Kanalen met threadondersteuning
- Elke kanaaladapter die mogelijkheden voor sessie-/threadbinding beschikbaar stelt.
- Huidige ingebouwde ondersteuning: Discord-threads/-kanalen, Telegram-onderwerpen (forumonderwerpen in groepen/supergroepen en DM-onderwerpen).
- Plugin-kanalen kunnen via dezelfde bindingsinterface ondersteuning toevoegen.
Persistente kanaalbindingen
Configureer voor niet-tijdelijke workflows persistente ACP-bindingen in vermeldingen vanbindings[] op het hoogste niveau.
Bindingsmodel
"acp"
Markeert een persistente ACP-gespreksbinding.
object
Identificeert het doelgesprek. Vormen per kanaal:
- Discord-kanaal/-thread:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Slack-kanaal/DM:
match.channel="slack"+match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Geef de voorkeur aan stabiele Slack-id’s; kanaalkoppelingen komen ook overeen met antwoorden in de threads van dat kanaal. - Telegram-forumonderwerp:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - WhatsApp-DM/-groep:
match.channel="whatsapp"+match.peer.id="<E.164|group JID>". Gebruik E.164-nummers zoals+15555550123voor rechtstreekse chats en WhatsApp-groeps-JID’s zoals120363424282127706@g.usvoor groepen. - iMessage-DM/-groep:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Geef de voorkeur aanchat_id:*voor stabiele groepskoppelingen.
string
De id van de OpenClaw-agent die eigenaar is.
"persistent" | "oneshot"
Optionele ACP-overschrijving.
string
Optioneel label voor de operator.
string
Optionele werkmap van de runtime.
string
Optionele backendoverschrijving.
Standaardwaarden voor de runtime per agent
Gebruikagents.entries.*.runtime om de ACP-standaardwaarden eenmaal per agent te definiëren:
agents.entries.*.runtime.type="acp"agents.entries.*.runtime.acp.agent(harness-id, bijvoorbeeldcodexofclaude)agents.entries.*.runtime.acp.backendagents.entries.*.runtime.acp.modeagents.entries.*.runtime.acp.cwd
bindings[].acp.*agents.entries.*.runtime.acp.*- Algemene ACP-standaardwaarden (bijvoorbeeld
acp.backend)
Voorbeeld
Gedrag
- OpenClaw zorgt ervoor dat de geconfigureerde ACP-sessie bestaat nadat de kanaalspecifieke toelating is voltooid en voordat de sessie wordt gebruikt.
- Berichten in dat kanaal, onderwerp of die chat worden naar de geconfigureerde ACP-sessie gerouteerd.
- Geconfigureerde ACP-koppelingen beheren hun sessieroute. De fan-out van kanaaluitzendingen vervangt voor een overeenkomende koppeling niet de geconfigureerde ACP-sessie.
- In gekoppelde gesprekken stellen
/newen/resetdezelfde ACP-sessiesleutel ter plaatse opnieuw in. - Tijdelijke runtimekoppelingen (bijvoorbeeld gemaakt door flows voor threadfocus) blijven van toepassing waar ze aanwezig zijn.
- Bij ACP-starts tussen agents zonder expliciete
cwdneemt OpenClaw de werkruimte van de doelagent over uit de agentconfiguratie. - Ontbrekende overgenomen werkruimtepaden vallen terug op de standaard-cwd van de backend; toegangsfouten voor bestaande paden worden als startfouten weergegeven.
ACP-sessies starten
Er zijn twee manieren om een ACP-sessie te starten:- Vanuit sessions_spawn
- Vanuit de opdracht /acp
Gebruik
runtime: "acp" om een ACP-sessie vanuit een agentbeurt of
toolaanroep te starten.runtime is standaard subagent, dus stel runtime: "acp" expliciet in voor
ACP-sessies. Als agentId wordt weggelaten, gebruikt OpenClaw acp.defaultAgent
wanneer dit is geconfigureerd. mode: "session" vereist thread: true om een
permanent gekoppeld gesprek te behouden.Parameters van sessions_spawn
string
vereist
Initiële prompt die naar de ACP-sessie wordt verzonden.
"acp"
vereist
Moet voor ACP-sessies
"acp" zijn.string
Id van de ACP-doelharness. Valt terug op
acp.defaultAgent als die is ingesteld.boolean
standaard:"false"
Vraag waar ondersteund om de flow voor threadkoppeling.
"run" | "session"
standaard:"run"
"run" is eenmalig; "session" is permanent. Als thread: true is ingesteld en
mode wordt weggelaten, kan OpenClaw afhankelijk van het
runtimepad standaard permanent gedrag gebruiken. mode: "session" vereist thread: true.string
Aangevraagde werkmap van de runtime (gevalideerd door het backend-/runtimebeleid).
Als deze wordt weggelaten, neemt een ACP-start de werkruimte van de doelagent over wanneer die is geconfigureerd;
ontbrekende overgenomen paden vallen terug op de standaardwaarden van de backend, terwijl daadwerkelijke
toegangsfouten worden geretourneerd.
string
Label voor de operator dat in sessie-/bannertekst wordt gebruikt.
string
Hervat een bestaande ACP-sessie in plaats van een nieuwe te maken. De agent
speelt zijn gespreksgeschiedenis opnieuw af via
session/load. Vereist
runtime: "acp"."parent"
"parent" streamt voortgangssamenvattingen van de eerste ACP-run terug naar de aanvragende
sessie als systeemgebeurtenissen. OpenClaw slaat de volledige relaygeschiedenis op in de
SQLite-status van de onderliggende agent en verwijdert deze samen met de onderliggende sessie. Voortgangsstreams
naar de bovenliggende sessie tonen standaard commentaar van de assistent en ACP-statusvoortgang, tenzij
streaming.progress.commentary=false. Discord gebruikt voor previews naar de bovenliggende sessie ook standaard
de voortgangsmodus wanneer geen streammodus is geconfigureerd. Statusvoortgang
respecteert nog steeds acp.stream.tagVisibility, zodat tags zoals plan
verborgen blijven tenzij ze expliciet zijn ingeschakeld.sessions_spawn gebruiken agents.defaults.subagents.runTimeoutSeconds
voor hun standaardlimiet voor onderliggende beurten. De tool accepteert geen timeoutoverschrijvingen
per aanroep (runTimeoutSeconds/timeoutSeconds worden afgewezen met een foutmelding
dat de standaardwaarde moet worden geconfigureerd).
string
Expliciete modeloverschrijving voor de onderliggende ACP-sessie. Codex ACP-starts
normaliseren OpenAI-verwijzingen zoals
openai/gpt-5.4 naar de Codex ACP-opstartconfiguratie
vóór session/new; slashvormen zoals openai/gpt-5.4/high stellen ook
de redeneerinspanning van Codex ACP in. Wanneer weggelaten, gebruikt sessions_spawn({ runtime: "acp" })
bestaande standaardmodellen voor subagents (agents.defaults.subagents.model of
agents.entries.*.subagents.model) wanneer die zijn geconfigureerd; anders gebruikt de ACP-
harness zijn eigen standaardmodel. Andere harnesses moeten ACP
models bekendmaken en session/set_model ondersteunen; anders mislukt OpenClaw/acpx
met een duidelijke fout in plaats van stilzwijgend terug te vallen op de standaardwaarde van de doelagent.string
Expliciete denk-/redeneerinspanning. Voor Codex ACP wordt
minimal toegewezen aan een lage
inspanning, worden low/medium/high/xhigh rechtstreeks toegewezen en laat off de
overschrijving van de redeneerinspanning bij het opstarten weg. Wanneer dit wordt weggelaten, gebruiken ACP-starts bestaande
standaardwaarden voor het denken van subagents en de modelspecifieke
agents.defaults.models["provider/model"].params.thinking voor het geselecteerde
model.Koppelings- en threadmodi voor starten
- --bind here|off
- --thread auto|here|off
Opmerkingen:
--bind hereis voor de operator het eenvoudigste pad om „dit kanaal of deze chat door Codex te laten ondersteunen”.--bind heremaakt geen onderliggende thread.--bind hereis alleen beschikbaar op kanalen die ondersteuning bieden voor koppeling met het huidige gesprek.--binden--threadkunnen niet in dezelfde aanroep van/acp spawnworden gecombineerd.
Leveringsmodel
ACP-sessies kunnen interactieve werkruimten of achtergrondwerk in beheer van de bovenliggende sessie zijn. Het leveringspad hangt van die vorm af.Interactieve ACP-sessies
Interactieve ACP-sessies
Interactieve sessies zijn bedoeld om op een zichtbaar chatoppervlak te blijven communiceren:
/acp spawn ... --bind herekoppelt het huidige gesprek aan de ACP-sessie./acp spawn ... --thread ...koppelt een kanaalthread/-onderwerp aan de ACP-sessie.- Permanente, geconfigureerde
bindings[].type="acp"routeren overeenkomende gesprekken naar dezelfde ACP-sessie.
- Normale gebonden vervolgberichten worden als prompttekst verzonden, plus bijlagen, maar alleen wanneer de harness/backend die ondersteunt.
/acp-beheeropdrachten en lokale Gateway-opdrachten worden vóór ACP-dispatch onderschept.- Tijdens runtime gegenereerde voltooiingsgebeurtenissen worden per doel gematerialiseerd. OpenClaw-agenten krijgen de interne runtime-contextenvelop van OpenClaw; externe ACP-harnesses krijgen een gewone prompt met het resultaat van het kind en de instructie. De onbewerkte
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>-envelop mag nooit naar externe harnesses worden verzonden of als ACP-gebruikerstranscripttekst worden opgeslagen. - ACP-transcriptvermeldingen gebruiken de voor de gebruiker zichtbare triggertekst of de gewone voltooiingsprompt. Interne gebeurtenismetadata blijven waar mogelijk gestructureerd in OpenClaw en worden niet behandeld als door de gebruiker geschreven chatinhoud.
Eenmalige ACP-sessies in beheer van de ouder
Eenmalige ACP-sessies in beheer van de ouder
Eenmalige ACP-sessies die door een andere agentrun worden gestart, zijn
achtergrondkinderen, vergelijkbaar met subagenten:
- De ouder vraagt om werk met
sessions_spawn({ runtime: "acp", mode: "run" }). - Het kind wordt uitgevoerd in een eigen ACP-harnesssessie.
- Kindbeurten worden uitgevoerd in dezelfde achtergrondbaan als die voor het starten van native subagenten, zodat een trage ACP-harness niet-gerelateerd werk in de hoofdsessie niet blokkeert.
- De voltooiing wordt teruggemeld via het aankondigingspad voor taakvoltooiing. OpenClaw zet interne voltooiingsmetadata om in een gewone ACP-prompt voordat die naar een externe harness wordt verzonden, zodat harnesses geen runtime-contextmarkeringen zien die alleen voor OpenClaw bestemd zijn.
- De ouder herschrijft het resultaat van het kind in een normale assistentstem wanneer een gebruikersgericht antwoord nuttig is.
sessions_send en A2A-bezorging
sessions_send en A2A-bezorging
sessions_send kan na het starten een andere sessie als doel kiezen. Voor normale
peersessies gebruikt OpenClaw een agent-naar-agentvervolgpad (A2A) nadat
het bericht is geïnjecteerd:- Wacht op het antwoord van de doelsessie.
- Laat de aanvrager en het doel eventueel een begrensd aantal vervolgbeurten uitwisselen.
- Vraag het doel om een aankondigingsbericht te produceren.
- Bezorg die aankondiging in het zichtbare kanaal of de zichtbare thread.
tools.sessions.visibility-instellingen.OpenClaw slaat het A2A-vervolg alleen over wanneer de aanvrager de ouder
is van zijn eigen eenmalige ACP-kind dat door de ouder wordt beheerd. In
dat geval kan A2A boven op taakvoltooiing de ouder wekken met het resultaat
van het kind, het antwoord van de ouder terugsturen naar het kind en een
echolus tussen ouder en kind veroorzaken. Het resultaat van
sessions_send meldt voor dat beheerde kindgeval delivery.status="skipped",
omdat het voltooiingspad al verantwoordelijk is voor het resultaat.Een bestaande sessie hervatten
Een bestaande sessie hervatten
Gebruik Veelvoorkomende gebruiksscenario’s:
resumeSessionId om een eerdere ACP-sessie voort te zetten in
plaats van opnieuw te beginnen. De agent speelt de gespreksgeschiedenis
opnieuw af via session/load, zodat deze verdergaat met de volledige
context van wat eraan voorafging.- Draag een Codex-sessie over van je laptop naar je telefoon: vertel je agent dat deze verder moet gaan waar je gebleven was.
- Zet een codeersessie die je interactief in de CLI hebt gestart nu zonder gebruikersinterface voort via je agent.
- Hervat werk dat door een herstart van de Gateway of een time-out wegens inactiviteit is onderbroken.
resumeSessionIdis alleen van toepassing wanneerruntime: "acp"; de standaardruntime voor subagenten negeert dit veld dat alleen voor ACP bestemd is.streamTois alleen van toepassing wanneerruntime: "acp"; de standaardruntime voor subagenten negeert dit veld dat alleen voor ACP bestemd is.resumeSessionIdis een hostlokale hervattings-id voor ACP/harnesses, geen OpenClaw-kanaalsessiesleutel; OpenClaw controleert vóór dispatch nog steeds het ACP-startbeleid en het beleid van de doelagent, terwijl de ACP-backend of harness verantwoordelijk is voor autorisatie om die upstream-id te laden.resumeSessionIdherstelt de upstream-ACP-gespreksgeschiedenis;threadenmodezijn nog steeds normaal van toepassing op de nieuwe OpenClaw-sessie die je maakt, dusmode: "session"vereist nog steedsthread: true.- De doelagent moet
session/loadondersteunen (Codex en Claude Code doen dat). - Als de sessie-id niet wordt gevonden, mislukt het starten met een duidelijke foutmelding; er is geen stille terugval naar een nieuwe sessie.
Smoketest na implementatie
Smoketest na implementatie
Voer na een Gateway-implementatie een live end-to-endcontrole uit in plaats
van op unittests te vertrouwen:
- Controleer de geïmplementeerde Gateway-versie en commit op de doelhost.
- Open een tijdelijke ACPX-brugsessie naar een live agent.
- Vraag die agent om
sessions_spawnaan te roepen metruntime: "acp",agentId: "codex",mode: "run"en taakReply with exactly LIVE-ACP-SPAWN-OK. - Controleer
accepted=yes, een echtechildSessionKeyen dat er geen validatiefout is. - Ruim de tijdelijke brugsessie op.
mode: "run" en sla streamTo: "parent" over:
threadgebonden mode: "session"- en streamrelaypaden zijn afzonderlijke,
uitgebreidere integratiecontroles.Compatibiliteit met de sandbox
ACP-sessies worden momenteel uitgevoerd op de hostruntime, niet in de OpenClaw-sandbox. Huidige beperkingen:- Als de aanvragersessie in een sandbox wordt uitgevoerd, wordt het starten van ACP geblokkeerd voor zowel
sessions_spawn({ runtime: "acp" })als/acp spawn. sessions_spawnmetruntime: "acp"ondersteuntsandbox: "require"niet.
Doelsessies bepalen
De meeste/acp-acties accepteren een optioneel sessiedoel (session-key,
session-id of session-label).
Volgorde voor het bepalen:
- Expliciet doelargument (of
--sessionvoor/acp steer)- probeert eerst de sleutel
- daarna een UUID-vormige sessie-id
- daarna het label
- Huidige threadbinding (als dit gesprek/deze thread aan een ACP-sessie is gebonden).
- Terugval op de huidige aanvragersessie.
Unable to resolve session target: ...).
ACP-bediening
Runtimebediening (
spawn, cancel, steer, close, status, set-mode,
set, cwd, permissions, timeout, model en reset-options) vereist
een eigenaarsidentiteit van externe kanalen en operator.admin van interne
Gateway-clients. Geautoriseerde afzenders die geen eigenaar zijn, kunnen nog steeds sessions,
doctor, install en help gebruiken. Voor afzenders die geen eigenaar zijn, toont /acp sessions
alleen de huidige gebonden sessie of aanvragersessie; eigenaarsidentiteiten en
operator.admin-clients zien alle recente sessies.
/acp status toont de effectieve runtimeopties plus sessie-id’s op
runtime- en backendniveau. Fouten voor niet-ondersteunde bediening worden
duidelijk weergegeven wanneer een backend een mogelijkheid mist. Opdrachten die
doeltokens accepteren (session-key, session-id of session-label) bepalen deze via Gateway-
sessiedetectie, inclusief aangepaste session.store-roots per agent. /acp sessions
accepteert geen doeltoken.
Toewijzing van runtimeopties
/acp heeft gemaksopdrachten en een algemene setter. Gelijkwaardige bewerkingen:
acpx-harnas, Plugin-installatie en machtigingen
Zie ACP-agents - installatie voor de configuratie van het acpx-harnas (aliassen voor Claude Code / Codex / Gemini CLI), de MCP-bruggen voor Plugin-tools en OpenClaw-tools, en de ACP-machtigingsmodi.Problemen oplossen
Command blocked by PreToolUse hook: Native hook relay unavailable hoort bij
de systeemeigen Codex-hookrelay, niet bij ACP/acpx. Start in een gekoppelde Codex-chat een
nieuwe sessie met /new of /reset; als dit eenmaal werkt en vervolgens bij
de volgende systeemeigen toolaanroep terugkeert, start je de Codex-appserver of OpenClaw Gateway
opnieuw in plaats van /new te herhalen. Zie
Problemen met het Codex-harnas oplossen.