Fundamentals
Prompt systemowy
OpenClaw buduje niestandardowy prompt systemowy dla każdego uruchomienia agenta. Prompt jest własnością OpenClaw i nie używa domyślnego promptu środowiska uruchomieniowego.
Prompt jest składany przez OpenClaw i wstrzykiwany do każdego uruchomienia agenta.
Składanie promptu ma trzy warstwy:
buildAgentSystemPromptrenderuje prompt z jawnych danych wejściowych. Powinien pozostać czystym rendererem i nie powinien bezpośrednio odczytywać konfiguracji globalnej.resolveAgentSystemPromptConfigrozwiązuje ustawienia promptu oparte na konfiguracji, takie jak wyświetlanie właściciela, wskazówki TTS, aliasy modeli, tryb cytowania pamięci i tryb delegowania do podagentów dla konkretnego agenta.- Adaptery środowiska uruchomieniowego (osadzone, CLI, podglądy poleceń/eksportu, Compaction) zbierają bieżące fakty, takie jak narzędzia, stan piaskownicy, możliwości kanału, pliki kontekstu i wkłady providerów do promptu, a następnie wywołują skonfigurowaną fasadę promptu.
Dzięki temu eksportowane/debugowe powierzchnie promptu pozostają zgodne z uruchomieniami na żywo bez przekształcania każdego szczegółu specyficznego dla środowiska uruchomieniowego w jeden monolityczny builder.
Pluginy providerów mogą dostarczać świadome cache wskazówki promptu bez zastępowania całego promptu należącego do OpenClaw. Środowisko uruchomieniowe providera może:
- zastąpić niewielki zestaw nazwanych sekcji rdzenia (
interaction_style,tool_call_style,execution_bias) - wstrzyknąć stabilny prefiks powyżej granicy cache promptu
- wstrzyknąć dynamiczny sufiks poniżej granicy cache promptu
Używaj wkładów należących do providera do dostrajania specyficznego dla rodziny modeli. Zachowaj starszą
mutację promptu before_prompt_build dla zgodności albo naprawdę globalnych zmian promptu,
a nie dla normalnego zachowania providera.
Nakładka rodziny OpenAI GPT-5 utrzymuje regułę wykonania rdzenia jako małą i dodaje wskazówki specyficzne dla modelu dotyczące utrwalania persony, zwięzłych wyników, dyscypliny narzędzi, równoległego wyszukiwania, pokrycia rezultatów, weryfikacji, brakującego kontekstu i higieny narzędzi terminalowych.
Struktura
Prompt jest celowo zwarty i używa stałych sekcji:
- Narzędzia: przypomnienie o źródle prawdy dla narzędzi strukturalnych oraz wskazówki użycia narzędzi w środowisku uruchomieniowym.
- Nastawienie wykonawcze: zwarte wskazówki doprowadzania pracy do końca: działaj w ramach tury przy wykonalnych prośbach, kontynuuj do ukończenia lub zablokowania, odzyskuj się po słabych wynikach narzędzi, sprawdzaj zmienny stan na żywo i weryfikuj przed finalizacją.
- Bezpieczeństwo: krótkie przypomnienie barier ochronnych, aby unikać zachowań dążących do zdobycia władzy lub omijania nadzoru.
- Skills (gdy dostępne): informuje model, jak ładować instrukcje Skills na żądanie.
- Sterowanie OpenClaw: informuje model, aby preferował narzędzie
gatewaydo pracy z konfiguracją/restartem i unikał wymyślania poleceń CLI. - Samoaktualizacja OpenClaw: jak bezpiecznie sprawdzać konfigurację za pomocą
config.schema.lookup, łatać konfigurację za pomocąconfig.patch, zastępować pełną konfigurację za pomocąconfig.applyi uruchamiaćupdate.runtylko na wyraźną prośbę użytkownika. Narzędziegatewaywidoczne dla agenta odmawia też przepisywaniatools.exec.ask/tools.exec.security, w tym starszych aliasówtools.bash.*, które normalizują się do tych chronionych ścieżek exec. - Obszar roboczy: katalog roboczy (
agents.defaults.workspace). - Dokumentacja: lokalna ścieżka do dokumentacji/źródła OpenClaw oraz kiedy ją czytać.
- Pliki obszaru roboczego (wstrzyknięte): wskazuje, że pliki rozruchowe są dołączone poniżej.
- Piaskownica (gdy włączona): wskazuje środowisko uruchomieniowe w piaskownicy, ścieżki piaskownicy oraz to, czy dostępny jest podwyższony exec.
- Bieżąca data i godzina: tylko strefa czasowa (stabilna dla cache; zegar na żywo pochodzi z
session_status). - Dyrektywy wyjścia asystenta: zwarta składnia załączników, notatek głosowych i znaczników odpowiedzi.
- Heartbeats: prompt Heartbeat i zachowanie potwierdzeń, gdy Heartbeats są włączone dla domyślnego agenta.
- Środowisko uruchomieniowe: host, OS, node, model, root repozytorium (gdy wykryty), poziom myślenia (jedna linia).
- Rozumowanie: bieżący poziom widoczności + wskazówka przełącznika /reasoning.
OpenClaw utrzymuje dużą stabilną zawartość, w tym Kontekst projektu, powyżej wewnętrznej granicy cache promptu. Zmienne sekcje kanału/sesji, takie jak wskazówki osadzenia Control UI, Komunikacja, Głos, Kontekst czatu grupowego, Reakcje, Heartbeats i Środowisko uruchomieniowe, są dołączane poniżej tej granicy, aby lokalne backendy z cache prefiksu mogły ponownie używać stabilnego prefiksu obszaru roboczego między turami kanału. Opisy narzędzi również powinny unikać osadzania bieżących nazw kanałów, gdy zaakceptowany schemat już przenosi ten szczegół środowiska uruchomieniowego.
Sekcja Narzędzia zawiera też wskazówki środowiska uruchomieniowego dotyczące długotrwałej pracy:
- używaj Cron do przyszłych działań następczych (
check back later, przypomnienia, praca cykliczna) zamiast pętli uśpieniaexec, sztuczek opóźnianiayieldMslub powtarzanego odpytywaniaprocess - używaj
exec/processtylko dla poleceń, które startują teraz i działają dalej w tle - gdy automatyczne wybudzanie po ukończeniu jest włączone, uruchom polecenie raz i polegaj na ścieżce wybudzania opartej na push, gdy wyemituje wynik albo zakończy się niepowodzeniem
- używaj
processdo logów, statusu, wejścia lub interwencji, gdy musisz sprawdzić działające polecenie - jeśli zadanie jest większe, preferuj
sessions_spawn; ukończenie podagenta jest oparte na push i automatycznie ogłasza wynik z powrotem zgłaszającemu - nie odpytuj
subagents list/sessions_listw pętli tylko po to, aby czekać na ukończenie
agents.defaults.subagents.delegationMode może wzmocnić te wskazówki. Domyślny
tryb suggest zachowuje bazową sugestię. prefer dodaje dedykowaną
sekcję Delegowanie do podagentów, która mówi głównemu agentowi, aby działał jako responsywny
koordynator i kierował wszystko bardziej złożone niż bezpośrednia odpowiedź przez
sessions_spawn. To dotyczy tylko promptu; polityka narzędzi nadal kontroluje, czy
sessions_spawn jest dostępne.
Gdy eksperymentalne narzędzie update_plan jest włączone, Narzędzia mówią też
modelowi, aby używał go tylko do nietrywialnej pracy wieloetapowej, utrzymywał dokładnie jeden
krok in_progress i unikał powtarzania całego planu po każdej aktualizacji.
Bariery ochronne bezpieczeństwa w prompcie systemowym są doradcze. Kierują zachowaniem modelu, ale nie egzekwują polityki. Do twardego egzekwowania używaj polityki narzędzi, zatwierdzeń exec, piaskownicy i allowlist kanałów; operatorzy mogą je z założenia wyłączyć.
Na kanałach z natywnymi kartami/przyciskami zatwierdzania prompt środowiska uruchomieniowego mówi teraz
agentowi, aby najpierw polegał na tym natywnym interfejsie zatwierdzania. Powinien dołączyć ręczne
polecenie /approve tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia na czacie są niedostępne albo
ręczne zatwierdzenie jest jedyną ścieżką.
Tryby promptu
OpenClaw może renderować mniejsze prompty systemowe dla podagentów. Środowisko uruchomieniowe ustawia
promptMode dla każdego uruchomienia (nie jest to konfiguracja widoczna dla użytkownika):
full(domyślnie): zawiera wszystkie sekcje powyżej.minimal: używany dla podagentów; pomija Przywołanie pamięci, Samoaktualizacja OpenClaw, Aliasy modeli, Tożsamość użytkownika, Dyrektywy wyjścia asystenta, Komunikacja, Ciche odpowiedzi i Heartbeats. Narzędzia, Bezpieczeństwo, Skills, gdy dostarczone, Obszar roboczy, Piaskownica, Bieżąca data i godzina (gdy znana), Środowisko uruchomieniowe i wstrzyknięty kontekst pozostają dostępne.none: zwraca tylko bazową linię tożsamości.
Gdy promptMode=minimal, dodatkowe wstrzyknięte prompty są oznaczane jako Kontekst podagenta
zamiast Kontekst czatu grupowego.
Dla uruchomień automatycznych odpowiedzi kanału OpenClaw pomija ogólną sekcję Ciche odpowiedzi,
gdy bezpośredni, grupowy albo tylko narzędziowy kontekst wiadomości jest właścicielem kontraktu widocznej odpowiedzi.
Tylko stary automatyczny tryb grupowy/kanałowy powinien pokazywać NO_REPLY; czaty bezpośrednie
i odpowiedzi wyłącznie przez narzędzie wiadomości nie otrzymują wskazówek dotyczących tokenu ciszy.
Snapshoty promptu
OpenClaw utrzymuje zatwierdzone snapshoty promptu dla ścieżki pozytywnej środowiska uruchomieniowego Codex pod
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Renderują one
wybrane parametry wątku/tury serwera aplikacji oraz zrekonstruowany stos warstw promptu przypisany do modelu
dla tur bezpośrednich Telegram, grupowych Discord i Heartbeat. Ten stos
zawiera przypięty fixture promptu modelu Codex gpt-5.5 wygenerowany z kształtu
katalogu/cache modeli Codex, tekst deweloperski uprawnień ścieżki pozytywnej Codex,
instrukcje deweloperskie OpenClaw, instrukcje trybu współpracy o zakresie tury,
gdy OpenClaw je dostarcza, wejście tury użytkownika oraz odniesienia do dynamicznych specyfikacji narzędzi.
Odśwież przypięty fixture promptu modelu Codex za pomocą
pnpm prompt:snapshots:sync-codex-model. Domyślnie skrypt szuka
cache środowiska uruchomieniowego Codex w $CODEX_HOME/models_cache.json, następnie
~/.codex/models_cache.json, a dopiero potem wraca do konwencji checkoutu Codex
maintainera pod ~/code/codex/codex-rs/models-manager/models.json. Jeśli
żadne z tych źródeł nie istnieje, polecenie kończy się bez zmiany zatwierdzonego
fixture. Przekaż --catalog <path>, aby odświeżyć z konkretnego pliku models_cache.json
albo models.json.
Te snapshoty nadal nie są bajt-w-bajt surowym przechwyceniem żądania OpenAI. Codex
może dodać kontekst obszaru roboczego należący do środowiska uruchomieniowego, taki jak AGENTS.md, kontekst
środowiska, pamięci, instrukcje aplikacji/pluginu i wbudowane domyślne
instrukcje trybu współpracy wewnątrz środowiska uruchomieniowego Codex po tym, jak OpenClaw wyśle
parametry wątku i tury.
Wygeneruj je ponownie za pomocą pnpm prompt:snapshots:gen i zweryfikuj dryf za pomocą
pnpm prompt:snapshots:check. CI uruchamia sprawdzenie dryfu w dodatkowym
shardzie granicznym, aby zmiany promptu i aktualizacje snapshotów pozostały dołączone do tego samego
PR.
Wstrzykiwanie bootstrapu obszaru roboczego
Pliki bootstrapu są rozwiązywane z aktywnego obszaru roboczego, a następnie kierowane do powierzchni promptu odpowiadającej ich czasowi życia:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(tylko w zupełnie nowych obszarach roboczych)MEMORY.md, gdy obecny
W natywnym harnessie Codex OpenClaw unika powtarzania stabilnych plików obszaru roboczego
w każdej turze użytkownika. Codex ładuje AGENTS.md przez własne wykrywanie dokumentów projektu.
SOUL.md, IDENTITY.md, TOOLS.md i USER.md są przekazywane jako
instrukcje deweloperskie Codex. Zwarta lista Skills OpenClaw jest również przekazywana
jako instrukcje deweloperskie współpracy o zakresie tury. Zawartość HEARTBEAT.md
nie jest wstrzykiwana; tury Heartbeat otrzymują notatkę trybu współpracy wskazującą plik,
gdy istnieje i nie jest pusty. Zawartość MEMORY.md ze skonfigurowanego obszaru roboczego agenta
nie jest wklejana do każdej natywnej tury Codex; gdy narzędzia pamięci są
dostępne dla tego obszaru roboczego, tury Codex otrzymują małą notatkę pamięci obszaru roboczego w
instrukcjach deweloperskich współpracy o zakresie tury i powinny używać memory_search
albo memory_get, gdy trwała pamięć jest istotna. Jeśli narzędzia są wyłączone, wyszukiwanie pamięci
jest niedostępne albo aktywny obszar roboczy różni się od obszaru roboczego pamięci agenta,
MEMORY.md wraca do normalnej ograniczonej ścieżki kontekstu tury. Aktywna
zawartość BOOTSTRAP.md na razie zachowuje normalną rolę kontekstu tury.
W harnessach innych niż Codex pliki bootstrapu nadal są składane do
promptu OpenClaw zgodnie z istniejącymi bramkami. HEARTBEAT.md jest pomijany w
normalnych uruchomieniach, gdy Heartbeats są wyłączone dla domyślnego agenta albo
agents.defaults.heartbeat.includeSystemPromptSection ma wartość false. Utrzymuj wstrzyknięte
pliki jako zwięzłe, szczególnie MEMORY.md poza Codex. MEMORY.md ma pozostać
kuratorowanym długoterminowym podsumowaniem; szczegółowe codzienne notatki należą do memory/*.md, gdzie
memory_search i memory_get mogą je pobierać na żądanie. Zbyt duże
pliki MEMORY.md poza Codex zwiększają użycie promptu i mogą być częściowo wstrzykiwane
z powodu poniższych limitów plików bootstrapu.
Duże pliki są obcinane z użyciem znacznika. Maksymalny rozmiar na plik jest kontrolowany przez
agents.defaults.bootstrapMaxChars (domyślnie: 20000). Łączna wstrzyknięta zawartość startowa
we wszystkich plikach jest ograniczona przez agents.defaults.bootstrapTotalMaxChars
(domyślnie: 60000). Brakujące pliki wstrzykują krótki znacznik brakującego pliku. Gdy wystąpi obcięcie,
OpenClaw może wstrzyknąć zwięzłe powiadomienie ostrzegawcze w prompcie systemowym; kontroluj to za pomocą
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
domyślnie: always). Szczegółowe liczby surowe/wstrzyknięte pozostają w diagnostyce, takiej jak
/context, /status, doctor i logi.
W przypadku plików pamięci obcięcie nie oznacza utraty danych: plik pozostaje nienaruszony na dysku.
W natywnym Codex MEMORY.md jest odczytywany na żądanie przez narzędzia pamięci, gdy
są dostępne, z ograniczonym zastępczym promptem, gdy narzędzia nie mogą działać. W innych
uprzężach model widzi tylko skróconą wstrzykniętą kopię, dopóki nie odczyta lub
nie przeszuka pamięci bezpośrednio. Jeśli MEMORY.md jest tam wielokrotnie obcinany, streść
go do krótszego trwałego podsumowania i przenieś szczegółową historię do memory/*.md,
albo celowo zwiększ limity startowe.
Sesje podagentów wstrzykują tylko AGENTS.md i TOOLS.md (inne pliki startowe
są odfiltrowywane, aby utrzymać mały kontekst podagenta).
Wewnętrzne haki mogą przechwycić ten krok przez agent:bootstrap, aby zmodyfikować lub zastąpić
wstrzyknięte pliki startowe (na przykład zamienić SOUL.md na alternatywną personę).
Jeśli chcesz, aby agent brzmiał mniej generycznie, zacznij od Przewodnika po osobowości SOUL.md.
Aby sprawdzić, ile wnosi każdy wstrzyknięty plik (surowe vs wstrzyknięte, obcięcie oraz narzut schematu narzędzi), użyj /context list lub /context detail. Zobacz Kontekst.
Obsługa czasu
Prompt systemowy zawiera dedykowaną sekcję Bieżąca data i godzina, gdy znana jest strefa czasowa użytkownika. Aby zachować stabilność pamięci podręcznej promptu, zawiera ona teraz tylko strefę czasową (bez dynamicznego zegara ani formatu czasu).
Użyj session_status, gdy agent potrzebuje bieżącego czasu; karta statusu
zawiera wiersz ze znacznikiem czasu. To samo narzędzie może opcjonalnie ustawić zastąpienie modelu dla sesji
(model=default je czyści).
Skonfiguruj za pomocą:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Pełne szczegóły zachowania znajdziesz w Data i czas.
Skills
Gdy istnieją kwalifikujące się skills, OpenClaw wstrzykuje zwartą listę dostępnych skills
(formatSkillsForPrompt), która zawiera ścieżkę pliku i pochodzący z treści
znacznik <version> dla każdej skills. Prompt instruuje model, aby użył read
do załadowania SKILL.md z podanej lokalizacji (workspace, zarządzanej lub wbudowanej)
oraz aby ponownie odczytał skill, gdy jego <version> różni się od poprzedniej tury. Jeśli żadne
skills się nie kwalifikują, sekcja Skills jest pomijana.
Natywne tury Codex otrzymują tę listę jako ograniczone do tury instrukcje deweloperskie dotyczące współpracy zamiast danych wejściowych użytkownika w każdej turze, z wyjątkiem lekkich tur cron, które zachowują dokładny zaplanowany prompt. Inne uprzęże zachowują zwykłą sekcję promptu.
Lokalizacja może wskazywać zagnieżdżony skill, na przykład
skills/personal/foo/SKILL.md. Zagnieżdżanie ma tylko charakter organizacyjny; prompt nadal
używa płaskiej nazwy skill z frontmatter SKILL.md.
Kwalifikowalność obejmuje bramki metadanych skill, sprawdzenia środowiska/konfiguracji uruchomieniowej
oraz efektywną listę dozwolonych skills agenta, gdy skonfigurowano agents.defaults.skills lub
agents.list[].skills.
Skills dołączone do Plugin kwalifikują się tylko wtedy, gdy ich właścicielski plugin jest włączony. Pozwala to pluginom narzędzi udostępniać głębsze przewodniki operacyjne bez osadzania całych tych wskazówek bezpośrednio w każdym opisie narzędzia.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>Dzięki temu bazowy prompt pozostaje mały, a jednocześnie nadal umożliwia ukierunkowane użycie skills.
Budżet listy skills należy do podsystemu skills:
- Domyślna wartość globalna:
skills.limits.maxSkillsPromptChars - Zastąpienie dla agenta:
agents.list[].skillsLimits.maxSkillsPromptChars
Ogólne ograniczone fragmenty uruchomieniowe używają innej powierzchni:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Ten podział utrzymuje rozmiar skills oddzielnie od rozmiaru odczytu/wstrzykiwania uruchomieniowego, takiego
jak memory_get, wyniki narzędzi na żywo i odświeżenia AGENTS.md po Compaction.
Dokumentacja
Prompt systemowy zawiera sekcję Dokumentacja. Gdy dostępne są lokalne dokumenty, wskazuje ona
lokalny katalog dokumentacji OpenClaw (docs/ w checkout Git albo dokumentację dołączoną do pakietu npm).
Jeśli lokalna dokumentacja jest niedostępna, używa awaryjnie
https://docs.openclaw.ai.
Ta sama sekcja zawiera również lokalizację źródeł OpenClaw. Checkouty Git udostępniają lokalny
katalog główny źródeł, aby agent mógł bezpośrednio sprawdzać kod. Instalacje pakietowe zawierają adres URL
źródeł w GitHub i każą agentowi przeglądać tam źródła zawsze, gdy dokumentacja jest niekompletna lub
nieaktualna. Prompt odnotowuje też publiczne lustro dokumentacji, społecznościowy Discord i ClawHub
(https://clawhub.ai) do odkrywania skills. Przedstawia dokumentację jako
autorytet dla samowiedzy OpenClaw, zanim model zrozumie, jak działa OpenClaw,
w tym pamięć/notatki dzienne, sesje, narzędzia, Gateway, konfigurację, polecenia lub kontekst
projektu. Prompt każe modelowi najpierw używać lokalnej dokumentacji (lub lustra dokumentacji, gdy lokalna dokumentacja
jest niedostępna) oraz traktować AGENTS.md, kontekst projektu, notatki workspace/profilu/pamięci
i memory_search jako kontekst instrukcji lub pamięć użytkownika, a nie wiedzę o projekcie
lub implementacji OpenClaw. Jeśli dokumentacja milczy lub jest nieaktualna, model powinien to powiedzieć
i sprawdzić źródła. Prompt każe także modelowi samodzielnie uruchomić openclaw status, gdy
to możliwe, pytając użytkownika tylko wtedy, gdy nie ma dostępu.
W odniesieniu konkretnie do konfiguracji kieruje agentów do akcji narzędzia gateway
config.schema.lookup po dokładną dokumentację i ograniczenia na poziomie pól, a następnie do
docs/gateway/configuration.md i docs/gateway/configuration-reference.md
po szersze wskazówki.