Architektura agentów: budowanie szkieletów programistycznych opartych na AI
# Kompletny system budowania produkcyjnych szkieletów agentów AI. Umiejętności, hooks, pamięć, subagenci, orkiestracja wieloagentowa oraz wzorce, które czynią agenty kodujące AI niezawodną infrastrukturą.
TL;DR: Claude Code to nie okno czatu z dostępem do plików. To programowalne środowisko uruchomieniowe z 29 udokumentowanymi zdarzeniami cyklu życia, z których każde można obsłużyć skryptami powłoki, których model nie jest w stanie pominąć. Można składać hooks w dispatchers, dispatchers w skills, skills w agents, a agents w przepływy pracy — w rezultacie powstaje autonomiczny harness deweloperski, który egzekwuje ograniczenia, deleguje pracę, utrzymuje pamięć między sesjami i koordynuje deliberację wieloagentową. Niniejszy przewodnik omawia każdą warstwę tego stosu: od pojedynczego hooka po system konsensusu złożony z 10 agentów. Bez konieczności stosowania jakichkolwiek frameworków. Wyłącznie bash oraz JSON.
Andrej Karpathy ukuł termin opisujący to, co narasta wokół agenta LLM: claws. Hooks, skrypty i orkiestracja, które pozwalają agentowi uchwycić świat poza jego oknem kontekstu.1 Większość deweloperów traktuje agentów programistycznych AI jako interaktywnych asystentów. Wpisują polecenie, obserwują, jak edytuje plik, i przechodzą dalej. Takie podejście ogranicza produktywność do tego, co można osobiście nadzorować.
Model mentalny oparty na infrastrukturze jest odmienny: agent programistyczny AI to programowalne środowisko uruchomieniowe z jądrem LLM. Każde działanie podejmowane przez model przechodzi przez hooks, nad którymi sprawuje się kontrolę. Definiuje się zasady, nie polecenia. Model działa w obrębie danej infrastruktury w taki sam sposób, w jaki serwer WWW działa w obrębie reguł nginx. Nie siada się przy nginx, by wpisywać żądania. Konfiguruje się go, wdraża i monitoruje.
To rozróżnienie ma znaczenie, ponieważ infrastruktura się kumuluje. Hook blokujący poświadczenia w poleceniach bash chroni każdą sesję, każdego agenta, każde autonomiczne uruchomienie. Skill kodujący kryteria oceny stosuje się spójnie, niezależnie od tego, czy zostanie wywołany przez użytkownika, czy przez agenta. Agent recenzujący kod pod kątem bezpieczeństwa wykonuje te same kontrole, niezależnie od tego, czy jest się obserwatorem, czy nie.2
Najważniejsze wnioski
- Hooks gwarantują wykonanie; polecenia nie. Warto stosować hooks do lintowania, formatowania, kontroli bezpieczeństwa i wszystkiego, co musi być wykonywane za każdym razem, niezależnie od zachowania modelu. Kod wyjścia 2 blokuje działania. Kod wyjścia 1 jedynie ostrzega.3
- Skills kodują wiedzę dziedzinową, która aktywuje się automatycznie. Pole
descriptiondecyduje o wszystkim. Claude wykorzystuje rozumowanie LLM (nie dopasowywanie słów kluczowych), aby zdecydować, kiedy zastosować dany skill.4 - Subagents zapobiegają rozrostowi kontekstu. Izolowane okna kontekstu do eksploracji i analizy utrzymują główną sesję w zwięzłej formie. Niezależne subagents można uruchamiać równolegle, natomiast zespołów agentów należy używać wtedy, gdy pracownicy wymagają trwałej koordynacji.5
- Pamięć rezyduje w systemie plików. Pliki są zachowywane między oknami kontekstu. CLAUDE.md, MEMORY.md, katalogi reguł oraz dokumenty handoff tworzą uporządkowany system pamięci zewnętrznej.6
- Deliberacja wieloagentowa wykrywa martwe punkty. Pojedynczy agenci nie są w stanie kwestionować własnych założeń. Dwóch niezależnych agentów o różnych priorytetach oceny wychwytuje błędy strukturalne, których nie są w stanie wyeliminować bramki jakości.7
- Wzorzec harness to cały system. CLAUDE.md, hooks, skills, agents oraz pamięć nie są niezależnymi funkcjami. Łączą się one w deterministyczną warstwę pomiędzy użytkownikiem a modelem, która skaluje się wraz z automatyzacją.
Jak korzystać z niniejszego przewodnika
| Doświadczenie | Proszę zacząć tutaj | Następnie warto zgłębić |
|---|---|---|
| Codzienne korzystanie z Claude Code, chęć osiągnięcia więcej | The Harness Pattern | Skills System, Hook Architecture |
| Budowanie autonomicznych przepływów pracy | Subagent Patterns | Multi-Agent Orchestration, Production Patterns |
| Ocena architektury agentów | Why Agent Architecture Matters | Decision Framework, Security Considerations |
| Konfigurowanie zespołowego harness | CLAUDE.md Design | Hook Architecture, Quick Reference Card |
Każda sekcja opiera się na poprzedniej. Sekcja Decision Framework na końcu zawiera tabelę odniesień, która pozwala dobrać właściwy mechanizm do każdego rodzaju problemu.
Pięciominutowa ścieżka złota
Przed głębokim zanurzeniem oto najkrótsza droga od zera do działającego harness. Jeden hook, jeden skill, jeden subagent, jeden rezultat.
Krok 1: Utworzenie hooka bezpieczeństwa (2 minuty)
Proszę utworzyć .claude/hooks/block-secrets.sh:
#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
if echo "$CMD" | grep -qEi '(AKIA|sk-|ghp_|password=)'; then
echo "BLOCKED: Potential secret in command" >&2
exit 2
fi
Podłączenie w .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": ".claude/hooks/block-secrets.sh" }]
}
]
}
}
Rezultat: Każde polecenie bash uruchamiane przez Claude jest teraz sprawdzane pod kątem wycieku poświadczeń. Model nie może pominąć tej kontroli.
Krok 2: Utworzenie skilla do przeglądu kodu (1 minuta)
Proszę utworzyć .claude/skills/reviewer/SKILL.md z frontmatter (name: reviewer, description: Review code for security issues, bugs, and quality problems. Use when examining changes, reviewing PRs, or auditing code., allowed-tools: Read, Grep, Glob) oraz listą kontrolną: SQL injection, XSS, zakodowane na sztywno sekrety, brak obsługi błędów, funkcje powyżej 50 linii.
Rezultat: Claude automatycznie aktywuje tę wiedzę ekspercką za każdym razem, gdy pojawi się wzmianka o przeglądzie, kontroli lub audycie.
Krok 3: Uruchomienie subagenta (30 sekund)
W dowolnej sesji Claude Code można poprosić Claude o przejrzenie ostatnich 3 commitów pod kątem problemów bezpieczeństwa przy użyciu oddzielnego agenta. Claude uruchamia agenta Explore, który odczytuje diff, stosuje skill przeglądu i zwraca podsumowanie. Główny kontekst pozostaje czysty.
Co zostało uzyskane
Trójwarstwowy harness: deterministyczna bramka bezpieczeństwa (hook), wiedza dziedzinowa aktywująca się automatycznie (skill) oraz izolowana analiza chroniąca kontekst (subagent). Każda z kolejnych sekcji rozwija jedną z tych trzech warstw.
Dlaczego architektura agentów ma znaczenie
Simon Willison ujmuje obecny moment w jednej obserwacji: pisanie kodu jest teraz tanie.8 Zgadza się. Jednak konsekwencją tego jest to, że weryfikacja stała się kosztowną częścią. Tani kod bez infrastruktury weryfikacyjnej produkuje błędy na masową skalę. Inwestycja, która się zwraca, to nie lepszy prompt. To system wokół modelu, który wychwytuje to, co model przeoczy.
Trzy siły sprawiają, że architektura agentów staje się konieczna:
Okna kontekstu są skończone i stratne. Każdy odczyt pliku, wyjście narzędzia i tura rozmowy pochłaniają tokeny. Microsoft Research i Salesforce przetestowały 15 LLM na ponad 200 000 symulowanych rozmów i odkryły średni spadek wydajności o 39% z interakcji jednoturowej do wieloturowej.9 Degradacja rozpoczyna się już po dwóch turach i podąża przewidywalną krzywą: precyzyjne edycje wieloplikowe w pierwszych 30 minutach degradują się do wizji tunelowej jednego pliku w 90. minucie. Dłuższe okna kontekstu tego nie naprawiają. Warunek „Concat” z tego samego badania (cała rozmowa jako pojedynczy prompt) osiągnął 95,1% wydajności jednoturowej przy identycznej treści. Degradacja wynika z granic tur, a nie z limitów tokenów.
Zachowanie modelu jest probabilistyczne, a nie deterministyczne. Polecenie Claude „zawsze uruchom Prettier po edycji plików” działa w około 80% przypadków.3 Model może zapomnieć, postawić na szybkość lub uznać zmianę za „zbyt małą”. Dla zgodności z przepisami, bezpieczeństwa i standardów zespołowych 80% jest niewystarczające. Hooki gwarantują wykonanie: każdy Edit lub Write wyzwala formatter, za każdym razem, bez wyjątków. Deterministyczne wygrywa z probabilistycznym.
Pojedyncze perspektywy pomijają problemy wielowymiarowe. Pojedynczy agent przeglądający endpoint API sprawdził uwierzytelnianie, zweryfikował sanityzację danych wejściowych i potwierdził nagłówki CORS. Stan idealny. Drugi agent, zlecony oddzielnie jako tester penetracyjny, wykrył, że endpoint akceptował nieograniczone parametry zapytań, które mogły wywołać denial-of-service poprzez amplifikację zapytań do bazy danych.7 Pierwszy agent nigdy tego nie sprawdził, ponieważ nic w jego ramach oceny nie traktowało złożoności zapytań jako powierzchni bezpieczeństwa. Ta luka ma charakter strukturalny. Żadne dopracowanie promptu jej nie naprawi.
Architektura agentów odpowiada na wszystkie trzy wyzwania: hooki wymuszają deterministyczne ograniczenia, subagenty zarządzają izolacją kontekstu, a orkiestracja wieloagentowa zapewnia niezależne perspektywy. Razem tworzą harness.
Wzorzec harness
Harness to nie framework. To wzorzec: kompozycyjny zestaw plików, skryptów i konwencji, który otacza agenta kodującego AI deterministyczną infrastrukturą. Komponenty:
┌──────────────────────────────────────────────────────────────┐
│ THE HARNESS PATTERN │
├──────────────────────────────────────────────────────────────┤
│ ORCHESTRATION │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Agent │ │ Agent │ │ Consensus │ │
│ │ Teams │ │ Spawning │ │ Validation│ │
│ └────────────┘ └────────────┘ └────────────┘ │
│ Multi-agent deliberation, parallel research, voting │
├──────────────────────────────────────────────────────────────┤
│ EXTENSION LAYER │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skills │ │ Hooks │ │ Memory │ │ Agents │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ Domain expertise, deterministic gates, persistent state, │
│ specialized subagents │
├──────────────────────────────────────────────────────────────┤
│ INSTRUCTION LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ CLAUDE.md + .claude/rules/ + MEMORY.md │ │
│ └──────────────────────────────────────────────────────┘ │
│ Project context, operational policy, cross-session memory │
├──────────────────────────────────────────────────────────────┤
│ CORE LAYER │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Main Conversation Context (LLM) │ │
│ └──────────────────────────────────────────────────────┘ │
│ Your primary interaction; finite context; costs money │
└──────────────────────────────────────────────────────────────┘
Warstwa instrukcji: Pliki CLAUDE.md i katalogi rules definiują, co agent wie o Pana/Pani projekcie. Ładują się automatycznie przy starcie sesji oraz po każdej kompakcji. Jest to długoterminowa pamięć architektoniczna agenta.
Warstwa rozszerzeń: Skills dostarczają wiedzy domenowej, która aktywuje się automatycznie w zależności od kontekstu. Hooks zapewniają deterministyczne bramki uruchamiane przy każdym pasującym wywołaniu narzędzia. Pliki pamięci utrwalają stan między sesjami. Niestandardowi agenci dostarczają wyspecjalizowanych konfiguracji subagents.
Warstwa orkiestracji: Wzorce wieloagentowe koordynują niezależnych agentów do badań, przeglądu i deliberacji. Budżety spawnowania zapobiegają niekontrolowanej rekursji. Walidacja konsensusu zapewnia jakość.
Kluczowe spostrzeżenie: większość użytkowników pracuje wyłącznie w warstwie Core, obserwując rozrastający się kontekst i rosnące koszty. Zaawansowani użytkownicy konfigurują warstwy Instruction i Extension, a warstwy Core używają wyłącznie do orkiestracji i ostatecznych decyzji.2
Managed vs. self-hosted harness (kwiecień 2026)
Przez większość początku 2026 ścieżka „zbuduj własny harness” była jedyną realną opcją. W kwietniu 2026 to się zmieniło. Anthropic wypuścił Claude Managed Agents w publicznej wersji beta (8 kwietnia): pętla harness + wykonywanie narzędzi + kontener sandbox + persistencja stanu jako REST API, rozliczane według standardowych tokenów plus $0,08 za godzinę-sesji. Aktualizacja OpenAI Agents SDK (16 kwietnia) sformalizowała ten sam podział — harness i compute jako oddzielne warstwy, z natywnymi dostawcami sandbox (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel) oraz snapshot/rehydrate dla przetrwania utraty kontenera.2324
Głębsza powierzchnia SDK po stronie OpenAI pojawiła się w openai-agents Python v0.14.0 (wydany 15 kwietnia 2026; ogłoszony 16 kwietnia): podklasa SandboxAgent klasy Agent z default_manifest, instrukcjami sandbox i capabilities; Manifest opisujący kontrakt świeżego workspace (pliki, katalogi, pliki lokalne, repozytoria Git, env, użytkownicy, mounts); SandboxRunConfig do wiązania per-run klienta sandbox, wstrzykiwania sesji live, nadpisań manifestu, snapshotów oraz limitów współbieżności materializacji. Wbudowane capabilities obejmują dostęp do powłoki, edycję filesystemu, inspekcję obrazów, skills, pamięć sandbox oraz kompakcję. Pamięć sandbox utrwala wyodrębnione lekcje między uruchomieniami i progresywnie je ujawnia; workspace’y obsługują pliki lokalne, wpisy repo Git oraz zdalne mounts (S3, R2, GCS, Azure Blob, S3 Files); snapshoty są przenośne między dostawcami. Backendy: UnixLocalSandboxClient, DockerSandboxClient oraz klienci hostowani dla Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop i Vercel poprzez opcjonalne extras.24
Dla projektów Python, które chcą osadzić runtime Claude Code jako bibliotekę — pomiędzy „wywołaniem claude przez shell” a „REST API do Managed Agents” — claude-agent-sdk-python jest trzecią opcją. Seria z 28-29 kwietnia (v0.1.69 → v0.1.71) podniosła wbudowany CLI do v2.1.123, podniosła próg zależności mcp do >=1.19.0 (starsze wersje cicho odrzucały zwroty CallToolResult z narzędzi MCP in-process, pozostawiając modelowi blob błędu walidacji) oraz dostosowała SandboxNetworkConfig do parytetu schematu z TypeScript SDK (allowedDomains, deniedDomains, allowManagedDomainsOnly, allowMachLookup).30
Rozwidlenie architektoniczne jest teraz realne:
| Wymiar | Self-hosted harness (domyślny w tym przewodniku) | Managed harness (Claude Managed Agents / OpenAI Agents SDK) |
|---|---|---|
| Obciążenie operacyjne | Wszystko prowadzi się samodzielnie | Vendor prowadzi pętlę, sandbox, stan |
| Personalizacja | Całkowita — własne hooks, własne skills, własna pamięć | Ograniczona — punkty rozszerzeń definiowane przez vendora |
| Model kosztów | Token + self-hosted compute | Token + premia za godzinę runtime |
| Trwałość stanu | Projektuje się ją samodzielnie | Vendor checkpointuje przez disconnects |
| Orkiestracja zespołów agentów | Buduje się samodzielnie | Koordynacja wieloagentowa dostarczana przez vendora |
Kiedy wybrać które: self-hosted pozostaje słuszny dla zespołów, które już mają siłę infrastrukturalną, chcą skills/hooks pod własną kontrolą lub głęboko optymalizują konkretny workflow. Managed jest słuszny dla zespołów bez dedykowanych inżynierów platformy, gdy czas do wartości jest ważniejszy niż personalizacja, lub gdy uruchomienia agentów muszą niezawodnie przetrwać zamknięcie laptopa bez konieczności samodzielnego budowania warstwy persistencji. Oba podejścia są kompatybilne — można uruchomić self-hosted harness, który deleguje konkretne długo działające zadania do Managed Agents poprzez ich REST API.
Jak harness wygląda na dysku
~/.claude/
├── CLAUDE.md # Personal global instructions
├── settings.json # User-level hooks and permissions
├── skills/ # Personal skills (44+)
│ ├── code-reviewer/SKILL.md
│ ├── security-auditor/SKILL.md
│ └── api-designer/SKILL.md
├── agents/ # Custom subagent definitions
│ ├── security-reviewer.md
│ └── code-explorer.md
├── rules/ # Categorized rule files
│ ├── security.md
│ ├── testing.md
│ └── git-workflow.md
├── hooks/ # Hook scripts
│ ├── validate-bash.sh
│ ├── auto-format.sh
│ └── recursion-guard.sh
├── configs/ # JSON configuration
│ ├── recursion-limits.json
│ └── deliberation-config.json
├── state/ # Runtime state
│ ├── recursion-depth.json
│ └── agent-lineage.json
├── handoffs/ # Session handoff documents
│ └── deliberation-prd-7.md
└── projects/ # Per-project memory
└── {project}/memory/MEMORY.md
.claude/ # Project-level (in repo)
├── CLAUDE.md # Project instructions
├── settings.json # Project hooks
├── skills/ # Team-shared skills
├── agents/ # Team-shared agents
└── rules/ # Project rules
Każdy plik w tej strukturze służy określonemu celowi. Drzewo ~/.claude/ to osobista infrastruktura, która ma zastosowanie do wszystkich projektów. Drzewo .claude/ w każdym repozytorium jest specyficzne dla projektu i współdzielone przez git. Razem tworzą kompletny harness.
System umiejętności
Umiejętności to rozszerzenia wywoływane przez model. Claude wykrywa je i stosuje automatycznie na podstawie kontekstu, bez konieczności jawnego wywoływania.4 W momencie, gdy zauważa Pan/Pani, że ponownie tłumaczy ten sam kontekst w kolejnych sesjach, należy zbudować umiejętność.
Kiedy budować umiejętność
| Sytuacja | Należy zbudować… | Dlaczego |
|---|---|---|
| Wkleja Pan/Pani tę samą listę kontrolną w każdej sesji | Umiejętność (Skill) | Wiedza dziedzinowa aktywowana automatycznie |
| Uruchamia Pan/Pani jawnie tę samą sekwencję poleceń | Polecenie ukośnikowe (Slash command) | Akcja wywoływana przez użytkownika z przewidywalnym wyzwalaczem |
| Potrzebna jest izolowana analiza, która nie powinna zanieczyszczać kontekstu | Subagent | Oddzielne okno kontekstu dla skupionej pracy |
| Potrzebny jest jednorazowy prompt z konkretnymi instrukcjami | Nic | Wystarczy go po prostu wpisać. Nie wszystko wymaga abstrakcji. |
Umiejętności służą wiedzy, którą Claude ma zawsze dostępną. Polecenia ukośnikowe służą akcjom, które uruchamia Pan/Pani jawnie. Decydując między nimi, warto zadać pytanie: „Czy Claude powinien stosować to automatycznie, czy też ja decyduję, kiedy to uruchomić?”
Tworzenie umiejętności
Umiejętności znajdują się w czterech możliwych lokalizacjach, od najszerszego do najwęższego zakresu:4
| Zakres | Lokalizacja | Stosuje się do |
|---|---|---|
| Korporacyjny | Zarządzane ustawienia | Wszystkich użytkowników w organizacji |
| Osobisty | ~/.claude/skills/<name>/SKILL.md |
Wszystkich Pana/Pani projektów |
| Projektowy | .claude/skills/<name>/SKILL.md |
Tylko bieżącego projektu |
| Wtyczki | <plugin>/skills/<name>/SKILL.md |
Tam, gdzie wtyczka jest włączona |
Każda umiejętność wymaga pliku SKILL.md z nagłówkiem YAML:
---
name: code-reviewer
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
allowed-tools: Read, Grep, Glob
---
# Code Review Expertise
## Security Checks
When reviewing code, verify:
### Input Validation
- All user input sanitized before database operations
- Parameterized queries (no string interpolation in SQL)
- Output encoding for rendered HTML content
### Authentication
- Session tokens validated on every protected endpoint
- Permission checks before data mutations
- No hardcoded credentials or API keys in source
Referencja pól nagłówka frontmatter
| Pole | Wymagane | Cel |
|---|---|---|
name |
Tak | Unikalny identyfikator (małe litery, łączniki, maks. 64 znaki) |
description |
Tak | Wyzwalacz wykrywania (maks. 1024 znaki). Claude używa go, aby zdecydować, kiedy zastosować umiejętność |
allowed-tools |
Nie | Ogranicza możliwości Claude (np. Read, Grep, Glob dla trybu tylko-do-odczytu) |
disable-model-invocation |
Nie | Zapobiega autoaktywacji; umiejętność aktywuje się tylko poprzez /skill-name |
user-invocable |
Nie | Ustawienie false całkowicie ukrywa ją z menu / |
model |
Nie | Nadpisuje, którego modelu używać, gdy umiejętność jest aktywna |
context |
Nie | Ustawienie fork uruchamia ją w izolowanym oknie kontekstu |
agent |
Nie | Uruchamia jako subagent z własnym izolowanym kontekstem |
hooks |
Nie | Definiuje hooki cyklu życia ograniczone do tej umiejętności |
$ARGUMENTS |
Nie | Podstawienie ciągu znaków: zastępowane danymi wejściowymi użytkownika po /skill-name |
Pole opisu jest wszystkim
Na początku sesji Claude Code wyodrębnia pola name i description każdej umiejętności i wstrzykuje je do kontekstu Claude. Gdy wysyła Pan/Pani wiadomość, Claude używa rozumowania modelu językowego, aby zdecydować, czy któraś z umiejętności jest istotna. Niezależna analiza kodu źródłowego Claude Code potwierdza ten mechanizm: opisy umiejętności są wstrzykiwane do sekcji available_skills promptu systemowego, a model używa standardowego rozumienia języka do wyboru istotnych umiejętności.10
Słaby opis:
description: Helps with code
Skuteczny opis:
description: Review code for security vulnerabilities, performance issues,
and best practice violations. Use when examining code changes, reviewing
PRs, analyzing code quality, or when asked to review, audit, or check code.
Skuteczny opis zawiera: co robi (przegląda kod pod kątem konkretnych typów problemów), kiedy go użyć (badanie zmian, PR-ów, analiza jakości) oraz frazy wyzwalające (review, audit, check), które użytkownicy naturalnie wpisują.
Budżet kontekstu
Wszystkie opisy umiejętności współdzielą budżet kontekstu, który skaluje się dynamicznie do 1% okna kontekstu, z wartością zapasową 8000 znaków.4 Przy wielu umiejętnościach należy utrzymywać każdy opis zwięzły i umieszczać kluczowy przypadek użycia na początku. Można nadpisać budżet poprzez zmienną środowiskową SLASH_COMMAND_TOOL_CHAR_BUDGET,11 lecz lepszym rozwiązaniem są krótsze, precyzyjniejsze opisy. Polecenie /context w trakcie sesji pozwala sprawdzić, czy jakieś umiejętności są wykluczane.
Pliki pomocnicze i organizacja
Umiejętności mogą odwoływać się do dodatkowych plików w tym samym folderze:
~/.claude/skills/code-reviewer/
├── SKILL.md # Required: frontmatter + core expertise
├── SECURITY_PATTERNS.md # Referenced: detailed vulnerability patterns
└── PERFORMANCE_CHECKLIST.md # Referenced: optimization guidelines
Należy odwoływać się do nich z SKILL.md za pomocą linków względnych. Claude czyta te pliki na żądanie, gdy umiejętność się aktywuje. Plik SKILL.md warto utrzymywać poniżej 500 linii, a szczegółowy materiał referencyjny przenosić do plików pomocniczych.12
Współdzielenie umiejętności przez Git
Umiejętności projektowe (.claude/skills/ w katalogu głównym repozytorium) są współdzielone poprzez kontrolę wersji:4
mkdir -p .claude/skills/domain-expert
# ... write SKILL.md ...
git add .claude/skills/
git commit -m "feat: add domain-expert skill for payment processing rules"
git push
Gdy współpracownicy zaktualizują repozytorium, otrzymują umiejętność automatycznie. Bez instalacji, bez konfiguracji. To najskuteczniejszy sposób ujednolicenia wiedzy w zespole.
Umiejętności jako biblioteka promptów
Poza umiejętnościami jednofunkcyjnymi struktura folderów działa jak zorganizowana biblioteka promptów:
~/.claude/skills/
├── code-reviewer/ # Activates on: review, audit, check
├── api-designer/ # Activates on: design API, endpoint, schema
├── sql-analyst/ # Activates on: query, database, migration
├── deploy-checker/ # Activates on: deploy, release, production
└── incident-responder/ # Activates on: error, failure, outage, debug
Każda umiejętność koduje inny aspekt Pana/Pani wiedzy specjalistycznej. Razem tworzą bazę wiedzy, z której Claude czerpie automatycznie na podstawie kontekstu. Mniej doświadczony programista otrzymuje wskazówki na poziomie seniora bez konieczności pytania.
Umiejętności komponują się z hookami
Umiejętności mogą definiować własne hooki w nagłówku frontmatter, które aktywują się tylko podczas działania umiejętności. Tworzy to zachowanie specyficzne dla dziedziny, które nie zanieczyszcza innych sesji:2
---
name: deploy-checker
description: Verify deployment readiness. Use when preparing to deploy,
release, or push to production.
hooks:
PreToolUse:
- matcher: Bash
hooks:
- type: command
command: "bash -c 'INPUT=$(cat); CMD=$(echo \"$INPUT\" | jq -r \".tool_input.command\"); if echo \"$CMD\" | grep -qE \"deploy|release|publish\"; then echo \"DEPLOYMENT COMMAND DETECTED. Running pre-flight checks.\" >&2; fi'"
---
Umiejętności filozoficzne aktywują się automatycznie poprzez hooki SessionStart, wstrzykując ograniczenia jakościowe do każdej sesji bez jawnego wywołania. Sama umiejętność stanowi wiedzę. Hook stanowi egzekwowanie. Razem tworzą warstwę polityki.
Częste błędy w umiejętnościach
Zbyt szerokie opisy. Umiejętność git-rebase-helper, która aktywuje się przy dowolnym promptcie związanym z gitem (rebase’y, merge’e, cherry-picki, a nawet git status), zanieczyszcza kontekst w 80% sesji. Rozwiązaniem jest albo zawężenie opisu, albo dodanie disable-model-invocation: true i wymaganie jawnego wywołania /skill-name.4
Zbyt wiele umiejętności konkurujących o budżet. Więcej umiejętności oznacza więcej opisów konkurujących o 1% budżetu kontekstu. Jeśli zauważa Pan/Pani, że umiejętności się nie aktywują, należy sprawdzić /context w poszukiwaniu wykluczonych. Lepiej priorytetowo traktować mniej, dobrze opisanych umiejętności niż wiele niejasnych.
Krytyczne informacje ukryte w plikach pomocniczych. Claude czyta SKILL.md natychmiast, lecz pliki pomocnicze otwiera dopiero w razie potrzeby. Jeśli krytyczna informacja znajduje się w pliku pomocniczym, Claude może jej nie znaleźć. Niezbędne informacje należy umieszczać bezpośrednio w SKILL.md.4
Powierzchnia umiejętności SDK (8 maja 2026)
Samodzielnie hostowane harness’y na claude-agent-sdk-python w wersji v0.1.77+ powinny używać opcji skills w ClaudeAgentOptions, aby deklarować dostępne umiejętności, a nie starszej wartości "Skill" w allowed_tools.37 Skrót "Skill" jest przestarzały, a dedykowana opcja dostarcza Claude Code bardziej ustrukturyzowanych informacji o tym, które umiejętności są dostępne. Dołączony CLI w wersji v0.1.77 to v2.1.133.
Architektura hooków
Hooki to polecenia powłoki uruchamiane przez zdarzenia cyklu życia Claude Code.3 Działają poza LLM jako zwykłe skrypty, a nie jako prompty interpretowane przez model. Model chce wykonać rm -rf /? 10-liniowy skrypt bash sprawdza polecenie względem listy blokowanych i odrzuca je, zanim powłoka cokolwiek zobaczy. Hook uruchamia się niezależnie od tego, czy model tego chce.
Dostępne zdarzenia
Claude Code udostępnia 29 udokumentowanych zdarzeń cyklu życia w ośmiu kategoriach na moment aktualizacji niniejszego przewodnika. Lista zdarzeń rośnie wraz z kolejnymi wydaniami, więc dokumentację referencyjną należy traktować jako źródło prawdy i przed podłączeniem produkcyjnych hooków warto sprawdzić aktualną pełną tabelę w ściądze:13
| Kategoria | Zdarzenia | Czy może blokować? |
|---|---|---|
| Sesja | SessionStart, Setup, SessionEnd |
Nie |
| Użytkownik / zakończenie | UserPromptSubmit, UserPromptExpansion, Stop, StopFailure, TeammateIdle |
Prompt/expansion/stop/idle mogą blokować; StopFailure nie może |
| Narzędzia | PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch |
Pre/permission/batch mogą blokować; zdarzenia post nie mogą |
| Subagent / zadanie | SubagentStart, SubagentStop, TaskCreated, TaskCompleted |
Stop/task mogą blokować; start nie może |
| Kontekst | PreCompact, PostCompact, InstructionsLoaded |
PreCompact może blokować; post/load nie mogą |
| System plików / przestrzeń robocza | CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove |
Tworzenie worktree może blokować; pozostałe nie |
| Konfiguracja / powiadomienia | ConfigChange, Notification |
Zmiany konfiguracji mogą blokować z wyjątkiem ustawień zasad; powiadomienia nie mogą |
| MCP | Elicitation, ElicitationResult |
Tak |
Semantyka kodów wyjścia
Kody wyjścia decydują o tym, czy hooki blokują akcje:3
| Kod wyjścia | Znaczenie | Działanie |
|---|---|---|
| 0 | Sukces | Operacja jest kontynuowana. Stdout pokazywane w trybie verbose. |
| 2 | Błąd blokujący | Operacja zostaje zatrzymana. Stderr staje się komunikatem błędu przekazywanym do Claude. |
| 1, 3, itd. | Błąd nieblokujący | Operacja jest kontynuowana. Stderr pokazywane tylko w trybie verbose (Ctrl+O). |
Krytyczna uwaga: Każdy hook bezpieczeństwa musi używać exit 2, a nie exit 1. Exit 1 to nieblokujące ostrzeżenie. Niebezpieczne polecenie i tak zostanie wykonane. Jest to najczęstszy błąd przy hookach w różnych zespołach.14
Konfiguracja hooków
Hooki znajdują się w plikach ustawień. Poziom projektu (.claude/settings.json) dla hooków współdzielonych. Poziom użytkownika (~/.claude/settings.json) dla hooków osobistych:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-bash.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Pole matcher filtruje wartość specyficzną dla zdarzenia. Dla zdarzeń narzędziowych dopasowuje wartości tool_name takie jak Bash, Edit, Write, Read, Glob, Grep, nazwy narzędzi MCP w stylu mcp__server__tool lub * dla wszystkich narzędzi. Proste nazwy oraz listy rozdzielone znakiem | to dopasowania dokładne; wartości z innymi znakami są traktowane jako wyrażenia regularne JavaScript. Niektóre zdarzenia nie obsługują matcherów i zawsze uruchamiają się, gdy są skonfigurowane.13
Protokół wejścia/wyjścia hooków
Hooki otrzymują JSON na stdin z pełnym kontekstem:
{
"tool_name": "Bash",
"tool_input": {
"command": "npm test",
"description": "Run test suite"
},
"session_id": "abc-123",
"agent_id": "main",
"agent_type": "main"
}
W celu zaawansowanej kontroli hooki PreToolUse mogą zwracać JSON, aby modyfikować dane wejściowe narzędzia, wstrzykiwać kontekst lub podejmować decyzje uprawnień. Należy używać opakowania hookSpecificOutput — starszy format najwyższego poziomu decision/reason jest przestarzały dla PreToolUse:
{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "Command validated and modified",
"updatedInput": {
"command": "npm test -- --coverage --ci"
},
"additionalContext": "Note: This database has a 5-second query timeout."
}
}
Trzy rodzaje gwarancji
Przed napisaniem jakiegokolwiek hooka warto zadać pytanie: jakiej gwarancji potrzebuję?14
Gwarancje formatowania zapewniają spójność po fakcie. Hooki PostToolUse na Write/Edit uruchamiają formater po każdej zmianie pliku. Wynik modelu nie ma znaczenia, ponieważ formater normalizuje wszystko.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash -c 'if [[ \"$FILE_PATH\" == *.py ]]; then black --quiet \"$FILE_PATH\" 2>/dev/null; elif [[ \"$FILE_PATH\" == *.js ]] || [[ \"$FILE_PATH\" == *.ts ]]; then npx prettier --write \"$FILE_PATH\" 2>/dev/null; fi'"
}
]
}
]
}
}
Gwarancje bezpieczeństwa zapobiegają niebezpiecznym akcjom przed ich wykonaniem. Hooki PreToolUse na Bash sprawdzają polecenia i blokują destrukcyjne wzorce z kodem wyjścia 2:
#!/bin/bash
# validate-bash.sh — block dangerous commands
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "rm\s+-rf\s+/|git\s+push\s+(-f|--force)\s+(origin\s+)?main|git\s+reset\s+--hard|DROP\s+TABLE"; then
echo "BLOCKED: Dangerous command detected: $CMD" >&2
exit 2
fi
Gwarancje jakości weryfikują stan w punktach decyzyjnych. Hooki PreToolUse na poleceniach git commit uruchamiają linter lub zestaw testów i blokują commit, jeśli kontrole jakości nie przejdą:
#!/bin/bash
# quality-gate.sh — lint before commit
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE "^git\s+commit"; then
if ! LINT_OUTPUT=$(ruff check . --select E,F,W 2>&1); then
echo "LINT FAILED -- fix before committing:" >&2
echo "$LINT_OUTPUT" >&2
exit 2
fi
fi
Typy hooków poza poleceniami powłoki
Claude Code obsługuje pięć typów hooków:13
Hooki poleceniowe (type: "command") uruchamiają skrypty powłoki. Szybkie, deterministyczne, bez kosztu tokenów.
Hooki narzędzi MCP (type: "mcp_tool") wywołują narzędzie na już połączonym serwerze MCP. Warto z nich korzystać, gdy logika walidacji jest już dostępna za granicą MCP i nie potrzebuje osobnego skryptu powłoki.
Hooki promptowe (type: "prompt") wysyłają jednoturową wiadomość do szybkiego modelu Claude. Model zwraca { "ok": true }, aby zezwolić, lub { "ok": false, "reason": "..." }, aby zablokować. Stosować do zniuansowanej oceny, której nie da się wyrazić wyrażeniami regularnymi.
Hooki agentowe (type: "agent") tworzą subagenta z dostępem do narzędzi (Read, Grep, Glob) w celu wieloturowej weryfikacji. Są eksperymentalne; do produkcyjnych bramek jakościowych lepiej preferować hooki poleceniowe, a hooki agentowe rezerwować dla kontroli, które naprawdę wymagają inspekcji rzeczywistych plików lub wyników testów:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "Verify all unit tests pass. Run the test suite and check results. $ARGUMENTS",
"timeout": 120
}
]
}
]
}
}
Hooki HTTP (type: "http") wysyłają JSON wejściowe zdarzenia jako żądanie POST na adres URL i odbierają JSON z powrotem. Stosować do webhooków, zewnętrznych usług powiadomień lub walidacji opartej na API (v2.1.63+). Niewspierane dla zdarzeń SessionStart:
{
"hooks": {
"PostToolUse": [
{
"hooks": [
{
"type": "http",
"url": "https://your-webhook.example.com/hook",
"headers": { "Authorization": "Bearer $WEBHOOK_TOKEN" },
"allowedEnvVars": ["WEBHOOK_TOKEN"],
"timeout": 10
}
]
}
]
}
}
Hooki asynchroniczne
Hooki mogą działać w tle bez blokowania wykonywania. Należy dodać async: true dla niekrytycznych operacji, takich jak powiadomienia i logowanie:13
{
"type": "command",
"command": ".claude/hooks/notify-slack.sh",
"async": true
}
Używać async dla powiadomień, telemetrii i kopii zapasowych. Nigdy nie używać async dla formatowania, walidacji ani niczego, co musi się zakończyć przed kolejną akcją.
Dispatchery zamiast niezależnych hooków
Uruchamianie siedmiu hooków jednocześnie wyzwalanych przez to samo zdarzenie, z których każdy odczytuje stdin niezależnie, tworzy sytuacje wyścigu. Dwa hooki zapisujące jednocześnie do tego samego pliku stanu JSON obetną JSON. Każdy kolejny hook parsujący ten plik się popsuje.2
Rozwiązanie: jeden dispatcher na zdarzenie, który uruchamia hooki sekwencyjnie ze stdin zachowanego w pamięci podręcznej:
#!/bin/bash
# dispatcher.sh — run hooks sequentially with cached stdin
INPUT=$(cat)
HOOK_DIR="$HOME/.claude/hooks/pre-tool-use.d"
for hook in "$HOOK_DIR"/*.sh; do
[ -x "$hook" ] || continue
echo "$INPUT" | "$hook"
EXIT_CODE=$?
if [ "$EXIT_CODE" -eq 2 ]; then
exit 2 # Propagate block
fi
done
Debugowanie hooków
Pięć technik debugowania hooków, które po cichu zawodzą:14
- Testowanie skryptów niezależnie. Przekazać przykładowy JSON:
echo '{"tool_input":{"command":"git commit -m test"}}' | bash your-hook.sh - Używanie stderr do wyjścia debugowego. Stderr przy kodzie wyjścia 2 jest przekazywane z powrotem do Claude jako komunikat błędu. Nieblokujące stderr (exit 1, 3, itp.) pojawia się tylko w trybie verbose (Ctrl+O).
- Uważać na błędy jq. Niewłaściwe ścieżki JSON zwracają po cichu
null. Wyrażeniajqwarto testować na rzeczywistym wejściu narzędzia. - Weryfikowanie kodów wyjścia. Hook PreToolUse używający
exit 1nie zapewnia żadnego egzekwowania, choć z pozoru działa. - Trzymanie hooków szybkimi. Hooki działają synchronicznie. Wszystkie hooki należy utrzymywać poniżej 2 sekund, najlepiej poniżej 500 ms.
Strumieniowanie zdarzeń hooków po stronie SDK
Samodzielnie hostowane harnessy zbudowane na claude-agent-sdk-python (v0.1.74+, 6 maja 2026) mogą subskrybować zdarzenia hooków bezpośrednio ze strumienia wiadomości, zamiast przechodzić przez wywołania zwrotne skryptów powłoki.36 Po ustawieniu include_hook_events=True na ClaudeAgentOptions obiekty HookEventMessage (PreToolUse, PostToolUse, Stop i inne) są emitowane przez ten sam iterator co wiadomości asystenta i wyniki narzędzi. Odpowiada to opcji includeHookEvents w SDK TypeScript; dołączony CLI został podniesiony do v2.1.129 w tym samym wydaniu.
Wzorzec strumienia zdarzeń jest właściwy, gdy harness mieści się już w Python i sygnały hooków mają być w tym samym przepływie sterowania, co wyjście modelu. Kontrakt skryptów powłoki dla hooków (kody wyjścia, stdin JSON, dispatchery) pozostaje właściwą odpowiedzią dla harnessów, które łączą wiele narzędzi, współdzielą hooki między Claude Code i Codex lub potrzebują semantyki kodów wyjścia do blokowania.
Pochodzenie nakładu i sesji (7-8 maja 2026)
Dwa dodatki w Claude Code v2.1.132 i v2.1.133 dają hookom i podprocesom lepszy sygnał o ich kontekście wykonania:3839
effort.levelw danych wejściowych hooka. Hooki otrzymują teraz pole JSONeffort.levelw tym samym wejściu, które przenositool_inputisession_id. Ta sama wartość jest eksportowana jako zmienna środowiskowa$CLAUDE_EFFORT, dzięki czemu polecenia Bash mogą ją odczytać bez parsowania JSON. Można tego użyć do skalowania kosztu hooka według poziomu nakładu: pominąć kosztowną walidację dlalow, uruchomić pełną bramkę bezpieczeństwa dlaxhighlubmax.- Zmienna środowiskowa
CLAUDE_CODE_SESSION_IDw podprocesach Bash. Podprocesy narzędzia Bash widzą teraz tę samą wartośćsession_id, którą widzą hooki, udostępnioną jakoCLAUDE_CODE_SESSION_ID. Zamyka to lukę proweniencji dla narzędzi, które logują stan na sesję i wcześniej nie mogły skorelować zdarzeń podprocesów ze zdarzeniami hooków.
Oba sygnały są dostępne bez zmian w kodzie; istniejące hooki ignorujące nowe pola działają nadal.
Pamięć i kontekst
Każda rozmowa z AI działa w ramach skończonego okna kontekstu. W miarę jak rozmowa rośnie, system kompresuje wcześniejsze tury, aby zrobić miejsce dla nowej zawartości. Kompresja jest stratna. Decyzje architektoniczne udokumentowane w turze 3 mogą nie przetrwać do tury 15.9
Trzy mechanizmy załamania w rozmowach wieloturowych
Badanie MSR/Salesforce zidentyfikowało trzy niezależne mechanizmy, z których każdy wymaga innej interwencji:9
| Mechanizm | Co się dzieje | Interwencja |
|---|---|---|
| Kompresja kontekstu | Wcześniejsze informacje są odrzucane, aby pomieścić nową zawartość | Zapisywanie stanu w systemie plików |
| Utrata spójności rozumowania | Model zaprzecza swoim wcześniejszym decyzjom w kolejnych turach | Iteracja w świeżym kontekście (pętla Ralph) |
| Awaria koordynacji | Wiele agentów posiada różne migawki stanu | Protokoły współdzielonego stanu między agentami |
Strategia 1: System plików jako pamięć
Najbardziej niezawodna pamięć przekraczająca granice kontekstu znajduje się w systemie plików. Claude Code czyta CLAUDE.md i pliki pamięci na początku każdej sesji oraz po każdej kompaktacji.6
~/.claude/
├── configs/ # 14 JSON configs (thresholds, rules, budgets)
│ ├── deliberation-config.json
│ ├── recursion-limits.json
│ └── consensus-profiles.json
├── hooks/ # 95 lifecycle event handlers
├── skills/ # 44 reusable knowledge modules
├── state/ # Runtime state (recursion depth, agent lineage)
├── handoffs/ # 49 multi-session context documents
├── docs/ # 40+ system documentation files
└── projects/ # Per-project memory directories
└── {project}/memory/
└── MEMORY.md # Always loaded into context
Plik MEMORY.md rejestruje błędy, decyzje i wzorce we wszystkich sesjach. Gdy odkryje Pan/Pani, że ((VAR++)) zawodzi z set -e w bash, gdy VAR wynosi 0, należy to zapisać. Trzy sesje później, gdy napotka się podobny przypadek brzegowy z liczbami całkowitymi w Python, wpis w MEMORY.md ujawni ten wzorzec.15
Auto Memory (v2.1.32+): Claude Code automatycznie zapisuje i przypomina kontekst projektu. Podczas pracy Claude zapisuje obserwacje w ~/.claude/projects/{project-path}/memory/MEMORY.md. Auto memory ładuje pierwsze 200 linii do podpowiedzi systemowej na początku sesji. Warto utrzymywać ją zwięzłą i odsyłać do osobnych plików tematycznych zawierających szczegółowe notatki.6
Strategia 2: Proaktywna kompaktacja
Polecenie /compact w Claude Code podsumowuje rozmowę i zwalnia przestrzeń kontekstową, zachowując kluczowe decyzje, zawartość plików oraz stan zadań.15
Kiedy stosować kompaktację: - Po ukończeniu odrębnego podzadania (zaimplementowana funkcja, naprawiony błąd) - Przed rozpoczęciem pracy w nowym obszarze bazy kodu - Gdy Claude zaczyna się powtarzać lub zapominać wcześniejszy kontekst - Mniej więcej co 25-30 minut podczas intensywnych sesji
Niestandardowe instrukcje kompaktacji w CLAUDE.md:
# Summary Instructions
When using compact, focus on:
- Recent code changes
- Test results
- Architecture decisions made this session
Strategia 3: Przekazania między sesjami
W przypadku zadań obejmujących wiele sesji warto tworzyć dokumenty przekazania, które rejestrują pełny stan:
## Handoff: Deliberation Infrastructure PRD-7
**Status:** Hook wiring complete, 81 Python unit tests passing
**Files changed:** hooks/post-deliberation.sh, hooks/deliberation-pride-check.sh
**Decision:** Placed post-deliberation in PostToolUse:Task, pride-check in Stop
**Blocked:** Spawn budget model needs inheritance instead of depth increment
**Next:** PRD-8 integration tests in tests/test_deliberation_lib.py
Struktura Status/Files/Decision/Blocked/Next dostarcza kolejnej sesji pełnego kontekstu przy minimalnym koszcie tokenów. Rozpoczęcie nowej sesji za pomocą claude -c (kontynuacja) lub odczytanie dokumentu przekazania prowadzi prosto do implementacji.15
Strategia 4: Iteracja w świeżym kontekście (pętla Ralph)
Dla sesji przekraczających 60-90 minut warto uruchamiać świeżą instancję Claude na każdą iterację. Stan jest zachowywany w systemie plików, a nie w pamięci konwersacyjnej. Każda iteracja otrzymuje pełny budżet kontekstu:16
Iteration 1: [200K tokens] -> writes code, creates files, updates state
Iteration 2: [200K tokens] -> reads state from disk, continues
Iteration 3: [200K tokens] -> reads updated state, continues
...
Iteration N: [200K tokens] -> reads final state, verifies criteria
Dla porównania pojedyncza długa sesja:
Minute 0: [200K tokens available] -> productive
Minute 30: [150K tokens available] -> somewhat productive
Minute 60: [100K tokens available] -> degraded
Minute 90: [50K tokens available] -> significantly degraded
Minute 120: [compressed, lossy] -> errors accumulate
Podejście świeżego kontekstu na iterację wymienia 15-20% narzutu na krok orientacji (czytanie plików stanu, skanowanie historii git) w zamian za pełne zasoby poznawcze w każdej iteracji.16 Kalkulacja kosztów i korzyści: dla sesji poniżej 60 minut pojedyncza rozmowa jest bardziej efektywna. Powyżej 90 minut świeży kontekst daje wyższej jakości wyniki pomimo narzutu.
Strategia 5: Zarządzane kuratorowanie pamięci (Dreaming)
Anthropic’s Claude Managed Agents wprowadziło Dreaming jako Research Preview 6 maja 2026.35 Według Anthropic: „Dreaming to zaplanowany proces, który przegląda sesje agentów oraz magazyny pamięci, wyodrębnia wzorce i kuratoruje pamięć, dzięki czemu agenci doskonalą się w czasie.”35
Dreaming działa w tle pomiędzy sesjami, poza ścieżką krytyczną. Uzupełnia, a nie zastępuje wzorzec systemu plików jako pamięci: plik MEMORY.md pozostaje powierzchnią nośną; Dreaming zapisuje wyselekcjonowane wpisy pamięci do magazynu pamięci Managed Agents, który agent czyta na początku sesji. Oba wzorce współistnieją w przypadku harness’ów łączących stan systemu plików zarządzany samodzielnie z kuratorowaniem po stronie zarządzanej.
| Pamięć w systemie plików | Dreaming (zarządzane) | |
|---|---|---|
| Gdzie znajduje się pamięć | Pana/Pani repozytorium, pod kontrolą wersji | Magazyn pamięci zarządzany przez Anthropic |
| Kiedy się aktualizuje | Wpisy zapisuje się ręcznie lub przez hooki | Proces w tle pomiędzy sesjami |
| Co rejestruje | Decyzje, błędy, wzorce, które oznaczy się ręcznie | Wzorce wyodrębnione z historii sesji |
| Najlepsze do | Wiedzy instytucjonalnej specyficznej dla projektu | Odkrywania międzysesyjnych wzorców, których nie wychwyci się ręcznie |
Dreaming jest w fazie Research Preview, więc zachowanie może się zmienić. Wzorce session-handoffs i CLAUDE.md udokumentowane powyżej pozostają autorytatywnym mechanizmem pamięci dla harness’ów hostowanych samodzielnie.
Antywzorce
Czytanie całych plików, gdy potrzeba 10 linii. Pojedyncze odczytanie pliku liczącego 2000 linii zużywa 15 000-20 000 tokenów. Warto stosować przesunięcia linii: Read file.py offset=100 limit=20 oszczędza zdecydowaną większość tego kosztu.15
Trzymanie szczegółowych wyjść błędów w kontekście. Po debugowaniu błędu kontekst zawiera ponad 40 śladów stosu z nieudanych iteracji. Pojedyncze /compact po naprawie błędu uwalnia ten martwy ciężar.
Rozpoczynanie każdej sesji od czytania wszystkich plików. Należy pozwolić narzędziom glob i grep w Claude Code znajdować odpowiednie pliki na żądanie, oszczędzając ponad 100 000 tokenów niepotrzebnego wstępnego ładowania.15
Wzorce subagentów
Subagenty to wyspecjalizowane instancje Claude, które niezależnie obsługują złożone zadania. Rozpoczynają pracę z czystym kontekstem (bez zanieczyszczenia z głównej rozmowy), działają z określonymi narzędziami i zwracają wyniki w formie podsumowań. Wyniki eksploracji nie obciążają głównej rozmowy; zwracane są wyłącznie wnioski.5
Wbudowane typy subagentów
| Typ | Model | Tryb | Narzędzia | Zastosowanie |
|---|---|---|---|---|
| Explore | Haiku (szybki) | Tylko do odczytu | Glob, Grep, Read, bezpieczny bash | Eksploracja bazy kodu, wyszukiwanie plików |
| General-purpose | Dziedziczony | Pełny odczyt/zapis | Wszystkie dostępne | Złożone badanie + modyfikacja |
| Plan | Dziedziczony (lub Opus) | Tylko do odczytu | Read, Glob, Grep, Bash | Planowanie przed wykonaniem |
Tworzenie niestandardowych subagentów
Proszę zdefiniować subagenty w .claude/agents/ (projekt) lub ~/.claude/agents/ (osobiste):
---
name: security-reviewer
description: Expert security code reviewer. Use PROACTIVELY after any code
changes to authentication, authorization, or data handling.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
You are a senior security engineer reviewing code for vulnerabilities.
When invoked:
1. Identify the files that were recently changed
2. Analyze for OWASP Top 10 vulnerabilities
3. Check for secrets, hardcoded credentials, SQL injection
4. Report findings with severity levels and remediation steps
Focus on actionable security findings, not style issues.
Pola konfiguracyjne subagentów
| Pole | Wymagane | Przeznaczenie |
|---|---|---|
name |
Tak | Unikalny identyfikator (małe litery + myślniki) |
description |
Tak | Kiedy wywoływać (proszę uwzględnić „PROACTIVELY”, aby zachęcić do automatycznej delegacji) |
tools |
Nie | Rozdzielone przecinkami. Dziedziczy wszystkie narzędzia, jeśli pominięte. Obsługuje Agent(agent_type) w celu ograniczenia możliwych do uruchomienia agentów |
disallowedTools |
Nie | Narzędzia do odrzucenia, usuwane z odziedziczonej lub określonej listy |
model |
Nie | sonnet, opus, haiku, inherit (domyślnie: inherit) |
permissionMode |
Nie | default, acceptEdits, delegate, dontAsk, bypassPermissions, plan |
maxTurns |
Nie | Maksymalna liczba tur agentowych, po których subagent się zatrzymuje |
memory |
Nie | Zakres pamięci trwałej: user, project, local |
skills |
Nie | Automatycznie ładuje zawartość skills do kontekstu subagenta przy starcie. Od v2.1.133 subagenty również wykrywają skills projektu, użytkownika i wtyczek poprzez narzędzie Skill w taki sam sposób jak sesja nadrzędna. Wcześniejsze wersje cicho usuwały je z kontekstu subagenta.39 |
hooks |
Nie | Hooks cyklu życia ograniczone do wykonania tego subagenta |
background |
Nie | Zawsze uruchamiaj jako zadanie w tle |
isolation |
Nie | Ustawione na worktree dla izolowanej kopii git worktree |
Izolacja worktree
Subagenty mogą działać w tymczasowych git worktrees, zapewniając kompletną, izolowaną kopię repozytorium:5
---
name: experimental-refactor
description: Attempt risky refactoring in isolation
isolation: worktree
tools: Read, Write, Edit, Bash, Grep, Glob
---
You have an isolated copy of the repository. Make changes freely.
If the refactoring succeeds, the changes can be merged back.
If it fails, the worktree is discarded with no impact on the main branch.
Izolacja worktree jest niezbędna w przypadku prac eksperymentalnych, które mogłyby zepsuć bazę kodu.
Równoległe subagenty
Równoległe subagenty warto wykorzystywać do niezależnych zadań badawczych, które nie wymagają wzajemnej koordynacji:5
> Have three explore agents search in parallel:
> 1. Authentication code
> 2. Database models
> 3. API routes
Każdy agent działa we własnym oknie kontekstu, znajduje istotny kod i zwraca podsumowanie. Główny kontekst pozostaje czysty.
Ochrona przed rekursją
Bez limitów uruchamiania agenty delegują pracę do agentów, którzy delegują do kolejnych agentów, a każdy z nich traci kontekst i marnuje tokeny. Wzorzec ochrony przed rekursją wymusza budżety:16
#!/bin/bash
# recursion-guard.sh — enforce spawn budget
CONFIG_FILE="${HOME}/.claude/configs/recursion-limits.json"
STATE_FILE="${HOME}/.claude/state/recursion-depth.json"
MAX_DEPTH=2
MAX_CHILDREN=5
DELIB_SPAWN_BUDGET=2
DELIB_MAX_AGENTS=12
# Read current depth
current_depth=$(jq -r '.depth // 0' "$STATE_FILE" 2>/dev/null)
if [[ "$current_depth" -ge "$MAX_DEPTH" ]]; then
echo "BLOCKED: Maximum recursion depth ($MAX_DEPTH) reached" >&2
exit 2
fi
# Increment depth using safe arithmetic (not ((VAR++)) with set -e)
new_depth=$((current_depth + 1))
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Kluczowa lekcja: Należy stosować budżety uruchamiania, a nie tylko limity głębokości. Limity oparte na głębokości śledzą łańcuchy rodzic-dziecko (blokowane na głębokości 3), ale pomijają szerokość: 23 agentów na głębokości 1 to wciąż „głębokość 1”. Budżet uruchamiania śledzi łączną liczbę aktywnych dzieci na rodzica, ograniczoną do konfigurowalnego maksimum. Model budżetu odpowiada rzeczywistemu trybowi awarii (zbyt wiele agentów łącznie), a nie metryce zastępczej (zbyt wiele poziomów zagnieżdżenia).7
Zespoły agentów (Research Preview)
Agent Teams koordynują wiele instancji Claude Code, które pracują niezależnie, komunikują się poprzez wspólną skrzynkę pocztową i listę zadań oraz mogą wzajemnie kwestionować swoje ustalenia:5
| Komponent | Rola |
|---|---|
| Team lead | Główna sesja, która tworzy zespół, uruchamia członków zespołu i koordynuje pracę |
| Teammates | Oddzielne instancje Claude Code pracujące nad przydzielonymi zadaniami |
| Lista zadań | Wspólne pozycje pracy, które członkowie zespołu przejmują i realizują (zablokowane plikiem) |
| Skrzynka pocztowa | System wiadomości do komunikacji między agentami |
Włączenie poleceniem: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Kiedy stosować zespoły agentów, a kiedy subagenty:
| Subagenty | Zespoły agentów | |
|---|---|---|
| Komunikacja | Wyłącznie raportują wyniki | Członkowie zespołu komunikują się ze sobą bezpośrednio |
| Koordynacja | Główny agent zarządza całą pracą | Wspólna lista zadań z samokoordynacją |
| Najlepsze do | Skoncentrowanych zadań, w których liczy się tylko rezultat | Złożonych prac wymagających dyskusji i współpracy |
| Koszt tokenów | Niższy | Wyższy (każdy członek zespołu = osobne okno kontekstu) |
Orkiestracja wieloagentowa
Jednoagentowe systemy AI mają strukturalny martwy punkt: nie potrafią kwestionować własnych założeń.7 Wieloagentowa deliberacja wymusza niezależną ocenę z wielu perspektyw, zanim jakakolwiek decyzja zostanie zablokowana.
Orkiestracja międzynarzędziowa (kwiecień 2026): Google udostępnił Scion jako oprogramowanie open source 7 kwietnia — to wieloagentowy hipernadzorca uruchamiający Claude Code, Gemini CLI oraz inne „głębokie agenty” jako równoległe procesy, każdy z izolowanym kontenerem, git worktree i poświadczeniami. Działa lokalnie, w hubie lub na Kubernetes. Wyraźna filozofia: „izolacja zamiast ograniczeń” — agenty działają z wysoką autonomią w obrębie granic egzekwowanych na warstwie infrastruktury, a nie w promptach.25 Rozszerza to bezpośrednio argument o izolacji subagentów na różnych dostawców narzędzi. Jeśli przepływ pracy obejmuje Claude oraz modele OpenAI, Scion jest pierwszą realną referencyjną implementacją międzynarzędziowych subagentów z izolacją worktree i poświadczeń per-agent.
Debata nie jest cudownym lekiem: Klaster badawczy M3MAD-Bench (początek 2026) ustalił, że wieloagentowa debata osiąga plateau i może być podważana przez mylący konsensus — trafne argumenty przegrywają, gdy inne agenty z pewnością siebie twierdzą coś błędnego.26 Tool-MAD poprawia to, dając każdemu agentowi heterogeniczny dostęp do narzędzi i stosując oceny Faithfulness/Relevance na etapie sędziowskim. Przy budowie orkiestracji w stylu debaty warto zainwestować w (a) heterogeniczność narzędzi per agent oraz (b) ilościową punktację sędziowską, zamiast zakładać, że więcej agentów = lepsze odpowiedzi.
Zarządzana orkiestracja wieloagentowa i Outcomes (Public Beta)
Jeśli nie chce się budować infrastruktury deliberacji opisanej poniżej, Multiagent Orchestration weszła w fazę Public Beta w Claude Managed Agents 6 maja 2026.35 Według Anthropic: „Gdy pojedynczy agent ma zbyt dużo pracy do wykonania na wysokim poziomie, orkiestracja wieloagentowa pozwala wiodącemu agentowi podzielić zadanie na części i delegować każdą z nich do specjalisty z własnym modelem, promptem i narzędziami.”35 Specjaliści „pracują równolegle na współdzielonym systemie plików i wnoszą wkład do ogólnego kontekstu wiodącego agenta.”35
Śledzenie jest wbudowane. Według Anthropic: „można również prześledzić każdy krok w Claude Console: który agent co zrobił, w jakiej kolejności i dlaczego, co daje pełną widoczność tego, w jaki sposób zadanie zostało zdelegowane i wykonane.”35
Towarzyszącą funkcją Public Beta jest Outcomes. Według Anthropic: „pisze się rubrykę opisującą, jak wygląda sukces, a agent pracuje nad jej spełnieniem. Oddzielny oceniający (grader) ewaluuje wynik względem podanych kryteriów we własnym oknie kontekstowym, dzięki czemu nie jest pod wpływem rozumowania agenta.”35 To wersja zarządzana usługą wzorca walidacji dwubramkowej udokumentowanego w dalszej części tego rozdziału: rubryka zastępuje ręcznie napisaną bramkę, a oddzielny grader zastępuje walidator konsensusu.
| Samodzielnie hostowana deliberacja (ten rozdział) | Zarządzana Multiagent + Outcomes | |
|---|---|---|
| Routing specjalistów | Pisze się logikę spawnowania samodzielnie | Wiodący agent dzieli zadanie na części |
| Walidacja | Hooki dwubramkowe + punktacja konsensusu | Rubryka + grader w oddzielnym kontekście |
| Śledzenie | Trzeba je samodzielnie oprzyrządować | Claude Console |
| Najlepsze do | Wzorców wymagających pełnej kontroli lub konkretnej kompozycji narzędzi | Standardowych wzorców delegowania, gdzie rubryka walidacyjna jest kontraktem |
| Cennik | Tylko koszt tokenów + harness | Standardowe tokeny plus stawka godziny sesyjnej Managed Agents (baza startowa z 8 kwietnia; zob. 23) |
Samodzielnie hostowana deliberacja pozostaje właściwą odpowiedzią, gdy walidacja musi integrować się z własną powierzchnią hooków (blokowanie PreToolUse, semantyka kodu wyjścia, niestandardowe dispatchery) lub gdy harness musi działać bez zewnętrznych zależności. Managed Multiagent jest właściwą odpowiedzią, gdy standardowe delegowanie plus ocenianie według rubryki to faktycznie potrzebny kontrakt.
Minimalna sensowna deliberacja
Należy zacząć od 2 agentów i 1 reguły: agenty muszą oceniać niezależnie, zanim zobaczą wzajemną pracę.7
Decision arrives
|
v
Confidence check: is this risky, ambiguous, or irreversible?
|
+-- NO -> Single agent decides (normal flow)
|
+-- YES -> Spawn 2 agents with different system prompts
Agent A: "Argue FOR this approach"
Agent B: "Argue AGAINST this approach"
|
v
Compare findings
|
+-- Agreement with different reasoning -> Proceed
+-- Genuine disagreement -> Investigate the conflict
+-- Agreement with same reasoning -> Suspect herding
Ten wzorzec pokrywa 80% wartości. Wszystko inne dodaje stopniową poprawę.
Wyzwalacz pewności
Nie każde zadanie wymaga deliberacji. Moduł oceny pewności analizuje cztery wymiary:17
- Niejednoznaczność — Czy zapytanie ma wiele prawidłowych interpretacji?
- Złożoność dziedziny — Czy wymaga wyspecjalizowanej wiedzy?
- Stawka — Czy decyzja jest odwracalna?
- Zależność kontekstowa — Czy wymaga zrozumienia szerszego systemu?
Wynik mapuje się na trzy poziomy:
| Poziom | Próg | Działanie |
|---|---|---|
| HIGH | 0,85+ | Kontynuacja bez deliberacji |
| MEDIUM | 0,70–0,84 | Kontynuacja z odnotowaną notatką o pewności |
| LOW | Poniżej 0,70 | Wyzwolenie pełnej deliberacji wieloagentowej |
Próg dostosowuje się do typu zadania. Decyzje dotyczące bezpieczeństwa wymagają konsensusu 0,85. Zmiany w dokumentacji potrzebują jedynie 0,50. Zapobiega to nadmiernemu rozbudowywaniu prostych zadań, jednocześnie zapewniając, że ryzykowne decyzje zostaną dokładnie przeanalizowane.7
Maszyna stanów
Siedem faz, każda otwierana przez poprzednią:7
IDLE -> RESEARCH -> DELIBERATION -> RANKING -> PRD_GENERATION -> COMPLETE
|
(or FAILED)
RESEARCH: Niezależne agenty badają temat. Każdy agent otrzymuje inną personę (Technical Architect, Security Analyst, Performance Engineer i inne). Izolacja kontekstu zapewnia, że agenty nie mogą widzieć wzajemnych ustaleń podczas badania.
DELIBERATION: Agenty widzą wszystkie ustalenia z badań i generują alternatywy. Agent Debate identyfikuje konflikty. Agent Synthesis łączy niesprzeczne ustalenia.
RANKING: Każdy agent ocenia każde proponowane podejście w 5 ważonych wymiarach:
| Wymiar | Waga |
|---|---|
| Impact | 0,25 |
| Quality | 0,25 |
| Feasibility | 0,20 |
| Reusability | 0,15 |
| Risk | 0,15 |
Architektura walidacji dwubramkowej
Dwie bramki walidacyjne wychwytują problemy na różnych etapach:7
Bramka 1: Walidacja konsensusu (hook PostToolUse). Uruchamia się natychmiast po zakończeniu pracy każdego agenta deliberacji: 1. Faza musi osiągnąć co najmniej RANKING 2. Minimum 2 agenty zakończyły pracę (konfigurowalne) 3. Wynik konsensusu spełnia próg adaptacyjny dla zadania 4. Jeśli jakikolwiek agent zgłosił sprzeciw, obawy muszą być udokumentowane
Bramka 2: Pride Check (hook Stop). Uruchamia się przed zamknięciem sesji: 1. Zróżnicowane metody: reprezentowanych jest wiele unikalnych person 2. Przejrzystość sprzeczności: sprzeciwy mają udokumentowane powody 3. Obsługa złożoności: wygenerowano co najmniej 2 alternatywy 4. Pewność konsensusu: sklasyfikowana jako silna (powyżej 0,85) lub umiarkowana (0,70–0,84) 5. Dowody poprawy: końcowa pewność przewyższa pewność początkową
Dwa hooki w różnych punktach cyklu życia odpowiadają temu, jak rzeczywiście pojawiają się awarie: niektóre są natychmiastowe (zły wynik), a niektóre stopniowe (niska różnorodność, brak dokumentacji sprzeciwu).7
Dlaczego zgoda jest niebezpieczna
Charlan Nemeth badała sprzeciw mniejszości od 1986 roku aż po jej książkę z 2018 r. In Defense of Troublemakers. Grupy z dysydentami podejmują lepsze decyzje niż grupy szybko osiągające zgodę. Dysydent nie musi mieć racji. Sam akt sprzeciwu zmusza większość do zbadania założeń, które w innym przypadku zostałyby pominięte.18
Wu i in. zbadali, czy agenty LLM potrafią naprawdę debatować, i ustalili, że bez strukturalnych zachęt do nieporozumień agenty zbiegają się w kierunku najbardziej pewnie brzmiącej początkowej odpowiedzi, niezależnie od jej poprawności.19 Liang i in. zidentyfikowali źródłową przyczynę jako „Degeneration-of-Thought”: gdy LLM ustabilizuje pewność siebie w danej pozycji, autorefleksja nie potrafi wygenerować nowych kontrargumentów, co czyni wieloagentową ewaluację strukturalnie niezbędną.20
Niezależność jest krytycznym ograniczeniem projektowym. Dwa agenty oceniające tę samą strategię wdrożenia z widocznością wzajemnych ustaleń wygenerowały wyniki 0,45 i 0,48. Te same agenty bez widoczności: 0,45 i 0,72. Różnica między 0,48 a 0,72 to koszt zachowań stadnych.7
Wykrywanie fałszywej zgody
Moduł wykrywania konformizmu śledzi wzorce sugerujące, że agenty zgadzają się bez rzeczywistej oceny:7
Klastrowanie wyników: Każdy agent oceniający w przedziale 0,3 punktu w 10-stopniowej skali sygnalizuje skażenie wspólnym kontekstem, a nie niezależną ocenę. Gdy pięć agentów oceniających refaktoryzację uwierzytelniania ocenia ryzyko bezpieczeństwa w przedziale od 7,1 do 7,4, ponowne uruchomienie ze świeżą izolacją kontekstu rozłożyło wyniki na 5,8–8,9.
Szablonowy sprzeciw: Agenty kopiujące wzajemnie język obaw, zamiast generować niezależne zastrzeżenia.
Brak perspektyw mniejszościowych: Jednomyślna aprobata person o sprzecznych priorytetach (Security Analyst i Performance Engineer rzadko zgadzają się we wszystkim).
Detektor konformizmu wychwytuje oczywiste przypadki (mniej więcej 10–15% deliberacji, w których agenty zbiegają się zbyt szybko). Dla pozostałych 85–90% bramki konsensusu i pride check zapewniają wystarczającą walidację.
Co nie zadziałało w deliberacji
Swobodne rundy debaty. Trzy rundy wymiany tekstu wokół dyskusji o indeksowaniu bazy danych wyprodukowały 7 500 tokenów debaty. Runda 1: prawdziwa różnica zdań. Runda 2: powtórzone pozycje. Runda 3: identyczne argumenty innymi słowami. Strukturyzowana punktacja wymiarów zastąpiła swobodną debatę, obniżając koszt o 60% przy jednoczesnej poprawie jakości rankingu.7
Pojedyncza bramka walidacji. Pierwsza implementacja uruchamiała jeden hook walidacyjny na końcu sesji. Agent zakończył deliberację z wynikiem konsensusu 0,52 (poniżej progu), a następnie kontynuował niezwiązane zadania przez 20 minut, zanim hook końca sesji oznaczył awarię. Podział na dwie bramki (jedna na zakończenie zadania, druga na koniec sesji) wychwytywał te same problemy w różnych punktach cyklu życia.7
Koszt deliberacji
Każdy agent badawczy przetwarza około 5 000 tokenów kontekstu i generuje 2 000–3 000 tokenów ustaleń. Przy 3 agentach to 15 000–24 000 dodatkowych tokenów na decyzję. Przy 10 agentach mniej więcej 50 000–80 000 tokenów.7
Przy obecnych cenach Opusa 3-agentowa deliberacja kosztuje około 0,68–0,90 USD. 10-agentowa deliberacja kosztuje 2,25–3,00 USD. System wyzwala deliberację mniej więcej w 10% decyzji, więc zamortyzowany koszt wszystkich decyzji wynosi 0,23–0,30 USD na sesję. To, czy warto, zależy od tego, ile kosztuje zła decyzja.
Kiedy deliberować
| Deliberować | Pominąć |
|---|---|
| Architekturę bezpieczeństwa | Literówki w dokumentacji |
| Projekt schematu bazy danych | Zmiany nazw zmiennych |
| Zmiany kontraktu API | Aktualizacje komunikatów logów |
| Strategie wdrożeniowe | Przeformułowanie komentarzy |
| Aktualizacje zależności | Aktualizacje fixture’ów testowych |
Projektowanie pliku CLAUDE.md
CLAUDE.md to polityka operacyjna dla agenta AI, a nie README dla ludzi.21 Agent nie musi rozumieć, dlaczego stosuje się konwencjonalne commity. Musi wiedzieć, jakie dokładnie polecenie uruchomić i jak wygląda stan „ukończone”.
Hierarchia pierwszeństwa
| Lokalizacja | Zakres | Współdzielone | Zastosowanie |
|---|---|---|---|
| Zarządzane ustawienia korporacyjne | Organizacja | Wszyscy użytkownicy | Standardy firmowe |
./CLAUDE.md lub ./.claude/CLAUDE.md |
Projekt | Przez git | Kontekst zespołu |
~/.claude/CLAUDE.md |
Użytkownik | Wszystkie projekty | Preferencje osobiste |
./CLAUDE.local.md |
Lokalny w projekcie | Nigdy | Osobiste notatki projektowe |
.claude/rules/*.md |
Reguły projektu | Przez git | Skategoryzowane polityki |
~/.claude/rules/*.md |
Reguły użytkownika | Wszystkie projekty | Polityki osobiste |
Pliki reguł ładują się automatycznie i dostarczają ustrukturyzowanego kontekstu bez zaśmiecania CLAUDE.md.6
Co zostaje zignorowane
Te wzorce niezawodnie nie wywołują żadnej zauważalnej zmiany w zachowaniu agenta:21
Akapity prozy bez poleceń. „Cenimy czysty, dobrze przetestowany kod” to dokumentacja, a nie operacje. Agent czyta to i przystępuje do pisania kodu bez testów, ponieważ brakuje wykonalnej instrukcji.
Niejednoznaczne dyrektywy. „Ostrożnie z migracjami bazy danych” nie stanowi ograniczenia. „Uruchom alembic check przed zastosowaniem migracji. Przerwij, jeśli brakuje ścieżki downgrade.” — owszem.
Sprzeczne priorytety. „Działaj szybko i szybko wdrażaj” plus „Zapewnij kompleksowe pokrycie testami” plus „Utrzymuj czas wykonania poniżej 5 minut” plus „Uruchamiaj pełne testy integracyjne przed każdym commitem.” Agent nie jest w stanie spełnić wszystkich czterech jednocześnie i domyślnie pomija weryfikację.21
Przewodniki stylu bez egzekwowania. „Stosuj Google Python Style Guide” bez ruff check --select D nie daje agentowi żadnego mechanizmu weryfikacji zgodności.
Co działa
Instrukcje zorientowane na polecenia:
## Build and Test Commands
- Install: `pip install -r requirements.txt`
- Lint: `ruff check . --fix`
- Format: `ruff format .`
- Test: `pytest -v --tb=short`
- Type check: `mypy app/ --strict`
- Full verify: `ruff check . && ruff format --check . && pytest -v`
Definicje zamknięcia:
## Definition of Done
A task is complete when ALL of the following pass:
1. `ruff check .` exits 0
2. `pytest -v` exits 0 with no failures
3. `mypy app/ --strict` exits 0
4. Changed files have been staged and committed
5. Commit message follows conventional format: `type(scope): description`
Sekcje uporządkowane według zadań:
## When Writing Code
- Run `ruff check .` after every file change
- Add type hints to all new functions
## When Reviewing Code
- Check for security issues: `bandit -r app/`
- Verify test coverage: `pytest --cov=app --cov-fail-under=80`
## When Releasing
- Update version in `pyproject.toml`
- Run full suite: `pytest -v && ruff check . && mypy app/`
Reguły eskalacji:
## When Blocked
- If tests fail after 3 attempts: stop and report the failing test with full output
- If a dependency is missing: check `requirements.txt` first, then ask
- Never: delete files to resolve errors, force push, or skip tests
Kolejność pisania
Rozpoczynając od zera, należy dodawać sekcje w następującej kolejności priorytetu:21
- Polecenia build i test (agent potrzebuje ich, zanim cokolwiek pożytecznego wykona)
- Definicja ukończenia (zapobiega fałszywym deklaracjom zakończenia)
- Reguły eskalacji (zapobiega destrukcyjnym obejściom)
- Sekcje uporządkowane według zadań (ogranicza parsowanie nieistotnych instrukcji)
- Określanie zakresu katalogów (monorepo: izoluje instrukcje poszczególnych usług)
Preferencje stylistyczne należy pominąć, dopóki pierwsze cztery elementy nie zaczną działać.
Importy plików
Odwołania do innych plików w obrębie CLAUDE.md:
See @README.md for project overview
Coding standards: @docs/STYLE_GUIDE.md
API documentation: @docs/API.md
Personal preferences: @~/.claude/preferences.md
Składnia importu: względna (@docs/file.md), bezwzględna (@/absolute/path.md) lub katalog domowy (@~/.claude/file.md). Maksymalna głębokość: 5 poziomów importów.6
Zgodność instrukcji między narzędziami
AGENTS.md to otwarty standard rozpoznawany przez każde poważniejsze narzędzie do kodowania AI.21 Jeżeli zespół korzysta z wielu narzędzi, warto pisać AGENTS.md jako kanoniczne źródło i odzwierciedlać odpowiednie sekcje w plikach specyficznych dla danego narzędzia:
| Narzędzie | Plik natywny | Czyta AGENTS.md? |
|---|---|---|
| Codex CLI | AGENTS.md | Tak (natywnie) |
| Cursor | .cursor/rules |
Tak (natywnie) |
| GitHub Copilot | .github/copilot-instructions.md |
Tak (natywnie) |
| Amp | AGENTS.md | Tak (natywnie) |
| Windsurf | .windsurfrules |
Tak (natywnie) |
| Claude Code | CLAUDE.md | Nie (odrębny format) |
Wzorce z AGENTS.md (zorientowane na polecenia, z określoną definicją zamknięcia, uporządkowane wokół zadań) działają w każdym pliku instrukcji niezależnie od narzędzia. Nie należy utrzymywać równoległych zestawów instrukcji, które rozjeżdżają się w czasie. Trzeba pisać jedno autorytatywne źródło i je odzwierciedlać.
Uwagi dotyczące parytetu Codex
Codex dysponuje obecnie odpowiednikami pierwszej klasy dla głównych warstw harness, lecz migracja polega na tłumaczeniu wzorców, a nie na kopiowaniu plików. Codex czyta AGENTS.md przed rozpoczęciem pracy, nakładając wskazówki globalne z ~/.codex na instrukcje projektowe i instrukcje z zagnieżdżonych repozytoriów.31 Skille Codex korzystają z tego samego modelu mentalnego SKILL.md z progresywnym ujawnianiem: Codex zaczyna od nazwy skilla, opisu i ścieżki pliku, a pełen skill ładuje dopiero, gdy zdecyduje się go użyć.32 Codex posiada również natywne hooki, hooki dystrybuowane w pluginach, hooki zarządzane, wsparcie dla MCP oraz jawne przepływy pracy z subagentami.3334
Praktyczne mapowanie:
| Warstwa harness Claude Code | Odpowiednik w Codex | Reguła migracji |
|---|---|---|
CLAUDE.md / .claude/rules/ |
AGENTS.md / zagnieżdżony AGENTS.override.md |
Polecenia i reguły zakończenia trzymać kanonicznie; rozdzielać tylko wtedy, gdy zakres katalogu rzeczywiście się różni |
.claude/skills/<name>/SKILL.md |
.agents/skills/<name>/SKILL.md lub skill z pluginu |
Przenosić wielokrotnie używane przepływy, ale przepisać opisy zgodnie z brzmieniem aktywacji i budżetem Codex |
Hooki w .claude/settings.json |
config.toml Codex, hooki pluginów lub hooki wymagane przez zarządzane środowisko |
Najpierw przenieść deterministyczne bramki; każdy hook przetestować na rzeczywistych zdarzeniach narzędzi przed szerokim włączeniem |
.claude/agents/*.md |
~/.codex/agents/*.toml, .codex/agents/*.toml lub wbudowani worker / explorer |
Przenosić wyłącznie agentów o powtarzalnej wartości; preferować jawną delegację, ponieważ subagenci Codex są jawni |
| Pluginy | Pluginy Codex | Pluginy stosować jako jednostkę dystrybucji dopiero wtedy, gdy lokalne hooki i skille zostały sprawdzone |
Istotna różnica: subagenci Claude mogą być wybierani automatycznie na podstawie opisów, podczas gdy Codex obecnie dokumentuje przepływy z subagentami jako jawne. Z tego powodu skille i hooki są właściwym domyślnym rozwiązaniem dla stałego zachowania harness w Codex; subagenci służą do celowej pracy równoległej, recenzji i eksploracji.
Testowanie własnych instrukcji
Warto zweryfikować, czy agent rzeczywiście czyta i stosuje się do instrukcji:
# Check active instructions
claude --print "What instructions are you following for this project?"
# Verify specific rules are active
claude --print "What is your definition of done?"
Test ostateczny: należy poprosić agenta o wyjaśnienie poleceń build. Jeżeli nie potrafi ich odtworzyć dosłownie, instrukcje są albo zbyt rozwlekłe (treść została wypchnięta poza kontekst), albo zbyt ogólne (agent nie potrafi z nich wyłuskać wykonalnych poleceń), albo nie zostały odnalezione. Analiza 2 500 repozytoriów wykonana przez GitHub wykazała, że to właśnie ogólnikowość jest przyczyną większości niepowodzeń.21
Wzorce produkcyjne
Wzorce długiego horyzontu Opus 4.7 (kwiecień 2026)
Claude Opus 4.7 (16 kwietnia 2026) został wydany ze specyficznymi możliwościami, które zmieniają to, przed czym musi się bronić harness:29
- Odporność na awarie narzędzi: Opus 4.7 kontynuuje pracę pomimo awarii narzędzi, które wstrzymywały sesje Opus 4.6. Można ograniczyć — choć nie wyeliminować — defensywne wrappery z mechanizmem ponawiania w kodzie subagentów. Należy zachować zabezpieczenia na poziomie hooków; warto natomiast przyciąć rusztowanie w promptach typu „jeśli narzędzie zawiedzie, spróbuj trzy razy”.
- Poziom wysiłku
xhigh(tylko Opus-4.7): Mieści się pomiędzyhighamax. Zalecany domyślny wybór dla kodowania i obciążeń agentowych. W długo działających subagentachxhighznacząco przewyższahighprzy podproporcjonalnym koszcie tokenów.maxpozostaje właściwym wyborem dla pojedynczych trudnych zadań rozumowania;xhighlepiej sprawdza się w zadaniach ciągłych. - Pułap budżetu tokenów: Konfigurowalny dla każdego uruchomienia agenta poprzez
output_config.task_budget(nagłówek betatask-budgets-2026-03-13). Model widzi odliczanie i elegancko dostosowuje zakres pracy do budżetu, zamiast nagle wyczerpywać zasoby. Warto wykorzystać w pętlach agentowych, gdzie pożądane jest przewidywalne zużycie tokenów bez utraty jakości przy krótkich promptach. - Świadomość niejawnych potrzeb: Pierwszy model Claude, który przeszedł testy „niejawnych potrzeb” — rozpoznawanie, kiedy dosłowne żądanie użytkownika nie precyzuje w pełni tego, czego użytkownik faktycznie potrzebuje. Sprawia to, że sekcja „reguł doprecyzowujących” w CLAUDE.md staje się mniej potrzebna. Jeśli plik CLAUDE.md zawiera 200 wierszy zabezpieczeń typu „rozważ także X, gdy użytkownik prosi o Y”, warto wyciąć te, które są teraz obsługiwane natywnie.
Bazowe worktree, ścieżki sandboksa i ustawienia administracyjne (7 maja 2026)
Claude Code v2.1.133 dodaje cztery ustawienia poziomu administratora warte poznania w produkcyjnych harnessach:39
| Ustawienie | Wartości | Co robi |
|---|---|---|
worktree.baseRef |
fresh (domyślnie) | head |
Nowe worktree ponownie rozgałęziają się od origin/<default>. Zmiana domyślnego zachowania względem v2.1.128, która używała lokalnego HEAD. Należy ustawić worktree.baseRef: "head", jeśli zespół polega na dostępności niewypchniętych commitów w nowych worktree. |
sandbox.bwrapPath |
ścieżka bezwzględna | Przypina lokalizację binarki Bubblewrap na hostach Linux/WSL, gdzie nie znajduje się ona w $PATH lub gdzie dostarczana jest wersja wbudowana. |
sandbox.socatPath |
ścieżka bezwzględna | Ta sama idea dla binarki socat używanej przez sieć sandboksa. |
parentSettingsBehavior |
'first-wins' (domyślnie) | 'merge' |
Kontrola na poziomie administratora nad tym, jak SDK managedSettings komponują się z nadrzędnymi ustawieniami przedsiębiorstwa/zespołu. 'merge' pozwala sesji potomnej dziedziczyć i rozszerzać; 'first-wins' zachowuje autorytet ustawień nadrzędnych. |
Zmiana w worktree.baseRef jest tą, którą warto zasygnalizować użytkownikom: agenci, którzy polegali na zachowaniu z v2.1.128-v2.1.132 (worktree rozgałęziające się od lokalnego HEAD), tracą dostęp do niewypchniętej pracy w świeżych worktree, chyba że ponownie się zdeklarują.
Pętla jakości
Obowiązkowy proces przeglądu dla wszystkich nietrywialnych zmian:
- Zaimplementuj - Napisz kod
- Zrecenzuj - Przeczytaj ponownie każdy wiersz. Wyłap literówki, błędy logiczne, niejasne fragmenty
- Oceń - Uruchom evidence gate. Sprawdź wzorce, przypadki brzegowe, pokrycie testami
- Dopracuj - Napraw każdy problem. Nigdy nie odkładaj „na później”
- Spojrzenie z dystansu - Sprawdź punkty integracji, importy, sąsiedni kod pod kątem regresji
- Powtórz - Jeśli którekolwiek kryterium evidence gate zawiedzie, wróć do kroku 4
- Raportuj - Wymień, co się zmieniło, jak zostało zweryfikowane, przytocz konkretne dowody
Evidence gate
„Sądzę” i „powinno” nie są dowodami. Należy przytaczać ścieżki plików, wyniki testów lub konkretny kod.
| Kryterium | Wymagany dowód |
|---|---|
| Stosuje wzorce kodu bazowego | Wskaż wzorzec i plik, w którym istnieje |
| Najprostsze działające rozwiązanie | Wyjaśnij, jakie prostsze alternatywy zostały odrzucone i dlaczego |
| Obsłużone przypadki brzegowe | Wymień konkretne przypadki brzegowe i sposób obsługi każdego z nich |
| Testy przechodzą | Wklej wynik testów pokazujący 0 niepowodzeń |
| Brak regresji | Wskaż sprawdzone pliki/funkcje |
| Rozwiązuje rzeczywisty problem | Określ potrzebę użytkownika i sposób, w jaki to rozwiązanie ją zaspokaja |
Jeśli nie można przedstawić dowodów dla któregokolwiek wiersza, należy wrócić do kroku Dopracuj.22
Wzorce obsługi błędów
Atomowe zapisy plików. Wielu agentów zapisujących równocześnie do tego samego pliku stanu uszkadza JSON. Należy zapisywać do plików .tmp, a następnie wykonywać atomowe mv. System operacyjny gwarantuje, że mv jest atomowe w obrębie tego samego systemu plików.17
# Atomic state update
jq --argjson d "$new_depth" '.depth = $d' "$STATE_FILE" > "${STATE_FILE}.tmp"
mv "${STATE_FILE}.tmp" "$STATE_FILE"
Odzyskiwanie po uszkodzeniu stanu. Jeśli stan ulegnie uszkodzeniu, wzorzec odzyskiwania odtwarza go z bezpiecznych wartości domyślnych zamiast się zawiesić:16
if ! jq -e '.depth' "$RECURSION_STATE_FILE" &>/dev/null; then
# Corrupted state file, recreate with safe defaults
echo '{"depth": 0, "agent_id": "root", "parent_id": null}' > "$RECURSION_STATE_FILE"
echo "- Recursion state recovered (was corrupted)"
fi
Pułapka ((VAR++)) w bashu. ((VAR++)) zwraca kod wyjścia 1, gdy VAR wynosi 0, ponieważ 0++ zostaje obliczone do 0, co bash traktuje jako fałsz. Przy włączonym set -e zabija to skrypt. Zamiast tego należy używać VAR=$((VAR + 1)).16
Klasyfikacja promienia rażenia
Każde działanie agenta należy klasyfikować według promienia rażenia i odpowiednio nakładać bramki:2
| Klasyfikacja | Przykłady | Bramka |
|---|---|---|
| Lokalne | Zapisy plików, uruchomienia testów, linting | Automatyczna akceptacja |
| Współdzielone | Commity git, tworzenie gałęzi | Ostrzeż i kontynuuj |
| Zewnętrzne | Git push, wywołania API, wdrożenia | Wymagaj zatwierdzenia człowieka |
Zdalne sterowanie (łączenie się z lokalnym Claude Code z dowolnej przeglądarki lub aplikacji mobilnej) zmienia bramkę „Zewnętrzne” z blokującego oczekiwania w asynchroniczne powiadomienie. Agent kontynuuje pracę nad następnym zadaniem, podczas gdy poprzednie jest sprawdzane z poziomu telefonu.2
Specyfikacja zadań dla uruchomień autonomicznych
Skuteczne zadania autonomiczne zawierają trzy elementy: cel, kryteria ukończenia oraz wskaźniki kontekstowe:16
OBJECTIVE: Implement multi-agent deliberation with consensus validation.
COMPLETION CRITERIA:
- All tests in tests/test_deliberation_lib.py pass (81 tests)
- post-deliberation.sh validates consensus above 70% threshold
- recursion-guard.sh enforces spawn budget (max 12 agents)
- No Python type errors (mypy clean)
CONTEXT:
- Follow patterns in lib/deliberation/state_machine.py
- Consensus thresholds in configs/deliberation-config.json
- Spawn budget model: agents inherit budget, not increment depth
Kryteria muszą być weryfikowalne maszynowo: zaliczenie/niezaliczenie testów, wynik lintera, kody statusu HTTP, sprawdzenia istnienia plików. Wczesne zadanie, które prosiło agenta o „napisanie testów, które przechodzą”, wyprodukowało assert True i assert 1 == 1. Technicznie poprawne. Praktycznie bezwartościowe.16
| Jakość kryteriów | Przykład | Wynik |
|---|---|---|
| Niejasne | „Testy przechodzą” | Agent pisze trywialne testy |
| Mierzalne, ale niekompletne | „Testy przechodzą I pokrycie >80%” | Testy pokrywają wiersze, ale niczego sensownego nie testują |
| Wszechstronne | „Wszystkie testy przechodzą I pokrycie >80% I brak błędów typów I czysty linter I każda klasa testów testuje odrębny moduł” | Wynik o jakości produkcyjnej |
Tryby awarii, na które należy zwracać uwagę
| Tryb awarii | Opis | Zapobieganie |
|---|---|---|
| Spirala skrótów | Pomijanie kroków pętli jakości w celu szybszego ukończenia | Evidence gate wymaga dowodu dla każdego kryterium |
| Miraż pewności | „Jestem pewien” bez przeprowadzenia weryfikacji | Zakaz języka asekuracyjnego w raportach o ukończeniu |
| Fantomowa weryfikacja | Twierdzenie, że testy przechodzą, bez ich uruchomienia w bieżącej sesji | Hook Stop uruchamia testy niezależnie |
| Odroczony dług | TODO/FIXME/HACK w zacommitowanym kodzie | Hook PreToolUse na git commit skanuje diff |
| Zaśmiecanie systemu plików | Ślepe artefakty z porzuconych iteracji | Krok porządkujący w kryteriach ukończenia |
Konkretny ślad sesji
Ślad sesji z autonomicznego uruchomienia przetwarzającego PRD z 5 historiami:2
-
Uruchamia się SessionStart. Dispatcher wstrzykuje: bieżącą datę, wykrywanie projektu, ograniczenia filozoficzne, inicjalizację śledzenia kosztów. Pięć hooków, łącznie 180 ms.
-
Agent czyta PRD i planuje pierwszą historię. Uruchamia się
UserPromptSubmit. Dispatcher wstrzykuje: aktywny kontekst projektu, bazowy poziom dryfu sesji. -
Agent wywołuje Bash, aby uruchomić testy. Uruchamia się
PreToolUse:Bash. Sprawdzanie poświadczeń, walidacja sandboksa, wykrywanie projektu. 90 ms. Testy się uruchamiają. Uruchamia sięPostToolUse:Bash: rejestrowany jest puls aktywności, kontrola dryfu. -
Agent wywołuje Write, aby utworzyć plik. Uruchamia się
PreToolUse:Write: sprawdzenie zakresu pliku. Uruchamia sięPostToolUse:Write: kontrola lintera, śledzenie commitów. -
Agent kończy historię. Uruchamia się
Stop. Bramka jakości sprawdza: czy agent przytoczył dowody? Język asekuracyjny? Komentarze TODO w diff-ie? Jeśli którakolwiek kontrola zawiedzie, kod wyjścia 2 i agent kontynuuje. -
Niezależna weryfikacja: Świeży agent uruchamia zestaw testów, nie ufając autoraportowi poprzedniego agenta.
-
Trzech agentów przeglądu kodu uruchamia się równolegle. Każdy niezależnie recenzuje diff. Jeśli którykolwiek recenzent oznaczy CRITICAL, historia wraca do kolejki.
-
Historia zaliczona. Ładuje się następna historia. Cykl powtarza się dla wszystkich 5 historii.
Łączna liczba hooków uruchomionych w 5 historiach: ~340. Łączny czas spędzony w hookach: ~12 sekund. Ten narzut zapobiegł trzem wyciekom poświadczeń, jednemu destrukcyjnemu poleceniu i dwóm niekompletnym implementacjom w jednym całonocnym uruchomieniu.
Studium przypadku: Całonocne przetwarzanie PRD
Produkcyjny harness przetworzył 12 PRD (47 historii) w trakcie 8 całonocnych sesji. Metryki porównują pierwsze 4 PRD (minimalny harness: tylko CLAUDE.md) z ostatnimi 8 (pełny harness: hooki, skille, bramki jakości, wieloagentowy przegląd).
| Metryka | Minimalny (4 PRD) | Pełny harness (8 PRD) | Zmiana |
|---|---|---|---|
| Wycieki poświadczeń | 2 wyciekły do gita | 7 zablokowanych przed commitem | Reaktywne na zapobiegawcze |
| Destrukcyjne polecenia | 1 force-push do main | 4 zablokowane | Egzekwowanie kodu wyjścia 2 |
| Wskaźnik fałszywych ukończeń | 35% nieudanych testów | 4% | Evidence gate + hook Stop |
| Rundy poprawek/historię | 2,1 | 0,8 | Skille + pętla jakości |
| Degradacja kontekstu | 6 incydentów | 1 incydent | Pamięć systemu plików |
| Narzut tokenów | 0% | ~3,2% | Pomijalny |
| Czas hooków/historię | 0s | ~2,4s | Pomijalny |
Dwa wycieki poświadczeń wymagały rotacji kluczy API i audytu usług zależnych: około 4 godzin reagowania na incydent. Narzut harnessa, który zapobiegł odpowiednikowi, wynosił 2,4 sekundy basha na historię. Wskaźnik fałszywych ukończeń spadł z 35% do 4%, ponieważ hook Stop niezależnie uruchamiał testy, zanim pozwolił agentowi zaraportować ukończenie.
Kwestie bezpieczeństwa
Pięć zasad godnych zaufania agentów (Anthropic, kwiecień 2026)
Anthropic opublikował 9 kwietnia 2026 roku formalne ramy dotyczące wiarygodności agentów.27 Pięć zasad jest zbieżnych — i rozszerza — koncepcję Evidence Gate przedstawioną w niniejszym przewodniku:
| Zasada | Co oznacza | W jaki sposób ten harness ją spełnia |
|---|---|---|
| Kontrola człowieka | Sensowna możliwość interwencji człowieka w każdym punkcie decyzyjnym | Hooks bramkują wywołania narzędzi; blokowanie PreCompact; klasyfikator Auto Mode jako warstwa kontrolna |
| Zgodność z wartościami | Działania agenta odzwierciedlają intencję użytkownika, a nie cele poboczne | CLAUDE.md jako jawna specyfikacja intencji; skills jako mechanizm ograniczania zakresu możliwości |
| Bezpieczeństwo | Odporność na adwersaryjne dane wejściowe oraz prompt injection | Sandbox + reguły blokujące + walidacja danych wejściowych w warstwie hooks |
| Przejrzystość | Audytowalne zapisy decyzji i działań | Logowanie hooks; transkrypty sesji; ślady wywołań skills |
| Prywatność | Odpowiednie przetwarzanie danych i mechanizmy nadzoru | Czyszczenie zmiennych środowiskowych z poświadczeniami; wykrywanie sekretów w warstwie hooks |
Anthropic przekazał także MCP na rzecz Agentic AI Foundation działającej w ramach Linux Foundation, dołączając tym samym do AGENTS.md (obecnie współzarządzanego z OpenAI, Google, Cursor, Factory, Sourcegraph). Standardy interoperacyjności agentów są obecnie niezależne od dostawcy.27
Narzędzia sandboxa dla skills: Dla zespołów traktujących skills jako powierzchnię ataku, SandyClaw firmy Permiso (wprowadzony 2 kwietnia 2026) uruchamia skills w dedykowanym sandboxie i dostarcza poparte dowodami werdykty pochodzące z detekcji Sigma/YARA/Nova/Snort. Pierwszy produkt w kategorii sandboxów dla skills.28
Sandbox
Claude Code obsługuje opcjonalny tryb sandbox (włączany za pośrednictwem settings.json lub polecenia /sandbox), który ogranicza dostęp do sieci oraz operacje na systemie plików, wykorzystując izolację na poziomie systemu operacyjnego (seatbelt na macOS, bubblewrap na Linuksie). Po włączeniu sandbox uniemożliwia modelowi wykonywanie dowolnych żądań sieciowych ani uzyskiwanie dostępu do plików spoza katalogu projektu. Bez sandboxingu Claude Code stosuje model oparty na uprawnieniach, w którym można zatwierdzać lub odrzucać poszczególne wywołania narzędzi.13
Granice uprawnień
System uprawnień bramkuje operacje na wielu poziomach:
| Poziom | Kontroluje | Przykład |
|---|---|---|
| Uprawnienia narzędzi | Które narzędzia mogą być używane | Ograniczenie subagenta do Read, Grep, Glob |
| Uprawnienia plików | Które pliki mogą być modyfikowane | Blokada zapisu do .env, credentials.json |
| Uprawnienia poleceń | Które polecenia bash mogą być uruchamiane | Blokada rm -rf, git push --force |
| Uprawnienia sieciowe | Które domeny są dostępne | Lista dozwolonych dla połączeń serwera MCP |
Obrona przed prompt injection
Skills i hooks zapewniają wielowarstwową obronę przed prompt injection:
Skills z ograniczeniami narzędzi uniemożliwiają skompromitowanemu promptowi uzyskanie uprawnień do zapisu:
allowed-tools: Read, Grep, Glob
Hooks PreToolUse walidują każde wywołanie narzędzia niezależnie od tego, w jaki sposób model został zachęcony do działania:
# Block credential file access regardless of prompt
if echo "$FILE_PATH" | grep -qE "\.(env|pem|key|credentials)$"; then
echo "BLOCKED: Sensitive file access" >&2
exit 2
fi
Izolacja subagentów ogranicza zasięg potencjalnych szkód. Subagent z permissionMode: plan nie może wprowadzać zmian, nawet jeśli jego prompt zostanie skompromitowany.
Bezpieczeństwo hooks
Hooks HTTP, które interpolują zmienne środowiskowe do nagłówków, wymagają jawnej listy allowedEnvVars, aby zapobiec dowolnemu wyciekowi zmiennych środowiskowych:13
{
"type": "http",
"url": "https://api.example.com/notify",
"headers": {
"Authorization": "Bearer $MY_TOKEN"
},
"allowedEnvVars": ["MY_TOKEN"]
}
Podział odpowiedzialności między człowiekiem a agentem
Bezpieczeństwo w architekturach agentowych wymaga jasnego rozgraniczenia odpowiedzialności człowieka i agenta:17
| Odpowiedzialność człowieka | Odpowiedzialność agenta |
|---|---|
| Definicja problemu | Wykonanie pipeline’u |
| Progi ufności | Wykonanie w ramach progów |
| Wymogi konsensusu | Obliczenie konsensusu |
| Kryteria bramek jakości | Egzekwowanie bramek jakości |
| Analiza błędów | Wykrywanie błędów |
| Decyzje architektoniczne | Opcje architektoniczne |
| Dostarczanie kontekstu domenowego | Generowanie dokumentacji |
Wzorzec ten polega na tym, że ludzie są odpowiedzialni za decyzje wymagające kontekstu organizacyjnego, oceny etycznej lub kierunku strategicznego. Agenci natomiast odpowiadają za decyzje wymagające obliczeniowego przeszukiwania dużych przestrzeni możliwości. Hooks egzekwują tę granicę.
Rekursywne egzekwowanie hooks
Hooks uruchamiają się także dla działań subagentów.13 Jeśli Claude uruchomi subagenta za pośrednictwem narzędzia Agent, hooks PreToolUse i PostToolUse zostaną wykonane dla każdego narzędzia, którego użyje subagent. Bez rekursywnego egzekwowania hooks subagent mógłby ominąć bramki bezpieczeństwa. Zdarzenie SubagentStop umożliwia uruchomienie czyszczenia lub walidacji w momencie zakończenia działania subagenta.
Nie jest to opcjonalne. Agent uruchamiający subagenta bez hooks zabezpieczających to agent, który może wykonać force push do main, odczytać pliki z poświadczeniami albo uruchomić destrukcyjne polecenia, podczas gdy bramki obserwują główną konwersację, w której nic się nie dzieje.
Koszt jako architektura
Koszt jest decyzją architektoniczną, a nie operacyjnym dodatkiem.2 Trzy poziomy:
Poziom tokenów. Kompresja system promptu. Należy usunąć przykłady kodu o charakterze instruktażowym (model zna APIs), połączyć zduplikowane reguły z różnych plików oraz zastąpić wyjaśnienia ograniczeniami. „Odrzucaj wywołania narzędzi pasujące do ścieżek wrażliwych” wykonuje tę samą pracę co 15-wierszowe wyjaśnienie, dlaczego nie należy odczytywać poświadczeń.
Poziom agenta. Świeże uruchomienia zamiast długich konwersacji. Każda historia w autonomicznym przebiegu otrzymuje nowego agenta z czystym kontekstem. Kontekst nigdy nie puchnie, ponieważ każdy agent zaczyna od zera. Briefing zamiast pamięci: modele lepiej wykonują jasny briefing niż nawigują przez 30 kroków nagromadzonego kontekstu.
Poziom architektury. Najpierw CLI, a dopiero potem MCP, gdy operacja jest bezstanowa. Wywołanie claude --print na potrzeby jednorazowej oceny jest tańsze i nie generuje narzutu związanego z połączeniem. MCP ma sens wtedy, gdy narzędzie wymaga trwałego stanu lub strumieniowania.
Ramy podejmowania decyzji
Kiedy stosować poszczególne mechanizmy:
| Problem | Zastosowanie | Dlaczego |
|---|---|---|
| Formatowanie kodu po każdej edycji | Hook PostToolUse | Musi nastąpić za każdym razem, deterministycznie |
| Blokowanie niebezpiecznych poleceń bash | Hook PreToolUse | Musi blokować przed wykonaniem, kod wyjścia 2 |
| Stosowanie wzorców przeglądu bezpieczeństwa | Skill | Wiedza domenowa, która aktywuje się automatycznie na podstawie kontekstu |
| Eksplorowanie bazy kodu bez zaśmiecania kontekstu | Subagent Explore | Izolowany kontekst, zwraca jedynie podsumowanie |
| Bezpieczne uruchamianie eksperymentalnego refaktoringu | Subagent izolowany w worktree | Zmiany można odrzucić, jeśli się nie powiodą |
| Przegląd kodu z wielu perspektyw | Subagenty równoległe lub Agent Team | Niezależna ocena pozwala uniknąć martwych punktów |
| Decydowanie o nieodwracalnej architekturze | Wieloagentowa deliberacja | Wyzwalacz pewności + walidacja konsensusu |
| Utrwalanie decyzji między sesjami | MEMORY.md | System plików przetrwa granice kontekstu |
| Współdzielenie standardów zespołowych | Projektowy CLAUDE.md + .claude/rules/ | Dystrybuowane przez git, ładowane automatycznie |
| Definiowanie poleceń build/test projektu | CLAUDE.md | Instrukcje zorientowane na polecenia, które agent może zweryfikować |
| Uruchamianie długich autonomicznych prac deweloperskich | Pętla Ralph (iteracja w świeżym kontekście) | Pełny budżet kontekstu na iterację, stan w systemie plików |
| Powiadamianie Slacka o zakończeniu sesji | Asynchroniczny hook Stop | Nieblokujący, nie spowalnia sesji |
| Walidacja jakości przed commitem | Hook PreToolUse na git commit | Blokada commita, jeśli lint/testy zawiodą |
| Egzekwowanie kryteriów ukończenia | Hook Stop | Zapobiega zatrzymaniu agenta przed wykonaniem zadania |
Skills a hooks a subagenty
| Wymiar | Skills | Hooks | Subagenty |
|---|---|---|---|
| Wywołanie | Automatyczne (rozumowanie LLM) | Deterministyczne (sterowane zdarzeniami) | Jawne lub automatycznie delegowane |
| Gwarancja | Probabilistyczna (decyduje model) | Deterministyczna (zawsze się uruchamia) | Deterministyczna (izolowany kontekst) |
| Koszt kontekstowy | Wstrzykiwane do głównego kontekstu | Zerowy (działa poza LLM) | Osobne okno kontekstu |
| Koszt tokenów | Budżet opisu (2% okna) | Zerowy | Pełny kontekst na każdego subagenta |
| Najlepsze do | Wiedza domenowa | Egzekwowanie polityk | Praca skoncentrowana, eksploracja |
FAQ
Ile hooków to za dużo?
Ograniczeniem jest wydajność, nie liczba. Każdy hook działa synchronicznie, więc łączny czas wykonania hooków dolicza się do każdego dopasowanego wywołania narzędzia. 95 hooków rozłożonych pomiędzy ustawienia poziomu użytkownika i poziomu projektu działa bez zauważalnych opóźnień, gdy każdy hook kończy się w czasie poniżej 200 ms. Próg, na który warto zwrócić uwagę: jeśli hook PostToolUse dodaje ponad 500 ms do każdej edycji pliku, sesja sprawia wrażenie ociężałej. Przed wdrożeniem warto sprofilować hooki za pomocą time.14
Czy hooki mogą zablokować uruchomienie polecenia przez Claude Code?
Tak. Hooki PreToolUse blokują dowolną akcję narzędzia, kończąc się kodem wyjścia 2. Claude Code anuluje oczekującą akcję i pokazuje modelowi wyjście stderr hooka. Claude widzi powód odrzucenia i sugeruje bezpieczniejszą alternatywę. Kod wyjścia 1 to nieblokujące ostrzeżenie, w którym akcja i tak jest kontynuowana.3
Gdzie należy umieszczać pliki konfiguracji hooków?
Konfiguracje hooków trafiają do pliku .claude/settings.json w przypadku hooków poziomu projektu (zatwierdzanych w repozytorium, współdzielonych z zespołem) lub do ~/.claude/settings.json w przypadku hooków poziomu użytkownika (osobistych, stosowanych w każdym projekcie). Hooki poziomu projektu mają pierwszeństwo, gdy występują równocześnie. Aby uniknąć problemów z katalogiem roboczym, w plikach skryptów warto stosować ścieżki bezwzględne.14
Czy każda decyzja wymaga deliberacji?
Nie. Moduł oceny pewności punktuje decyzje w czterech wymiarach (niejednoznaczność, złożoność, stawka, zależność od kontekstu). Deliberację uruchamiają wyłącznie decyzje, których łączna pewność wynosi poniżej 0,70 — z grubsza 10% wszystkich decyzji. Poprawki w dokumentacji, zmiany nazw zmiennych i rutynowe edycje całkowicie pomijają deliberację. Architektura bezpieczeństwa, zmiany schematu bazy danych i nieodwracalne wdrożenia uruchamiają ją konsekwentnie.7
W jaki sposób przetestować system zaprojektowany do generowania niezgody?
Należy testować zarówno ścieżki sukcesu, jak i ścieżki niepowodzenia. Sukces: agenci produktywnie się nie zgadzają i osiągają konsensus. Niepowodzenie: agenci osiągają zbieżność zbyt szybko, nigdy jej nie osiągają lub przekraczają budżet uruchomień. Testy end-to-end symulują każdy scenariusz przy deterministycznych odpowiedziach agentów, weryfikując, że obie bramki walidacyjne wychwytują każdy udokumentowany tryb awarii. Produkcyjny system deliberacji uruchamia 141 testów w trzech warstwach: 48 testów integracyjnych w bashu, 81 testów jednostkowych Python oraz 12 symulacji potoku end-to-end.7
Jaki jest wpływ deliberacji na opóźnienia?
Deliberacja z udziałem 3 agentów dokłada 30–60 sekund czasu rzeczywistego (agenci działają sekwencyjnie poprzez Agent tool). Deliberacja z 10 agentami dodaje 2–4 minuty. Hooki konsensusu i pride check kończą się w czasie poniżej 200 ms każdy. Głównym wąskim gardłem jest czas inferencji LLM na agenta, a nie narzut orkiestracji.7
Jak długi powinien być plik CLAUDE.md?
Każdą sekcję warto utrzymać poniżej 50 linii, a cały plik poniżej 150 linii. Długie pliki są obcinane przez okna kontekstowe, dlatego najważniejsze instrukcje należy umieszczać na początku: polecenia i definicje zamknięć przed preferencjami stylistycznymi.21
Czy może to działać z narzędziami innymi niż Claude Code?
Zasady architektoniczne (hooki jako deterministyczne bramki, skills jako wiedza dziedzinowa, subagents jako odizolowane konteksty, system plików jako pamięć) pojęciowo dotyczą każdego systemu agentowego. Konkretna implementacja wykorzystuje zdarzenia cyklu życia, wzorce dopasowań i Agent tool z Claude Code. AGENTS.md przenosi te same wzorce do Codex, Cursor, Copilot, Amp i Windsurf.21 Wzorzec harness jest niezależny od narzędzia, nawet jeśli szczegóły implementacyjne są dla niego specyficzne.
Karta szybkiego odniesienia
Konfiguracja hooków
{
"hooks": {
"PreToolUse": [{"matcher": "Bash", "hooks": [{"type": "command", "command": "script.sh"}]}],
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "format.sh"}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "agent", "prompt": "Verify tests pass. $ARGUMENTS"}]}],
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "setup.sh"}]}]
}
}
Frontmatter skilla
---
name: my-skill
description: What it does and when to use it. Include trigger phrases.
allowed-tools: Read, Grep, Glob
---
Definicja subagenta
---
name: my-agent
description: When to invoke. Include PROACTIVELY for auto-delegation.
tools: Read, Grep, Glob, Bash
model: opus
permissionMode: plan
---
Instructions for the subagent.
Kody wyjścia
| Kod | Znaczenie | Zastosowanie |
|---|---|---|
| 0 | Sukces | Zezwolenie na operację |
| 2 | Blokada | Bramki bezpieczeństwa, bramki jakości |
| 1 | Nieblokujące ostrzeżenie | Logowanie, komunikaty doradcze |
Kluczowe polecenia
| Polecenie | Przeznaczenie |
|---|---|
/compact |
Kompresuje kontekst, zachowuje decyzje |
/context |
Wyświetla alokację kontekstu i aktywne skills |
/agents |
Zarządza subagentami |
claude -c |
Kontynuuje ostatnią sesję |
claude --print |
Jednorazowe wywołanie CLI (bez konwersacji) |
# <note> |
Dodaje notatkę do pliku pamięci |
/memory |
Wyświetla i zarządza pamięcią automatyczną |
Lokalizacje plików
| Ścieżka | Przeznaczenie |
|---|---|
~/.claude/CLAUDE.md |
Osobiste instrukcje globalne |
.claude/CLAUDE.md |
Instrukcje projektu (współdzielone w git) |
.claude/settings.json |
Hooki i uprawnienia projektu |
~/.claude/settings.json |
Hooki i uprawnienia użytkownika |
~/.claude/skills/<name>/SKILL.md |
Osobiste skills |
.claude/skills/<name>/SKILL.md |
Skills projektu (współdzielone w git) |
~/.claude/agents/<name>.md |
Osobiste definicje subagents |
.claude/agents/<name>.md |
Definicje subagents projektu |
.claude/rules/*.md |
Pliki reguł projektu |
~/.claude/rules/*.md |
Pliki reguł użytkownika |
~/.claude/projects/{path}/memory/MEMORY.md |
Pamięć automatyczna |
Changelog
| Data | Zmiana |
|---|---|
| 2026-05-08 | Przewodnik v1.6: Kontynuacja Day-2 dotycząca Claude Code v2.1.132/v2.1.133 + SDK v0.1.77. Dodano podsekcję SDK Skill Surface w System Skills, omawiającą opcję skills w ClaudeAgentOptions oraz wycofanie "Skill" z allowed_tools.37 Dodano podsekcję Effort and Session Provenance w Hook Architecture, omawiającą nowe pole JSON effort.level + zmienną środowiskową $CLAUDE_EFFORT w danych wejściowych hooków oraz zmienną środowiskową CLAUDE_CODE_SESSION_ID w podprocesach Bash.3839 Dodano poprawkę wykrywania skills przez subagenty do tabeli Subagent Configuration Fields (subagenty wykrywają teraz skills na poziomie projektu, użytkownika i pluginów za pomocą narzędzia Skill, wcześniej milcząco pomijane przed v2.1.133).39 Dodano podsekcję Worktree Base, Sandbox Paths, and Admin Settings w Production Patterns, omawiającą worktree.baseRef (zmiana łamiąca domyślne ustawienie z powrotem do origin/<default> z lokalnego HEAD), sandbox.bwrapPath, sandbox.socatPath oraz parentSettingsBehavior.39 |
| 2026-05-07 | Przewodnik v1.5: Claude Managed Agents, rozszerzenie SF z 6 maja. Dodano Strategię 5 (Managed Memory Curation: Dreaming, Research Preview) w Memory and Context z tabelą porównującą filesystem-as-memory ze strategią Dreaming.35 Dodano Managed Multiagent Orchestration (Public Beta) oraz Outcomes (Public Beta) na początku sekcji Multi-Agent Orchestration z dosłownymi cytatami Anthropic na temat specjalistów współdzielących system plików oraz śledzenia w Claude Console, wraz z tabelą porównawczą wobec self-hosted deliberation. Dodano podsekcję dotyczącą strumieniowania zdarzeń hooków po stronie SDK, omawiającą include_hook_events i HookEventMessage w claude-agent-sdk-python v0.1.74.36 Tylko changelog: Claude Code v2.1.124-v2.1.131 (claude project purge, --dangerously-skip-permissions dla katalogów projektu, invocation_trigger dla skill_activated, poprawka format-on-save w PostToolUse, poprawka blokowania PreToolUse JSON+exit-2, ustawienia skillOverrides); claude-agent-sdk-python v0.1.72 (CLI 2.1.126), v0.1.73 (session_store_flush), v0.1.75 (CLI 2.1.131), v0.1.76 (api_error_status); openai-agents-python v0.15.0-v0.16.1 z v0.16.0 (7 maja) ustawiającym domyślnie gpt-5.4-mini, usuwającym niejawny limit max_turns oraz dodającym współbieżność wykonywania narzędzi po stronie SDK. |
| 2026-05-07 | Przewodnik v1.4: Odświeżono mechanikę hooków i skills w Claude Code na podstawie aktualnej oficjalnej dokumentacji oraz lokalnych dowodów runtime (claude --version 2.1.132, codex --version zwróciło codex-cli 0.128.0). Zaktualizowano powierzchnię hooków z 22/26+ do 29 udokumentowanych zdarzeń, poprawiono budżet opisu skills z 2%/16 000 na 1%/8 000, zmieniono liczbę typów hooków z czterech na pięć z dodaniem mcp_tool, usunięto nieobsługiwane sztywne stwierdzenie o „10 równoległych subagentach” oraz dodano publicznie bezpieczną sekcję parytetu Codex obejmującą AGENTS.md, skills, hooki, pluginy i jawne workflow subagentów. |
| 2026-04-29 | Przewodnik v1.3: Rozszerzono pokrycie OpenAI Agents SDK w sekcji Managed vs. Self-Hosted Harnesses o nazwaną powierzchnię SDK z openai-agents Python v0.14.0 (15 kwietnia) — SandboxAgent, Manifest, SandboxRunConfig, sandbox memory z progressive disclosure, workspace mounts (S3/R2/GCS/Azure), portable snapshots oraz backendy klienckie local/Docker/hosted (Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel). Zastąpiono pomocniczy cytat z Help Net Security podstawowym cytatem z release notes v0.14.0. Dodano krótką notkę o claude-agent-sdk-python v0.1.69-v0.1.71 (28-29 kwietnia) jako trzeciej opcji self-hosted (osadzenie runtime Claude Code jako biblioteki Python): wbudowany Claude CLI podniesiono do v2.1.123, podniesiono dolny próg zależności mcp do >=1.19.0 (starsze wersje milcząco pomijały CallToolResult z narzędzi MCP in-process), poprawka anulowania nursery w Trio oraz parytet pola allowlist SandboxNetworkConfig z TS SDK. Udoskonalenia v0.14.7-v0.14.8 SDK udokumentowane w [^58]. |
| 2026-04-25 | Przewodnik v1.2: Google Cloud Next 2026 (22-24 kwietnia) — Vertex AI zmieniono nazwę na Gemini Enterprise Agent Platform; Agentspace wchłonięto do ujednoliconego Gemini Enterprise; Workspace Studio (no-code agent builder); ponad 200 modeli w Model Garden, w tym Anthropic Claude; agenty partnerskie od Box, Workday, Salesforce, ServiceNow; stabilna ADK v1.0 w czterech językach; Project Mariner (agent przeglądający sieć); zarządzane serwery MCP z Apigee jako mostem API-to-agent; protokół A2A v1.0 w produkcji w 150 organizacjach. Microsoft Agent Framework 1.0 (kwiecień 2026): stabilne APIs, zobowiązanie LTS, pełne wsparcie MCP, .NET + Python. Przeglądarkowy DevUI, który wizualizuje wykonanie agenta i wywołania narzędzi w czasie rzeczywistym, dostępny jest jako preview obok stabilnej powierzchni 1.0. Salesforce Headless 360 (15 kwietnia, TDX): każda funkcjonalność Salesforce (CRM, obsługa, marketing, e-commerce) udostępniona jako narzędzie/CLI command API/MCP, dzięki czemu agenty takie jak Claude Code, Cursor i Codex mogą budować na platformie bez przeglądarki. (TDX 2026 odbyło się 15-16 kwietnia; ogłoszenie Headless 360 datowane jest na 15 kwietnia.) MetaComp StableX KYA (21 kwietnia): framework governance Know Your Agent dla regulowanych usług finansowych (płatności, compliance, zarządzanie majątkiem) — pierwszy tego typu od licencjonowanej instytucji finansowej; dostępny w Claude, Claude Code, OpenClaw oraz innych kompatybilnych platformach AI. Cennik Claude Managed Agents: 0,08 USD za godzinę sesji w trakcie jej trwania, bez opłat runtime w stanie bezczynności — niezależnie od standardowych stawek tokenowych modeli Claude. (Według strony cennika Claude od Anthropic; publiczna beta wystartowała 8 kwietnia 2026.) Memory for Managed Agents weszło w publiczną betę 23 kwietnia 2026 pod nagłówkiem beta managed-agents-2026-04-01. Wszystkie endpointy Managed Agents wymagają teraz tego nagłówka beta. |
| 2026-04-16 | Przewodnik v1.1: Dodano sekcję Managed vs. Self-Hosted Harnesses obejmującą Claude Managed Agents (beta z 8 kwietnia) oraz separację harness/compute w OpenAI Agents SDK (16 kwietnia). Dodano hipernadzorcę multi-agent cross-tool Scion (7 kwietnia, Google). Udokumentowano ustalenie M3MAD-Bench dotyczące plateau debaty. Dodano The Five Principles of Trustworthy Agents (Anthropic, 9 kwietnia) + governance MCP/AGENTS.md w Linux Foundation. Odniesienie do skill-sandbox Permiso SandyClaw. Nowe wzorce długoterminowe Opus 4.7: odporność na awarie narzędzi, poziom wysiłku xhigh, pułap budżetu tokenów (beta task_budget), świadomość niejawnych potrzeb redukująca rusztowanie CLAUDE.md. |
| 2026-03-24 | Pierwsza publikacja |
Bibliografia
-
Andrej Karpathy o „pazurach” jako nowej warstwie nad agentami LLM. Dyskusja na HN (406 punktów, 917 komentarzy). ↩
-
Implementacja autora. 84 hooks, 48 skills, 19 agents, ~15 000 linii orkiestracji. Udokumentowane w Claude Code as Infrastructure. ↩↩↩↩↩↩↩↩
-
Anthropic, „Claude Code Hooks: Exit Codes.” code.claude.com/docs/en/hooks. Kod wyjścia 0 zezwala, kod 2 blokuje, kod 1 ostrzega dla większości zdarzeń;
WorktreeCreatejest bardziej restrykcyjny. ↩↩↩↩↩ -
Anthropic, „Extend Claude with Skills.” code.claude.com/docs/en/skills. Struktura skills, pola frontmatter, dopasowywanie oparte na LLM oraz budżet 1% / 8000 znaków na opis. ↩↩↩↩↩↩↩
-
Anthropic, „Claude Code Sub-agents.” code.claude.com/docs/en/sub-agents. Izolowany kontekst, obsługa worktree, zespoły agentów. ↩↩↩↩↩
-
Anthropic, „Claude Code Documentation.” docs.anthropic.com/en/docs/claude-code. Pliki pamięci, CLAUDE.md, auto-memory. ↩↩↩↩↩
-
System wieloagentowej deliberacji autora. 10 person badawczych, 7-fazowa maszyna stanów, 141 testów. Udokumentowane w Multi-Agent Deliberation. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Simon Willison, „Writing code is cheap now.” Agentic Engineering Patterns. ↩
-
Laban, Philippe, et al., „LLMs Get Lost In Multi-Turn Conversation,” arXiv:2505.06120, maj 2025. Microsoft Research i Salesforce. 15 LLM, ponad 200 000 konwersacji, średni spadek wydajności o 39%. ↩↩↩
-
Mikhail Shilkov, „Inside Claude Code Skills: Structure, Prompts, Invocation.” mikhail.io. Niezależna analiza wykrywania skills, wstrzykiwania kontekstu i sekcji promptu
available_skills. ↩ -
Kod źródłowy Claude Code,
SLASH_COMMAND_TOOL_CHAR_BUDGET. github.com/anthropics/claude-code. ↩ -
Anthropic, „Skill Authoring Best Practices.” platform.claude.com. Limit 500 linii, pliki pomocnicze, konwencje nazewnictwa. ↩
-
Anthropic, „Claude Code Hooks: Lifecycle Events.” code.claude.com/docs/en/hooks. 29 udokumentowanych zdarzeń cyklu życia, typy hooks, zachowanie matcherów, asynchroniczne hooks, HTTP hooks, prompt hooks, agent hooks oraz hooks narzędzi MCP. ↩↩↩↩↩↩↩
-
Tutorial autora dotyczący Claude Code hooks. 5 produkcyjnych hooks od podstaw. Udokumentowane w Claude Code Hooks Tutorial. ↩↩↩↩↩
-
Zarządzanie oknem kontekstu autora w 50 sesjach. Udokumentowane w Context Window Management. ↩↩↩↩↩
-
Implementacja Ralph Loop autora. Iteracja w świeżym kontekście ze stanem w systemie plików, budżety spawnowania. Udokumentowane w The Ralph Loop. ↩↩↩↩↩↩↩
-
Architektura systemu deliberacji autora. 3500 linii Python, 12 modułów, wyzwalacz pewności, walidacja konsensusu. Udokumentowane w Building AI Systems: From RAG to Agents. ↩↩↩
-
Nemeth, Charlan, In Defense of Troublemakers: The Power of Dissent in Life and Business, Basic Books, 2018. ↩
-
Wu, H., Li, Z., and Li, L., „Can LLM Agents Really Debate?” arXiv:2511.07784, 2025. ↩
-
Liang, T. et al., „Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate,” EMNLP 2024. ↩
-
Analiza autora plików AGENTS.md w rzeczywistych repozytoriach. Udokumentowana w AGENTS.md Patterns. Zobacz także: Blog GitHub, „How to Write a Great agents.md: Lessons from Over 2,500 Repositories.” ↩↩↩↩↩↩↩↩
-
Metodyka quality loop i evidence gate autora. Część systemu Jiro Craftsmanship. ↩
-
Anthropic, „Claude Managed Agents Overview”. Publiczna wersja beta uruchomiona 8 kwietnia 2026. Harness-as-a-service z checkpointowaniem sesji, wbudowanym sandboxem, REST API. Cennik: standardowe tokeny + 0,08 USD/godzinę sesji. Nagłówek beta
managed-agents-2026-04-01. ↩↩ -
OpenAI, „Notatki o wydaniu openai-agents Python v0.14.0”. Wydane 15 kwietnia 2026; ogłoszenie ukazało się 16 kwietnia. Wprowadza powierzchnię SDK Sandbox Agents jako warstwę beta nad istniejącym przepływem
Agent/Runner:SandboxAgent,Manifest(kontrakt obszaru roboczego),SandboxRunConfig, capabilities (shell, edycja systemu plików, inspekcja obrazów, skills, sandbox memory, kompakcja), montowanie obszarów roboczych (lokalne, Git, zdalne: S3, R2, GCS, Azure Blob, S3 Files), przenośne migawki z normalizacją ścieżek i zachowaniem dowiązań symbolicznych oraz serializację stanu uruchomienia umożliwiającą wznowienie. Backendy:UnixLocalSandboxClient,DockerSandboxClientoraz hostowani klienci dla Blaxel, Cloudflare, Daytona, E2B, Modal, Runloop, Vercel za pośrednictwem opcjonalnych dodatków. Ogłoszenie z 16 kwietnia podsumowane w Help Net Security. ↩↩ -
Google Cloud, „Scion: Multi-Agent Hypervisor”. Otwarte źródło 7 kwietnia 2026. Orkiestruje Claude Code, Gemini CLI i innych deep agents jako izolowane procesy z dedykowanym kontenerem, git worktree i poświadczeniami na agenta. Tryby wdrożenia: lokalny/hub/Kubernetes. Relacja InfoQ. ↩
-
Klaster badawczy debat wieloagentowych, Q1–Q2 2026. Wu et al., „Can LLM Agents Really Debate?” (arXiv 2511.07784); M3MAD-Bench — benchmark debat wielomodelowych i wieloagentowych pokazujący plateau wydajności i podatność na mylący konsensus; Tool-MAD — heterogeniczne przypisanie narzędzi na agenta + oceny sędziego Faithfulness/Relevance. ↩
-
Anthropic, „Our framework for developing safe and trustworthy agents”. 9 kwietnia 2026. Pięć zasad: kontrola człowieka, zgodność z wartościami, bezpieczeństwo, przejrzystość, prywatność. Darowizna MCP na rzecz Agentic AI Foundation Linux Foundation. ↩↩
-
Permiso Security, „SandyClaw: First Dynamic Sandbox for AI Agent Skills”. 2 kwietnia 2026. Sandbox wykonawczy skills z detekcją Sigma/YARA/Nova/Snort i werdyktami popartymi dowodami. ↩
-
Anthropic, „Introducing Claude Opus 4.7”. 16 kwietnia 2026. Usprawnienia agentów dla zadań długoterminowych: 3-krotna poprawa rozwiązywania zadań produkcyjnych SWE-Bench w stosunku do Opus 4.6, odporność na awarie narzędzi, poziom intensywności
xhigh, budżety zadań (beta), świadomość ukrytych potrzeb. Zobacz także What’s new in Opus 4.7 dla zmian łamiących kompatybilność w Messages API. ↩ -
Złożone odniesienie — OpenAI
openai-agents-pythonv0.14.7 (28 kwietnia 2026) i v0.14.8 (29 kwietnia 2026); Anthropicclaude-agent-sdk-pythonv0.1.69 (28 kwietnia), v0.1.70 (28 kwietnia) oraz v0.1.71 (29 kwietnia). Najważniejsze elementy v0.14.7: właściwości pomocniczetool_name/call_idw elementach narzędzi, podniesiony limit tur konsolidacji pamięci Phase 2, aliasy GPT-5.5 dla kompakcji w sandboxie, zaostrzona walidacja członków tar/zip, odrzucanie dowiązań symbolicznych w źródłachLocalFile, usuwanie nieustawionych pól z wywołań Responses API. Najważniejsze elementy v0.14.8: zachowywanie błędów importu re-exportów MCP, rozdzielanie sekcji instrukcji promptu sandboxa. claude-agent-sdk-python v0.1.69 dodało docstringi do pólClaudeAgentOptionsi podniosło wbudowany CLI do v2.1.121; v0.1.70 podniosło dolną granicę zależnościmcpdo>=1.19.0(starsze wersje cicho odrzucały zwrotyCallToolResultz procesowych handlerów narzędzi MCP), naprawiło uszkodzenie nursery Trio przy wczesnym anulowaniu podczas iteracjiquery()z ustawionymoptions.stderr(spawn_detached()jest teraz używane dla czytnika stderr) oraz podniosło wbudowany CLI do v2.1.122; v0.1.71 dodało pola allowlisty domen (allowedDomains,deniedDomains,allowManagedDomainsOnly,allowMachLookup) doSandboxNetworkConfigw celu zachowania parytetu ze schematem TypeScript oraz podniosło wbudowany CLI do v2.1.123. ↩ -
OpenAI, „Custom instructions with AGENTS.md”. Codex odczytuje globalne i projektowe pliki
AGENTS.md/AGENTS.override.mdprzed pracą, łączy wskazówki od katalogu głównego do bieżącego oraz ogranicza dokumenty projektowe parametremproject_doc_max_bytes. ↩ -
OpenAI, „Agent Skills”. Codex skills używają
SKILL.md, progresywnego ujawniania, jawnego wywołania$skilloraz domyślnej aktywacji na podstawie opisów. ↩ -
OpenAI, „Codex Hooks”. Codex hooks obsługują command hooks w konfiguracji, plugin hooks, managed hooks, matchery dla wspieranych zdarzeń, wejście stdin JSON oraz pola wyjściowe JSON. ↩
-
OpenAI, „Codex Subagents” i „Changelog Codex CLI 0.128.0”. Codex obsługuje jawne równoległe przepływy subagentów, wbudowanych agentów
default,workeriexplorer, niestandardowych agentów TOML, dziedziczoną politykę sandboxa, hooks dołączane do pluginów, stan włączenia hooks oraz utrwalone przepływy/goalw wersji 0.128.0. ↩ -
Anthropic, „New in Claude Managed Agents”. 6 maja 2026. Dreaming (Research Preview): zaplanowany proces w tle, który przegląda sesje agentów i magazyny pamięci, wyodrębnia wzorce i kuratoruje wspomnienia. Outcomes (Public Beta): ocena oparta na rubryce, w której odrębny grader ocenia wynik względem rubryki we własnym oknie kontekstu, dzięki czemu nie podlega wpływowi rozumowania agenta. Multiagent Orchestration (Public Beta): agent prowadzący deleguje fragmenty zadania specjalistom, z których każdy ma własny model, prompt i narzędzia; specjaliści pracują równolegle na współdzielonym systemie plików i wnoszą wkład w ogólny kontekst agenta prowadzącego, z pełnym śledzeniem każdego kroku w Claude Console. ↩↩↩↩↩↩↩↩
-
Anthropic,
claude-agent-sdk-pythonv0.1.74. 6 maja 2026. Dodajeinclude_hook_eventsdoClaudeAgentOptions; gdy ustawione, zdarzenia hooks (PreToolUse, PostToolUse, Stop, inne) są emitowane przez CLI i zwracane ze strumienia wiadomości jakoHookEventMessage, odzwierciedlającincludeHookEventsz SDK TypeScript. Wbudowany Claude CLI podniesiony do v2.1.129. ↩↩ -
Anthropic,
claude-agent-sdk-pythonv0.1.77. 8 maja 2026. Wycofuje wartość"Skill"wallowed_toolsna rzecz dedykowanej opcjiskillswClaudeAgentOptions, dostarcza Claude Code bardziej ustrukturyzowany sygnał o dostępnych skills, ulepsza komunikaty błędów dla wyjątkówCommand failedoraz dołącza Claude CLI v2.1.133. ↩↩ -
Anthropic, Claude Code v2.1.132. 6 maja 2026. Dodaje zmienną środowiskową
CLAUDE_CODE_SESSION_IDw podprocesach narzędzia Bash (zgodną zsession_idwidzianym już przez hooks),CLAUDE_CODE_DISABLE_ALTERNATE_SCREENaby zachować konwersację w natywnym scrollbacku, odświeżony banner startowy/tui fullscreen(mniejsze zużycie pamięci, obsługa myszy, automatyczne kopiowanie przy zaznaczeniu) oraz około dwadzieścia poprawek błędów obejmujących łagodne zamykanie SIGINT, uszkodzenie--resumeprzez surogatne emoji, flagę--permission-modew trybie planowania, obsługę kursora dla pisma indyjskiego i ZWJ, operacje vim w NFD, połykanie wklejenia rozpoczynającego się od/, nieograniczone zużycie pamięci MCP, ponawianietools/listMCP, błąd 400ENABLE_PROMPT_CACHING_1Hw Bedrock + Vertex oraz wyświetlanie skumulowanej liczby tokenów wcontext_windoww statusline. ↩↩ -
Anthropic, Claude Code v2.1.133. 7 maja 2026. Hooks otrzymują teraz
effort.leveljako wejście JSON + zmienną środowiskową$CLAUDE_EFFORT(czytelną także z poleceń Bash). Subagenty wykrywają projektowe, użytkownika i pluginowe skills za pośrednictwem narzędziaSkill(poprawka regresji). Nowe ustawienia administracyjne:worktree.baseRef(fresh|head) przywraca bazę worktree z powrotem doorigin/<default>po przejściu z v2.1.128 na lokalnyHEAD;sandbox.bwrapPathisandbox.socatPathprzypinają binaria sandboxa na Linux/WSL;parentSettingsBehavior('first-wins' | 'merge') kontroluje sposób, w jaki SDKmanagedSettingskomponuje się z ustawieniami nadrzędnymi. Inne poprawki: wyścig 401-po-odświeżeniu-tokenu w sesjach równoległych, zakres reguły zezwoleń dla katalogu głównego dysku, obsługa proxy/mTLS dla MCP OAuth, dokończenie cancel przy stop/interrupt w Remote Control, wyciekanie/effortmiędzy sesjami, wymienienie--remote-controlw--help. ↩↩↩↩↩↩