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 pi-coding-agent.
Prompt jest składany przez OpenClaw i wstrzykiwany do każdego uruchomienia agenta.
Pluginy dostawców mogą dostarczać świadome cache wskazówki promptu bez zastępowania pełnego promptu będącego własnością OpenClaw. Środowisko uruchomieniowe dostawcy może:
- zastąpić niewielki zestaw nazwanych sekcji rdzenia (
interaction_style,tool_call_style,execution_bias) - wstrzyknąć stabilny prefiks nad granicą cache promptu
- wstrzyknąć dynamiczny sufiks pod granicą cache promptu
Używaj wkładów należących do dostawcy do strojenia specyficznego dla rodziny modeli. Zachowaj starszą
mutację promptu before_prompt_build na potrzeby zgodności albo naprawdę globalnych
zmian promptu, a nie normalnego zachowania dostawcy.
Nakładka rodziny OpenAI GPT-5 utrzymuje podstawową regułę wykonania jako małą i dodaje wskazówki specyficzne dla modelu dotyczące utrwalania persony, zwięzłego wyniku, dyscypliny narzędzi, równoległego wyszukiwania, pokrycia rezultatów, weryfikacji, brakującego kontekstu oraz higieny narzędzia terminalowego.
Struktura
Prompt jest celowo zwarty i używa stałych sekcji:
- Narzędzia: przypomnienie, że ustrukturyzowane narzędzia są źródłem prawdy, plus wskazówki użycia narzędzi w czasie działania.
- Preferencja wykonania: zwięzłe wskazówki doprowadzania pracy do końca: działaj w ramach tury na wykonalne prośby, kontynuuj do ukończenia lub zablokowania, odzyskuj po słabych wynikach narzędzi, sprawdzaj zmienny stan na żywo i weryfikuj przed finalizacją.
- Bezpieczeństwo: krótkie przypomnienie o barierach ochronnych, aby unikać zachowań dążących do władzy lub obchodzenia nadzoru.
- Skills (gdy dostępne): informuje model, jak ładować instrukcje Skills na żądanie.
- 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.applyoraz uruchamiaćupdate.runtylko na wyraźną prośbę użytkownika. Narzędziegatewaydostępne tylko dla właściciela również odmawia przepisywaniatools.exec.ask/tools.exec.security, w tym starszych aliasówtools.bash.*, które normalizują się do tych chronionych ścieżek exec. - Przestrzeń robocza: katalog roboczy (
agents.defaults.workspace). - Dokumentacja: lokalna ścieżka do dokumentacji OpenClaw (repozytorium lub pakiet npm) i kiedy ją czytać.
- Pliki przestrzeni roboczej (wstrzyknięte): wskazuje, że pliki bootstrap są dołączone poniżej.
- Sandbox (gdy włączony): wskazuje środowisko uruchomieniowe w sandboxie, ścieżki sandboxa i czy dostępny jest podwyższony exec.
- Bieżąca data i godzina: tylko strefa czasowa (stabilna dla cache; żywy zegar pochodzi z
session_status). - Tagi odpowiedzi: opcjonalna składnia tagów odpowiedzi dla obsługiwanych dostawców.
- Heartbeats: prompt Heartbeat i zachowanie potwierdzenia, gdy Heartbeats są włączone dla domyślnego agenta.
- Środowisko uruchomieniowe: host, system operacyjny, node, model, katalog główny repozytorium (gdy wykryty), poziom myślenia (jeden wiersz).
- Rozumowanie: bieżący poziom widoczności + podpowiedź przełącznika /reasoning.
OpenClaw utrzymuje dużą stabilną zawartość, w tym Kontekst projektu, nad wewnętrzną granicą cache promptu. Zmienne sekcje kanału/sesji, takie jak wskazówki osadzenia interfejsu Control UI, Wiadomości, Głos, Kontekst czatu grupowego, Reakcje, Heartbeats i Środowisko uruchomieniowe, są dołączane pod tą granicą, aby lokalne backendy z cache prefiksów mogły ponownie wykorzystywać stabilny prefiks przestrzeni roboczej między turami kanału. Opisy narzędzi również powinny unikać osadzania bieżących nazw kanałów, gdy akceptowany schemat już przenosi ten szczegół czasu działania.
Sekcja Narzędzia zawiera też wskazówki środowiska uruchomieniowego dla 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óźniającychyieldMsalbo powtarzanego odpytywaniaprocess - używaj
exec/processtylko do poleceń, które startują teraz i nadal działają w tle - gdy automatyczne wybudzanie po ukończeniu jest włączone, uruchom polecenie raz i polegaj na ścieżce wybudzania opartej na wypychaniu, gdy emituje wynik lub koń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 pracy subagenta jest oparte na wypychaniu i automatycznie ogłasza wynik z powrotem do proszącego - nie odpytuj
subagents list/sessions_listw pętli tylko po to, aby czekać na ukończenie
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, sandboxingu i list dozwolonych 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 uwzględnić ręczne
polecenie /approve tylko wtedy, gdy wynik narzędzia mówi, że zatwierdzenia czatu są niedostępne albo
ręczne zatwierdzenie jest jedyną ścieżką.
Tryby promptu
OpenClaw może renderować mniejsze prompty systemowe dla subagentów. Środowisko uruchomieniowe ustawia
promptMode dla każdego uruchomienia (nie jest to konfiguracja widoczna dla użytkownika):
full(domyślnie): obejmuje wszystkie powyższe sekcje.minimal: używany dla subagentów; pomija Skills, Przywołanie pamięci, Samoaktualizację OpenClaw, Aliasy modeli, Tożsamość użytkownika, Tagi odpowiedzi, Wiadomości, Ciche odpowiedzi i Heartbeats. Narzędzia, Bezpieczeństwo, przestrzeń robocza, Sandbox, bieżąca data i godzina (gdy znane), środowisko uruchomieniowe oraz wstrzyknięty kontekst pozostają dostępne.none: zwraca tylko bazowy wiersz tożsamości.
Gdy promptMode=minimal, dodatkowe wstrzyknięte prompty są oznaczane jako Kontekst subagenta
zamiast Kontekst czatu grupowego.
Dla uruchomień automatycznej odpowiedzi kanału OpenClaw może pominąć ogólną sekcję Ciche odpowiedzi,
gdy bezpośredni/grupowy kontekst czatu już obejmuje rozstrzygnięte
zachowanie NO_REPLY specyficzne dla konwersacji. Pozwala to uniknąć powtarzania mechaniki tokenów
zarówno w globalnym prompcie systemowym, jak i w kontekście kanału.
Migawki promptu
OpenClaw przechowuje zatwierdzone migawki promptu dla ścieżki powodzenia ś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 powiązany z modelem
dla tur bezpośrednich Telegram, grupowych Discord i Heartbeat. Ten stos
obejmuje przypiętą fixturę promptu modelu Codex gpt-5.5 wygenerowaną z kształtu
katalogu/cache modeli Codex, tekst deweloperski uprawnień ścieżki powodzenia Codex,
instrukcje deweloperskie OpenClaw, instrukcje trybu współpracy o zakresie tury,
gdy OpenClaw je dostarcza, wejście tury użytkownika oraz odwołania do dynamicznych
specyfikacji narzędzi.
Odśwież przypiętą fixturę 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, potem
~/.codex/models_cache.json, a dopiero potem wraca do konwencji checkoutu Codex
maintainera w ~/code/codex/codex-rs/models-manager/models.json. Jeśli
żadne z tych źródeł nie istnieje, polecenie kończy działanie bez zmieniania zatwierdzonej
fixtury. Przekaż --catalog <path>, aby odświeżyć z konkretnego pliku models_cache.json
lub models.json.
Te migawki nadal nie są surowym przechwyceniem żądania OpenAI bajt po bajcie. Codex
może dodać kontekst przestrzeni roboczej należący do środowiska uruchomieniowego, taki jak AGENTS.md, kontekst
środowiska, pamięci, instrukcje aplikacji/pluginów oraz wbudowane instrukcje trybu współpracy
Default 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 kontrolę dryfu w dodatkowym
shardzie granicznym, aby zmiany promptu i aktualizacje migawek pozostawały dołączone do tego samego
PR.
Wstrzykiwanie bootstrap przestrzeni roboczej
Pliki bootstrap są przycinane i dołączane w sekcji Kontekst projektu, aby model widział kontekst tożsamości i profilu bez potrzeby jawnego odczytu:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(tylko w zupełnie nowych przestrzeniach roboczych)MEMORY.md, gdy obecny
Wszystkie te pliki są wstrzykiwane do okna kontekstu przy każdej turze, chyba że
zastosowanie ma bramka specyficzna dla pliku. 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 wstrzykiwane
pliki zwięzłe — zwłaszcza MEMORY.md, który może rosnąć z czasem i prowadzić do
nieoczekiwanie wysokiego użycia kontekstu oraz częstszej Compaction.
Gdy sesja działa na natywnym harnessie Codex, Codex ładuje AGENTS.md
przez własne wykrywanie dokumentacji projektu. OpenClaw nadal rozwiązuje pozostałe
pliki bootstrap i przekazuje je jako instrukcje konfiguracji Codex, więc SOUL.md,
TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md oraz
MEMORY.md zachowują tę samą rolę kontekstu przestrzeni roboczej bez duplikowania
AGENTS.md.
Duże pliki są obcinane z markerem. Maksymalny rozmiar na plik jest kontrolowany przez
agents.defaults.bootstrapMaxChars (domyślnie: 12000). Całkowita wstrzyknięta zawartość bootstrap
we wszystkich plikach jest ograniczona przez agents.defaults.bootstrapTotalMaxChars
(domyślnie: 60000). Brakujące pliki wstrzykują krótki marker brakującego pliku. Gdy występuje obcięcie,
OpenClaw może wstrzyknąć zwięzłe ostrzeżenie w prompcie systemowym; kontroluj to za pomocą
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
domyślnie: once). Szczegółowe liczniki surowe/wstrzyknięte pozostają w diagnostyce, takiej jak
/context, /status, doctor i logi.
Sesje subagentów wstrzykują tylko AGENTS.md i TOOLS.md (inne pliki bootstrap
są odfiltrowywane, aby utrzymać mały kontekst subagenta).
Wewnętrzne hooki mogą przechwycić ten krok za pomocą agent:bootstrap, aby zmienić lub zastąpić
wstrzyknięte pliki bootstrap (na przykład zamienić SOUL.md na alternatywną personę).
Jeśli chcesz, aby agent brzmiał mniej generycznie, zacznij od Przewodnika osobowości SOUL.md.
Aby sprawdzić, ile wnosi każdy wstrzyknięty plik (surowe vs wstrzyknięte, obcięcie, plus 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 strefa czasowa użytkownika jest znana. Aby utrzymać prompt stabilny dla cache, zawiera 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ć nadpisanie 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 godzina.
Skills
Gdy istnieją kwalifikujące się Skills, OpenClaw wstrzykuje zwięzłą listę dostępnych Skills
(formatSkillsForPrompt), która obejmuje ścieżkę pliku dla każdej Skills. Prompt
instruuje model, aby użył read do załadowania SKILL.md z podanej
lokalizacji (przestrzeń robocza, zarządzana lub wbudowana). Jeśli żadne Skills nie kwalifikują się, sekcja
Skills jest pomijana.
Kwalifikowalność obejmuje bramki metadanych Skills, sprawdzenia środowiska uruchomieniowego/konfiguracji
oraz efektywną listę dozwolonych Skills agenta, gdy skonfigurowano agents.defaults.skills lub
agents.list[].skills.
Skills wbudowane w 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 wszystkich tych wskazówek bezpośrednio w każdym opisie narzędzia.
<available_skills>
<skill>
<name>...</name>
<description>...</description>
<location>...</location>
</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ślne globalne:
skills.limits.maxSkillsPromptChars - Nadpisanie dla danego agenta:
agents.list[].skillsLimits.maxSkillsPromptChars
Ogólne ograniczone wycinki środowiska wykonawczego używają innego interfejsu:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Ten podział utrzymuje rozmiar Skills oddzielnie od rozmiaru odczytu/wstrzykiwania w środowisku wykonawczym, takiego
jak memory_get, wyniki narzędzi na żywo oraz odświeżenia AGENTS.md po Compaction.
Dokumentacja
Prompt systemowy zawiera sekcję Dokumentacja. Gdy lokalna dokumentacja jest dostępna, wskazuje
lokalny katalog dokumentacji OpenClaw (docs/ w kopii Git lub dokumentację dołączoną do pakietu npm).
Jeśli lokalna dokumentacja jest niedostępna, używa awaryjnie
https://docs.openclaw.ai.
Ta sama sekcja zawiera też lokalizację źródeł OpenClaw. Kopie Git udostępniają lokalny
katalog główny źródeł, aby agent mógł bezpośrednio sprawdzać kod. Instalacje z pakietu zawierają adres URL
źródeł w GitHub i instruują agenta, aby sprawdzał tam źródła, gdy dokumentacja jest niekompletna lub
nieaktualna. Prompt wspomina też publiczne lustro dokumentacji, społecznościowy Discord oraz ClawHub
(https://clawhub.ai) do odkrywania Skills. Instruuje model, aby
najpierw korzystał z dokumentacji w sprawach zachowania OpenClaw, poleceń, konfiguracji lub architektury oraz aby
uruchamiał openclaw status samodzielnie, gdy to możliwe (pytając użytkownika tylko wtedy, gdy nie ma dostępu).
W przypadku konfiguracji w szczególności kieruje agentów do akcji narzędzia gateway
config.schema.lookup, aby uzyskać dokładną dokumentację pól i ograniczeń, a następnie do
docs/gateway/configuration.md i docs/gateway/configuration-reference.md
po szersze wskazówki.