Przejdź do głównej zawartości

Zaawansowane techniki Claude Code

Używasz już Claude Code codziennie, ale podejrzewasz, że zostawiasz część możliwości niewykorzystaną. Model wydaje się “myśleć mocniej” przy jednych promptach niż przy innych i nie jesteś pewien dlaczego. Słyszałeś, że serwery MCP mogą dać Claude bezpośredni dostęp do bazy danych i GitHuba, ale fragmenty konfiguracji skopiowane z jakiegoś wpisu na blogu po cichu się nie wczytały. I wciąż uruchamiasz jedno zadanie naraz, gdy masz cztery niezależne rzeczy do wydania.

Ten przewodnik obejmuje techniki, które oddzielają zwykłego użytkownika Claude Code od kogoś, kto prowadzi go jak profesjonalne narzędzie: kontrolowanie głębokości rozumowania, podłączanie zewnętrznych narzędzi przez MCP, pisanie własnego narzędzia MCP, automatyzowanie przeglądów w CI i prowadzenie naprawdę izolowanych sesji równoległych.

  • Poprawny model myślowy rozszerzonego myślenia i jak faktycznie kontrolować jego głębokość (poziomy wysiłku, nie magiczne słowa kluczowe)
  • Działający .mcp.json, który wczytuje się za pierwszym razem, plus aktualny sposób dodania serwera GitHub MCP
  • Minimalny, prawdziwy własny serwer MCP używający oficjalnego SDK — gotowy do skopiowania i uruchomienia
  • Workflow GitHub Actions, który uruchamia Claude na każdym PR, wyzwalany wzmiankami @claude
  • Wzorzec oparty na worktrees do prawdziwej pracy równoległej z zerowym krzyżowym skażeniem

Rozszerzone myślenie jest domyślnie włączone. To nie jest tryb, który włączasz słowem kluczowym — i to jest pojedyncze, najczęstsze nieporozumienie. Frazy takie jak “think”, “think hard” i “ultrathink” są interpretowane jako zwykły tekst promptu. Nie alokują one budżetu tokenów myślenia. Jeśli wstrzykiwałeś “ultrathink” do promptów, oczekując przebiegu rozumowania na 128 tys. tokenów, nie robiło to niczego szczególnego.

Jak głębokość jest faktycznie kontrolowana, zależy od modelu:

  • Na Opus 4.6 i nowszych (w tym Opus 4.8 i Fable 5) myślenie używa adaptacyjnego rozumowania. Model dynamicznie alokuje rozumowanie na podstawie poziomu wysiłku: low, medium lub high (domyślny). Fable 5 obsługuje dodatkowo xhigh i max dla maksymalnej głębokości rozumowania. Ustaw go w /model lub zmienną środowiskową CLAUDE_CODE_EFFORT_LEVEL.
  • Na innych modelach myślenie używa stałego budżetu do 31 999 tokenów czerpanego z budżetu wyjścia. Ogranicz go zmienną środowiskową MAX_THINKING_TOKENS. (Ta zmienna jest ignorowana na Opus 4.6+, chyba że ustawisz ją na 0, co całkowicie wyłącza myślenie na dowolnym modelu.)

Czyli dźwignią jest poziom wysiłku albo limit tokenów — nie brzmienie Twojego promptu.

Okno terminala
# Wewnątrz REPL, podnieś głębokość rozumowania dla trudnego zadania
/model
# Następnie wybierz Opus z wysiłkiem "high", lub ustaw go dla sesji:
export CLAUDE_CODE_EFFORT_LEVEL=high
claude

Tym, co faktycznie kontrolujesz swoim promptem, jest struktura rozumowania. Poproszenie Claude o przepracowanie problemu w wyraźnych etapach niezawodnie daje lepsze rezultaty niż jednolinijkowa prośba, niezależnie od poziomu wysiłku.

Serwery Model Context Protocol (MCP) dają Claude bezpośredni, ustrukturyzowany dostęp do zewnętrznych systemów — GitHuba, bazy danych, przeglądarki — zamiast kopiowania i wklejania kontekstu przez Ciebie. Konfiguracja, która gryzie ludzi, to format pliku konfiguracyjnego i wskazywanie na zarchiwizowane pakiety referencyjne.

Serwer GitHub MCP jest teraz zdalnym serwerem HTTP, a nie globalną instalacją npm. Dodaj go jednym poleceniem:

Okno terminala
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

Lokalne serwery stdio (baza danych, przeglądarka) konfigurujesz w .mcp.json w katalogu głównym projektu. Klucz najwyższego poziomu to mcpServers — nie servers. Z niewłaściwym kluczem plik jest po cichu ignorowany.

{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}

Kilka rzeczy wartych wiedzy, które fragmenty znajdowane online zwykle podają błędnie:

  • Serwery MCP stdio działają przez npx (lub uvx dla serwerów tylko w Pythonie). Nie ma kroku npm install -gnpx pobiera je i uruchamia na żądanie.
  • @modelcontextprotocol/server-postgres to starszy serwer referencyjny. Wciąż rozwiązuje się w npm, ale traktuj go jako punkt wyjścia; wiele zespołów przechodzi na utrzymywany serwer dostawcy.
  • Do automatyzacji przeglądarki użyj @playwright/mcp, a nie zarchiwizowanego server-puppeteer.

Gdy serwer jest wczytany, przestajesz opisywać kontekst, a zaczynasz prosić o rezultaty:

# Z serwerem GitHub MCP
Open an issue for the login 500s, tag it "bug" and "auth", and link the
three most recent commits that touched src/auth/.
# Z serwerem Postgres MCP
Show me the schema for the users table, then find accounts with no login
in the last 30 days.

Gdy żaden gotowy serwer nie pasuje — chcesz, aby Claude uruchamiał Twój skrypt wdrożeniowy, odpytywał wewnętrzne API lub uruchamiał własnościowe narzędzie — napisz mały. Użyj oficjalnego SDK, @modelcontextprotocol/sdk. API to McpServer z registerTool, połączone przez transport.

deploy-mcp-server.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';
const server = new McpServer({ name: 'project-tools', version: '1.0.0' });
server.registerTool(
'deploy-staging',
{
description: 'Deploy the given branch to the staging environment',
inputSchema: { branch: z.string() },
},
async ({ branch }) => {
// Call your real deploy pipeline here.
const url = `https://staging.example.com/${branch}`;
return { content: [{ type: 'text', text: `Deployed ${branch} -> ${url}` }] };
}
);
await server.connect(new StdioServerTransport());

Zarejestruj go w .mcp.json jak każdy inny serwer stdio, a następnie poproś Claude o wdrożenie gałęzi po nazwie. Własne serwery błyszczą przy automatyzacji wdrożeń, dostępie do wewnętrznego API i każdym workflow, który dotyka narzędzi posiadanych tylko przez Twój zespół.

Możesz sprawić, by Claude automatycznie przeglądał każdy pull request. Działa to przez GitHub Actions i anthropics/claude-code-action, a nie przez plik konfiguracyjny YAML w .github/claude-code-review.yml (ta ścieżka nie istnieje).

  1. Zainstaluj aplikację GitHub

    Uruchom to wewnątrz REPL Claude Code. Przeprowadzi Cię przez instalację aplikacji i dodanie wymaganych sekretów:

    /install-github-app
  2. Dodaj plik workflow

    Skopiuj przykładowy workflow do .github/workflows/claude.yml. Minimalny automatyczny przegląd wygląda tak:

    .github/workflows/claude.yml
    name: Claude Review
    on:
    pull_request:
    types: [opened, synchronize]
    jobs:
    review:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - uses: anthropics/claude-code-action@v1
    with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    prompt: |
    Review this PR. Report only real issues, grouped by:
    security, correctness, missing error handling.
    Be concise. Skip style nits.

    Instrukcja trafia do inputu prompt. (direct_prompt to przestarzała nazwa z v0.x — użyj prompt na @v1.)

  3. Wyzwalaj go na żądanie z komentarza

    Gdy akcja jest zainstalowana, wspomnij @claude w dowolnym komentarzu PR lub issue, a odpowie:

    @claude review this PR for security issues
    @claude suggest improvements to the error handling in src/api/

Wzorzec, który dobrze sprawdza się w praktyce: pozwól Action opublikować automatyczne pierwsze przejście na każdym PR i zarezerwuj wzmianki @claude na ukierunkowane follow-upy (“wyjaśnij to rozwiązanie”, “sprawdź migrację pod kątem kompatybilności wstecznej”). Claude wychwytuje mechaniczne problemy, dzięki czemu ludzcy recenzenci mogą skupić się na projekcie i intencji.

Gdy masz kilka niezależnych zadań — funkcjonalność, pilny hotfix, migrację — chcesz, aby każde było izolowane, tak by nie mogły wejść sobie w drogę. Prymitywem do tego są git worktrees, po jednym na zadanie. Częstym błędem jest sięganie po --add-dir: ta flaga dodaje dodatkowe katalogi do pojedynczej sesji dla kontekstu, nie tworzy izolowanych równoległych instancji.

Przydziel każdemu zadaniu własny worktree, a następnie uruchom osobną sesję Claude w każdym:

Okno terminala
# Jeden worktree (i gałąź) na zadanie
git worktree add ../app-feature -b feature/notifications
git worktree add ../app-hotfix -b hotfix/auth-timeout
# Terminal 1
cd ../app-feature && claude
# Terminal 2
cd ../app-hotfix && claude

Każda sesja ma własny kontekst i widzi tylko pliki w swoim worktree, więc nie ma żadnego krzyżowego skażenia. Gdy zadanie jest gotowe, usuń jego worktree przez git worktree remove ../app-feature. Pełny workflow worktree znajdziesz w Kontroli Wersji.

Jeśli potrzebujesz tylko świeżej gałęzi z tego samego punktu startowego (a nie pełnej izolacji plików), claude --resume <id> --fork-session daje każdemu terminalowi czystą sesję bez drugiego katalogu roboczego.

Claude Code może pomóc zacieśnić sposób, w jaki używasz Claude Code. Najbardziej dźwigniowym ruchem jest pielęgnowanie Twojego CLAUDE.md, tak by model przestał powtarzać kontekst, który podajesz mu ręcznie.

Przy edycji wymagającej dużo nawigacji włącz skróty klawiszowe Vima poleceniem /vim (lub ustaw je na stałe przez /config). Daje to ruch hjkl, obiekty tekstowe i . do powtórzenia ostatniej zmiany w edytorze wejścia.

Rozumowanie pozostaje płytkie bez względu na to, co wpiszesz — Na Opus 4.6+ głębokość jest ustawiana przez poziom wysiłku, a nie brzmienie promptu. Uruchom /model i wybierz wysiłek high. “Think harder” w prompcie nie robi nic.

MAX_THINKING_TOKENS wydaje się ignorowane — Jest ignorowane na Opus 4.6+ (głębokość kontroluje tam adaptacyjne rozumowanie). Zamiast tego użyj poziomu wysiłku. Jedynym wyjątkiem jest MAX_THINKING_TOKENS=0, które wyłącza myślenie na dowolnym modelu.

Serwer MCP się nie wczytuje — Sprawdź, czy klucz najwyższego poziomu w .mcp.json to mcpServers, a nie servers. Zweryfikuj, że serwer pojawia się przy claude mcp list, i uruchom claude --debug "mcp", aby zobaczyć błędy startowe. Dla serwerów stdio potwierdź, że polecenie npx/uvx uruchamia się samodzielnie w terminalu.

GitHub Action nie odpowiada na @claude — Potwierdź, że aplikacja jest zainstalowana (/install-github-app), że sekret ANTHROPIC_API_KEY istnieje i że workflow znajduje się w .github/workflows/claude.yml. Jeśli skopiowałeś starszy przykład, zastąp input direct_prompt przez prompt.

Sesje równoległe interferują — Prawdopodobnie współdzielisz katalog. Przydziel każdemu zadaniu własny worktree; --add-dir nie izoluje sesji, dodaje tylko ścieżki kontekstu do jednej sesji.

Mając te techniki w ręku, naucz się skalować je w całym zespole. Przejdź do Współpracy zespołowej po wzorce kolaboracyjnego rozwoju wspomaganego AI.