SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-28

Claude Code: jak działają style wyjściowe

Wyjaśnienie działania parametrów outputStyle w Claude Code. Dowiedz się, jak modyfikować systemowy prompt, zarządzać buforem sesji i dlaczego zmiana stylu wymaga restartu.

Czym jest styl wyjściowy w Claude Code

Styl wyjściowy w Claude Code to blok instrukcji, który Claude Code dołącza do swojego systemowego promptu. Zmienia on sposób, w jaki Claude odpowiada użytkownikowi: przyjmowaną rolę oraz formę generowanych komunikatów. Styl nie przekazuje Claude żadnej wiedzy o bazie kodu i nie nadaje uprawnień do wykonywania jakichkolwiek operacji.

Claude Code zawiera pięć wbudowanych stylów. Wybór stylu jest zapisywany w jednym kluczu ustawień, outputStyle, który jest odczytywany jednorazowo w momencie rozpoczęcia sesji. Ten fakt wyjaśnia większość nieporozumień związanych z tą funkcją, ponieważ styl zmieniony w trakcie trwania sesji zostaje zapisany, ale zignorowany aż do jej zrestartowania.

W przypadku VPS nie jest to jedynie kwestia estetyczna. Transkrypcja jest tym, co użytkownik czyta przez połączenie SSH (secure shell), zazwyczaj wewnątrz okna tmux, więc każda linia wygenerowana przez Claude to linia, na którą trzeba czekać, oraz linia zajmująca miejsce w buforze przewijania o ograniczonej wielkości.

Lokalizacja ustawienia outputStyle

Wybierz styl z menu /config w sekcji Output style. Claude Code zapisuje wybrany wariant do .claude/settings.local.json w bieżącym projekcie.

Samodzielne polecenie /output-style już nie istnieje. Zostało uznane za przestarzałe w wersji v2.1.73 i usunięte w v2.1.91, więc w aktualnej wersji nie wykonuje żadnej akcji. Przed skorzystaniem ze starszych poradników należy sprawdzić używaną wersję oprogramowania. Wersje opisane na tej stronie zostały zweryfikowane w sierpniu 2026.

claude --version

Klucz można również ustawić ręcznie. Istnieją cztery pliki konfiguracyjne, w których można go przechowywać, przy czym ustawienie węższe ma pierwszeństwo przed szerszym.

  • ~/.claude/settings.json to plik użytkownika. Dotyczy każdego projektu na danej maszynie.
  • .claude/settings.json to plik projektu. Jest on zatwierdzany w git, więc dotyczy wszystkich osób, które sklonują repozytorium.
  • .claude/settings.local.json to lokalny plik projektu. Nie jest on zatwierdzany w git i nadpisuje oba powyższe pliki. Jest to plik, do którego zapisuje menu /config.
  • Ustawienia zarządzane, wdrażane przez zespół IT ze ścieżki systemowej, takiej jak /etc/claude-code/ w systemie Linux, nadpisują wszystkie pozostałe.

Wartością klucza jest nazwa stylu:

{
  "outputStyle": "Concise"
}

Aby zastosować ustawienie tylko dla jednej sesji, należy przekazać ten sam klucz w wierszu poleceń. Flaga --settings przyjmuje ścieżkę lub ciąg JSON, a jej wartości nadpisują odpowiednie klucze w plikach ustawień dla danego uruchomienia:

claude --settings '{"outputStyle": "Concise"}'

Etykiety menu oraz polecenia typu slash zmieniały się co najmniej raz w trakcie istnienia tej funkcji. Klucz outputStyle pozostał niezmienny. Jeśli zrzut ekranu w jakimkolwiek poradniku przestaje odpowiadać rzeczywistości, należy ustawić klucz bezpośrednio i potwierdzić go za pomocą /status, co wyświetli listę aktualnie obowiązujących źródeł ustawień.

Dlaczego nowy styl wyjściowy nie działa do momentu wyczyszczenia sesji

Claude Code tworzy prompt systemowy jednorazowo, w momencie uruchomienia sesji, a styl wyjściowy stanowi jego część. Zmiana ustawień w trakcie trwania sesji powoduje jedynie zapisanie wartości, bez widocznego efektu, ponieważ aktywna sesja nadal wysyła prompt utworzony przy starcie. Nowy styl wczytuje się przy kolejnym /clear lub przy następnym uruchomieniu.

/clear
/context

/context wyświetla zawartość aktualnie zajmującą okno kontekstowe, z podziałem na kategorie, w tym prompt systemowy. Uruchomienie tego polecenia w nowej sesji dla każdego stylu pozwala porównać wiersz promptu systemowego jako dane wejściowe. Jest to również najszybszy sposób na potwierdzenie, czy niestandardowy styl został wczytany. Aby uzyskać szerszy obraz tego, co wypełnia okno, zobacz jak kontekst wypełnia się podczas długiej sesji Claude Code.

Istnieje powód, dla którego ustawienie czeka, zamiast stosować się na żywo. API obsługuje powtarzające się żądania z pamięci podręcznej promptów (prompt cache), która dopasowuje się do początku każdego żądania, a prompt systemowy znajduje się na samym początku. Nadpisanie go w trakcie konwersacji unieważniłoby wszystko, co znajduje się za nim, więc kolejna tura przetworzyłaby całą historię jako nowe dane wejściowe. Ustalenie stylu na początku sesji pozwala uniknąć tego kosztu. Przełączanie stylów jest tanie. Wymaga jedynie wyczyszczenia sesji.

Co zmieniają poszczególne wbudowane style wyjściowe w transkrypcji

  • Default to standardowy system prompt Claude Code, przygotowany do pracy inżynierskiej nad oprogramowaniem.
  • Concise stawia wynik na pierwszym miejscu. Pomija wstępy i narrację krok po kroku, utrzymując zwięzłość odpowiedzi do momentu, aż użytkownik poprosi o szczegóły. Praca inżynierska pozostaje niezmieniona. Styl ten nigdy nie skraca raportów o błędach ani ostrzeżeń o bezpieczeństwie i zawsze prosi o pełne potwierdzenie przed wykonaniem destrukcyjnej akcji. Styl ten wymaga Claude Code w wersji 2.1.237 lub nowszej.
  • Explanatory dodaje edukacyjne „Spostrzeżenia” (Insights) pomiędzy krokami zadania, wyjaśniając powody wyboru danej implementacji oraz wzorce już wykorzystywane w bazie kodu. Transkrypcja jest z założenia dłuższa.
  • Learning idzie o krok dalej. Claude dzieli się spostrzeżeniami, a następnie prosi o samodzielne napisanie niewielkich fragmentów kodu, oznaczając każde miejsce komentarzem TODO(human) w pliku.
  • Proactive sprawia, że Claude działa zamiast pytać. Przyjmuje rozsądne założenia w rutynowych decyzjach, zamiast zatrzymywać się w celu uzyskania potwierdzenia.

Należy uważnie przeczytać ostatni punkt, ponieważ jest on często błędnie interpretowany. Proactive to wskazówka w system prompcie. Zmienia ona to, co Claude podejmuje jako próbę działania. Tryb uprawnień nadal decyduje o tym, co faktycznie zostanie uruchomione bez pytania użytkownika; jest to ustawienie kluczowe w przypadku serwera pozostawionego bez nadzoru. Kwestia ta została omówiona w tryb automatyczny i tryby uprawnień Claude Code.

Różnice między stylem wyjściowym, plikiem CLAUDE.md, hookiem a subagentem

Wszystkie te mechanizmy służą do definiowania zachowania Claude, lecz działają na różnych poziomach.

  • Styl wyjściowy jest dodawany do system prompt. Dotyczy każdej odpowiedzi w głównej konwersacji.
  • CLAUDE.md jest dodawany jako wiadomość użytkownika po system prompt. To miejsce na konwencje projektowe i fakty dotyczące bazy kodu.
  • --append-system-prompt dołącza tekst do system prompt dla pojedynczego wywołania, bez usuwania czegokolwiek. Jest to jednorazowa wersja stylu wyjściowego.
  • Hook to polecenie powłoki, które Claude Code uruchamia samodzielnie po wystąpieniu zdarzenia. Jest wymuszany przez harness, więc wykonuje się niezależnie od decyzji modelu. Zobacz co może, a czego nie może hook Claude Code.
  • Subagent działa z własnym system prompt i własnym zestawem narzędzi.

Krótki test pozwala rozróżnić dwie pierwsze opcje. Informacje o projekcie należy umieścić w pliku CLAUDE.md, ponieważ Claude musi je znać. Sposób formułowania należy określić w stylu wyjściowym, ponieważ dotyczy on sposobu, w jaki odczytywana jest odpowiedź. Wszystko, co musi wydarzyć się za każdym razem, niezależnie od decyzji modelu, należy obsłużyć za pomocą hooka. Warstwa, w której znajduje się dana powierzchnia, jest właściwością programu uruchamiającego model, a nie samego modelu. Z tego powodu styl może jedynie wpływać na wynik, natomiast hook może wymuszać określone działanie.

Style wyjściowe dotyczą tylko głównej konwersacji. Subagent nie dziedziczy stylu, ponieważ rozpoczyna własną konwersację z własnym system prompt. Wyjątkiem jest fork bieżącej konwersacji, ponieważ fork dziedziczy system prompt rodzica w całości. Jeśli subagent pisze w sposób niepożądany, edytuj plik tego agenta, a nie swój styl. Druga sesja Claude Code na tej samej maszynie zachowuje tę samą granicę, wczytując pliki ustawień samodzielnie podczas startu. Dlatego, gdy przekazujesz pracę do innej sesji działającej równolegle, jej odpowiedzi wracają w stylu załadowanym przez tę sesję, a nie Twoim.

Jak stworzyć własny styl wyjściowy

Własny styl wyjściowy to plik markdown z nagłówkiem frontmatter. Zapisz go w katalogu domowym, aby używać go w każdym projekcie, lub wewnątrz repozytorium, aby przechowywać go wraz z kodem. Katalog użytkownika to ~/.claude/output-styles/, a katalog projektu to .claude/output-styles/.

mkdir -p ~/.claude/output-styles
cat > ~/.claude/output-styles/terse-ops.md <<'EOF'
---
name: Terse ops
description: Command first, explanation after, for SSH sessions
keep-coding-instructions: true
---

Lead with the command or the file change. Put the explanation after it, in two sentences or fewer.

Do not narrate what you are about to do. Report what you did.

When a command can fail, print the one check that proves it worked and say what a healthy result looks like.
EOF

Rozpocznij sesję i otwórz /config. Twój styl pojawi się na liście Output style wraz z opisanym przez Ciebie opisem. Jeśli go brakuje, plik nie jest odczytywany: sprawdź ścieżkę oraz upewnij się, że blok frontmatter --- znajduje się na samym początku pliku. Nazwa pliku staje się nazwą stylu, chyba że frontmatter definiuje name, dlatego ten styl nazywa się Terse ops, a nie terse-ops.

Wybierz go lub ustaw klucz na tę dokładną nazwę i wyczyść:

{
  "outputStyle": "Terse ops"
}

Jedno pole decyduje o tym, czy plik jest modyfikacją, czy zamiennikiem. keep-coding-instructions domyślnie przyjmuje wartość false, co oznacza, że własny styl pomija wbudowane instrukcje inżynierii oprogramowania Claude Code i działa wyłącznie w oparciu o Twój tekst. Te wbudowane instrukcje określają, w jaki sposób Claude ma wyznaczać zakres zmian i weryfikować swoją pracę. Pomiń to pole w przypadku asystenta pisania lub analityka danych, gdzie te kwestie nie mają zastosowania. Ustaw je na true dla wszystkiego, co dotyczy kodu, w przeciwnym razie zdziwisz się, dlaczego staranny inżynier nagle przestał sprawdzać własną pracę. Jeśli Twoim celem nie jest zmiana stylu wypowiedzi, lecz ściślejsze zdefiniowanie zakresu pracy dla danego zadania, należy to zawrzeć w instrukcjach inżynieryjnych, a nie w pliku stylu: umiejętność Ponytail to przykład praktyczny, pojedyncza zasada, która nakłania agenta do wprowadzania najmniejszych działających zmian.

description to wiersz, który selektor /config wyświetla obok nazwy. Napisz go z myślą o momencie, w którym za sześć miesięcy będziesz wybierać między dwoma własnymi stylami.

Dlaczego zwięzły styl jest istotny w połączeniach SSH

Na serwerze VPS odczytujesz zapis sesji przez warstwy, których nie posiada lokalny terminal, a każda z nich generuje koszty związane z nadmiarowością danych.

Pierwszą warstwą jest bufor przewijania. W tmux każdy panel przechowuje określoną liczbę linii, ustawianą przez history-limit, której domyślna wartość wynosi 2000. Narracyjny zapis sesji zapełnia ten bufor szybciej, przez co początkowe fragmenty sesji są usuwane wcześniej, a dane, do których chcesz wrócić, znikają. Zwiększ tę wartość, jeśli potrzebujesz więcej miejsca:

echo 'set -g history-limit 20000' >> ~/.tmux.conf
tmux source-file ~/.tmux.conf

Panele utworzone po tej zmianie będą przechowywać 20000 linii, kosztem większego zużycia pamięci na panel. Już otwarte panele zachowują stary limit, ponieważ rozmiar bufora jest ustalany w momencie tworzenia panelu. Jeśli dopiero budujesz układ sesji, uruchamianie Claude Code wewnątrz tmux na VPS zawiera szczegółowe informacje.

Drugą warstwą jest opóźnienie. Odpowiedź jest przesyłana strumieniowo do terminala w miarę generowania. Przy połączeniu o wysokim czasie odpowiedzi (RTT), długi wstęp oznacza czas, w którym obserwujesz napływający tekst, zanim pojawi się właściwa odpowiedź.

Trzecią warstwą są tokeny wyjściowe. Każda linia narracyjna jest rozliczana jako wyjście. Tryby Explanatory oraz Learning są z założenia dłuższe. Tryb Concise jest z założenia krótszy, ponieważ instruuje Claude, aby domyślnie ograniczał długość odpowiedzi.

Nie ufaj żadnym wartościom procentowym, wliczając w to tę stronę. Skala różnicy zależy od Twoich promptów, modelu oraz rodzaju wykonywanej pracy, dlatego zmierz wyniki przed i po zmianie samodzielnie. Uruchom to samo rzeczywiste zadanie w dwóch osobnych sesjach, jednej w trybie Default, a drugiej w trybie Concise, a następnie porównaj rezultaty. Pasek stanu (statusline) jest najprostszym miernikiem, ponieważ Claude Code przekazuje skryptowi obiekt JSON na stdin, który zawiera zarówno nazwę stylu, jak i liczbę tokenów:

cat > ~/.claude/statusline.sh <<'EOF'
#!/bin/bash
input=$(cat)
style=$(echo "$input" | jq -r '.output_style.name // "default"')
out=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
echo "style=$style out=$out cost=$cost"
EOF
chmod +x ~/.claude/statusline.sh

Skieruj na niego ustawienie statusLine:

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh"
  }
}

Pasek u dołu sesji pokazuje teraz aktywny styl obok liczby wygenerowanych tokenów, co stanowi dokładnie takie porównanie, jakiego potrzebujesz. Skrypt wymaga jq, czyli parsera JSON wiersza poleceń, więc zainstaluj go najpierw za pomocą sudo apt install -y jq. Jeśli pasek pozostaje pusty, uruchom skrypt ręcznie i przekaż do niego dane JSON przez potok, ponieważ pasek stanu, który kończy działanie z kodem błędu innym niż zero, nie wyświetla ani nie raportuje niczego. Niestandardowy pasek stanu Claude Code zawiera listę pozostałych pól w tym obiekcie. W kwestii rozliczeń, a nie samej sesji, przeczytaj gdzie faktycznie trafiają tokeny Claude Code oraz narzędzia do śledzenia wydatków Claude Code.

Jak sprawdzić, który styl wyjściowy jest aktualnie załadowany

Zamiast zgadywać, należy skorzystać z poniższych metod weryfikacji.

  • /status wyświetla listę źródeł ustawień aktywnych w bieżącej sesji, w tym informację, czy stosowane są ustawienia zarządzane przez organizację.
  • /context pokazuje załadowany prompt systemowy jako kategorię w podziale okna kontekstowego.
  • claude doctor, uruchomione z poziomu powłoki bez rozpoczynania sesji, drukuje diagnostykę instalacji i ustawień oraz zgłasza pliki ustawień, które są nieprawidłowe.

Jeśli styl nie jest stosowany, przyczyną są niemal zawsze dwie kwestie. Pierwszą jest zmiana stylu w trakcie sesji, co wymaga wykonania /clear. Drugą jest priorytet: .claude/settings.local.json nadpisuje .claude/settings.json, a oba nadpisują ~/.claude/settings.json. Ponieważ selektor /config zapisuje dane do pliku lokalnego, styl wprowadzony przez zespół w .claude/settings.json jest po cichu nadpisywany na każdej maszynie, na której użytkownik skorzystał z menu. /status wskazuje, które źródło ustawień zostało wybrane.

Błąd składni JSON daje te same objawy, ale wymaga innego rozwiązania. claude doctor wskazuje plik, którego nie udało się przetworzyć; warto uruchomić to polecenie przed szukaniem bardziej złożonych przyczyn.

FAQ

Dlaczego polecenie /output-style przestało działać?

Zostało ono uznane za przestarzałe w wersji 2.1.73 i usunięte w wersji 2.1.91, więc w kompilacji z połowy 2026 roku polecenie to już nie istnieje. Uruchom claude --version, aby sprawdzić posiadane zasoby. Wybierz styl z /config w sekcji Output style lub ustaw klucz outputStyle w pliku ustawień. Klucz ten przetrwał polecenie, więc ustawienie go bezpośrednio jest instrukcją, którą warto zapisać we własnych notatkach.

Zmieniłem styl wyjściowy i nic się nie stało. Dlaczego?

Styl wyjściowy jest częścią system prompt, a Claude Code buduje system prompt jednorazowo w momencie rozpoczęcia sesji. Zmiana wprowadzona w trakcie sesji jest zapisywana, ale nie jest stosowana, ponieważ aktywna sesja wciąż wysyła prompt zbudowany przy starcie. Uruchom /clear lub rozpocznij nową sesję. Jeśli zmiana nadal nie jest stosowana, uruchom /status, aby sprawdzić, które źródło ustawień przeważyło, ponieważ .claude/settings.local.json nadpisuje .claude/settings.json, a oba nadpisują ~/.claude/settings.json.

Czy styl wyjściowy Concise pozwala zaoszczędzić pieniądze?

Zmniejsza on liczbę tokenów wyjściowych zgodnie z oczekiwaniami, ponieważ instruuje Claude, aby domyślnie udzielał krótkich odpowiedzi. Skala oszczędności zależy od używanych promptów i modelu, więc każdą publikowaną wartość procentową należy traktować jako wynik pracy kogoś innego. Dokonaj własnego pomiaru: uruchom /context w nowej sesji dla każdego stylu w odniesieniu do danych wejściowych, a następnie wykonaj to samo zadanie w każdym z nich i porównaj liczbę tokenów wyjściowych. Styl Concise nigdy nie skraca raportów o błędach ani ostrzeżeń dotyczących bezpieczeństwa, więc kluczowe informacje pozostają w całości.

Czy zmiana stylu wyjściowego wpłynie na sposób pisania moich subagentów?

Nie. Style wyjściowe dotyczą tylko głównej konwersacji, ponieważ subagent rozpoczyna własną konwersację z własnym system prompt i własnym zestawem narzędzi. Wyjątkiem jest rozwidlenie (fork) bieżącej konwersacji, ponieważ dziedziczy ono dokładnie system prompt rodzica. Aby zmienić sposób odpowiedzi subagenta, należy edytować plik tego konkretnego agenta.

Czy styl wyjściowy pozwala Claude na uruchamianie poleceń bez pytania?

Nie. Styl wyjściowy to tekst w system prompt, więc może jedynie wpływać na to, co Claude próbuje zrobić. Styl Proactive sprawia, że Claude zakłada i działa zamiast wstrzymywać się przy rutynowych decyzjach, ale nadal nie może samodzielnie zatwierdzić polecenia. Tryb uprawnień decyduje o tym, co jest uruchamiane bez pytania, i jest to ustawienie, które należy sprawdzić przed pozostawieniem sesji uruchomionej na serwerze.