<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Piotr Czerwiński · Blog</title>
    <link>https://piotrczerwinski.dev/pl/blog</link>
    <description>Wpisy z własnej praktyki o budowaniu produktów z agentami AI (Claude Code, Codex CLI, Kiro), LLM na produkcji, kosztach i przeglądzie kodu.</description>
    <language>pl</language>
    <lastBuildDate>Wed, 23 Sep 2026 08:00:00 GMT</lastBuildDate>
    <atom:link href="https://piotrczerwinski.dev/pl/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>AI engineer, ML engineer, product engineer, FDE: czego naprawdę wymagają ogłoszenia o pracę w AI w 2026</title>
      <link>https://piotrczerwinski.dev/pl/blog/ai-engineering-job-titles-2026</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/ai-engineering-job-titles-2026</guid>
      <description>We wrześniu 2026 przeczytałem około 520 ogłoszeń o zdalnej pracy dla inżynierów, żeby sprawdzić, czy to, jak pracuję, pokrywa się z nazwami, których używa rynek. Observability wyprzedza każdy termin z AI, evals pojawiają się tylko w najlepiej płatnych rolach, a tytuły stanowisk układają się w cztery różne zawody.</description>
      <pubDate>Wed, 23 Sep 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>AI engineering</category>
      <category>rekrutacja</category>
      <category>LLM evals</category>
    </item>
    <item>
      <title>Claude Code hooks w praktyce: jak utrzymać sesję agenta przy jednym temacie</title>
      <link>https://piotrczerwinski.dev/pl/blog/agent-session-topic-brake-hook</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/agent-session-topic-brake-hook</guid>
      <description>Launcher, który deklaruje cel każdej sesji, i hook na prompt, który blokuje prośby nie na temat, odkłada poboczne pomysły do jednolinijkowej skrzynki i eskaluje przy 250K-650K tokenów kontekstu, aż sesja zapisze handoff. Projekt, progi i błąd w parsowaniu flag.</description>
      <pubDate>Tue, 22 Sep 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>context engineering</category>
      <category>narzędzia deweloperskie</category>
    </item>
    <item>
      <title>Spec-driven development z agentami kodującymi: specyfikacje, które agent skończy beze mnie</title>
      <link>https://piotrczerwinski.dev/pl/blog/spec-driven-development-coding-agents</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/spec-driven-development-coding-agents</guid>
      <description>Budowa specyfikacji, którą agent kodujący skończy sam: model produktu, problem, cel, twarde ograniczenia, ponumerowane testy i blok zakończenia. Kto ją pisze, kto wykonuje, ile kosztuje przegląd i dlaczego specyfikacje zawodzą.</description>
      <pubDate>Sat, 19 Sep 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>spec-driven development</category>
      <category>Claude Code</category>
      <category>Codex CLI</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Ten sam agent, odwrotne wyniki: o rezultacie decyduje kryterium wyjścia</title>
      <link>https://piotrczerwinski.dev/pl/blog/agent-exit-criteria</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/agent-exit-criteria</guid>
      <description>Dwa zadania oddane temu samemu agentowi kodującemu: zadanie z jasnymi granicami przeszło 6/6 w 70 sekund, a otwarty brief badawczy wrócił jako notatka o postępach z jednym zmyślonym faktem. Dlaczego różnicę zrobiło kryterium wyjścia, a nie model.</description>
      <pubDate>Tue, 15 Sep 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>Codex CLI</category>
      <category>LLM evals</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Context engineering dla agentów kodujących: dokumentacja projektu, z której agent wznawia pracę za 7K tokenów</title>
      <link>https://piotrczerwinski.dev/pl/blog/context-engineering-docs-as-agent-memory</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/context-engineering-docs-as-agent-memory</guid>
      <description>Dokumentacja projektu to długoterminowa pamięć agenta kodującego. Zmierzyłem, ile kosztuje wznowienie wątku pracy: około 6,7K tokenów przy uporządkowanym drzewie dokumentacji wobec 39,5K przy czytaniu plików w całości. Progi, zasada podziału plików i ciche limity, które z tego wyszły.</description>
      <pubDate>Sun, 13 Sep 2026 08:00:00 GMT</pubDate>
      <category>context engineering</category>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>dokumentacja</category>
    </item>
    <item>
      <title>MCP w codziennej pracy inżyniera: lekkie sesje, ciężkie serwery na żądanie</title>
      <link>https://piotrczerwinski.dev/pl/blog/mcp-servers-daily-engineering</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/mcp-servers-daily-engineering</guid>
      <description>Jakie serwery MCP zasługują na miejsce w codziennej pracy, dlaczego domyślnie ładują się tylko dwa, a ciężkie dochodzą per sesja, jakie kształty zapytań przyspieszają triage incydentów i jakie zasady trzymają agentów z dala od zapisów na produkcji.</description>
      <pubDate>Fri, 11 Sep 2026 08:00:00 GMT</pubDate>
      <category>MCP</category>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>narzędzia deweloperskie</category>
      <category>observability</category>
    </item>
    <item>
      <title>Codex CLI obok Claude Code: jeden zbiór zasad, dwóch agentów</title>
      <link>https://piotrczerwinski.dev/pl/blog/codex-cli-next-to-claude-code</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/codex-cli-next-to-claude-code</guid>
      <description>Jak używam Codex CLI od OpenAI obok Claude Code w tych samych repozytoriach: jeden zbiór zasad, jeden kontrakt hooka, zgodność MCP i skilli, launchery z profilami i reguła, który agent dostaje które zadanie.</description>
      <pubDate>Thu, 10 Sep 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Codex CLI</category>
      <category>agenci AI</category>
      <category>context engineering</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Jak nagłówek instrukcji dla LLM trafił do moich publicznych danych strukturalnych</title>
      <link>https://piotrczerwinski.dev/pl/blog/llm-prompt-leak-structured-data</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/llm-prompt-leak-structured-data</guid>
      <description>Nagłówek z metadanymi napisany dla modelu ekstrakcji trafił do JSON-LD publicznych stron. Jak znalazłem go w źródle strony, jak naprawiłem to przy renderowaniu i w danych oraz jaka reguła governance z tego wynikła.</description>
      <pubDate>Wed, 09 Sep 2026 08:00:00 GMT</pubDate>
      <category>AI governance</category>
      <category>LLM</category>
      <category>dane strukturalne</category>
      <category>bezpieczeństwo</category>
      <category>context engineering</category>
    </item>
    <item>
      <title>Audyt zabezpieczeń mojego agenta kodującego: dziury, które znalazłem</title>
      <link>https://piotrczerwinski.dev/pl/blog/auditing-coding-agent-guardrails</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/auditing-coding-agent-guardrails</guid>
      <description>Zrobiłem audyt zabezpieczeń wokół mojego agenta kodującego i znalazłem dziury: wywołanie API, które omijało ochronę przed usuwaniem, flagę regexa, która po cichu wyłączała hook, i allowlistę uprawnień, na której zebrały się dane uwierzytelniające.</description>
      <pubDate>Sun, 06 Sep 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>bezpieczeństwo</category>
      <category>narzędzia deweloperskie</category>
    </item>
    <item>
      <title>Ile kosztowałby Claude Code na API: 30 dni transkryptów, policzone</title>
      <link>https://piotrczerwinski.dev/pl/blog/coding-agent-token-cost-measured</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/coding-agent-token-cost-measured</guid>
      <description>Wyceniłem 30 dni transkryptów mojego agenta kodującego według publicznych stawek API: około 4176 USD, z czego ponad 90% to odczyty z cache, a 88% inputu poszło na tury z kontekstem powyżej 300K. Dlaczego przy długich sesjach wygrywa subskrypcja i jak to zmierzyć u siebie.</description>
      <pubDate>Fri, 04 Sep 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>context engineering</category>
      <category>koszty</category>
    </item>
    <item>
      <title>Claude Code subagents i routing modeli: tanie zbieranie, mocna synteza</title>
      <link>https://piotrczerwinski.dev/pl/blog/model-routing-multi-agent-work</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/model-routing-multi-agent-work</guid>
      <description>Szerokie zadanie badawcze na najmocniejszym modelu wyczerpało budżet, zanim powstała choćby jedna tabela. Drabina modeli, pilotaż przed rozdzieleniem pracy i minimalny kontekst dla subagentów, których dziś używam, żeby rozdzielać pracę między model mocny, średni i szybki.</description>
      <pubDate>Thu, 03 Sep 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>Claude Code</category>
      <category>context engineering</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Każdy endpoint, który wywołuje model, to otwarty portfel</title>
      <link>https://piotrczerwinski.dev/pl/blog/llm-endpoint-cost-guardrails</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/llm-endpoint-cost-guardrails</guid>
      <description>Każda ścieżka, która wywołuje płatny model, niesie ryzyko denial of wallet. Warstwy, które stosuję na każdym endpoincie z LLM: limity na użytkownika, dzienny limit wydatków, kill switch bez deployu, weryfikacja antybotowa, rejestr wydatków i osobne limity u dostawcy dla każdego środowiska.</description>
      <pubDate>Thu, 27 Aug 2026 08:00:00 GMT</pubDate>
      <category>AI</category>
      <category>bezpieczeństwo</category>
      <category>optymalizacja kosztów</category>
      <category>LLM</category>
    </item>
    <item>
      <title>Zielony build to nie dowód: jak sprawdzam zmiany wygenerowane przez AI</title>
      <link>https://piotrczerwinski.dev/pl/blog/reviewing-ai-generated-code</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/reviewing-ai-generated-code</guid>
      <description>Automatyczny refaktor umieścił hook Reacta poza komponentem, przeszedł sprawdzanie typów i build, po czym położył panel administracyjny. Bramki, które dodałem, i to, jak robię code review zmian wygenerowanych przez AI oraz proponowanych przez nie paczek.</description>
      <pubDate>Tue, 25 Aug 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>Claude Code</category>
      <category>code review</category>
      <category>bezpieczeństwo</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Dlaczego przestałem ładować każdy skill do każdej sesji Claude Code</title>
      <link>https://piotrczerwinski.dev/pl/blog/claude-code-context-architecture</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/claude-code-context-architecture</guid>
      <description>25 skilli, 5 agentów i 4 serwery MCP ładowane do każdej sesji, niezależnie od projektu. Pomogło nie dopisanie kolejnych docsów, tylko trzy warstwy i wiedza o tym, co naprawdę trafia do okna kontekstu i kiedy.</description>
      <pubDate>Wed, 05 Aug 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>context engineering</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Agent kodujący z dostępem do shella, a ja śpię spokojnie: zabezpieczenia (guardrails), których używam</title>
      <link>https://piotrczerwinski.dev/pl/blog/claude-code-autonomy-guardrails</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/claude-code-autonomy-guardrails</guid>
      <description>Agent z dostępem do shella może skasować nie to, co trzeba, zrobić force-push albo ujawnić sekret i w każdym z tych przypadków zgłosić sukces. Cztery warstwy (tryb z kontrolą bezpieczeństwa, twarde reguły deny, hook przed wykonaniem i zachowanie) pozwalają mu skończyć pracę bez dotykania tego, czego nie da się cofnąć.</description>
      <pubDate>Mon, 03 Aug 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>bezpieczeństwo</category>
      <category>narzędzia deweloperskie</category>
    </item>
    <item>
      <title>Dwóch agentów, dwa konteksty: Claude Code u siebie, Kiro CLI w korporacyjnym kodzie</title>
      <link>https://piotrczerwinski.dev/pl/blog/claude-code-vs-kiro-cli-enterprise</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/claude-code-vs-kiro-cli-enterprise</guid>
      <description>Autonomiczny agent na własnym produkcie i zatwierdzony agent w dużym korporacyjnym kodzie to dwie różne dyscypliny. Co się przenosi, co się zmienia i dlaczego korporacyjne ograniczenia to zaleta, a nie wada.</description>
      <pubDate>Sat, 01 Aug 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>Kiro CLI</category>
      <category>agenci AI</category>
      <category>korporacje</category>
    </item>
    <item>
      <title>Jak uruchamiać agentów kodujących równolegle na git worktrees</title>
      <link>https://piotrczerwinski.dev/pl/blog/parallel-agents-git-worktrees</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/parallel-agents-git-worktrees</guid>
      <description>Jedna megasesja dryfuje. Alternatywa: podziel funkcję na trzy do pięciu podzadań o niskim ryzyku konfliktu, z kontraktami ustalonymi z góry, uruchom każde w osobnym git worktree z wyłączonym pushem i bez dostępu do bazy, a potem zintegruj wszystko raz, z testami end-to-end.</description>
      <pubDate>Thu, 30 Jul 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>git</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Model decyduje o czasie, spec o jakości: jak dobierać effort w Claude Code</title>
      <link>https://piotrczerwinski.dev/pl/blog/claude-code-effort-model-selection</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/claude-code-effort-model-selection</guid>
      <description>Nieintuicyjna zasada po miesiącach codziennej pracy z agentami: przy dobrze wyspecyfikowanej pracy model to dźwignia czasu odpowiedzi, a nie jakości. Kiedy wydać pieniądze na wolne, drogie ustawienie, kiedy nie i dlaczego podkręcanie effortu nigdy nie naprawi mglistego planu.</description>
      <pubDate>Mon, 27 Jul 2026 08:00:00 GMT</pubDate>
      <category>Claude Code</category>
      <category>agenci AI</category>
      <category>workflow</category>
      <category>produktywność</category>
    </item>
    <item>
      <title>Osiem miesięcy prowadzenia produktu w pojedynkę z agentami AI jako współinżynierami</title>
      <link>https://piotrczerwinski.dev/pl/blog/ai-agents-as-co-engineers</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/ai-agents-as-co-engineers</guid>
      <description>Nie tygodniowy eksperyment, tylko codzienna praca: jak naprawdę organizuję pracę z Claude Code i Kiro CLI przy produkcyjnym projekcie pobocznym. Gdzie agenci realnie przyspieszają, gdzie nie, jakie zabezpieczenia pozwalają im działać samodzielnie i ile to kosztuje miesięcznie.</description>
      <pubDate>Fri, 24 Jul 2026 08:00:00 GMT</pubDate>
      <category>agenci AI</category>
      <category>Claude Code</category>
      <category>workflow</category>
      <category>solo founder</category>
    </item>
    <item>
      <title>Evals przed merge: golden set za pipeline&apos;em dopasowań AI</title>
      <link>https://piotrczerwinski.dev/pl/blog/llm-evals-golden-set</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/llm-evals-golden-set</guid>
      <description>Jak testuję niedeterministyczny pipeline dopasowań AI przed merge: golden set zbudowany z prawdziwych decyzji w panelu admina, metryki rankingowe powiązane z tym, co widzi użytkownik, bramka zero naruszeń przed wdrożeniem i warianty, które nie pobiły punktu odniesienia.</description>
      <pubDate>Thu, 25 Jun 2026 08:00:00 GMT</pubDate>
      <category>LLM evals</category>
      <category>AI</category>
      <category>dopasowania</category>
      <category>testowanie</category>
    </item>
    <item>
      <title>Tool use zamiast parsowania: ustrukturyzowane dane z LLM na produkcji</title>
      <link>https://piotrczerwinski.dev/pl/blog/llm-structured-output-tool-use</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/llm-structured-output-tool-use</guid>
      <description>Jak wyciągać typowane pola z nieuporządkowanego tekstu za pomocą LLM: dlaczego JSON mode nie wystarcza, jak pomagają tool use i ścisłe schematy, czego schemat nadal nie gwarantuje i dlaczego dostawcę warto trzymać za adapterem.</description>
      <pubDate>Sat, 20 Jun 2026 08:00:00 GMT</pubDate>
      <category>AI</category>
      <category>LLM</category>
      <category>tool use</category>
      <category>architektura</category>
    </item>
    <item>
      <title>Podobieństwo cosinusowe to nie prawdopodobieństwo: strojenie progów w pgvector przy prawdziwych dopasowaniach</title>
      <link>https://piotrczerwinski.dev/pl/blog/pgvector-similarity-thresholds</link>
      <guid isPermaLink="true">https://piotrczerwinski.dev/pl/blog/pgvector-similarity-thresholds</guid>
      <description>Mój retrieval zwracał 200 OK i zero wierszy, po cichu. Dlaczego surowe wyniki podobieństwa embeddingów zależą od modelu i same w sobie niewiele znaczą, jak wyglądają prawdziwe rozkłady wyników i jak skalibrowałem próg na parach testowych zamiast na intuicji.</description>
      <pubDate>Wed, 20 May 2026 08:00:00 GMT</pubDate>
      <category>pgvector</category>
      <category>embeddings</category>
      <category>RAG</category>
      <category>PostgreSQL</category>
      <category>AI</category>
    </item>
  </channel>
</rss>
