ACP jest ścieżką dla zewnętrznych środowisk, a nie domyślną ścieżką Codex. Natywny
Plugin serwera aplikacji Codex obsługuje polecenia
/codex ... oraz domyślne
osadzone środowisko wykonawcze openai/gpt-* dla tur agentów; ACP obsługuje polecenia /acp ...
oraz sesje sessions_spawn({ runtime: "acp" }).Aby umożliwić Codex lub Claude Code bezpośrednie połączenie jako zewnętrzny klient MCP
z istniejącymi konwersacjami kanałów OpenClaw, użyj
openclaw mcp serve zamiast ACP.Którą stronę wybrać?
Czy to działa od razu?
Tak, po zainstalowaniu oficjalnego Pluginu środowiska wykonawczego ACP:extensions/acpx po
wykonaniu pnpm install. Uruchom /acp doctor, aby sprawdzić gotowość.
OpenClaw informuje agentów o uruchamianiu ACP tylko wtedy, gdy ACP jest rzeczywiście dostępne:
ACP musi być włączone, wysyłanie zadań nie może być wyłączone, bieżąca sesja nie może
być blokowana przez piaskownicę, a zaplecze środowiska wykonawczego musi być załadowane i sprawne. Jeśli
którykolwiek warunek nie jest spełniony, Skills ACP i wskazówki ACP dotyczące sessions_spawn pozostają ukryte,
aby agent nie sugerował niedostępnego zaplecza.
Pułapki przy pierwszym uruchomieniu
Pułapki przy pierwszym uruchomieniu
- Jeśli ustawiono
plugins.allow, jest to restrykcyjny wykaz Pluginów i musi zawieraćacpx; w przeciwnym razie zainstalowane zaplecze ACP zostanie celowo zablokowane (/acp doctorzgłosi brakujący wpis na liście dozwolonych). - Adapter Codex ACP jest dostarczany z Pluginem
acpxi w miarę możliwości uruchamia się lokalnie. - Codex ACP działa z odizolowanym
CODEX_HOME. OpenClaw kopiuje z konfiguracji Codex hosta zaufane wpisy zaufania projektów oraz bezpieczną konfigurację routingu modeli/dostawców (model,model_provider,model_reasoning_effort,sandbox_modei bezpieczne polamodel_providers.<name>); uwierzytelnianie, powiadomienia i haki pozostają wyłącznie w konfiguracji hosta. - Adaptery innych docelowych środowisk mogą być pobierane na żądanie za pomocą
npxprzy pierwszym użyciu. - Uwierzytelnianie u dostawcy musi już być skonfigurowane na hoście dla danego środowiska.
- Jeśli host nie ma dostępu do npm ani sieci, pobieranie adapterów przy pierwszym uruchomieniu nie powiedzie się, dopóki pamięci podręczne nie zostaną wcześniej wypełnione lub adapter nie zostanie zainstalowany w inny sposób.
Wymagania wstępne środowiska wykonawczego
Wymagania wstępne środowiska wykonawczego
ACP uruchamia rzeczywisty proces zewnętrznego środowiska. OpenClaw odpowiada za routing,
stan zadań w tle, dostarczanie, powiązania i zasady; środowisko odpowiada za
logowanie u dostawcy, katalog modeli, działanie systemu plików i natywne narzędzia.Zanim obwinisz OpenClaw, sprawdź:
/acp doctorzgłasza włączone i sprawne zaplecze.- Identyfikator docelowy jest dozwolony przez
acp.allowedAgents, jeśli ta lista dozwolonych jest ustawiona. - Polecenie środowiska może zostać uruchomione na hoście Gateway.
- Uwierzytelnianie dostawcy jest dostępne dla tego środowiska (
claude,codex,gemini,opencode,droiditd.). - Wybrany model istnieje w tym środowisku — identyfikatorów modeli nie można przenosić między środowiskami.
- Żądany katalog
cwdistnieje i jest dostępny; możesz też pominąćcwd, aby zaplecze użyło wartości domyślnej. - Tryb uprawnień odpowiada wykonywanej pracy. Sesje nieinteraktywne nie mogą klikać natywnych monitów o uprawnienia, dlatego uruchomienia programistyczne intensywnie zapisujące dane lub wykonujące polecenia zwykle wymagają profilu uprawnień ACPX, który może działać bez interfejsu.
Obsługiwane środowiska docelowe
Z zapleczemacpx używaj poniższych identyfikatorów jako wartości docelowych /acp spawn <id> lub
sessions_spawn({ runtime: "acp", agentId: "<id>" }):
pi (pi-acp) jest również zarejestrowany w zapleczu acpx, ale nie jest
środowiskiem programistycznym w takim samym znaczeniu jak pozostałe wymienione powyżej.
Niestandardowe aliasy agentów acpx można skonfigurować bezpośrednio w acpx, ale zasady OpenClaw
nadal sprawdzają acp.allowedAgents oraz wszelkie mapowania
agents.list[].runtime.acp.agent przed wysłaniem zadania.
Procedura operatora
Skrócony przebieg/acp z poziomu czatu:
1
Uruchomienie
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto lub jawnie
/acp spawn codex --bind here.2
Praca
Kontynuuj w powiązanej konwersacji lub wątku (albo jawnie wskaż klucz sesji).
3
Sprawdzenie stanu
/acp status4
Dostosowanie
/acp model <provider/model>, /acp permissions <profile>,
/acp timeout <seconds>.5
Sterowanie
Bez zastępowania kontekstu:
/acp steer tighten logging and continue.6
Zatrzymanie
/acp cancel (bieżąca tura) lub /acp close (sesja i powiązania).Szczegóły cyklu życia
Szczegóły cyklu życia
- Uruchomienie tworzy lub wznawia sesję środowiska wykonawczego ACP, zapisuje metadane ACP w magazynie sesji OpenClaw i może utworzyć zadanie w tle, gdy uruchomienie należy do procesu nadrzędnego.
- Sesje ACP należące do procesu nadrzędnego są traktowane jako praca w tle nawet wtedy, gdy sesja środowiska wykonawczego jest trwała; zakończenie i dostarczanie między powierzchniami odbywają się przez mechanizm powiadomień zadania nadrzędnego, zamiast zachowywać się jak zwykła sesja czatu widoczna dla użytkownika.
- Utrzymanie zadań zamyka zakończone lub osierocone jednorazowe sesje ACP należące do procesu nadrzędnego. Trwałe sesje ACP są zachowywane, dopóki istnieje aktywne powiązanie z konwersacją; nieaktualne trwałe sesje bez aktywnego powiązania są zamykane, aby nie mogły zostać po cichu wznowione po zakończeniu zadania właściciela lub usunięciu jego rekordu.
- Kolejne wiadomości w ramach powiązania trafiają bezpośrednio do sesji ACP, dopóki powiązanie nie zostanie zamknięte, pozbawione fokusu, zresetowane lub nie wygaśnie.
- Polecenia Gateway pozostają lokalne.
/acp ...,/statusi/unfocusnigdy nie są wysyłane jako zwykły tekst monitu do powiązanego środowiska ACP. cancelprzerywa aktywną turę, jeśli zaplecze obsługuje anulowanie; nie usuwa powiązania ani metadanych sesji.closekończy sesję ACP z punktu widzenia OpenClaw i usuwa powiązanie. Środowisko może nadal zachowywać własną historię po stronie nadrzędnej, jeśli obsługuje wznawianie.- Plugin acpx po wykonaniu
closeczyści drzewa procesów opakowujących i adapterów należących do OpenClaw oraz usuwa nieaktualne osierocone procesy ACPX należące do OpenClaw podczas uruchamiania Gateway. - Bezczynne procesy robocze środowiska wykonawczego mogą zostać usunięte po czasie określonym przez
acp.runtime.ttlMinutes; zapisane metadane sesji pozostają dostępne dla/acp sessions.
Reguły natywnego routingu Codex
Reguły natywnego routingu Codex
Wyzwalacze w języku naturalnym, które powinny być kierowane do natywnego Pluginu Codex,
gdy jest on włączony:
- „Powiąż ten kanał Discord z Codex”.
- „Dołącz ten czat do wątku Codex
<id>”. - „Pokaż wątki Codex, a następnie powiąż ten”.
before_tool_call, obserwować
after_tool_call i kierować zdarzenia Codex PermissionRequest przez mechanizm
zatwierdzeń OpenClaw. Hooki Codex Stop są przekazywane do
before_agent_finalize OpenClaw, gdzie pluginy mogą zażądać jeszcze jednego
przebiegu modelu, zanim Codex sfinalizuje odpowiedź. Przekaźnik celowo pozostaje
zachowawczy: nie modyfikuje argumentów narzędzi natywnych dla Codex
ani nie przepisuje rekordów wątków Codex. Używaj jawnego ACP tylko wtedy, gdy chcesz
korzystać z modelu środowiska wykonawczego/sesji ACP. Granice obsługi osadzonego
Codex opisano w
kontrakcie obsługi mechanizmu Codex v1.Ściągawka wyboru modelu / dostawcy / środowiska wykonawczego
Ściągawka wyboru modelu / dostawcy / środowiska wykonawczego
- starsze odwołania do modeli Codex - starsza ścieżka modelu Codex OAuth/subskrypcji naprawiana przez doctor.
openai/*- osadzone natywne środowisko wykonawcze serwera aplikacji Codex dla tur agenta OpenAI./codex ...- natywne sterowanie konwersacją Codex./acp ...lubruntime: "acp"- jawne sterowanie ACP/acpx.
Wyzwalacze języka naturalnego kierujące do ACP
Wyzwalacze języka naturalnego kierujące do ACP
Wyzwalacze, które powinny kierować do środowiska wykonawczego ACP:
- „Uruchom to jako jednorazową sesję Claude Code ACP i podsumuj wynik”.
- „Użyj Gemini CLI do tego zadania w wątku, a następnie prowadź dalsze interakcje w tym samym wątku”.
- „Uruchom Codex przez ACP w wątku działającym w tle”.
runtime: "acp", rozpoznaje agentId mechanizmu, wiąże go
z bieżącą konwersacją lub wątkiem, jeśli jest to obsługiwane, i kieruje dalsze
interakcje do tej sesji aż do jej zamknięcia/wygaśnięcia. Codex korzysta z tej
ścieżki tylko wtedy, gdy ACP/acpx wskazano jawnie lub natywny plugin Codex
jest niedostępny dla żądanej operacji.W przypadku sessions_spawn opcja runtime: "acp" jest udostępniana tylko wtedy,
gdy ACP jest włączone, zgłaszający nie działa w piaskownicy i załadowano backend
środowiska wykonawczego ACP. acp.dispatch.enabled=false wstrzymuje automatyczne
kierowanie wątków ACP, ale nie ukrywa ani nie blokuje jawnych wywołań
sessions_spawn({ runtime: "acp" }). Opcja ta wskazuje identyfikatory mechanizmów
ACP, takie jak codex, claude, droid, gemini lub opencode. Nie przekazuj
zwykłego identyfikatora agenta z konfiguracji OpenClaw, pochodzącego z
agents_list, chyba że ten wpis został jawnie skonfigurowany za pomocą
agents.list[].runtime.type="acp"; w przeciwnym razie użyj domyślnego środowiska
wykonawczego podagenta. Gdy agent OpenClaw jest skonfigurowany z
runtime.type="acp", OpenClaw używa runtime.acp.agent jako bazowego
identyfikatora mechanizmu.ACP a podagenci
Używaj ACP, gdy potrzebujesz zewnętrznego środowiska wykonawczego mechanizmu. Używaj natywnego serwera aplikacji Codex do wiązania konwersacji Codex i sterowania nimi, gdy plugincodex jest włączony. Używaj podagentów, gdy potrzebujesz delegowanych
przebiegów natywnych dla OpenClaw.
Zobacz także Podagenci.
Jak ACP uruchamia Claude Code
W przypadku Claude Code przez ACP stos wygląda następująco:- Płaszczyzna sterowania sesjami ACP OpenClaw.
- Oficjalny plugin środowiska wykonawczego
@openclaw/acpx. - Adapter ACP Claude.
- Mechanizmy środowiska wykonawczego/sesji po stronie Claude.
- Potrzebujesz
/acp spawn, sesji z możliwością wiązania, sterowania środowiskiem wykonawczym lub trwałej pracy mechanizmu? Użyj ACP. - Potrzebujesz prostego lokalnego trybu awaryjnego opartego na tekście przez surowy CLI? Użyj backendów CLI.
Powiązane sesje
Model mentalny
- Powierzchnia czatu — miejsce, w którym użytkownicy kontynuują rozmowę (kanał Discord, temat Telegram, czat iMessage).
- Sesja ACP — trwały stan środowiska wykonawczego Codex/Claude/Gemini, do którego OpenClaw kieruje ruch.
- Wątek/temat podrzędny — opcjonalna dodatkowa powierzchnia komunikacji tworzona wyłącznie przez
--thread .... - Obszar roboczy środowiska wykonawczego — lokalizacja w systemie plików (
cwd, kopia robocza repozytorium, obszar roboczy backendu), w której działa mechanizm. Jest niezależny od powierzchni czatu.
Powiązania z bieżącą konwersacją
/acp spawn <harness> --bind here przypina bieżącą konwersację do
uruchomionej sesji ACP — bez wątku podrzędnego, na tej samej powierzchni czatu. OpenClaw
nadal odpowiada za transport, uwierzytelnianie, bezpieczeństwo i dostarczanie. Kolejne
wiadomości w tej konwersacji są kierowane do tej samej sesji; /new i /reset
resetują sesję w miejscu; /acp close usuwa powiązanie.
Przykłady:
Reguły powiązań i wyłączność
Reguły powiązań i wyłączność
--bind herei--thread ...wzajemnie się wykluczają.--bind heredziała tylko w kanałach, które deklarują obsługę powiązania z bieżącą konwersacją; w przeciwnym razie OpenClaw zwraca jasny komunikat o braku obsługi. Powiązania zachowują się po ponownym uruchomieniu Gateway.- W Discord opcja
spawnSessionskontroluje tworzenie wątków podrzędnych dla--thread auto|here— nie dla--bind here. - Jeśli uruchomisz sesję dla innego agenta ACP bez
--cwd, OpenClaw domyślnie dziedziczy obszar roboczy agenta docelowego. Brakujące odziedziczone ścieżki (ENOENT/ENOTDIR) powodują użycie domyślnej wartości backendu; inne błędy dostępu (np.EACCES) są zgłaszane jako błędy uruchamiania. - Polecenia zarządzania Gateway pozostają lokalne w powiązanych konwersacjach — polecenia
/acp ...są obsługiwane przez OpenClaw nawet wtedy, gdy zwykły tekst dalszej interakcji jest kierowany do powiązanej sesji ACP;/statusi/unfocusrównież pozostają lokalne, gdy obsługa poleceń jest włączona dla tej powierzchni.
Sesje powiązane z wątkami
Sesje powiązane z wątkami
Gdy powiązania wątków są włączone dla adaptera kanału:
- OpenClaw wiąże wątek z docelową sesją ACP.
- Kolejne wiadomości w tym wątku są kierowane do powiązanej sesji ACP.
- Dane wyjściowe ACP są dostarczane z powrotem do tego samego wątku.
- Usunięcie fokusu/zamknięcie/archiwizacja/przekroczenie limitu bezczynności lub maksymalnego wieku usuwa powiązanie.
/acp close,/acp cancel,/acp status,/statusi/unfocussą poleceniami Gateway, a nie monitami dla mechanizmu ACP.
acp.enabled=trueacp.dispatch.enabledjest domyślnie włączone (ustawfalse, aby wstrzymać automatyczne kierowanie wątków ACP; jawne wywołaniasessions_spawn({ runtime: "acp" })nadal działają).- Uruchamianie sesji wątków przez adapter kanału jest włączone (domyślnie:
true):- Discord:
channels.discord.threadBindings.spawnSessions=true - Telegram:
channels.telegram.threadBindings.spawnSessions=true
- Discord:
Kanały obsługujące wątki
Kanały obsługujące wątki
- Dowolny adapter kanału udostępniający możliwość wiązania sesji/wątków.
- Obecna wbudowana obsługa: wątki/kanały Discord, tematy Telegram (tematy forum w grupach/supergrupach i tematy wiadomości bezpośrednich).
- Kanały pluginów mogą dodać obsługę przez ten sam interfejs powiązań.
Trwałe powiązania kanałów
W przypadku nieulotnych przepływów pracy skonfiguruj trwałe powiązania ACP we wpisach najwyższego poziomubindings[].
Model powiązań
"acp"
Oznacza trwałe powiązanie konwersacji ACP.
object
Identyfikuje docelową konwersację. Struktury dla poszczególnych kanałów:
- Kanał/wątek Discord:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Kanał/wiadomość bezpośrednia Slack:
match.channel="slack"+match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Preferuj stabilne identyfikatory Slack; powiązania kanałów obejmują również odpowiedzi w wątkach danego kanału. - Temat forum Telegram:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - Wiadomość bezpośrednia/grupa WhatsApp:
match.channel="whatsapp"+match.peer.id="<E.164|group JID>". Dla czatów bezpośrednich używaj numerów E.164, takich jak+15555550123, a dla grup identyfikatorów JID grup WhatsApp, takich jak120363424282127706@g.us. - Wiadomość bezpośrednia/grupa iMessage:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Dla stabilnych powiązań grupowych preferujchat_id:*.
string
Identyfikator agenta OpenClaw będącego właścicielem.
"persistent" | "oneshot"
Opcjonalne nadpisanie ACP.
string
Opcjonalna etykieta przeznaczona dla operatora.
string
Opcjonalny katalog roboczy środowiska wykonawczego.
string
Opcjonalne nadpisanie backendu.
Domyślne ustawienia środowiska wykonawczego dla poszczególnych agentów
Użyjagents.list[].runtime, aby jednokrotnie zdefiniować domyślne ustawienia ACP dla każdego agenta:
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(identyfikator mechanizmu, np.codexlubclaude)agents.list[].runtime.acp.backendagents.list[].runtime.acp.modeagents.list[].runtime.acp.cwd
bindings[].acp.*agents.list[].runtime.acp.*- Globalne domyślne ustawienia ACP (np.
acp.backend)
Przykład
Działanie
- OpenClaw zapewnia istnienie skonfigurowanej sesji ACP po dopuszczeniu właściwym dla danego kanału, a przed jej użyciem.
- Wiadomości w tym kanale, temacie lub czacie są kierowane do skonfigurowanej sesji ACP.
- Skonfigurowane powiązania ACP są właścicielami tras swoich sesji. Rozsyłanie transmisji kanału nie zastępuje skonfigurowanej sesji ACP dla pasującego powiązania.
- W powiązanych konwersacjach
/newi/resetresetują w miejscu ten sam klucz sesji ACP. - Tymczasowe powiązania środowiska uruchomieniowego (na przykład utworzone przez przepływy skupienia na wątku) nadal mają zastosowanie tam, gdzie występują.
- W przypadku uruchamiania ACP między agentami bez jawnego
cwdOpenClaw dziedziczy przestrzeń roboczą agenta docelowego z konfiguracji agenta. - Brakujące odziedziczone ścieżki przestrzeni roboczej powodują użycie domyślnego katalogu roboczego backendu; błędy dostępu do istniejących ścieżek są zgłaszane jako błędy uruchomienia.
Uruchamianie sesji ACP
Sesję ACP można uruchomić na dwa sposoby:- Z sessions_spawn
- Z polecenia /acp
Użyj
runtime: "acp", aby uruchomić sesję ACP z tury agenta lub wywołania
narzędzia.Wartością domyślną
runtime jest subagent, dlatego dla sesji ACP ustaw
jawnie runtime: "acp". Jeśli pominięto agentId, OpenClaw używa
acp.defaultAgent, o ile go skonfigurowano. mode: "session" wymaga
thread: true, aby zachować trwałą powiązaną konwersację.Parametry sessions_spawn
string
wymagane
Początkowy prompt wysyłany do sesji ACP.
"acp"
wymagane
Dla sesji ACP musi mieć wartość
"acp".string
Identyfikator docelowego środowiska ACP. Jeśli ustawiono
acp.defaultAgent,
zostanie użyty jako wartość zastępcza.boolean
domyślnie:"false"
Żąda przepływu powiązania z wątkiem tam, gdzie jest on obsługiwany.
"run" | "session"
domyślnie:"run"
"run" oznacza wykonanie jednorazowe, a "session" — trwałe. Jeśli ustawiono
thread: true i pominięto mode, OpenClaw może domyślnie zastosować trwałe
działanie zależnie od ścieżki środowiska uruchomieniowego. mode: "session"
wymaga thread: true.string
Żądany katalog roboczy środowiska uruchomieniowego (weryfikowany zgodnie
z zasadami backendu/środowiska uruchomieniowego). Jeśli go pominięto,
uruchomienie ACP dziedziczy skonfigurowaną przestrzeń roboczą agenta
docelowego; brakujące odziedziczone ścieżki powodują użycie wartości
domyślnych backendu, natomiast rzeczywiste błędy dostępu są zwracane.
string
Etykieta widoczna dla operatora, używana w tekście sesji/banera.
string
Wznawia istniejącą sesję ACP zamiast tworzyć nową. Agent odtwarza historię
konwersacji za pomocą
session/load. Wymaga runtime: "acp"."parent"
"parent" przesyła podsumowania postępu początkowego uruchomienia ACP z
powrotem do sesji zgłaszającej żądanie jako zdarzenia systemowe.
Akceptowane odpowiedzi obejmują streamLogPath wskazujący dziennik JSONL
ograniczony do sesji (<sessionId>.acp-stream.jsonl), który można śledzić,
aby uzyskać pełną historię przekazywania. Strumienie postępu sesji
nadrzędnej domyślnie pokazują komentarze asystenta i postęp stanu ACP,
chyba że ustawiono streaming.progress.commentary=false. Discord również
domyślnie używa trybu postępu dla podglądów sesji nadrzędnej, gdy nie
skonfigurowano trybu strumienia. Postęp stanu nadal respektuje
acp.stream.tagVisibility, dlatego znaczniki takie jak plan pozostają
ukryte, chyba że zostaną jawnie włączone.sessions_spawn używają
agents.defaults.subagents.runTimeoutSeconds jako domyślnego limitu czasu
tury podrzędnej. Narzędzie nie przyjmuje nadpisania limitu czasu dla
pojedynczego wywołania (runTimeoutSeconds/timeoutSeconds są odrzucane
z błędem nakazującym skonfigurowanie wartości domyślnej).
string
Jawne nadpisanie modelu dla podrzędnej sesji ACP. Uruchomienia Codex ACP
normalizują odwołania OpenAI, takie jak
openai/gpt-5.4, do konfiguracji
startowej Codex ACP przed session/new; formy z ukośnikami, takie jak
openai/gpt-5.4/high, ustawiają również intensywność rozumowania Codex ACP.
Gdy parametr zostanie pominięty,
sessions_spawn({ runtime: "acp" }) używa istniejących domyślnych modeli
podagentów (agents.defaults.subagents.model lub
agents.list[].subagents.model), o ile zostały skonfigurowane; w przeciwnym
razie pozwala środowisku ACP użyć jego własnego modelu domyślnego. Inne
środowiska muszą udostępniać models ACP i obsługiwać session/set_model;
w przeciwnym razie OpenClaw/acpx zgłasza jednoznaczny błąd zamiast po cichu
używać domyślnego modelu agenta docelowego.string
Jawnie określona intensywność myślenia/rozumowania. W przypadku Codex ACP
minimal odpowiada niskiej intensywności, wartości
low/medium/high/xhigh są odwzorowywane bezpośrednio, a off pomija
startowe nadpisanie intensywności rozumowania. Po pominięciu tego parametru
uruchomienia ACP używają istniejących domyślnych ustawień myślenia
podagentów oraz właściwego dla modelu ustawienia
agents.defaults.models["provider/model"].params.thinking dla wybranego
modelu.Tryby powiązania i wątku podczas uruchamiania
- --bind here|off
- --thread auto|here|off
Uwagi:
--bind hereto najprostsza ścieżka operatorska służąca do powiązania tego kanału lub czatu z Codex.--bind herenie tworzy wątku podrzędnego.--bind herejest dostępne tylko w kanałach udostępniających obsługę powiązania z bieżącą konwersacją.--bindi--threadnie mogą być użyte razem w tym samym wywołaniu/acp spawn.
Model dostarczania
Sesje ACP mogą pełnić funkcję interaktywnych przestrzeni roboczych albo pracy w tle należącej do sesji nadrzędnej. Ścieżka dostarczania zależy od tej formy.Interaktywne sesje ACP
Interaktywne sesje ACP
Sesje interaktywne służą do kontynuowania rozmowy na widocznej powierzchni czatu:
/acp spawn ... --bind herewiąże bieżącą konwersację z sesją ACP./acp spawn ... --thread ...wiąże wątek/temat kanału z sesją ACP.- Trwałe skonfigurowane wpisy
bindings[].type="acp"kierują pasujące konwersacje do tej samej sesji ACP.
- Zwykłe powiązane wiadomości uzupełniające są wysyłane jako tekst promptu wraz z załącznikami, ale tylko wtedy, gdy środowisko/backend je obsługuje.
- Polecenia zarządzające
/acporaz lokalne polecenia Gateway są przechwytywane przed przekazaniem do ACP. - Zdarzenia ukończenia generowane przez środowisko uruchomieniowe są materializowane osobno dla każdego celu. Agenci OpenClaw otrzymują wewnętrzną kopertę kontekstu środowiska uruchomieniowego OpenClaw; zewnętrzne środowiska ACP otrzymują zwykły prompt z wynikiem procesu podrzędnego i instrukcją. Surowa koperta
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>nigdy nie powinna być wysyłana do zewnętrznych środowisk ani utrwalana jako tekst wypowiedzi użytkownika w transkrypcji ACP. - Wpisy transkrypcji ACP używają tekstu wyzwalającego widocznego dla użytkownika albo zwykłego promptu ukończenia. Wewnętrzne metadane zdarzeń pozostają w OpenClaw w postaci ustrukturyzowanej, gdy jest to możliwe, i nie są traktowane jako treść czatu utworzona przez użytkownika.
Jednorazowe sesje ACP należące do sesji nadrzędnej
Jednorazowe sesje ACP należące do sesji nadrzędnej
Jednorazowe sesje ACP uruchamiane przez innego agenta są procesami
podrzędnymi działającymi w tle, podobnie jak podagenci:
- Sesja nadrzędna zleca pracę za pomocą
sessions_spawn({ runtime: "acp", mode: "run" }). - Proces podrzędny działa we własnej sesji środowiska ACP.
- Tury procesu podrzędnego działają na tej samej ścieżce zadań w tle, której używają natywne uruchomienia podagentów, dzięki czemu powolne środowisko ACP nie blokuje niezwiązanej pracy sesji głównej.
- Ukończenie jest zgłaszane przez ścieżkę powiadamiania o ukończeniu zadania. OpenClaw przekształca wewnętrzne metadane ukończenia w zwykły prompt ACP przed wysłaniem go do zewnętrznego środowiska, dzięki czemu środowiska nie widzą znaczników kontekstu środowiska uruchomieniowego właściwych wyłącznie dla OpenClaw.
- Sesja nadrzędna przepisuje wynik procesu podrzędnego zwykłym głosem asystenta, gdy przydatna jest odpowiedź przeznaczona dla użytkownika.
sessions_send i dostarczanie A2A
sessions_send i dostarczanie A2A
Po uruchomieniu
sessions_send może wskazywać inną sesję. W przypadku
zwykłych sesji równorzędnych OpenClaw po wstrzyknięciu wiadomości używa
ścieżki kolejnej wiadomości agent-agent (A2A):- Poczekaj na odpowiedź sesji docelowej.
- Opcjonalnie pozwól sesji zgłaszającej żądanie i sesji docelowej wymienić ograniczoną liczbę kolejnych tur.
- Poproś sesję docelową o utworzenie komunikatu ogłoszenia.
- Dostarcz to ogłoszenie do widocznego kanału lub wątku.
tools.sessions.visibility.OpenClaw pomija odpowiedź uzupełniającą A2A tylko wtedy, gdy żądający jest rodzicem
własnego, jednorazowego elementu podrzędnego ACP należącego do rodzica. W takim przypadku uruchomienie A2A
po ukończeniu zadania może wznowić rodzica z wynikiem elementu podrzędnego, przekazać
odpowiedź rodzica z powrotem do elementu podrzędnego i utworzyć pętlę echa
rodzic/element podrzędny. Wynik sessions_send zgłasza delivery.status="skipped" dla
tego przypadku własnego elementu podrzędnego, ponieważ za wynik odpowiada już
ścieżka ukończenia.Wznawianie istniejącej sesji
Wznawianie istniejącej sesji
Użyj Typowe zastosowania:
resumeSessionId, aby kontynuować poprzednią sesję ACP zamiast
rozpoczynać nową. Agent odtwarza historię konwersacji za pomocą
session/load, dzięki czemu podejmuje pracę z pełnym kontekstem wcześniejszych działań.- Przekazanie sesji Codex z laptopa na telefon — poleć agentowi kontynuować od miejsca, w którym przerwano.
- Kontynuowanie sesji programistycznej rozpoczętej interaktywnie w CLI, teraz bez interfejsu za pośrednictwem agenta.
- Wznowienie pracy przerwanej przez ponowne uruchomienie Gateway lub limit czasu bezczynności.
resumeSessionIdma zastosowanie tylko przyruntime: "acp"; domyślne środowisko uruchomieniowe podagenta ignoruje to pole przeznaczone wyłącznie dla ACP.streamToma zastosowanie tylko przyruntime: "acp"; domyślne środowisko uruchomieniowe podagenta ignoruje to pole przeznaczone wyłącznie dla ACP.resumeSessionIdjest lokalnym dla hosta identyfikatorem wznowienia ACP/harness, a nie kluczem sesji kanału OpenClaw; przed przekazaniem OpenClaw nadal sprawdza zasady uruchamiania ACP i zasady agenta docelowego, natomiast backend ACP lub harness odpowiada za autoryzację wczytania tego nadrzędnego identyfikatora.resumeSessionIdprzywraca nadrzędną historię konwersacji ACP;threadimodenadal działają normalnie dla tworzonej nowej sesji OpenClaw, dlategomode: "session"wciąż wymagathread: true.- Agent docelowy musi obsługiwać
session/load(Codex i Claude Code obsługują). - Jeśli identyfikator sesji nie zostanie znaleziony, uruchomienie kończy się czytelnym błędem — bez cichego przejścia do nowej sesji.
Test dymny po wdrożeniu
Test dymny po wdrożeniu
Po wdrożeniu Gateway przeprowadź rzeczywisty test kompleksowy zamiast polegać
na testach jednostkowych:
- Zweryfikuj wersję i commit wdrożonego Gateway na hoście docelowym.
- Otwórz tymczasową sesję pomostową ACPX z działającym agentem.
- Poproś tego agenta o wywołanie
sessions_spawnzruntime: "acp",agentId: "codex",mode: "run"i zadaniemReply with exactly LIVE-ACP-SPAWN-OK. - Zweryfikuj
accepted=yes, rzeczywistychildSessionKeyi brak błędu walidatora. - Usuń tymczasową sesję pomostową.
mode: "run" i pomiń streamTo: "parent" —
powiązany z wątkiem tryb mode: "session" oraz ścieżki przekazywania strumienia stanowią oddzielne, bardziej rozbudowane
testy integracyjne.Zgodność z piaskownicą
Sesje ACP działają obecnie w środowisku uruchomieniowym hosta, nie wewnątrz piaskownicy OpenClaw. Bieżące ograniczenia:- Jeśli sesja żądającego działa w piaskownicy, uruchamianie ACP jest blokowane zarówno dla
sessions_spawn({ runtime: "acp" }), jak i/acp spawn. sessions_spawnzruntime: "acp"nie obsługujesandbox: "require".
Rozpoznawanie celu sesji
Większość działań/acp przyjmuje opcjonalny cel sesji (session-key,
session-id lub session-label).
Kolejność rozpoznawania:
- Jawny argument celu (lub
--sessiondla/acp steer)- najpierw próbuje klucza
- następnie identyfikatora sesji w formacie UUID
- następnie etykiety
- Bieżące powiązanie wątku (jeśli ta konwersacja lub ten wątek jest powiązany z sesją ACP).
- Powrót do bieżącej sesji żądającego.
Unable to resolve session target: ...).
Elementy sterujące ACP
Elementy sterujące środowiskiem uruchomieniowym (
spawn, cancel, steer, close, status, set-mode,
set, cwd, permissions, timeout, model i reset-options) wymagają
tożsamości właściciela w kanałach zewnętrznych oraz operator.admin od wewnętrznych
klientów Gateway. Autoryzowani nadawcy niebędący właścicielami nadal mogą używać sessions,
doctor, install i help.
/acp status wyświetla obowiązujące opcje środowiska uruchomieniowego oraz identyfikatory sesji
na poziomie środowiska uruchomieniowego i backendu. Błędy nieobsługiwanych elementów sterujących są
wyraźnie zgłaszane, gdy backend nie ma danej możliwości. /acp sessions odczytuje magazyn
dla bieżącej powiązanej sesji lub sesji żądającego; tokeny celu (session-key,
session-id lub session-label) są rozpoznawane przez mechanizm wykrywania sesji Gateway,
w tym niestandardowe katalogi główne session.store dla poszczególnych agentów.
Mapowanie opcji środowiska uruchomieniowego
/acp udostępnia polecenia skrótowe i ogólny mechanizm ustawiania. Równoważne operacje:
Harness acpx, konfiguracja pluginu i uprawnienia
Informacje o konfiguracji harness acpx (aliasach Claude Code / Codex / Gemini CLI), mostach MCP plugin-tools i OpenClaw-tools oraz trybach uprawnień ACP znajdziesz w sekcji Agenci ACP — konfiguracja.Rozwiązywanie problemów
Command blocked by PreToolUse hook: Native hook relay unavailable dotyczy
natywnego przekaźnika punktów zaczepienia Codex, a nie ACP/acpx. W powiązanym
czacie Codex rozpocznij nową sesję za pomocą /new lub /reset; jeśli zadziała
to raz, a następnie błąd powróci przy kolejnym natywnym wywołaniu narzędzia,
uruchom ponownie serwer aplikacji Codex lub Gateway OpenClaw zamiast powtarzać
/new. Zobacz
Rozwiązywanie problemów z uprzężą Codex.