ACP ist der Pfad für externe Harnesses, nicht der Standardpfad für Codex. Das
native Codex-App-Server-Plugin besitzt die
/codex ...-Steuerungen und die standardmäßige
eingebettete openai/gpt-*-Laufzeit für Agenten-Turns; ACP besitzt die
/acp ...-Steuerungen und sessions_spawn({ runtime: "acp" })-Sitzungen.Wenn Sie möchten, dass Codex oder Claude Code als externer MCP-Client
direkt eine Verbindung zu bestehenden OpenClaw-Kanalunterhaltungen herstellt,
verwenden Sie openclaw mcp serve statt ACP.Welche Seite brauche ich?
| Sie möchten … | Verwenden Sie | Hinweise |
|---|---|---|
| Codex in der aktuellen Unterhaltung binden oder steuern | /codex bind, /codex threads | Nativer Codex-App-Server-Pfad, wenn das codex-Plugin aktiviert ist; umfasst gebundene Chat-Antworten, Bildweiterleitung, Modell/Schnellmodus/Berechtigungen, Stopp- und Steuerbefehle. ACP ist ein expliziter Fallback |
| Claude Code, Gemini CLI, explizites Codex ACP oder ein anderes externes Harness über OpenClaw ausführen | Diese Seite | Chat-gebundene Sitzungen, /acp spawn, sessions_spawn({ runtime: "acp" }), Hintergrundaufgaben, Laufzeitsteuerungen |
| Eine OpenClaw-Gateway-Sitzung als ACP-Server für einen Editor oder Client bereitstellen | openclaw acp | Bridge-Modus. IDE/Client spricht ACP mit OpenClaw über stdio/WebSocket |
| Eine lokale KI-CLI als reines Text-Fallback-Modell wiederverwenden | CLI-Backends | Nicht ACP. Keine OpenClaw-Tools, keine ACP-Steuerungen, keine Harness-Laufzeit |
Funktioniert das direkt nach der Installation?
Ja, nach der Installation des offiziellen ACP-Laufzeit-Plugins:extensions/acpx nach
pnpm install verwenden. Führen Sie /acp doctor für eine Bereitschaftsprüfung aus.
OpenClaw informiert Agenten nur dann über ACP-Spawns, wenn ACP wirklich
nutzbar ist: ACP muss aktiviert sein, Dispatch darf nicht deaktiviert sein, die aktuelle
Sitzung darf nicht durch die Sandbox blockiert sein, und ein Laufzeit-Backend muss
geladen sein. Wenn diese Bedingungen nicht erfüllt sind, bleiben ACP-Plugin-Skills und
die sessions_spawn-ACP-Anleitung verborgen, damit der Agent kein
nicht verfügbares Backend vorschlägt.
First-run gotchas
First-run gotchas
- Wenn
plugins.allowgesetzt ist, handelt es sich um ein einschränkendes Plugin-Inventar und es mussacpxenthalten; andernfalls wird das installierte ACP-Backend absichtlich blockiert und/acp doctormeldet den fehlenden Allowlist-Eintrag. - Der Codex-ACP-Adapter wird mit dem
acpx-Plugin bereitgestellt und nach Möglichkeit lokal gestartet. - Codex ACP läuft mit einem isolierten
CODEX_HOME; OpenClaw kopiert vertrauenswürdige Projekteinträge sowie sichere Modell-/Provider-Routing-Konfiguration aus der Host-Codex-Konfiguration, während Authentifizierung, Benachrichtigungen und Hooks in der Host-Konfiguration bleiben. - Andere Ziel-Harness-Adapter können bei der ersten Verwendung weiterhin bei Bedarf mit
npxabgerufen werden. - Die Anbieter-Authentifizierung muss für dieses Harness weiterhin auf dem Host vorhanden sein.
- Wenn der Host keinen npm- oder Netzwerkzugriff hat, schlagen Adapterabrufe beim ersten Start fehl, bis Caches vorgewärmt sind oder der Adapter auf anderem Weg installiert wurde.
Runtime prerequisites
Runtime prerequisites
ACP startet einen echten externen Harness-Prozess. OpenClaw besitzt Routing,
Status von Hintergrundaufgaben, Zustellung, Bindings und Richtlinien; das Harness
besitzt seine Provider-Anmeldung, den Modellkatalog, das Dateisystemverhalten und
native Tools.Bevor Sie OpenClaw als Ursache annehmen, prüfen Sie:
/acp doctormeldet ein aktiviertes, fehlerfreies Backend.- Die Ziel-ID ist durch
acp.allowedAgentserlaubt, wenn diese Allowlist gesetzt ist. - Der Harness-Befehl kann auf dem Gateway-Host starten.
- Provider-Authentifizierung ist für dieses Harness vorhanden (
claude,codex,gemini,opencode,droidusw.). - Das ausgewählte Modell existiert für dieses Harness - Modell-IDs sind nicht zwischen Harnesses portierbar.
- Das angeforderte
cwdexistiert und ist zugänglich, oder lassen Siecwdweg und überlassen Sie dem Backend die Verwendung seines Standards. - Der Berechtigungsmodus passt zur Arbeit. Nicht interaktive Sitzungen können keine nativen Berechtigungsabfragen anklicken, daher benötigen schreib-/ausführungsintensive Coding-Läufe meist ein ACPX-Berechtigungsprofil, das ohne Bedienung fortfahren kann.
Unterstützte Harness-Ziele
Mit demacpx-Backend verwenden Sie diese Harness-IDs als Ziele für
/acp spawn <id> oder sessions_spawn({ runtime: "acp", agentId: "<id>" }):
| Harness-ID | Typisches Backend | Hinweise |
|---|---|---|
claude | Claude Code ACP-Adapter | Erfordert Claude Code-Authentifizierung auf dem Host. |
codex | Codex ACP-Adapter | Expliziter ACP-Fallback nur, wenn natives /codex nicht verfügbar ist oder ACP angefordert wurde. |
copilot | GitHub Copilot ACP-Adapter | Erfordert Copilot-CLI-/Laufzeit-Authentifizierung. |
cursor | Cursor CLI ACP (cursor-agent acp) | Überschreiben Sie den acpx-Befehl, wenn eine lokale Installation einen anderen ACP-Einstiegspunkt bereitstellt. |
droid | Factory Droid CLI | Erfordert Factory-/Droid-Authentifizierung oder FACTORY_API_KEY in der Harness-Umgebung. |
gemini | Gemini CLI ACP-Adapter | Erfordert Gemini CLI-Authentifizierung oder API-Schlüssel-Einrichtung. |
iflow | iFlow CLI | Adapterverfügbarkeit und Modellsteuerung hängen von der installierten CLI ab. |
kilocode | Kilo Code CLI | Adapterverfügbarkeit und Modellsteuerung hängen von der installierten CLI ab. |
kimi | Kimi/Moonshot CLI | Erfordert Kimi-/Moonshot-Authentifizierung auf dem Host. |
kiro | Kiro CLI | Adapterverfügbarkeit und Modellsteuerung hängen von der installierten CLI ab. |
opencode | OpenCode ACP-Adapter | Erfordert OpenCode CLI-/Provider-Authentifizierung. |
openclaw | OpenClaw Gateway-Bridge über openclaw acp | Ermöglicht einem ACP-fähigen Harness, mit einer OpenClaw-Gateway-Sitzung zu sprechen. |
qwen | Qwen Code / Qwen CLI | Erfordert Qwen-kompatible Authentifizierung auf dem Host. |
acp.allowedAgents und jede
agents.list[].runtime.acp.agent-Zuordnung vor dem Dispatch.
Betreiber-Runbook
Schneller/acp-Ablauf aus dem Chat:
Spawn
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto oder explizit
/acp spawn codex --bind here.Work
Fahren Sie in der gebundenen Unterhaltung oder im gebundenen Thread fort
(oder adressieren Sie den Sitzungsschlüssel explizit).
Lifecycle details
Lifecycle details
- Spawn erstellt oder setzt eine ACP-Laufzeitsitzung fort, zeichnet ACP-Metadaten im OpenClaw-Sitzungsspeicher auf und kann eine Hintergrundaufgabe erstellen, wenn der Lauf übergeordnetem Besitz unterliegt.
- Übergeordnet besessene ACP-Sitzungen werden als Hintergrundarbeit behandelt, selbst wenn die Laufzeitsitzung persistent ist; Abschluss und oberflächenübergreifende Zustellung laufen über den Notifier der übergeordneten Aufgabe, statt wie eine normale benutzerseitige Chat-Sitzung zu agieren.
- Aufgabenwartung schließt terminale oder verwaiste übergeordnet besessene One-Shot-ACP-Sitzungen. Persistente ACP-Sitzungen bleiben erhalten, solange ein aktives Unterhaltungs-Binding besteht; veraltete persistente Sitzungen ohne aktives Binding werden geschlossen, damit sie nicht stillschweigend fortgesetzt werden können, nachdem die besitzende Aufgabe erledigt ist oder ihr Aufgabeneintrag fehlt.
- Gebundene Folgenachrichten gehen direkt an die ACP-Sitzung, bis das Binding geschlossen, aus dem Fokus genommen, zurückgesetzt oder abgelaufen ist.
- Gateway-Befehle bleiben lokal.
/acp ...,/statusund/unfocuswerden nie als normaler Prompt-Text an ein gebundenes ACP-Harness gesendet. cancelbricht den aktiven Turn ab, wenn das Backend Abbruch unterstützt; es löscht weder das Binding noch Sitzungsmetadaten.closebeendet die ACP-Sitzung aus Sicht von OpenClaw und entfernt das Binding. Ein Harness kann seine eigene Upstream-Historie weiterhin behalten, wenn es Fortsetzen unterstützt.- Das acpx-Plugin bereinigt OpenClaw-eigene Wrapper- und Adapter-Prozessbäume nach
closeund entfernt veraltete OpenClaw-eigene ACPX-Waisen während des Gateway-Starts. - Leerlaufende Laufzeit-Worker kommen nach
acp.runtime.ttlMinutesfür Bereinigung infrage; gespeicherte Sitzungsmetadaten bleiben für/acp sessionsverfügbar.
Native Codex routing rules
Native Codex routing rules
Natürlichsprachliche Auslöser, die an das native Codex-
Plugin geleitet werden sollten, wenn es aktiviert ist:
- „Binde diesen Discord-Kanal an Codex.“
- „Hänge diesen Chat an Codex-Thread
<id>an.“ - „Zeige Codex-Threads und binde dann diesen.“
before_tool_call blockieren,
after_tool_call beobachten und Codex-PermissionRequest-Ereignisse
über OpenClaw-Genehmigungen routen können. Codex-Stop-Hooks werden an
OpenClaw before_agent_finalize weitergeleitet, wo Plugins einen weiteren
Modelldurchlauf anfordern können, bevor Codex seine Antwort finalisiert. Das Relay bleibt
bewusst konservativ: Es verändert keine Codex-nativen Tool-
Argumente und schreibt keine Codex-Thread-Datensätze um. Verwenden Sie explizites ACP nur,
wenn Sie das ACP-Runtime/Sitzungsmodell wünschen. Die eingebettete Codex-
Support-Grenze ist im
Support-Vertrag für Codex Harness v1 dokumentiert.Kurzreferenz zur Modell-/Provider-/Runtime-Auswahl
Kurzreferenz zur Modell-/Provider-/Runtime-Auswahl
- Legacy-Codex-Modellreferenzen - Legacy-Codex-OAuth/Abonnement-Modellroute, durch doctor repariert.
openai/*- native eingebettete Codex-App-Server-Runtime für OpenAI-Agent-Turns./codex ...- native Codex-Konversationssteuerung./acp ...oderruntime: "acp"- explizite ACP/acpx-Steuerung.
Natürlichsprachliche Trigger für ACP-Routing
Natürlichsprachliche Trigger für ACP-Routing
Trigger, die zur ACP-Runtime routen sollten:
- “Führen Sie dies als einmalige Claude-Code-ACP-Sitzung aus und fassen Sie das Ergebnis zusammen.”
- “Verwenden Sie Gemini CLI für diese Aufgabe in einem Thread, und behalten Sie anschließend Folgeanfragen in demselben Thread.”
- “Führen Sie Codex über ACP in einem Hintergrund-Thread aus.”
runtime: "acp", löst die Harness-agentId auf,
bindet sich, sofern unterstützt, an die aktuelle Konversation oder den aktuellen Thread und
routet Folgeanfragen bis zum Schließen/Ablauf an diese Sitzung. Codex
folgt diesem Pfad nur, wenn ACP/acpx explizit ist oder das native Codex-
Plugin für den angeforderten Vorgang nicht verfügbar ist.Für sessions_spawn wird runtime: "acp" nur angekündigt, wenn ACP
aktiviert ist, der Anforderer nicht sandboxed ist und ein ACP-Runtime-
Backend geladen ist. acp.dispatch.enabled=false pausiert die automatische
ACP-Thread-Weiterleitung, blendet oder blockiert aber explizite
sessions_spawn({ runtime: "acp" })-Aufrufe nicht. Es zielt auf ACP-Harness-IDs wie codex,
claude, droid, gemini oder opencode. Übergeben Sie keine normale
OpenClaw-Konfigurations-Agent-ID aus agents_list, es sei denn, dieser Eintrag ist
explizit mit agents.list[].runtime.type="acp" konfiguriert;
verwenden Sie andernfalls die standardmäßige Sub-Agent-Runtime. Wenn ein OpenClaw-Agent
mit runtime.type="acp" konfiguriert ist, verwendet OpenClaw
runtime.acp.agent als zugrunde liegende Harness-ID.ACP im Vergleich zu Sub-Agents
Verwenden Sie ACP, wenn Sie eine externe Harness-Runtime wünschen. Verwenden Sie den nativen Codex- App-Server für Codex-Konversationsbindung/-steuerung, wenn dascodex-
Plugin aktiviert ist. Verwenden Sie Sub-Agents, wenn Sie OpenClaw-native
delegierte Läufe wünschen.
| Bereich | ACP-Sitzung | Sub-Agent-Lauf |
|---|---|---|
| Runtime | ACP-Backend-Plugin (z. B. acpx) | OpenClaw-native Sub-Agent-Runtime |
| Sitzungsschlüssel | agent:<agentId>:acp:<uuid> | agent:<agentId>:subagent:<uuid> |
| Hauptbefehle | /acp ... | /subagents ... |
| Spawn-Tool | sessions_spawn mit runtime:"acp" | sessions_spawn (Standard-Runtime) |
Wie ACP Claude Code ausführt
Für Claude Code über ACP sieht der Stack so aus:- OpenClaw-ACP-Sitzungs-Control-Plane.
- Offizielles
@openclaw/acpx-Runtime-Plugin. - Claude-ACP-Adapter.
- Runtime/Sitzungsmechanik auf Claude-Seite.
- Möchten Sie
/acp spawn, bindbare Sitzungen, Runtime-Steuerungen oder dauerhafte Harness-Arbeit? Verwenden Sie ACP. - Möchten Sie einfachen lokalen Text-Fallback über die rohe CLI? Verwenden Sie CLI-Backends.
Gebundene Sitzungen
Mentales Modell
- Chat-Oberfläche - wo Personen weiter kommunizieren (Discord-Kanal, Telegram-Thema, iMessage-Chat).
- ACP-Sitzung - der dauerhafte Codex/Claude/Gemini-Runtime-Zustand, an den OpenClaw routet.
- Untergeordneter Thread/Thema - eine optionale zusätzliche Messaging-Oberfläche, die nur durch
--thread ...erstellt wird. - Runtime-Arbeitsbereich - der Dateisystemspeicherort (
cwd, Repo-Checkout, Backend-Arbeitsbereich), an dem das Harness läuft. Unabhängig von der Chat-Oberfläche.
Bindungen an die aktuelle Konversation
/acp spawn <harness> --bind here heftet die aktuelle Konversation an die
erzeugte ACP-Sitzung - kein untergeordneter Thread, dieselbe Chat-Oberfläche. OpenClaw behält
Transport, Authentifizierung, Sicherheit und Zustellung. Folge-Nachrichten in dieser
Konversation werden an dieselbe Sitzung geroutet; /new und /reset setzen die
Sitzung an Ort und Stelle zurück; /acp close entfernt die Bindung.
Beispiele:
Bindungsregeln und Exklusivität
Bindungsregeln und Exklusivität
--bind hereund--thread ...schließen sich gegenseitig aus.--bind herefunktioniert nur auf Kanälen, die Bindung an die aktuelle Konversation ankündigen; andernfalls gibt OpenClaw eine klare Nicht-unterstützt-Meldung zurück. Bindungen bleiben über Gateway-Neustarts hinweg bestehen.- Auf Discord steuert
spawnSessionsdie Erstellung untergeordneter Threads für--thread auto|here- nicht--bind here. - Wenn Sie ohne
--cwdeinen anderen ACP-Agent starten, übernimmt OpenClaw standardmäßig den Arbeitsbereich des Ziel-Agents. Fehlende geerbte Pfade (ENOENT/ENOTDIR) fallen auf die Backend-Standardeinstellung zurück; andere Zugriffsfehler (z. B.EACCES) erscheinen als Spawn-Fehler. - Gateway-Verwaltungsbefehle bleiben in gebundenen Konversationen lokal -
/acp ...-Befehle werden von OpenClaw verarbeitet, auch wenn normaler Folgetext an die gebundene ACP-Sitzung geroutet wird;/statusund/unfocusbleiben ebenfalls lokal, sobald die Befehlsverarbeitung für diese Oberfläche aktiviert ist.
Thread-gebundene Sitzungen
Thread-gebundene Sitzungen
Wenn Thread-Bindungen für einen Kanaladapter aktiviert sind:
- OpenClaw bindet einen Thread an eine Ziel-ACP-Sitzung.
- Folge-Nachrichten in diesem Thread werden an die gebundene ACP-Sitzung geroutet.
- ACP-Ausgabe wird zurück in denselben Thread zugestellt.
- Unfocus/Schließen/Archivieren/Leerlauf-Timeout oder Ablauf durch maximales Alter entfernt die Bindung.
/acp close,/acp cancel,/acp status,/statusund/unfocussind Gateway-Befehle, keine Prompts an das ACP-Harness.
acp.enabled=trueacp.dispatch.enabledist standardmäßig aktiviert (setzen Siefalse, um die automatische ACP-Thread-Weiterleitung zu pausieren; explizitesessions_spawn({ runtime: "acp" })-Aufrufe funktionieren weiterhin).- Erstellung von Thread-Sitzungen im Kanaladapter aktiviert (Standard:
true):- Discord:
channels.discord.threadBindings.spawnSessions=true - Telegram:
channels.telegram.threadBindings.spawnSessions=true
- Discord:
Kanäle mit Thread-Unterstützung
Kanäle mit Thread-Unterstützung
- Jeder Kanaladapter, der Sitzungs-/Thread-Bindungsfähigkeit bereitstellt.
- Aktuelle integrierte Unterstützung: Discord-Threads/-Kanäle, Telegram-Themen (Forumthemen in Gruppen/Supergruppen und DM-Themen).
- Plugin-Kanäle können Unterstützung über dieselbe Bindungsschnittstelle hinzufügen.
Dauerhafte Kanalbindungen
Für nicht flüchtige Workflows konfigurieren Sie dauerhafte ACP-Bindungen in Top-Level-bindings[]-Einträgen.
Bindungsmodell
Markiert eine dauerhafte ACP-Konversationsbindung.
Identifiziert die Zielkonversation. Kanalbezogene Formen:
- Discord-Kanal/-Thread:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Slack-Kanal/DM:
match.channel="slack"+match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Bevorzugen Sie stabile Slack-IDs; Kanalbindungen treffen auch auf Antworten innerhalb der Threads dieses Kanals zu. - Telegram-Forumthema:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - WhatsApp-DM/-Gruppe:
match.channel="whatsapp"+match.peer.id="<E.164|group JID>". Verwenden Sie E.164-Nummern wie+15555550123für direkte Chats und WhatsApp-Gruppen-JIDs wie120363424282127706@g.usfür Gruppen. - iMessage-DM/-Gruppe:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Bevorzugen Siechat_id:*für stabile Gruppenbindungen.
Die ID des besitzenden OpenClaw-Agents.
Optionale ACP-Überschreibung.
Optionales, betreiberseitig sichtbares Label.
Optionales Runtime-Arbeitsverzeichnis.
Optionale Backend-Überschreibung.
Runtime-Standardwerte pro Agent
Verwenden Sieagents.list[].runtime, um ACP-Standardwerte einmal pro Agent zu definieren:
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(Harness-ID, z. B.codexoderclaude)agents.list[].runtime.acp.backendagents.list[].runtime.acp.modeagents.list[].runtime.acp.cwd
bindings[].acp.*agents.list[].runtime.acp.*- Globale ACP-Standardwerte (z. B.
acp.backend)
Beispiel
Verhalten
- OpenClaw stellt sicher, dass die konfigurierte ACP-Sitzung nach der kanalspezifischen Zulassung und vor der Verwendung vorhanden ist.
- Nachrichten in diesem Kanal, Thema oder Chat werden an die konfigurierte ACP-Sitzung geleitet.
- Konfigurierte ACP-Bindungen besitzen ihre Sitzungsroute. Kanal-Broadcast-Fan-out ersetzt die konfigurierte ACP-Sitzung für eine passende Bindung nicht.
- In gebundenen Unterhaltungen setzen
/newund/resetdenselben ACP-Sitzungsschlüssel direkt zurück. - Temporäre Laufzeit-Bindungen (zum Beispiel durch Thread-Fokus-Flows erstellt) gelten weiterhin, sofern vorhanden.
- Bei agentübergreifenden ACP-Spawns ohne explizites
cwdübernimmt OpenClaw den Arbeitsbereich des Ziel-Agenten aus der Agent-Konfiguration. - Fehlende geerbte Arbeitsbereichspfade fallen auf das Standard-cwd des Backends zurück; nicht fehlende Zugriffsfehler werden als Spawn-Fehler angezeigt.
ACP-Sitzungen starten
Zwei Möglichkeiten, eine ACP-Sitzung zu starten:- Aus sessions_spawn
- Aus dem /acp-Befehl
Verwenden Sie
runtime: "acp", um eine ACP-Sitzung aus einem Agent-Turn oder
Tool-Aufruf zu starten.runtime ist standardmäßig subagent; setzen Sie daher für ACP-Sitzungen
explizit runtime: "acp". Wenn agentId ausgelassen wird, verwendet
OpenClaw acp.defaultAgent, sofern konfiguriert. mode: "session" erfordert
thread: true, um eine persistente gebundene Unterhaltung beizubehalten.sessions_spawn-Parameter
Anfänglicher Prompt, der an die ACP-Sitzung gesendet wird.
Muss für ACP-Sitzungen
"acp" sein.ACP-Ziel-Harness-ID. Fällt auf
acp.defaultAgent zurück, falls gesetzt.Fordert einen Thread-Bindungsflow an, sofern unterstützt.
"run" ist einmalig; "session" ist persistent. Wenn thread: true gesetzt ist und
mode ausgelassen wird, kann OpenClaw je nach Laufzeitpfad standardmäßig persistentes
Verhalten verwenden. mode: "session" erfordert thread: true.Angefordertes Laufzeit-Arbeitsverzeichnis (validiert durch Backend-/Laufzeit-
Richtlinie). Wenn ausgelassen, übernimmt der ACP-Spawn den Arbeitsbereich des
Ziel-Agenten, sofern konfiguriert; fehlende geerbte Pfade fallen auf Backend-
Standardwerte zurück, während echte Zugriffsfehler zurückgegeben werden.
Operator-seitige Bezeichnung, die in Sitzungs-/Bannertext verwendet wird.
Setzt eine vorhandene ACP-Sitzung fort, statt eine neue zu erstellen. Der
Agent spielt seinen Unterhaltungsverlauf über
session/load erneut ab. Erfordert
runtime: "acp"."parent" streamt anfängliche Fortschrittszusammenfassungen des ACP-Laufs als
Systemereignisse zurück an die anfragende Sitzung. Akzeptierte Antworten enthalten
streamLogPath, das auf ein sitzungsbezogenes JSONL-Protokoll verweist
(<sessionId>.acp-stream.jsonl), das Sie für den vollständigen Relay-Verlauf
verfolgen können. Parent-Fortschrittsstreams zeigen standardmäßig Assistant-Kommentare
und ACP-Statusfortschritt an, sofern nicht streaming.progress.commentary=false
gesetzt ist. Discord setzt Parent-Vorschauen ebenfalls standardmäßig auf den
Fortschrittsmodus, wenn kein Stream-Modus konfiguriert ist. Statusfortschritt
berücksichtigt weiterhin acp.stream.tagVisibility, sodass Tags wie plan
verborgen bleiben, sofern sie nicht explizit aktiviert werden.sessions_spawn-Läufe verwenden agents.defaults.subagents.runTimeoutSeconds als
standardmäßiges Limit für untergeordnete Turns. Das Tool akzeptiert keine
Timeout-Überschreibungen pro Aufruf.
Explizite Modellüberschreibung für die untergeordnete ACP-Sitzung. Codex-ACP-Spawns
normalisieren OpenAI-Referenzen wie
openai/gpt-5.4 vor session/new in die
Codex-ACP-Startkonfiguration; Slash-Formen wie openai/gpt-5.4/high setzen
außerdem den Codex-ACP-Reasoning-Aufwand.
Wenn ausgelassen, verwendet sessions_spawn({ runtime: "acp" }) vorhandene
Subagent-Modellstandards (agents.defaults.subagents.model oder
agents.list[].subagents.model), sofern konfiguriert; andernfalls lässt es das
ACP-Harness sein eigenes Standardmodell verwenden.
Andere Harnesses müssen ACP-models ankündigen und session/set_model
unterstützen; andernfalls schlägt OpenClaw/acpx eindeutig fehl, statt still auf
den Standard des Ziel-Agenten zurückzufallen.Expliziter Thinking-/Reasoning-Aufwand. Für Codex ACP wird
minimal auf
niedrigen Aufwand abgebildet, low/medium/high/xhigh werden direkt
abgebildet, und off lässt die Reasoning-Aufwand-Startüberschreibung aus.
Wenn ausgelassen, verwenden ACP-Spawns vorhandene Subagent-Thinking-Standards und
pro Modell agents.defaults.models["provider/model"].params.thinking
für das ausgewählte Modell.Spawn-Bindungs- und Thread-Modi
- --bind here|off
- --thread auto|here|off
| Modus | Verhalten |
|---|---|
here | Bindet die aktuell aktive Unterhaltung direkt; schlägt fehl, wenn keine aktiv ist. |
off | Erstellt keine Bindung für die aktuelle Unterhaltung. |
--bind hereist der einfachste Operator-Pfad für „diesen Kanal oder Chat mit Codex hinterlegen“.--bind hereerstellt keinen untergeordneten Thread.--bind hereist nur auf Kanälen verfügbar, die Bindungsunterstützung für die aktuelle Unterhaltung bereitstellen.--bindund--threadkönnen im selben/acp spawn-Aufruf nicht kombiniert werden.
Zustellungsmodell
ACP-Sitzungen können entweder interaktive Arbeitsbereiche oder vom Parent verwaltete Hintergrundarbeit sein. Der Zustellungspfad hängt von dieser Form ab.Interaktive ACP-Sitzungen
Interaktive ACP-Sitzungen
Interaktive Sitzungen sind dafür gedacht, auf einer sichtbaren Chat-Oberfläche
weiter zu kommunizieren:
/acp spawn ... --bind herebindet die aktuelle Unterhaltung an die ACP-Sitzung./acp spawn ... --thread ...bindet einen Kanal-Thread/ein Thema an die ACP-Sitzung.- Persistente konfigurierte
bindings[].type="acp"leiten passende Unterhaltungen an dieselbe ACP-Sitzung weiter.
- Normale gebundene Follow-ups werden als Prompt-Text gesendet, plus Anhänge nur dann, wenn Harness/Backend sie unterstützt.
/acp-Verwaltungsbefehle und lokale Gateway-Befehle werden vor der ACP-Weitergabe abgefangen.- Von der Laufzeit erzeugte Abschlussereignisse werden pro Ziel materialisiert. OpenClaw-Agenten erhalten den internen Runtime-Context-Umschlag von OpenClaw; externe ACP-Harnesses erhalten einen einfachen Prompt mit dem untergeordneten Ergebnis und der Anweisung. Der rohe
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>-Umschlag sollte niemals an externe Harnesses gesendet oder als ACP-Benutzertranskripttext persistiert werden. - ACP-Transkripteinträge verwenden den benutzersichtbaren Auslösetext oder den einfachen Abschluss-Prompt. Interne Ereignismetadaten bleiben in OpenClaw nach Möglichkeit strukturiert und werden nicht als vom Benutzer verfasste Chat-Inhalte behandelt.
Vom Parent verwaltete einmalige ACP-Sitzungen
Vom Parent verwaltete einmalige ACP-Sitzungen
Einmalige ACP-Sitzungen, die von einem anderen Agent-Lauf gestartet werden, sind
Hintergrund-Children, ähnlich wie Subagents:
- Der Parent fordert Arbeit mit
sessions_spawn({ runtime: "acp", mode: "run" })an. - Das Child läuft in seiner eigenen ACP-Harness-Sitzung.
- Child-Turns laufen auf derselben Hintergrund-Lane wie native Subagent-Spawns, sodass ein langsames ACP-Harness keine unabhängige Arbeit der Hauptsitzung blockiert.
- Abschlussberichte werden über den Task-Completion-Ankündigungspfad zurückgemeldet. OpenClaw wandelt interne Abschlussmetadaten in einen einfachen ACP-Prompt um, bevor sie an ein externes Harness gesendet werden, sodass Harnesses keine nur OpenClaw-internen Runtime-Context-Marker sehen.
- Der Parent formuliert das Child-Ergebnis in normaler Assistant-Stimme um, wenn eine benutzersichtbare Antwort sinnvoll ist.
sessions_send und A2A-Zustellung
sessions_send und A2A-Zustellung
sessions_send kann nach dem Spawn eine andere Sitzung ansprechen. Für normale
Peer-Sitzungen verwendet OpenClaw nach dem Einfügen der Nachricht einen
Agent-zu-Agent-Follow-up-Pfad (A2A):- Auf die Antwort der Zielsitzung warten.
- Optional anfragende Sitzung und Ziel eine begrenzte Anzahl von Follow-up-Turns austauschen lassen.
- Das Ziel auffordern, eine Ankündigungsnachricht zu erzeugen.
- Diese Ankündigung an den sichtbaren Kanal oder Thread zustellen.
tools.sessions.visibility-Einstellungen.OpenClaw überspringt das A2A-Follow-up nur, wenn der Anforderer der
Parent seines eigenen, Parent-eigenen einmaligen ACP-Childs ist. In diesem Fall
kann A2A zusätzlich zum Aufgabenabschluss den Parent mit dem Ergebnis des
Childs aufwecken, die Antwort des Parents zurück an das Child weiterleiten und
eine Parent/Child-Echoschleife erzeugen. Das Ergebnis von sessions_send meldet
delivery.status="skipped" für diesen Owned-Child-Fall, weil der
Abschluss-Pfad bereits für das Ergebnis verantwortlich ist.Vorhandene Sitzung fortsetzen
Vorhandene Sitzung fortsetzen
Verwenden Sie Häufige Anwendungsfälle:
resumeSessionId, um eine frühere ACP-Sitzung fortzusetzen, statt
neu zu starten. Der Agent spielt seinen Gesprächsverlauf über
session/load erneut ab, sodass er mit dem vollständigen Kontext des Vorherigen
fortfährt.- Übergeben Sie eine Codex-Sitzung von Ihrem Laptop an Ihr Telefon - weisen Sie Ihren Agent an, dort weiterzumachen, wo Sie aufgehört haben.
- Setzen Sie eine Coding-Sitzung fort, die Sie interaktiv in der CLI gestartet haben, jetzt headless über Ihren Agent.
- Nehmen Sie Arbeit wieder auf, die durch einen Gateway-Neustart oder ein Idle-Timeout unterbrochen wurde.
resumeSessionIdgilt nur beiruntime: "acp"; die Standard-Sub-Agent-Runtime ignoriert dieses reine ACP-Feld.streamTogilt nur beiruntime: "acp"; die Standard-Sub-Agent-Runtime ignoriert dieses reine ACP-Feld.resumeSessionIdist eine hostlokale ACP/Harness-Resume-ID, kein OpenClaw-Channel-Sitzungsschlüssel; OpenClaw prüft weiterhin die ACP-Spawn-Policy und die Ziel-Agent-Policy vor dem Dispatch, während das ACP-Backend oder Harness die Autorisierung zum Laden dieser Upstream-ID besitzt.resumeSessionIdstellt den Upstream-ACP-Gesprächsverlauf wieder her;threadundmodegelten weiterhin normal für die neue OpenClaw-Sitzung, die Sie erstellen, sodassmode: "session"weiterhinthread: trueerfordert.- Der Ziel-Agent muss
session/loadunterstützen (Codex und Claude Code tun dies). - Wenn die Sitzungs-ID nicht gefunden wird, schlägt der Spawn mit einem klaren Fehler fehl - ohne stillen Fallback auf eine neue Sitzung.
Smoke-Test nach dem Deployment
Smoke-Test nach dem Deployment
Führen Sie nach einem Gateway-Deployment eine Live-End-to-End-Prüfung aus, statt
Unit-Tests zu vertrauen:
- Prüfen Sie die bereitgestellte Gateway-Version und den Commit auf dem Zielhost.
- Öffnen Sie eine temporäre ACPX-Bridge-Sitzung zu einem Live-Agent.
- Bitten Sie diesen Agent,
sessions_spawnmitruntime: "acp",agentId: "codex",mode: "run"und der AufgabeReply with exactly LIVE-ACP-SPAWN-OKaufzurufen. - Prüfen Sie
accepted=yes, einen echtenchildSessionKeyund keinen Validator-Fehler. - Bereinigen Sie die temporäre Bridge-Sitzung.
mode: "run" und überspringen Sie streamTo: "parent" -
threadgebundenes mode: "session" und Stream-Relay-Pfade sind separate
umfangreichere Integrationsdurchläufe.Sandbox-Kompatibilität
ACP-Sitzungen laufen derzeit auf der Host-Runtime, nicht innerhalb der OpenClaw-Sandbox. Aktuelle Einschränkungen:- Wenn die Anforderer-Sitzung sandboxed ist, werden ACP-Spawns sowohl für
sessions_spawn({ runtime: "acp" })als auch für/acp spawnblockiert. sessions_spawnmitruntime: "acp"unterstütztsandbox: "require"nicht.
Auflösung des Sitzungsziels
Die meisten/acp-Aktionen akzeptieren ein optionales Sitzungsziel (session-key,
session-id oder session-label).
Auflösungsreihenfolge:
- Explizites Zielargument (oder
--sessionfür/acp steer)- versucht den Schlüssel
- dann eine UUID-förmige Sitzungs-ID
- dann das Label
- Aktuelle Thread-Bindung (wenn diese Unterhaltung/dieser Thread an eine ACP-Sitzung gebunden ist).
- Fallback auf die aktuelle Anforderer-Sitzung.
Unable to resolve session target: ...).
ACP-Steuerungen
| Befehl | Was er tut | Beispiel |
|---|---|---|
/acp spawn | ACP-Sitzung erstellen; optional aktuelle Bindung oder Thread-Bindung. | /acp spawn codex --bind here --cwd /repo |
/acp cancel | Laufenden Turn für die Zielsitzung abbrechen. | /acp cancel agent:codex:acp:<uuid> |
/acp steer | Steuerungsanweisung an laufende Sitzung senden. | /acp steer --session support inbox prioritize failing tests |
/acp close | Sitzung schließen und Thread-Ziele entbinden. | /acp close |
/acp status | Backend, Modus, Zustand, Runtime-Optionen und Fähigkeiten anzeigen. | /acp status |
/acp set-mode | Runtime-Modus für die Zielsitzung festlegen. | /acp set-mode plan |
/acp set | Generische Runtime-Konfigurationsoption schreiben. | /acp set model openai/gpt-5.4 |
/acp cwd | Override für das Runtime-Arbeitsverzeichnis festlegen. | /acp cwd /Users/user/Projects/repo |
/acp permissions | Approval-Policy-Profil festlegen. | /acp permissions strict |
/acp timeout | Runtime-Timeout festlegen (Sekunden). | /acp timeout 120 |
/acp model | Runtime-Modell-Override festlegen. | /acp model anthropic/claude-opus-4-6 |
/acp reset-options | Runtime-Options-Overrides der Sitzung entfernen. | /acp reset-options |
/acp sessions | Aktuelle ACP-Sitzungen aus dem Store auflisten. | /acp sessions |
/acp doctor | Backend-Zustand, Fähigkeiten und umsetzbare Korrekturen. | /acp doctor |
/acp install | Deterministische Installations- und Aktivierungsschritte ausgeben. | /acp install |
spawn, cancel, steer, close, status, set-mode,
set, cwd, permissions, timeout, model und reset-options) erfordern
eine Owner-Identität aus externen Channels und operator.admin von internen Gateway-
Clients. Autorisierte Nicht-Owner-Absender können weiterhin sessions, doctor,
install und help verwenden.
/acp status zeigt die effektiven Runtime-Optionen sowie Sitzungskennungen auf
Runtime- und Backend-Ebene. Fehler für nicht unterstützte Steuerungen werden klar
angezeigt, wenn einem Backend eine Fähigkeit fehlt. /acp sessions liest den
Store für die aktuell gebundene oder die Anforderer-Sitzung; Ziel-Tokens
(session-key, session-id oder session-label) werden über die
Gateway-Sitzungserkennung aufgelöst, einschließlich benutzerdefinierter
session.store-Stammverzeichnisse pro Agent.
Zuordnung von Runtime-Optionen
/acp bietet Komfortbefehle und einen generischen Setter. Äquivalente
Operationen:
| Befehl | Wird zugeordnet zu | Hinweise |
|---|---|---|
/acp model <id> | Runtime-Konfigurationsschlüssel model | Für Codex ACP normalisiert OpenClaw openai/<model> zur Adapter-Modell-ID und ordnet Slash-Reasoning-Suffixe wie openai/gpt-5.4/high reasoning_effort zu. |
/acp set thinking <level> | kanonische Option thinking | OpenClaw sendet das vom Backend beworbene Äquivalent, wenn vorhanden, und bevorzugt thinking, dann effort, reasoning_effort oder thought_level. Für Codex ACP ordnet der Adapter Werte reasoning_effort zu. |
/acp permissions <profile> | kanonische Option permissionProfile | OpenClaw sendet das vom Backend beworbene Äquivalent, wenn vorhanden, etwa approval_policy, permission_profile, permissions oder permission_mode. |
/acp timeout <seconds> | kanonische Option timeoutSeconds | OpenClaw sendet das vom Backend beworbene Äquivalent, wenn vorhanden, etwa timeout oder timeout_seconds. |
/acp cwd <path> | Runtime-cwd-Override | Direkte Aktualisierung. |
/acp set <key> <value> | generisch | key=cwd verwendet den cwd-Override-Pfad. |
/acp reset-options | löscht alle Runtime-Overrides | - |
acpx-Harness, Plugin-Einrichtung und Berechtigungen
Informationen zur acpx-Harness-Konfiguration (Claude Code / Codex / Gemini CLI- Aliasse), den MCP-Bridges plugin-tools und OpenClaw-tools sowie ACP- Berechtigungsmodi finden Sie unter ACP-Agents - Einrichtung.Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Behebung |
|---|---|---|
ACP runtime backend is not configured | Backend-Plugin fehlt, ist deaktiviert oder wird durch plugins.allow blockiert. | Installieren und aktivieren Sie das Backend-Plugin, nehmen Sie acpx in plugins.allow auf, wenn diese Allowlist gesetzt ist, und führen Sie dann /acp doctor aus. |
ACP is disabled by policy (acp.enabled=false) | ACP ist global deaktiviert. | Setzen Sie acp.enabled=true. |
ACP dispatch is disabled by policy (acp.dispatch.enabled=false) | Automatische Dispatch-Verarbeitung aus normalen Thread-Nachrichten ist deaktiviert. | Setzen Sie acp.dispatch.enabled=true, um automatisches Thread-Routing wieder aufzunehmen; explizite sessions_spawn({ runtime: "acp" })-Aufrufe funktionieren weiterhin. |
ACP agent "<id>" is not allowed by policy | Agent ist nicht in der Allowlist. | Verwenden Sie eine zulässige agentId oder aktualisieren Sie acp.allowedAgents. |
/acp doctor reports backend not ready right after startup | Backend-Plugin fehlt, ist deaktiviert, wird durch Allow-/Deny-Policy blockiert oder die konfigurierte ausführbare Datei ist nicht verfügbar. | Installieren/aktivieren Sie das Backend-Plugin, führen Sie /acp doctor erneut aus und prüfen Sie den Installations- oder Policy-Fehler des Backends, falls es fehlerhaft bleibt. |
| Harness command not found | Adapter-CLI ist nicht installiert, das externe Plugin fehlt oder der erstmalige npx-Abruf ist für einen Nicht-Codex-Adapter fehlgeschlagen. | Führen Sie /acp doctor aus, installieren/wärmen Sie den Adapter auf dem Gateway-Host vor oder konfigurieren Sie den acpx-Agent-Befehl explizit. |
| Model-not-found from the harness | Modell-ID ist für einen anderen Provider/Harness gültig, aber nicht für dieses ACP-Ziel. | Verwenden Sie ein von diesem Harness gelistetes Modell, konfigurieren Sie das Modell im Harness oder lassen Sie die Überschreibung weg. |
| Vendor auth error from the harness | OpenClaw ist fehlerfrei, aber die Ziel-CLI/der Ziel-Provider ist nicht angemeldet. | Melden Sie sich an oder stellen Sie den erforderlichen Provider-Schlüssel in der Gateway-Host-Umgebung bereit. |
Unable to resolve session target: ... | Ungültiges Schlüssel-/ID-/Label-Token. | Führen Sie /acp sessions aus, kopieren Sie den exakten Schlüssel/das exakte Label und versuchen Sie es erneut. |
--bind here requires running /acp spawn inside an active ... conversation | --bind here wurde ohne aktive bindbare Unterhaltung verwendet. | Wechseln Sie zum Ziel-Chat/-Channel und versuchen Sie es erneut oder verwenden Sie einen ungebundenen Spawn. |
Conversation bindings are unavailable for <channel>. | Dem Adapter fehlt die ACP-Bindungsfähigkeit für die aktuelle Unterhaltung. | Verwenden Sie /acp spawn ... --thread ..., sofern unterstützt, konfigurieren Sie bindings[] auf oberster Ebene oder wechseln Sie zu einem unterstützten Channel. |
--thread here requires running /acp spawn inside an active ... thread | --thread here wurde außerhalb eines Thread-Kontexts verwendet. | Wechseln Sie zum Ziel-Thread oder verwenden Sie --thread auto/off. |
Only <user-id> can rebind this channel/conversation/thread. | Ein anderer Benutzer besitzt das aktive Bindungsziel. | Binden Sie als Besitzer neu oder verwenden Sie eine andere Unterhaltung oder einen anderen Thread. |
Thread bindings are unavailable for <channel>. | Dem Adapter fehlt die Thread-Bindungsfähigkeit. | Verwenden Sie --thread off oder wechseln Sie zu einem unterstützten Adapter/Channel. |
Sandboxed sessions cannot spawn ACP sessions ... | ACP-Runtime läuft hostseitig; die anfragende Sitzung ist sandboxed. | Verwenden Sie runtime="subagent" aus sandboxed Sitzungen oder führen Sie ACP-Spawn aus einer nicht sandboxed Sitzung aus. |
sessions_spawn sandbox="require" is unsupported for runtime="acp" ... | sandbox="require" wurde für ACP-Runtime angefordert. | Verwenden Sie runtime="subagent" für erforderliches Sandboxing oder ACP mit sandbox="inherit" aus einer nicht sandboxed Sitzung. |
Cannot apply --model ... did not advertise model support | Das Ziel-Harness stellt kein generisches ACP-Modellwechseln bereit. | Verwenden Sie ein Harness, das ACP models/session/set_model bewirbt, verwenden Sie Codex-ACP-Modellreferenzen oder konfigurieren Sie das Modell direkt im Harness, falls es ein eigenes Startflag hat. |
| Missing ACP metadata for bound session | Veraltete/gelöschte ACP-Sitzungsmetadaten. | Erstellen Sie sie mit /acp spawn neu und binden/fokussieren Sie dann den Thread erneut. |
AcpRuntimeError: Permission prompt unavailable in non-interactive mode | permissionMode blockiert Schreib-/Ausführungszugriffe in einer nicht interaktiven ACP-Sitzung. | Setzen Sie plugins.entries.acpx.config.permissionMode auf approve-all und starten Sie den Gateway neu. Siehe Berechtigungskonfiguration. |
| ACP session fails early with little output | Berechtigungsabfragen werden durch permissionMode/nonInteractivePermissions blockiert. | Prüfen Sie die Gateway-Logs auf AcpRuntimeError. Für vollständige Berechtigungen setzen Sie permissionMode=approve-all; für graceful degradation setzen Sie nonInteractivePermissions=deny. |
| ACP session stalls indefinitely after completing work | Harness-Prozess wurde beendet, aber ACP-Sitzung hat keinen Abschluss gemeldet. | Aktualisieren Sie OpenClaw; die aktuelle acpx-Bereinigung entfernt beim Schließen und beim Gateway-Start veraltete, OpenClaw-eigene Wrapper- und Adapterprozesse. |
Harness sees <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>> | Interner Ereignis-Umschlag ist über die ACP-Grenze gelangt. | Aktualisieren Sie OpenClaw und führen Sie den Abschlussablauf erneut aus; externe Harnesses sollten nur einfache Abschluss-Prompts erhalten. |
Command blocked by PreToolUse hook: Native hook relay unavailable gehört zum
nativen Codex-Hook-Relay, nicht zu ACP/acpx. Starten Sie in einem gebundenen
Codex-Chat eine frische Sitzung mit /new oder /reset; wenn dies einmal
funktioniert und dann beim nächsten nativen Tool-Aufruf erneut auftritt,
starten Sie den Codex-App-Server oder den OpenClaw Gateway neu, statt /new
zu wiederholen. Siehe Fehlerbehebung zum Codex-Harness.