Kasus Penggunaan 2: Modernisasi Kode Legacy¶
Durasi: ~60 menit
Tujuan: Memigrasikan aplikasi legacy menggunakan Mode Perencanaan, sub-agen kustom, skill, dan checkpointing. Mempelajari cara menguraikan basis kode yang besar dengan aman.
PRD Latihan: Modernisasi .NET · Peningkatan JavaTerakhir diperbarui: 2026-05-05 · Sumber diverifikasi terhadap repositori gemini-cli
2.1 — Mode Perencanaan: Riset Aman (15 menit)¶
Masuk ke Mode Perencanaan¶
Mode Perencanaan adalah riset hanya-baca. Agen menganalisis basis kode Anda, mengusulkan perubahan, tetapi tidak memodifikasi apa pun sampai Anda menyetujuinya.
CLI menunjukkan bahwa Anda berada di Mode Perencanaan. Agen kehilangan akses ke alat penulisan — ia hanya dapat membaca file, menelusuri web, dan berpikir.
Menganalisis Basis Kode¶
Analyze this codebase for a migration to a modern architecture.
Identify:
1. Key dependencies and their versions
2. Architectural patterns currently in use
3. Areas of technical debt
4. Migration risks and complexity hotspots
Apa yang terjadi: Agen membaca proyek — package.json, file sumber, konfigurasi — dan membangun model mental. Ia mengeksplorasi basis kode Anda sesuai permintaan menggunakan alat seperti
read_file,glob, dangrep_searchuntuk melacak setiap dependensi, pola, dan anti-pola.
Meninjau Rencana¶
Agen menghasilkan rencana migrasi terstruktur. Tinjau dengan cermat:
Propose a step-by-step plan to modernize the authentication system
from session-based to JWT with refresh tokens. Include:
- Files that need to change
- Order of operations
- Risk assessment for each step
- Rollback strategy
Pengeditan Rencana Kolaboratif¶
Buka editor eksternal untuk menyempurnakan rencana:
Ini membuka $EDITOR Anda (atau editor bawaan) di mana Anda dapat memodifikasi rencana secara langsung. Agen melihat editan Anda dan menyesuaikan pendekatannya.
Keluar dari Mode Perencanaan¶
Beralih kembali ke mode normal. Sekarang agen dapat mengeksekusi rencana yang disetujui.
2.2 — Perutean dan Pengarahan Model (10 menit)¶
Perutean Model Otomatis¶
Gemini CLI dapat secara otomatis memilih di antara model-model berdasarkan kompleksitas tugas:
| Jenis Tugas | Model Tipikal | Alasan |
|---|---|---|
| Perencanaan, analisis arsitektur | Gemini Pro | Penalaran kompleks, analisis bentuk panjang |
| Pembuatan kode, pengeditan file | Gemini Flash | Eksekusi cepat, biaya lebih rendah |
| Kueri sederhana, pemeriksaan status | Gemini Flash | Dioptimalkan untuk kecepatan |
Perutean ini bersifat heuristik, bukan deterministik — CLI mengevaluasi kompleksitas prompt dan memilihnya dengan sesuai. Anda dapat menimpanya dengan
/modeluntuk memilih model tertentu. Lihat Perutean Model untuk detailnya.
Pengarahan Model 🔬¶
Selama eksekusi, Anda dapat mengarahkan agen di tengah proses:
# While the agent is working on a migration step:
Actually, skip the database migration for now. Focus on the API
layer first — we need the endpoints working before we touch the schema.
Pengarahan model memungkinkan Anda mengoreksi arah tanpa harus memulai dari awal. Agen menyesuaikan rencananya berdasarkan input Anda dan melanjutkan dari arah yang baru.
Periksa Model Mana yang Aktif¶
Menampilkan model saat ini, penggunaan token, dan status caching.
2.3 — Rekayasa Konteks untuk Migrasi (10 menit)¶
Proyek migrasi adalah tempat di mana rekayasa konteks memberikan keuntungan terbesar. Basis kode legacy penuh dengan pengetahuan implisit — pola arsitektur, penggunaan API yang sudah usang, rantai dependensi tersembunyi — yang tidak tertulis di mana pun. Agen perlu menginternalisasi ini sebelum dapat mengubah apa pun dengan aman.
Ada dua pendekatan: manual (Anda menulis GEMINI.md) dan didorong oleh agen (agen menulisnya untuk Anda). Keduanya menghasilkan artefak yang sama, tetapi pendekatan yang didorong oleh agen sering kali memunculkan hal-hal yang mungkin Anda lewatkan.
Didorong oleh Agen: Orientasi Mandiri dengan @codebase_investigator¶
Pola paling kuat untuk migrasi adalah meminta agen menyelidiki basis kode dan menulis GEMINI.md-nya sendiri. Ini adalah pola "orientasi mandiri agen" — ini mencerminkan apa yang dilakukan oleh insinyur senior saat bergabung dengan proyek baru, tetapi pada kecepatan mesin.
Langkah 1 — Selidiki:
@codebase_investigator Analyze this entire codebase. Map:
1. Framework versions, build system, and dependency tree
2. Architectural patterns (MVC, data access layers, security config)
3. All javax.* imports that will need jakarta.* migration
4. Configuration files and property sources
5. Test frameworks and coverage patterns
Report any migration risks or complexity hotspots.
Apa yang terjadi: Sub-agen
@codebase_investigatormembaca setiap file, melacak impor, memetakan hierarki kelas, dan membangun gambaran lengkap — semuanya dalam mode hanya-baca. Ia tidak pernah memodifikasi apa pun.
Langkah 2 — Hasilkan konteks:
Based on your codebase analysis, write a GEMINI.md that:
1. Documents what you found (current state: Boot 2.6, Java 8, javax.*)
2. Defines the target state (Boot 3.3, Java 21, jakarta.*)
3. Lists migration rules (one module at a time, preserve API contracts)
4. Encodes testing standards (every phase must pass mvn clean verify)
5. Flags the specific risks you identified
Write this file to the project root as GEMINI.md.
Langkah 3 — Tinjau dan perbaiki:
Agen menghasilkan GEMINI.md yang didasarkan pada apa yang sebenarnya ditemukannya di dalam kode — bukan tebakan. Tinjau, tambahkan konvensi spesifik tim apa pun, dan setujui. Mulai dari titik ini dan seterusnya, setiap perintah migrasi yang dieksekusi oleh agen dipandu oleh konteks ini.
Mengapa ini berhasil: Agen menulis instruksi untuk dirinya sendiri. GEMINI.md yang dihasilkannya menjadi pagar pengaman untuk pekerjaannya sendiri selanjutnya. Ini adalah loop yang memperkuat diri sendiri: konteks yang lebih baik → perubahan kode yang lebih baik → agen mempelajari lebih banyak pola → konteks meningkat lebih jauh (melalui Auto Memory).
Lihat praktiknya: Java Upgrade PRD menggunakan pola ini sebagai Fase 0 — agen harus melakukan orientasi mandiri sebelum menyentuh kode migrasi apa pun.
Manual: Menulis Standar Migrasi Secara Langsung¶
Untuk tim dengan standar yang sudah mapan, tulis GEMINI.md sendiri:
# Migration Standards
## Target Architecture
- Framework: .NET 8 (or modern equivalent)
- Hosting: Cloud Run (containerized)
- Database: Cloud SQL with Entity Framework Core
- Auth: JWT with Google Identity Platform
- Config: appsettings.json (not web.config)
## Migration Rules
- Migrate one module at a time — never refactor everything at once
- Every migrated endpoint must have unit tests before moving on
- Preserve existing API contracts — no breaking changes to consumers
- Document every decision in a MIGRATION.md changelog
Sintaks Impor @file¶
Untuk proyek besar, pisahkan GEMINI.md menjadi file-file modular:
Mengapa impor penting: Satu GEMINI.md bisa menjadi tidak praktis untuk proyek perusahaan. Impor memungkinkan Anda mengatur konteks ke dalam dokumen terfokus yang lebih mudah dipelihara dan ditinjau. Lihat referensi GEMINI.md untuk sintaks lengkap.
Memori untuk Pola Migrasi¶
Saat agen menemukan pola selama migrasi, agen menyimpannya:
Anda juga dapat mengajarinya secara eksplisit:
/memory add "When migrating Entity Framework 6 to EF Core, always
check for .edmx files and replace them with code-first models.
The database-first approach is deprecated in EF Core."
Siklus hidup rekayasa konteks: Alur kerja migrasi terbaik menggabungkan ketiganya: GEMINI.md yang dihasilkan agen (konteks awal), impor @file (standar modular), dan Auto Memory (pola yang dipelajari selama eksekusi). Masing-masing saling memperkuat.
2.4 — Sub-agen: Mendelegasikan Pekerjaan Khusus (15 menit)¶
Sub-agen Bawaan¶
Gemini CLI mencakup sub-agen bawaan untuk tugas-tugas umum:
@codebase_investigator Map the relationships between all controllers
in the backend/ directory. Show which models each controller depends
on and which routes call each controller.
@codebase_investigator adalah agen hanya baca yang memetakan hubungan kode, melacak rantai panggilan, dan mengidentifikasi pola arsitektur. Agen ini tidak pernah memodifikasi file.
Sub-agen Kustom¶
Buat pemindai keamanan untuk migrasi Anda:
Sub-agen pemindai keamanan (dari samples/agents/security-scanner.md): - Memiliki prompt sistem yang difokuskan untuk analisis keamanan - Dapat dibatasi pada alat-alat tertentu - Menggunakan model tertentu (Anda dapat menetapkan Flash untuk kecepatan atau Pro untuk kedalaman)
Menggunakan Sub-agen Kustom¶
@security-scanner Review the authentication middleware for OWASP
Top 10 vulnerabilities. Check for:
1. Injection attacks (SQL, NoSQL)
2. Broken authentication
3. Sensitive data exposure
4. Missing rate limiting
Isolasi Alat Sub-agen¶
Setiap sub-agen dapat memiliki daftar izin alatnya sendiri:
# .gemini/agents/security-scanner.md
---
model: gemini-3.1-flash-lite-preview
tools:
- read_file
- list_directory
- google_web_search
# No write_file, no run_shell_command — this agent is read-only
---
You are a security analyst. Your job is to find vulnerabilities...
Nilai perusahaan: Pemindai keamanan dapat membaca kode dan mencari CVE, tetapi tidak pernah dapat memodifikasi file atau menjalankan perintah. Isolasi alat adalah pertahanan mendalam.
2.5 — Skill: Keahlian yang Dapat Digunakan Kembali (5 mnt)¶
Lihat Skill yang Tersedia¶
Skill adalah kumpulan instruksi yang dapat digunakan kembali yang diaktifkan oleh agen saat relevan:
Cara Kerja Skill¶
- Aktivasi otomatis: Agen membaca deskripsi skill dan mengaktifkan yang relevan berdasarkan prompt Anda
- Aktivasi manual: Anda dapat memaksakan penggunaan skill dengan namanya
- Persistensi: Skill bertahan di seluruh sesi — pelajari sekali, gunakan di mana saja
Memori Otomatis 🔬¶
Memori Otomatis mengekstrak pola dari sesi Anda dan menyimpannya ke GEMINI.md:
Eksperimental: Memori Otomatis memerlukan
experimental.autoMemoryuntuk diaktifkan disettings.json. Lihat Dokumentasi Memori Otomatis. Saat diaktifkan, agen mungkin menyimpan otomatis pola seperti: "Saat memigrasikan middleware Express.js, periksa ketidakcocokanreq.queryvsreq.params."
2.6 — Checkpoint dan Git Worktree (5 menit)¶
Checkpoint¶
Checkpoint secara otomatis menyimpan status file yang dimodifikasi sebelum perubahan, memungkinkan Anda untuk mengembalikannya jika terjadi kesalahan. Untuk mengaktifkannya, tambahkan ke settings.json Anda:
Saat diaktifkan, gunakan /restore untuk kembali ke checkpoint sebelumnya:
Checkpoint bersifat ringan — mereka melacak perubahan file, bukan riwayat git lengkap. Lihat Dokumentasi checkpoint untuk detailnya.
Git Worktree 🔬¶
Untuk pekerjaan migrasi paralel, gunakan Git worktree:
# Create a worktree for the auth migration
git worktree add ../proshop-auth-migration feature/auth-migration
cd ../proshop-auth-migration
gemini
Mengapa worktree? Anda dapat memiliki kode asli di satu terminal dan kode yang dimigrasikan di terminal lain. Jalankan pengujian pada keduanya secara bersamaan. Bandingkan pendekatan tanpa berpindah cabang.
Latihan Praktik¶
Buka PRD Modernisasi .NET atau PRD Peningkatan Java dan kerjakan migrasi tersebut. Pilih pendekatan Anda:
Pendekatan A: Mengutamakan Conductor (Rencana → Konteks → Eksekusi)¶
Mulailah dengan perencanaan terstruktur dan biarkan rencana tersebut mendorong pembuatan konteks:
- Masuk ke Mode Perencanaan (
/plan) → analisis basis kode target secara read-only - Gunakan Conductor untuk membuat rencana migrasi bertahap yang sesuai dengan fase-fase PRD
- Tulis sebuah GEMINI.md yang mengodekan standar migrasi dan rencana yang disetujui
- Gunakan @codebase_investigator untuk memetakan dependensi dan memvalidasi rencana tersebut
- Buat sebuah checkpoint sebelum memulai
- Keluar dari Mode Perencanaan → mulai migrasi, satu fase pada satu waktu
- Gunakan pengarahan model untuk mengoreksi arah sesuai kebutuhan
- Setelah setiap fase, jalankan
mvn clean verifydan pemindaian keamanan (lihat di bawah) - Tinjau apa yang dipelajari Auto Memory dari sesi tersebut
Pendekatan B: Orientasi Mandiri (Investigasi → Konteks → Rencana → Eksekusi)¶
Biarkan agen membangun pemahamannya sendiri terlebih dahulu, lalu buat rencana dari apa yang ditemukannya:
- Gunakan @codebase_investigator untuk menganalisis basis kode target dan memetakan dependensi
- Minta agen menulis sebuah GEMINI.md berdasarkan analisisnya (orientasi mandiri agen)
- Tinjau dan perbaiki konteks yang dihasilkan — tambahkan standar spesifik tim
- Masuk ke Mode Perencanaan → biarkan Conductor membuat rencana migrasi bertahap yang diinformasikan oleh GEMINI.md
- Buat sebuah checkpoint sebelum memulai
- Mulai migrasi — gunakan pengarahan model untuk mengoreksi arah sesuai kebutuhan
- Setelah setiap fase, jalankan
mvn clean verifydan pemindaian keamanan (lihat di bawah) - Tinjau apa yang dipelajari Auto Memory dari sesi tersebut
Pendekatan mana? Pendekatan A berfungsi dengan baik ketika Anda sudah mengetahui basis kode dan ingin memimpin dengan struktur. Pendekatan B berfungsi lebih baik dengan kode legacy yang tidak dikenal — agen sering kali memunculkan risiko migrasi yang akan terlewatkan oleh rencana yang ditulis manusia. Coba keduanya dan bandingkan kualitas rencana yang dihasilkan.
Pemindaian keamanan pasca-migrasi: Setelah memodernisasi kode legacy, jalankan Security Extension resmi untuk menangkap kerentanan yang muncul selama migrasi. Instal dengan
gemini extensions install https://github.com/gemini-cli-extensions/security, lalu jalankan/security:analyzeuntuk memindai perubahan Anda. Lihat Ekosistem Ekstensi — Latihan 4 untuk detail lengkapnya.
Ringkasan: Apa yang Anda Pelajari¶
| Fitur | Apa yang Dilakukannya |
|---|---|
| Mode Perencanaan | Riset hanya-baca — analisis sebelum memodifikasi |
| Perutean model | Pemilihan otomatis Pro (perencanaan) → Flash (pengkodean) |
| Pengarahan model | Mengoreksi arah agen di tengah proses |
| Orientasi mandiri agen | Agen menyelidiki basis kode dan menulis GEMINI.md-nya sendiri |
| Sintaks @ import | GEMINI.md modular untuk proyek besar |
| @codebase_investigator | Sub-agen analisis basis kode hanya-baca |
| Sub-agen kustom | Agen khusus dengan isolasi alat |
| Skill | Kumpulan instruksi yang dapat digunakan kembali dan aktif secara otomatis |
| Memori Otomatis | Agen mempelajari pola dari sesi |
| Checkpointing | Simpan/pulihkan status otomatis sebelum perubahan berisiko (aktifkan di settings.json) |
| Git Worktree | Cabang paralel untuk pekerjaan simultan |
| Ekstensi Keamanan | Pemindaian kerentanan pasca-migrasi dengan /security:analyze |
Langkah Selanjutnya¶
→ Lanjutkan ke Kasus Penggunaan 3: Orkestrasi DevOps Agentic
→ Untuk pengguna tingkat lanjut: Pola Lanjutan — keterampilan prompt, loop verifikasi, dan pengembangan paralel