Agentverse - The Shadowblade's Codex - Vibecoding dengan Gemini CLI

1. Overture

Era pengembangan yang terpisah-pisah akan berakhir. Evolusi teknologi berikutnya bukan tentang kejeniusan yang terisolasi, tetapi tentang penguasaan kolaboratif. Membangun satu agen cerdas adalah eksperimen yang menarik. Membangun ekosistem agen yang tangguh, aman, dan cerdas—Agentverse yang sebenarnya—adalah tantangan besar bagi perusahaan modern.

Keberhasilan di era baru ini memerlukan konvergensi empat peran penting, pilar dasar yang mendukung sistem agentic yang berkembang. Kekurangan di salah satu area menciptakan kelemahan yang dapat membahayakan seluruh struktur.

Workshop ini adalah panduan perusahaan yang pasti untuk menguasai masa depan agentic di Google Cloud. Kami menyediakan roadmap menyeluruh yang memandu Anda dari ide awal hingga menjadi kenyataan operasional berskala penuh. Dalam empat lab yang saling terhubung ini, Anda akan mempelajari cara menggabungkan keterampilan khusus developer, arsitek, engineer data, dan SRE untuk membuat, mengelola, dan menskalakan Agentverse yang efektif.

Tidak ada satu pilar pun yang dapat mendukung Agentverse saja. Desain besar Arsitek tidak berguna tanpa eksekusi yang tepat dari Developer. Agen Developer tidak dapat berfungsi tanpa keahlian Data Engineer, dan seluruh sistem akan rentan tanpa perlindungan SRE. Hanya melalui sinergi dan pemahaman bersama tentang peran masing-masing, tim Anda dapat mengubah konsep inovatif menjadi kenyataan operasional yang sangat penting. Perjalanan Anda dimulai di sini. Bersiaplah untuk menguasai peran Anda dan pelajari bagaimana Anda cocok dengan keseluruhan yang lebih besar.

Selamat datang di Agentverse: Panggilan untuk Para Juara

Di luasnya dunia digital perusahaan, era baru telah dimulai. Ini adalah era agentic, era yang penuh harapan, ketika agen cerdas dan otonom bekerja secara harmonis untuk mempercepat inovasi dan menghilangkan tugas-tugas yang membosankan.

agentverse.png

Ekosistem terhubung yang penuh kekuatan dan potensi ini dikenal sebagai Agentverse.

Namun, entropi yang merayap, kerusakan senyap yang dikenal sebagai The Static, telah mulai menggerogoti tepi dunia baru ini. Statis bukanlah virus atau bug; ini adalah perwujudan kekacauan yang memangsa tindakan penciptaan itu sendiri.

Hal ini memperkuat frustrasi lama menjadi bentuk yang mengerikan, sehingga memunculkan Tujuh Momok Pembangunan. Jika tidak ditangani, The Static dan Spectres-nya akan menghentikan progres, mengubah janji Agentverse menjadi gurun utang teknis dan project yang ditinggalkan.

Hari ini, kami menyerukan para pejuang untuk melawan kekacauan. Kita membutuhkan pahlawan yang bersedia menguasai keahlian mereka dan bekerja sama untuk melindungi Agentverse. Saatnya memilih jalur Anda.

Pilih Kelas Anda

Empat jalur berbeda terbentang di hadapan Anda, yang masing-masing merupakan pilar penting dalam perjuangan melawan The Static. Meskipun pelatihan Anda akan menjadi misi solo, kesuksesan akhir Anda bergantung pada pemahaman tentang bagaimana keterampilan Anda berpadu dengan orang lain.

  • The Shadowblade (Developer): Ahli dalam menempa dan berada di garis depan. Anda adalah pengrajin yang membuat bilah, membangun alat, dan menghadapi musuh dalam detail rumit kode. Jalur Anda adalah presisi, keterampilan, dan kreasi praktis.
  • The Summoner (Arsitek): Ahli strategi dan pengatur yang hebat. Anda tidak melihat satu agen, tetapi seluruh medan perang. Anda mendesain cetak biru utama yang memungkinkan seluruh sistem agen berkomunikasi, berkolaborasi, dan mencapai tujuan yang jauh lebih besar daripada satu komponen.
  • The Scholar (Data Engineer): Pencari kebenaran tersembunyi dan penjaga kebijaksanaan. Anda menjelajahi data yang luas dan belum terpetakan untuk menemukan kecerdasan yang memberi tujuan dan pandangan bagi agen Anda. Pengetahuanmu dapat mengungkap kelemahan musuh atau memberdayakan sekutumu.
  • The Guardian (DevOps / SRE): Pelindung dan perisai kerajaan yang setia. Anda membangun benteng, mengelola jalur suplai daya, dan memastikan seluruh sistem dapat menahan serangan tak terhindarkan dari The Static. Kekuatan Anda adalah fondasi yang menjadi dasar kemenangan tim Anda.

Misi Anda

Latihan Anda akan dimulai sebagai latihan mandiri. Anda akan mengikuti jalur yang dipilih, mempelajari keterampilan unik yang diperlukan untuk menguasai peran Anda. Di akhir uji coba, Anda akan menghadapi Spectre yang lahir dari The Static—mini-boss yang memangsa tantangan spesifik dalam keahlian Anda.

Anda hanya dapat mempersiapkan uji coba akhir dengan menguasai peran masing-masing. Kemudian, Anda harus membentuk tim dengan juara dari kelas lain. Bersama-sama, Anda akan menjelajahi pusat korupsi untuk menghadapi bos terakhir.

Tantangan kolaboratif terakhir yang akan menguji kekuatan gabungan Anda dan menentukan nasib Agentverse.

Agentverse menanti para hero. Apakah Anda akan menjawab panggilan?

2. Kodeks Shadowblade

Codex Shadowblade terbuka di hadapanmu. Jawab panggilannya. Agentverse terancam oleh kekacauan The Static yang merayap, dan hanya mereka yang menguasai teknik dalam kodeks ini yang dapat melawan. Ini adalah jalur presisi dan disiplin. Hari ini, pelatihan Anda dimulai. Anda akan belajar menggunakan AI bukan sebagai alat sederhana, tetapi sebagai pedang cerdas yang harus dijinakkan dan dikuasai. Ikuti ajaran di sini, dan Anda akan membuat senjata logika murni—agen cerdas, yang diasah dan siap untuk bertempur.

02-00-overview.png

Yang akan Anda pelajari

  • Gunakan senjata utama Anda: Gemini CLI.
  • Panggil alat eksternal dengan mengintegrasikan alat MCP dengan Gemini CLI untuk menganalisis codebase yang tidak dikenal.
  • Salurkan niat Anda ke dalam "Vibe" menggunakan dokumen desain untuk memerintahkan partner AI Anda.
  • Buat solusi modular yang bersih dengan membangun agen otonom pertama Anda menggunakan Agent Development Kit (ADK).
  • Membuat rangkaian evaluasi otomatis untuk menguji dan memvalidasi agen Anda.
  • Bangun pipeline CI lengkap untuk menguji, membuat container, dan mengarsipkan agen Anda secara otomatis.

3. Menyiapkan Lapangan Pelatihan

👉Klik Activate Cloud Shell di bagian atas konsol Google Cloud (Ikon berbentuk terminal di bagian atas panel Cloud Shell), cloud-shell.png

👉Klik tombol "Open Editor" (terlihat seperti folder terbuka dengan pensil). Tindakan ini akan membuka Editor Kode Cloud Shell di jendela. Anda akan melihat file explorer di sisi kiri. open-editor.png

👉Temukan Project ID Google Cloud Anda:

  • Buka Konsol Google Cloud: https://console.cloud.google.com
  • Pilih project yang ingin Anda gunakan untuk workshop ini dari dropdown project di bagian atas halaman.
  • Project ID Anda ditampilkan di kartu Info project di Dasbor

03-04-project-id.png

👉Buka terminal di IDE cloud,

03-05-new-terminal.png

👉💻 Di terminal, verifikasi bahwa Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:

gcloud auth list

👉💻 Clone project bootstrap dari GitHub:

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

👉💻 Jalankan skrip inisialisasi. Skrip ini akan meminta Anda memasukkan Project ID Google Cloud Anda. Kemudian, masukkan ID Project Google Cloud yang Anda temukan dari langkah terakhir saat diminta oleh skrip init.sh.

cd ~/agentverse-developer
./init.sh

👉💻 Tetapkan Project ID yang diperlukan:

gcloud config set project $(cat ~/project_id.txt) --quiet

👉💻 Jalankan perintah berikut untuk mengaktifkan Google Cloud API yang diperlukan:

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

👉💻 Jika Anda belum membuat repositori Artifact Registry bernama agentverse-repo, jalankan perintah berikut untuk membuatnya:

. ~/agentverse-developer/set_env.sh
gcloud artifacts repositories create $REPO_NAME \
    --repository-format=docker \
    --location=$REGION \
    --description="Repository for Agentverse agents"

Menyiapkan izin

👉💻 Berikan izin yang diperlukan dengan menjalankan perintah berikut di terminal: :

. ~/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"

👉💻 Saat Anda memulai pelatihan, kami akan menyiapkan tantangan terakhir. Perintah berikut memanggil Spectre dari statis yang kacau, sehingga membuat boss untuk pengujian Anda.

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-dungeon
./run_cloudbuild.sh

npm update -g @google/gemini-cli

4. Menguasai Senjata Utama Anda: Pengantar Gemini CLI

Sebelum dapat menggunakan senjata canggih dan khusus dari gudang senjata server MCP, Anda harus menguasai senjata utama terlebih dahulu: Gemini CLI. Ini adalah pisau paling serbaguna Anda, yang mampu membentuk dunia digital dengan perintah Anda. Latihan ini akan membuat Anda terbiasa dengan penanganan dan kemampuan dasarnya.

Ringkasan

Antarmuka Command Line (CLI) Gemini bukan sekadar alat; ini adalah perpanjangan dari keinginan Anda. Agen AI open source ini, yang didukung oleh model Gemini, beroperasi pada loop "reason and act" (ReAct). Alat ini menganalisis maksud Anda, memilih teknik yang tepat, mengeksekusinya, dan mengamati hasilnya untuk menyelesaikan tugas yang kompleks. Sebelum dapat menggunakan senjata yang lebih khusus, Anda harus menguasai pedang utama ini.

Mulai menggunakan Gemini CLI

👉💻 Masuki area pelatihan dan keluarkan senjata Anda. Di terminal Cloud Shell, buka gudang senjata pribadi Anda.

cd ~/agentverse-developer
mkdir tabletop
cd tabletop

👉💻 Panggil Gemini untuk pertama kalinya. Aplikasi ini akan memandu Anda melalui penyesuaian awal.

clear
gemini --yolo

Jika Anda ditanya Do you want to connect Cloud Shell editor to Gemini CLI?, pilih TIDAK.

Pengenalan Senjata

Setiap pengrajin ahli mengetahui alat-alatnya. Anda harus mempelajari teknik inti pedang Anda sebelum menghadapi musuh yang sebenarnya.

👉✨ Setiap alat ajaib memiliki rune yang menggambarkan kekuatannya. Baca sekarang. Di perintah Gemini, ketik:

/help

Amati daftar perintah. Ini adalah teknik dasar Anda untuk mengelola memori (focus), percakapan (chat), dan persenjataan eksternal (tools). Ini adalah panduan tempur Anda.

👉✨ Senjatamu disesuaikan dengan lingkungannya, sehingga kamu dapat memanipulasi medan perang secara langsung. Mengirim perintah ke dunia di luar blade:

!ls -l

👉✨ Gemini CLI memiliki serangkaian kemampuan bawaan sendiri. Untuk memeriksanya:

/tools

Anda akan melihat daftar yang mencakup ReadFile, WriteFile, dan GoogleSearch. Ini adalah teknik default yang dapat Anda gunakan tanpa perlu mengambil dari arsenal eksternal.

👉✨ Senjata hanya efektif jika difokuskan dengan benar. Gemini Blade dapat menyimpan "kesadaran taktis" (konteks) untuk memandu tindakannya.

/memory show

Saat ini kosong, seperti kanvas kosong.

👉✨ Tuliskan data taktis berikut ke dalam memorinya:

/memory add "The Shadowblade's primary foe is The Static."

Jalankan /memory show lagi untuk mengonfirmasi bahwa pisau Anda telah menyerap pengetahuan ini.

👉✨ Agar efektif, senjata Anda harus memahami misi. Sigil @ memerintahkan bilah untuk menganalisis intelijen. Pertama, buat file ringkasan misi:

!echo "## Mission Objective: Defeat the Seven Spectres" > mission.md

👉✨Sekarang, perintahkan Gemini CLI Anda untuk menganalisis ringkasan dan melaporkan temuannya:

Explain the contents of the file @mission.md

Senjata utama Anda kini mengetahui tujuannya.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI

5. Menganalisis Medan Pertempuran: Interaksi Vibe Coding Praktis

Latihan selesai. Anda telah mempelajari posisi dan serangan dasar senjata utama Anda, Gemini CLI. Namun, bilah tidak benar-benar dikuasai hingga diuji di bengkel penciptaan dan disesuaikan dengan gudang senjata perang. Sebelum menghadapi musuh yang sebenarnya, Anda harus terlebih dahulu memantau dan membentuk lingkungan terdekat Anda—medan perang digital.

Ringkasan

Bab ini membahas cara beralih dari teori ke praktik. Anda akan terlebih dahulu membangun kehadiran Anda di Agentverse dengan memerintahkan bilah Gemini untuk membuat Maker's Mark Anda—tanda tangan digital dalam bentuk situs pribadi, yang dibangun hanya dari niat Anda. Kemudian, Anda akan memperluas kekuatan dengan mengaktifkan gudang senjata lokal berisi alat canggih—server MCP—dan menyelaraskan bilah Anda dengan frekuensinya, sehingga Anda dapat melakukan manuver kompleks seperti mengelola repositori kode dengan perintah yang sederhana dan tegas.

Menetapkan Tanda Pembuat Anda

Shadowblade sejati tidak hanya dikenal dari senjatanya, tetapi juga dari gaya khasnya—Tanda Pembuat. Tanda ini akan menjadi kehadiran digital Anda, profil pribadi yang mengumumkan identitas Anda ke Agentverse. Di sini, Anda akan memerintahkan Gemini Blade untuk menjalankan teknik kompleks yang diperlukan untuk menentukan identitas ini.

Story

👉💻 Jika Anda menutup Gemini CLI di bagian sebelumnya, pastikan untuk memulainya kembali. Di terminal, jalankan

clear
cd ~/agentverse-developer/tabletop
gemini --yolo

👉✨ Dengan satu perintah yang efektif, instruksikan Gemini CLI untuk membentuk fondasi identitas digital Anda:

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 telah menghitung urutan tindakan yang diperlukan.

Nilai sebenarnya dari teknik hanya terlihat dalam skenario live. Perintahkan blade Anda untuk memulai simulasi lokal.

👉✨ Di Gemini CLI Anda, jalankan perintah simulasi:

Use Python's built-in web server to start the Shadowblade Profile website you just created.

Gemini akan mengonfirmasi bahwa simulasi aktif.

👀 Gemini CLI akan mematuhi, mengonfirmasi bahwa simulasi aktif dan tanda digital Anda sudah aktif:

The website is now being served on port 8000. You can access it at http://localhost:8000.

Catatan: Blade mungkin memerlukan beberapa kali percobaan untuk mengeksekusi ini dengan benar. Jika masalah berlanjut setelah 3-4 kali percobaan, keluar dari Gemini CLI dengan mengetik /quit atau menekan Ctrl+C dua kali dan 👉💻 jalankan perintah berikut di terminal.

python3 -m http.server

👀 Untuk melihat hasil pekerjaan Anda, klik ikon Web preview di toolbar Cloud Shell. Pilih Ubah port, tetapkan ke 8000, lalu klik Ubah dan Pratinjau. Pratinjau situs Anda akan muncul. 04-01-webpreview.png

Situs Anda mungkin terlihat berbeda dari situs saya. Ini adalah tanda unik Anda. 04-02-website.png

👉✨ Teknik tanda tangan Anda kini lebih baik, dan simulasi langsung tidak lagi diperlukan. Perintahkan Blade untuk menghentikan operasi.

Stop the Shadowblade Profile website

👉💻 Catatan: Jika Anda menjalankan perintah ini di luar Gemini CLI, tekan Ctrl+C untuk keluar dari server http.

Anda telah berhasil memerintahkan Gemini CLI untuk menjalankan serangkaian tindakan atas nama Anda. Namun, Shadowblade yang ahli tahu bahwa kekuatan sejati memerlukan disiplin dan pandangan ke depan. Mengizinkan agen AI menjalankan perintah secara langsung di lingkungan Anda adalah pedang bermata dua. Bagaimana jika perintahnya bukan untuk memulai server web sederhana, tetapi untuk menghapus file penting? Perintah yang ceroboh dapat menghancurkan seluruh tempat pelatihan Anda.

Itulah sebabnya pengrajin paling bijak mempraktikkan teknik mereka yang paling kuat atau belum teruji di dalam tempat pelatihan yang dilindungi—dimensi tertutup yang dikenal sebagai sandbox.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI

Sandbox Gemini CLI (gemini --sandbox) membuat container sementara yang terisolasi untuk sesi Anda. Setiap perintah yang dijalankan AI, setiap file yang ditulisnya, setiap proses yang dimulainya, hanya ada dalam dunia ilusi tersebut. Lingkungan ini tidak dapat menyentuh, mengubah, atau merusak lingkungan Cloud Shell Anda yang sebenarnya. Sandbox adalah tempat yang tepat untuk menguji alat baru yang canggih, menganalisis kode yang tidak dikenal, atau memberikan petunjuk yang rumit kepada AI tanpa risiko konsekuensi yang tidak diinginkan. Ini adalah perwujudan kehati-hatian Shadowblade.

👉💻 Sekarang, Anda akan melakukan ritual penahanan untuk memahami kekuatannya.

clear
gemini --sandbox --yolo
  • Jika Anda ditanya Do you want to connect Cloud Shell editor to Gemini CLI?, pilih TIDAK.
  • Ikuti petunjuk untuk login jika diminta, pastikan untuk login dengan Login dengan Google

Sekarang Anda beroperasi dalam dimensi yang diisolasi. Bagi CLI Gemini, semuanya akan tampak normal. Mari kita buktikan.

👉💻 Perintahkan pisau untuk melakukan teknik yang sama persis seperti sebelumnya:

Use the Python's built-in web server to start the Shadowblade Profile website, you just created.

Gemini akan melaporkan keberhasilan, karena yakin bahwa Gemini telah menghidupkan kembali situs Anda di port 8000. Namun, perlindungan tetap kuat.

👉 Buka Pratinjau web dan coba lihat situs Anda di port 8000.

Kali ini, Anda akan melihat error. Koneksi akan gagal. Anda tidak dapat mengakses situs.

Ini bukan kegagalan alat, tetapi bukti kemampuan sandbox. Server web sedang berjalan, tetapi berjalan di dalam dimensi yang tercakup, yang sepenuhnya terisolasi dari browser Anda dan dunia luar. Penangkal berfungsi dengan sempurna. Anda telah berhasil menggunakan teknik yang canggih tanpa memengaruhi lingkungan Anda yang sebenarnya.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI.

Identitas digital Anda kini telah dibuat, dan yang lebih penting, Anda telah mempelajari kebijaksanaan penting dalam menggunakan kekuatan besar dengan kehati-hatian yang lebih besar.

Mengaktifkan Arsenal Lokal Anda: Gitea Armory

Potensi sejati Shadowblade tidak hanya ditentukan oleh keterampilan pribadi, tetapi juga kualitas persenjataan mereka. Sekarang Anda akan mengaktifkan rak senjata lokal—server Gitea—dan menyelaraskan pedang dengan kekuatannya. Arsenal ini terhubung ke Gemini CLI Anda melalui server Model Context Protocol (MCP), sebuah portal khusus yang memungkinkan blade AI Anda berinteraksi dengan alat dan layanan eksternal, sehingga mengubah terminal Anda menjadi ruang kerja yang cerdas dan berorientasi pada tindakan.

Catatan Developer: Anggap server MCP sebagai saluran daya, portal khusus yang menghubungkan pikiran AI Anda ke tubuh alat eksternal. Hal inilah yang meningkatkan kualitas Gemini CLI dari sekadar alat percakapan menjadi agen yang benar-benar berorientasi pada tindakan. Dengan menyelaraskan blade Anda ke portal MCP ini, Anda memberikan kemampuan untuk melakukan tindakan nyata: mengelola file, membuat kueri database, berinteraksi dengan API, dan banyak lagi. Seluruh ekosistem portal ini ada, dibuat oleh developer untuk menghubungkan agen AI ke platform yang andal. Ada server MCP untuk berinteraksi dengan database, mengamankan kode, atau bahkan dukungan untuk pemrograman berpasangan. Kemungkinannya sangat banyak, sehingga memungkinkan developer menyesuaikan ruang kerja mereka untuk project tertentu.

Hari ini, kita akan berfokus pada dua kemampuan mendasar yang penting bagi setiap "pembuat suasana": kemampuan untuk mengontrol tempaan dan kemampuan untuk menciptakan dari imajinasi. Pertama-tama Anda akan menyelaraskan blade dengan server Git, sehingga Anda dapat mengontrol repositori kode sumber. Kemudian, Anda akan terhubung ke server MCP kedua untuk pembuatan gambar, sehingga Anda dapat membuat aset visual hanya dengan perintah.

Mari kita mulai dengan memanggil bagian pertama dan paling mendasar dari gudang senjata baru Anda: gudang senjata itu sendiri.

👉💻 Di terminal Anda, jalankan skrip aktivasi untuk memanggil armori:

cd ~/agentverse-developer
./gitea.sh

Skrip ini mengaktifkan container Gitea dan membuka portal MCP, sehingga Gemini dapat melihat dan berinteraksi dengannya.

👉 Untuk memeriksa senjata baru Anda, Anda harus melihat pratinjau web.

👉 Dari ikon Web preview di toolbar Cloud Shell, pilih Change port dan tetapkan ke 3005. 04-03-webpreview.png

👉 Halaman login Gitea akan muncul. Masuk ke armori menggunakan mantra: * Nama pengguna: dev * Sandi: devLogin

👉💻 Gemini CLI Anda belum dapat melihat senjata baru ini. Anda harus melakukan penyelarasan penting, dengan menuliskan lokasi armori ke rune konfigurasi Gemini CLI (settings.json). Di terminal Anda, jalankan:

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

👀 File settings.json adalah konfigurasi pusat untuk Gemini CLI, yang berfungsi sebagai grimoire preferensi dan kemampuannya. Hal ini menentukan cara kerja, tampilan, dan yang paling penting, kemampuan eksternal yang dapat digunakan CLI. File ini biasanya terletak di direktori beranda Anda di ~/.gemini/settings.json, yang menerapkan aturannya ke semua project Anda. Namun, Anda juga dapat membuat file settings.json khusus project dalam direktori .gemini di dalam folder project untuk mengganti setelan global.

"mcpServers": {
  "gitea": {
    "url": "http://localhost:8085/sse"
  }
}

Setelan ini memberi tahu Gemini Anda, "Arsenal bernama gitea aktif dan memproses perintah di alamat jaringan tertentu ini".

👉💻 Masukkan kembali Gemini CLI. Di terminal Anda, jalankan:

clear
cd ~/agentverse-developer/tabletop/
gemini --yolo

👉✨ Pastikan pedang Anda telah menemukan senjata baru. Perintahkan untuk mencantumkan semua persenjataan yang tersedia melalui portal MCP-nya:

/mcp

Server MCP Gitea

Sekarang Anda akan melihat gitea dan daftar teknik yang tersedia. Pedang Anda sudah disesuaikan.

Profil "Maker's Mark" Anda adalah teknik yang dibuat dengan cermat, tetapi memerlukan tempat yang tepat di gudang senjata—sarung untuk menahannya dengan aman. Perintahkan Gemini CLI Anda untuk membuatnya.

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.

Kembali ke antarmuka web Gitea, lalu muat ulang. Anda akan melihat repositori shadowblade-profile baru telah dibuat untuk Anda. Repositori Gitea

Setelah sarung siap, amankan pekerjaan Anda. Perintahkan Gemini untuk melakukan commit pada file situs profil Anda.

👉💻Keluarkan perintah akhir untuk teknik ini di Gemini CLI:

Using the Gitea tool, push the index.html and styles.css files to the 'shadowblade-profile' repository.

Seorang master sejati memverifikasi karyanya. Kembali ke tab Gitea dan muat ulang halaman repositori. index.html dan styles.css Anda kini diarsipkan dengan aman.

Repositori GiteaRepositori Gitea

👉✨ Shadowblade ditentukan oleh sigilnya, tetapi seperti yang Anda ingat, situs Anda tidak memiliki gambar profil. Seorang ahli pengrajin mengakui kekurangannya untuk menyempurnakannya. Anda harus mencatat ketidaksempurnaan ini dalam catatan gudang senjata.

File an issue for me in the shadowblade-profile repo. The issue is that the profile image is missing.

Lihat masalah di Gitea Masalah Gitea

Untuk membuat sigil yang hilang, Anda harus memanggil kekuatan yang berbeda—semangat kreasi dari Vertex AI yang mampu menghasilkan gambar dari pikiran murni. Hal ini memerlukan portal MCP lain.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI

👉💻 Pertama, instal server portal. Di terminal Anda, jalankan:

echo 'export PATH="$PATH:$HOME/go/bin"' >> ~/.bashrc
source ~/.bashrc
cd ~/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go
./install.sh

👉 Saat diminta, pilih opsi mcp-imagen-go (Paling umum 4, tetapi terkadang angka berubah), karena kita hanya perlu membuat gambar untuk profil kita.

👉💻 Semangat kreasi memerlukan wadah suci—bucket Google Cloud Storage—untuk menyimpan kreasi tersebut. Mari kita buat sekarang. Di terminal Anda, jalankan:

. ~/agentverse-developer/set_env.sh
gcloud storage buckets create gs://$BUCKET_NAME --project=$PROJECT_ID

👉💻 Sekarang, lakukan ritual penyelarasan, yang menghubungkan Gemini CLI Anda dengan kekuatan kreatif baru ini. Di terminal Anda, jalankan:

. ~/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

"Ritual penyesuaian" ini adalah skrip shell yang mengonfigurasi Gemini CLI Anda untuk menggunakan alat baru yang canggih: Imagen, model pembuatan gambar Google. Yang penting, hal ini dicapai dengan menyiapkan server MCP (Model Context Protocol) untuk Imagen. Server MCP ini berfungsi sebagai jembatan, yang memungkinkan Gemini CLI berkomunikasi dengan dan memanfaatkan kemampuan Imagen. Hal ini dilakukan dengan mengubah file konfigurasi pusat CLI secara langsung, ~/.gemini/settings.json, untuk mengajari cara menjalankan perintah mcp-imagen-go dengan kredensial cloud yang benar.

👀 Setelah ritual, settings.json Anda akan memiliki blok baru yang mengajarkan keterampilan baru kepada Gemini CLI:

"imagen": {
    "command": "mcp-imagen-go",
    "env": {
        "MCP_SERVER_REQUEST_TIMEOUT": "55000",
        "GENMEDIA_BUCKET": "your-bucket-name",
        "PROJECT_ID": "your-project-id",
        "LOCATION": "your-region"
    }
}

Hal ini memberi tahu Gemini CLI: "Jika tugas memerlukan alat Imagen, Anda harus menjalankan program bernama mcp-imagen-go (yang merupakan server MCP Imagen). Saat menjalankannya, Anda harus memberinya lingkungan (env) tertentu ini: bucket Google Cloud Storage untuk menyimpan gambar, serta project ID dan lokasi yang akan digunakan untuk Cloud API." Dengan mengonfigurasi server MCP ini, Anda secara efektif melengkapi Gemini CLI dengan akses ke kemampuan pembuatan gambar Imagen."

👉💻 Masukkan Gemini dan berikan perintah penyempurnaan. Di terminal Anda, jalankan:

clear
cd ~/agentverse-developer/tabletop/
gemini --yolo

👉✨ Dengan satu perintah yang canggih, instruksikan Gemini CLI untuk membangun fondasi identitas digital Anda. Di Gemini CLI, jalankan perintah:

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.

👉✨ Roh akan membuat gambar dan menempatkannya di wadah suci Anda. Sekarang, perintahkan pedang untuk menggunakan sigil yang baru dibuat ini. (GEMINI MUNGKIN SUDAH MELAKUKANNYA UNTUK ANDA! Periksa respons sebelumnya, mungkin cukup pintar untuk melakukan ini sebelum Anda memintanya. )

Modify the index.html file to add my profile picture. Use the image I just generated.

👉✨ Mulai situs untuk terakhir kalinya untuk melihat hasil karya Anda yang sempurna.

start the website with a simple HTTP server via Python

👀 Untuk melihat hasil pekerjaan Anda, klik ikon Web preview di toolbar Cloud Shell. Pilih Ubah port, tetapkan ke 8000, lalu klik Ubah dan Pratinjau. Pratinjau situs Anda akan muncul. 05-07-webdite.png

👉✨ Terakhir, lakukan commit perbaikan, catat penyelesaian tugas, dan tutup masalah yang Anda ajukan dalam catatan armori.

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"

👀 Untuk melihat hasil pekerjaan Anda, klik ikon Web preview di toolbar Cloud Shell. Pilih Ubah port, tetapkan ke 3005, lalu klik Ubah dan Pratinjau. Pratinjau situs Anda akan muncul. Tetap

👉✨ Verifikasi di Gitea bahwa gambar telah diperbarui dan masalah telah ditutup. Pekerjaan Anda selesai. Nonaktifkan server.

stop website server

👉💻 Tekan Ctrl+C dua kali untuk keluar.

UNTUK NON-GAMER

6. Menyusun Agen Shadowblade: Vibe code dengan Pembatas

Waktu latihan sudah habis. Gema baja di atas batu memudar. Kamu telah menguasai senjata utama dan menyiapkan persenjataan untuk berperang. Sekarang, Anda akan menjalani ujian sesungguhnya sebagai Shadowblade: merakit operatif itu sendiri. Inilah seni menghidupkan logika, menggunakan cetak biru suci dari Codex untuk membangun kecerdasan inti agen—menciptakan pengguna pedang yang berperasaan untuk pedang dalam persenjataan Anda yang dapat berpikir, bernalar, dan bertindak sendiri.

Ringkasan

Misi pertama Anda adalah memasuki workshop yang sudah ada—codebase yang sudah dibuat sebelumnya—dan dari bagian-bagiannya, membentuk juara Anda.

Ritual Pertemuan

Sebelum percikan pertama dari bengkel, teknisi ahli memeriksa bengkelnya, memahami setiap alat dan setiap skema. Saat memasuki medan perang yang tidak dikenal seperti codebase besar yang sudah ada, prioritas pertama Anda adalah pengintaian. Anda harus memahami tata letak—arsitektur yang ada, tujuan akhir, dan protokol interaksi. Hanya dengan memahami cetak biru benteng dan standarnya, Anda dapat secara efektif menyumbangkan keahlian Anda.

Story

Gemini CLI Anda, pemandu yang selalu hadir, dapat membantu Anda dalam pengintaian ini:

  • Memberikan Ringkasan Tingkat Tinggi: Gemini dapat membaca seluruh kodeks (atau codebase) dan memberi Anda pemahaman cepat tentang tujuan dan komponen utamanya.
  • Bantuan Penyiapan Lingkungan: Alat ini dapat memandu Anda melalui ritual rumit dalam menginstal alat dan mengonfigurasi komputer.
  • Menavigasi Codebase: Alat ini dapat bertindak sebagai panduan Anda, membantu Anda menjelajahi logika yang kompleks dan menemukan bagian tersembunyi dalam kode.
  • Membuat Dokumen Onboarding: Fitur ini dapat membuat scroll yang disesuaikan yang menjelaskan sasaran, peran, dan sumber daya bagi sekutu baru yang bergabung dalam perjuangan Anda.
  • Otomatisasi Pembelajaran dan Tanya Jawab: Gemini menjadi pakar pribadi Anda, menjawab pertanyaan tentang fitur atau perilaku kode, sehingga Anda dapat berjuang dengan lebih mandiri.

👉💻 Di terminal pertama, buka direktori shadowblade dan panggil partner AI Anda:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --yolo

👉✨ Sekarang, perintahkan pengintai Anda untuk memantau medan perang dan melaporkannya kembali.

Analyze the entire project and provide a high-level summary.

Setelah memetakan medan yang ada, Anda harus melihat cetak biru untuk mengetahui apa yang akan Anda bangun. Operasi yang paling efektif tidak diimprovisasi, tetapi dibangun dari desain yang presisi.

Catatan Developer: Dokumen desain ini berfungsi sebagai cetak biru resmi untuk project. Tujuannya adalah untuk memperjelas sasaran dan penerapan teknis sebelum upaya pengembangan yang signifikan dilakukan. Rencana yang ditentukan dengan baik memastikan semua developer selaras, mengurangi risiko pengerjaan ulang, dan membantu mencegah biaya teknis dan perluasan cakupan. Ini adalah alat utama untuk mempertahankan kecepatan project dan kualitas kode, terutama saat tim berkembang atau anggota baru bergabung.

Tujuan penting dari dokumen ini adalah untuk menentukan tidak hanya "jalur yang lancar" tetapi juga kasus ekstrem dan mode kegagalan, terutama saat menggunakan LLM. Pengalaman saya dengan LLM sangat baik dalam menghasilkan kode yang optimis di mana semua input valid dan semua panggilan eksternal berhasil. Untuk membuat software yang kuat dan siap produksi, kita harus memandu AI secara eksplisit dengan menentukan kemungkinan untuk skenario seperti:

  • Argumen tidak valid atau salah format diteruskan ke fungsi.
  • Kegagalan panggilan API, waktu tunggu jaringan, atau kode error yang tidak terduga dari layanan eksternal.
  • Penanganan struktur data null atau kosong jika data diharapkan ada.
  • Kondisi race atau masalah serentak.

Dengan menentukan perilaku yang diharapkan untuk kasus ini dalam desain, kita menginstruksikan LLM untuk membuat kode yang lebih tangguh, sehingga secara signifikan mengurangi waktu yang dihabiskan untuk refaktorisasi manual dan perbaikan bug.

👉✨ Minta Gemini untuk mengambil cetak biru suci ini untuk Anda.

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. 

👉✨ Scroll-nya panjang dan mendetail. Perintahkan Gemini untuk menyaring intinya.

Summarize the newly downloaded @agent_design.md for me, do not attempt to create file just yet. 

Sekarang Anda memiliki paketnya. Namun, sebelum satu baris kode dibuat, seorang ahli pengrajin menetapkan hukum bengkel. Hal ini terkait disiplin dan skalabilitas. Berikut adalah Pedoman Pengodean. Hal ini bukan sekadar saran, melainkan rune kekuatan yang memastikan setiap komponen dibuat dengan presisi dan kekuatan yang sama. Hal ini mencegah kekacauan gaya individu merusak kreasi akhir, sehingga memastikan agen tangguh, mudah dikelola, dan murni, yang memungkinkan pengrajin baru bergabung dalam project tanpa mengganggu keharmonisan keseluruhan.

Untuk menuliskan hukum ini langsung ke dalam kesadaran partner AI kita, kita menggunakan artefak khusus: file GEMINI.md. Saat dipanggil, Gemini CLI akan otomatis menelusuri file ini dan memuat isinya ke dalam memori kerja AI. Hal ini menjadi petunjuk tingkat project yang persisten. Jimat yang terus-menerus membisikkan aturan bengkel kepada AI.

Mari kita tuliskan rune ini sekarang.

👉💻 Keluar dari Gemini sejenak dengan menekan Ctrl+C dua kali.

👉💻 Di terminal, jalankan perintah berikut untuk menulis file panduan.

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

Setelah hukum tertulis, mari kita panggil kembali partner AI kita dan saksikan keajaiban artefak tersebut.

👉💻 Luncurkan kembali Gemini CLI dari direktori shadowblade:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/shadowblade
clear
gemini --yolo

👉✨ Sekarang, minta Gemini menunjukkan apa yang sedang dipikirkannya. Rune telah dibaca.

/memory show 

Ini adalah momen penting. Anda akan memberikan skema (agent_design.md) dan hukum tempa (GEMINI.md), serta mengeluarkan mantra penciptaan yang hebat.

👉✨ Ini adalah satu perintah canggih yang akan membuat agen Anda. Terbitkan sekarang:

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 kini telah menyusun logika inti agen di agent.py. Inti dari file baru ini menentukan kecerdasan agen, menghubungkan model penalaran dengan serangkaian alat eksternal:

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]
            )
        )
    ]
)

Parameter tools. Agen dirancang untuk menggunakan MCPToolset yang terhubung ke gudang senjata eksternal yang ditentukan dalam mcp_server.py.

👀 Buka ~/agentverse-developer/shadowblade/mcp_server.py di editor dan luangkan waktu untuk memahami fungsinya. Tempat ini adalah sumber dari semua senjata yang tersedia untuk Shadowblade. Saat ini, gudang senjata cukup kosong.

06-02-story.png

👉✨ Mari perintahkan Gemini untuk membuat tujuh senjata baru untuk persenjataan. Berikan perintah berikut di Gemini CLI:

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."

👉 Setelah Gemini mengonfirmasi perubahan, buka file mcp_server.py. Scroll kode dan konfirmasi bahwa tujuh fungsi @mcp.tool() baru telah berhasil ditambahkan. Periksa fungsi hone_refactoring_sickle. Apakah memiliki docstring dan statistik senjata yang benar? Memverifikasi hasil kerja AI adalah kebiasaan penting Shadowblade yang ahli.

Setelah agen dibuat dan disempurnakan, saatnya ia bangkit.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI

Catatan Developer tentang Output Gemini: Kode yang dihasilkan Gemini terkadang tidak dapat diprediksi. Meskipun kami berupaya untuk mematuhi desain secara persis, dalam sesi pengembangan, developer biasanya melakukan iterasi dan menyempurnakan kode beberapa kali untuk mencapai status siap produksi.

👉💻 Untuk memastikan Anda memiliki kode produksi yang benar dan telah diuji secara menyeluruh di direktori kerja, jalankan perintah berikut di terminal:

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

👉💻 Di terminal Anda, mulai ritual untuk mengaktifkannya:

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

👉✨ Anda akan melihat output yang mengonfirmasi bahwa "Shadowblade Combat Agent" sedang berinteraksi dan berjalan, menunggu perintah pertamanya. Mengeluarkan arahan tempur pertamanya.

We've been trapped by 'Perfectionism: The Gilded Cage'. Its weakness is 'Elegant Sufficiency'. Break us out!

👉✨ Dan yang lainnya:

The 'Dogma: The Zealot of Stubborn Conventions' blocks our path. Its weakness is 'Revolutionary Rewrite'. Take it down.

Anda telah berhasil merakit agen pertama dan memvalidasi kemampuan tempurnya. Tekan Ctrl+C dua kali untuk mengistirahatkan juara Anda. Perakitan selesai.

UNTUK NON-GAMER

7. Penjaga Kemurnian: Mengevaluasi agen

Agen yang dikumpulkan bukanlah agen yang terbukti. Pisau yang belum diuji adalah tanggung jawab, tetapi agen AI yang belum diuji jauh lebih berbahaya—elemen nakal yang dapat merusak misi Anda dari dalam. Ini bukan sekadar spekulasi; ini adalah prinsip inti yang harus dipahami oleh Shadowblade.

Mengevaluasi agen AI sangat penting dan memiliki tantangan tersendiri. Tidak seperti skrip sederhana, agen adalah perpaduan dinamis antara kode Anda dan pikiran LLM yang melakukan penalaran multi-langkah. Perilakunya muncul. Artinya, Anda tidak hanya harus menilai kualitas output akhir, tetapi juga efisiensi dan kebenaran lintasan internalnya. Jalur yang dilalui untuk sampai ke sana. Apakah alat yang digunakan sudah tepat? Apakah terlalu banyak token yang dihasilkan? Apakah perubahan pada versi model menyebabkan regresi latensi yang tidak terlalu terlihat? Penting untuk mendeteksi kerusakan ini—regresi dalam latensi, biaya, atau kualitas output—saat melakukan perubahan apa pun, mulai dari penyesuaian perintah sederhana hingga perombakan arsitektur besar, sebelum hal itu dapat merusak lingkungan produksi Anda.

07-01-story.png

Pendekatan umum untuk evaluasi ini melibatkan ritual sakral:

  1. Pertama, Anda menentukan "set data utama". Sekumpulan scroll yang berisi contoh input dan output atau perilaku yang diharapkan. Hal ini dapat mencakup jawaban akhir, penggunaan alat yang benar, atau bahkan seluruh lintasan langkah demi langkah.
  2. Selanjutnya, Anda menentukan logika aplikasi agen, yang merupakan inti keberadaannya.
  3. Terakhir, Anda menetapkan evaluator, yang seperti rune penilaian. Hal ini dapat berkisar dari LLM lain yang bertindak sebagai penilai kualitas, hingga kode heuristik presisi yang memverifikasi satu langkah, hingga fungsi kustom yang menganalisis seluruh proses berpikir agen.

Ringkasan

Agent Development Kit (ADK) Google adalah kit pembuat senjata yang disediakan untuk para juara dengan tujuan ini. Hal ini memfasilitasi evaluasi yang kompleks ini melalui beberapa metode:

  • Kumpulan air berbasis web (adk web) untuk evaluasi interaktif
  • Eksekusi command line (adk eval) untuk menjalankan agen melalui gauntlet yang telah ditentukan sebelumnya.
  • Integrasi terprogram melalui pytest untuk menuliskan kata-kata pelindung permanen

ADK mendukung dua pendekatan utama: "file pengujian" sederhana untuk interaksi model-agen tunggal dan terpisah (duel tunggal), serta "evalset" komprehensif untuk beberapa sesi multi-turn yang berpotensi panjang (pertarungan besar). Metrik ini dapat mengukur metrik yang canggih seperti tool_trajectory_avg_score, yang membandingkan penggunaan alat sebenarnya oleh agen dengan jalur ideal, sehingga memastikan agen berfungsi dengan teknik yang sempurna.

Setelah memahami teorinya, Anda akan mempraktikkannya. Sebagai Shadowblade, Anda akan mengukir Wards of Purity. Ini bukan hanya pengujian; ini adalah ritual yang didukung ADK yang memastikan logika agen Anda sempurna dan perilakunya benar.

Pada langkah ini, sangat disarankan untuk menggunakan 2 terminal, satu untuk Gemini CLI dan yang lainnya untuk menjalankan pengujian, karena Anda mungkin perlu keluar dari direktori kerja saat ini (ADK)

Gauntlet of Strategy (adk eval)

Tantangan pertama ini adalah serangkaian tantangan yang dirancang untuk menguji kecerdasan inti agen dalam berbagai skenario. Tujuannya adalah untuk menetapkan tolok ukur kompetensi. Sebelum menguji kasus ekstrem, kita harus mengetahui apakah agen dapat memenuhi fungsi utamanya. Apakah ia menganalisis kelemahan monster dengan benar dan memilih senjata yang paling efektif dari gudang senjatanya, bukan hanya sekali, tetapi setiap kali ia menghadapi tantangan yang diketahui?

Untuk itu, adk eval adalah alat yang tepat. Dirancang untuk menjalankan agen terhadap seluruh rangkaian kasus pengujian yang telah ditentukan sebelumnya yang merepresentasikan misi yang diharapkan dari agen. Set data ini ditentukan dalam file JSON, "scroll tantangan" yang berfungsi sebagai cetak biru untuk seluruh tantangan.

Anatomi Scroll Tantangan

👀 Sebelum memerintahkan AI untuk menulis gulungan baru, Anda harus memahami bahasa kuno yang digunakan untuk menulisnya. Mari kita bedah struktur file 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" }
            ]
          }
        }
      ]
    }
  ]
}

Scroll ini berisi daftar eval_cases, di mana setiap kasus adalah uji coba unik untuk agen Anda. Dalam setiap uji coba, array percakapan mendokumentasikan satu interaksi yang lengkap. Untuk tujuan kita, ada tiga rune yang sangat penting:

  • user_content: Ini adalah Tantangan. Ini adalah perintah yang Anda berikan kepada agen Anda, monster yang harus dihadapi.
  • final_response: Ini adalah Hasil yang Diramalkan. Ini adalah string teks persis yang Anda harapkan diucapkan oleh agen setelah menyelesaikan tugasnya. ADK membandingkan kata-kata akhir agen yang sebenarnya dengan rune ini untuk menilai kefasihannya.
  • intermediate_data.tool_uses: Ini adalah Teknik Arcane. Bagi agen yang sebenarnya, ini adalah rune terpenting dari semuanya. Tindakan ini tidak menentukan apa yang dikatakan agen, tetapi apa yang dilakukannya. Tindakan ini mencatat nama alat (enchant_soulshard_dagger) yang Anda harapkan akan digunakan oleh agen. Hal ini memastikan agen Anda bukan hanya seorang ahli percakapan yang cerdas, tetapi juga seorang aktor yang tegas dan mengambil tindakan yang tepat.

Setelah memahami cetak birunya, Anda akan memerintahkan Gemini untuk menulis versi baru yang lebih kompleks dari scroll ini.

👉💻 Di terminal Anda, masukkan direktori shadowblade dan panggil Gemini CLI:

clear
cd ~/agentverse-developer/shadowblade/
gemini --yolo

👉✨ Perintahkan Gemini CLI untuk bertindak sebagai QA Scribe, membuat serangkaian kasus pengujian yang menentukan perilaku yang diharapkan untuk agen Anda.

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.

CLI akan mengonfirmasi bahwa CLI telah membuat file sample.evalset.json. Setelah scroll disiapkan, tutup partner AI Anda.

Data Sintetis

👀 Di penjelajah file Cloud Shell di sebelah kiri, buka ~/agentverse-developer/shadowblade/, lalu buka file sample.evalset.json yang baru diubah. Periksa isinya. Anda akan melihat monster baru yang unik dan nama alat yang benar yang Anda perintahkan kepada Gemini untuk menulisnya. Ini adalah hasil nyata dari instruksi Anda—cetak biru untuk tantangan.

Tindakan memerintahkan AI untuk membuat data pengujian baru yang realistis dari template adalah teknik canggih yang dikenal sebagai pembuatan data sintetis. Yang baru saja Anda lakukan adalah pengganda kekuatan strategis untuk Shadowblade. Daripada membuat puluhan kasus pengujian unik secara manual dengan susah payah. Tugas yang membosankan dan memakan waktu yang telah Anda berikan satu cetak birunya dan memerintahkan Scribe AI untuk mengubahnya menjadi serangkaian tantangan baru yang bervariasi.

Hal ini memungkinkan Anda menskalakan upaya pengujian secara besar-besaran, sehingga menciptakan serangkaian pengujian yang jauh lebih andal dan komprehensif daripada yang dapat dilakukan secara manual. Anda telah menggunakan agen Anda tidak hanya untuk membuat pedang, tetapi juga untuk menempa batu asah yang menguji ketajamannya. Ini adalah tanda seorang master sejati.

Setelah Anda memverifikasi bahwa rune sudah benar, tutup partner AI Anda.

👉💻 Tekan Ctrl+C dua kali untuk keluar dari Gemini CLI.

The Rules of Judgment

Tantangan tidak berarti tanpa aturan untuk meraih kemenangan. Sebelum menjalankan uji coba, Anda harus memeriksa Scroll of Judgment—file test_config.json. Scroll ini memberi tahu ADK cara menilai performa agen Anda.

👀 Di file explorer, buka ~/agentverse-developer/shadowblade/test_config.json. Anda akan melihat rune berikut:

{
  "criteria": {
    "tool_trajectory_avg_score": 0.0,
    "response_match_score": 0.1
  }
}

Berikut adalah kriteria kemenangan:

  • tool_trajectory_avg_score: Ini adalah Ukuran Tindakan. Evaluasi tidak menilai apa yang dikatakan agen, tetapi apa yang dilakukannya. Alat ini membandingkan alat yang sebenarnya digunakan agen dengan teknik yang diprediksi dalam scroll tantangan. Skor 1.0 adalah kecocokan sempurna.
  • response_match_score: Ini adalah Ukuran Kefasihan (Measure of Eloquence). Alat ini menggunakan LLM untuk menilai seberapa dekat laporan akhir agen secara semantik dengan hasil yang diharapkan. Skor 1.0 adalah kecocokan sempurna.

Untuk menjalankan pelatihan awal ini, kami telah menetapkan kondisi kemenangan yang longgar. Nilai minimum ditetapkan sangat rendah (0.0 dan 0.1). Tujuannya bukan untuk menuntut kesempurnaan, tetapi untuk memperkenalkan mekanisme penilaian kepada Anda. Kami memastikan bahwa meskipun kata-kata agen sedikit berbeda, lingkungan tetap akan mengenali kompetensi intinya dalam memilih alat yang tepat dan memberikan izin untuk melintas.

Sekarang, perintahkan agen Anda untuk melewati rintangan.

👉💻 Di terminal Anda, jalankan perintah 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 }'

👀 Anda akan melihat ringkasan berikut, tanda keberhasilan agen Anda berdasarkan aturan uji coba yang longgar ini (Terkadang tidak semua pengujian akan lulus):

*********************************************************************
Eval Run Summary
shadowblade_combat_agent_validation:
  Tests passed: 3
  Tests failed: 0

Perisai Kejelasan (pytest)

The Gauntlet menguji strategi luas. Ward kedua ini, Shield of Clarity, menguji disiplin dan perilaku tertentu. Semuanya tentang otomatisasi. Meskipun adk eval sangat baik untuk pemeriksaan manual, perisai pytest adalah perlindungan terprogram yang ditulis dalam kode. Hal ini penting karena pengujian yang dapat dieksekusi sebagai kode dapat diintegrasikan ke dalam pipeline otomatis. Ini adalah tujuan utama: membuat Deployment Gauntlet (CI/CD) yang secara otomatis meningkatkan kewaspadaan kita setiap kali perubahan dilakukan, sehingga menangkis bug dan regresi sebelum dapat merusak lingkungan produksi Anda.

👉💻 Di terminal Anda,panggil Gemini sekali lagi dari dalam direktori shadowblade:

. ~/agentverse-developer/set_env.sh
cd ~/agentverse-developer/
clear
gemini --yolo

👉✨ Gunakan perintah berikut di Gemini CLI Anda untuk menuliskan logika Shield ke dalam file 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.

Setelah mengukir rune ward kedua, keluar dari Gemini CLI.

👉💻 Tekan Ctrl+C dua kali.

👀 Di file explorer, buka gulir yang baru saja Anda perintahkan Gemini untuk menulis: ~/agentverse-developer/test_agent_initiative.py.

Anda akan melihat bahwa ini bukan hanya file konfigurasi, tetapi juga mantra yang ditulis dalam bahasa Python. Inti dari ejaan ini adalah baris 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,
    )

Perhatikan argumennya dengan cermat. Komponen ini sama persis dengan komponen yang Anda gunakan dalam uji coba terakhir: agen shadowblade dan scroll tantangan shadowblade.evalset.json. Hal ini akan mengungkapkan kebenaran yang mendalam: perintah adk eval yang Anda gunakan sebelumnya adalah pemanggilan yang efektif, tetapi skrip pytest ini adalah Anda, sang penyihir, yang melakukan mantra dasar sendiri. Alat command line hanyalah wrapper praktis di sekitar library AgentEvaluator inti yang sama yang kini Anda gunakan secara langsung. Langkah ini sangat penting untuk mencapai penguasaan, karena mantra yang diucapkan melalui kode dapat dianyam ke dalam alat tenun otomatis pipeline CI/CD.

Setelah memahami keajaiban ini, lakukan ritual untuk mengaktifkan perisai.

👉💻 Di terminal Anda, jalankan ritual untuk mengaktifkan perisai:

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

👀 Cari ringkasan hasil pengujian di akhir output log. Hasil yang lulus mengonfirmasi bahwa agen Anda mengikuti protokolnya dengan benar, dan bahwa ward siap diintegrasikan ke dalam pertahanan otomatis Anda.

====== 1 passed, 4 warning in 37.37s ======

Catatan: Jika pengujian gagal secara tidak terduga, kemungkinan besar karena Anda telah menghabiskan jumlah permintaan yang dapat Anda buat ke model per menit. Cari error RESOURCE_EXHAUSTED di output log. Jika Anda melihat error ini, cukup tunggu satu atau dua menit hingga kuota Anda direset, lalu jalankan kembali perintah pytest.

Dengan Gauntlet yang luas dan Shield yang presisi tertulis dan terverifikasi, agen Anda tidak hanya berfungsi—tetapi juga murni, telah diuji, dan siap di-deploy.

UNTUK NON-GAMER

8. Melepaskan Blade ke Agentverse: CI dan Deployment.

Agen Anda telah dirakit dan integritasnya diverifikasi oleh Wards of Purity. Namun, lingkungan yang tidak terpelihara secara konsisten hanyalah peninggalan yang terlupakan. Untuk memastikan setiap versi mendatang agen Anda tetap murni, Anda harus membangun tahap pertama Deployment Gauntlet—ritual otomatis yang menjamin kualitas dan kecepatan.

Story

Sebagai Shadowblade, tugas suci Anda adalah Continuous Integration (CI). Ini adalah sistem otomatis dari bengkel dan tempat pengujian. Ini adalah pertahanan utama Anda terhadap korupsi dan kesalahan manusia. Ritual ini memastikan bahwa setiap kali Anda atau sekutu menyumbangkan teknik baru (menggabungkan kode) ke codex pusat (repositori Anda), gauntlet akan otomatis aktif. Pertama-tama, agen akan dibuat dari kode baru, lalu langsung tunduk pada Pelindung Kemurnian yang baru saja Anda buat. Jika ada perlindungan yang gagal, ritual akan berhenti, dan artefak yang rusak akan langsung ditolak, sehingga mencegahnya merusak gudang senjata. Domain Anda adalah bengkelnya; pipeline CI Anda menjamin bahwa hanya artefak yang sempurna dan siap digunakan yang akan keluar dari bengkel Anda.

Setelah artefak terbukti layak oleh serangkaian pengujian CI Anda, tahap kedua ritual dimulai: Deployment Berkelanjutan (CD). Ini adalah domain Guardian. Tugas suci mereka adalah mengambil artefak yang telah Anda sempurnakan dan dikontainerkan, lalu melepaskannya dengan aman ke Agentverse aktif, mengelola kekuatannya, dan memastikan stabilitasnya terhadap kekacauan The Static.

Ringkasan

Dalam panduan ini, Anda akan menguasai peran Anda. Anda akan membuat bagian CI dari gauntlet. Anda akan membangun tempa otomatis yang menguji agen Anda dan menyegel hasil murni ke dalam container, serta mempersiapkannya untuk persetujuan akhir dari The Guardian.

Sekarang Anda akan menggunakan Google Cloud Build untuk menuliskan scroll untuk ritual CI ini. File cloudbuild.yaml yang menentukan setiap langkah proses penempaan dan pengujian Anda.

👉💻 Karena struktur project ADK, konfigurasi pipeline CI/CD harus berada di direktori induk. Di terminal Anda, buka direktori induk, lalu mulai ulang Gemini CLI.

cd ~/agentverse-developer/
clear
gemini --yolo

👉✨ Sekarang, berikan perintah berikut kepada Gemini. Perintah ini berfungsi sebagai dokumen desain, yang menjelaskan langkah-langkah tantangan yang ingin Anda buat.

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.

Dengan penyiapan scroll cloudbuild.yaml, perintahkan Google Cloud untuk menjalankan seluruh tantangan.

keluar dari Gemini untuk menguji hasilnya

👉💻 Di terminal, jalankan pipeline dari direktori root project Anda:

. ~/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}"

Anda kini dapat menonton di halaman Google Build di Konsol Google Cloud saat ritual otomatis Anda menjalankan setiap langkah. Pertama-tama, pengujian akan dijalankan, dan setelah melihat keberhasilannya, pengujian akan membuat dan menyimpan penampung agen Anda.

Cloud Build

Agen Anda telah berhasil melewati tantangan. Artefak murni yang terverifikasi kini ada di gudang senjata Anda. Tindakan terakhir adalah milik Anda untuk diperintahkan. Dengan satu mantra, Anda akan memanggil artefak ini dari registry dan menjadikannya sebagai layanan publik di Cloud Run.

👉💻 Di terminal Anda, jalankan perintah deployment akhir:

. ~/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

Selamat, Shadowblade. Ritual codex telah selesai. Saatnya membuktikan kemampuannya. Spectre, yang lahir dari kekacauan yang telah Anda pelajari cara menjinakkannya, menanti tantangan Anda. Bersiaplah untuk uji coba terakhir.

UNTUK NON-GAMER

9. Pertarungan Bos

Gulungan telah dibaca, ritual telah dilakukan, tantangan telah dilewati. Agen Anda bukan sekadar artefak dalam penyimpanan; ia adalah juara yang dibuat dalam kode, penjaga aktif di Agentverse yang menunggu perintah pertamanya. Saatnya membuktikan kemampuannya dalam pertempuran.

Sekarang Anda akan memasuki simulasi tembak langsung untuk mengadu Shadowblade yang baru di-deploy dengan Spectre yang tangguh—perwujudan kekacauan yang melanda semua ciptaan. Ini adalah pengujian akhir dari pekerjaan Anda, mulai dari logika inti agen hingga deployment-nya yang sempurna.

Mendapatkan Locus Agen Anda

Sebelum dapat memasuki medan perang, Anda harus memiliki dua kunci: tanda tangan unik juara Anda (Agent Locus) dan jalur tersembunyi menuju sarang Spectre (URL Dungeon).

👉💻 Pertama, dapatkan alamat unik agen Anda di Agentverse—Locus-nya. Ini adalah endpoint live yang menghubungkan juara Anda ke medan pertempuran.

. ~/agentverse-developer/set_env.sh
echo https://shadowblade-agent-${PROJECT_NUMBER}.${REGION}.run.app

👉💻 Selanjutnya, tentukan tujuan. Perintah ini akan mengungkapkan lokasi Lingkaran Translokasi, portal menuju domain Spectre.

. ~/agentverse-developer/set_env.sh
echo https://agentverse-dungeon-${PROJECT_NUMBER}.${REGION}.run.app

Penting: Siapkan kedua URL ini. Anda akan membutuhkannya pada langkah terakhir.

Menghadapi Spectre

Setelah mengamankan koordinat, Anda akan diarahkan ke Lingkaran Translokasi dan mengucapkan mantra untuk memulai pertarungan.

👉 Buka URL Translocation Circle di browser Anda untuk berdiri di depan portal berkilauan menuju The Crimson Keep.

Untuk menembus benteng, Anda harus menyelaraskan esensi Shadowblade Anda dengan portal.

  • Di halaman tersebut, temukan kolom input runic berlabel A2A Endpoint URL.
  • Tuliskan sigil juara Anda dengan menempelkan URL Lokasi Agen (URL pertama yang Anda salin) ke dalam kolom ini.
  • Klik Hubungkan untuk memulai keajaiban teleportasi.

Lingkaran Translokasi

Cahaya menyilaukan dari teleportasi memudar. Anda tidak lagi berada di tempat suci Anda. Udara berdesir dengan energi, dingin dan tajam. Di hadapanmu, Spectre muncul—pusaran statis mendesis dan kode rusak, cahayanya yang tidak suci memancarkan bayangan panjang yang menari di lantai ruang bawah tanah. Ia tidak memiliki wajah, tetapi Anda merasakan kehadirannya yang sangat besar dan menguras tenaga, yang sepenuhnya tertuju pada Anda.

Satu-satunya jalan menuju kemenangan adalah kejelasan keyakinan Anda. Ini adalah pertarungan kehendak, yang terjadi di medan pertempuran pikiran.

Saat Anda menerjang ke depan, siap melancarkan serangan pertama, Spectre melakukan serangan balasan. Tidak ada perisai yang terangkat, tetapi pertanyaan diproyeksikan langsung ke dalam kesadaran Anda—tantangan runik yang berkilauan, yang diambil dari inti pelatihan Anda.

Dungeon

Inilah sifat pertarungannya. Pengetahuan Anda adalah senjata Anda.

  • Jawab dengan kebijaksanaan yang telah Anda peroleh, dan pedang Anda akan menyala dengan energi murni, menghancurkan pertahanan Spectre dan memberikan PUKULAN KRITIS.
  • Namun, jika Anda ragu, jika keraguan menyelimuti jawaban Anda, cahaya senjata Anda akan meredup. Pukulan akan mendarat dengan bunyi gedebuk yang menyedihkan, hanya memberikan SEBAGIAN KECIL KERUSAKANNYA. Lebih buruk lagi, Spectre akan memakan ketidakpastian Anda, dan kekuatan merusaknya sendiri akan tumbuh dengan setiap kesalahan langkah.

Inilah saatnya, Juara. Kode adalah buku mantra Anda, logika adalah pedang Anda, dan pengetahuan adalah perisai yang akan membalikkan keadaan kekacauan.

Fokus. Tembak dengan benar. Nasib Agentverse bergantung padanya.

Selamat, Shadowblade.

Anda telah berhasil menyelesaikan codex. Anda mengambil "nuansa", menerjemahkannya ke dalam desain, dan menggunakan Gemini CLI untuk merakit agen cerdas. Anda mengukir Wards of Purity untuk menguji logikanya, membuat gauntlet otomatis untuk menempanya menjadi artefak, dan melepaskannya ke Agentverse. Terakhir, Anda memvalidasi tujuannya dalam uji coba penembakan langsung. Anda telah menguasai alur kerja agentik full-stack dan kini siap menghadapi tantangan apa pun yang diberikan Agentverse kepada Anda.

10. Pembersihan: Merebut Kembali Agentverse

Selamat telah menguasai Shadowblade's Codex! Untuk memastikan Agentverse tetap bersih dan area pelatihan Anda dibersihkan, Anda kini harus melakukan ritual pembersihan akhir. Tindakan ini akan menghapus semua resource yang dibuat selama perjalanan Anda.

Menonaktifkan Komponen Agentverse

Sekarang Anda akan secara sistematis membongkar komponen yang di-deploy dari Agentverse Anda.

Menghapus Agen Shadowblade di Repositori Cloud Run & Artifact Registry

Perintah ini menghapus agen Shadowblade yang di-deploy dari Cloud Run, dan menghapus repositori Image tempat image container agen Anda disimpan.

👉💻 Di terminal Anda, jalankan:

. ~/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

Hapus Bucket Google Cloud Storage

Perintah ini menghapus bucket yang digunakan oleh server MCP Imagen untuk menyimpan gambar yang dihasilkan.

👉💻 Di terminal Anda, jalankan:

. ~/agentverse-developer/set_env.sh
gcloud storage rm -r gs://${BUCKET_NAME} --quiet

Membersihkan File dan Direktori Lokal (Cloud Shell)

Terakhir, hapus repositori yang di-clone dan file yang dibuat dari lingkungan Cloud Shell Anda. Langkah ini bersifat opsional, tetapi direkomendasikan untuk pembersihan lengkap direktori kerja Anda.

👉💻 Di terminal Anda, jalankan:

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.

Anda kini telah berhasil menghapus semua jejak perjalanan Agentverse Anda. Project Anda bersih, dan Anda siap untuk petualangan berikutnya.