Przejdź do głównej zawartości

Sztuczki wydajności

Deweloper, który oszczędza 10 minut na zadanie, nie wygląda imponująco. Ale w skali 30 zadań dziennie to 5 godzin tygodniowo. Te sztuczki wydajności to małe techniki, które składają się w ogromne zyski produktywności.

  • Techniki zarządzania kontekstem, które utrzymują sesje lekkie i szybkie
  • Triki z formatem wyjścia dla różnych workflow
  • Aliasy i funkcje shell, które zmniejszają liczbę naciśnięć klawiszy
  • Wzorce unikania typowych pułapek czasowych

Największy zysk wydajności to czyszczenie kontekstu przy przechodzeniu między zadaniami:

/rename payment-bug-investigation
/clear

Nieaktualny kontekst z poprzedniego zadania sprawia, że każda kolejna wiadomość jest droższa (więcej przetwarzanych tokenów) i mniej dokładna (Claude używa nieistotnego kontekstu).

Gdy musisz pozostać w tej samej sesji, ale kontekst jest rozdęty:

/compact Keep: file paths I edited, test results, error traces. Remove: exploratory file reads, discussion about alternatives, my questions.
# Compact instructions
When compacting, preserve:
- Test results and error output
- File paths and code changes made
- Key decisions and their rationale
Remove:
- Exploratory file reads that did not lead to changes
- Verbose command output that has been summarized
- Discussion of rejected approaches

Dodaj do ~/.zshrc lub ~/.bashrc:

Okno terminala
# Quick question -- ask Claude without starting a session
alias cq='claude -p'
# Continue last session
alias cc='claude -c'
# Review current changes
alias cr='git diff | claude -p "Quick review: only flag CRITICAL and HIGH issues."'
# Explain a file
explain() {
claude -p "Explain what $1 does, its key functions, and how it fits into the project."
}
# Generate tests for a file
gentest() {
claude -p "Generate comprehensive tests for $1. Follow existing test patterns in this project."
}
# Debug an error
debug() {
echo "$@" | claude -p "Analyze this error and suggest a fix. Read the relevant source files."
}

Gdy chcesz wpiąć Claude w potok powłoki, poproś o odpowiedź w swobodnej formie i czytaj .result. Porównaj oba podejścia dla tego samego zadania:

Okno terminala
# Przed: odpowiedź prozą, którą musisz ręcznie skopiować z terminala
claude -p "List all API endpoints with their HTTP method, path, and handler file"
# Po: tekst czytelny dla maszyny, który możesz przekazać do grep, wc lub innego polecenia
claude -p "List all API endpoints with their HTTP method, path, and handler file" \
--output-format json | jq -r '.result'

Używaj zwykłego --output-format json (czytając z .result), gdy chcesz w skrypcie naturalną odpowiedź Claude; po --json-schema (następna sekcja) sięgaj tylko wtedy, gdy potrzebujesz odpowiedzi sparsowanej do konkretnych pól.

Dla gwarantowanej struktury wyjścia połącz --json-schema z --output-format json. Wynik zgodny ze schematem trafia do pola structured_output na najwyższym poziomie (obok metadanych sesji), więc przekazuj do .structured_output, a nie do .result:

Okno terminala
claude -p "Analyze the test coverage of src/api/" \
--output-format json \
--json-schema '{"type":"object","properties":{"total_files":{"type":"number"},"covered_files":{"type":"number"},"uncovered_files":{"type":"array","items":{"type":"string"}}}}' \
| jq '.structured_output'

To niezawodny sposób na podanie wyjścia Claude do innego skryptu: schemat wymusza kształt, a jq '.structured_output' zdejmuje opakowanie, więc dostajesz czysty JSON. Bez --output-format json flaga --json-schema jest ignorowana i otrzymujesz zwykły tekst.

Domyślnym zachowaniem Claude jest czytanie wielu plików przed działaniem. Dla skoncentrowanych zadań ogranicz zakres:

Fix the null pointer in src/api/users.ts line 42.
Only read src/api/users.ts and its direct imports.
Do not explore other files.

Claude często spędza tokeny na podsumowaniu zmian po ich dokonaniu. Dodaj do swojego CLAUDE.md:

After making changes, do not provide a summary unless I ask for one.
Instead, just show the git diff of what changed.

Uruchamianie pełnych pakietów testów po każdej zmianie

Dział zatytułowany „Uruchamianie pełnych pakietów testów po każdej zmianie”
# In CLAUDE.md
When running tests after a change, run only the tests related to the modified file.
Use: npx jest [file] --no-coverage
Only run the full test suite when I ask for it or before committing.
# In CLAUDE.md
Never read these files:
- package-lock.json
- yarn.lock
- any file in dist/ or build/
- any file in node_modules/
- any .map file
Okno terminala
# Work on a frontend app with access to the shared library
claude --add-dir ../shared-components
Okno terminala
claude -p "Quick task" --fallback-model sonnet

Jeśli model domyślny (Opus 4.8) jest przeciążony, polecenie automatycznie przechodzi na Sonnet 4.6 zamiast przerywać uruchomienie błędem — nieoceniona rzecz w zadaniach cron i potokach CI, gdzie nienadzorowany błąd oznacza nieudane wdrożenie. Flaga działa tylko w trybie print.

Okno terminala
# Wznów lokalną sesję powiązaną przy uruchomieniu gh pr create
claude --from-pr 123

To wznawia lokalną sesję, która została automatycznie powiązana z PR-em w momencie jego utworzenia poleceniem gh pr create, dzięki czemu możesz wrócić do tej pracy, aby zająć się komentarzami z przeglądu. Polecenie samo nie pobiera zawartości PR-a — działa tylko dla PR-a, którego sesja źródłowa nadal istnieje na tej maszynie.

Aliasy kolidują z innymi narzędziami: Sprawdź konflikty nazw za pomocą which cq przed dodaniem aliasów. Wybieraj unikalne nazwy, które nie przesłaniają istniejących poleceń.

Kontekst został przypadkowo wyczyszczony: Wdróż nawyk używania /rename przed /clear. Sesje są zachowywane nawet po wyczyszczeniu, więc możesz do nich wrócić później.

Reguły wydajności w CLAUDE.md są zbyt restrykcyjne: Jeśli Claude wydaje się niezdolny do eksploracji, gdy jest to potrzebne, użyj “ignore efficiency rules for this task” aby tymczasowo nadpisać. Reguły to wskazówki, nie twarde blokady.