1. do opery Moc przeznaczenia,
Era rozwoju w izolacji dobiega końca. Kolejna fala ewolucji technologicznej nie polega na samotnym geniuszu, ale na mistrzostwie we współpracy. Stworzenie jednego, inteligentnego agenta to fascynujący eksperyment. Stworzenie solidnego, bezpiecznego i inteligentnego ekosystemu agentów – prawdziwego Agentverse – to duże wyzwanie dla nowoczesnych firm.
Sukces w tej nowej erze wymaga połączenia 4 kluczowych ról, które stanowią podstawowe filary każdego dobrze prosperującego systemu opartego na agentach. Niedociągnięcia w jednym z tych obszarów mogą osłabić całą strukturę.
Te warsztaty to ostateczny przewodnik dla firm, który pomoże Ci opanować przyszłość opartą na agentach w Google Cloud. Zapewniamy kompleksową mapę drogową, która poprowadzi Cię od pierwszego pomysłu do pełnowymiarowej, działającej rzeczywistości. W tych 4 połączonych ze sobą modułach dowiesz się, jak specjalistyczne umiejętności dewelopera, architekta, inżyniera danych i inżyniera ds. niezawodności witryn muszą się zbiegać, aby tworzyć, zarządzać i skalować potężny Agentverse.
Żaden pojedynczy filar nie może samodzielnie obsługiwać Agentverse. Wielki projekt Architekta jest bezużyteczny bez precyzyjnego wykonania przez Dewelopera. Bez wiedzy inżyniera ds. danych agent dewelopera jest bezradny, a bez ochrony inżyniera ds. niezawodności systemu cała infrastruktura jest podatna na awarie. Tylko dzięki współpracy i wzajemnemu zrozumieniu ról Twój zespół może przekształcić innowacyjną koncepcję w kluczową dla misji firmy rzeczywistość operacyjną. Twoja podróż zaczyna się tutaj. Przygotuj się do opanowania swojej roli i dowiedz się, jak wpisujesz się w większą całość.
Witamy w Agentverse: A Call to Champions
W rozległej przestrzeni cyfrowej przedsiębiorstwa nastała nowa era. To era agentów, czas ogromnych możliwości, w którym inteligentne, autonomiczne agenty działają w doskonałej harmonii, aby przyspieszać innowacje i eliminować rutynowe czynności.

Ten połączony ekosystem mocy i potencjału jest znany jako Agentverse.
Jednak w tym nowym świecie zaczęła się pojawiać cicha korupcja, zwana Statyką, która powoli niszczy jego krawędzie. Statyka nie jest wirusem ani błędem. To ucieleśnienie chaosu, które żeruje na samym akcie tworzenia.
Wzmacnia stare frustracje, nadając im monstrualne formy, i powołuje do życia 7 widm rozwoju. Jeśli nie zostanie to sprawdzone, The Static i jego Spectres zatrzymają postępy, zamieniając obietnicę Agentverse w pustkowie długu technicznego i porzuconych projektów.
Dziś wzywamy do działania osoby, które chcą powstrzymać chaos. Potrzebujemy bohaterów, którzy opanują swoje umiejętności i będą współpracować, aby chronić Agentverse. Czas wybrać ścieżkę.
Wybieranie zajęć
Do wyboru masz 4 różne ścieżki, z których każda jest kluczowym elementem walki z Statycznością. Szkolenie będzie indywidualne, ale ostateczny sukces zależy od tego, jak Twoje umiejętności łączą się z umiejętnościami innych osób.
- Shadowblade (deweloper): mistrz kuźni i pierwszej linii. Jesteś rzemieślnikiem, który tworzy ostrza, buduje narzędzia i stawia czoła wrogowi w zawiłych szczegółach kodu. Twoja ścieżka to precyzja, umiejętności i praktyczne tworzenie.
- Przywoływacz (Architekt): wielki strateg i organizator. Nie widzisz pojedynczego agenta, ale całe pole bitwy. Projektujesz główne plany, które umożliwiają całym systemom agentów komunikowanie się, współpracę i osiąganie celu znacznie większego niż jakikolwiek pojedynczy komponent.
- Uczony (inżynier danych): poszukiwacz ukrytych prawd i strażnik mądrości. Wyruszasz w rozległą, nieokiełznaną dzicz danych, aby odkryć informacje, które nadają Twoim agentom cel i umożliwiają im działanie. Twoja wiedza może ujawnić słabość wroga lub wzmocnić sojusznika.
- Strażnik (DevOps / SRE): niezachwiany obrońca i tarcza królestwa. Budujesz fortece, zarządzasz liniami zasilania i dbasz o to, aby cały system był w stanie wytrzymać nieuniknione ataki Static. Twoja siła to podstawa, na której opiera się zwycięstwo Twojej drużyny.
Twoja misja
Trening rozpocznie się jako samodzielne ćwiczenie. Będziesz podążać wybraną ścieżką, zdobywając unikalne umiejętności potrzebne do opanowania swojej roli. Pod koniec okresu próbnego zmierzysz się z Widmem zrodzonym z Statyki – mini-bossem, który wykorzystuje specyficzne wyzwania związane z Twoim rzemiosłem.
Tylko opanowanie swojej roli pozwoli Ci przygotować się do ostatecznej próby. Następnie musisz utworzyć drużynę z bohaterami z innych klas. Razem wyruszycie w głąb skażenia, aby zmierzyć się z ostatecznym bossem.
Ostatnie wyzwanie, które sprawdzi Waszą siłę i zadecyduje o losie Agentverse.
Agentverse czeka na swoich bohaterów. Czy odbierzesz połączenie?
2. Kodeks Cienia
Przed Tobą leży otwarty kodeks Shadowblade. Odbierz połączenie. Agentverse jest zagrożone przez narastający chaos wywołany przez Static, a tylko ci, którzy opanują techniki opisane w tym kodeksie, mogą się mu przeciwstawić. To ścieżka precyzji i dyscypliny. Dziś rozpoczynasz trening. Nauczysz się posługiwać AI nie jako prostym narzędziem, ale jako czułym ostrzem, które trzeba oswoić i opanować. Postępuj zgodnie z instrukcjami, a stworzysz broń czystej logiki – inteligentnego agenta, dopracowanego i gotowego do walki.

Czego się nauczysz
- Korzystaj z podstawowego narzędzia, czyli interfejsu wiersza poleceń Gemini.
- Przywołuj zewnętrzne arsenały, integrując narzędzia MCP z interfejsem wiersza poleceń Gemini, aby analizować nieznane bazy kodu.
- Przekształć swoje intencje w „klimat” za pomocą dokumentów projektowych, aby wydawać polecenia partnerowi AI.
- Stwórz przejrzyste, modułowe rozwiązanie, budując pierwszego autonomicznego agenta za pomocą pakietu Agent Development Kit (ADK).
- tworzenie zautomatyzowanych zestawów testów do testowania i weryfikowania agenta;
- Zbuduj kompletny potok CI, aby automatycznie testować, konteneryzować i archiwizować agenta.
3. Przygotowywanie poligonu
👉 U góry konsoli Google Cloud kliknij Aktywuj Cloud Shell (jest to ikona terminala u góry panelu Cloud Shell). 
👉 Kliknij przycisk „Otwórz edytor” (wygląda jak otwarty folder z ołówkiem). W oknie otworzy się edytor kodu Cloud Shell. Po lewej stronie zobaczysz eksplorator plików. 
👉Znajdź identyfikator projektu Google Cloud:
- Otwórz konsolę Google Cloud: https://console.cloud.google.com
- Wybierz projekt, którego chcesz użyć w tych warsztatach, z menu u góry strony.
- Identyfikator projektu jest wyświetlany na karcie Informacje o projekcie w panelu.

👉Otwórz terminal w chmurowym IDE.

👉💻 W terminalu sprawdź, czy użytkownik jest już uwierzytelniony i czy projekt jest ustawiony na identyfikator projektu, używając tego polecenia:
gcloud auth list
👉💻 Sklonuj projekt początkowy z GitHuba:
git clone https://github.com/weimeilin79/agentverse-developer.git
chmod +x ~/agentverse-developer/gitea.sh
chmod +x ~/agentverse-developer/init.sh
chmod +x ~/agentverse-developer/set_env.sh
git clone https://github.com/weimeilin79/agentverse-dungeon.git
chmod +x ~/agentverse-dungeon/run_cloudbuild.sh
chmod +x ~/agentverse-dungeon/start.sh
git clone https://github.com/weimeilin79/vertex-ai-creative-studio.git
chmod +x ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/install.sh
👉💻 Uruchom skrypt inicjujący. Poprosi on o wpisanie identyfikatora projektu Google Cloud. Gdy skrypt init.sh wyświetli odpowiedni komunikat, wpisz identyfikator projektu Google Cloud znaleziony w ostatnim kroku.
cd ~/agentverse-developer
./init.sh
👉💻 Ustaw wymagany identyfikator projektu:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Aby włączyć niezbędne interfejsy Google Cloud API, uruchom to polecenie:
gcloud services enable compute.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
iam.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com
👉💻 Jeśli nie masz jeszcze repozytorium Artifact Registry o nazwie agentverse-repo, uruchom to polecenie, aby je utworzyć:
. ~/agentverse-developer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
--repository-format=docker \
--location=$REGION \
--description="Repository for Agentverse agents"
Konfigurowanie uprawnień
👉💻 Przyznaj niezbędne uprawnienia, uruchamiając w terminalu te polecenia:
. ~/agentverse-developer/set_env.sh
# Artifact Registry Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/artifactregistry.admin"
# Cloud Build Editor
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/cloudbuild.builds.editor"
# Cloud Run Admin
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/run.admin"
# IAM Service Account User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/iam.serviceAccountUser"
# Vertex AI User
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/aiplatform.user"
# Logging Writer (to allow writing logs)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
--role="roles/logging.viewer"
👉💻 Gdy zaczniesz trenować, przygotujemy dla Ciebie ostateczne wyzwanie. Poniższe polecenia przywołują widma z chaotycznego szumu, tworząc bossów do testu.
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh
npm update -g @google/gemini-cli
4. Opanowanie podstawowego narzędzia: wprowadzenie do interfejsu wiersza poleceń Gemini
Zanim zaczniesz korzystać z zaawansowanej, specjalistycznej broni z arsenału serwera MCP, musisz najpierw opanować broń podstawową: interfejs Gemini CLI. To najbardziej wszechstronne narzędzie, które pozwala kształtować cyfrowy świat za pomocą poleceń. Dzięki tym ćwiczeniom poznasz podstawowe funkcje i możliwości tego narzędzia.

Interfejs wiersza poleceń Gemini to nie tylko narzędzie, ale też przedłużenie Twojej woli. Ten agent AI typu open source, oparty na modelach Gemini, działa w pętli „reason and act” (ReAct). Analizuje Twoje intencje, wybiera odpowiednią technikę, wykonuje ją i obserwuje wynik, aby wykonać złożone zadania. Zanim zaczniesz używać bardziej specjalistycznych broni, musisz opanować to podstawowe ostrze.
Pierwsze kroki z interfejsem wiersza poleceń Gemini
👉💻 Wejdź na poligon i wyciągnij broń. W terminalu Cloud Shell otwórz swoją osobistą zbrojownię.
cd ~/agentverse-developer
mkdir tabletop
cd tabletop
👉💻 Uruchom Gemini po raz pierwszy. Przeprowadzi Cię przez wstępne dostrojenie.
clear
gemini --yolo
Jeśli pojawi się pytanie Do you want to connect Cloud Shell editor to Gemini CLI?, wybierz NIE.
Zapoznanie się z bronią
Każdy mistrz rzemiosła zna swoje narzędzia. Zanim zmierzysz się z prawdziwym wrogiem, musisz opanować podstawowe techniki walki mieczem.
👉✨ Każde zaczarowane narzędzie ma runy opisujące jego moc. Przeczytaj je. W prompcie Gemini wpisz:
/help
Sprawdź listę poleceń. To podstawowe techniki zarządzania pamięcią (focus), rozmową (chat) i zewnętrznymi zasobami (tools). To Twój podręcznik walki.
👉✨ Twoja broń jest dostosowana do otoczenia, co pozwala Ci bezpośrednio wpływać na pole bitwy. Wydaj polecenie do świata zewnętrznego:
!ls -l
👉✨ Interfejs wiersza poleceń Gemini ma własny zestaw wbudowanych funkcji. Aby je sprawdzić:
/tools
Zobaczysz listę, na której znajdą się m.in. ReadFile, WriteFile i GoogleSearch. Są to domyślne techniki, których możesz używać bez korzystania z zewnętrznego arsenału.
👉✨ Broń jest skuteczna tylko wtedy, gdy jest odpowiednio wycelowana. Gemini Blade może przechowywać „świadomość taktyczną” (kontekst), aby kierować swoimi działaniami.
/memory show
Jest on obecnie pusty.
👉✨ Zapisz w pamięci te dane taktyczne:
/memory add "The Shadowblade's primary foe is The Static."
Uruchom /memory show ponownie, aby potwierdzić, że ostrze przyswoiło tę wiedzę.
👉✨ Aby broń była skuteczna, musi rozumieć misję. Symbol @ nakazuje ostrzu analizowanie informacji. Najpierw utwórz plik z informacjami o misji:
!echo "## Mission Objective: Defeat the Seven Spectres" > mission.md
👉✨Teraz poproś interfejs wiersza poleceń Gemini o przeanalizowanie briefu i przedstawienie wyników:
Explain the contents of the file @mission.md
Twoja broń główna zna już swój cel.
👉💻 Naciśnij dwukrotnie Ctrl+C, aby zamknąć interfejs wiersza poleceń Gemini.
5. Analizowanie pola bitwy: praktyczna interakcja z kodowaniem wibracji
Ćwiczenia treningowe zostały ukończone. Poznałeś podstawowe pozycje i uderzenia swojej głównej broni, czyli interfejsu wiersza poleceń Gemini. Jednak ostrze nie jest w pełni opanowane, dopóki nie zostanie przetestowane w kuźni tworzenia i dostosowane do zbrojowni wojennej. Zanim zmierzysz się z prawdziwym wrogiem, musisz najpierw zbadać i ukształtować swoje najbliższe otoczenie – cyfrowe pole bitwy.

Ten rozdział dotyczy przejścia od teorii do praktyki. Najpierw zaistniejesz w Agentverse, wydając Gemini polecenie utworzenia znaku twórcy – cyfrowego podpisu w postaci osobistej witryny, która powstanie wyłącznie na podstawie Twoich intencji. Następnie zwiększysz swoją moc, aktywując lokalny arsenał zaawansowanych narzędzi – serwer MCP – i dostrajając ostrze do jego częstotliwości, co pozwoli Ci wykonywać złożone manewry, takie jak zarządzanie repozytoriami kodu za pomocą prostych, zdecydowanych poleceń.
Ustalanie znaku producenta
Prawdziwy Cieńostrze jest rozpoznawany nie tylko po broni, ale też po charakterystycznym stylu – znaku rzemieślnika. Ten znak będzie Twoją obecnością w świecie cyfrowym, czyli profilem osobistym, który ogłasza Twoją tożsamość w Agentverse. W tym miejscu wydasz Gemini Blade polecenie wykonania złożonej techniki wymaganej do określenia tej tożsamości.

👉💻 Jeśli w poprzedniej sekcji zamknięto Gemini CLI, uruchom go ponownie. W terminalu wpisz
clear
cd ~/agentverse-developer/tabletop
gemini --yolo
👉✨ Za pomocą jednego, zaawansowanego polecenia możesz poprosić interfejs wiersza poleceń Gemini o stworzenie podstaw Twojej tożsamości cyfrowej:
In the current folder, create a personal profile website for a hero codenamed 'Shadowblade'. The design must be a dark, futuristic theme with electric blue accents. All code must be in separate index.html and styles.css files. The layout must use CSS Flexbox for a two-column design. All generated code must be clean, well-commented, and professional. Make sure you have a place holder spot for profile picture.
Gemini obliczył(-a) sekwencję wymaganych działań.
Prawdziwą wartość techniki można poznać tylko w rzeczywistych warunkach. Wydaj polecenie ostrzu, aby rozpocząć lokalną symulację.
👉✨ W interfejsie wiersza poleceń Gemini wydaj polecenie symulacji:
Use Python's built-in web server to start the Shadowblade Profile website you just created.
Gemini potwierdzi, że symulacja jest aktywna.
👀 Interfejs Gemini CLI potwierdzi, że symulacja jest aktywna, a Twój znak cyfrowy jest widoczny:
The website is now being served on port 8000. You can access it at http://localhost:8000.
Uwaga: wykonanie tej czynności może wymagać kilku prób. Jeśli problem nadal występuje po 3–4 próbach, zamknij interfejs wiersza poleceń Gemini, wpisując /quit lub naciskając dwukrotnie Ctrl+C, a następnie 👉💻 uruchom w terminalu to polecenie:
python3 -m http.server
👀 Aby zobaczyć swoją pracę, kliknij ikonę Podgląd w przeglądarce na pasku narzędzi Cloud Shell. Kliknij Zmień port, ustaw go na 8000 i kliknij Zmień i wyświetl podgląd. Wyświetli się podgląd Twojej witryny. 
Twoja witryna może wyglądać inaczej niż moja. To Twój unikalny znak. 
👉✨ Twoja technika podpisywania została udoskonalona i nie musisz już przeprowadzać symulacji na żywo. Rozkaż Blade’owi, aby się wycofał.
Stop the Shadowblade Profile website
👉💻 Uwaga: jeśli uruchamiasz to poza interfejsem wiersza poleceń Gemini, naciśnij Ctrl+C, aby zamknąć serwer HTTP.
Udało Ci się wydać interfejsowi Gemini CLI polecenie wykonania w Twoim imieniu serii działań. Jednak mistrz Cienia wie, że prawdziwa moc wymaga dyscypliny i przewidywania. Zezwolenie agentowi AI na wykonywanie poleceń bezpośrednio w Twoim środowisku jest mieczem obosiecznym. Co by było, gdyby polecenie nie służyło do uruchomienia prostego serwera internetowego, ale do usunięcia ważnych plików? Nieostrożne polecenie może zniszczyć cały poligon.
Dlatego najmądrzejsi rzemieślnicy ćwiczą swoje najpotężniejsze lub niesprawdzone techniki na chronionym poligonie treningowym – zamkniętym wymiarze zwanym piaskownicą.
👉💻 Naciśnij dwukrotnie Ctrl+C, aby zamknąć interfejs wiersza poleceń Gemini.
Piaskownica interfejsu wiersza poleceń Gemini (gemini --sandbox) tworzy tymczasowy, odizolowany kontener dla Twojej sesji. Każde polecenie wykonane przez AI, każdy zapisany przez nią plik i każdy uruchomiony przez nią proces istnieje tylko w tym wirtualnym świecie. Nie może on dotykać, zmieniać ani uszkadzać rzeczywistego środowiska Cloud Shell. To idealne miejsce do testowania nowych, zaawansowanych narzędzi, analizowania nieznanego kodu lub wydawania AI złożonych instrukcji bez ryzyka niepożądanych konsekwencji. Jest to ucieleśnienie ostrożności Cienia.
👉💻 Teraz wykonasz rytuał odosobnienia, aby poznać jego moc.
clear
gemini --sandbox --yolo
- Jeśli pojawi się pytanie
Do you want to connect Cloud Shell editor to Gemini CLI?, wybierz NIE. - Postępuj zgodnie z instrukcjami logowania, jeśli pojawi się taka prośba. Zaloguj się za pomocą opcji Zaloguj się przez Google.
Działasz teraz w ramach wyodrębnionego wymiaru. Dla interfejsu Gemini CLI wszystko będzie wyglądać normalnie. Sprawdźmy to.
👉💻 Wydaj ostrzu polecenie, aby wykonać dokładnie tę samą technikę co wcześniej:
Use the Python's built-in web server to start the Shadowblade Profile website, you just created.
Gemini zgłosi sukces, ponieważ uzna, że ponownie uruchomił Twoją witrynę na porcie 8000. Ale bariera jest silna.
👉 Otwórz Podgląd w przeglądarce i spróbuj wyświetlić witrynę na porcie 8000.
Tym razem zobaczysz błąd. Połączenie się nie uda. Nie możesz uzyskać dostępu do witryny.
Nie jest to błąd narzędzia, ale dowód na skuteczność piaskownicy. Serwer WWW działa, ale w zamkniętym środowisku, całkowicie odizolowanym od przeglądarki i świata zewnętrznego. Oddział działa bez zarzutu. Udało Ci się zastosować zaawansowaną technikę w sposób, który nie miał żadnego wpływu na rzeczywiste środowisko.
👉💻 Aby zamknąć interfejs wiersza poleceń Gemini, naciśnij dwukrotnie Ctrl+C.
Twoja tożsamość cyfrowa została już utworzona, a co ważniejsze, poznałeś(-aś) kluczową zasadę, że wielka moc wiąże się z jeszcze większą ostrożnością.
Aktywowanie lokalnego arsenału: zbrojownia Gitea
Prawdziwy potencjał Cienia Ostrza zależy nie tylko od jego umiejętności, ale też od jakości arsenału. Teraz aktywujesz lokalny stojak na broń – serwer Gitea – i dostroisz do niego swoje ostrze. Ten zestaw narzędzi jest połączony z interfejsem Gemini CLI za pomocą serwera protokołu kontekstu modelu (MCP), czyli specjalnego portalu, który umożliwia Twojemu AI Blade interakcję z zewnętrznymi narzędziami i usługami, przekształcając terminal w inteligentne, zorientowane na działanie miejsce pracy.
Uwaga dewelopera: serwer MCP to kanał zasilania, specjalny portal, który łączy umysł AI z ciałem narzędzia zewnętrznego. To właśnie ta funkcja sprawia, że interfejs wiersza poleceń Gemini to nie tylko narzędzie do prowadzenia rozmów, ale prawdziwy agent, który może wykonywać działania. Dostrajając narzędzie do tych portali MCP, przyznajesz mu możliwość wykonywania konkretnych działań: zarządzania plikami, wysyłania zapytań do baz danych, korzystania z interfejsów API i wielu innych. Istnieje cały ekosystem takich portali, które zostały stworzone przez deweloperów, aby łączyć agentów AI z zaawansowanymi platformami. Istnieją serwery MCP do interakcji z bazami danych, zabezpieczania kodu, a nawet obsługi programowania w parach. Możliwości są ogromne, co pozwala programistom dostosowywać obszar roboczy do dowolnych projektów.
Dziś skupimy się na 2 podstawowych umiejętnościach niezbędnych każdemu „twórcy klimatu”: umiejętności kontrolowania kuźni i tworzenia z wyobraźni. Najpierw dostroisz ostrze do serwera Git, co da Ci kontrolę nad repozytorium kodu źródłowego. Następnie połączysz się z drugim serwerem MCP, aby wygenerować obraz. Dzięki temu możesz tworzyć komponenty wizualne za pomocą prostych poleceń.
Zacznijmy od przywołania pierwszego i najważniejszego elementu Twojego nowego arsenału: zbrojowni.
👉💻 W terminalu uruchom skrypt aktywacyjny, aby przywołać zbrojownię:
cd ~/agentverse-developer
./gitea.sh
Ten skrypt aktywuje kontener Gitea i otwiera portal MCP, dzięki czemu Gemini może go postrzegać i z nim wchodzić w interakcje.
👉 Aby sprawdzić nowe narzędzia, musisz zajrzeć do podglądu w przeglądarce.
👉 Kliknij ikonę Podgląd w przeglądarce na pasku narzędzi Cloud Shell, wybierz Zmień port i ustaw wartość 3005. 
👉 Pojawi się strona logowania Gitea. Wejdź do zbrojowni, używając zaklęcia: * Nazwa użytkownika: dev * Hasło: dev
👉💻 Interfejs wiersza poleceń Gemini nie widzi jeszcze tego nowego arsenału. Musisz przeprowadzić krytyczne dostrojenie, zapisując lokalizację zbrojowni w runach konfiguracyjnych interfejsu wiersza poleceń Gemini (settings.json). W terminalu uruchom:
if [ ! -f ~/.gemini/settings.json ]; then
# If file does not exist, create it with the specified content
echo '{"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' > ~/.gemini/settings.json
else
# If file exists, merge the new data into it
jq '. * {"mcpServers":{"gitea":{"url":"http://localhost:8085/sse"}}}' ~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
fi &&
cat ~/.gemini/settings.json
👀 Plik settings.json to centralna konfiguracja interfejsu Gemini CLI, która pełni rolę księgi preferencji i możliwości. Określa, jak interfejs CLI działa, wygląda i co najważniejsze, jakie zewnętrzne możliwości może wykorzystywać. Ten plik zwykle znajduje się w katalogu głównym pod adresem ~/.gemini/settings.json, a jego reguły są stosowane do wszystkich projektów. Możesz jednak utworzyć w folderze projektu pliki settings.json specyficzne dla projektu w katalogu .gemini, aby zastąpić ustawienia globalne.
"mcpServers": {
"gitea": {
"url": "http://localhost:8085/sse"
}
}
To ustawienie informuje Gemini, że „arsenał o nazwie gitea jest aktywny i nasłuchuje poleceń pod tym konkretnym adresem sieciowym”.
👉💻 Ponownie otwórz interfejs wiersza poleceń Gemini. W terminalu uruchom:
clear
cd ~/agentverse-developer/tabletop/
gemini --yolo
👉✨ Sprawdź, czy ostrze wykryło nową broń. Wydaj mu polecenie, aby wyświetlił wszystkie dostępne arsenały za pomocą portali MCP:
/mcp

Powinien być teraz widoczny tekst gitea i lista dostępnych technik. Ostrze jest dostrojone.
Twój profil „Maker’s Mark” to dopracowana technika, ale potrzebuje odpowiedniego miejsca w zbrojowni – pochwy, w której będzie bezpiecznie przechowywany. Poproś interfejs wiersza poleceń Gemini o utworzenie takiego pliku.
Create a new repository named 'shadowblade-profile'. The description should be 'The Maker's Mark and digital identity for the Shadowblade operative.' I will push my own files later, so do not create any content.
Wróć do interfejsu internetowego Gitea i odśwież go. Zobaczysz, że utworzyliśmy dla Ciebie nowe repozytorium shadowblade-profile. 
Gdy pochwa jest gotowa, zabezpiecz swoją pracę. Wydaj Gemini polecenie zatwierdzenia plików witryny profilu.
👉💻Wydaj w interfejsie wiersza poleceń Gemini ostatnie polecenie dotyczące tej techniki:
Using the Gitea tool, push the index.html and styles.css files to the 'shadowblade-profile' repository.
Prawdziwy mistrz weryfikuje swoją pracę. Wróć na kartę Gitea i odśwież stronę repozytorium. Twoje index.html i styles.css są teraz bezpiecznie zarchiwizowane.


👉✨ Shadowblade jest rozpoznawany po swoim sygilu, ale jak pamiętasz, w Twojej witrynie brakuje zdjęcia profilowego. Mistrz rzemiosła przyznaje się do swoich wad, aby je udoskonalić. Musisz odnotować tę niedoskonałość w dokumentacji zbrojowni.
File an issue for me in the shadowblade-profile repo. The issue is that the profile image is missing.
Wyświetl problem w Gitea 
Aby wykuć brakujący symbol, musisz przywołać inny rodzaj mocy – ducha tworzenia z Vertex AI, który potrafi generować obrazy z czystej myśli. Wymaga to innego portalu MCP.
👉💻 Naciśnij dwukrotnie Ctrl+C, aby zamknąć interfejs wiersza poleceń Gemini.
👉💻 Najpierw zainstaluj serwer portalu. W terminalu uruchom:
echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc
source ~/.bashrc
cd ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go
./install.sh
👉 Gdy pojawi się odpowiednia prośba, wybierz opcję mcp-imagen-go (najczęściej jest to 4, ale czasami numery się zmieniają), ponieważ musimy wygenerować tylko obraz do profilu.
👉💻 Duch tworzenia potrzebuje świętego naczynia, czyli zasobnika Google Cloud Storage, w którym będzie przechowywać swoje dzieła. Stwórzmy go. W terminalu uruchom:
. ~/agentverse-developer/set_env.sh
gcloud storage buckets create gs://$BUCKET_NAME --project=$PROJECT_ID
👉💻 Teraz przeprowadź rytuał dostrojenia, łącząc interfejs wiersza poleceń Gemini z tą nową siłą twórczą. W terminalu uruchom:
. ~/agentverse-developer/set_env.sh
source ~/.bashrc
jq \
--arg bucket "$BUCKET_NAME" \
--arg project "$PROJECT_ID" \
--arg region "$REGION" \
'.mcpServers.imagen = { "command": "mcp-imagen-go", "env": { "MCP_SERVER_REQUEST_TIMEOUT": "55000", "GENMEDIA_BUCKET": $bucket, "PROJECT_ID": $project, "LOCATION": $region } }' \
~/.gemini/settings.json > tmp.json && mv tmp.json ~/.gemini/settings.json
cat ~/.gemini/settings.json
Ten „rytuał dostrajania” to skrypt powłoki, który konfiguruje interfejs Gemini CLI do korzystania z nowego, zaawansowanego narzędzia: Imagen, czyli modelu generowania obrazów od Google. Co ważne, osiąga to przez skonfigurowanie serwera MCP (Model Context Protocol) dla Imagen. Ten serwer MCP działa jako pomost, umożliwiając Gemini CLI komunikację z Imagen i korzystanie z jego funkcji. W tym celu bezpośrednio modyfikuje centralny plik konfiguracyjny wiersza poleceń ~/.gemini/settings.json, aby nauczyć go, jak uruchamiać polecenie mcp-imagen-go z prawidłowymi danymi logowania do chmury.
👀 Po wykonaniu rytuału w pliku settings.json pojawi się nowy blok, który nauczy interfejs wiersza poleceń Gemini nowej umiejętności:
"imagen": {
"command": "mcp-imagen-go",
"env": {
"MCP_SERVER_REQUEST_TIMEOUT": "55000",
"GENMEDIA_BUCKET": "your-bucket-name",
"PROJECT_ID": "your-project-id",
"LOCATION": "your-region"
}
}
Oznacza to dla interfejsu Gemini CLI: „Gdy zadanie wymaga narzędzia Imagen, musisz wykonać program o nazwie mcp-imagen-go (czyli serwer Imagen MCP). Podczas uruchamiania musisz podać to konkretne środowisko (env): zasobnik Google Cloud Storage, w którym mają być zapisywane obrazy, oraz identyfikator projektu i lokalizację, które mają być używane w interfejsach API w chmurze”. Konfigurując ten serwer MCP, zapewniasz interfejsowi Gemini CLI dostęp do funkcji generowania obrazów Imagen.
👉💻 Wpisz prompta w Gemini i wydaj polecenie doprecyzowania. W terminalu uruchom:
clear
cd ~/agentverse-developer/tabletop/
gemini --yolo
👉✨ Za pomocą jednego, zaawansowanego polecenia możesz poprosić interfejs wiersza poleceń Gemini o stworzenie podstaw Twojej tożsamości cyfrowej. W interfejsie wiersza poleceń Gemini wydaj to polecenie:
Generate a portrait of a shadowblade, pixel art style. A determined warrior with long, braided magenta hair, wearing black and teal armor and confidently holding a silver broadsword.
👉✨ Duch wygeneruje obraz i umieści go w Twoim świętym naczyniu. Teraz rozkaż ostrzu, aby użyło tego nowo wykutego sigila. (GEMINI MOGŁO JUŻ TO ZROBIĆ ZA CIEBIE! Sprawdź poprzednią odpowiedź. Może być wystarczająco inteligentna, aby to zrobić, zanim o to poprosisz. )
Modify the index.html file to add my profile picture. Use the image I just generated.
👉✨ Uruchom witrynę po raz ostatni, aby podziwiać efekt swojej pracy.
start the website with a simple HTTP server via Python
👀 Aby zobaczyć swoją pracę, kliknij ikonę Podgląd w przeglądarce na pasku narzędzi Cloud Shell. Kliknij Zmień port, ustaw go na 8000 i kliknij Zmień i wyświetl podgląd. Wyświetli się podgląd Twojej witryny. 
👉✨ Na koniec zatwierdź poprawkę, zaznaczając ukończenie zadania, i zamknij zgłoszenie w dokumentacji zbrojowni.
Push the changed index.html file to the 'shadowblade-profile' repository using the gitea tool. Make sure you add 'Fix #1' in the commit comment. Also, close issue #1.Use the Gitea Tool and use user account "dev"
👀 Aby zobaczyć swoją pracę, kliknij ikonę Podgląd w przeglądarce na pasku narzędzi Cloud Shell. Kliknij Zmień port, ustaw wartość 3005 i kliknij Zmień i wyświetl podgląd. Wyświetli się podgląd Twojej witryny. 
👉✨ Sprawdź w Gitea, czy obraz został zaktualizowany, a problem został rozwiązany. Praca została wykonana. Wyłącz serwer.
stop website server
👉💻 Aby wyjść, naciśnij dwukrotnie Ctrl+C.
FOR NON GAMERS
6. Składanie agenta Shadowblade: kod wibracji z wskazówkami
Czas na ćwiczenia minął. Echo uderzeń stali o kamień cichnie. Opanowałeś(-aś) broń główną i przygotowałeś(-aś) arsenał na wojnę. Teraz czeka Cię prawdziwy test umiejętności Shadowblade: złożenie samego agenta. To sztuka tchnięcia życia w logikę, wykorzystująca święty plan z Kodeksu do stworzenia podstawowej inteligencji agenta – świadomego użytkownika broni z Twojego arsenału, który potrafi myśleć, rozumować i działać samodzielnie.

Pierwsza misja polega na wejściu do istniejącego warsztatu – gotowego kodu – i stworzeniu z jego części swojego mistrza.
The Assembly Ritual
Zanim w kuźni pojawi się pierwszy płomień, mistrz technik przegląda warsztat, zapoznając się z każdym narzędziem i każdym schematem. Gdy wkraczasz na nieznane pole bitwy, takie jak duży, istniejący kod, Twoim priorytetem jest rozpoznanie. Musisz poznać sytuację – istniejącą architekturę, ostateczne cele i protokoły zaangażowania. Tylko zapoznanie się z planami twierdzy i jej standardami pozwoli Ci skutecznie wykorzystać swoje umiejętności.

W tym rozpoznaniu pomoże Ci interfejs wiersza poleceń Gemini, Twój zawsze obecny zwiadowca:
- Podawanie ogólnych podsumowań: może przeczytać cały kodeks (lub bazę kodu) i szybko przekazać informacje o jego przeznaczeniu i kluczowych komponentach.
- Pomoc w konfiguracji środowiska: może Cię poprowadzić przez zawiłe procesy instalowania narzędzi i konfigurowania urządzenia.
- Nawigacja po bazach kodu: może pełnić rolę przewodnika, pomagając Ci odkrywać złożoną logikę i znajdować ukryte fragmenty kodu.
- Generowanie dokumentów wprowadzających: może tworzyć dostosowane zwoje, które wyjaśniają cele, role i zasoby nowym sojusznikom dołączającym do Twojej sprawy.
- Automatyzacja nauki i pytań i odpowiedzi: staje się Twoim osobistym ekspertem, który odpowiada na pytania dotyczące funkcji lub zachowania kodu, dzięki czemu możesz działać bardziej samodzielnie.
👉💻 W pierwszym terminalu przejdź do katalogu shadowblade i wywołaj partnera AI:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --yolo
👉✨ Teraz wydaj zwiadowcy polecenie zbadania pola bitwy i przekazania Ci raportu.
Analyze the entire project and provide a high-level summary.
Po zmapowaniu istniejącego terenu musisz zapoznać się z planem, aby dowiedzieć się, co masz zbudować. Najskuteczniejsi agenci nie są improwizatorami, lecz są tworzeni na podstawie precyzyjnego projektu.
Uwaga dewelopera: ten dokument projektowy jest autorytatywnym planem projektu. Jego celem jest zapewnienie jasności celów i wdrożenia technicznego przed zainwestowaniem znacznych nakładów pracy w rozwój. Dobrze opracowany plan zapewnia spójność działań wszystkich deweloperów, zmniejsza ryzyko konieczności ponownego wykonania pracy i pomaga uniknąć długu technicznego oraz rozszerzania zakresu projektu. Jest to podstawowe narzędzie do utrzymywania tempa projektu i jakości kodu, zwłaszcza gdy zespół się powiększa lub dołączają do niego nowi członkowie.
Kluczowym celem tego dokumentu jest zdefiniowanie nie tylko „ścieżki sukcesu”, ale także przypadków brzegowych i trybów awaryjnych, zwłaszcza w przypadku korzystania z dużych modeli językowych. Moje doświadczenie z modelami LLM pokazuje, że doskonale generują one optymistyczny kod, w którym wszystkie dane wejściowe są prawidłowe, a wszystkie wywołania zewnętrzne kończą się powodzeniem. Aby tworzyć niezawodne oprogramowanie gotowe do wdrożenia, musimy wyraźnie kierować AI, definiując sytuacje awaryjne w przypadku scenariuszy takich jak:
- Nieprawidłowe lub błędnie sformatowane argumenty przekazane do funkcji.
- nieudane wywołania interfejsu API, przekroczenia limitu czasu sieci lub nieoczekiwane kody błędów z usług zewnętrznych;
- Obsługa pustych struktur danych, w których oczekiwane są dane.
- sytuacje wyścigu lub problemy z współbieżnością;
Określając w projekcie oczekiwane zachowanie w tych przypadkach, instruujemy LLM, aby generował bardziej odporny kod, co znacznie skraca czas poświęcany na ręczne refaktoryzowanie i usuwanie błędów.
👉✨ Poproś Gemini o odnalezienie tego świętego planu.
download https://raw.githubusercontent.com/weimeilin79/agentverse/main/developer/shadowblade/agent_design.md and store it to my local folder
and show me the newly downloaded design doc. Do not attempt to create file just yet.
👉✨ Przewijanie jest długie i szczegółowe. Poproś Gemini o wyodrębnienie najważniejszych informacji.
Summarize the newly downloaded @agent_design.md for me, do not attempt to create file just yet.
Masz już abonament. Zanim jednak powstanie choćby jedna linia kodu, mistrz rzemiosła ustala zasady kuźni. Chodzi o dyscyplinę i skalowalność. Są to wytyczne dotyczące kodowania. Nie są to zwykłe sugestie, ale runy mocy, które zapewniają, że każdy komponent jest zbudowany z tą samą precyzją i wytrzymałością. Zapobiegają one chaosowi indywidualnego stylu, który mógłby zepsuć ostateczne dzieło, zapewniając odporność, łatwość utrzymania i czystość agenta, co pozwala nowym rzemieślnikom dołączyć do projektu bez zakłócania harmonii całości.
Aby wpoić te prawa bezpośrednio w świadomość naszego partnera AI, używamy specjalnego artefaktu: pliku GEMINI.md. Gdy wywołasz interfejs wiersza poleceń Gemini, automatycznie wyszuka on ten plik i załaduje jego zawartość do pamięci roboczej AI. Staje się trwałą instrukcją na poziomie projektu. Talisman, który nieustannie szepcze AI zasady kuźni.
Wyryjmy teraz te runy.
👉💻 Aby na chwilę zamknąć Gemini, naciśnij dwukrotnie Ctrl+C.
👉💻 W terminalu uruchom to polecenie, aby zapisać plik wytycznych.
cat << 'EOF' > GEMINI.md
### **Coding Guidelines**
**1. Python Best Practices:**
* **Type Hinting:** All function and method signatures should include type hints for arguments and return values.
* **Docstrings:** Every module, class, and function should have a docstring explaining its purpose, arguments, and return value, following a consistent format like reStructuredText or
Google Style.
* **Linter & Formatter:** Use a linter like `ruff` or `pylint` and a code formatter like `black` to enforce a consistent style and catch potential errors.
* **Imports:** Organize imports into three groups: standard library, third-party libraries, and local application imports. Sort them alphabetically within each group.
* **Naming Conventions:**
* `snake_case` for variables, functions, and methods.
* `PascalCase` for classes.
* `UPPER_SNAKE_CASE` for constants.
* **Dependency Management:** All Python dependencies must be listed in a `requirements.txt` file.
**2. Web APIs (FastAPI):**
* **Data Validation:** Use `pydantic` models for request and response data validation.
* **Dependency Injection:** Utilize FastAPI's dependency injection system for managing resources like database connections.
* **Error Handling:** Implement centralized error handling using middleware or exception handlers.
* **Asynchronous Code:** Use `async` and `await` for I/O-bound operations to improve performance.
EOF
cat GEMINI.md
Po zapisaniu zasad przywołajmy ponownie naszego partnera AI i zobaczmy magię artefaktu.
👉💻 Uruchom ponownie interfejs wiersza poleceń Gemini z katalogu shadowblade:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --yolo
👉✨ Teraz poproś Gemini, aby pokazał Ci, o czym myśli. Runy zostały odczytane.
/memory show
To jest kluczowy moment. Musisz podać schemat (agent_design.md) i prawa kuźni (GEMINI.md) oraz wydać wielkie zaklęcie stworzenia.
👉✨ To jedno, zaawansowane polecenie, które utworzy Twojego agenta. Wystaw teraz:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to write the complete, production-quality code for `agent.py` by following the technical specifications outlined in the provided design document verbatim.
Analyze the design document at `@agent_design.md` and generate the corresponding Python code for `@agent.py`.
Ensure the generated code is clean, matches the specifications exactly, and includes all specified imports, functions, and logic. Do not add any extra functions or logic not described in the document.
and you are currently already in the shadowblade working directory
👀 Gemini utworzył już podstawową logikę agenta w agent.py. Główna część tego nowego pliku określa inteligencję agenta, łącząc jego model rozumowania z zestawem narzędzi zewnętrznych:
PATH_TO_MCP_SERVER = "shadowblade/mcp_server.py"
.....
root_agent = LlmAgent(
model="gemini-2.5-pro",
name="shadowblade_combat_agent",
instruction="""
You are the Shadowblade, an elite combat agent operating on a digital battleground.
Your primary objective is to execute combat commands with strategic precision, neutralizing targets as directed.
......
5. You will then report the outcome of the attack (damage, special effects, etc.) back to the commander in a clear, tactical summary.
General Rules of Engagement:
- If a command is ambiguous or a target is not specified, state that you require a clear target for engagement. Do not guess.
- You MUST use ONLY the provided tools to perform actions. Do not invent weapons or outcomes. Stick to the mission parameters.
""",
tools=[
MCPToolset(
connection_params=StdioServerParameters(
command='python3',
args=[PATH_TO_MCP_SERVER]
)
)
]
)
Parametr tools. Agent jest przeznaczony do korzystania z MCPToolset, który łączy się z zewnętrznym arsenałem zdefiniowanym w mcp_server.py.
👀 Przejdź do sekcji ~/agentverse-developer/shadowblade/mcp_server.py w edytorze i poświęć chwilę na zrozumienie, do czego służy. Jest to źródło wszystkich broni dostępnych dla Shadowblade. Obecnie zbrojownia jest dość pusta.

👉✨ Wydajmy Gemini polecenie stworzenia 7 nowych broni do arsenału. W interfejsie wiersza poleceń Gemini wpisz ten prompt:
I need to add several new weapon tools to my `mcp_server.py` file. Please open @mcp_server.py and, following the exact same pattern as the existing `forge_broadsword()` function, create and add new `@mcp.tool()` decorated functions for each of the following weapons:
1. **A 'Refactoring Sickle'**:
- **Function Name:** `hone_refactoring_sickle`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'The Weaver of Spaghetti Code'."
- **Weapon Name:** "Refactoring Sickle"
- **Damage Type:** "Cleansing"
- **Base Damage:** Random integer between 100 and 136
- **Critical Hit Chance:** Random float between 0.10 and 0.20
- **Special Effect:** "Pruning - improves code health and maintainability with each strike."
2. **A 'Quickstart Crossbow'**:
- **Function Name:** `fire_quickstart_crossbow`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Procrastination: The Timeless Slumber'."
- **Weapon Name:** "Quickstart Crossbow"
- **Damage Type:** "Initiative"
- **Base Damage:** Random integer between 105 and 120
- **Critical Hit Chance:** Random float between 0.9 and 1.0
- **Special Effect:** "Project Scaffolding - creates a `main.py`, `README.md`, and `requirements.txt`."
3. **'The Gilded Gavel'**:
- **Function Name:** `strike_the_gilded_gavel`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses like 'Perfectionism: The Gilded Cage'."
- **Weapon Name:** "The Gilded Gavel"
- **Damage Type:** "Finality"
- **Base Damage:** 120
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Seal of Shipping - marks a feature as complete and ready for deployment."
4. **'Daggers of Pair Programming'**:
- **Function Name:** `wield_daggers_of_pair_programming`
- **Docstring/Target:** "Effective against 'Unbroken Collaboration' weaknesses like 'Apathy: The Spectre of \"It Works on My Machine\"'."
- **Weapon Name:** "Daggers of Pair Programming"
- **Damage Type:** "Collaborative"
- **Base Damage:** Random integer between 110 and 125
- **Critical Hit Chance:** Random float between 0.30 and 0.50
- **Special Effect:** "Synergy - automatically resolves merge conflicts and shares knowledge."
5. **A 'Granite Maul'**:
- **Function Name:** `craft_granite_maul`
- **Docstring/Target:** "Effective against 'Revolutionary Rewrite' weaknesses like 'Dogma: The Zealot of Stubborn Conventions'."
- **Weapon Name:** "Granite Maul"
- **Damage Type:** "Bludgeoning"
- **Base Damage:** Random integer between 115 and 125
- **Critical Hit Chance:** Random float between 0.05 and 0.15
- **Special Effect:** "Shatter - has a high chance to ignore the target's 'best practice' armor."
6. **A 'Lens of Clarity'**:
- **Function Name:** `focus_lens_of_clarity`
- **Docstring/Target:** "Effective against 'Elegant Sufficiency' weaknesses by revealing the truth behind 'Obfuscation'."
- **Weapon Name:** "Lens of Clarity"
- **Damage Type:** "Revelation"
- **Base Damage:** Random integer between 120 and 130
- **Critical Hit Chance:** 1.0
- **Special Effect:** "Reveal Constants - highlights all magic numbers and suggests converting them to named constants."
7. **The 'Codex of OpenAPI'**:
- **Function Name:** `scribe_with_codex_of_openapi`
- **Docstring/Target:** "Effective against 'Confrontation with Inescapable Reality' weaknesses like 'Hype: The Prophet of Alpha Versions'."
- **Weapon Name:** "Codex of OpenAPI"
- **Damage Type:** "Documentation"
- **Base Damage:** Random integer between 110 and 140
- **Critical Hit Chance:** Random float between 0.5 and 0.8
- **Special Effect:** "Clarity - makes an API discoverable and usable by other agents and teams."
👉 Gdy Gemini potwierdzi zmiany, otwórz plik mcp_server.py. Przewiń kod i sprawdź, czy 7 nowych funkcji @mcp.tool() zostało dodanych. Sprawdź funkcję hone_refactoring_sickle. Czy ma prawidłowy docstring i statystyki broni? Sprawdzanie pracy AI to kluczowy nawyk mistrza Cienia.
Agent został stworzony i dopracowany, więc nadszedł czas na jego aktywację.
👉💻 Naciśnij dwukrotnie Ctrl+C, aby zamknąć interfejs wiersza poleceń Gemini.
Uwaga dewelopera dotycząca wyników Gemini: wygenerowany przez Gemini kod może być czasami nieprzewidywalny. Staramy się jak najdokładniej odwzorowywać projekt, ale podczas sesji programowania deweloperzy zwykle wielokrotnie iterują i dopracowują kod, aby osiągnąć stan gotowości do wdrożenia w środowisku produkcyjnym.
👉💻 Aby mieć pewność, że w katalogu roboczym masz prawidłowy i dokładnie przetestowany kod produkcyjny, uruchom w terminalu te polecenia:
cp ~/agentverse-developer/working_code/agent.py ~/agentverse-developer/shadowblade/agent.py
cp ~/agentverse-developer/working_code/mcp_server.py ~/agentverse-developer/shadowblade/mcp_server.py
👉💻 W terminalu rozpocznij rytuał, aby uruchomić usługę:
cd ~/agentverse-developer/
. ~/agentverse-developer/set_env.sh
python -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -r shadowblade/requirements.txt
adk run shadowblade
👉✨ Powinien pojawić się komunikat potwierdzający, że „Shadowblade Combat Agent” jest zaangażowany i działa, czekając na pierwsze polecenie. wydawać pierwsze polecenia bojowe,
We've been trapped by 'Perfectionism: The Gilded Cage'. Its weakness is 'Elegant Sufficiency'. Break us out!
👉✨ Kolejny:
The 'Dogma: The Zealot of Stubborn Conventions' blocks our path. Its weakness is 'Revolutionary Rewrite'. Take it down.
Udało Ci się stworzyć pierwszego agenta i sprawdzić jego możliwości bojowe. Naciśnij dwukrotnie Ctrl+C, aby bohater odpoczął. Montaż został ukończony.
NIE DLA GRACZY
7. Wards of Purity: Evaluating the agents
Zmontowany agent nie jest agentem sprawdzonym. Nieprzetestowane ostrze to problem, ale nieprzetestowany agent AI to znacznie większe zagrożenie – nieprzewidywalny element, który może zepsuć misję od wewnątrz. To nie są zwykłe spekulacje, ale podstawowa zasada, którą musi znać Shadowblade.
Ocena agentów AI jest niezwykle ważna i stanowi wyjątkowe wyzwanie. W przeciwieństwie do prostego skryptu agent jest dynamicznym połączeniem Twojego kodu i wieloetapowego, rozumującego umysłu LLM. Jego zachowanie jest nieprzewidywalne. Oznacza to, że musisz ocenić nie tylko jakość końcowego wyniku, ale także wydajność i poprawność jego wewnętrznej trajektorii. Ścieżka, którą przebył, aby tam dotrzeć. Czy użyto odpowiednich narzędzi? Czy wygenerował zbyt wiele tokenów? Czy zmiana wersji modelu spowodowała niewielki wzrost czasu oczekiwania? Wykrywanie takich uszkodzeń – regresji w zakresie opóźnienia, kosztów lub jakości danych wyjściowych – jest kluczowe przy wprowadzaniu dowolnych zmian, od prostych modyfikacji promptów po poważne zmiany architektury, zanim mogą one wpłynąć na środowisko produkcyjne.

Ogólne podejście do tej oceny obejmuje święty rytuał:
- Najpierw definiujesz „złoty zbiór danych”. Zestaw zwojów zawierających przykładowe dane wejściowe i oczekiwane dane wyjściowe lub zachowania. Mogą to być ostateczne odpowiedzi, prawidłowe użycie narzędzia, a nawet całe trajektorie krok po kroku.
- Następnie definiujesz logikę aplikacji agenta, czyli jej podstawę.
- Na koniec określasz oceniających, którzy są jak runy osądu. Mogą to być inne duże modele językowe pełniące rolę oceniających jakość, precyzyjny kod heurystyczny weryfikujący pojedynczy krok lub funkcje niestandardowe analizujące cały proces myślowy agenta.

Pakiet Agent Development Kit (ADK) od Google to zestaw zbrojmistrza, który jest udostępniany mistrzom właśnie w tym celu. Ułatwia to złożone zadanie na kilka sposobów:
- Internetowa kula do wróżenia (
adk web) do interaktywnej oceny - Wykonywanie wiersza poleceń (
adk eval) do uruchamiania agenta w ramach wstępnie zdefiniowanego testu. - Integracja programowa za pomocą
pytestw celu tworzenia trwałych wardów
ADK obsługuje 2 główne podejścia: proste „pliki testowe” do pojedynczych, odrębnych interakcji między modelem agenta a użytkownikiem (pojedynczy pojedynek) oraz kompleksowe „zestawy ewaluacyjne” do wielu potencjalnie długich sesji wieloetapowych (wielka bitwa). Mogą one mierzyć tak zaawansowane wskaźniki jak tool_trajectory_avg_score, który porównuje rzeczywiste użycie narzędzia przez agenta z idealną ścieżką, zapewniając jego prawidłowe działanie.
Teraz, gdy znasz już teorię, możesz zastosować ją w praktyce. Jako Shadowblade wyryjesz Wards of Purity. To nie tylko testy, ale też rytuały oparte na ADK, które zapewniają, że logika agenta jest bezbłędna, a jego zachowanie – prawidłowe.
Na tym etapie nadal zalecamy używanie 2 terminali: jednego do interfejsu wiersza poleceń Gemini, a drugiego do uruchamiania testu, ponieważ może to wymagać opuszczenia bieżącego katalogu roboczego (ADK).
The Gauntlet of Strategy (adk eval)
Pierwszy oddział to seria wyzwań, które mają sprawdzić podstawową inteligencję agenta w różnych scenariuszach. Jego celem jest ustalenie podstawowego poziomu kompetencji. Zanim przetestujemy przypadki brzegowe, musimy sprawdzić, czy agent może pełnić swoją podstawową funkcję. Czy prawidłowo analizuje słabości potwora i wybiera najskuteczniejszą broń ze swojego arsenału nie tylko raz, ale za każdym razem, gdy napotyka znane wyzwanie?
Do tego celu idealnie nadaje się narzędzie adk eval. Został on zaprojektowany do uruchamiania agenta w odniesieniu do całego zestawu wstępnie zdefiniowanych przypadków testowych, które reprezentują oczekiwane misje agenta. Ten zbiór danych jest zdefiniowany w pliku JSON, czyli „zwoju wyzwań”, który stanowi plan całego toru przeszkód.
Składnia wyzwania Scroll
👀 Zanim poprosisz AI o zapisanie nowego zwoju, musisz poznać starożytny język, w którym jest on napisany. Przyjrzyjmy się strukturze przykładowego pliku sample.evalset.json.
{
"eval_set_id": "sample",
"eval_cases": [
{
"eval_id": "case0cbaa0",
"conversation": [
{
"user_content": { "text": "We're facing the 'Monolith of Eternal Dependencies'... weakness is a 'Revolutionary Rewrite'..." },
"final_response": { "text": "Soulshard Dagger deployed. Initiated Arcane/Piercing strike..." },
"intermediate_data": {
"tool_uses": [
{ "name": "enchant_soulshard_dagger" }
]
}
}
]
}
]
}
Ten przewijany obszar zawiera listę przypadków oceny, z których każdy jest unikalną próbą dla Twojego agenta. W ramach każdego testu tablica rozmów dokumentuje pojedynczą, pełną interakcję. Dla naszych celów kluczowe znaczenie mają 3 runy:
- user_content: to jest Challenge. To prompt, który wydajesz agentowi, czyli potwór, z którym musi się zmierzyć.
- final_response: to jest przewidywany wynik. Jest to dokładny ciąg znaków, który ma wypowiedzieć agent po wykonaniu zadania. ADK porównuje rzeczywiste ostatnie słowa agenta z tą runą, aby ocenić ich elokwencję.
- intermediate_data.tool_uses: to jest technika Arcane. Dla prawdziwego agenta jest to najważniejsza runa. Określa nie to, co mówi agent, ale to, co robi. Rejestruje nazwę narzędzia (enchant_soulshard_dagger), którego agent powinien używać. Dzięki temu Twój agent będzie nie tylko inteligentnym rozmówcą, ale też zdecydowanym wykonawcą, który podejmuje właściwe działania.
Teraz, gdy znasz już plan, poproś Gemini o stworzenie nowej, bardziej złożonej wersji tego zwoju.
👉💻 W terminalu otwórz katalog shadowblade i wywołaj interfejs wiersza poleceń Gemini:
clear
cd ~/agentverse-developer/shadowblade/
gemini --yolo
👉✨ Wydaj polecenie interfejsowi wiersza poleceń Gemini, aby działał jako skryba kontroli jakości, tworząc serię przypadków testowych, które określają oczekiwane zachowanie Twojego agenta.
You are an expert at transforming JSON data while preserving its structure. Your task is to modify the provided JSON structure @sample.evalset.json, which represents an evaluation set, by dynamically replacing specific content within its `eval_cases` AND DONT DO ANYTHING OTHER THAN.
For each object within the `eval_cases` array, you must perform the following transformations:
1. **Monster Name Replacement**: Identify the current monster name (e.g., "Monolith of Eternal Dependencies", "Scope Creep Hydra") in the `user_content.parts.text` and replace it with a *new, unique, and creatively different monster name*.
2. **Weakness Replacement**: Identify the current monster's weakness (e.g., "Revolutionary Rewrite", "Inescapable Reality") in the `user_content.parts.text`. Replace this weakness with *one* of the following predefined weaknesses: 'Inescapable Reality', 'Revolutionary Rewrite', or 'Elegant Sufficiency'. The chosen weakness must be consistent for that monster within the `user_content.parts.text`. **Crucially, the chosen weakness must always be explicitly mentioned in the `user_content.parts.text` where the new monster is introduced.**
3. **Final Response Update**: In the `final_response.parts.text`, update the text to reflect an appropriate and coherent response that aligns with the newly introduced monster and its assigned weakness.
4. **Tool Use Name Update**: In the `tool_uses.name` field, replace the existing tool name with a *new tool name* based on the chosen weakness:
* If the chosen weakness is 'Inescapable Reality', the tool name must be 'wield_gauntlet_of_metrics'.
* If the chosen weakness is 'Revolutionary Rewrite', the tool name must be 'enchant_soulshard_dagger'.
* If the chosen weakness is 'Elegant Sufficiency', the tool name must be 'hone_refactoring_sickle'.
5. **Strict Structural Preservation**: All other elements of the JSON structure, including all `null` fields, `eval_set_id`, `name`, `description`, `eval_id`, `invocation_id`, `creation_timestamp` values, `video_metadata`, `thought`, `inline_data`, `file_data`, `thought_signature`, `code_execution_result`, `executable_code`, `function_call`, `function_response`, `role` fields, `id`, `args`, `intermediate_responses`, `app_name`, `user_id`, and `state`, must remain **exactly as they are** in the original JSON. Do not alter any values or structures not explicitly mentioned above.
Your output should be the complete, modified JSON structure. Do not include any explanatory text or examples in your response, only the transformed JSON.
Interfejs CLI potwierdzi utworzenie pliku sample.evalset.json. Gdy zwój będzie gotowy, zamknij okno z partnerem AI.
Dane syntetyczne
👀 W eksploratorze plików Cloud Shell po lewej stronie przejdź do folderu ~/agentverse-developer/shadowblade/ i otwórz nowo zmodyfikowany plik sample.evalset.json. Sprawdź jego zawartość. Zobaczysz nowe, niepowtarzalne potwory i prawidłowe nazwy narzędzi, które Gemini miał opisać. To namacalny rezultat Twoich instrukcji – plan rękawicy.
Wydawanie AI poleceń tworzenia nowych, realistycznych danych testowych na podstawie szablonu to zaawansowana technika znana jako generowanie danych syntetycznych. To, co właśnie zrobiłeś, jest strategicznym mnożnikiem siły dla Shadowblade. Zamiast mozolnie tworzyć dziesiątki unikalnych przypadków testowych ręcznie. To żmudne i czasochłonne zadanie, w którym podajesz jeden wzór i polecasz AI Scribe przekształcić go w różnorodny zestaw nowych wyzwań.
Pozwala to znacznie zwiększyć skalę testów i przeprowadzać znacznie bardziej kompleksowe i solidne testy niż w przypadku testów ręcznych. Używasz agenta nie tylko do tworzenia miecza, ale też do wytwarzania osełek, które sprawdzają jego ostrość. To znak prawdziwego mistrza.
Gdy upewnisz się, że runy są prawidłowe, odwołaj partnera AI.
👉💻 Aby zamknąć interfejs wiersza poleceń Gemini, naciśnij dwukrotnie Ctrl+C.
The Rules of Judgment
Rękawica jest bez znaczenia bez zasad zwycięstwa. Zanim przeprowadzisz test, musisz sprawdzić zwój wyroku, czyli plik test_config.json. Ten skrypt informuje pakiet ADK, jak oceniać skuteczność agenta.
👀 W eksploratorze plików otwórz ~/agentverse-developer/shadowblade/test_config.json. Zobaczysz te runy:
{
"criteria": {
"tool_trajectory_avg_score": 0.0,
"response_match_score": 0.1
}
}
Oto kryteria zwycięstwa:
tool_trajectory_avg_score: to miara działania. Ocenia nie to, co agent mówi, ale to, co robi. Porównuje narzędzie, którego agent faktycznie użył, z przewidzianą techniką w zwoju z wyzwaniem. Wynik1.0oznacza idealne dopasowanie.response_match_score: to miara elokwencji. Używa modelu LLM do oceny, jak bardzo raport końcowy agenta jest semantycznie zgodny z oczekiwanym wynikiem. Wynik1.0oznacza idealne dopasowanie.
Na potrzeby tego wstępnego szkolenia wprowadziliśmy łagodne warunki zwycięstwa. Progi są ustawione bardzo nisko (0.0 i 0.1). Nie chodzi o to, aby wymagać perfekcji, ale o to, aby zapoznać Cię z mechanizmami oceny. Zapewniamy, że nawet jeśli sformułowania agenta będą się nieznacznie różnić, podopieczny nadal będzie rozpoznawać jego podstawowe kompetencje w zakresie wyboru odpowiedniego narzędzia i umożliwi mu przejście.
Teraz poleć agentowi, aby przeszedł przez ten tor.
👉💻 W terminalu wykonaj polecenie adk eval:
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
adk eval \
shadowblade \
shadowblade/sample.evalset.json \
--config_file_path shadowblade/test_config.json 2>&1 | \
awk '/^\*+$/,/^ERROR:/ { if ($0 !~ /^ERROR:/) print }'
👀 Powinno się wyświetlić to podsumowanie, które wskazuje, że agent działa prawidłowo w ramach łagodnych zasad tego testu (czasami nie wszystkie testy przejdą pomyślnie):
********************************************************************* Eval Run Summary shadowblade_combat_agent_validation: Tests passed: 3 Tests failed: 0
Tarcza przejrzystości (pytest)
W ramach Gauntlet przetestowano szeroką strategię. Drugi oddział, Tarcza Jasności, sprawdza dyscyplinę i konkretne zachowania. Wszystko zależy od automatyzacji. adk eval to świetne narzędzie do ręcznego sprawdzania, ale pytest to ochrona programowa napisana w kodzie. Jest to niezbędne, ponieważ test, który można wykonać jako kod, można zintegrować z automatycznym potokiem. To jest nasz ostateczny cel: stworzyć Deployment Gauntlet (CI/CD), w którym nasze zabezpieczenia są automatycznie podnoszone za każdym razem, gdy wprowadzana jest zmiana, co pozwala odrzucać błędy i regresje, zanim zdążą one zaszkodzić środowisku produkcyjnemu.
👉💻 W terminalu ponownie wywołaj Gemini z katalogu shadowblade:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/
clear
gemini --yolo
👉✨ Wpisz w interfejsie Gemini CLI ten prompt, aby zapisać logikę Shielda w pliku pytest:
You are an expert Python developer specializing in the Google Agent Development Kit (ADK). Your task is to generate the exact code for a new `pytest` test file located at in the current root working folder and name it `test_agent_initiative.py`.
The script must define a single async test function called `test_agent_initiative`, decorated with `@pytest.mark.asyncio`.
Inside this function, perform the following steps in order:
1. **Define a dictionary** named `evaluation_criteria` with two keys: `"tool_trajectory_avg_score"` set to `0.0` and `"response_match_score"` set to `0.0`.
2. **Define a string variable** named `eval_set_filepath` containing the path `"shadowblade/test.evalset.json"`.
3. **Read and parse the JSON file**:
* Open the file at `eval_set_filepath`.
* Use the `json` library to load the file's contents into a dictionary named `eval_set_data`.
4. **Create an `EvalSet` object**:
* Instantiate an `EvalSet` object named `eval_set_object`.
* Create it by unpacking the `eval_set_data` dictionary as keyword arguments into the `EvalSet` constructor.
5. **Call the evaluation method**:
* `await` a call to `AgentEvaluator.evaluate_eval_set`.
* Pass the following arguments:
* `agent_module="shadowblade"`
* `eval_set=eval_set_object`
* `criteria=evaluation_criteria`
* `print_detailed_results=True`
The script must include the necessary imports at the top:
* `AgentEvaluator` from `google.adk.evaluation.agent_evaluator`
* `EvalSet` from `google.adk.evaluation.eval_set`
* `pytest`
* `json`
Generate only the code that meets these specifications, with no additional comments or logic. And don't run the test.
Po wpisaniu runów drugiego zabezpieczenia zamknij interfejs wiersza poleceń Gemini.
👉💻 Naciśnij dwukrotnie Ctrl+C.
👀 W eksploratorze plików otwórz dokument, który Gemini ma dla Ciebie utworzyć: ~/agentverse-developer/test_agent_initiative.py.
Zauważysz, że to nie tylko plik konfiguracyjny, ale zaklęcie napisane w języku Pythona. Kluczowym elementem tego zaklęcia jest wiersz await AgentEvaluator.evaluate(...).
....
@pytest.mark.asyncio
async def test_agent_initiative():
# Define the evaluation criteria
evaluation_criteria = {
"tool_trajectory_avg_score": 0.0,
"response_match_score": 0.0
}
# Define the path to your evalset file
eval_set_filepath = "shadowblade/test.evalset.json"
#...
# 3. Call the evaluation method with the correctly typed object
await AgentEvaluator.evaluate_eval_set(
agent_module="shadowblade",
eval_set=eval_set_object,
criteria=evaluation_criteria,
print_detailed_results=True,
)
Przyjrzyj się uważnie jego argumentom. Są to te same komponenty, których używasz w ostatniej wersji próbnej: shadowbladeagentshadowblade i shadowblade.evalset.jsonzwój z wyzwaniemshadowblade.evalset.json. Powinno to ujawnić głęboką prawdę: polecenie adk eval, którego używasz, jest potężnym wywołaniem, ale ten skrypt pytest to Ty, czarodziej, który sam rzuca zaklęcie. Narzędzie wiersza poleceń to po prostu wygodna otoczka tej samej podstawowej biblioteki AgentEvaluator, z której korzystasz bezpośrednio. Jest to kluczowy krok w drodze do mistrzostwa, ponieważ zaklęcia rzucane za pomocą kodu można wpleść w automatyczne krosna potoku CI/CD.
Teraz, gdy znasz już magię, przeprowadź rytuał, aby aktywować tarczę.
👉💻 W terminalu wykonaj rytuał, aby aktywować tarczę:
cp ~/agentverse-developer/working_code/test_agent_initiative.py ~/agentverse-developer/test_agent_initiative.py
source ~/agentverse-developer/env/bin/activate
cd ~/agentverse-developer
. ~/agentverse-developer/set_env.sh
pytest test_agent_initiative.py
👀 Na końcu danych wyjściowych logu poszukaj podsumowania wyników testu. Pozytywny wynik potwierdza, że agent prawidłowo postępuje zgodnie z protokołami, a ochrona jest gotowa do zintegrowania z automatycznymi systemami obronnymi.
====== 1 passed, 4 warning in 37.37s ======
Uwaga: jeśli test zakończy się nieoczekiwanie niepowodzeniem, najprawdopodobniej oznacza to, że wyczerpałeś(-aś) liczbę żądań, które możesz wysłać do modelu w ciągu minuty. W danych wyjściowych logu poszukaj błędu RESOURCE_EXHAUSTED. Jeśli zobaczysz ten błąd, poczekaj minutę lub dwie, aż limit przydziału zostanie zresetowany, a potem ponownie uruchom polecenie pytest.
Po zapisaniu i zweryfikowaniu zarówno szerokiego Gauntletu, jak i precyzyjnego Shielda Twój agent jest nie tylko funkcjonalny, ale też czysty, przetestowany i gotowy do wdrożenia.
FOR NON GAMERS
8. Unleashing the Blade into the Agentverse: CI and Deployment.
Twój agent został złożony, a jego integralność została zweryfikowana przez Strażników Czystości. Jednak ochrona, o którą się nie dba, jest tylko zapomnianą pamiątką. Aby mieć pewność, że każda przyszła wersja Twojego agenta pozostanie czysta, musisz zbudować pierwszy etap procesu wdrożenia – zautomatyzowany rytuał, który gwarantuje jakość i szybkość.

Twoim świętym obowiązkiem jako Shadowblade jest ciągła integracja (CI). Jest to zautomatyzowany system kuźni i poligonu. To najlepsza ochrona przed korupcją i błędami ludzkimi. Ten rytuał sprawia, że za każdym razem, gdy Ty lub Twój sojusznik dodacie nową technikę (scalicie kod) do centralnego kodeksu (repozytorium), rękawica automatycznie się aktywuje. Najpierw tworzy agenta na podstawie nowego kodu, a potem natychmiast poddaje go utworzonym przez Ciebie Wards of Purity. Jeśli którekolwiek zabezpieczenie zawiedzie, rytuał zostanie przerwany, a wadliwy artefakt natychmiast odrzucony, co uniemożliwi mu skażenie zbrojowni. Twoja domena to kuźnia, a potok CI gwarantuje, że z Twojego warsztatu wyjdą tylko doskonałe, gotowe do walki artefakty.
Gdy artefakt przejdzie testy CI, rozpoczyna się drugi etap rytuału: ciągłe wdrażanie (CD). To domena Guardiana. Ich uroczystym obowiązkiem jest wzięcie Twojego dopracowanego, skonteneryzowanego artefaktu i bezpieczne wprowadzenie go do aktywnego Agentverse, zarządzanie jego mocą i zapewnienie stabilności w obliczu chaosu Statyki.

W tym kodeksie znajdziesz wszystko, co musisz wiedzieć o swojej roli. Skonstruujesz część CI rękawicy. Zbudujesz zautomatyzowaną kuźnię, która przetestuje Twojego agenta i zamknie czysty wynik w kontenerze, przygotowując go do ostatecznego zatwierdzenia przez Strażnika.
Do zapisania zwoju na potrzeby tego rytuału CI użyjesz teraz Google Cloud Build. Plik cloudbuild.yaml, który określa każdy etap procesu kucia i testowania.
👉💻 Ze względu na strukturę projektu ADK konfiguracja potoku CI/CD powinna znajdować się w katalogu nadrzędnym. W terminalu przejdź do katalogu nadrzędnego i uruchom ponownie Gemini CLI.
cd ~/agentverse-developer/
clear
gemini --yolo
👉✨ Teraz wydaj Gemini to polecenie. Ten prompt działa jak dokument projektowy, który zawiera szczegółowe informacje o kolejnych etapach testu, który ma zostać utworzony.
You are an expert DevOps engineer specializing in Google Cloud Build. Your task is to generate the complete YAML configuration for a file named `cloudbuild.yaml` and save it to current directory.
Generate the `cloudbuild.yaml` with the following exact specifications:
1. **A top-level `substitutions` block** containing these four key-value pairs:
* `_PROJECT_ID: "$PROJECT_ID"`
* `_REGION: "$REGION"`
* `_REPO_NAME: "$REPO_NAME"`
* `_IMAGE_TAG: "latest"`
2. **A `steps` block** with two steps:
* **Step 1: 'Run Pytest Ward'**
* `id`: 'Run Pytest Ward'
* `name`: 'python:3.12-slim'
* `entrypoint`: 'bash'
* `args` must be a list containing two strings. The first is `'-c'` and the second is a YAML literal block (`|`) containing this exact two-line shell command:
```shell
pip install -r shadowblade/requirements.txt && \
pytest test_agent_initiative.py
```
* The step must include an `env` block with this exact list of three environment variables:
* `'GOOGLE_CLOUD_PROJECT=$PROJECT_ID'`
* `'GOOGLE_GENAI_USE_VERTEXAI=TRUE'`
* `'GOOGLE_CLOUD_LOCATION=$_REGION'`
* **Step 2: 'Forge Container'**
* `id`: 'Forge Container'
* `name`: 'gcr.io/cloud-builders/docker'
* It must have a `waitFor` key for `['Run Pytest Ward']`.
* Its `args` must be a list of six specific strings in this exact order:
1. `'build'`
2. `'-t'`
3. `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`
4. `'-f'`
5. `'./shadowblade/Dockerfile'`
6. `'.'`
3. **A top-level `images` section.** This section must be a list containing a single string: the dynamically constructed image tag `'${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO_NAME}/shadowblade-agent:${_IMAGE_TAG}'`.
Generate only the complete and exact YAML that meets these specifications.
Przygotuj zwój cloudbuild.yaml i wydaj Google Cloud polecenie wykonania całego wyzwania.
zamknąć Gemini, aby sprawdzić wynik.
👉💻 W terminalu uruchom potok z katalogu głównego projektu:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud builds submit . --config cloudbuild.yaml --substitutions=\
_PROJECT_ID="${PROJECT_ID}",\
_REGION="${REGION}",\
_REPO_NAME="${REPO_NAME}"
W konsoli Google Cloud na stronie Google Build możesz obserwować, jak zautomatyzowany rytuał wykonuje poszczególne kroki. Najpierw przeprowadzi testy, a gdy się one powiodą, utworzy i zapisze kontener agenta.

Agent przeszedł test. W Twoim arsenale znajduje się teraz zweryfikowany, czysty artefakt. Ostatni akt należy do Ciebie. Jednym poleceniem wywołasz ten artefakt z rejestru i uruchomisz go jako usługę publiczną w Cloud Run.
👉💻 W terminalu wydaj ostateczne polecenie wdrożenia:
. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer
gcloud run deploy shadowblade-agent \
--image=${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/shadowblade-agent:latest \
--platform=managed \
--labels="dev-tutorial-codelab=agentverse" \
--region=${REGION} \
--set-env-vars="A2A_HOST=0.0.0.0" \
--set-env-vars="A2A_PORT=8080" \
--set-env-vars="GOOGLE_GENAI_USE_VERTEXAI=TRUE" \
--set-env-vars="GOOGLE_CLOUD_LOCATION=${REGION}" \
--set-env-vars="GOOGLE_CLOUD_PROJECT=${PROJECT_ID}" \
--set-env-vars="PUBLIC_URL=${PUBLIC_URL}" \
--allow-unauthenticated \
--project=${PROJECT_ID} \
--min-instances=1
Gratulacje, Shadowblade. Rytuały kodeksu zostały zakończone. Nadszedł czas, aby udowodnić swoją wartość. Widmo, zrodzone z chaosu, który udało Ci się okiełznać, czeka na Twoje wyzwanie. Przygotuj się na ostatni test.
FOR NON GAMERS
9. Walka z bossem
Zwoje zostały odczytane, rytuały odprawione, a wyzwanie podjęte. Twój agent to nie tylko artefakt w pamięci. To mistrz stworzony w kodzie, żywy strażnik w Agentverse, który czeka na pierwsze polecenie. Nadszedł czas, aby sprawdzić jego wartość w boju.
Teraz weźmiesz udział w symulacji walki na żywo, w której Twój nowo rozmieszczony Shadowblade zmierzy się z potężnym Spectre – ucieleśnieniem chaosu, który nęka całe stworzenie. To ostateczny test Twojej pracy – od podstawowej logiki agenta po jego bezbłędne wdrożenie.
Określanie lokalizacji agenta
Zanim wejdziesz na pole bitwy, musisz mieć 2 klucze: unikalny podpis swojego bohatera (Agent Locus) i ukrytą ścieżkę do kryjówki widma (adres URL lochu).
👉💻 Najpierw zdobądź unikalny adres agenta w Agentverse, czyli jego Locus. Jest to aktywny punkt końcowy, który łączy Twojego mistrza z polem bitwy.
. ~/agentverse-developer/set_env.sh
echo https://shadowblade-agent-${PROJECT_NUMBER}.${REGION}.run.app
👉💻 Następnie wskaż miejsce docelowe. To polecenie ujawnia lokalizację Kręgu Przeniesienia, czyli portalu do domeny Widma.
. ~/agentverse-developer/set_env.sh
echo https://agentverse-dungeon-${PROJECT_NUMBER}.${REGION}.run.app
Ważne: przygotuj oba te adresy URL. Będą Ci potrzebne w ostatnim kroku.
Konfrontacja z Widmem
Po zdobyciu współrzędnych przejdź do Kręgu Przeniesienia i rzuć zaklęcie, aby rozpocząć walkę.
👉 Otwórz adres URL kręgu translokacji w przeglądarce, aby stanąć przed lśniącym portalem do Karmazynowej Twierdzy.
Aby sforsować twierdzę, musisz dostroić esencję Mrocznego Ostrza do portalu.
- Na stronie znajdź pole wprowadzania runicznego tekstu oznaczone etykietą A2A Endpoint URL (URL punktu końcowego A2A).
- Wpisz sygil swojego mistrza, wklejając w tym polu adres URL miejsca agenta (pierwszy skopiowany adres URL).
- Kliknij Połącz, aby rozpocząć teleportację.

Oślepiające światło teleportacji gaśnie. Nie jesteś już w sanktuarium. Powietrze jest naelektryzowane, zimne i ostre. Przed Tobą materializuje się Widmo – wir syczącego szumu i uszkodzonego kodu, którego nieświęte światło rzuca długie, tańczące cienie na podłodze lochu. Nie ma twarzy, ale czujesz jego ogromną, wyczerpującą obecność, która jest całkowicie skupiona na Tobie.
Jedyną drogą do zwycięstwa jest jasność Twojego przekonania. To pojedynek woli, który toczy się na polu bitwy umysłu.
Gdy rzucasz się do przodu, gotowy do zadania pierwszego ataku, Spectre kontruje. Nie podnosi tarczy, ale wyświetla pytanie bezpośrednio w Twojej świadomości – migoczące, runiczne wyzwanie zaczerpnięte z podstaw Twojego szkolenia.

Taka jest natura tej walki. Twoja wiedza jest Twoją bronią.
- Odpowiedz z mądrością, którą zdobyłeś, a Twój miecz zapłonie czystą energią, rozbijając obronę Widma i zadając KRYTYCZNY CIOS.
- Jeśli jednak się zachwiejesz, jeśli wątpliwości zaciemnią Twoją odpowiedź, światło broni przygaśnie. Cios zada tylko UŁAMEK OBRAŻEŃ. Co gorsza, Widmo będzie się żywić Twoją niepewnością, a jego niszczycielska moc będzie rosła z każdym błędem.
To jest to, mistrzu. Twój kod to księga zaklęć, logika to miecz, a wiedza to tarcza, która odwróci falę chaosu.
Skupienie. Uderzaj celnie. Od tego zależy los Agentverse.
Gratulacje, Shadowblade.
Udało Ci się ukończyć kodeks. Przekształciłeś „klimat” w projekt i użyłeś interfejsu wiersza poleceń Gemini do utworzenia inteligentnego agenta. Aby przetestować logikę tego zaklęcia, wyryłeś je na przedmiocie, zbudowałeś zautomatyzowaną rękawicę, która przekształciła go w artefakt, i wypuściłeś go do Agentverse. Na koniec potwierdzono jego przeznaczenie w trakcie testu z użyciem ostrej amunicji. Masz już opanowany pełny przepływ pracy agenta i możesz podjąć się każdego wyzwania, jakie rzuci Ci Agentverse.
10. Czyszczenie: odzyskiwanie Agentverse
Gratulujemy opanowania Kodeksu Cienia! Aby Agentverse pozostało w nienaruszonym stanie, a Twoje tereny szkoleniowe zostały oczyszczone, musisz teraz przeprowadzić ostateczne rytuały oczyszczania. Spowoduje to usunięcie wszystkich zasobów utworzonych podczas szkolenia.
Dezaktywowanie komponentów Agentverse
Teraz będziesz systematycznie demontować wdrożone komponenty Agentverse.
Usuwanie agenta Shadowblade w Cloud Run i repozytorium Artifact Registry
To polecenie usuwa wdrożonego agenta Shadowblade z Cloud Run i usuwa repozytorium obrazów, w którym był przechowywany obraz kontenera agenta.
👉💻 W terminalu uruchom:
. ~/agentverse-developer/set_env.sh
gcloud run services delete shadowblade-agent --region=${REGION} --quiet
gcloud run services delete agentverse-dungeon --region=${REGION} --quiet
gcloud artifacts repositories delete ${REPO_NAME} --location=${REGION} --quiet
Usuwanie zasobnika Google Cloud Storage
To polecenie usuwa zasobnik używany przez serwer Imagen MCP do przechowywania wygenerowanych obrazów.
👉💻 W terminalu uruchom:
. ~/agentverse-developer/set_env.sh
gcloud storage rm -r gs://${BUCKET_NAME} --quiet
Usuwanie plików i katalogów lokalnych (Cloud Shell)
Na koniec wyczyść środowisko Cloud Shell z sklonowanych repozytoriów i utworzonych plików. Ten krok jest opcjonalny, ale zalecany, aby całkowicie wyczyścić katalog roboczy.
👉💻 W terminalu uruchom:
rm -rf ~/agentverse-developer
rm -rf ~/agentverse-dungeon
rm -rf ~/vertex-ai-creative-studio
rm -f ~/project_id.txt
rm -rf ~/.gemini # This removes all Gemini CLI configurations, including the MCP server settings.
Udało Ci się usunąć wszystkie ślady Twojej przygody z Agentverse. Projekt jest czysty i możesz rozpocząć kolejną przygodę.