<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog Maguyva</title><description>Techniczne analizy dotyczące inteligencji kodu MCP, architektury agentów AI oraz wniosków z budowy wielojęzykowej platformy wyszukiwania kodu.</description><link>https://maguyva.ai/pl/blog</link><language>pl</language><atom:link href="https://maguyva.ai/pl/rss.xml" rel="self" type="application/rss+xml"/><item><title>Kontekst, który podróżuje z tobą</title><link>https://maguyva.ai/pl/blog/context-that-travels</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/context-that-travels</guid><description>Indekser Cursor jest doskonały wewnątrz Cursor. Maguyva to hostowana mapa MCP, którą ten sam agent może odpytywać z innych edytorów, CLI i CI.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Indekser Cursor jest doskonały wewnątrz Cursor. Autouzupełnianie, edycja w linii, czat i agent w tym oknie już opierają się na indeksie projektu, który Cursor utrzymuje dla otwartej przestrzeni roboczej. Jeśli Cursor jest jedynym miejscem, w którym piszesz kod, a ten indeks już znajduje właściwe pliki, zostań tam. To uczciwy przypadek „zostań tam, gdzie jesteś” i słusznie otwiera ten tekst.&lt;/p&gt;
&lt;p&gt;Ten artykuł dotyczy drugiej połowy zwykłego tygodnia. To samo repozytorium jest też otwierane w Claude Code, odpytywane z Codex CLI, przeglądane na drugiej maszynie albo odpytywane przez agenta działającego w CI. Pytanie nie brzmi „który indekser jest lepszy”. Pytanie brzmi, czy mapa, której agent ufa w jednym oknie, jest tą samą mapą, której ufa w kolejnym.&lt;/p&gt;
&lt;p&gt;Maguyva jest tą mapą, która podróżuje z tobą. To zdalna warstwa kontekstu bazy kodu oparta na MCP. Agent odpytuje ją tak samo, jak każde inne narzędzie MCP. Wyniki wracają jako uszeregowane ścieżki z numerami linii. Cursor pozostaje edytorem. To kontekst się przemieszcza.&lt;/p&gt;
&lt;h2 id=&quot;do-czego-służy-indekser-cursor&quot;&gt;Do czego służy indekser Cursor&lt;/h2&gt;
&lt;p&gt;Wbudowane indeksowanie Cursor istnieje po to, by czat, agent i wyszukiwanie w edytorze mogły pobierać istotny kod, zamiast polegać wyłącznie na tym, co mieści się w surowym oknie kontekstu modelu. To właściwy projekt dla IDE. Ten indeks jest natywny dla Cursor. Nie jest serwerem MCP i nie jest dostępny z żadnego innego klienta.&lt;/p&gt;
&lt;p&gt;Oto jak to działa, zgodnie z publiczną dokumentacją Cursor i własnym opisem Cursor w chwili pisania tego tekstu: główna ścieżka wyszukiwania nie jest już chmurowym indeksem embeddingów. Zespół Cursor oświadczył na swoim forum społeczności, że dedykowane wyszukiwanie semantyczne oparte na embeddingach jest wygaszane na rzecz wyszukiwania opartego na grep, ponieważ obecne modele wystarczająco dobrze przeszukują żywe drzewo samodzielnie. W jego miejsce wchodzi Instant Grep, lokalny indeks wyszukiwania zbudowany z n-gramów, list odwróconych i filtrów Blooma, przechowywany w tabeli wyszukiwania zmapowanej w pamięci, dzięki czemu zapytania są rozwiązywane na własnej maszynie dewelopera, a nie na serwerze.&lt;/p&gt;
&lt;p&gt;Sam indeks żyje w katalogu &lt;code&gt;.git/cursor/&lt;/code&gt; należącym do samego repozytorium, zakotwiczonym w konkretnym commicie git; zmiany od tego commitu nakładają się na niego zamiast wywoływać ponowne skanowanie, a indeks przebudowuje się dopiero, gdy stan lokalny znacznie odbiegł od tego, na czym został zbudowany. Ponieważ znajduje się wewnątrz &lt;code&gt;.git&lt;/code&gt;, nigdy nie jest śledzony ani wypychany — usuń folder, a indeks zniknie. &lt;code&gt;.gitignore&lt;/code&gt; jest respektowany z założenia, ponieważ tylko treść śledzona przez git kwalifikuje się do indeksowania, a &lt;code&gt;.cursorignore&lt;/code&gt; jest egzekwowany na ścieżce odczytu. Na tej ścieżce nie ma już ani kroku embeddingu po stronie serwera, ani zdalnej bazy wektorowej. Wcześniejsza dokumentacja opisywała projekt wspomagany przez chmurę — szyfrowanie fragmentów, synchronizację przez drzewo Merkle’a, ponowne wykorzystanie indeksu między członkami zespołu — a sam zespół Cursor oświadczył od tego czasu, że ten projekt jest wygaszany, więc ten tekst nie opisuje go już jako aktualnego.&lt;/p&gt;
&lt;p&gt;Wyróżniającą się cechą w edytorze jest subagent Explore Cursor. Może uruchamiać wiele równoległych wyszukiwań we własnym oknie kontekstu na szybszym modelu i zwracać tylko istotne wyniki, dzięki czemu główna rozmowa nie puchnie od wyników wyszukiwania. To prawdziwa siła wewnątrz edytora. Zachowaj ją.&lt;/p&gt;
&lt;p&gt;Przestrzenie robocze z wieloma katalogami głównymi są obsługiwane: kontekst każdego otwartego folderu jest dostępny dla Agenta. Niektóre funkcje zależne od git, jak worktree, są wyłączone w konfiguracjach z wieloma katalogami głównymi, a Cloud Agents w ogóle nie obsługują przestrzeni roboczych z wieloma katalogami głównymi.&lt;/p&gt;
&lt;p&gt;Nic z tego nie jest powodem, by opuszczać Cursor. To precyzyjny opis mapy, która jest doskonała tam, gdzie żyje.&lt;/p&gt;
&lt;h2 id=&quot;co-naprawdę-oznacza-podróżować-z-tobą&quot;&gt;Co naprawdę oznacza „podróżować z tobą”&lt;/h2&gt;
&lt;p&gt;Mapa podróżuje z tobą, gdy te same pytania zwracają ten sam rodzaj odpowiedzi, z cytatami, które możesz otworzyć, z więcej niż jednego klienta.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;W Cursor: „Gdzie zdefiniowano &lt;code&gt;parseConfig&lt;/code&gt; i kto go wywołuje?”&lt;/li&gt;
&lt;li&gt;W Claude Code, na tym samym repozytorium: to samo pytanie.&lt;/li&gt;
&lt;li&gt;W Codex CLI, na maszynie do przeglądu, która nigdy nie otworzyła okna Cursor: to samo pytanie.&lt;/li&gt;
&lt;li&gt;W agencie CI mówiącym w MCP: to samo pytanie, wobec tego samego hostowanego zrzutu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jeśli każda powierzchnia buduje swój własny prywatny indeks, nie masz jednej mapy. Masz kilka pamięci podręcznych, które się rozjeżdżają. Indeks edytora może być aktualny dla drzewa na dysku. Sesja CLI może być o dzień w tyle. Zadanie CI może patrzeć na inny checkout. A agent i tak nadal będzie brzmiał pewnie.&lt;/p&gt;
&lt;p&gt;Indekser Cursor nie ma tego rozwiązywać. Ponieważ żyje wewnątrz edytora, kontekst, który buduje, jest dla tego edytora. Czytelnik, który potrzebuje też CLI, pipeline’u CI albo innego edytora, potrzebuje osobnego narzędzia dla tych powierzchni. To fakt dotyczący zakresu, nie wada. Maguyva jest tym osobnym narzędziem.&lt;/p&gt;
&lt;p&gt;Opublikowana liczba języków dla indeksera Cursor nie jest podana w materiałach, z których może korzystać ten tekst. Maguyva publikuje wsparcie dla ponad 279 języków i technologii tekstowych. Cennik Cursor również nie jest tu przepisywany; zobacz ich stronę z cenami. Maguyva pobiera opłaty za workspace, a nie za miejsce, z opublikowanymi planami $0, $19, $49 i $149, zależnie od indeksowanej objętości i rozmiaru workspace.&lt;/p&gt;
&lt;h2 id=&quot;jedna-hostowana-mapa-każdy-klient-mcp&quot;&gt;Jedna hostowana mapa, każdy klient MCP&lt;/h2&gt;
&lt;p&gt;Maguyva to zdalny serwer MCP. Łączysz GitHub, wybierasz repozytoria, a chmurowy pipeline buduje symbole, krawędzie grafu i uszeregowaną mapę. Dodajesz klucz API do konfiguracji MCP klienta, którego już używasz. Maguyva ma przewodniki konfiguracji dla 24 udokumentowanych klientów MCP — w tym Cursor — i może łączyć się z innymi klientami zgodnymi z MCP, które obsługują standardową konfigurację.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/pl/for-cursor&quot;&gt;Strona konfiguracji Cursor&lt;/a&gt; to ścieżka specyficzna dla tego edytora, jeśli tam pracujesz. Ten sam serwer odpowiada Claude Code, VS Code, Windsurf, Codex CLI i innym. Nie zmieniasz edytora. Dajesz każdemu agentowi tę samą powierzchnię narzędzi: 11 skierowanych do klienta narzędzi MCP w zakresie wyszukiwania, symboli, analizy zależności, pobierania plików, kontekstu repozytorium i deterministycznych przepływów narzędziowych. Wyszukiwanie semantyczne, strukturalne, grafowe i tekstowe są łączone w uszeregowane wyniki.&lt;/p&gt;
&lt;p&gt;Na tym polega korzyść z przenośności. Cytaty, które sprawdziłeś rano w Cursor, mają tę samą formę co cytaty, które Codex CLI zwróci dziś wieczorem. Ścieżka pliku i numer linii. Otwórz je. Jeśli są błędne, zobaczysz to. Jeśli są poprawne, kolejna edycja ma gdzie wylądować. Zatwierdzone twierdzenie to mniej zhalucynowanych edycji, nie obietnica, że każda edycja jest poprawna.&lt;/p&gt;
&lt;p&gt;Aktualność jest publikowana. Migawki są opatrzone znacznikiem czasu, więc agent wie, którą wersję drzewa czyta. Częstotliwość przebudowy to codziennie w planie darmowym i co godzinę w planach płatnych. Uczciwym ograniczeniem jest niezsynchronizowana praca lokalna: edycja istniejąca tylko w drzewie roboczym jeszcze nie trafiła do hostowanej mapy. To ograniczenie jest takie samo niezależnie od tego, z którego klienta odpytujesz, i o to właśnie chodzi. Rozjazd między klientami przestaje być drugim, ukrytym ograniczeniem.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/pl/docs&quot;&gt;Dokumentacja&lt;/a&gt; podaje pętlę aktywacji, która dotyczy każdego klienta: zindeksuj repozytorium, które już znasz, połącz klienta, zadaj jedno pytanie, które możesz sprawdzić. Zrób to raz w Cursor. Zrób to jeszcze raz z CLI, którego naprawdę używasz w dni przeglądu. Jeśli obie odpowiedzi cytują ten sam handler, mapa naprawdę podróżowała z tobą.&lt;/p&gt;
&lt;h2 id=&quot;jak-dwie-mapy-współistnieją-obok-siebie&quot;&gt;Jak dwie mapy współistnieją obok siebie&lt;/h2&gt;
&lt;p&gt;Używaj obu. To nie są alternatywy w sensie strony porównawczej.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Zostaw indekser Cursor włączony dla projektu na dysku. Niech Explore, Instant Grep i agent wewnątrz edytora go używają. Ta pętla jest natywna i szybka.&lt;/li&gt;
&lt;li&gt;Dodaj Maguyva jako serwer MCP w Cursor, żeby ta sama sesja mogła też odpytywać hostowaną mapę workspace. Cursor jest udokumentowanym klientem Maguyva. Nie wybierasz jednego indeksu, kasując drugi.&lt;/li&gt;
&lt;li&gt;Dodaj ten sam serwer Maguyva do Claude Code, Codex CLI, lub dowolnego innego klienta MCP, który dotyka repozytorium. Jedna forma klucza API. Jeden workspace.&lt;/li&gt;
&lt;li&gt;Jeśli agent CI jest zgodny z MCP, skieruj go na ten sam serwer. Przeczyta tę samą, opatrzoną znacznikiem czasu migawkę, co laptop.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Indeks edytora pozostaje najlepszym narzędziem do pytania „co jest na dysku w tym oknie, właśnie teraz”. Hostowana mapa jest najlepszym narzędziem do pytania „jak ten workspace wygląda dla każdego agenta, który dotknie go dzisiaj”. Te zdania nie konkurują ze sobą.&lt;/p&gt;
&lt;p&gt;Limity workspace są publikowane na &lt;a href=&quot;https://maguyva.ai/pl/pricing&quot;&gt;stronie cen&lt;/a&gt;: repozytoria, zindeksowane linie i użytkownicy, rozliczani za workspace. Agenci i ludzie dzielą tę samą liczbę użytkowników. Zacznij za darmo od repozytorium, które już potrafisz ocenić. Zwiększaj workspace dopiero po tym, jak cytaty przetrwają kontakt z drzewem.&lt;/p&gt;
&lt;h2 id=&quot;czego-ta-strona-nie-twierdzi&quot;&gt;Czego ta strona nie twierdzi&lt;/h2&gt;
&lt;p&gt;Nie twierdzi, że indekser Cursor jest słaby, niekompletny albo powodem, by zmienić edytor. Pierwsze zdanie tego tekstu mówi coś przeciwnego.&lt;/p&gt;
&lt;p&gt;Nie twierdzi, że Maguyva zastępuje Instant Grep albo subagenta Explore. To funkcje Cursor. Zostają w Cursor.&lt;/p&gt;
&lt;p&gt;Nie wymyśla liczby języków, wartości opóźnienia ani oszczędności tokenów dla żadnego z produktów. Nieznane liczby pozostają niepublikowane.&lt;/p&gt;
&lt;p&gt;Nie udaje, że niewypchnięta praca lokalna jest w hostowanej mapie. Migawki ze znacznikiem czasu czynią to ograniczenie widocznym. Nie usuwają go.&lt;/p&gt;
&lt;p&gt;Test jest zwyczajny. Zindeksuj repozytorium, które już znasz. Zadaj jedno pytanie, które możesz sprawdzić, najpierw w Cursor, potem w drugim kliencie MCP. Kontekst, który podróżuje z tobą, to ten sam cytat w obu miejscach.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// same map, wherever you opened it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>MCP</category><category>Portability</category></item><item><title>Najpierw mapa, potem przegląd</title><link>https://maguyva.ai/pl/blog/map-first-review-second</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/map-first-review-second</guid><description>Ugruntuj agenta kodującego w mapie repozytorium, zanim zacznie pisać. Niech Greptile przejrzy pull request potem. Uzupełniająca się para, nie zamiennik.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Po obu stronach pull requesta znajdują się dwa różne zadania. Zanim agent napisze, potrzebuje mapy drzewa, które zamierza zmienić. Gdy agent otworzy PR, coś powinno odczytać tę zmianę na tle reszty systemu i zostawić komentarze, na podstawie których człowiek może działać.&lt;/p&gt;
&lt;p&gt;Te zadania z daleka wyglądają podobnie, bo oba dotyczą „rozumienia bazy kodu”. To nie ten sam produkt. Jedno odpowiada na pytanie „gdzie ta zmiana powinna wylądować?”. Drugie odpowiada na pytanie „co ten diff zepsuł, czego linter przeglądający linia po linii nie zauważy?”. Pomieszanie ich daje gorszy pierwszy szkic i głośniejszy przegląd.&lt;/p&gt;
&lt;p&gt;Ten tekst jest przewodnikiem po wspólnym przepływie pracy. Maguyva to mapa, którą agent odpytuje najpierw. Greptile to agent przeglądający, który komentuje PR potem. Ta para jest uzupełniająca się z założenia: Maguyva nie przegląda pull requestów, a Greptile nie zastępuje warstwy kontekstu, której agent użył, żeby je napisać.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-ten-podział-jest-przydatny&quot;&gt;Dlaczego ten podział jest przydatny&lt;/h2&gt;
&lt;p&gt;Agent kodujący, który wychodzi od wiedzy wyniesionej z treningu plus kilku wklejonych plików, wymyśli wiarygodną ścieżkę i ją edytuje. To jest porażka „złego pliku” i jest to problem wyszukiwania. Maguyva to zdalna warstwa kontekstu bazy kodu oparta na MCP: wyszukiwanie semantyczne, strukturalne (AST), grafowe/zależnościowe i tekstowe łączą się w uszeregowane wyniki, plus wyszukiwanie symboli i pobieranie plików. Ugruntowane odpowiedzi wracają jako &lt;code&gt;path/file.ext:line&lt;/code&gt;, więc możesz odrzucić chybienie, zanim powstanie łatka. Twierdzenie pozostaje skromne: mniej zhalucynowanych edycji. Model wciąż może zgadywać. Po prostu pierwszy krok przestaje być zgadywaniem.&lt;/p&gt;
&lt;p&gt;Greptile to agent przeglądający kod oparty na AI. Ich własnymi słowami, automatycznie przegląda każdy pull request z pełnym zrozumieniem bazy kodu, przeciwstawiając to tradycyjnym linterom, które sprawdzają pliki w izolacji, a nie cały system. Konfiguracja polega na zainstalowaniu aplikacji GitHub lub GitLab i wybraniu repozytoriów. Nie ma lokalnego indeksu, którym musiałbyś zarządzać. Hostingiem jest Greptile Cloud (deklarują zgodność z SOC 2 Type II, z raportem dostępnym na żądanie), z opcją samodzielnego hostowania oferowaną firmom.&lt;/p&gt;
&lt;p&gt;Ich własny ponumerowany przepływ wygląda tak: połączyć się i zbudować graf zależności każdej funkcji, klasy i zależności; przy każdym pull requeście analizować zmianę, używając tego pełnego grafu repozytorium, i publikować wyniki jako komentarze PR z sugerowanymi poprawkami w około trzy minuty; każdy komentarz może przekazać problem agentowi kodującemu, którego zespół już używa. Deklarują też, że czytają wcześniejsze komentarze ludzi do PR w czasie, aby nauczyć się standardów kodowania zespołu i zmniejszyć liczbę hałaśliwych sugestii. Ich system uczący się, jak deklarują, potrzebuje 2–3 tygodni na adaptację.&lt;/p&gt;
&lt;p&gt;To przegląd, nie tworzenie szkicu. Mocną stroną Greptile jest kontekst pełnego grafu repozytorium dotyczący zmiany, która już wylądowała w PR, a potem zamknięta pętla wysyłająca wynik do Claude Code, Codex, Conductor, Cursor lub Devin. Mocną stroną Maguyva jest uszeregowana mapa, którą agent odpytał, zanim ta zmiana została napisana. Używaj obu. Nie proś żadnego z nich o wykonanie pracy drugiego.&lt;/p&gt;
&lt;p&gt;Integracja produktowa pierwszej strony Maguyva–Greptile nie jest zadeklarowana. Nie potrzebujesz jej też. Maguyva rozmawia z agentem przez MCP. Greptile rozmawia z GitHub lub GitLab przez swoją aplikację. Spotykają się przy pull requeście. Bez skryptu łączącego, bez crona łączącego jedno narzędzie z drugim. Ta para obywa się bez bash, bo każdy produkt już zajmuje powierzchnię, która do niego należy.&lt;/p&gt;
&lt;h2 id=&quot;czym-to-nie-jest&quot;&gt;Czym to nie jest&lt;/h2&gt;
&lt;p&gt;To nie jest demolka Greptile. To nie jest strona „zmień recenzenta”. Greptile wystartował na Hacker News 5 marca 2024 roku jako firma Y Combinator W24, i ten wątek jest tym, jak wiele osób po raz pierwszy poznało ten produkt. Jeśli tak właśnie ich znalazłeś, zostań przy nich. Ta strona jest brakującą przednią połową tej pętli: ugruntowanie agenta z wyprzedzeniem, żeby PR, który widzi Greptile, już celował we właściwe pliki.&lt;/p&gt;
&lt;p&gt;Materiały marketingowe Greptile prowadzą z twierdzeniami o szybkości przeglądu i wykrywaniu błędów. Traktuj je jako własne twierdzenia Greptile, nie jako niezależnie zweryfikowane liczby. Ten tekst nie powtarza ich jako faktów.&lt;/p&gt;
&lt;p&gt;Pokrycie językowe to ta sama uczciwość. Greptile przedstawia wsparcie jako obejmujące wszystkie języki programowania, a nie wymienioną listę; dokładna liczba nie jest podana. Maguyva publikuje wsparcie dla ponad 279 języków i technologii tekstowych, z technicznym podziałem (AST wsparte parserem kontra tylko tekst) na stronie, gdy pytanie jest techniczne. To różne produkty, składające różne twierdzenia. Nie mieszaj ich.&lt;/p&gt;
&lt;p&gt;Ceny Greptile nie są podane w materiałach, z których może korzystać ten tekst. Płatne plany istnieją; zobacz ich stronę cen. Maguyva pobiera opłaty za workspace, nie za miejsce. Plany zaczynają się za darmo. &lt;a href=&quot;https://maguyva.ai/pl/pricing&quot;&gt;Strona cen&lt;/a&gt; wymienia opublikowane poziomy, jeśli potrzebujesz liczb dotyczących workspace.&lt;/p&gt;
&lt;h2 id=&quot;przepływ-pracy&quot;&gt;Przepływ pracy&lt;/h2&gt;
&lt;p&gt;Trzy nazwane etapy. Wykonuj je w tej kolejności. Nie pomijaj żadnego z nich za pierwszym razem, gdy próbujesz tej pary.&lt;/p&gt;
&lt;h3 id=&quot;1-kontekst-maguyva&quot;&gt;1. Kontekst Maguyva&lt;/h3&gt;
&lt;p&gt;Zindeksuj jedno repozytorium, które już znasz. Połącz klienta MCP, w którym już piszesz kod — Claude Code, Cursor, Codex CLI, VS Code, Windsurf, albo innego klienta zgodnego z MCP. Maguyva ma przewodniki konfiguracji dla 24 udokumentowanych klientów MCP i może łączyć się z innymi klientami obsługującymi standardową konfigurację MCP.&lt;/p&gt;
&lt;p&gt;Zadaj pytanie, które możesz ocenić, zanim ktokolwiek napisze linijkę. „Gdzie obsługiwane jest wygaśnięcie sesji i co to wywołuje?” to lepsze pierwsze posunięcie niż „napraw uwierzytelnianie”. Wymagaj cytatów. Otwórz wyniki &lt;code&gt;file.ext:line&lt;/code&gt;. Podążaj za symbolem. Potwierdź zależność, której zamierzasz dotknąć.&lt;/p&gt;
&lt;p&gt;Maguyva udostępnia 11 skierowanych do klienta narzędzi MCP w zakresie wyszukiwania, symboli, analizy zależności, pobierania plików, kontekstu repozytorium i deterministycznych przepływów narzędziowych. Cztery tryby wyszukiwania łączą się w uszeregowane wyniki; &lt;code&gt;find_symbol&lt;/code&gt; to osobne narzędzie, gdy już znasz nazwę. &lt;a href=&quot;https://maguyva.ai/pl/docs&quot;&gt;Dokumentacja&lt;/a&gt; opisuje najkrótszą ścieżkę: zacznij za darmo, zindeksuj repozytorium, które już znasz, połącz klienta, potem zadaj jedno pytanie, które możesz sprawdzić.&lt;/p&gt;
&lt;p&gt;Migawki są opatrzone znacznikiem czasu, więc agent może stwierdzić, którą wersję drzewa czyta. Uczciwym ograniczeniem jest niezsynchronizowana praca lokalna. Jeśli edycja istnieje tylko w drzewie roboczym i nie została wypchnięta, hostowana mapa jeszcze jej nie zawiera. Pliki instrukcji (&lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;) nadal mają tu swoje miejsce, dla konwencji i tego, czego nie dotykać. Nie są żywą mapą. Używaj ich do zachowania. Używaj Maguyva do faktów.&lt;/p&gt;
&lt;p&gt;Nie pozwól agentowi otworzyć PR, zanim cytaty przetrwają kontakt z repozytorium. Ta bramka to cały sens tego etapu.&lt;/p&gt;
&lt;h3 id=&quot;2-pr-agenta&quot;&gt;2. PR agenta&lt;/h3&gt;
&lt;p&gt;Ten sam agent teraz pisze zmianę w kliencie, za który już płacisz. Maguyva nie jest edytorem ani recenzentem. Agent nadal produkuje diff. Ty nadal otwierasz pull request na GitHub lub GitLabie, tak jak już to robisz.&lt;/p&gt;
&lt;p&gt;To, co powinno być inne, to pierwszy plik. PR powinien wskazać handler, który rzeczywiście implementuje zachowanie, wywołującego, który się zepsuje, oraz test, który zawiedzie, jeśli zmiana jest błędna. Jeśli etap 1 został pominięty, etap 3 wyda swoje komentarze na zmianę, która wylądowała w złym pakiecie. Greptile wciąż może znaleźć problemy systemowe. Nie powinien musieć dodatkowo dochodzić do siebie po zhalucynowanej ścieżce.&lt;/p&gt;
&lt;p&gt;Trzymaj PR w ryzach. Ugruntowany pierwszy plik to nie licencja na przepisanie modułu. Ta uzupełniająca się para działa, gdy agent wykonał jedną pracę z mapą, a potem poprosił recenzenta o wykonanie innej pracy na ograniczonym diffie.&lt;/p&gt;
&lt;h3 id=&quot;3-przegląd-greptile&quot;&gt;3. Przegląd Greptile&lt;/h3&gt;
&lt;p&gt;Greptile jest już połączony z repozytorium przez aplikację GitHub lub GitLab. Na nowym pull requeście analizuje zmianę, używając zbudowanego przez siebie pełnego grafu repozytorium, i publikuje wyniki jako komentarze z sugerowanymi poprawkami. Ich własne materiały określają ten przebieg na około trzy minuty.&lt;/p&gt;
&lt;p&gt;Czytaj komentarze tak, jak czytałbyś uważnego kolegę z zespołu: otwórz zacytowane miejsce, zdecyduj, czy wynik jest prawdziwy, potem działaj. Tam, gdzie Greptile oferuje „Fix with your Agent”, wysyła problem — ścieżki plików, numery linii, sugerowany kod — do Claude Code, Codex, Conductor, Cursor lub Devin. „Fix All” wysyła wszystkie problemy z przeglądu naraz. Dostarczają też Greptile MCP i wtyczkę Claude Code do tego przekazania. Maguyva nie ma na tej wymienionej liście celów; ten brak nie jest problemem. Maguyva wykonała już swoją pracę na etapie 1. Agent kodujący, który napisał PR, jest tym, który powinien otrzymać ładunek naprawczy.&lt;/p&gt;
&lt;p&gt;Spodziewaj się szumu przez pierwsze 2–3 tygodnie, gdy system uczący się Greptile adaptuje się do komentarzy, które twój zespół rzeczywiście zostawia. To ich zadeklarowany harmonogram, nie wada tej pary. Przegląd przez człowieka pozostaje w pętli. Greptile to zautomatyzowany pierwszy przebieg, nie przycisk scalania.&lt;/p&gt;
&lt;p&gt;Jeśli komentarz Greptile wskazuje na plik, którego agent nigdy nie odpytał na etapie 1, to przydatny sygnał. Albo mapa przeoczyła wywołującego, albo agent pominął cytat. Popraw szkic zgodnie z komentarzem. Nie wyłączaj recenzenta.&lt;/p&gt;
&lt;h2 id=&quot;jak-zachować-uczciwość-tego-uzupełniania-się&quot;&gt;Jak zachować uczciwość tego uzupełniania się&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Maguyva zawsze pierwsza. Przegląd PR ze złym plikiem nadal jest przeglądem złego pliku.&lt;/li&gt;
&lt;li&gt;Greptile zawsze potem. Dobrze zacytowany szkic i tak potrzebuje odczytu diffa na poziomie całego systemu.&lt;/li&gt;
&lt;li&gt;Nie proś Maguyva o publikowanie komentarzy do PR. Ona tego nie robi.&lt;/li&gt;
&lt;li&gt;Nie proś Greptile o bycie pierwszą warstwą wyszukiwania agenta, gdy ten wciąż wybiera ścieżkę. To nie jest praca, do której zbudowana jest ich aplikacja GitHub lub GitLab.&lt;/li&gt;
&lt;li&gt;Nie wymyślaj pipeline’u bash, który je „synchronizuje”. PR jest interfejsem.&lt;/li&gt;
&lt;li&gt;Weryfikuj obie strony niezależnie. Zindeksuj repozytorium, które już znasz. Zadaj jedno pytanie, które możesz sprawdzić. Potem otwórz mały PR i przeczytaj, co Greptile faktycznie komentuje.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gdy nadać temu nazwę, pętla staje się zwyczajna. Najpierw mapa. Potem PR agenta. Potem przegląd. Każdy produkt zostaje po tej stronie pull requesta, w której jest dobry.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// map first. review second. in that order.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>Workflow</category><category>Code Review</category></item><item><title>Dać agentowi AI kontekst dużego repozytorium bez lokalnego indeksera</title><link>https://maguyva.ai/pl/blog/large-repo-context-without-a-local-indexer</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/large-repo-context-without-a-local-indexer</guid><description>Jak dać agentowi kodującemu przeszukiwalną mapę dużego repozytorium z chmury, bez uruchamiania lokalnego indeksera na laptopie.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Duże repozytorium nie mieści się w oknie kontekstu, a jeśli kiedykolwiek skierowałeś indekser laptopa na prawdziwe monorepo, wiesz, że tam też nie mieści się wygodnie — RAM skacze, pierwsze indeksowanie trwa godzinę, a twój agent i tak zaczyna kolejną sesję od zgadywania, które pliki mają znaczenie.&lt;/p&gt;
&lt;p&gt;Zwykłą odpowiedzią jest uruchomienie indeksera obok edytora i dla repozytorium, które wygodnie mieści się na jednej maszynie, to dobra odpowiedź. Jeśli twoje monorepo już szybko indeksuje się w Cursor, a to jedyne miejsce, w którym potrzebujesz mapy, ten tekst nie ma nic do dodania — pomiń go.&lt;/p&gt;
&lt;p&gt;Ten tekst dotyczy innego przypadku — kiedy agent potrzebuje przeszukiwalnej mapy dużego repozytorium, a ty nie chcesz uruchamiać do tego lokalnego indeksera.&lt;/p&gt;
&lt;h2 id=&quot;kiedy-lokalny-indekser-jest-złym-narzędziem&quot;&gt;Kiedy lokalny indekser jest złym narzędziem&lt;/h2&gt;
&lt;p&gt;Lokalny indeks zakłada, że kod żyje na maszynie, która go odpytuje, a przy prawdziwej skali monorepo to założenie napina się nawet wewnątrz jednego edytora. Repozytorium jest po prostu większe, niż chcesz trzymać „rozgrzane” na laptopie: pracujesz w jednym pakiecie, podczas gdy zasięg wpływu leży trzy katalogi dalej, a pierwsze, zimne indeksowanie drzewa liczącego dwa miliony linii to nie jest coś, co chcesz przeżyć dwukrotnie — ani na własnej maszynie, ani na runnerze CI, który nigdy wcześniej nie sklonował tego drzewa. Albo współpracownik powinien móc odpytywać tę samą mapę co ty, nie czekając, aż jego własna maszyna przebrnie przez ten sam indeks.&lt;/p&gt;
&lt;p&gt;Nic z tego nie jest powodem, by wyrzucać dobry indekser edytora. To powód, by mieć dodatkowo hostowaną mapę, którą każdy z twoich agentów może odpytać przez MCP.&lt;/p&gt;
&lt;p&gt;A problem skali sięga głębiej niż „za dużo plików, żeby je wkleić”. Na dużym drzewie interesujące pytanie prawie nigdy nie brzmi „pokaż mi ten plik” — brzmi który plik, który symbol, którzy wywołujący, które testy. Agent, który zaczyna od wylistowania &lt;code&gt;src/&lt;/code&gt; i przeczytania pierwszych trzech wyników, beztrosko przeoczy handler w &lt;code&gt;apps/api&lt;/code&gt; i wygenerowany klient w &lt;code&gt;packages/sdk&lt;/code&gt;. Potrzebujesz wyszukiwania zbudowanego z całego drzewa, potem uszeregowanego, potem zacytowanego.&lt;/p&gt;
&lt;h2 id=&quot;co-naprawdę-oznacza-kontekst-dużego-repozytorium&quot;&gt;Co naprawdę oznacza „kontekst dużego repozytorium”&lt;/h2&gt;
&lt;p&gt;Wrzucanie plików do promptu to nie kontekst — to mniejsza, gorsza kopia drzewa. To, czego naprawdę potrzebuje twój agent, to zadawanie pytań i otrzymywanie w odpowiedzi zacytowanych odpowiedzi: gdzie zdefiniowano ten symbol i kto go wywołuje, co zależy od modułu, który zamierzam zmienić, który plik testu obejmuje to zachowanie, i jak drzewo wygląda &lt;em&gt;teraz&lt;/em&gt;, a nie w zeszłym kwartale.&lt;/p&gt;
&lt;p&gt;Te odpowiedzi muszą pochodzić z indeksu zbudowanego z twojego repozytorium, a nie z pamięci modelu o cudzych repozytoriach, a ten indeks musi żyć gdzieś poza oknem kontekstu agenta. W tym problemie powinien też żyć gdzieś poza twoim laptopem.&lt;/p&gt;
&lt;p&gt;Jeszcze jedna rzecz, której pliki instrukcji nie mogą za ciebie zrobić: &lt;code&gt;CLAUDE.md&lt;/code&gt; i &lt;code&gt;AGENTS.md&lt;/code&gt; to właściwe miejsce na konwencje i zachowanie, ale nie są żywą, uszeregowaną, przeszukiwalną mapą drzewa liczącego dwa miliony linii. Używaj reguł do zachowania; używaj inteligencji repozytorium do faktów.&lt;/p&gt;
&lt;h2 id=&quot;budujemy-mapę-w-chmurze-odpytujemy-ją-z-dowolnego-klienta&quot;&gt;Budujemy mapę w chmurze, odpytujemy ją z dowolnego klienta&lt;/h2&gt;
&lt;p&gt;Maguyva to zdalna warstwa kontekstu bazy kodu oparta na MCP. Łączysz GitHub, wybierasz swoje repozytoria i możesz odejść, podczas gdy chmurowe pipeline’y parsują drzewo, budują symbole i krawędzie grafu oraz utrzymują uszeregowaną mapę — nigdy bez lokalnego indeksera.&lt;/p&gt;
&lt;p&gt;Gdy wypychasz kod, zmienione pliki są parsowane przyrostowo, a warstwy grafu i rankingu przebudowują się według harmonogramu: codziennie w planie darmowym, co godzinę w płatnych. Każda migawka jest opatrzona znacznikiem czasu, więc twój agent może stwierdzić, którą wersję drzewa czyta. Uczciwym ograniczeniem jest tu niezsynchronizowana praca lokalna — edycja istniejąca tylko w twoim drzewie roboczym, nigdy niewypchnięta, jeszcze nie jest w hostowanej mapie.&lt;/p&gt;
&lt;p&gt;Potem podłączasz dowolnego klienta, którego już używasz, dodając klucz API do jego konfiguracji MCP. Istnieją przewodniki konfiguracji dla 24 udokumentowanych klientów MCP, a każdy inny klient zgodny z MCP, który obsługuje standardową konfigurację, też może się połączyć. Jeśli Cursor jest twoim domem, &lt;a href=&quot;https://maguyva.ai/pl/for-cursor&quot;&gt;strona Cursor&lt;/a&gt; przeprowadzi przez tę ścieżkę; ten sam serwer odpowiada Claude Code, VS Code, Windsurf, Codex CLI i innym.&lt;/p&gt;
&lt;p&gt;Nie zmieniasz edytora. Dajesz swojemu agentowi powierzchnię narzędzi — 11 narzędzi MCP w zakresie wyszukiwania, symboli, analizy zależności, pobierania plików i kontekstu repozytorium — z pokryciem ponad 279 języków i technologii tekstowych, co znaczy więcej, niż myślisz, na monorepo, które przestało być jednojęzyczne wiele lat temu.&lt;/p&gt;
&lt;p&gt;Odpowiedzi wracają ugruntowane, jako ścieżki plików z numerami linii. Wyszukiwanie semantyczne, strukturalne, grafowe i tekstowe są łączone w uszeregowane wyniki, więc pytanie w rodzaju „co zależy od parseConfig” daje nie zrzut grep ani pojedynczy fragment semantyczny, tylko garść miejsc, które naprawdę mają znaczenie.&lt;/p&gt;
&lt;h2 id=&quot;konkretna-instrukcja&quot;&gt;Konkretna instrukcja&lt;/h2&gt;
&lt;p&gt;Nie zaczynaj od zindeksowania całej firmy. Oto ścieżka, która działa:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wybierz jedno repozytorium, które już dobrze znasz — pakiet, który potrafisz ocenić ręcznie, jest wart więcej niż największe drzewo, jakie masz.&lt;/li&gt;
&lt;li&gt;Zacznij za darmo: 3 repozytoria, 50 tys. zindeksowanych linii, wszystkie 11 narzędzi, bez miesięcznego limitu zapytań. Jeśli twoje reprezentatywne repozytorium jest większe, &lt;a href=&quot;https://maguyva.ai/pl/pricing&quot;&gt;strona cen&lt;/a&gt; wymienia poziomy workspace ($0, $19, $49, $149) według zindeksowanej objętości — nie liczby miejsc.&lt;/li&gt;
&lt;li&gt;Połącz GitHub i poczekaj na zakończenie pierwszego indeksowania. Nie kompilujesz niczego lokalnie.&lt;/li&gt;
&lt;li&gt;Podłącz klienta MCP — kilka linii konfiguracji. Maguyva to zdalny serwer MCP, więc nie ma wtyczek, rozszerzeń ani drugiego edytora do przyswojenia.&lt;/li&gt;
&lt;li&gt;Zadaj jedno pytanie, które możesz sprawdzić. „Co zależy od parseConfig?” albo „Gdzie obsługiwane jest wygaśnięcie sesji logowania?” Potem otwórz zacytowane wyniki &lt;code&gt;file.ext:line&lt;/code&gt; i sprawdź je względem drzewa przed tobą.&lt;/li&gt;
&lt;li&gt;Dopiero gdy cytaty przetrwają ten kontakt, pozwól agentowi edytować.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jeśli pierwsze repozytorium dobrze pasuje, a twoje drzewo jest duże, podnieś workspace, dopasowując go do zindeksowanych linii i częstotliwości przebudowy. Ludzie i agenci dzielą tę samą liczbę użytkowników — Maguyva pobiera opłaty za workspace, nie za miejsce — więc dodanie trzeciego agenta do pętli nic cię nie kosztuje.&lt;/p&gt;
&lt;p&gt;Test aktywacji jest taki sam, jak &lt;a href=&quot;https://maguyva.ai/pl/docs&quot;&gt;dokumentacja&lt;/a&gt; zaleca przy każdym pierwszym uruchomieniu: zindeksuj repozytorium, które już znasz, zadaj jedno pytanie, które możesz sprawdzić. Duże repozytorium nie zmienia testu; sprawia tylko, że błędny pierwszy plik jest droższy.&lt;/p&gt;
&lt;h2 id=&quot;na-co-zwracać-uwagę-po-podłączeniu&quot;&gt;Na co zwracać uwagę po podłączeniu&lt;/h2&gt;
&lt;p&gt;Miej oko na trzy rzeczy. Aktualność: plany płatne przebudowują się co godzinę, darmowe codziennie, a niewypchnięta praca lokalna nie znajdzie się w mapie — to kompromis, na który się godzisz. Zakres: indeksuj reprezentatywny zbiór repozytoriów, nie każdy zarchiwizowany fork; darmowy poziom jest celowo tak dobrany, by dowiedzieć się, czy odpowiedzi warte są zachowania. I weryfikacja: mapa dużego repozytorium, która nie potrafi zacytować ścieżek i numerów linii, jest po prostu wolniejszym silnikiem zgadywania, więc niech twój agent pokaże lokalizację, zanim dostarczy łatkę.&lt;/p&gt;
&lt;p&gt;Potem uruchom ten sam test, który uruchomiłbyś na małym repozytorium. Zindeksuj repozytorium, które już znasz. Zadaj jedno pytanie, które możesz sprawdzić. Jeśli mapa jest prawdziwa, twój agent przestanie zaczynać od zimnego drzewa.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// no laptop got hot building this map.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>MCP</category><category>Indexing</category><category>Monorepos</category></item><item><title>Dlaczego twój agent AI do kodowania halucynuje ścieżki plików</title><link>https://maguyva.ai/pl/blog/why-ai-coding-agents-hallucinate-file-paths</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/why-ai-coding-agents-hallucinate-file-paths</guid><description>Agenci AI do kodowania wymyślają ścieżki plików, gdy nie mają prawdziwej mapy repozytorium. Oto dlaczego tak się dzieje i jak ugruntowanie prowadzi do mniejszej liczby zhalucynowanych edycji.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sygnałem nie jest błędne ciało funkcji. To pewna siebie edycja pliku, który nie istnieje, albo pliku, który istnieje, ale nie jest tym, który implementuje dane zachowanie.&lt;/p&gt;
&lt;p&gt;Poprosiłeś o naprawę wygasania sesji. Agent otworzył &lt;code&gt;src/auth/session.ts&lt;/code&gt;. Ta ścieżka jest wiarygodna. Jest też błędna. Prawdziwy handler żyje w &lt;code&gt;apps/api/src/middleware/expiry.ts&lt;/code&gt;, przemianowanym dwa refaktoringi temu. Agent cię nie okłamał. Uzupełnił łańcuch w kształcie ścieżki na podstawie wiedzy wyniesionej z treningu plus tego, co już było w oknie kontekstu.&lt;/p&gt;
&lt;p&gt;To powszechny wzorzec porażki na prawdziwym repozytorium. Model potrafi pisać kod. Błędem jest wybór złego miejsca, żeby go napisać.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-agenci-wymyślają-ścieżki&quot;&gt;Dlaczego agenci wymyślają ścieżki&lt;/h2&gt;
&lt;p&gt;Agent kodujący to model przewidywania następnego tokena wyposażony w narzędzia. Gdy mówisz „napraw wygasanie sesji”, musi wskazać plik, zanim będzie mógł cokolwiek przeczytać lub załatać. Jeśli nie ma jeszcze ugruntowanej mapy, konstruuje ścieżkę z:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Konwencji nazewnictwa, które widział w innych repozytoriach. &lt;code&gt;src/auth/session.ts&lt;/code&gt; to częsty kształt.&lt;/li&gt;
&lt;li&gt;Plików już obecnych w rozmowie, które mogą być tymi, które wkleiłeś w zeszłym tygodniu, a nie tymi, które liczą się teraz.&lt;/li&gt;
&lt;li&gt;Listingów katalogów, które przypadkiem uruchomił, niekompletnych na dużym drzewie.&lt;/li&gt;
&lt;li&gt;Plików instrukcji. &lt;code&gt;CLAUDE.md&lt;/code&gt; i &lt;code&gt;AGENTS.md&lt;/code&gt; mówią agentowi, jak się zachowywać. Nie są żywym indeksem symboli, wywołujących ani aktualnych ścieżek.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Żadne z tych źródeł nie jest mapą tego repozytorium, dzisiaj. Model wypełnia lukę tak samo, jak wypełnia każdą lukę: kontynuacją o wysokim prawdopodobieństwie. Ta kontynuacja często wygląda jak prawdziwa ścieżka. Czasem plik istnieje i leży obok właściwego. Czasem istniał na branchu scalonym w zeszłym miesiącu. Czasem nigdy nie istniał.&lt;/p&gt;
&lt;p&gt;Grep cię tu nie uratuje, jeśli agent w ogóle nie szuka właściwego ciągu znaków. Agent zgadł ścieżkę, potem przeczytał, co ta ścieżka zwróciła, potem ją edytował. Pierwszym błędnym krokiem była ścieżka, nie łatka.&lt;/p&gt;
&lt;p&gt;Czytanie plików to też nie to samo, co znajdowanie właściwych. Claude Code, Cursor, Codex i podobne narzędzia mogą otworzyć wszystko, na co je skierujesz. Pytanie brzmi, czy niezawodnie znajdują właściwe pliki, ważne symbole, zależności, testy i zasięg wpływu, zanim zaczną edytować. Dostęp do plików bez mapy nadal zaczyna się od zgadywania.&lt;/p&gt;
&lt;h2 id=&quot;edycja-złego-pliku-to-problem-wyszukiwania&quot;&gt;Edycja złego pliku to problem wyszukiwania&lt;/h2&gt;
&lt;p&gt;Traktuj wymyśloną ścieżkę jako chybienie wyszukiwania, nie jako wadę charakteru.&lt;/p&gt;
&lt;p&gt;Gdyby agent musiał zwrócić &lt;code&gt;path/file.ext:line&lt;/code&gt;, zanim pozwolono by mu edytować, wydarzyłyby się dwie rzeczy. Po pierwsze, mógłbyś otworzyć cytat i odrzucić pracę w dziesięć sekund. Po drugie, agent musiałby odpytać coś, co rzeczywiście zna to drzewo.&lt;/p&gt;
&lt;p&gt;To jest praca warstwy kontekstu bazy kodu. Samo wyszukiwanie semantyczne to za mało. Fragment, który „brzmi jak wygasanie sesji”, i tak może wylądować w wycofanym pakiecie. Potrzebujesz też dokładnego tekstu, gdy znasz ciąg znaków, wyszukiwania symboli, gdy znasz nazwę, wyszukiwania strukturalnego, gdy znasz kształt, oraz grafu zależności, gdy potrzebujesz wywołujących i zasięgu wpływu.&lt;/p&gt;
&lt;p&gt;Maguyva jest tą warstwą dla agentów kodujących zgodnych z MCP. To nie jest edytor. Claude Code, Cursor, Codex CLI, VS Code, Windsurf i inni klienci MCP zostają tam, gdzie są. Agent odpytuje uszeregowaną mapę, zanim dotknie linijki.&lt;/p&gt;
&lt;p&gt;Twierdzenie jest celowo skromne: mniej zhalucynowanych edycji. Maguyva nie odbiera modelowi zdolności do zgadywania. Zmienia domyślny pierwszy krok z „wymyśl wiarygodną ścieżkę” na „poproś o uszeregowane, zacytowane lokalizacje”.&lt;/p&gt;
&lt;h2 id=&quot;jak-wygląda-ugruntowana-odpowiedź&quot;&gt;Jak wygląda ugruntowana odpowiedź&lt;/h2&gt;
&lt;p&gt;Użyteczna odpowiedź na pytanie „gdzie obsługiwane jest wygasanie sesji” to nie akapit. To krótka lista lokalizacji:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apps/api/src/middleware/expiry.ts:48&lt;/code&gt; - handler&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/web/src/lib/auth-client.ts:112&lt;/code&gt; - wywołujący&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/api/tests/expiry.test.ts:20&lt;/code&gt; - test, który zawiedzie, jeśli zmiana jest błędna&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Możesz otworzyć te linie. Jeśli są błędne, zatrzymujesz się. Jeśli są poprawne, agent może edytować. Chodzi o weryfikację, nie o hasło.&lt;/p&gt;
&lt;p&gt;Maguyva udostępnia 11 skierowanych do klienta narzędzi MCP w zakresie wyszukiwania, symboli, analizy zależności, pobierania plików, kontekstu repozytorium i deterministycznych przepływów narzędziowych. Cztery tryby wyszukiwania (semantyczny, strukturalny, grafowy/zależnościowy i tekstowy) łączą się w uszeregowane wyniki; wyszukiwanie symboli to osobne narzędzie MCP (&lt;code&gt;find_symbol&lt;/code&gt;). Ugruntowane odpowiedzi wracają ze ścieżkami plików i numerami linii, więc możesz je oceniać na tle drzewa przed tobą.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maguyva.ai/pl/docs&quot;&gt;Dokumentacja&lt;/a&gt; opisuje najkrótszą ścieżkę: zacznij za darmo, zindeksuj repozytorium, które już znasz, połącz klienta, potem zadaj jedno pytanie, które możesz sprawdzić.&lt;/p&gt;
&lt;h2 id=&quot;pętla-która-zmienia-pierwszą-edycję&quot;&gt;Pętla, która zmienia pierwszą edycję&lt;/h2&gt;
&lt;p&gt;Nie potrzebujesz nowej religii przepływu pracy. Potrzebujesz jednego dodatkowego kroku przed pierwszym zapisem.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Zadaj pytanie, które już możesz ocenić. „Jaki kod obsługuje logowanie i wygasanie sesji?” jest lepsze niż „napraw uwierzytelnianie”.&lt;/li&gt;
&lt;li&gt;Wymagaj cytatów. Ścieżki pliku i numeru linii, nie streszczenia „modułu uwierzytelniania”.&lt;/li&gt;
&lt;li&gt;Otwórz zacytowane pliki. Podążaj za symbolem. Potwierdź zależność, której zamierzasz dotknąć.&lt;/li&gt;
&lt;li&gt;Dopiero wtedy pozwól agentowi załatać.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jeśli krok 2 nie zwraca niczego użytecznego, agent nie ma prawa improwizować ścieżki. Szuka ponownie albo ty mu wskazujesz. Właśnie ta jedna bramka wytwarza mniej zhalucynowanych edycji. Model jest tym samym modelem. To, co się zmieniło, to mapa.&lt;/p&gt;
&lt;p&gt;Pliki instrukcji nadal mają znaczenie. Zachowaj je. Używaj ich do konwencji, reguł przeglądu i tego, czego nie dotykać. Nie proś ich, żeby były indeksem. &lt;code&gt;CLAUDE.md&lt;/code&gt; wymieniający trzy ważne katalogi zdezaktualizuje się tydzień po podziale pakietu. Przeszukiwalna mapa aktualizuje się, gdy aktualizuje się repozytorium.&lt;/p&gt;
&lt;p&gt;Pokrewną porażką jest plik prawie trafiony: agent otwiera &lt;code&gt;auth.ts&lt;/code&gt;, gdy zachowanie żyje w &lt;code&gt;auth-client.ts&lt;/code&gt;, albo łata wygenerowany plik zamiast źródła, albo edytuje kopię w &lt;code&gt;packages/legacy&lt;/code&gt;, bo nazwa pasowała. Cytaty nie sprawiają, że te pomyłki stają się niemożliwe. Sprawiają, że stają się widoczne, zanim diff wyląduje.&lt;/p&gt;
&lt;h2 id=&quot;czego-mapa-za-ciebie-nie-naprawi&quot;&gt;Czego mapa za ciebie nie naprawi&lt;/h2&gt;
&lt;p&gt;Bądź trzeźwy co do tego, co dostajesz. Ugruntowana mapa nie sprawi, że każda edycja będzie poprawna — twój agent nadal może napisać złą łatkę dokładnie we właściwym pliku. Jeśli twoja baza kodu opiera się na dynamicznym dispatchu, refleksji albo monkey-patchingu, niektóre wyszukiwania symboli będą wracać skromniejsze, niż byś chciał, bo to właśnie robi z każdym statycznym indeksem pośredniość w czasie działania. A jeśli liczysz na procent — „ścieżki halucynowane zredukowane o X%” — nie znajdziesz go tutaj, bo nikt poza tobą nie może uczciwie zmierzyć tej liczby dla twojego repozytorium.&lt;/p&gt;
&lt;p&gt;To, czego możesz oczekiwać, jest węższe i bardziej użyteczne: agent przestaje zaczynać edycje od zgadniętej ścieżki. Ten pierwszy krok staje się ugruntowany w prawdziwej mapie, i stąd bierze się mniej zhalucynowanych edycji. Wszystko po cytacie — czytanie diffa, ocena łatki — nadal jest twoją pracą, tak jak zawsze było.&lt;/p&gt;
&lt;p&gt;Ten test kosztuje cię niemal nic: zindeksuj repozytorium, które już znasz, i zadaj jedno pytanie, które możesz sprawdzić. Zacznij od ścieżki, na której już się kiedyś sparzyłeś. Jeśli cytaty są błędne, zobaczysz to od razu. Jeśli są poprawne, kolejna edycja twojego agenta będzie miała lepsze miejsce, żeby wylądować.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// it doesn&apos;t know the file. it knows how to find it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>Hallucination</category><category>Retrieval</category><category>MCP</category></item><item><title>Dlaczego zaktualizowaliśmy wyszukiwanie kodu do voyage-4-large</title><link>https://maguyva.ai/pl/blog/upgrading-code-search-to-voyage-4-large</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/upgrading-code-search-to-voyage-4-large</guid><description>Przenieśliśmy nasze embeddingi kodu na voyage-4-large — obecnie na szczycie publicznego rankingu RTEB dla wyszukiwania kodu. Wersja uczciwa: kompromis, na jaki idziemy, co faktycznie indeksujemy i dlaczego płacimy za embeddingi premium.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby benchmarków w tym wpisie odzwierciedlają rankingi RTEB w momencie publikacji (czerwiec 2026). Rankingi się zmieniają; traktuj je jako zrzut z danego momentu, nie trwały fakt.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wyszukiwanie semantyczne jest tak dobre, jak leżące u jego podstaw embeddingi.&lt;/p&gt;
&lt;p&gt;Gdy agent pyta Maguyva „gdzie obsługujemy ponowienia”, nie grepuje słowa „retry”. Pyta o &lt;em&gt;znaczenie&lt;/em&gt; — pętlę backoff, mechanizm circuit breaker, coś, co opakowuje niestabilne wywołanie. Na to pytanie odpowiada model wektorowy, który zamienia kod w punkt w przestrzeni i znajduje sąsiadów. Wybierz lepszy model, a wyniki każdego zapytania semantycznego w produkcie po cichu stają się trafniejsze.&lt;/p&gt;
&lt;p&gt;Więc zmieniliśmy nasz. Od czerwca 2026 embeddingi kodu Maguyva działają na &lt;strong&gt;&lt;code&gt;voyage-4-large&lt;/code&gt;&lt;/strong&gt;, zastępując &lt;code&gt;voyage-code-3&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;benchmark&quot;&gt;Benchmark&lt;/h2&gt;
&lt;p&gt;Nie podjęliśmy tej decyzji na wyczucie. Publiczny &lt;a href=&quot;https://embedding-benchmark-rteb.hf.space/code&quot;&gt;Retrieval Embedding Benchmark (RTEB)&lt;/a&gt; rankinguje modele embeddingów na prawdziwych zadaniach wyszukiwania, a na jego rankingu &lt;strong&gt;Code&lt;/strong&gt; &lt;code&gt;voyage-4-large&lt;/code&gt; zajmuje &lt;strong&gt;#1 ogółem (90,86)&lt;/strong&gt; — przed &lt;code&gt;gemini-embedding-2-preview&lt;/code&gt; (90,26) i, co istotne, przed modelem, którego już używaliśmy, &lt;code&gt;voyage-code-3&lt;/code&gt; (89,73, #3).&lt;/p&gt;
&lt;p&gt;To niewielka różnica bezwzględna. Ale to różnica we właściwym kierunku, na publicznym benchmarku, w dokładnie tym zadaniu, na którym nam zależy: wydobywaniu kodu według znaczenia.&lt;/p&gt;
&lt;h2 id=&quot;kompromis-który-akceptujemy-kwantyzacja-binarna&quot;&gt;Kompromis, który akceptujemy: kwantyzacja binarna&lt;/h2&gt;
&lt;p&gt;Oto część, którą pomija większość wpisów typu „zaktualizowaliśmy nasz model”.&lt;/p&gt;
&lt;p&gt;Maguyva nie przechowuje wektorów pełnej precyzji. Przechowujemy embeddingi &lt;strong&gt;skwantyzowane binarnie&lt;/strong&gt;: każdy 2048-wymiarowy wektor zwija się do 2048-bitowej sygnatury — &lt;strong&gt;256 bajtów na wektor&lt;/strong&gt;. Te sygnatury są przeszukiwane przy użyciu odległości Hamminga, zaindeksowane i podzielone na partycje per tenant.&lt;/p&gt;
&lt;p&gt;To celowy kompromis. Kwantyzacja binarna rezygnuje z części precyzji wyszukiwania w zamian za znacznie mniejsze zużycie miejsca oraz szybkie, tanie obliczanie odległości bez osobnej bazy wektorowej do utrzymywania. Dla produktu, który indeksuje całe repozytoria per workspace, ta ekonomia ma większe znaczenie niż wyciśnięcie ostatniego ułamka punktu benchmarku.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;voyage-4-large&lt;/code&gt; pasuje do tego projektu bez wymuszania migracji warstwy przechowywania: produkuje wyjście 2048-wymiarowe, tak jak &lt;code&gt;voyage-code-3&lt;/code&gt;, więc nasze kolumny &lt;code&gt;bit(2048)&lt;/code&gt; i ścieżka wyszukiwania Hamminga się nie zmieniły. Model się poprawił; schemat pozostał na miejscu.&lt;/p&gt;
&lt;h2 id=&quot;kod-to-był-dopiero-początek&quot;&gt;Kod to był dopiero początek&lt;/h2&gt;
&lt;p&gt;Maguyva to narzędzie inteligencji kodu. Ale jesteśmy też klientem zero i kierujemy je na coś jeszcze: markdown, który żyje w naszych repozytoriach obok kodu. Rekordy decyzji architektonicznych, runbooki, kontrakty, dokumenty finansowe i wewnętrzne regulaminy — wszystko to wersjonowane w Git, wszystko za tym samym serwerem MCP, semantyczny indeks nad &lt;em&gt;dokumentami&lt;/em&gt;, nie tylko nad źródłem.&lt;/p&gt;
&lt;p&gt;Właśnie dlatego szerokość voyage-4-large ma znaczenie. Na tej samej rodzinie rankingów RTEB jest &lt;strong&gt;#1 w finansach, #1 w ochronie zdrowia i #1 w ogólnym wyszukiwaniu tekstowym&lt;/strong&gt; — przed Gemini Embedding od Google, Embed v4 od Cohere i text-embedding-3-large od OpenAI. (Voyage jest współtwórcą RTEB, więc czytamy to jako silny sygnał publiczny, a nie idealnie neutralnego sędziego — ale jest benchmarkowany bezpośrednio z każdym większym modelem komercyjnym, na prywatnych zbiorach hold-out). Ten sam indeks, który znajduje właściwą funkcję dla agenta, znajduje właściwą klauzulę w kontrakcie lub właściwy zapis w wewnętrznym regulaminie — a w tych domenach voyage-4-large to nie kompromis, to lider.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-płacimy-za-embeddingi-premium&quot;&gt;Dlaczego płacimy za embeddingi premium&lt;/h2&gt;
&lt;p&gt;Istnieje tańszy sposób na wyszukiwanie, a znaczna jego część jest darmowa. Wyszukiwanie leksykalne — BM25 i jego krewni — dopasowuje słowa kluczowe, działa lokalnie i nic nie kosztuje. Modele embeddingów open source, takie jak BGE, Nomic i embeddinggemma, dają naprawdę &lt;em&gt;przyzwoite&lt;/em&gt; wyszukiwanie semantyczne, i możesz je hostować samodzielnie za cenę GPU. Maguyva korzysta też ze strony darmowej: każde zapytanie łączy wyszukiwanie tekstowe, AST, grafowe i semantyczne. Nie oszczędzamy na warstwie semantycznej.&lt;/p&gt;
&lt;p&gt;Płacimy za token za embeddingi premium — &lt;code&gt;voyage-4-large&lt;/code&gt; — zamiast hostować darmowy model samodzielnie, z dwóch powodów. Po pierwsze, samo wyszukiwanie słów kluczowych nie potrafi odpowiedzieć na „gdzie obsługujemy ponowienia”, gdy kod mówi &lt;code&gt;backoff&lt;/code&gt; i &lt;code&gt;circuit breaker&lt;/code&gt;, a nigdy nie mówi słowa „retry” — znaczenie to cały sens embeddingu, a w domenach, które obsługujemy, modele open source zostają w tyle za modelami premium: kilka punktów w tekście ogólnym, i jeszcze bardziej w niszach takich jak kod, kontrakty i finanse. Po drugie, z naszego doświadczenia jakość wyszukiwania kształtuje ostateczną odpowiedź bardziej niż model po drugiej stronie — silny agent otrzymujący niewłaściwy kontekst i tak odpowie źle, i nigdy nie zobaczy dokumentu, którego mu nigdy nie dano.&lt;/p&gt;
&lt;p&gt;Więc embeddingi premium to rachunek za token, który skaluje się z każdym repozytorium i dokumentem, który indeksujemy — i płacimy go celowo. Dla wyniku, jaki dostają nasi użytkownicy, właściwej funkcji lub właściwej klauzuli, uważamy, że ten kompromis jest wart tego.&lt;/p&gt;
&lt;h2 id=&quot;uczciwa-część&quot;&gt;Uczciwa część&lt;/h2&gt;
&lt;p&gt;Własna dokumentacja Voyage wciąż oznacza &lt;code&gt;voyage-code-3&lt;/code&gt; jako model zoptymalizowany pod kod. Więc dlaczego zmiana?&lt;/p&gt;
&lt;p&gt;Ponieważ czytamy publiczny benchmark, nie tylko tabelę modeli dostawcy, a benchmark postawił &lt;code&gt;voyage-4-large&lt;/code&gt; na szczycie dla wyszukiwania kodu. To była decyzja patrząca w przyszłość: wziąć nowszy, ogólnie silniejszy model i zwalidować go względem publicznego rankingu na zadaniach, które mają znaczenie. Czujemy się komfortowo, podejmując ten zakład, ponieważ dowody są szerokie — voyage-4-large nie wygrywa tylko na kodzie, przoduje też w finansach, ochronie zdrowia i ogólnym wyszukiwaniu.&lt;/p&gt;
&lt;h2 id=&quot;niepozorny-fundament&quot;&gt;Niepozorny fundament&lt;/h2&gt;
&lt;p&gt;Każde narzędzie, które udostępniamy — wyszukiwanie semantyczne, gromadzenie kontekstu zadania, ugruntowane pytania i odpowiedzi — ostatecznie opiera się na wyszukiwaniu. Gdy retriever się poprawia, agent po drugiej stronie dostaje lepsze dowody, rzadziej podejmuje błędne decyzje i zakotwicza swoje odpowiedzi we właściwym kodzie — albo we właściwej klauzuli, albo we właściwym wewnętrznym regulaminie. Trafniejszy model embeddingów to nie efektowna funkcja. To fundament wszystkich pozostałych funkcji, który właśnie wzmocniliśmy. Nie zauważysz tego. O to właśnie chodzi.&lt;/p&gt;
</content:encoded><category>Embeddings</category><category>Search</category><category>Architecture</category></item><item><title>Rekurencyjne samodoskonalenie językowe: szlifowanie inteligencji kodu w ~280 językach</title><link>https://maguyva.ai/pl/blog/autonomous-quality-loops-language-grind</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/autonomous-quality-loops-language-grind</guid><description>Obsługujemy inteligencję kodu dla ~280 języków. Żaden człowiek nie jest w stanie tego ręcznie zweryfikować. Zbudowaliśmy więc pętlę rekurencyjnego samodoskonalenia językowego — wyrywkowa kontrola, LLM jako sędzia, naprawa jednej rzeczy, ponowna walidacja — i uruchamiamy ją z flotą izolowanych agentów, dopóki ekstrakcja nie będzie naprawdę poprawna, a nie tylko zielona.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (maj 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maguyva ekstrahuje symbole, referencje i graf zależności z kodu źródłowego w około 280 językach. Każdy język to niestandardowy handler tree-sitter — zapytania, heurystyki, przypadki brzegowe — i każdy handler może być subtelnie błędny na swój własny sposób. Wywołanie metody wyemitowane jako odczyt. Funkcja przypisana do niewłaściwego zakresu otaczającego. Relacja, której po prostu nie ma.&lt;/p&gt;
&lt;p&gt;Tego nie da się ręcznie zweryfikować. Żaden zespół nie przeczyta wyników ekstrakcji w 280 gramatykach i nie wyłapie złych krawędzi. Więc ciekawym pytaniem nie jest „czy nasza ekstrakcja jest poprawna” — tylko „jak &lt;em&gt;odkryć&lt;/em&gt;, że jest błędna, przy tej skali, bez człowieka w każdej pętli”. Naszą odpowiedzią jest rekurencyjne samodoskonalenie językowe: pętla jakości napędzana przez agentów językowych, LLM działający jako sędzia i jedna zasada, której wciąż się na nowo uczymy: zielone nie znaczy poprawne.&lt;/p&gt;
&lt;h2 id=&quot;zielone-nie-znaczy-poprawne&quot;&gt;Zielone nie znaczy poprawne&lt;/h2&gt;
&lt;p&gt;Każdy język ma zestaw fixture’ów, a kontrola przed wydaniem ocenia go w pięciu wymiarach — dokładność, integralność strukturalna, kompletność, jakość i wydajność. Język staje się &lt;strong&gt;ZIELONY&lt;/strong&gt; tylko wtedy, gdy na swoich fixture’ach precyzja ≥ 0,95, recall ≥ 0,99, a F1 ≥ 0,97, przy co najmniej 20 oczekiwanych krawędziach dla wiarygodności statystycznej. Poniżej tego jest ŻÓŁTY lub CZERWONY i nie trafia do wydania.&lt;/p&gt;
&lt;p&gt;Ta kontrola jest konieczna, ale niewystarczająca. Walidacja opiera się na fixture’ach, &lt;em&gt;które sami napisaliśmy&lt;/em&gt;. Kodują przypadki, o których już pomyśleliśmy. Handler może być bezbłędny na swoich fixture’ach i wciąż zniekształcać wzorzec, który pojawia się tylko w prawdziwym kodzie — idiom makra, metodę z ograniczeniami parametrów typu generycznego, cechę języka, dla której nikt nie napisał fixture’a. ZIELONY oznacza, że fixture’y przechodzą. Nie oznacza, że prawdziwe repozytorium ekstrahuje się czysto. Więc pętla musi zostawić fixture’y za sobą i sprawdzić kod z rzeczywistych projektów.&lt;/p&gt;
&lt;h2 id=&quot;pętla-wewnętrzna-wyrywkowa-kontrola-sędzia-naprawa-dowód&quot;&gt;Pętla wewnętrzna: wyrywkowa kontrola, sędzia, naprawa, dowód&lt;/h2&gt;
&lt;p&gt;Główna pętla działa po jednym języku naraz:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ┌──────────────────────────────────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  1. corpus run ── clone real-world repos, extract relationships   │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  2. spot-check 100 edges (seed 42, then seed 123 to cross-check)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  3. LLM judge classifies every sampled edge:                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        CORRECT · FALSE_POSITIVE · TYPE_ERROR ·                    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        SCOPE_ERROR · METADATA_ERROR                               │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  4. fix ONE thing — handler .py, .scm query, or config           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  5. re-validate — F1 + re-classify + manifest diff (no regressions)│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   better? ──no──► revert, try a different fix ────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │ yes                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  6. promote the fix into fixtures (a permanent regression guard) ──┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kilka rzeczy sprawia, że to działa, a nie tylko się miota.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sędzią jest agent, nie wywołanie API.&lt;/strong&gt; Gdy mówimy „LLM jako sędzia”, mamy na myśli to, że sam agent językowy czyta każdą próbkowaną krawędź na tle prawdziwego źródła i klasyfikuje ją według stałego schematu pięciu kategorii: czy ta krawędź jest poprawna, jest fałszywie pozytywna, ma właściwą relację, ale zły typ, jest przypisana do niewłaściwego zakresu, czy niesie błędne metadane? Ten schemat ma kluczowe znaczenie — „23% wskaźnik błędów” nic nie znaczy, dopóki nie wiesz, czy to prawdziwe defekty, czy sędzia się myli w liczeniu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Napraw jedną rzecz, a potem to udowodnij.&lt;/strong&gt; Każda iteracja zmienia dokładnie jeden edytowalny zasób, a następnie ponownie uruchamia się względem stałego harnessu i zachowuje zmianę tylko wtedy, gdy F1 się poprawia, a ponowna klasyfikacja wygląda lepiej. Jeśli nie — wraca do poprzedniego stanu. Żadnych partii spekulatywnych edycji, żadnego „powinno być lepiej”. Zmiana zarabia na swoje miejsce albo znika. A gdy naprawa się utrzyma, jest promowana do zestawu fixture’ów — więc błąd, który naprawiła, nigdy po cichu nie wróci. Ten krok promocji jest tym, co czyni pętlę &lt;em&gt;rekurencyjną&lt;/em&gt;, a nie tylko powtarzalną: każdy przebieg wzmacnia wzorzec odniesienia, względem którego walidowane są wyniki kolejnego przebiegu.&lt;/p&gt;
&lt;h2 id=&quot;lekcja-której-wciąż-się-na-nowo-uczymy-metryki-zawyżają&quot;&gt;Lekcja, której wciąż się na nowo uczymy: metryki zawyżają&lt;/h2&gt;
&lt;p&gt;Oto pułapka, w którą wpadliśmy wprost. Drugorzędne metryki korpusu — jak często wyekstrahowanego celu nie da się powiązać z symbolem, ile symboli wygląda na „osierocone” i tak dalej — masowo zawyżają problemy. To w większości &lt;em&gt;artefakty paradygmatu&lt;/em&gt;, nie błędy.&lt;/p&gt;
&lt;p&gt;Najczystszy przykład: &lt;code&gt;llvm&lt;/code&gt; pokazał kiedyś 73% wskaźnik „źródła bez symbolu” i został naznaczony jako katastrofalny. Wgłębiliśmy się. Prawdziwa dokładność wynosiła &lt;strong&gt;98,5%&lt;/strong&gt;. „Brakujące symbole” były niemal wszystkie poprawnymi referencjami zewnętrznymi — wywołaniami do biblioteki standardowej, do frameworków, do kodu żyjącego poza repozytorium. Metryka mierzyła właściwość języka, nie defekt handlera. Języki takie jak Zig, COBOL i Odin pokazują wskaźniki „osierocenia” na poziomie 65–70% i są całkowicie poprawne; COBOL nie miał ani jednego prawdziwego błędu.&lt;/p&gt;
&lt;p&gt;Gdybyśmy pozwolili tym liczbom kierować pracą, spędzilibyśmy tygodnie na „naprawianiu” handlerów, które już były poprawne, ignorując języki z cichymi, prawdziwymi błędami. Wniosek jest brutalny: zagregowane metryki są w najlepszym razie zgrubnym sygnałem triażu. &lt;strong&gt;Prawdziwym sygnałem jakości jest wyrywkowa kontrola z klasyfikacją krawędzi&lt;/strong&gt; — patrzenie na rzeczywiste krawędzie w rzeczywistych repozytoriach i osądzanie ich jedna po drugiej. Dane ponad intuicję, ale dopiero gdy wiesz, które dane mówią prawdę.&lt;/p&gt;
&lt;h2 id=&quot;pętla-zewnętrzna-flota-nie-maraton&quot;&gt;Pętla zewnętrzna: flota, nie maraton&lt;/h2&gt;
&lt;p&gt;Jeden język naraz zająłby wieczność przy 280 z nich, więc pętla wewnętrzna jest owinięta w zewnętrzną, która uruchamia wiele równolegle.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   pick a wave of near-GREEN / high-error languages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   fan out 10–15 agents, each ISOLATED in its own git worktree,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   each grinding ONE language, committing to its own branch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   orchestrator integrates serially: file-scoped apply, then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   `manifest diff` — any cross-language regression blocks the batch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   gated push (reviewed and confirmed) ──► rotate to the next wave&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Każdy agent pracuje w jednorazowym worktree, więc nie mogą sobie wchodzić w drogę. Orkiestrator integruje ich poprawki jedna po drugiej, każdą po pełnej kontroli regresji obejmującej cały manifest: zmiana, która pomaga własnemu językowi, ale po cichu psuje trzy inne, nie trafia do repozytorium. Integracja jest weryfikowana i zatwierdzana, zanim cokolwiek zostanie wypchnięte — kontrola regresji decyduje, co jest &lt;em&gt;bezpieczne&lt;/em&gt;, człowiek wciąż decyduje, co &lt;em&gt;trafia do wydania&lt;/em&gt;. Następnie pula rotuje do kolejnego zestawu języków i całość uruchamia się od nowa.&lt;/p&gt;
&lt;h2 id=&quot;co-wciąż-jest-niedoskonałe&quot;&gt;Co wciąż jest niedoskonałe&lt;/h2&gt;
&lt;p&gt;Sędzia może się mylić, a błąd ma kierunek: agent działający ze zbyt małym kontekstem &lt;em&gt;zawyża zgłoszenia&lt;/em&gt;. W jednej partii osiem języków zostało oznaczonych jako mające 5–20% błędów; po inspekcji tylko w jednym z nich potwierdzono rzeczywisty błąd — reszta to pomyłki sędziego wynikające z pominięcia własnej semantyki danego języka (jedna linia źródła poprawnie emitująca kilka krawędzi, wiązania parametrów modelowane jako przypisania, języki z jedną referencją na identyfikator). Dlatego próbkujemy z dwoma ziarnami i krzyżowo weryfikujemy, i dlatego niezgodność między sędzią a fixture’ami jest traktowana jako &lt;em&gt;najciekawszy&lt;/em&gt; sygnał, nie jako rozstrzygnięty werdykt — czasem to fixture jest tym, co jest błędne.&lt;/p&gt;
&lt;p&gt;Jesteśmy też uczciwi co do celu. Celem jest zero prawdziwych błędów, kropka — ale „zero” to cel, do którego dążymy, doskonaląc obsługę kolejnych języków, nie pole do odhaczenia. Zawsze jest kolejne repozytorium z kolejnym idiomem.&lt;/p&gt;
&lt;h2 id=&quot;wypracowane-nie-zadeklarowane&quot;&gt;Wypracowane, nie zadeklarowane&lt;/h2&gt;
&lt;p&gt;Wszystko, co Maguyva robi dla agenta — znalezienie symbolu, prześledzenie zależności, odpowiedź na pytanie z cytowanym kodem — opiera się na tym, że leżąca u podstaw ekstrakcja jest poprawna. W 280 językach „poprawność” nie może być jedynie deklarowana; trzeba na nią nieustannie &lt;em&gt;pracować&lt;/em&gt;, weryfikując rzeczywisty kod. Pętla jest sposobem, w jaki na nią pracujemy: autonomiczny cykl wyrywkowej kontroli i naprawy, który podchodzi z podejrzliwością do własnych metryk, dowodzi każdej zmiany i zamienia każdą naprawę w strażnika przed kolejną regresją. To nie jest efektowne. To praca, która pozwala nam powiedzieć „obsługujemy Twój język” i mieć to na myśli. Zielone jest łatwe. Poprawność trzeba wypracować.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Languages</category><category>Agents</category></item><item><title>Wielomodalne wyszukiwanie z fuzją: dobór właściwego retrievera do każdego zapytania</title><link>https://maguyva.ai/pl/blog/multi-modal-fusion-search</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/multi-modal-fusion-search</guid><description>Zapytanie w stylu „gdzie zdefiniowano parseConfig” potrzebuje innego wyszukiwania niż „jak działa uwierzytelnianie”. Maguyva klasyfikuje intencję, odpowiednio waży cztery tryby wyszukiwania i łączy wyniki za pomocą ważonej Reciprocal Rank Fusion.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Uwaga o historycznym projekcie: ten artykuł z kwietnia 2026 r. opisuje ówczesny projekt routingu, a nie obecne zachowanie domyślne. Poniższa korekta z września dotyczy wyłącznie twierdzenia pomiarowego. Aktualny routing, presety i jawne sterowanie modalnościami opisano na stronie &lt;a href=&quot;https://maguyva.ai/pl/docs/how-it-works&quot;&gt;Jak to działa&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Zapytanie wyszukiwania to nie jedna rzecz.&lt;/p&gt;
&lt;p&gt;„gdzie zdefiniowano &lt;code&gt;parseConfig&lt;/code&gt;” chce dokładnego symbolu — jednej precyzyjnej lokalizacji, szybko. „jak działa uwierzytelnianie” chce znaczenia — rozproszenia powiązanego kodu, które wyjaśnia koncept. „co się zepsuje, jeśli zmienię tę funkcję” chce grafu zależności. „znajdź ciąg &lt;code&gt;ECONNREFUSED&lt;/code&gt;” chce dosłownego dopasowania, niczego sprytnego.&lt;/p&gt;
&lt;p&gt;Grep jest świetny do dosłownych dopasowań i przydatny do części poszukiwań referencji, ale to nie graf zależności i nie rozumie znaczenia. Embeddingi pokrywają stronę semantyczną, ale są niewłaściwym narzędziem do dokładnych ciągów i analizy wpływu. Większość narzędzi do wyszukiwania kodu wybiera jeden silnik i zmusza każde zapytanie, by żyło z tym wyborem. Maguyva nie wybiera. Ustala, jakiego rodzaju pytanie zadałeś, a następnie miesza cztery retrievery w proporcji, na jaką to pytanie zasługuje.&lt;/p&gt;
&lt;h2 id=&quot;cztery-tryby&quot;&gt;Cztery tryby&lt;/h2&gt;
&lt;p&gt;Pod maską istnieją cztery niezależne sposoby na znalezienie kodu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;semantyczny&lt;/strong&gt; — wyszukiwanie wektorowe na binarnych embeddingach Voyage; znajduje kod według znaczenia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tekstowy&lt;/strong&gt; — dopasowywanie trigramowe; znajduje literały, ciągi błędów, dokładne identyfikatory.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;strukturalny&lt;/strong&gt; — zapytania AST; znajduje definicje, sygnatury i konstrukty językowe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;grafowy&lt;/strong&gt; — graf zależności; znajduje wywołujących, wywoływanych i zasięg wpływu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Każdy jest silny w innej klasie pytań. Sztuka polega na tym, by zdecydować, jak bardzo ufać każdemu z nich dla zapytania, które masz przed sobą.&lt;/p&gt;
&lt;h2 id=&quot;klasyfikacja-intencji&quot;&gt;Klasyfikacja intencji&lt;/h2&gt;
&lt;p&gt;Zanim uruchomi się jakiekolwiek wyszukiwanie, lekki klasyfikator sortuje zapytanie do jednej z sześciu intencji, z wynikiem pewności. Jest celowo tani — uporządkowane heurystyki, pierwsze dopasowanie wygrywa — ponieważ działa na ścieżce krytycznej i dodaje tylko milisekundę lub dwie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zaczyna się od &lt;code&gt;def &lt;/code&gt;, &lt;code&gt;class &lt;/code&gt;, &lt;code&gt;func &lt;/code&gt;, &lt;code&gt;import &lt;/code&gt;… → &lt;strong&gt;find_definition&lt;/strong&gt; (pewność 0,95)&lt;/li&gt;
&lt;li&gt;„who calls”, „usages of”, „references to” (pytania o wywołania, użycia i referencje) → &lt;strong&gt;find_references&lt;/strong&gt; (0,90)&lt;/li&gt;
&lt;li&gt;„impact”, „blast radius”, „what depends on” (wpływ, zasięg wpływu, co od tego zależy) → &lt;strong&gt;impact_analysis&lt;/strong&gt; (0,90)&lt;/li&gt;
&lt;li&gt;cytowany &lt;code&gt;&quot;string&quot;&lt;/code&gt; lub token błędu jak &lt;code&gt;traceback&lt;/code&gt; → &lt;strong&gt;exact_match&lt;/strong&gt; (0,85–0,90)&lt;/li&gt;
&lt;li&gt;identyfikator &lt;code&gt;CamelCase&lt;/code&gt; lub &lt;code&gt;snake_case&lt;/code&gt; → &lt;strong&gt;find_definition&lt;/strong&gt; (0,60–0,80)&lt;/li&gt;
&lt;li&gt;„how”, „why”, „explain”, „architecture” (pytania o sposób działania, przyczyny i architekturę) → &lt;strong&gt;understand_code&lt;/strong&gt; (0,75)&lt;/li&gt;
&lt;li&gt;nic nie pasuje → &lt;strong&gt;understand_code&lt;/strong&gt;, niska pewność (0,40)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Każda intencja niesie profil wag rozłożony na cztery tryby. Oto prawdziwe liczby:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Intencja&lt;/th&gt;
&lt;th&gt;semantyczny&lt;/th&gt;
&lt;th&gt;tekstowy&lt;/th&gt;
&lt;th&gt;strukturalny (AST)&lt;/th&gt;
&lt;th&gt;grafowy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;find_definition&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_references&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;understand_code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_similar&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0,3&lt;/td&gt;
&lt;td&gt;0,2&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impact_analysis&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exact_match&lt;/td&gt;
&lt;td&gt;0,0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0,9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0,1&lt;/td&gt;
&lt;td&gt;0,0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Więc „gdzie zdefiniowano &lt;code&gt;parseConfig&lt;/code&gt;” mocno opiera się na AST (0,6). „jak działa uwierzytelnianie” opiera się na wektorach semantycznych (0,5). „co od tego zależy” to niemal wyłącznie graf (0,7). „znajdź &lt;code&gt;ECONNREFUSED&lt;/code&gt;” to niemal wyłącznie trigram (0,9), z modelem embeddingów całkowicie wyłączonym — ponieważ podobieństwo semantyczne jest dokładnie niewłaściwym narzędziem dla dokładnego ciągu.&lt;/p&gt;
&lt;h2 id=&quot;szybka-ścieżka-i-ścieżka-fuzji&quot;&gt;Szybka ścieżka i ścieżka fuzji&lt;/h2&gt;
&lt;p&gt;Gdy klasyfikator jest pewny — wynik ≥ 0,85 — a zapytanie jest zwyczajne, Maguyva całkowicie pomija fuzję i kieruje bezpośrednio do jednego dominującego trybu. „gdzie zdefiniowano X” nie potrzebuje czterech retrieverów; potrzebuje indeksu AST, natychmiast. Ta bezpośrednia ścieżka jest raportowana z powrotem jako &lt;code&gt;fusion_strategy: &quot;direct&quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Wszystko niejednoznaczne przechodzi przez fuzję. Cztery (lub trzy, w domyślnym presecie) tryby uruchamiają się równolegle, każdy zwracając własną uszeregowaną listę, a my je łączymy.&lt;/p&gt;
&lt;h2 id=&quot;ważona-reciprocal-rank-fusion&quot;&gt;Ważona Reciprocal Rank Fusion&lt;/h2&gt;
&lt;p&gt;Fuzja niejednorodnych retrieverów jest trudniejsza, niż się wydaje: podobieństwo kosinusowe 0,82, wynik trigramowy 137 i centralność grafu 0,004 nie są na tej samej skali, więc nie można ich po prostu dodać. Reciprocal Rank Fusion omija ten problem, odrzucając surowe wyniki i zachowując tylko &lt;strong&gt;rangę&lt;/strong&gt;, jaką przypisał każdy silnik. Wkład wyniku z jednego trybu to:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;contribution = weight × 1 / (k + rank + 1)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;gdzie &lt;code&gt;rank&lt;/code&gt; to jego pozycja na liście danego trybu, a &lt;code&gt;k&lt;/code&gt; to stała wygładzająca. Wkłady są sumowane po trybach dla każdego wyniku, który znalazł więcej niż jeden silnik — zgodność między retrieverami naturalnie unosi się na szczyt. Używamy &lt;strong&gt;k = 40&lt;/strong&gt; w domyślnym presecie i 60 w &lt;code&gt;thorough&lt;/code&gt; (&lt;code&gt;quick&lt;/code&gt; działa wyłącznie semantycznie, więc fuzja nigdy się tam nie włącza). Oryginalna praca o RRF wylądowała na k = 60 dla wyszukiwania ogólnego przeznaczenia; nasze ustawienie domyślne nadaje nieco większą wagę wynikom zajmującym wysokie pozycje w kilku trybach — i nie polecamy ręcznego dostrajania tego.&lt;/p&gt;
&lt;p&gt;Ponadto wyniki niosą &lt;strong&gt;boost związany z ważnością w grafie&lt;/strong&gt;. Hub — funkcja, na której opiera się cała baza kodu — powinien wyprzedzać mało znany węzeł liściowy nawet przy tej samej trafności tekstowej, więc mnożymy każdy wkład przez:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;boost = min(1 + 0.3 × ln(1 + centrality), 1.5)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Centralność pochodzi z wstępnie obliczonych metryk PageRank/stopnia w pipeline, a boost jest ograniczony do 1,5×, żeby popularna funkcja nie mogła całkowicie zagłuszyć bardziej trafnej, mniej znanej funkcji. Na koniec degradujemy wyniki ze ścieżek vendor, build i archiwalnych oraz deduplikujemy do najlepszego fragmentu na plik.&lt;/p&gt;
&lt;h2 id=&quot;co-wciąż-jest-niedoskonałe&quot;&gt;Co wciąż jest niedoskonałe&lt;/h2&gt;
&lt;p&gt;Klasyfikator intencji to zbiór wyrażeń regularnych, nie wytrenowany model. Obsługuje typowe formy zapytań za pomocą heurystyk, a niejednoznaczne zapytanie wraca do &lt;code&gt;understand_code&lt;/code&gt; i mieszanki z przewagą semantyki. Wcześniejsza wersja tego wpisu przedstawiała spadek odsetka wyszukiwań bez wyników z około 15% do poniżej 5% jako osiągnięty. Propozycja z grudnia 2025 r. zawierała w rzeczywistości szacunkowy punkt wyjścia i cel; nie dostarczono wspierającego zbioru zapytań ani raportu pomiarowego. Wycofujemy twierdzenie o osiągnięciu tej poprawy; zobacz &lt;a href=&quot;https://maguyva.ai/evidence/search-quality.md&quot;&gt;dowody źródłowe i korektę&lt;/a&gt;. Nie zastąpiliśmy klasyfikatora wytrenowanym modelem, ponieważ tania wersja jest szybka i wystarczająco dobra do zamierzonej roli routingu, a klasyfikator, który myli się z pełnym przekonaniem, jest gorszy niż uczciwy fallback. Same wagi są ręcznie dobranymi wartościami a priori, a nie wynikiem uczenia na danych o kliknięciach, których nie zbieramy.&lt;/p&gt;
&lt;h2 id=&quot;zadawaj-pytania-zamiast-wybierać-narzędzia&quot;&gt;Zadawaj pytania zamiast wybierać narzędzia&lt;/h2&gt;
&lt;p&gt;Agent nie powinien musieć wiedzieć, czy sięgnąć po grep, embeddingi, czy graf wywołań — powinien zadać swoje pytanie prostymi słowami i uzyskać właściwą odpowiedź. Fuzja wielomodalna jest tym, co pozwala, by &lt;code&gt;find_symbol&lt;/code&gt;, wyszukiwanie semantyczne i analiza zależności były dostępne przez jeden interfejs zapytań: system odczytuje kształt pytania i po cichu składa dla niego właściwy retriever. Model, który ocenia embeddingi, ma znaczenie, ale tak samo ważne jest, by wiedzieć, kiedy &lt;em&gt;nie&lt;/em&gt; ich używać. Dobór właściwego narzędzia do każdego zapytania to odrębny wymiar jakości i wolelibyśmy być za niego odpowiedzialni, niż przerzucać go na wywołującego.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// you bring the question. it brings the tools.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Search</category><category>Architecture</category></item><item><title>Obserwowalność agentów: hooki, Alloy i Grafana</title><link>https://maguyva.ai/pl/blog/agent-observability-hooks-alloy-grafana</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/agent-observability-hooks-alloy-grafana</guid><description>Podłączyliśmy Claude Code i Codex do jednego stosu Grafana za pomocą OpenTelemetry i Alloy, a następnie użyliśmy śladów (traces) i logów, by znajdować i naprawiać problemy z zachowaniem agentów u źródła.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Systemy agentowe zawodzą na dziwne sposoby.&lt;/p&gt;
&lt;p&gt;Czasem problemem jest model. Czasem narzędzie. Czasem Twój serwer MCP działa bez zarzutu, ale agent wybrał niewłaściwego specjalistę, albo spędził połowę sesji na pracy powłokowej, której się nie spodziewałeś, albo po cichu spalił budżet w pętli, która z zewnątrz wyglądała na produktywną.&lt;/p&gt;
&lt;p&gt;Jeśli nie widzisz tej różnicy, tak naprawdę nie obsługujesz systemu agentowego. Zgadujesz.&lt;/p&gt;
&lt;p&gt;Zbudowaliśmy więc stos obserwowalności dla naszego własnego przepływu pracy: Claude Code, Codex, zdarzenia hooków Claude, zdarzenia notify Codex, natywny OpenTelemetry, Grafana Alloy i Grafana Cloud po drugiej stronie.&lt;/p&gt;
&lt;p&gt;Ciekawa część to nie „zrobiliśmy dashboard”. Ciekawa część polega na tym, że musieliśmy podzielić telemetrię na dwa różne strumienie, ponieważ żaden pojedynczy feed nie dawał nam pełnego obrazu.&lt;/p&gt;
&lt;h2 id=&quot;problem-telemetria-agentów-jest-rozdrobniona&quot;&gt;Problem: telemetria agentów jest rozdrobniona&lt;/h2&gt;
&lt;p&gt;Nowoczesne agenty programistyczne już emitują część telemetrii. To pomaga, ale to nie wystarcza.&lt;/p&gt;
&lt;p&gt;Natywny OTEL dobrze odpowiada na pytania w stylu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ile żądań wykonaliśmy?&lt;/li&gt;
&lt;li&gt;Ile kosztowała dana sesja?&lt;/li&gt;
&lt;li&gt;Gdzie są spany i ślady (traces)?&lt;/li&gt;
&lt;li&gt;Czy nastąpił skok opóźnienia?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Znacznie gorzej radzi sobie z pytaniami takimi jak:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Na którym serwerze MCP agent się opierał?&lt;/li&gt;
&lt;li&gt;Czy ta awaria dotyczyła &lt;code&gt;Bash&lt;/code&gt;, wbudowanego narzędzia plikowego, czy wywołania MCP?&lt;/li&gt;
&lt;li&gt;Który skill faktycznie się aktywował?&lt;/li&gt;
&lt;li&gt;Jaki typ subagenta został wysłany do zadania?&lt;/li&gt;
&lt;li&gt;Czy sesja wykonywała użyteczną pracę, czy tylko się miotała?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ta druga klasa pytań leży bliżej hooków niż śladów.&lt;/p&gt;
&lt;p&gt;Ale odwrotność też jest prawdą: część najważniejszych pytań o wydajność leży bliżej śladów niż hooków.&lt;/p&gt;
&lt;p&gt;Jeśli chcesz wiedzieć, gdzie faktycznie kumulowało się opóźnienie, które spany były wolne, albo czy sesja spaliła czas na wywołaniach modelu czy na wykonywaniu narzędzi, potrzebujesz danych ze śladów tak samo jak zdarzeń semantycznych.&lt;/p&gt;
&lt;h2 id=&quot;architektura-na-której-skończyliśmy&quot;&gt;Architektura, na której skończyliśmy&lt;/h2&gt;
&lt;p&gt;Uruchamiamy dwie ścieżki telemetrii równolegle.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Claude Code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  hooks        -&amp;gt; send_event.py -&amp;gt; Grafana Cloud Loki&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Codex&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  notify hook -&amp;gt; codex_notify.py -&amp;gt; shared Loki schema&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten podział jest celowy.&lt;/p&gt;
&lt;p&gt;Jest też asymetryczny. Claude Code daje nam znacznie bogatszy interfejs hooków cyklu życia. Codex daje nam natywny OTEL plus interfejs notify, więc normalizujemy mniej szczegółowe zdarzenia zakończenia tury do tego samego schematu logów, zamiast udawać, że oba środowiska uruchomieniowe udostępniają te same mechanizmy sterowania.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Natywny OTEL&lt;/strong&gt; daje nam bazowy strumień: logi i ślady z samego środowiska uruchomieniowego, plus metryki tam, gdzie środowisko faktycznie je emituje.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zdarzenia hooków i notify&lt;/strong&gt; dają nam warstwę semantyczną: rzeczy takie jak &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;PostToolUse&lt;/code&gt;, &lt;code&gt;PostToolUseFailure&lt;/code&gt;, &lt;code&gt;UserPromptSubmit&lt;/code&gt;, &lt;code&gt;SubagentStop&lt;/code&gt;, &lt;code&gt;SkillActivated&lt;/code&gt; oraz sklasyfikowane metadane, na których nam naprawdę zależy przy debugowaniu zachowania agenta. Claude Code dostarcza tu bogatszy strumień zdarzeń. Codex dostarcza mniej szczegółowy, ale wciąż użyteczny znormalizowany strumień.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-hooki-w-ogóle-istnieją&quot;&gt;Dlaczego hooki w ogóle istnieją&lt;/h2&gt;
&lt;p&gt;Nasz potok hooków wzbogaca zdarzenia, zanim trafią do Loki.&lt;/p&gt;
&lt;p&gt;Zamiast po prostu powiedzieć „uruchomiło się narzędzie”, klasyfikujemy zdarzenie do pól takich jak:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tool_type&lt;/code&gt;: builtin, mcp, skill, agent, bash&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_server&lt;/code&gt;: który backend MCP obsłużył wywołanie&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bash_cli&lt;/code&gt;: rodzina poleceń powłoki&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent_type&lt;/code&gt;: jaki rodzaj specjalisty został wysłany do zadania&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent_tool&lt;/code&gt;: czy źródłem był Claude Code, czy Codex&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To oznacza, że możemy zadawać pytania, które mają znaczenie operacyjne:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | agent_tool=&quot;codex-cli&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | tool_type=&quot;mcp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | json | bash_cli=&quot;git&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To nie są pola dla ozdoby. To różnica między „agent wydawał się wolny” a „agent spędził ostatnie dziesięć minut na intensywnych operacjach git w powłoce z wysokim wskaźnikiem niepowodzeń narzędzi”.&lt;/p&gt;
&lt;p&gt;Jeden szczegół implementacyjny, który wygląda dziwniej, niż jest: współdzielony strumień Loki wciąż używa &lt;code&gt;service_name=&quot;claude-code-hooks&quot;&lt;/code&gt; jako etykiety, nawet gdy zdarzenie pochodzi z Codex. Prawdziwy podział między środowiskami uruchomieniowymi następuje na &lt;code&gt;agent_tool&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-alloy-siedzi-pośrodku&quot;&gt;Dlaczego Alloy siedzi pośrodku&lt;/h2&gt;
&lt;p&gt;Grafana Alloy w tym układzie to nie tylko przekaźnik. To punkt egzekwowania reguł przetwarzania telemetrii.&lt;/p&gt;
&lt;p&gt;Kierujemy natywny strumień OTEL z Claude Code i Codex do lokalnego proxy Alloy na &lt;code&gt;localhost:4318&lt;/code&gt;, a następnie pozwalamy Alloy oczyścić ładunek, zanim przekaże go dalej do Grafana Cloud.&lt;/p&gt;
&lt;p&gt;To ma znaczenie, ponieważ surowa telemetria agentów jest pełna pól o wysokiej kardynalności, które są przydatne do analizy, ale fatalne jako indeksowane etykiety:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompt_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;liczba tokenów&lt;/li&gt;
&lt;li&gt;czasy trwania&lt;/li&gt;
&lt;li&gt;bloby parametrów narzędzi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jeśli zaindeksujesz wszystko, dostajesz eksplozję etykiet i zepsuty dzień.&lt;/p&gt;
&lt;p&gt;Więc Alloy robi dla nas trzy rzeczy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Utrzymuje bardzo mały zestaw zaindeksowanych etykiet o niskiej kardynalności.&lt;/li&gt;
&lt;li&gt;Przenosi zaszumione, ale użyteczne pola do ustrukturyzowanych metadanych.&lt;/li&gt;
&lt;li&gt;Całkowicie odrzuca czysty szum.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ważna idea jest prosta: &lt;strong&gt;obserwuj więcej, indeksuj mniej&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-strumień-hooków-omija-alloy&quot;&gt;Dlaczego strumień hooków omija Alloy&lt;/h2&gt;
&lt;p&gt;Strumień hooków jest już ukształtowany pod Loki.&lt;/p&gt;
&lt;p&gt;Zanim &lt;code&gt;send_event.py&lt;/code&gt; wypchnie zdarzenie, już zdecydowaliśmy, które pola zasługują na traktowanie jako etykiety, a które należą do ustrukturyzowanego ciała JSON. Ten strumień trafia prosto do bramki OTLP Grafana Cloud, zamiast przechodzić kolejny raz przez Alloy.&lt;/p&gt;
&lt;p&gt;System ma więc jasny podział pracy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alloy&lt;/strong&gt; okiełznuje surowy natywny strumień OTEL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wzbogacanie hooków&lt;/strong&gt; czyni zdarzenia semantyczne przeszukiwalnymi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dzięki temu architektura pozostaje prostsza niż próba przepchnięcia wszystkiego jedną ścieżką.&lt;/p&gt;
&lt;h2 id=&quot;co-faktycznie-pokazuje-dashboard&quot;&gt;Co faktycznie pokazuje dashboard&lt;/h2&gt;
&lt;p&gt;Poniższy zrzut ekranu pochodzi z jednego z dashboardów obserwowalności stojących za naszym przepływem pracy agentów. To nie benchmark, a liczby to tylko wycinek z danego momentu. Chodzi o kształt danych: kanał aktywności, wywołania narzędzi, awarie, prompty oraz podziały według agenta, narzędzi wbudowanych, użycia MCP, poleceń powłoki i skilli.&lt;/p&gt;
&lt;p&gt;Przydatne jest to, że ten dashboard żyje na tym samym stosie Grafana co reszta telemetrii agentów. Możemy filtrować według agenta źródłowego i rodziny narzędzi oraz patrzeć na różne środowiska uruchomieniowe bez wymyślania osobnej historii obserwowalności dla każdego systemu.&lt;/p&gt;
&lt;figure class=&quot;feature-figure feature-figure--wide&quot;&gt;
  &lt;a
    href=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
    target=&quot;_blank&quot;
    rel=&quot;noreferrer&quot;
    aria-label=&quot;Otwórz zrzut ekranu dashboardu obserwowalności w pełnej rozdzielczości&quot;
  &gt;
    &lt;img
      src=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
      alt=&quot;Dashboard Grafana pokazujący kanał aktywności, liczbę wywołań narzędzi, awarie, prompty oraz podziały według agentów, narzędzi wbudowanych, użycia MCP, poleceń CLI i skilli dla przepływu pracy agenta.&quot;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;
    Jeden z działających dashboardów stojących za naszym przepływem pracy agentów. Ten zrzut ekranu to tylko wycinek współdzielonego stosu Grafana, który odbiera też telemetrię z naszych innych środowisk uruchomieniowych i systemów agentów. Kliknij obraz, aby zobaczyć wersję w pełnej rozdzielczości.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;dlaczego-ślady-mają-większe-znaczenie-niż-się-wydaje-na-pierwszy-rzut-oka&quot;&gt;Dlaczego ślady mają większe znaczenie, niż się wydaje na pierwszy rzut oka&lt;/h2&gt;
&lt;p&gt;Logi mówią nam, jaka kategoria pracy się wydarzyła. Ślady mówią nam, jak ta praca rozwijała się w czasie.&lt;/p&gt;
&lt;p&gt;To rozróżnienie ma znaczenie w systemach agentowych, ponieważ „wolno” jest zbyt ogólnym określeniem, by było użyteczne.&lt;/p&gt;
&lt;p&gt;Ślad może nam powiedzieć, czy ból pochodził z:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;opóźnienia modelu&lt;/li&gt;
&lt;li&gt;czasu wykonania narzędzia&lt;/li&gt;
&lt;li&gt;powtarzanych ponowień&lt;/li&gt;
&lt;li&gt;jednej szczególnie kosztownej interakcji MCP&lt;/li&gt;
&lt;li&gt;długiego ogona drobnych operacji, które osobno wyglądały niegroźnie&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;W praktyce używamy razem strumienia hooków i śladów Tempo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logi hooków&lt;/strong&gt; odpowiadają: co się wydarzyło?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ślady&lt;/strong&gt; odpowiadają: gdzie poszedł czas?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To połączenie zmienia obserwowalność z dashboardu w wyjaśnienie.&lt;/p&gt;
&lt;h2 id=&quot;gdzie-pasuje-codex&quot;&gt;Gdzie pasuje Codex&lt;/h2&gt;
&lt;p&gt;Codex jest częścią tego samego stosu, ale nie jest identyczny z Claude Code.&lt;/p&gt;
&lt;p&gt;Dla Codex podłączamy dwa elementy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Natywny OTEL z Codex do Alloy&lt;/li&gt;
&lt;li&gt;Webhook notify do &lt;code&gt;codex_notify.py&lt;/code&gt;, który mapuje zakończenia tur na ten sam schemat Loki, którego używamy dla zdarzeń hooków&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To daje nam ujednolicony filtr taki jak &lt;code&gt;agent_tool=&quot;codex-cli&quot;&lt;/code&gt; w tym samym strumieniu logów.&lt;/p&gt;
&lt;p&gt;Uczciwe zastrzeżenie: ładunek notify Codex jest obecnie mniej szczegółowy niż ładunek hooków Claude Code, ponieważ nie jest to ten sam rodzaj interfejsu integracji. W naszej konfiguracji dziś zakończenia tur Codex można znormalizować do współdzielonego schematu, ale bogata ekstrakcja narzędzie-po-narzędziu wciąż lepiej działa w natywnym strumieniu OTEL niż w moście notify.&lt;/p&gt;
&lt;p&gt;To nie jest powód, by unikać tego wpisu. To właśnie jego sens. Prawdziwe systemy obserwowalności buduje się z niedoskonałych sygnałów.&lt;/p&gt;
&lt;h2 id=&quot;grafana-przez-mcp-zmienia-grę&quot;&gt;Grafana przez MCP zmienia grę&lt;/h2&gt;
&lt;p&gt;Większa zmiana polega na tym, że Grafana to nie tylko miejsce, które ludzie odwiedzają w przeglądarce.&lt;/p&gt;
&lt;p&gt;W tym repozytorium udostępniamy też Grafana przez MCP. To oznacza, że agent może odpytywać Loki, Prometheus i Tempo bezpośrednio, zamiast czekać, aż człowiek najpierw ręcznie sprawdzi dashboardy.&lt;/p&gt;
&lt;p&gt;To zamienia obserwowalność w aktywny wkład w przepływ pracy.&lt;/p&gt;
&lt;p&gt;Agent może zapytać:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Które rodziny narzędzi zawodziły najczęściej w ostatniej godzinie?&lt;/li&gt;
&lt;li&gt;Który serwer MCP zdominował sesję?&lt;/li&gt;
&lt;li&gt;Czy niedawne zmiany zmniejszyły liczbę niepowodzeń narzędzi, czy tylko przeniosły pracę na ścieżki bardziej powłokowe z tymi samymi błędami?&lt;/li&gt;
&lt;li&gt;Które ślady pokazują najwyższe opóźnienie lub powtarzane ponowienia?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gdy to masz, jesteś bardzo blisko pętli samodoskonalenia.&lt;/p&gt;
&lt;h2 id=&quot;od-dashboardu-do-pętli-sprzężenia-zwrotnego&quot;&gt;Od dashboardu do pętli sprzężenia zwrotnego&lt;/h2&gt;
&lt;p&gt;To jest część, którą uważamy za najciekawszą.&lt;/p&gt;
&lt;p&gt;Gdy stos obserwowalności staje się przeszukiwalny z poziomu warstwy agenta, telemetria przestaje być biernym narzędziem raportowania i staje się sygnałem sterującym.&lt;/p&gt;
&lt;p&gt;Pętla wygląda tak:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Aktywność agenta emituje ślady, metryki i wzbogacone logi hooków.&lt;/li&gt;
&lt;li&gt;Grafana przechowuje dowody w Loki, Tempo i Prometheus, tam gdzie istnieją metryki.&lt;/li&gt;
&lt;li&gt;Agenci odpytują te dowody przez Grafana MCP.&lt;/li&gt;
&lt;li&gt;System identyfikuje zły dobór narzędzi, kruche skille, słabe trasowanie lub przepływy pracy zbyt zależne od powłoki, które wciąż generują błędy, których można było uniknąć.&lt;/li&gt;
&lt;li&gt;Agenci lub operatorzy dostosowują prompty, konfiguracje agentów, opisy skilli, reguły trasowania lub dostęp do narzędzi.&lt;/li&gt;
&lt;li&gt;Kolejna sesja generuje nowy kształt telemetrii, a cykl się powtarza.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tak przechodzi się od „ciekawego dashboardu” do „mierzalnego systemu poprawy”.&lt;/p&gt;
&lt;p&gt;Celem nie jest maksymalizacja jednej kategorii narzędzi. Celem jest znalezienie właściwej mieszanki CLI, narzędzi wbudowanych, wywołań MCP i skilli dla pracy, która faktycznie jest wykonywana.&lt;/p&gt;
&lt;h2 id=&quot;na-co-to-pozwala-nam-odpowiedzieć&quot;&gt;Na co to pozwala nam odpowiedzieć&lt;/h2&gt;
&lt;p&gt;Gdy oba środowiska uruchomieniowe trafiają do tego samego stosu Grafana, możemy znacznie szybciej odpowiadać na pytania operacyjne:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Czy awarie skupiają się w jednej rodzinie narzędzi?&lt;/li&gt;
&lt;li&gt;Czy przepływy pracy zbyt zależne od powłoki tworzą błędy, których można uniknąć tam, gdzie powinno istnieć narzędzie wyższego poziomu?&lt;/li&gt;
&lt;li&gt;Które serwery MCP dźwigają większość obciążenia?&lt;/li&gt;
&lt;li&gt;Czy płacimy za aktywność agenta, która nie generuje znaczącego postępu?&lt;/li&gt;
&lt;li&gt;Czy sesja działa nieprawidłowo z powodu modelu, narzędzi, czy warstwy orkiestracji?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jest to szczególnie przydatne w przepływach pracy z wieloma agentami, gdzie „agent był zajęty” nie mówi prawie nic.&lt;/p&gt;
&lt;p&gt;Jeśli jeden specjalista jest wciąż wysyłany do zadań i generuje wysoki wskaźnik niepowodzeń, to problem trasowania lub kształtowania promptu.&lt;/p&gt;
&lt;p&gt;Jeśli jeden serwer MCP dominuje wśród wszystkich wywołań, może to być dobra architektura albo sygnał, że reszta jest zbędnym balastem.&lt;/p&gt;
&lt;p&gt;Jeśli niepowodzenia narzędzi rosną, a koszt pozostaje wysoki, masz problem operacyjny, nie jakościowy.&lt;/p&gt;
&lt;p&gt;Jeśli praca powłokowa wciąż zawodzi w przewidywalny, możliwy do uniknięcia sposób tam, gdzie powinno istnieć narzędzie wyższego poziomu, to sygnał produktowy.&lt;/p&gt;
&lt;p&gt;Jeśli jeden skill aktywuje się bez przerwy, ale nie poprawia wyników, to sygnał promptu lub trasowania.&lt;/p&gt;
&lt;h2 id=&quot;prawdziwa-lekcja&quot;&gt;Prawdziwa lekcja&lt;/h2&gt;
&lt;p&gt;Głębsza lekcja jest taka, że obserwowalność agentów potrzebuje zarówno &lt;strong&gt;telemetrii środowiska uruchomieniowego&lt;/strong&gt;, jak i &lt;strong&gt;telemetrii przepływu pracy&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Telemetria środowiska uruchomieniowego mówi Ci, co system zrobił.&lt;/p&gt;
&lt;p&gt;Telemetria przepływu pracy mówi Ci, co agent myślał, że robi.&lt;/p&gt;
&lt;p&gt;Potrzebujemy obu.&lt;/p&gt;
&lt;p&gt;Jeśli zachowujesz tylko ślady i liczniki, tracisz warstwę semantyczną. Jeśli zachowujesz tylko zdarzenia hooków, tracisz opóźnienia, spany i szerszy obraz środowiska uruchomieniowego.&lt;/p&gt;
&lt;p&gt;A jeśli zachowujesz oba, ale nigdy nie sprzęgasz ich zwrotnie z warstwą agenta, masz monitoring, nie adaptację.&lt;/p&gt;
&lt;p&gt;To połączenie sprawia, że system jest na tyle wytłumaczalny, by go obsługiwać, i na tyle strojalny, by go ulepszać.&lt;/p&gt;
&lt;h2 id=&quot;co-wciąż-jest-niedoskonałe&quot;&gt;Co wciąż jest niedoskonałe&lt;/h2&gt;
&lt;p&gt;Wciąż są szorstkie krawędzie.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nie każde zdarzenie hooka zawiera dane o czasie trwania i tokenach, jakich byśmy chcieli.&lt;/li&gt;
&lt;li&gt;Część najlepszych widoków czasowych wciąż pochodzi ze śladów Tempo, a nie z logów hooków.&lt;/li&gt;
&lt;li&gt;Codex jest dziś mniej semantycznie bogaty niż Claude Code we wzbogaconym strumieniu zdarzeń.&lt;/li&gt;
&lt;li&gt;Zrzut ekranu dashboardu to działający panel operacyjny, nie dopieszczony artefakt marketingowy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ten ostatni punkt jest zamierzony. Wolimy pokazać prawdziwy panel przyrządów niż udawać, że systemy agentowe magicznie same się tłumaczą.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-to-ma-znaczenie-dla-maguyva&quot;&gt;Dlaczego to ma znaczenie dla Maguyva&lt;/h2&gt;
&lt;p&gt;Maguyva polega na dawaniu agentom lepszej inteligencji kodu. Ale gdy agenty faktycznie wykonują użyteczną pracę, natychmiast pojawia się nowy wymóg: musisz widzieć, jak się zachowują.&lt;/p&gt;
&lt;p&gt;Jakość wyszukiwania, jakość trasowania, dobór narzędzi i efektywność kontekstu — wszystko to staje się problemami do zaobserwowania.&lt;/p&gt;
&lt;p&gt;Dlatego uważamy, że warto o tym pisać. Przyszły stos agentowy to nie tylko prompty i narzędzia. To prompty, narzędzia i warstwa instrumentacji, która mówi Ci, czy całość działa.&lt;/p&gt;
&lt;p&gt;Jeśli budujesz poważne przepływy pracy agentowej, obserwowalność nie jest opcjonalną infrastrukturą. Jest częścią produktu.&lt;/p&gt;
</content:encoded><category>Observability</category><category>Grafana</category><category>OpenTelemetry</category><category>Architecture</category></item><item><title>Wiedza z historii zmian zamyka pętlę: jak zmiany stają się pamięcią instytucjonalną</title><link>https://maguyva.ai/pl/blog/mining-workflow-closing-the-loop</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/mining-workflow-closing-the-loop</guid><description>Commity git stają się ustrukturyzowanymi wpisami changeloga i rekordami decyzji architektonicznych, a następnie wracają do agentów AI jako przeszukiwalna pamięć instytucjonalna.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (luty 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Każdy zespół inżynieryjny mierzy się z tym samym wyzwaniem: zmiany zachodzą nieustannie, ale &lt;em&gt;powód&lt;/em&gt; tych zmian znika. Sześć miesięcy później ktoś pyta „dlaczego przyjęliśmy DuckDB dla etapów pipeline’u?”, a odpowiedź żyje tylko w głowie osoby, która podjęła tę decyzję — jeśli w ogóle jeszcze tu jest.&lt;/p&gt;
&lt;p&gt;Zbudowaliśmy przepływ pracy wydobywczy (mining), który zamyka tę pętlę. Zmiany przepływają przez commity git, są przetwarzane przez nasz pipeline wydobywczy, stają się ustrukturyzowanymi wpisami changeloga i rekordami decyzji architektonicznych, a następnie wracają do naszych agentów AI przez zapytania CLI. Wynik: pamięć instytucjonalna, do której mają dostęp zarówno ludzie, jak i AI.&lt;/p&gt;
&lt;h2 id=&quot;problem-decyzje-wyparowują&quot;&gt;Problem: decyzje wyparowują&lt;/h2&gt;
&lt;p&gt;Rozważ typowy scenariusz. Deweloper commituje:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;feat(canonical): add DuckDB runtime for pipeline stages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten commit reprezentuje istotny wybór architektoniczny. Zespół ocenił opcje, rozważył kompromisy i wybrał DuckDB z konkretnych powodów. Ale cały ten kontekst żyje w:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wątku na Slacku (prawdopodobnie usuniętym)&lt;/li&gt;
&lt;li&gt;Pamięci kogoś (zdecydowanie blaknącej)&lt;/li&gt;
&lt;li&gt;Komentarzu w kodzie (może, jeśli masz szczęście)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trzy miesiące później nowy członek zespołu pyta: „Powinienem użyć DuckDB czy SQLite dla tego nowego etapu?”. Bez pamięci instytucjonalnej albo wymyśla koło na nowo, albo dokonuje niespójnych wyborów.&lt;/p&gt;
&lt;h2 id=&quot;pętla-od-commitów-do-kontekstu&quot;&gt;Pętla: od commitów do kontekstu&lt;/h2&gt;
&lt;p&gt;Nasz przepływ pracy wydobywczy zamienia historię git w przeszukiwalną wiedzę:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Git Commits&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine sync          │  ← Build index from git history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine candidates    │  ← Surface commits for review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  Classification     │  ← Human or LLM assessment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  (changelog or ADR) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├──────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Changelog   │    │ Decisions     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Ledger      │    │ Registry      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ (JSONL)     │    │ (YAML files)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ CHANGELOG.md│    │ orkestra CLI  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ per package │    │ queries       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └──────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ AI Agents     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ (via CLI)     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      └───────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kluczowa obserwacja: zarówno changelogi, jak i decyzje architektoniczne wypływają z tej samej historii git, przetwarzanej przez ujednolicony pipeline. To zapewnia, że nic nie umknie.&lt;/p&gt;
&lt;h2 id=&quot;jak-działa-wydobywanie&quot;&gt;Jak działa wydobywanie&lt;/h2&gt;
&lt;h3 id=&quot;krok-1-synchronizacja-indeksu&quot;&gt;Krok 1: Synchronizacja indeksu&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To polecenie skanuje historię git i buduje indeks wszystkich commitów. Wyodrębnia ustrukturyzowane sygnały z każdego commita:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Typ zgodny ze standardem Conventional Commits (&lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &lt;code&gt;docs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Zakres (który pakiet lub obszar)&lt;/li&gt;
&lt;li&gt;Znaczniki zmian łamiących kompatybilność&lt;/li&gt;
&lt;li&gt;Dotknięte pliki i metryki złożoności&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;krok-2-sprawdzenie-statusu-pokrycia&quot;&gt;Krok 2: Sprawdzenie statusu pokrycia&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oto jak wygląda nasz obecny status:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Mining Status&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;=============&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Extracted:       476&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:       15161&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Changelog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Released:       6799&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:        8838&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;15 637 przetworzonych commitów. 476 stało się decyzjami architektonicznymi. 6799 stało się wpisami changeloga. Każdy commit sklasyfikowany.&lt;/p&gt;
&lt;h3 id=&quot;krok-3-uzyskanie-kandydatów-do-przeglądu&quot;&gt;Krok 3: Uzyskanie kandydatów do przeglądu&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; candidates&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --full&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To wydobywa commity, które nie zostały jeszcze przetworzone, wraz z pełnym kontekstem do klasyfikacji:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;90571786d99166c0039ca2e80e4d9cd96184bd85&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;date&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;subject&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(canonical): add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;signals&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;commit_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;scope&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;canonical&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;breaking&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;is_releasable_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;domains_affected&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;pipeline&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;data-architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;body&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Establishes DuckDB as canonical in-process analytical database...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;files_changed&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/canonical/pipelines/stages/duckdb_runtime.py&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;stats&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;files&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;insertions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;450&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;deletions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sygnały pomagają w klasyfikacji: &lt;code&gt;is_releasable_type: true&lt;/code&gt; sugeruje, że powinno się to znaleźć w changelogu. Duża liczba wstawień i pliki infrastrukturalne sugerują, że może to być też decyzja architektoniczna.&lt;/p&gt;
&lt;h3 id=&quot;krok-4-klasyfikacja-commitów&quot;&gt;Krok 4: Klasyfikacja commitów&lt;/h3&gt;
&lt;p&gt;W tym miejscu rozchodzą się dwie ścieżki: wpisy changeloga i decyzje architektoniczne.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla wpisów changeloga:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; added&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To zapisuje, że commit &lt;code&gt;abc123&lt;/code&gt; powinien pojawić się w changelogu w kategorii „Dodano”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla decyzji architektonicznych:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Najpierw uzyskaj prawdziwy identyfikator decyzji:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --domain&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pipeline&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Returns: DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Następnie klasyfikuj z identyfikatorem decyzji:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --decision&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To łączy commit z rekordem decyzji, który zostanie utworzony lub zaktualizowany.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do przetwarzania wsadowego (co faktycznie robimy):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Generate classifications file with LLM assistance&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; commit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --input&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classifications.jsonl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Format JSONL obsługuje obie domeny w jednym przebiegu:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;release&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;extract&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;decision_id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-PL-142&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;def456&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;skip&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;reason&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Chore: dependency update&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;krok-5-renderowanie-wyników&quot;&gt;Krok 5: Renderowanie wyników&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; render&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --package&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To generuje pliki &lt;code&gt;CHANGELOG.md&lt;/code&gt; dla poszczególnych pakietów na podstawie ledgera. Changelogi są artefaktami pochodnymi — usuń je, a wygenerują się na nowo idealnie z ledgera źródłowego.&lt;/p&gt;
&lt;h2 id=&quot;struktura-rekordu-decyzji&quot;&gt;Struktura rekordu decyzji&lt;/h2&gt;
&lt;p&gt;Wyodrębnione decyzje stają się plikami YAML z bogatymi metadanymi:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-PL-142&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adopt DuckDB as Canonical Processing Runtime for Pipeline Stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;active&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;created&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Establishes DuckDB as the canonical in-process analytical database for pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  stage transformations. Provides a shared runtime module that resolves settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  from pipeline defaults with stage-level overrides.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Pipeline stages performing data transformations each independently configured&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  DuckDB connections. This led to inconsistent settings, duplicated configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  code, and no way to tune DuckDB globally for a pipeline run.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DuckDB provides efficient in-process OLAP with zero configuration deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Centralized runtime module eliminates duplicated DuckDB setup across stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Hierarchical settings enable global tuning with stage-level overrides&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Memory limits and thread counts can be adjusted per-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;impact&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  positive&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Consistent DuckDB configuration across all pipeline stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Single point of control for memory/thread tuning&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Reduced code duplication in conversion and export stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  negative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adds dependency on shared runtime module&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Stages must adopt new configuration pattern&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;source_commits&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;sha&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;90571786d99166c0039ca2e80e4d9cd96184bd85&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    message&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;feat(canonical): add DuckDB runtime for pipeline stages&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    date&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    role&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;primary&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/duckdb_runtime.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/runner.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/convert_hdx_admin_boundaries_to_geoparquet.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;related&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-DA-014&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Data architecture decisions that influenced this&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Każda decyzja odsyła z powrotem do swoich commitów źródłowych. Każda decyzja określa, których plików dotyczy. Relacje między decyzjami są jednoznaczne.&lt;/p&gt;
&lt;h2 id=&quot;integracja-cli-odpytywanie-pamięci-instytucjonalnej&quot;&gt;Integracja CLI: odpytywanie pamięci instytucjonalnej&lt;/h2&gt;
&lt;p&gt;Tu właśnie zamyka się pętla. Agenci mogą odpytywać decyzje przez CLI:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Search by topic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;retry&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zwraca decyzje dotyczące logiki ponawiania, obsługi błędów, wzorców odzyskiwania.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Get full details on a specific decision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-142&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zwraca kompletny rekord decyzji z kontekstem, uzasadnieniem i wpływem.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# List recent decisions for context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pokazuje, jakie wybory architektoniczne zostały podjęte ostatnio.&lt;/p&gt;
&lt;h3 id=&quot;jak-agenci-tego-używają&quot;&gt;Jak agenci tego używają&lt;/h3&gt;
&lt;p&gt;Bazowe instrukcje naszego orkiestratora zawierają:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8;font-weight:bold&quot;&gt;**Essential CLI commands:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; `orkestra registry decisions search &quot;X&quot;`&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; — Find architectural decisions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gdy agent zostaje poproszony o zaimplementowanie czegoś związanego z DuckDB, może najpierw sprawdzić:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;DuckDB&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I odkryć DEC-PL-142, dowiadując się:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dlaczego wybraliśmy DuckDB (kontekst)&lt;/li&gt;
&lt;li&gt;Jak używać go poprawnie (agent_guidance)&lt;/li&gt;
&lt;li&gt;Na które pliki spojrzeć (files)&lt;/li&gt;
&lt;li&gt;Jakie powiązane decyzje istnieją (related)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent nie wymyśla koła na nowo. Opiera się na ustalonych wzorcach.&lt;/p&gt;
&lt;h2 id=&quot;test-trzech-pytań&quot;&gt;Test trzech pytań&lt;/h2&gt;
&lt;p&gt;Nie każdy commit zasługuje na rekord decyzji. Używamy testu trzech pytań, aby filtrować:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Czy to było trudne do podjęcia?&lt;/strong&gt; Czy wymagało znaczącej analizy, oceny kompromisów lub debaty?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Czy kosztowna jest zmiana tego?&lt;/strong&gt; Czy cofnięcie tej decyzji wymagałoby znacznego nakładu pracy?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Czy ma wpływ na cały system?&lt;/strong&gt; Czy wpływa na wiele pakietów lub ustanawia wzorce, które inni będą naśladować?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jeśli commit odpowiada „tak” na przynajmniej jedno z tych pytań, jest kandydatem do ekstrakcji decyzji. Nasz typowy wskaźnik: 1-4 decyzje na 100 commitów (około 1-4%).&lt;/p&gt;
&lt;p&gt;Dla wpisów changeloga próg jest niższy: każda zmiana widoczna dla użytkownika (funkcje, poprawki, usprawnienia) zostaje zapisana. Wewnętrzne porządki, aktualizacje dokumentacji i refaktoryzacje zazwyczaj są pomijane. Nasz typowy wskaźnik: 30-50 wpisów changeloga na 100 commitów.&lt;/p&gt;
&lt;h2 id=&quot;przechowywanie-danych-ledgery-tylko-do-dopisywania&quot;&gt;Przechowywanie danych: ledgery tylko do dopisywania&lt;/h2&gt;
&lt;p&gt;System wydobywczy używa ledgerów JSONL tylko do dopisywania (append-only) dla bezkonfliktowej pracy wieloagentowej:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/changelog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── commits_processed.jsonl  # Classification ledger (both domains)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── release_notes.jsonl      # Changelog entries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── commits_index.yaml       # Derived index (gitignored)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/decisions/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── registry.yaml            # Decision index&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── records/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-001.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-002.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Format JSONL z &lt;code&gt;merge=union&lt;/code&gt; w &lt;code&gt;.gitattributes&lt;/code&gt; oznacza, że wielu agentów może klasyfikować commity jednocześnie bez konfliktów scalania. Każda linia jest niezależna.&lt;/p&gt;
&lt;h2 id=&quot;kontrole-walidacyjne&quot;&gt;Kontrole walidacyjne&lt;/h2&gt;
&lt;p&gt;Przed każdą sesją wydobywczą uruchamiamy walidację:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --quick&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sprawdza to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poprawność formatu SHA&lt;/li&gt;
&lt;li&gt;Zgodność formatu identyfikatora decyzji&lt;/li&gt;
&lt;li&gt;Brak zduplikowanych wpisów dla tego samego SHA&lt;/li&gt;
&lt;li&gt;Czy przywoływane decyzje faktycznie istnieją&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Po klasyfikacji walidujemy ponownie przed zatwierdzeniem zmian.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-to-ma-znaczenie&quot;&gt;Dlaczego to ma znaczenie&lt;/h2&gt;
&lt;p&gt;Pętla sprzężenia zwrotnego, którą zbudowaliśmy, rozwiązuje kilka problemów:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla nowych członków zespołu:&lt;/strong&gt; Zamiast pytać „dlaczego zrobiliśmy X?”, mogą przeszukać rejestr decyzji. Kontekst jest zachowany.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla agentów AI:&lt;/strong&gt; Nie działają w próżni. Mogą odpytywać wiedzę instytucjonalną, zanim wydadzą rekomendację. Poproszeni o dodanie nowego etapu pipeline’u, mogą odkryć wzorzec DuckDB i się go trzymać.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla spójności architektonicznej:&lt;/strong&gt; Decyzje są jednoznaczne i przeszukiwalne. Gdy ktoś proponuje podejście sprzeczne z istniejącą decyzją, system może uwidocznić ten konflikt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla generowania changeloga:&lt;/strong&gt; Notatki wydania nie są gorączkowym pośpiechem w ostatniej chwili. Są produktem ubocznym ciągłej klasyfikacji podczas rozwoju.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dla onboardingu:&lt;/strong&gt; Nowi agenci dziedziczą pełny kontekst bazy kodu. Widzą nie tylko kod — widzą decyzje, które go ukształtowały.&lt;/p&gt;
&lt;h2 id=&quot;stan-obecny&quot;&gt;Stan obecny&lt;/h2&gt;
&lt;p&gt;Na dziś:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15 637 commitów&lt;/strong&gt; przetworzonych przez pipeline&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;476 decyzji architektonicznych&lt;/strong&gt; wyodrębnionych i udokumentowanych&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6799 wpisów changeloga&lt;/strong&gt; zapisanych&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;100% pokrycia&lt;/strong&gt; w obu domenach&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Każdy commit od momentu, gdy zaczęliśmy, został sklasyfikowany. Pamięć instytucjonalna jest kompletna i przeszukiwalna.&lt;/p&gt;
&lt;h2 id=&quot;jak-zacząć&quot;&gt;Jak zacząć&lt;/h2&gt;
&lt;p&gt;Jeśli chcesz wdrożyć coś podobnego:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zacznij od standardu Conventional Commits.&lt;/strong&gt; Pipeline wydobywczy działa najlepiej, gdy commity mają ustrukturyzowane prefiksy (&lt;code&gt;feat:&lt;/code&gt;, &lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;chore:&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zdefiniuj swoje domeny.&lt;/strong&gt; Używamy domen takich jak &lt;code&gt;pipeline&lt;/code&gt;, &lt;code&gt;agent-design&lt;/code&gt;, &lt;code&gt;observability&lt;/code&gt;, &lt;code&gt;data-modeling&lt;/code&gt;. Organizują one decyzje według obszaru.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zbuduj nawyk klasyfikacji.&lt;/strong&gt; Wydobywanie działa, gdy zespoły regularnie klasyfikują commity. Przetwarzanie wsadowe ze wsparciem LLM pomaga skalować.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Uczyń decyzje przeszukiwalnymi.&lt;/strong&gt; Wartość kumuluje się, gdy agenci mogą przeszukiwać decyzje przez CLI. Nadaj wynikom strukturę odpowiednią do przetwarzania maszynowego.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zamknij pętlę.&lt;/strong&gt; Decyzje powinny wpływać na przyszłą pracę. Uwzględnij odniesienia do decyzji w instrukcjach agentów i listach kontrolnych przeglądu kodu.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Celem nie jest idealna dokumentacja. Chodzi o to, by &lt;em&gt;powód&lt;/em&gt; stojący za zmianami był dostępny zarówno dla ludzi, jak i AI, dziś i za sześć miesięcy. Gdy zmiany stają się pamięcią instytucjonalną, zespoły opierają się na ustalonych wzorcach zamiast wymyślać je na nowo.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Przepływ pracy wydobywczy jest częścią naszego silnika orkiestracji, konkretnie modułu silnika kontekstu w naszym pakiecie orkiestracji.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Workflows</category></item><item><title>Wydobywanie skilli: od 3500 kandydatów do 466 zdolności</title><link>https://maguyva.ai/pl/blog/skill-mining-3500-and-counting</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/skill-mining-3500-and-counting</guid><description>Przesialiśmy 3500 kandydatów na skille i przyjęliśmy 466. Systematyczna pętla wyszukiwania i włączania skilli do rejestru pozwala budować spójną bibliotekę skilli agentów AI na dużą skalę.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (styczeń 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;problem-3500-skilli&quot;&gt;Problem 3500 skilli&lt;/h2&gt;
&lt;p&gt;Gdy zaczęliśmy budować system orkiestracji agentów, natrafiliśmy na ciekawe wyzwanie: istnieją tysiące potencjalnych skilli rozproszonych po ekosystemie AI. Repozytoria GitHub, dokumentacja dostawców, projekty społecznościowe, wewnętrzne wzorce — skille istnieją wszędzie. Ale które mają znaczenie? Które działają? I jak utrzymać spójną bibliotekę skilli, z której agenci faktycznie mogą korzystać?&lt;/p&gt;
&lt;p&gt;Nasza odpowiedź: systematyczna pętla wyszukiwania i włączania skilli do rejestru.&lt;/p&gt;
&lt;h2 id=&quot;liczby-dziś&quot;&gt;Liczby dziś&lt;/h2&gt;
&lt;p&gt;Zaledwie nieco ponad trzy miesiące po tym, jak Anthropic uruchomił Agent Skills 16 października 2025, oto gdzie byliśmy w momencie publikacji tego wpisu, 27 stycznia 2026:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metryka&lt;/th&gt;
&lt;th&gt;Liczba&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zidentyfikowani kandydaci&lt;/td&gt;
&lt;td&gt;3500+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Przyjęte skille&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skille dostawców&lt;/td&gt;
&lt;td&gt;373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skille wewnętrzne&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aktywni dostawcy&lt;/td&gt;
&lt;td&gt;25+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Średnia liczba tokenów na skill&lt;/td&gt;
&lt;td&gt;2834&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Przywoływane narzędzia&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unikalne tagi&lt;/td&gt;
&lt;td&gt;635&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Przejrzeliśmy ponad 3500 kandydatów na skille. Przyjęliśmy 466. To wskaźnik adopcji na poziomie 13% — i ta selektywność jest zamierzona.&lt;/p&gt;
&lt;h2 id=&quot;system-poziomów-wiedzy&quot;&gt;System poziomów wiedzy&lt;/h2&gt;
&lt;p&gt;Nie wszystkie skille są sobie równe. Organizujemy je w pięć warstw wiedzy (K0-K4), z których każda reprezentuje inny zakres zastosowania:&lt;/p&gt;
&lt;h3 id=&quot;k0-fundamenty-uniwersalne&quot;&gt;K0: Fundamenty (uniwersalne)&lt;/h3&gt;
&lt;p&gt;Skille, które powinien mieć każdy agent. Reprezentują zdolności „dobrego myśliciela”, które działają wszędzie.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;foundations/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── test-first-discipline       # TDD: Red-Green-Refactor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── evidence-based-completion   # Verify before claiming done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── systematic-debugging        # Root cause methodology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── structured-planning         # Break work into tasks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── context-budget-awareness    # Manage token consumption&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Skille K0 są przenośne do dowolnego projektu, dowolnej domeny, dowolnego stosu. Kodują uniwersalne wzorce poznawcze.&lt;/p&gt;
&lt;h3 id=&quot;k1-tożsamości-dziedzina-zawodowa&quot;&gt;K1: Tożsamości (dziedzina zawodowa)&lt;/h3&gt;
&lt;p&gt;Skille „dobrego inżyniera” lub „dobrego badacza”, mające zastosowanie w wielu projektach w ramach danej dziedziny zawodowej.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;identities/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── research-workflows          # Multi-source research&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── web-extraction-playbook     # Content extraction&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── code-review                 # PR review patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── cli-interface-standards     # CLI design patterns&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k2-domeny-wiedza-specjalistyczna&quot;&gt;K2: Domeny (wiedza specjalistyczna)&lt;/h3&gt;
&lt;p&gt;Skille „dobrego eksperta baz danych” lub „dobrego inżyniera bezpieczeństwa”, przenośne w ramach danej dziedziny.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domains/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── schema-migration-workflow   # Safe migration patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── rpc-validation-checklist    # RPC health checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── auth-validation-checklist   # JWT/OAuth patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── secrets-audit-checklist     # Credential scanning&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k3-stosy-technologia&quot;&gt;K3: Stosy (technologia)&lt;/h3&gt;
&lt;p&gt;Skille „dobrego użytkownika Supabase” lub „dobrego dewelopera Cloudflare” dla konkretnych stosów technologicznych.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;stacks/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── maguyva-quickstart          # Our semantic search patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── cloudflare-deployment       # Workers/Pages deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── mcp-tool-best-practices     # MCP tool selection&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k4-projekt-organizacja&quot;&gt;K4: Projekt (organizacja)&lt;/h3&gt;
&lt;p&gt;Skille specyficzne dla naszej organizacji i przepływów pracy.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;project/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── agent-creation-workflow     # How we build agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── skill-authoring-workflow    # How we write skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── mining-session-workflow     # This very process&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor-skill-evaluation     # Evaluation rubrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;pętla-wydobywcza&quot;&gt;Pętla wydobywcza&lt;/h2&gt;
&lt;h3 id=&quot;faza-1-odkrywanie&quot;&gt;Faza 1: odkrywanie&lt;/h3&gt;
&lt;p&gt;Skille pochodzą zewsząd:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repozytoria dostawców&lt;/strong&gt;: AWS, Anthropic, Cloudflare, Supabase i współtwórcy społecznościowi publikują kolekcje skilli. Śledzimy ponad 25 korzeni dostawców.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projekty społecznościowe&lt;/strong&gt;: GitHub jest pełen szablonów Claude Code, wzorców agentów i definicji przepływów pracy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wzorce wewnętrzne&lt;/strong&gt;: gdy nasz zespół rozwiązuje problemy, powstają wzorce. Zostają one sformalizowane w skille.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wydobywanie z dokumentacji&lt;/strong&gt;: dokumentacja techniczna często zawiera niejawne skille — procedury, listy kontrolne, drzewa decyzyjne.&lt;/p&gt;
&lt;p&gt;Odkrywanie jest ciągłe. Używamy backlogu skilli, żeby śledzić kandydatów przed formalną oceną.&lt;/p&gt;
&lt;h3 id=&quot;faza-2-ocena&quot;&gt;Faza 2: ocena&lt;/h3&gt;
&lt;p&gt;Każdy kandydat jest oceniany według tych samych kryteriów:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;adoption_criteria&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fills_real_gap&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # We lack this capability&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;well_structured&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;actively_maintained&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Commits in last 6 months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;portable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;            # Not hyper-specific&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;tested&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Evidence of usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wszystkie pięć kryteriów produktowych musi być spełnionych. Dlatego 87% kandydatów zostaje odrzuconych.&lt;/p&gt;
&lt;p&gt;Następnie każdy kandydat przechodzi przez osobny przegląd zaufania. Nie traktujemy oficjalnego repozytorium dostawcy, znanego opiekuna społecznościowego i przypadkowego repozytorium GitHub jako równoważnych źródeł prawdy.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;trust_review&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  vendor_credibility&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ownership_verified&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Official vendor, known maintainer, or internal source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;maintenance_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Recent commits, issue response, release history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adoption_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Evidence of real use, stars alone are not enough&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;provenance_clear&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;         # We can trace where the skill came from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  prompt_injection_scan&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;hidden_instruction_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Buried &quot;ignore previous instructions&quot; patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;exfiltration_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Prompts that try to leak files, secrets, or context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;authority_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Claims of priority over system or developer rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  script_audit&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;inspect_scripts&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Read shell/python/js helpers before adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;network_and_exec_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # curl|bash, remote downloads, subprocess execution&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;file_and_secret_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;   # Env vars, credential access, broad file writes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;destructive_action_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # rm, reset, overwrite, or unsafe automation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zaufani dostawcy otrzymują lżejszy przegląd pochodzenia, ale nie wolną przepustkę. Niezaufane lub nieznane źródła otrzymują głębszy ręczny audyt, a dołączonych skryptów nie uruchamiamy, dopóki nie zostaną przeczytane, sprawdzone pod kątem zakresu działania i uznane za bezpieczne.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analiza luk&lt;/strong&gt;: przed przyjęciem przeszukujemy nasz rejestr:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;lt;capability&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jeśli już to mamy, nie potrzebujemy tego. Jeśli mamy coś zbliżonego, możemy scalić zamiast przyjmować.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ocena głębi i standardów&lt;/strong&gt;: oceniamy też, jak w pełni kandydat wykorzystuje model agent-skill. Samotny &lt;code&gt;SKILL.md&lt;/code&gt; wciąż może być użyteczny, ale głębsze skille są cenniejsze, gdy oddzielają instrukcje od referencji, skryptów i zasobów w sposób, do którego zachęca &lt;code&gt;agentskills.io&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;skill_depth&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md only&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                     # Single instruction file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md + strong description&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Clear triggers and scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                  # Load docs only when needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds atomic scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Small, reviewable helpers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds assets/examples/templates&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;    # Full progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;depth_signals&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;standards_adherence&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;        # Structure aligns with agentskills.io conventions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;reference_quality&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Curated references, not giant context dumps&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;script_atomicity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Focused helpers, not opaque monoliths&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tool_boundary_clarity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Clear limits on what the skill can execute&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;community_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Stars/forks/users help, but only as a weak boost&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gwiazdki na GitHubie mogą nieco podnieść wynik wiarygodności, ale nigdy nie ratują płytkiego lub niebezpiecznego skilla. Repozytorium z dużą liczbą gwiazdek z jednym niejasnym &lt;code&gt;SKILL.md&lt;/code&gt; i nieprzejrzystymi skryptami otrzymuje niższą ocenę niż mniejsze repozytorium z precyzyjnym opisem, starannie dobranymi materiałami w &lt;code&gt;references/&lt;/code&gt; i atomowymi pomocnikami, które faktycznie wykorzystują pełną zdolność skilla.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analiza strukturalna&lt;/strong&gt;: sprawdzamy jakość skilla:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;wc&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/SKILL.md&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Size check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Supporting files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Bundled docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jeśli kandydat zawiera skrypty, ten przegląd staje się bardziej rygorystyczny. Dobry skill nie jest tylko użyteczny; musi być czytelny, ograniczony i bezpieczny do przekazania agentowi. Sam ten filtr bezpieczeństwa dyskwalifikuje znaczącą część skądinąd interesujących kandydatów.&lt;/p&gt;
&lt;h3 id=&quot;faza-3-włączanie-do-rejestru&quot;&gt;Faza 3: włączanie do rejestru&lt;/h3&gt;
&lt;p&gt;Gdy skill przechodzi ocenę, wchodzi do rejestru. Ale skille nigdy nie są przyjmowane bez zmian. Są modyfikowane, żeby pasować do naszego systemu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modyfikacje przy adopcji&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Normalizacja metadanych&lt;/strong&gt;: każdy skill otrzymuje nasz schemat frontmatter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Przypisanie poziomu K&lt;/strong&gt;: skille są umieszczane we właściwej warstwie wiedzy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wzbogacenie tagów&lt;/strong&gt;: dodawane są tagi na potrzeby odkrywalności&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deklaracja narzędzi&lt;/strong&gt;: dozwolone narzędzia są jednoznacznie deklarowane&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wyrównanie sekcji&lt;/strong&gt;: treść jest restrukturyzowana, żeby pasować do naszego szablonu&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Typowy YAML skilla po włączeniu do rejestru:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  identifier&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Systematic evaluation of vendor skills for adoption.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  layer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;K4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  semantic_folder&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;project&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  source&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-17&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skill-adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  allowed_tools&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Read&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Write&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Edit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Grep&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Glob&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;faza-4-przypisanie-zakresu&quot;&gt;Faza 4: przypisanie zakresu&lt;/h3&gt;
&lt;p&gt;Skille są przypisywane do zakresów — kategorii, które determinują, którzy agenci wczytują które skille:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/rpc-validation-checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-auth&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/research-workflows&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/web-extraction-playbook&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/dataset-discovery-quickstart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Agenci deklarują swoje zakresy, a skille są przypisywane automatycznie:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent definition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Gets: all database skills + all research skills + universal skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;faza-5-materializacja&quot;&gt;Faza 5: materializacja&lt;/h3&gt;
&lt;p&gt;Skille nie żyją jako YAML na produkcji. Są renderowane do plików SKILL.md, które Claude Code może wczytać:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To polecenie:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Czyta wszystkie definicje YAML skilli&lt;/li&gt;
&lt;li&gt;Renderuje je przez szablony Jinja&lt;/li&gt;
&lt;li&gt;Zapisuje pliki SKILL.md do &lt;code&gt;.claude/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Organizuje według poziomu K (foundations/, identities/, domains/, stacks/, project/)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ostateczna struktura wyjściowa:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/skills/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── foundations/     # K0: Universal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── identities/      # K1: Discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── domains/         # K2: Subject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── stacks/          # K3: Technology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── project/         # K4: Organization&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor/          # External skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wzorzec-uśpionego-zakresu&quot;&gt;Wzorzec uśpionego zakresu&lt;/h2&gt;
&lt;p&gt;Jednym z naszych najpotężniejszych wzorców są skille „przyjęte, ale niewczytane”. Nazywamy je uśpionymi zakresami.&lt;/p&gt;
&lt;p&gt;Rozważ skille obliczeń naukowych z repozytorium k-dense-scientific. Przyjęliśmy ponad 120 skilli obejmujących bioinformatykę, chemię, obliczenia kwantowe i informatykę kliniczną. Ale większość naszych agentów nie potrzebuje dokowania molekularnego ani analizy ekspresji genów.&lt;/p&gt;
&lt;p&gt;Zamiast wczytywać wszystkie 120 skilli do każdego agenta (rozdymając okna kontekstu), robimy tak:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Przyjmujemy&lt;/strong&gt; skille z konkretnym zakresem (np. &lt;code&gt;bioinformatics&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Trzymamy je &lt;strong&gt;uśpione&lt;/strong&gt; — zarejestrowane, ale niewczytane&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Włączamy&lt;/strong&gt; je tylko wtedy, gdy agent deklaruje ten zakres&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# In scopes.yaml - dormant scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Bioinformatics and genomics&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: []  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Empty - skills exist but aren&apos;t loaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# When an agent needs bioinformatics:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent YAML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Now loads bioinformatics skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten wzorzec pozwala nam mieć 466 skilli w rejestrze, podczas gdy typowi agenci wczytują tylko 40-60 istotnych.&lt;/p&gt;
&lt;h2 id=&quot;typy-skilli&quot;&gt;Typy skilli&lt;/h2&gt;
&lt;p&gt;Skille występują w trzech wzorcach poznawczych:&lt;/p&gt;
&lt;h3 id=&quot;przepływ-pracy-workflow&quot;&gt;Przepływ pracy (Workflow)&lt;/h3&gt;
&lt;p&gt;Uporządkowane kroki proceduralne: „1. Zrób X, 2. Potem Y, 3. Na koniec Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: schema-migration-workflow, mining-session-workflow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;dyscyplina-discipline&quot;&gt;Dyscyplina (Discipline)&lt;/h3&gt;
&lt;p&gt;Behawioralne bariery ochronne: „Zawsze X”, „Nigdy Y”, „Preferuj Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: test-first-discipline, evidence-based-completion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;lista-kontrolna-checklist&quot;&gt;Lista kontrolna (Checklist)&lt;/h3&gt;
&lt;p&gt;Kryteria weryfikacji: „Potwierdź X”, „Zweryfikuj Y”, „Sprawdź Z”&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: auth-validation-checklist, secrets-audit-checklist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;kontrole-jakości&quot;&gt;Kontrole jakości&lt;/h2&gt;
&lt;p&gt;Każdy skill musi przejść walidację, zanim trafi do wydania:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;validation&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  file_exists&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Skill file at declared path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  frontmatter_valid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Frontmatter parses correctly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  sections_complete&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Expected sections present&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tools_registered&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Declared tools exist in registry&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Opisy muszą mieć 50-400 znaków z frazami wyzwalającymi („Użyj, gdy…”, „Gdy potrzebujesz…”), żeby Claude Code wiedział, kiedy je zasugerować.&lt;/p&gt;
&lt;p&gt;Walidujemy w sposób ciągły:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;ekosystem-dostawców&quot;&gt;Ekosystem dostawców&lt;/h2&gt;
&lt;p&gt;Nasze 373 skille dostawców pochodzą z:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dostawca&lt;/th&gt;
&lt;th&gt;Skille&lt;/th&gt;
&lt;th&gt;Domena&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Agent&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Usługi chmurowe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Generowanie dokumentów&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Edge computing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Baza danych&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k-dense&lt;/td&gt;
&lt;td&gt;100+&lt;/td&gt;
&lt;td&gt;Obliczenia naukowe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;silvainfm&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Data science&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java Developer Kit&lt;/td&gt;
&lt;td&gt;45+&lt;/td&gt;
&lt;td&gt;Spring/Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Automatyzacja przeglądarki&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Każdy korzeń dostawcy jest zadeklarowany w metadata.yaml:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;vendor_roots&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/aws-agent-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;aws&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/k-dense-scientific/scientific-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;k-dense&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;supabase&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Gdy uruchamia się &lt;code&gt;orkestra sync&lt;/code&gt;, skille dostawców są linkowane symbolicznie do &lt;code&gt;.claude/skills/vendor/&lt;/code&gt; z przestrzenią nazw ich dostawcy.&lt;/p&gt;
&lt;h2 id=&quot;czego-się-nauczyliśmy&quot;&gt;Czego się nauczyliśmy&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Selektywność się opłaca.&lt;/strong&gt; Kusi, żeby przyjmować wszystko, co wygląda na użyteczne. Ale każdy skill kosztuje tokeny. Przy średnio 2834 tokenach na skill, rozdęcie boli szybko. Nasz 13% wskaźnik adopcji utrzymuje agentów szczupłymi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Struktura umożliwia odkrywalność.&lt;/strong&gt; System poziomów K to nie tylko organizacja — chodzi o przenośność. Skille K0 można wykorzystać wszędzie. Skille K4 są celowo specyficzne dla projektu. Ta jasność pomaga zarówno ludziom, jak i agentom znaleźć to, czego potrzebują.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Uśpione zakresy skalują.&lt;/strong&gt; Możesz przyjąć setki skilli bez wczytywania ich wszystkich. Zakresy pozwalają zbudować wyczerpujący rejestr, jednocześnie utrzymując okna kontekstu poszczególnych agentów w ryzach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modyfikacja przy adopcji jest niezbędna.&lt;/strong&gt; Surowe skille dostawców rzadko pasują do Twojego systemu. Proces włączania do rejestru — dodawanie metadanych, przypisywanie poziomów, wzbogacanie tagów — sprawia, że zewnętrzne skille działają wewnętrznie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wydobywanie jest ciągłe.&lt;/strong&gt; Liczba 3500 wciąż rośnie. Pojawiają się nowe repozytoria dostawców. Powstają wzorce społecznościowe. Utrwalają się wewnętrzne przepływy pracy. Pętla nigdy się nie zatrzymuje.&lt;/p&gt;
&lt;h2 id=&quot;co-dalej&quot;&gt;Co dalej&lt;/h2&gt;
&lt;p&gt;Pracujemy nad kilkoma usprawnieniami:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Automatyczne wykrywanie luk&lt;/strong&gt;: alarm, gdy częste niepowodzenia agentów mogłyby zostać rozwiązane przez nieprzyjęty skill&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Przepływy wycofywania skilli&lt;/strong&gt;: formalny proces wycofywania skilli, które zostały zastąpione lub są nieużywane&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zależności między skillami&lt;/strong&gt;: jednoznaczna deklaracja wymagań wstępnych skilla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analityka użycia&lt;/strong&gt;: śledzenie, które skille agenci faktycznie wywołują, a nie tylko wczytują&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pętla wydobywania skilli to infrastruktura. Nie jest efektowna. Ale to właśnie ona sprawia, że 41 agentów działa spójnie z 466 zdolnościami, pozostając w granicach kontekstu.&lt;/p&gt;
&lt;p&gt;Taka jest historia tego, jak 3500 zamienia się w 466. Nie przez ignorowanie 3000 — przez systematyczną ocenę i przyjęcie tylko tego, co działa.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Chcesz zobaczyć system skilli w akcji? Sprawdź &lt;code&gt;uv run orkestra skills list&lt;/code&gt;, żeby przejrzeć nasz obecny rejestr.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Skills</category></item><item><title>Stopniowe ujawnianie: okna CLI do systemów agentowych</title><link>https://maguyva.ai/pl/blog/progressive-disclosure-cli-into-agents</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/progressive-disclosure-cli-into-agents</guid><description>Systemy agentowe są domyślnie nieprzejrzyste. Stopniowe ujawnianie daje operatorom warstwowe widoki CLI, od szybkich sprawdzeń statusu po pełne wnętrze agentów i ślady decyzji.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (styczeń 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Systemy agentowe są nieprzejrzyste z założenia. Podejmują decyzje, wywołują narzędzia i koordynują pracę wśród dziesiątek specjalistów. Ale gdy coś idzie nie tak — albo gdy po prostu chcesz zrozumieć, co się dzieje — gdzie szukasz?&lt;/p&gt;
&lt;p&gt;Odpowiedzią jest stopniowe ujawnianie: warstwowy interfejs, który odsłania dokładnie tyle złożoności, ile potrzebujesz, dokładnie wtedy, gdy tego potrzebujesz.&lt;/p&gt;
&lt;h2 id=&quot;problem-nieprzejrzystości&quot;&gt;Problem nieprzejrzystości&lt;/h2&gt;
&lt;p&gt;Nowoczesny system orkiestracji agentów może mieć:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40+ agentów specjalistycznych, każdy z odrębnymi zdolnościami&lt;/li&gt;
&lt;li&gt;700+ skilli obejmujących wewnętrzną automatyzację i integracje z dostawcami&lt;/li&gt;
&lt;li&gt;470+ decyzji architektonicznych kształtujących zachowanie&lt;/li&gt;
&lt;li&gt;Dziesiątki serwerów narzędzi MCP dostarczających zdolności zewnętrzne&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ta złożoność jest zamierzona. Agenci potrzebują dostępu do bogatego kontekstu — wiedzy domenowej, inteligencji kodu, schematów baz danych — żeby podejmować dobre decyzje. Ale to samo bogactwo tworzy problem widoczności.&lt;/p&gt;
&lt;p&gt;Skąd wiesz, który agent obsługuje migracje baz danych? Jakie decyzje ukształtowały zachowanie rankingowe systemu wyszukiwania? Do jakich narzędzi ma dostęp doradca architektury?&lt;/p&gt;
&lt;p&gt;Bez ustrukturyzowanego dostępu zostajesz z czytaniem kodu źródłowego albo z nadzieją, że dokumentacja jest aktualna.&lt;/p&gt;
&lt;h2 id=&quot;stopniowe-ujawnianie-jako-architektura&quot;&gt;Stopniowe ujawnianie jako architektura&lt;/h2&gt;
&lt;p&gt;Stopniowe ujawnianie to nie tylko wzorzec UI. To zasada architektoniczna: organizuj informacje w warstwach, każdą głębszą od poprzedniej, tak by użytkownicy mogli zatrzymać się na poziomie, który odpowiada na ich pytanie.&lt;/p&gt;
&lt;p&gt;Dla systemów agentowych przekłada się to na polecenia CLI o rosnącej głębokości:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Poziom&lt;/th&gt;
&lt;th&gt;Polecenie&lt;/th&gt;
&lt;th&gt;Pytanie, na które odpowiada&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra system status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Czy wszystko działa prawidłowo?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Jakie agenty istnieją?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Co robi ten agent?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra decisions search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dlaczego działa w ten sposób?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Narzędzia MCP Maguyva&lt;/td&gt;
&lt;td&gt;Pokaż mi kod.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Każdy poziom odpowiada na naturalne pytanie uzupełniające. Rzadko musisz skakać od razu do poziomu 5.&lt;/p&gt;
&lt;h2 id=&quot;poziom-1-stan-systemu&quot;&gt;Poziom 1: stan systemu&lt;/h2&gt;
&lt;p&gt;Pierwsze pytanie jest zawsze takie: czy wszystko działa?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; system&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_internal&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;466&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_vendor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;240&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;706&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;commands&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jedno polecenie. Cztery liczby. Wystarczająco, żeby wiedzieć, że system jest skonfigurowany, a rejestry wypełnione.&lt;/p&gt;
&lt;p&gt;Jeśli liczba agentów nieoczekiwanie spada albo skille nie wczytują się, widzisz to tutaj najpierw. Bez konieczności przekopywania się przez logi.&lt;/p&gt;
&lt;h2 id=&quot;poziom-2-inwentarz-agentów&quot;&gt;Poziom 2: inwentarz agentów&lt;/h2&gt;
&lt;p&gt;Gdy już wiesz, że system działa prawidłowo, kolejne pytanie brzmi: co jest dostępne?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To zwraca ustrukturyzowane dane — nazwy agentów, opisy, preferowane modele, pokrycie domenowe. Wyjście jest domyślnie w JSON, co ułatwia przepuszczenie go przez &lt;code&gt;jq&lt;/code&gt; do filtrowania:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;.agents[] | select(.model == &quot;opus&quot;) | .name&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Chcesz agentów, którzy obsługują pracę z bazami danych? Polecenie wyszukiwania zawęża to:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To skanuje nazwy, opisy i zdolności. Znajdujesz właściwego specjalistę bez czytania 40 definicji agentów.&lt;/p&gt;
&lt;h2 id=&quot;poziom-3-szczegółowy-wgląd-w-agenta&quot;&gt;Poziom 3: szczegółowy wgląd w agenta&lt;/h2&gt;
&lt;p&gt;Znalazłeś agenta, który wygląda na odpowiedni? Polecenie &lt;code&gt;info&lt;/code&gt; odsłania wszystko:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architecture-advisor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wyjście zawiera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadane&lt;/strong&gt;: nazwa, kategoria, preferowany model, opis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domeny&lt;/strong&gt;: które obszary wiedzy obejmuje ten agent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tożsamość&lt;/strong&gt;: cechy charakteru (architekt, strateg, knowledge-architect)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Przewodniki narzędzi&lt;/strong&gt;: która dokumentacja narzędzi jest wstrzykiwana do kontekstu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Narzędzia&lt;/strong&gt;: pełna lista narzędzi MCP dostępnych dla tego agenta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oto próbka tego, co widzisz:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;architecture-advisor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;model&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;opus&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Strategic decision-making and architectural guidance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;domains&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;product&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;development/architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;meta/strategy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;mcp_tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__intelligent_search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__analyze_dependencies&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__supabase__execute_sql&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt;      ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To mówi Ci dokładnie, co agent potrafi zrobić. Bez potrzeby sięgania po kod źródłowy.&lt;/p&gt;
&lt;h2 id=&quot;poziom-4-archeologia-decyzji&quot;&gt;Poziom 4: archeologia decyzji&lt;/h2&gt;
&lt;p&gt;Agenci zachowują się zgodnie z udokumentowanymi decyzjami. Gdy musisz zrozumieć &lt;em&gt;dlaczego&lt;/em&gt; coś działa w konkretny sposób, rejestr decyzji jest źródłem prawdy.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;agent&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To zwraca pasujące decyzje architektoniczne:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;status&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;active&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Każda decyzja ma pełną historię pochodzenia — kiedy została podjęta, dlaczego, jakie kompromisy rozważano, które commity ją zaimplementowały:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-SR-049&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Changes default values for search tools to AI-agent-optimal behavior...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;AI agents work better with pre-ranked, importance-weighted results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Graph metrics already computed by pipeline - leverage them&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Community context helps agents understand feature scope in single query&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;source_commits&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;156a880d05eae295669ef7c194b039023f245511&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;message&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(maguyva): enable boost_by_importance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To dokumentacja architektoniczna, która pozostaje aktualna, ponieważ jest wydobywana z commitów, nie utrzymywana ręcznie.&lt;/p&gt;
&lt;h2 id=&quot;poziom-5-bezpośrednia-inteligencja-kodu&quot;&gt;Poziom 5: bezpośrednia inteligencja kodu&lt;/h2&gt;
&lt;p&gt;Gdy musisz zobaczyć rzeczywistą implementację — nie metadane o niej — narzędzia MCP Maguyva dostarczają bezpośredniego dostępu.&lt;/p&gt;
&lt;p&gt;Z poziomu sesji agenta:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__intelligent_search&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  query: &quot;agent context loading&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To automatycznie trasuje przez wyszukiwanie semantyczne, tekstowe i AST, żeby znaleźć odpowiedni kod. Dla konkretnych symboli:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__find_symbol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  symbol_name: &quot;load_agent_context&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dla analizy zależności:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__analyze_dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  target: &quot;packages/orchestration/core/agents.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To nie są tylko zamienniki grep. Uwzględniają graf, są semantycznie zaindeksowane i zintegrowane z tą samą inteligencją kodu, która napędza samych agentów.&lt;/p&gt;
&lt;h2 id=&quot;ujednolicone-wyszukiwanie-w-rejestrach&quot;&gt;Ujednolicone wyszukiwanie w rejestrach&lt;/h2&gt;
&lt;p&gt;Czasem nie wiesz, który rejestr zawiera odpowiedź. Ujednolicone wyszukiwanie obejmuje wszystko:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --summary&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;query&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;254&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;counts&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;skills&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;59&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;476&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;truths&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;packages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;254 dopasowania w pięciu rejestrach. Podsumowanie mówi Ci, gdzie wejść głębiej. Usuń &lt;code&gt;--summary&lt;/code&gt;, żeby uzyskać szczegółowe wyniki, albo dodaj &lt;code&gt;--limit 5&lt;/code&gt;, żeby utrzymać wyjście w ryzach.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-to-ma-znaczenie&quot;&gt;Dlaczego to ma znaczenie&lt;/h2&gt;
&lt;p&gt;Stopniowe ujawnianie to nie tylko wygoda. Zmienia sposób, w jaki wchodzisz w interakcję ze złożonymi systemami.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debugowanie staje się wykonalne.&lt;/strong&gt; Gdy agent podejmuje nieoczekiwaną decyzję, nie przeszukujesz logów za pomocą grep. Sprawdzasz, do jakich narzędzi ma dostęp (&lt;code&gt;agents info&lt;/code&gt;), jakie decyzje kształtują jego zachowanie (&lt;code&gt;decisions search&lt;/code&gt;), i śledzisz implementację, jeśli to konieczne (&lt;code&gt;intelligent_search&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Onboarding przyspiesza.&lt;/strong&gt; Nowi członkowie zespołu nie muszą czytać całej bazy kodu. Zaczynają od &lt;code&gt;system status&lt;/code&gt;, eksplorują za pomocą &lt;code&gt;agents list&lt;/code&gt; i idą głębiej dopiero, gdy trafią na coś, czego nie rozumieją.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentacja pozostaje aktualna.&lt;/strong&gt; Ponieważ CLI czyta z tych samych rejestrów, które konfigurują agentów, wyjście jest zawsze dokładne. Nie ma rozjazdu między tym, co mówi dokumentacja, a tym, co robi system.&lt;/p&gt;
&lt;h2 id=&quot;cli-jako-interfejs&quot;&gt;CLI jako interfejs&lt;/h2&gt;
&lt;p&gt;Mogliśmy zbudować dashboard webowy. Mogliśmy napisać obszerną dokumentację. Zamiast tego zbudowaliśmy CLI, które czyta ze źródła prawdy.&lt;/p&gt;
&lt;p&gt;CLI ma przewagi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Komponowalne&lt;/strong&gt;: przepuszczaj wyjście przez &lt;code&gt;jq&lt;/code&gt;, integruj ze skryptami&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skryptowalne&lt;/strong&gt;: automatyzuj sprawdzenia, generuj raporty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Szybkie&lt;/strong&gt;: bez ładowania stron, bez przepływów uwierzytelniania&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dokładne&lt;/strong&gt;: czyta faktyczną konfigurację, nie zbuforowaną reprezentację&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dla systemów, w których poprawność liczy się bardziej niż estetyka, CLI wygrywa.&lt;/p&gt;
&lt;h2 id=&quot;budowanie-własnego-stopniowego-ujawniania&quot;&gt;Budowanie własnego stopniowego ujawniania&lt;/h2&gt;
&lt;p&gt;Jeśli budujesz systemy agentowe, rozważ, jak użytkownicy będą je sprawdzać:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Zacznij od kontroli stanu systemu.&lt;/strong&gt; Jedno polecenie, które mówi Ci, czy rzeczy działają.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dostarcz widoki inwentarza.&lt;/strong&gt; Wypisz, co istnieje, zanim wyjaśnisz, co to robi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Umożliw celowane zapytania.&lt;/strong&gt; Wyszukiwanie bije przeglądanie na dużą skalę.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Odsłoń pochodzenie.&lt;/strong&gt; Pozwól użytkownikom śledzić decyzje do ich źródeł.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Połącz z inteligencją kodu.&lt;/strong&gt; Ostatecznie użytkownicy muszą zobaczyć implementację.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Każda warstwa odpowiada na pytanie uzupełniające. Buduj je w kolejności częstotliwości — większość użytkowników zatrzymuje się na warstwie 2 lub 3. Tylko zaawansowani użytkownicy sięgają warstwy 5.&lt;/p&gt;
&lt;p&gt;Celem nie jest odsłonięcie wszystkiego. Celem jest odsłonięcie dokładnie tego, co potrzebne, dokładnie wtedy, gdy jest potrzebne. To właśnie jest stopniowe ujawnianie zastosowane do architektury agentowej.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>CLI</category><category>Tooling</category></item><item><title>Ground Truths: zakotwiczanie agentów AI w rzeczywistości</title><link>https://maguyva.ai/pl/blog/ground-truths-anchoring-ai-to-reality</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/ground-truths-anchoring-ai-to-reality</guid><description>Agenci AI halucynują z pełnym przekonaniem. Ground truths to wersjonowane fakty o określonym zakresie, które zakotwiczają zachowanie agentów w rzeczywistości. Oto jak je zbudowaliśmy i egzekwujemy.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (styczeń 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Agenci AI są niezwykle zdolni. Potrafią rozumować, syntetyzować i generować. Ale mają fundamentalną słabość: zmyślają. Nie złośliwie, ale z pełnym przekonaniem. Agent może wymyślić parametry API, które nie istnieją, odwołać się do konfiguracji, które nigdy nie zostały zdefiniowane, albo zastosować wzorce ze swoich danych treningowych, które są sprzeczne z Twoją rzeczywistą architekturą.&lt;/p&gt;
&lt;p&gt;Standardowym środkiem zaradczym jest „daj agentowi więcej kontekstu”. Ale kontekst może być sprzeczny. Dokumentacja odbiega od implementacji. Komentarze kłamią. Nawet kod może wprowadzać w błąd, gdy czyta się go bez zrozumienia intencji.&lt;/p&gt;
&lt;p&gt;Potrzebowaliśmy czegoś bardziej jednoznacznego. Czegoś, czego nie da się zignorować ani błędnie zinterpretować. Czegoś, co zakotwiczy agentów w weryfikowalnej rzeczywistości.&lt;/p&gt;
&lt;p&gt;Nazywamy je Ground Truths — faktami odniesienia.&lt;/p&gt;
&lt;h2 id=&quot;czym-jest-ground-truth&quot;&gt;Czym jest Ground Truth?&lt;/h2&gt;
&lt;p&gt;Ground truth to jednoznaczne, wersjonowane stwierdzenie faktu, którego agenci muszą przestrzegać. To nie dokumentacja. To nie komentarz. To pełnoprawna jednostka w systemie z:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unikalnym identyfikatorem&lt;/strong&gt; (takim jak &lt;code&gt;GT-MAG-015&lt;/code&gt; czy &lt;code&gt;GT-MAG-036&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Statusem cyklu życia&lt;/strong&gt; (aktualny, tymczasowy lub przestarzały)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zakresem&lt;/strong&gt; (obejmujący całą platformę, specyficzny dla pakietu lub związany z domeną)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dowodem&lt;/strong&gt; (ścieżki plików, adresy URL lub referencje, które potwierdzają stwierdzenie)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wskazówkami dla agenta&lt;/strong&gt; (jednoznaczne instrukcje rób/unikaj)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oto przykład z naszej platformy inteligencji kodu Maguyva:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Fuzzy symbol matching is opt-in via `find_similar=true`.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Default behavior returns empty results for non-existent symbols;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    `exact_match=true` enforces strict matching and disables all fuzzy fallbacks.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Deterministic defaults prevent agents from receiving misleading results.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Typos should fail explicitly rather than silently returning unrelated symbols.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/code_analysis_service.py&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/docs/quick_reference/parameters.md&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-25&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ai_first&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To nie jest proza. To kontrakt. Gdy agent natrafia na ten ground truth, wie, że:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Domyślne zachowanie jest deterministyczne (puste wyniki, nie rozmyte zgadywanie)&lt;/li&gt;
&lt;li&gt;Istnieją konkretne parametry (&lt;code&gt;find_similar&lt;/code&gt;, &lt;code&gt;exact_match&lt;/code&gt;) o zdefiniowanym zachowaniu&lt;/li&gt;
&lt;li&gt;Dowody istnieją w konkretnych plikach, które można zweryfikować&lt;/li&gt;
&lt;li&gt;Stwierdzenie zostało zweryfikowane w konkretnej dacie&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;anatomia-rejestru-ground-truths&quot;&gt;Anatomia rejestru Ground Truths&lt;/h2&gt;
&lt;p&gt;Ground truths żyją w rejestrach YAML pod &lt;code&gt;ai_assets/reference/ground_truths.yaml&lt;/code&gt;. Każdy pakiet lub domena może mieć swój własny rejestr. Struktura wygląda tak:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva Ground Truths&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Foundational constraints and principles that guide Maguyva.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  owner&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;maguyva&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  render&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    include_statuses&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    show_deprecated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    groups&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Product Principles&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;brand&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Architecture &amp;amp; Boundaries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architecture&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;boundaries&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;cqrs&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;statements&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-001&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva is read-only with respect to user repositories...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rejestr zawiera metadane o samej kolekcji, konfigurację renderowania na potrzeby generowania dokumentacji oraz same stwierdzenia. Każde stwierdzenie podlega ścisłemu schematowi walidowanemu przez modele Pydantic:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GroundTruthStatement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;BaseModel&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    status: GTStatus  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# current, tentative, deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    source: GTSource &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # claude-code, orkestra, discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    scope: GTScope  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# platform, package, domain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    statement: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    rationale: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    evidence: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    last_verified: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    tags: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    agent_guidance: AgentGuidance &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;jak-agenci-uzyskują-dostęp-do-ground-truths&quot;&gt;Jak agenci uzyskują dostęp do Ground Truths&lt;/h2&gt;
&lt;p&gt;Ground truths są udostępniane przez wiele kanałów:&lt;/p&gt;
&lt;h3 id=&quot;1-wyrenderowana-dokumentacja&quot;&gt;1. Wyrenderowana dokumentacja&lt;/h3&gt;
&lt;p&gt;Polecenie &lt;code&gt;orkestra sync&lt;/code&gt; przekształca rejestry YAML w czytelny markdown:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generuje to pliki &lt;code&gt;GROUND_TRUTHS.md&lt;/code&gt;, które są włączane do kontekstu agenta. Wyrenderowany wynik grupuje stwierdzenia według statusu i kategorii:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;## Current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Product Principles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Maguyva is read-only with respect to user repositories... (GT-MAG-001)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Design tool responses for AI agents first... (GT-MAG-009)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Architecture &amp;amp; Boundaries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Pipeline and Maguyva boundaries are intentional... (GT-MAG-006)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-wyszukiwanie-cli&quot;&gt;2. Wyszukiwanie CLI&lt;/h3&gt;
&lt;p&gt;Agenci z dostępem do powłoki mogą przeszukiwać ground truths programowo:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;embedding&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --tag&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; security&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; current&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Funkcja wyszukiwania ocenia dopasowania w wielu polach z ważoną trafnością:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; truth_fields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(gt: GroundTruthStatement) -&amp;gt; list[FieldSpec]:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.id]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;statement&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.statement]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.rationale] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; gt.rationale &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.tags &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;evidence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.evidence &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-kompozycja-kontekstu&quot;&gt;3. Kompozycja kontekstu&lt;/h3&gt;
&lt;p&gt;Gdy agenci są renderowani z definicji YAML, ich kontekst może odwoływać się do rejestrów ground truths:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context_composition&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  domain_knowledge&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/maguyva/ai_assets/reference/ground_truths.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To zapewnia, że odpowiednie ground truths są wczytane, zanim agent zacznie pracę.&lt;/p&gt;
&lt;h2 id=&quot;kategorie-ground-truths&quot;&gt;Kategorie Ground Truths&lt;/h2&gt;
&lt;p&gt;Patrząc na nasze rejestry, ground truths skupiają się w kilku wzorcach:&lt;/p&gt;
&lt;h3 id=&quot;zasady-produktowe&quot;&gt;Zasady produktowe&lt;/h3&gt;
&lt;p&gt;Ograniczenia dotyczące tego, czym produkt jest, a czym nie jest:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Maguyva korzysta z repozytoriów użytkowników wyłącznie w trybie odczytu; jedynym zasobem, którego nie da się odbudować, jest płatny cache embeddingów.” (GT-MAG-001)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;granice-architektury&quot;&gt;Granice architektury&lt;/h3&gt;
&lt;p&gt;Gdzie leżą odpowiedzialności i dlaczego:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Granice pipeline’u i Maguyva są celowe: pipeline jest wielokrotnego użytku, Maguyva przechowuje logikę specyficzną dla kodu, a CQRS oddziela operacje zapisu etapów potoku od operacji odczytu serwera.” (GT-MAG-006)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;zasady-antyhalucynacyjne&quot;&gt;Zasady antyhalucynacyjne&lt;/h3&gt;
&lt;p&gt;Jednoznaczne reguły zapewniające deterministyczne kontrakty narzędzi zamiast opierania ich na domysłach:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Rozmyte dopasowywanie symboli jest opcjonalne (opt-in) przez &lt;code&gt;find_similar=true&lt;/code&gt;. Domyślne zachowanie zwraca puste wyniki dla nieistniejących symboli; &lt;code&gt;exact_match=true&lt;/code&gt; wymusza ścisłe dopasowywanie i wyłącza wszystkie rozmyte fallbacki.” (GT-MAG-015)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;kontrole-jakości&quot;&gt;Kontrole jakości&lt;/h3&gt;
&lt;p&gt;Standardy, które muszą być utrzymywane:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Zmiany we współdzielonej infrastrukturze (post_filters.py, ekstraktory relacji, współdzielone handlery) MUSZĄ być zwalidowane względem WSZYSTKICH obsługiwanych języków przez generowanie pełnego manifestu przed commitem. Walidacja jednego języka jest niewystarczająca dla kodu współdzielonego.” (GT-MAG-036)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;wzorce-kodu&quot;&gt;Wzorce kodu&lt;/h3&gt;
&lt;p&gt;Wymagania implementacyjne:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Używaj &lt;code&gt;asyncio.to_thread()&lt;/code&gt; do pracy obciążającej CPU w kontekstach asynchronicznych; przestarzały wzorzec &lt;code&gt;loop.run_in_executor()&lt;/code&gt; nie powinien być używany w nowym kodzie.” (GT-MAG-018)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;cykl-życia-ground-truth&quot;&gt;Cykl życia Ground Truth&lt;/h2&gt;
&lt;p&gt;Ground truths nie są statyczne. Ewoluują przez zdefiniowany cykl życia:&lt;/p&gt;
&lt;h3 id=&quot;tymczasowy&quot;&gt;Tymczasowy&lt;/h3&gt;
&lt;p&gt;Proponowana prawda w trakcie oceny. Stwierdzenie jest zapisane, ale może się zmienić:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-044&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    get_file with include_metadata=false may still return metadata in the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    response because middleware may re-inject it for AI agent disambiguation.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;aktualny&quot;&gt;Aktualny&lt;/h3&gt;
&lt;p&gt;Zweryfikowana prawda, której agenci muszą przestrzegać. Dowody zostały zwalidowane:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-017&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/supabase.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;przestarzały&quot;&gt;Przestarzały&lt;/h3&gt;
&lt;p&gt;Prawda, która już nie ma zastosowania. Zachowana jako odniesienie historyczne ze wskazaniem tego, co ją zastąpiło:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-099&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  superseded_by&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  notes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Replaced when we moved to explicit matching behavior&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;dlaczego-nie-zwykła-dokumentacja&quot;&gt;Dlaczego nie zwykła dokumentacja?&lt;/h2&gt;
&lt;p&gt;Dokumentacja służy innemu celowi. Wyjaśnia. Uczy. Może być niejednoznaczna, może używać kwalifikatorów takich jak „ogólnie” czy „zazwyczaj”.&lt;/p&gt;
&lt;p&gt;Ground truths nie mogą być niejednoznaczne. To są asercje. Albo mają zastosowanie, albo nie.&lt;/p&gt;
&lt;p&gt;Rozważ tę różnicę:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentacja:&lt;/strong&gt; „API zazwyczaj zwraca puste wyniki, gdy symbol nie zostanie znaleziony, choć w niektórych konfiguracjach może być włączone rozmyte dopasowywanie.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ground Truth:&lt;/strong&gt; „Domyślne zachowanie zwraca puste wyniki dla nieistniejących symboli; &lt;code&gt;exact_match=true&lt;/code&gt; wymusza ścisłe dopasowywanie i wyłącza wszystkie rozmyte fallbacki.”&lt;/p&gt;
&lt;p&gt;Pierwsze jest pomocne dla ludzi uczących się systemu. Drugie jest gotowe do działania dla agentów podejmujących decyzje.&lt;/p&gt;
&lt;h2 id=&quot;wskazówki-dla-agenta-rób-i-unikaj&quot;&gt;Wskazówki dla agenta: rób i unikaj&lt;/h2&gt;
&lt;p&gt;Niektóre ground truths zawierają jednoznaczne wskazówki dla agenta:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  agent_guidance&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Fix extraction bugs in YAML config, handlers, or tree-sitter queries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add test cases at the layer where the fix lives&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    avoid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Adding validator filters to mask production bugs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Creating test-only workarounds for extraction issues&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To usuwa niejednoznaczność. Agent czytający to wie nie tylko, co jest prawdą, ale jakie działania ta prawda implikuje.&lt;/p&gt;
&lt;h2 id=&quot;weryfikacja-i-utrzymanie&quot;&gt;Weryfikacja i utrzymanie&lt;/h2&gt;
&lt;p&gt;Ground truths wymagają utrzymania. Śledzimy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;last_verified&lt;/strong&gt;: kiedy ktoś potwierdził, że stwierdzenie nadal obowiązuje&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;evidence&lt;/strong&gt;: pliki, które potwierdzają stwierdzenie (można sprawdzić ich istnienie)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;source&lt;/strong&gt;: skąd pochodzi prawda (inspekcja CLI, przegląd architektury, wnioski po incydencie)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ground truth z nieaktualnymi datami weryfikacji lub zerwanymi linkami do dowodów jest sygnałem do zbadania. Albo prawda wciąż jest ważna i wymaga ponownej weryfikacji, albo rzeczywistość się zmieniła i prawda wymaga aktualizacji.&lt;/p&gt;
&lt;h2 id=&quot;prawdziwe-przykłady-z-produkcji&quot;&gt;Prawdziwe przykłady z produkcji&lt;/h2&gt;
&lt;h3 id=&quot;granica-bezpieczeństwa&quot;&gt;Granica bezpieczeństwa&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-014&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Maguyva queries are search patterns, not executable code.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    SQL injection prevention is handled by PostgREST parameterization;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    application-layer SQL keyword blocking must never be added.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Blocking SQL keywords breaks legitimate code search. Users search FOR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    code containing patterns like &apos;DROP TABLE&apos;, they don&apos;t execute them.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten ground truth zapobiega klasie błędnie pojętych „usprawnień bezpieczeństwa”, które zepsułyby produkt.&lt;/p&gt;
&lt;h3 id=&quot;dokładność-w-czasie-ekstrakcji&quot;&gt;Dokładność w czasie ekstrakcji&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (YAML config, handlers, queries), never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Validator filters only run during tests. They can hide extractor bugs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    while production responses remain wrong.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To wynikło z bolesnego doświadczenia. Agenci łatali zawodzące pakiety językowe, dodając filtry działające tylko w walidatorze, które sprawiały, że harness testowy wyglądał na bardziej zielony, podczas gdy działający ekstraktor Maguyva wciąż emitował złe krawędzie. Ta zasada zmusza naprawy z powrotem na prawdziwą ścieżkę: konfigurację YAML, zapytania lub handlery.&lt;/p&gt;
&lt;h3 id=&quot;filtrowanie-wielopoziomowe&quot;&gt;Filtrowanie wielopoziomowe&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-023&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Language engine uses three-tier filtering: external_method_patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (builtins/stdlib), allowlists (legitimate idioms), and expected_call_targets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (validation-time deduplication). Each tier serves a distinct purpose.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Conflating filter purposes leads to either over-filtering (missing real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    relationships) or under-filtering (noise).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To zapobiega dodawaniu przez agentów filtrów w niewłaściwym miejscu — częstemu błędowi, który powodował regresje dokładności.&lt;/p&gt;
&lt;h2 id=&quot;integracja-z-systemem-orkiestracji&quot;&gt;Integracja z systemem orkiestracji&lt;/h2&gt;
&lt;p&gt;Ground truths to jedna warstwa szerszego systemu kontekstu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Decyzje architektoniczne (ADR)&lt;/strong&gt; - Zapisują, dlaczego wybraliśmy podejście A zamiast B&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ground Truths&lt;/strong&gt; - Stwierdzają, co jest jednoznacznie prawdziwe teraz&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wzorce domenowe&lt;/strong&gt; - Opisują, jak robić rzeczy poprawnie&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Antywzorce&lt;/strong&gt; - Opisują, czego unikać i dlaczego&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Agent pracujący w systemie ma dostęp do wszystkich czterech. Ground truths dostarczają faktycznej kotwicy, decyzje wyjaśniają historię, wzorce prowadzą implementację, a antywzorce ostrzegają przed pułapkami.&lt;/p&gt;
&lt;h2 id=&quot;mierzenie-wpływu&quot;&gt;Mierzenie wpływu&lt;/h2&gt;
&lt;p&gt;Od czasu wprowadzenia ground truths zaobserwowaliśmy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mniej cykli „napraw halucynowaną naprawę”&lt;/li&gt;
&lt;li&gt;Bardziej pewne decyzje agentów, gdy fakty są jasne&lt;/li&gt;
&lt;li&gt;Lepsze przeglądy PR, ponieważ oczekiwania są jednoznaczne&lt;/li&gt;
&lt;li&gt;Skrócony czas wdrażania nowych agentów (i ludzi)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inwestycja w utrzymanie ground truths zwraca się w postaci mniejszej liczby debugowań i wyraźniejszych granic systemu.&lt;/p&gt;
&lt;h2 id=&quot;jak-zacząć&quot;&gt;Jak zacząć&lt;/h2&gt;
&lt;p&gt;Aby dodać ground truth do swojego systemu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Utwórz &lt;code&gt;ground_truths.yaml&lt;/code&gt; w katalogu &lt;code&gt;ai_assets/reference/&lt;/code&gt; swojego pakietu&lt;/li&gt;
&lt;li&gt;Zdefiniuj metadane i konfigurację renderowania&lt;/li&gt;
&lt;li&gt;Dodaj stwierdzenia zgodnie ze schematem&lt;/li&gt;
&lt;li&gt;Uruchom &lt;code&gt;uv run orkestra sync&lt;/code&gt;, aby wygenerować dokumentację&lt;/li&gt;
&lt;li&gt;Uwzględnij rejestr w kompozycji kontekstu agenta&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Zacznij od faktów, które powodują najwięcej zamieszania, lub ograniczeń, które są najczęściej łamane. To Twoje najbardziej wartościowe ground truths.&lt;/p&gt;
&lt;h2 id=&quot;podsumowanie&quot;&gt;Podsumowanie&lt;/h2&gt;
&lt;p&gt;Agenci AI będą halucynować. To ich natura. Ale możemy tworzyć środowiska, w których halucynacja jest ograniczona, w których pewne fakty są nienegocjowalne, w których agenci mogą sprawdzić swoje założenia względem zweryfikowanej rzeczywistości.&lt;/p&gt;
&lt;p&gt;Ground truths nie są kompletnym rozwiązaniem. Wymagają utrzymania. Mogą stać się nieaktualne. Dodają narzut do procesu rozwoju.&lt;/p&gt;
&lt;p&gt;Ale dają coś wartościowego: wspólne słownictwo faktów, któremu ludzie i agenci mogą zaufać. W świecie, w którym agenci coraz częściej uczestniczą w tworzeniu oprogramowania, ten wspólny fundament staje się niezbędny.&lt;/p&gt;
&lt;p&gt;Alternatywą są niekończące się cykle, w których agenci z pełnym przekonaniem popełniają błędy, a ludzie je korygują. Ground truths przerywają ten cykl, czyniąc korekty jednoznacznymi i trwałymi.&lt;/p&gt;
&lt;p&gt;Twoi agenci zasługują na to, by wiedzieć, co jest prawdą. Powiedz im.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Grounding</category></item><item><title>Orkestra: orkiestracja agentów AI na dużą skalę</title><link>https://maguyva.ai/pl/blog/orkestra-agent-orchestration</link><guid isPermaLink="true">https://maguyva.ai/pl/blog/orkestra-agent-orchestration</guid><description>Jeden orkiestrator kieruje pracę do wyspecjalizowanych agentów AI, z których każdy ma odrębne umiejętności i pamięć. Jak Orkestra koordynuje 46 agentów i 466 skilli na produkcji.</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Liczby w tym wpisie odzwierciedlają system w momencie publikacji (styczeń 2026). Aktualne dane znajdziesz na naszej &lt;a href=&quot;https://maguyva.ai/pl/team&quot;&gt;stronie zespołu&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gdy zaczęliśmy budować z Claude Code, natrafiliśmy na problem, z którym prędzej czy później mierzy się każdy zespół korzystający z asystentów kodujących AI: jeden agent nie potrafi robić wszystkiego dobrze.&lt;/p&gt;
&lt;p&gt;Możesz podpowiedzieć agentowi, żeby był specjalistą od baz danych. Albo audytorem bezpieczeństwa. Albo inżynierem frontendu. Ale w chwili, gdy poprosisz go, żeby był tymi trzema naraz, jakość spada. Kontekst się rozmywa. Instrukcje wchodzą w konflikt. Agent staje się generalistą, który jest przeciętny we wszystkim.&lt;/p&gt;
&lt;p&gt;Więc zbudowaliśmy Orkestrę.&lt;/p&gt;
&lt;h2 id=&quot;czym-jest-orkestra&quot;&gt;Czym jest Orkestra?&lt;/h2&gt;
&lt;p&gt;Orkestra to system orkiestracji agentów dla Claude Code i podobnych narzędzi AI do kodowania. Koordynuje wielu wyspecjalizowanych agentów, każdego z odrębną ekspertyzą, pod jednym orkiestratorem, który kieruje pracę do właściwego specjalisty.&lt;/p&gt;
&lt;p&gt;Pomyśl o tym jak o agencji zatrudnienia dla agentów AI. Orkiestrator otrzymuje zadanie, identyfikuje, który specjalista powinien się nim zająć, i deleguje z właściwym kontekstem. Gdy praca jest gotowa, wyniki wracają do orkiestratora do syntezy.&lt;/p&gt;
&lt;p&gt;Liczby mówią same za siebie:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komponent&lt;/th&gt;
&lt;th&gt;Liczba&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agenci specjalistyczni&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skille wielokrotnego użytku&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Archetypy tożsamości&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sposoby myślenia (mindsety)&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Style komunikacji&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domeny wiedzy&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;system-charakteru-dd-dla-agentów&quot;&gt;System charakteru: D&amp;amp;D dla agentów&lt;/h2&gt;
&lt;p&gt;Kluczową obserwacją stojącą za Orkestrą jest to, że zachowanie agenta wyłania się z trzech komponowalnych prymitywów:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tożsamość&lt;/strong&gt; definiuje, &lt;em&gt;czym&lt;/em&gt; jest agent. Architekt projektuje struktury systemowe. Debugger śledzi awarie do ich pierwotnych przyczyn. Strażnik pilnuje zgodności z zasadami i przestrzegania granic bezpieczeństwa. Mamy 27 archetypów tożsamości, które można mieszać.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mindset&lt;/strong&gt; definiuje, &lt;em&gt;jak&lt;/em&gt; agent myśli. Analityczny mindset zakotwicza twierdzenia w dowodach i kwantyfikuje niepewność. Sceptyczny mindset kwestionuje założenia i szuka dowodów obalających. Eksploracyjny mindset akceptuje niejednoznaczność i próbuje wielu podejść.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Styl&lt;/strong&gt; definiuje, &lt;em&gt;jak&lt;/em&gt; agent się komunikuje. Techniczny styl zawiera dokładne wartości i odwołuje się do konkretnych plików. Zwięzły styl obcina ozdobniki i zaczyna od odpowiedzi. Dyplomatyczny styl równoważy szczerość z taktem.&lt;/p&gt;
&lt;p&gt;Agent łączy te prymitywy:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# architecture-advisor.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;identity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;knowledge-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;strategist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;mindset&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;analytical&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;concise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ta kompozycja tworzy agenta, który projektuje systemy (architekt), łączy wiedzę między domenami (knowledge-architect), wyznacza kierunek strategiczny (strategist), myśli w kategoriach dowodów i danych (analityczny) i komunikuje się bez ozdobników (zwięzły).&lt;/p&gt;
&lt;p&gt;Moc tkwi w eksplozji kombinatorycznej. 27 tożsamości razy 11 mindsetów razy 10 stylów daje prawie 3000 możliwych osobowości agentów. Ale definiujesz tylko te kombinacje, które mają znaczenie dla Twojej pracy.&lt;/p&gt;
&lt;h2 id=&quot;skille-wielokrotnego-użytku-moduły-zdolności&quot;&gt;Skille: wielokrotnego użytku moduły zdolności&lt;/h2&gt;
&lt;p&gt;Skille to wiedza i przepływy pracy, które agenci mogą wywoływać. Podlegają wielopoziomowemu systemowi opartemu na zakresie:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Poziom&lt;/th&gt;
&lt;th&gt;Nazwa&lt;/th&gt;
&lt;th&gt;Zakres&lt;/th&gt;
&lt;th&gt;Przykład&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K0&lt;/td&gt;
&lt;td&gt;Fundamenty&lt;/td&gt;
&lt;td&gt;Uniwersalna metodologia&lt;/td&gt;
&lt;td&gt;Dyscyplina test-first, ukończenie oparte na dowodach&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K1&lt;/td&gt;
&lt;td&gt;Tożsamości&lt;/td&gt;
&lt;td&gt;Przepływy pracy oparte na roli&lt;/td&gt;
&lt;td&gt;Standardy interfejsu CLI, playbook wydajności&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K2&lt;/td&gt;
&lt;td&gt;Domeny&lt;/td&gt;
&lt;td&gt;Wiedza specyficzna dla domeny&lt;/td&gt;
&lt;td&gt;Wzorce migracji baz danych, walidacja uwierzytelniania&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K3&lt;/td&gt;
&lt;td&gt;Stosy&lt;/td&gt;
&lt;td&gt;Specyficzne dla technologii&lt;/td&gt;
&lt;td&gt;Wdrożenie Cloudflare, operacje Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K4&lt;/td&gt;
&lt;td&gt;Projekt&lt;/td&gt;
&lt;td&gt;Tylko ta baza kodu&lt;/td&gt;
&lt;td&gt;Przepływy pracy i konwencje specyficzne dla projektu&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Skille są ładowane leniwie (lazy-loaded). Agent widzi nazwy i opisy skilli przy starcie, ale pełna treść skilla wczytuje się dopiero po wywołaniu. To utrzymuje kontekst szczupły, jednocześnie czyniąc setki skilli odkrywalnymi.&lt;/p&gt;
&lt;p&gt;Każdy skill zawiera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jasne warunki wyzwalające („Użyj podczas migracji schematów bazy danych”)&lt;/li&gt;
&lt;li&gt;Wskazówki krok po kroku&lt;/li&gt;
&lt;li&gt;Dozwolone narzędzia dla przepływu pracy&lt;/li&gt;
&lt;li&gt;Kryteria sukcesu i ścieżki odzyskiwania po niepowodzeniu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;466 skilli w naszym rejestrze obejmuje wszystko, od izolacji git worktree po przepływy pracy badań webowych po walidację kondycji wdrożenia.&lt;/p&gt;
&lt;h2 id=&quot;dlaczego-orkiestracja-ma-znaczenie&quot;&gt;Dlaczego orkiestracja ma znaczenie&lt;/h2&gt;
&lt;p&gt;Architektury jednoagentowe szybko trafiają na ściany:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rozmycie kontekstu.&lt;/strong&gt; Okno kontekstu 200 tys. tokenów brzmi ogromnie, dopóki nie wczytasz schematów baz danych, dokumentacji API, fixture’ów testowych i wiedzy domenowej. Specjaliści mogą pracować z celowanym kontekstem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Konflikty instrukcji.&lt;/strong&gt; Powiedzenie agentowi „bądź dokładny, ale szybki” i „zweryfikuj wszystko, ale nie przeinżynieruj” tworzy napięcie. Specjaliści rozwiązują to, mając jasny zakres.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Głębia ekspertyzy.&lt;/strong&gt; Agent generalista wie trochę o wszystkim. Agent specjalista, złożony z właściwej tożsamości i skilli, zna swoją domenę głęboko.&lt;/p&gt;
&lt;p&gt;Orkestra implementuje płaską orkiestrację: jeden orkiestrator koordynuje wielu specjalistów. Specjaliści nie mogą tworzyć sub-specjalistów. To zapobiega eksplozji złożoności, jednocześnie umożliwiając pracę równoległą.&lt;/p&gt;
&lt;p&gt;Orkiestrator ma dostęp do 2,2 miliona tokenów efektywnej pojemności: własne okno 200 tys. plus 10 równoczesnych subagentów po 200 tys. każdy. Praca, która wyczerpałaby jednego agenta, przebiega swobodnie w całej flocie.&lt;/p&gt;
&lt;h2 id=&quot;pipeline-renderowania&quot;&gt;Pipeline renderowania&lt;/h2&gt;
&lt;p&gt;Definicje agentów żyją w YAML. Claude Code czyta Markdown. Orkestra niweluje tę różnicę deterministycznym pipeline’em renderowania:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;YAML Registries → Jinja Templates → .claude/agents/*.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Operatorzy edytują źródło YAML. Uruchamiają &lt;code&gt;orkestra sync&lt;/code&gt;. Wyrenderowany Markdown pojawia się w &lt;code&gt;.claude/agents/&lt;/code&gt;. Claude Code odbiera zmiany.&lt;/p&gt;
&lt;p&gt;To rozdzielenie służy różnym odbiorcom:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Źródło YAML&lt;/strong&gt; zawiera metadane cyklu życia, tagi, reguły walidacji i notatki o wycofaniu na potrzeby narzędzi&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wyrenderowany Markdown&lt;/strong&gt; zawiera tylko to, czego potrzebuje model: opis, narzędzia, skille i wskazówki behawioralne&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pipeline składa tożsamości, mindsety, style i skille w jeden spójny prompt. Agent architekt-analityczny-zwięzły otrzymuje bardzo inny prompt systemowy niż agent debugger-sceptyczny-techniczny, nawet jeśli dzielą część leżących u podstaw skilli.&lt;/p&gt;
&lt;h2 id=&quot;wiedza-domenowa-wzorzec-czterech-plików&quot;&gt;Wiedza domenowa: wzorzec czterech plików&lt;/h2&gt;
&lt;p&gt;Każda domena wiedzy podąża za spójną strukturą:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  decisions.md      # Key choices, rationale, consequences&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  patterns.md       # Step-by-step guidance and examples&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  anti-patterns.md  # Failure modes and remediation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  evolution.md      # Dated log of changes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ta struktura służy wczytywaniu kontekstu agenta. Agent pracujący nad uwierzytelnianiem wczytuje &lt;code&gt;authentication/patterns.md&lt;/code&gt; dla wskazówek i &lt;code&gt;authentication/anti-patterns.md&lt;/code&gt;, by unikać znanych pułapek. Objętość plików jest dobrana tak, aby efektywnie wczytywać kontekst: treść jest wystarczająco konkretna, by być użyteczna, i wystarczająco wyczerpująca, by być wiarygodna.&lt;/p&gt;
&lt;p&gt;Utrzymujemy 21 domen najwyższego poziomu, w tym analitykę, uwierzytelnianie, data science, infrastrukturę, uczenie maszynowe, wydajność, bezpieczeństwo i inne. Każda domena może mieć poddomeny dla drobniejszej granularności.&lt;/p&gt;
&lt;h2 id=&quot;wartości-system-operacyjny&quot;&gt;Wartości: system operacyjny&lt;/h2&gt;
&lt;p&gt;Wszyscy agenci dzielą bazową warstwę wartości, która definiuje, jak działają:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prostota przede wszystkim.&lt;/strong&gt; Używaj najprostszego rozwiązania, które działa. Dodawaj złożoność tylko wtedy, gdy jest uzasadniona.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Napraw pierwotne przyczyny.&lt;/strong&gt; Nigdy nie maskuj awarii obejściami. Jeśli pipeline zawodzi, debuguj pipeline. Jeśli test zawodzi, napraw kod albo test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Oparte na dowodach.&lt;/strong&gt; Oznaczaj twierdzenia jako „zweryfikowane” (z benchmarkami) lub „szacowane” (z założeniami). Wykryty wzorzec nie równa się potwierdzonemu problemowi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ekonomia kontekstu.&lt;/strong&gt; Narzędzia MCP kosztują 0,1% kontekstu. Odczyty plików kosztują po 2% każdy. Zastosuj ekspertyzę domenową, zanim zaczniesz eksplorować kod.&lt;/p&gt;
&lt;p&gt;Te wartości propagują się do każdego specjalisty przez pipeline renderowania. Agent nie może ich obejść przez kompozycję.&lt;/p&gt;
&lt;h2 id=&quot;cli-płaszczyzna-kontroli&quot;&gt;CLI: płaszczyzna kontroli&lt;/h2&gt;
&lt;p&gt;Orkestra dostarczana jest z CLI do zarządzania ekosystemem agentów:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Discovery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; database-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Rendering&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;authentication&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CLI jest źródłem prawdy o tym, jakie agenty istnieją, jakie mają skille i czy system jest zdrowy. Uruchamia walidację przed synchronizacją, żeby wcześnie wychwycić problemy.&lt;/p&gt;
&lt;h2 id=&quot;rozważania-dotyczące-open-source&quot;&gt;Rozważania dotyczące open source&lt;/h2&gt;
&lt;p&gt;Zbudowaliśmy Orkestrę, żeby rozwiązać nasz własny problem: koordynację agentów AI na dużą skalę dla złożonej bazy kodu. Wzorce, które odkryliśmy, nie są specyficzne dla naszej domeny.&lt;/p&gt;
&lt;p&gt;System kompozycji charakteru (tożsamość + mindset + styl) ma zastosowanie do każdego zespołu definiującego osobowości agentów.&lt;/p&gt;
&lt;p&gt;System poziomów skilli (K0-K4) dostarcza modelu mentalnego do organizowania wielokrotnego użytku zdolności według zakresu.&lt;/p&gt;
&lt;p&gt;Wzorzec pipeline’u renderowania (źródło YAML + szablony + wygenerowane artefakty) rozdziela odpowiedzialności między narzędzia a konsumpcję przez model.&lt;/p&gt;
&lt;p&gt;Płaski model orkiestracji (jeden koordynator, wielu specjalistów) unika eksplozji złożoności, jednocześnie umożliwiając równoległość.&lt;/p&gt;
&lt;p&gt;Czy Orkestra stanie się open source, zależy od tego, czy te wzorce mają wartość dla innych budujących z Claude Code. Jeśli trafiasz na te same ściany, które opisaliśmy, ta architektura może pomóc.&lt;/p&gt;
&lt;h2 id=&quot;czego-się-nauczyliśmy&quot;&gt;Czego się nauczyliśmy&lt;/h2&gt;
&lt;p&gt;Budowanie Orkestry nauczyło nas, że orkiestracja nie polega na czynieniu agentów mądrzejszymi. Polega na czynieniu ich bardziej skupionymi.&lt;/p&gt;
&lt;p&gt;Pojedynczy agent z idealnymi instrukcjami wciąż wyczerpuje kontekst. Pojedynczy agent ze wszystkimi skillami wciąż gubi się w tym, który zastosować. Pojedynczy agent próbujący być wszystkim produkuje przeciętne wyniki wszędzie.&lt;/p&gt;
&lt;p&gt;Czterdziestu specjalistów, z których każdy jest doskonały w swojej domenie, koordynowanych przez orkiestratora, który wie, kiedy delegować: tak dostarczamy oprogramowanie.&lt;/p&gt;
&lt;p&gt;Liczby mają mniejsze znaczenie niż architektura. Możesz potrzebować pięciu agentów albo pięćdziesięciu. Zasada pozostaje: kompozycja ponad zdolność, specjalizacja ponad generalizację, koordynacja ponad indywidualne bohaterstwo.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Orkestra napędza ekosystem agentów stojący za Maguyva, naszą platformą inteligencji kodu. Chcesz dowiedzieć się więcej? Skontaktuj się z zespołem.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Open Source</category></item></channel></rss>