Diagnostics

Flagi diagnostyczne

Flagi diagnostyczne włączają dodatkowe rejestrowanie dla jednego podsystemu bez globalnego podnoszenia poziomu logging.level. Flaga nie ma żadnego efektu, jeśli podsystem jej nie sprawdza.

Jak to działa

  • Flagi są ciągami znaków niewrażliwymi na wielkość liter, pobieranymi z diagnostics.flags w konfiguracji oraz z nadpisania przez zmienną środowiskową OPENCLAW_DIAGNOSTICS; duplikaty są usuwane, a litery zamieniane na małe.
  • name.* pasuje do samego name oraz wszystkiego poniżej name. (na przykład telegram.* pasuje do telegram.http).
  • * lub all włącza każdą flagę.
  • Po zmianie diagnostics.flags w konfiguracji uruchom Gateway ponownie; konfiguracja ta nie jest przeładowywana na gorąco.

Znane flagi

Flaga Włącza
telegram.http Rejestrowanie błędów HTTP interfejsu Telegram Bot API
brave.http Rejestrowanie żądań, odpowiedzi i pamięci podręcznej Brave Search
profiler Profiler etapu odpowiedzi i profiler serwera aplikacji Codex (oba)
reply.profiler Tylko profiler etapu odpowiedzi
codex.profiler Tylko profiler serwera aplikacji Codex
timeline Ustrukturyzowany artefakt osi czasu JSONL (patrz poniżej)

Włączanie przez konfigurację

json
{  "diagnostics": {    "flags": ["telegram.http"]  }}

Wiele flag:

json
{  "diagnostics": {    "flags": ["telegram.http", "brave.http", "gateway.*"]  }}

Nadpisanie zmienną środowiskową (jednorazowe)

bash
OPENCLAW_DIAGNOSTICS=telegram.http,brave.http

Wartości są rozdzielane przecinkami lub białymi znakami. Wartości specjalne:

Wartość Efekt
0, false, off, none Wyłącza wszystkie flagi, nadpisując również konfigurację
1, true, all, * Włącza każdą flagę

OPENCLAW_DIAGNOSTICS=0 wyłącza dla danego procesu flagi pochodzące zarówno ze zmiennej środowiskowej, jak i z konfiguracji. Jest to przydatne do tymczasowego wyciszenia flagi profilera pozostawionej włączonej w konfiguracji bez edytowania pliku.

Flagi profilera

Flagi profilera sterują lekkimi przedziałami pomiaru czasu; gdy są wyłączone, nie powodują żadnego narzutu.

Włącz wszystkie przedziały kontrolowane przez profiler na czas jednego uruchomienia Gateway:

bash
OPENCLAW_DIAGNOSTICS=profiler openclaw gateway run

Włącz tylko przedziały profilera wysyłania odpowiedzi:

bash
OPENCLAW_DIAGNOSTICS=reply.profiler openclaw gateway run

Włącz tylko przedziały profilera uruchamiania, narzędzi i wątków serwera aplikacji Codex:

bash
OPENCLAW_DIAGNOSTICS=codex.profiler openclaw gateway run

profiler włącza zarówno profiler odpowiedzi, jak i profiler Codex; użyj nazw flag o węższym zakresie, aby włączyć tylko jeden z nich.

Możesz też ustawić je w konfiguracji:

json
{  "diagnostics": {    "flags": ["reply.profiler", "codex.profiler"]  }}

Po zmianie flag konfiguracji uruchom Gateway ponownie. Aby wyłączyć flagę profilera, usuń ją z diagnostics.flags i uruchom Gateway ponownie albo uruchom proces z OPENCLAW_DIAGNOSTICS=0, aby na czas tego uruchomienia nadpisać wszystkie flagi diagnostyczne.

Artefakty osi czasu

Flaga timeline (alias: diagnostics.timeline) zapisuje ustrukturyzowane zdarzenia pomiaru czasu uruchamiania i działania w formacie JSONL na potrzeby zewnętrznych zestawów testów kontroli jakości:

bash
OPENCLAW_DIAGNOSTICS=timeline \OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=/tmp/openclaw-timeline.jsonl \openclaw gateway run

Możesz też włączyć ją w konfiguracji:

json
{  "diagnostics": {    "flags": ["timeline"]  }}

Ścieżka wyjściowa zawsze pochodzi z OPENCLAW_DIAGNOSTICS_TIMELINE_PATH, nawet gdy sama flaga jest ustawiona w konfiguracji; nie istnieje klucz konfiguracji określający tę ścieżkę. Gdy timeline jest włączona wyłącznie w konfiguracji, brakuje najwcześniejszych przedziałów ładowania konfiguracji, ponieważ OpenClaw nie odczytał jej jeszcze w tym momencie; kolejne przedziały uruchamiania są rejestrowane normalnie.

OPENCLAW_DIAGNOSTICS=1, =all i =* również włączają oś czasu, ponieważ włączają każdą flagę. Użyj flagi timeline o węższym zakresie, jeśli potrzebujesz wyłącznie artefaktu JSONL, bez wszystkich pozostałych flag diagnostycznych.

Próbki opóźnienia pętli zdarzeń na osi czasu wymagają dodatkowego jawnego włączenia poza timeline: oprócz włączenia osi czasu ustaw OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 (lub on/true/yes).

Rekordy osi czasu korzystają z otoczki openclaw.diagnostics.v1 i mogą zawierać identyfikatory procesów, nazwy faz, nazwy przedziałów, czasy trwania, identyfikatory pluginów, liczby zależności, próbki opóźnienia pętli zdarzeń, nazwy operacji dostawcy, stan zakończenia procesu potomnego oraz nazwy i komunikaty błędów uruchamiania. Traktuj pliki osi czasu jako lokalne artefakty diagnostyczne; przejrzyj je przed udostępnieniem poza swoim urządzeniem.

Miejsce zapisywania dzienników

Flagi zapisują komunikaty w standardowym pliku dziennika diagnostycznego. Domyślnie:

Code
/tmp/openclaw/openclaw-YYYY-MM-DD.log

Jeśli ustawisz logging.file, zostanie użyta podana tam ścieżka. Dzienniki są w formacie JSONL (jeden obiekt JSON w każdym wierszu). Redagowanie nadal odbywa się zgodnie z ustawieniem logging.redactSensitive. Pełny opis rozpoznawania ścieżki dziennika, rotacji i modelu redagowania zawiera sekcja Rejestrowanie.

Wyodrębnianie dzienników

Wybierz najnowszy plik dziennika:

bash
ls -t /tmp/openclaw/openclaw-*.log | head -n 1

Odfiltruj diagnostykę HTTP Telegram:

bash
rg "telegram http error" /tmp/openclaw/openclaw-*.log

Odfiltruj diagnostykę HTTP Brave Search:

bash
rg "brave http" /tmp/openclaw/openclaw-*.log

Możesz też obserwować dziennik podczas odtwarzania problemu:

bash
tail -f /tmp/openclaw/openclaw-$(date +%F).log | rg "telegram http error"

W przypadku zdalnych instancji Gateway użyj zamiast tego openclaw logs --follow (patrz /cli/logs).

Uwagi

  • Jeśli logging.level ma poziom wyższy niż warn, komunikaty kontrolowane flagami mogą zostać pominięte. Domyślny poziom info jest odpowiedni.
  • brave.http rejestruje adresy URL i parametry zapytań żądań Brave Search, stan i czas odpowiedzi oraz zdarzenia trafienia, chybienia i zapisu w pamięci podręcznej. Nie rejestruje klucza API (przesyłanego w nagłówku żądania) ani treści odpowiedzi, ale zapytania wyszukiwania mogą zawierać dane wrażliwe.
  • Pozostawienie flag włączonych jest bezpieczne; wpływają one tylko na liczbę wpisów dziennika dotyczących określonego podsystemu.
  • Użyj sekcji /logging, aby zmienić miejsca docelowe dzienników, poziomy i redagowanie.

Powiązane

Was this useful?
On this page

On this page