Claude Code output style: konfiguracja i własne style
Wyjaśnienie działania parametru outputStyle w Claude Code. Dowiedz się, jak modyfikacja system prompt wpływa na sesję i dlaczego zmiana wymaga restartu procesu w terminalu.
Czym jest styl wyjściowy w Claude Code
Styl wyjściowy w Claude Code to blok instrukcji, który Claude Code dołącza do systemowego promptu. Zmienia on sposób, w jaki Claude odpowiada użytkownikowi: przyjmowaną rolę oraz formę generowanych komunikatów. Styl nie przekazuje Claude żadnych informacji o bazie kodu i nie nadaje uprawnień do wykonywania jakichkolwiek operacji.
Claude Code dostarcza pięć wbudowanych stylów. Wybór stylu jest przechowywany 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 sesji zostaje zapisany, ale zignorowany do momentu jej zrestartowania.
W przypadku VPS nie jest to tylko kwestia estetyczna. Transkrypcja jest odczytywana przez połączenie SSH (secure shell), zazwyczaj wewnątrz okna tmux, więc każda linia wygenerowana przez Claude to linia, na którą użytkownik czeka i która zajmuje miejsce w buforze przewijania o stałym rozmiarze.
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 aktualnych kompilacjach nie wywołuje żadnego działania. Przed skorzystaniem ze starszych poradników należy sprawdzić używaną wersję. Wersje opisane na tej stronie zostały zweryfikowane w sierpniu 2026 roku.
claude --versionUstawienie można również wprowadzić ręcznie. Istnieją cztery pliki konfiguracyjne, w których można je zapisać, przy czym ustawienie węższe ma pierwszeństwo przed szerszym.
~/.claude/settings.jsonto plik użytkownika. Ma zastosowanie w każdym projekcie na danej maszynie..claude/settings.jsonto plik projektu. Jest zatwierdzany w git, więc dotyczy każdego, kto sklonuje repozytorium..claude/settings.local.jsonto lokalny plik projektu. Nie jest zatwierdzany w git i nadpisuje oba powyższe. 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 wbudowany ciąg JSON, a jej wartości nadpisują odpowiednie klucze w plikach konfiguracyjnych dla danego uruchomienia:
claude --settings '{"outputStyle": "Concise"}'Etykiety menu oraz polecenia typu slash zmieniały się przynajmniej 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ę aktywnych źródeł ustawień.
Dlaczego nowy styl wyjściowy nie działa przed wyczyszczeniem sesji
Claude Code buduje prompt systemowy jednorazowo, w momencie uruchomienia sesji, a styl wyjściowy stanowi część tego promptu. Zmiana ustawień w trakcie trwania sesji zapisuje wartość, ale nie powoduje widocznych zmian, ponieważ aktywna sesja wciąż wysyła prompt zbudowany 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ć treść promptu systemowego po stronie wejściowej. Jest to również najszybszy sposób na potwierdzenie, że niestandardowy styl został wczytany. Aby uzyskać szerszy obraz tego, co wypełnia okno, zobacz jak kontekst zapeł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 starcie sesji pozwala uniknąć tego kosztu. Przełączanie stylów jest tanie. Wymaga jedynie wyczyszczenia sesji.
Jak poszczególne wbudowane style wyjściowe modyfikują transkrypcję
- Default to standardowy prompt systemowy Claude Code, przygotowany do prac inżynierii oprogramowania.
- 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 bez zmian. 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. Ten styl 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 użytkownika o samodzielne napisanie fragmentów kodu, oznaczając każde miejsce komentarzem
TODO(human)w pliku. - Proactive sprawia, że Claude działa zamiast pytać. Przyjmuje uzasadnione założenia w rutynowych decyzjach, zamiast zatrzymywać się w celu uzyskania potwierdzenia.
Należy uważnie przeczytać ostatni punkt, ponieważ jest on najczęściej błędnie interpretowany. Proactive to wskazówka w prompcie systemowym. Zmienia ona sposób, w jaki Claude podejmuje próby działania. Tryb uprawnień nadal decyduje o tym, co faktycznie zostanie uruchomione bez pytania, co jest ustawieniem kluczowym 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, CLAUDE.md, hookiem a subagentem
Wszystkie te mechanizmy służą do definiowania zachowania modelu Claude, jednak działają na różnych warstwach.
- Styl wyjściowy jest dodawany do promptu systemowego. Ma zastosowanie do każdej odpowiedzi w głównej konwersacji.
- CLAUDE.md jest dodawany jako wiadomość użytkownika po prompcie systemowym. To miejsce na konwencje projektowe oraz fakty dotyczące bazy kodu.
--append-system-promptdołącza tekst do promptu systemowego 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 w momencie wystąpienia zdarzenia. Jest wymuszany przez środowisko wykonawcze, więc uruchamia się niezależnie od decyzji modelu. Zobacz co hook Claude Code może, a czego nie może zrobić.
- Subagent działa z własnym promptem systemowym i własnym zestawem narzędzi.
Krótki test pozwala rozstrzygnąć wybór między pierwszymi dwoma. Fakty dotyczące projektu umieszczaj w CLAUDE.md, ponieważ Claude musi je znać. Sposób formułowania wypowiedzi umieszczaj w stylu wyjściowym, ponieważ dotyczy on formy odpowiedzi. Wszystko, co musi wydarzyć się za każdym razem, niezależnie od decyzji modelu, powinno być hookiem.
Style wyjściowe mają zastosowanie tylko do głównej konwersacji. Subagent nie dziedziczy stylu, ponieważ rozpoczyna własną konwersację z własnym promptem systemowym. Wyjątkiem jest rozwidlenie (fork) bieżącej konwersacji, ponieważ dziedziczy ono dokładnie ten sam prompt systemowy, co konwersacja nadrzędna. Jeśli subagent pisze w sposób, który nie odpowiada użytkownikowi, należy edytować plik tego agenta, a nie styl główny.
Jak utworzyć 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.
EOFRozpocznij sesję i otwórz /config. Twój styl pojawi się na liście Output style wraz z opisaną przez Ciebie treścią. Jeśli go brakuje, oznacza to, że 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 w nagłówku zdefiniowano name, dlatego ten styl nazywa się Terse ops, a nie terse-ops.
Wybierz go lub ustaw klucz na tę konkretną nazwę i wyczyść:
{
"outputStyle": "Terse ops"
}Jedno pole decyduje o tym, czy plik stanowi modyfikację, czy całkowite zastąpienie. Wartość keep-coding-instructions domyślnie przyjmuje false, co oznacza, że własny styl usuwa 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 wartość na true dla wszystkiego, co dotyczy kodu; w przeciwnym razie szybko zauważysz, że skrupulatny inżynier przestał sprawdzać własną pracę.
description to wiersz, który selektor /config wyświetla obok nazwy. Przygotuj go z myślą o momencie, w którym za pół roku będziesz wybierać między dwoma własnymi stylami.
Dlaczego zwięzły styl jest inny w przypadku SSH
Na serwerze VPS odczytujesz zapis sesji przez warstwy, których nie posiada lokalny terminal, a każda z nich generuje koszt związany z gadatliwością.
Pierwszą warstwą jest bufor przewijania. W tmux każdy panel przechowuje określoną liczbę linii, ustawianą przez history-limit, której wartość domyślna wynosi 2000. Narracyjny zapis sesji wypełnia ten bufor szybciej, przez co wcześniejsza część sesji jest usuwana 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.confPanele utworzone po tej zmianie przechowują po 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 nadal budujesz układ sesji, uruchamianie Claude Code wewnątrz tmux na VPS omawia ten temat.
Drugą warstwą jest opóźnienie. Odpowiedź jest przesyłana strumieniowo do terminala w miarę generowania. Na łączu o wysokim czasie odpowiedzi (RTT), długi wstęp to czas, który spędzasz na obserwowaniu napływającego tekstu, zanim pojawi się właściwa odpowiedź.
Trzecią warstwą są tokeny wyjściowe. Każda linia narracyjna jest rozliczana jako wyjście. Tryby Wyjaśniający (Explanatory) i Uczący (Learning) są z założenia dłuższe. Tryb Zwięzły (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ę. Wielkość różnicy zależy od Twoich zapytań, modelu oraz rodzaju wykonywanej pracy, dlatego zmierz własne wyniki przed i po zmianie. Uruchom to samo rzeczywiste zadanie w dwóch świeżych sesjach, jednej w trybie domyślnym, a drugiej w trybie zwięzłym, a następnie porównaj wyniki. Pasek stanu jest najprostszym miernikiem, ponieważ Claude Code przekazuje skryptowi obiekt JSON na standardowe wejście (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.shSkieruj na niego ustawienie statusLine:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}Pasek na dole sesji pokazuje teraz aktywny styl obok liczby wygenerowanych tokenów, co stanowi dokładnie takie porównanie przed i po, jakiego potrzebujesz. Skrypt wymaga jq, czyli parsera JSON dla 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, niczego nie wyświetla ani nie raportuje. 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.
/statuswyświetla listę źródeł ustawień aktywnych w bieżącej sesji, w tym informację, czy stosowane są ustawienia zarządzane przez organizację./contextpokazuje załadowany prompt systemowy jako kategorię w zestawieniu 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ą jest niemal zawsze jedna z dwóch rzeczy. Pierwszą jest zmiana stylu w trakcie trwania 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 zatwierdzony przez zespół w .claude/settings.json jest po cichu nadpisywany na każdej maszynie, na której użytkownik choć raz skorzystał z menu. /status wskazuje, które źródło ustawień zostało wybrane.
Błąd składni JSON daje ten sam objaw, 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ą promptu systemowego, a Claude Code buduje prompt systemowy jednorazowo w momencie rozpoczęcia sesji. Zmiana wprowadzona w trakcie sesji jest zapisywana, ale nie stosowana, ponieważ trwająca 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 promptów i używanego modelu, więc każdą opublikowaną wartość procentową należy traktować jako pomiar pracy kogoś innego. Dokonaj własnego pomiaru: uruchom /context w świeżej 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 części wymagające wnikliwej lektury pozostają kompletne.
Czy zmiana stylu wyjściowego wpłynie na sposób pisania moich subagentów?
Nie. Style wyjściowe mają zastosowanie tylko do głównej konwersacji, ponieważ subagent rozpoczyna własną konwersację z własnym promptem systemowym i własnym zestawem narzędzi. Wyjątkiem jest rozwidlenie (fork) bieżącej konwersacji, ponieważ dziedziczy ono dokładnie prompt systemowy rodzica. Aby zmienić sposób, w jaki odpowiada subagent, 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 prompcie systemowym, 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. Twój 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.