Bekerja dengan modernisasi GitHub Copilot

Artikel ini membahas cara berkomunikasi dengan agen modernisasi GitHub Copilot, mengajarkannya preferensi Anda, memperbaiki kesalahan, meninjau pekerjaannya, dan mengelola peningkatan di beberapa sesi.

Pembaruan GitHub Copilot adalah kolaborator interaktif yang mengajukan pertanyaan, mengusulkan strategi, beradaptasi dengan umpan balik Anda, dan belajar dari preferensi Anda seiring waktu. Untuk mendapatkan hasil terbaik, berikan konteks kepada agen. Semakin tahu tentang tujuan, batasan, dan preferensi Anda, semakin baik performanya.

❌ Vague — the agent has to guess
"Upgrade my project"

✅ Specific — the agent knows exactly what you need
"Upgrade the WebAPI project to .NET 10. We need to keep backward
compatibility with our existing REST clients, and we can't change the
public API surface."

Petunjuk / Saran

Anda tidak perlu memberikan semua konteks di depan. Agen mengajukan pertanyaan tindak lanjut ketika membutuhkan informasi lebih lanjut.

Mulai percakapan

  1. Buka Copilot Chat di Visual Studio Code, Visual Studio, atau Copilot CLI.
  2. Pilih agen modernisasi GitHub Copilot untuk .NET dari pengelola agen, atau ketik agen yang sesuai dengan lingkungan Anda: @modernize-dotnet di Visual Studio Code dan Copilot CLI, atau @Modernize di Visual Studio.
  3. Jelaskan apa yang ingin Anda capai dalam bahasa alami.

Apa yang harus dikatakan

Bahasa alami berfungsi. Coba contoh-contoh berikut:

Apa yang Anda inginkan Apa yang harus dikatakan
Meningkatkan solusi lengkap "Tingkatkan solusi saya ke .NET 10"
Meningkatkan teknologi tertentu "Bantu saya meningkatkan dari EF6 ke EF Core"
Lihat apa yang tersedia "Skenario apa yang tersedia?"
Tingkatkan satu proyek terlebih dahulu "Tingkatkan proyek API terlebih dahulu, lalu pustaka bersama"
Memahami status saat ini "Apa status peningkatan saya saat ini?"

Apa yang terjadi selanjutnya

Saat Anda memulai percakapan, agen memeriksa pekerjaan peningkatan yang ada di ruang kerja Anda:

  • Jika tidak ada pekerjaan yang sudah ada, agen memulai dari awal, biasanya dimulai dengan penilaian terhadap solusi Anda.
  • Jika ada pekerjaan yang sedang berlangsung, agen akan mengambil tempat yang Anda tinggalkan dan menampilkan status saat ini, seperti "3 dari 8 tugas selesai."

Pilih mode alur

Agen mendukung dua mode alur yang mengontrol seberapa sering agen berhenti untuk menunggu input Anda.

Mode otomatis

Dalam mode otomatis, agen bekerja melalui tahapan (penilaian, perencanaan, eksekusi) tanpa menjeda persetujuan di setiap batas. Agen masih berhenti pada penghalang nyata atau ketika memerlukan keputusan yang hanya dapat Anda berikan.

Terbaik untuk pengguna berpengalaman, peningkatan langsung, dan solusi kecil.

Mode terpandu

Dalam mode terpandu, agen berhenti sejenak di setiap batas tahap untuk tinjauan Anda:

  • Setelah penilaian, sebelum membuat rencana.
  • Setelah merencanakan, sebelum menjalankan tugas apa pun.
  • Sebelum perincian tugas yang kompleks.
  • Pada poin keputusan utama di mana ada beberapa pendekatan yang valid.

Terbaik untuk pengguna pemula, solusi rumit, dan saat Anda ingin mempelajari prosesnya.

Beralih mode di tengah sesi

Beralih dengan bebas di antara mode kapan saja:

Untuk beralih ke Apa yang harus dikatakan
Mode terpandu "Jeda" atau "Beralih ke mode terpandu"
Mode otomatis "Lanjutkan" atau "Lanjutkan"

Petunjuk / Saran

Mulailah dengan mode terpandu untuk peningkatan pertama Anda. Mode terpandu adalah cara terbaik untuk mempelajari bagaimana agen berpikir dan keputusan apa yang dihasilkannya. Beralih ke mode otomatis setelah Anda nyaman.

Ajari agen

Agen belajar darimu. Agen menyimpan koreksi, preferensi, dan instruksi Anda ke scenario-instructions.md dalam folder status peningkatan. Preferensi ini bertahan di seluruh sesi.

Perbaiki kesalahan

Ketika agen membuat keputusan yang tidak Anda setujui, beri tahu agen:

You: "Actually, don't use Newtonsoft.Json — we're standardizing on System.Text.Json."
Agent: "Got it. I'll use System.Text.Json for all serialization going forward.
        I've saved this as a preference."

Agen memperbarui scenario-instructions.md dan tidak akan membuat pilihan yang sama lagi, bahkan dalam sesi mendatang.

Mengatur preferensi

Secara proaktif memberi tahu agen bagaimana Anda menyukai hal-hal yang dilakukan:

You: "Always use bottom-up strategy for this solution — upgrade leaf projects first."
Agent: "Noted. I'll use a bottom-up upgrade strategy, starting with projects that
        have no internal dependencies and working up to the top-level projects."

Berikan instruksi khusus tugas

Terkadang preferensi hanya berlaku untuk tugas tertentu:

You: "For this task, skip the test validation — the tests are broken for a known
      reason and we'll fix them separately."
Agent: "Understood. I'll skip test validation for this task only."

Apa yang disimpan agen

File scenario-instructions.md diatur ke dalam bagian yang jelas:

Bagian Isinya Example
Preferensi Pengguna (Teknis) Pilihan paket, keputusan kerangka kerja, pola pengkodian "Gunakan System.Text.Json, bukan Newtonsoft"
Preferensi Pengguna (Gaya Eksekusi) Cara kerja agen "Selalu gunakan strategi bottom-up"
Log Keputusan Utama Keputusan penting dan alasannya "Pilih EF Core daripada Dapper karena..."
Instruksi Khusus untuk Tugas Penggantian Khusus Tugas "Lewati pengujian untuk tugas 3.1"

Petunjuk / Saran

Selain itu, edit scenario-instructions.md secara langsung. Ini adalah file Markdown di .github/upgrades/{scenarioId}/. Agen membaca file di awal setiap interaksi.

Melakukan koreksi pertengahan sesi

Agen menangani gangguan dengan baik dan tidak kehilangan jejak di mana ia berada atau apa yang sedang dikerjakannya.

Jeda dan tinjau

You: "Wait, stop — let me review that change first."
Agent: "Here's what I was about to do: [describes planned changes].
        Would you like me to proceed, or adjust the approach?"

Pengalihan

You: "Actually, let's do Project B before Project A — it has fewer dependencies."
Agent: "Good call. I'll reorder the tasks and start with Project B."

Batalkan

You: "That last change broke the build. Can we revert it?"
Agent: "I'll revert the last commit (abc1234: 'Migrate auth middleware').
        Reverting now."

Juga kembalikan komit dengan sendiri menggunakan perintah Git standar. Agen menulis pesan penerapan yang jelas dan deskriptif sehingga Anda tahu persis apa yang diubah setiap penerapan.

Ajukan pertanyaan di tengah alur

Mengajukan pertanyaan tidak menggagalkan alur kerja:

You: "Why did you choose to migrate the data layer before the API controllers?"
Agent: "The API controllers depend on the data layer interfaces. By migrating
        the data layer first, we avoid temporary compilation errors in the
        controllers and can validate each layer independently."

Meninjau pekerjaan agen

Agen menyediakan beberapa cara untuk meninjau hasil kerjanya.

Kontrol sumber

Agen menyarankan untuk mengerjakan cabang terpisah dan menerapkan perubahan saat berfungsi. Tinjau perubahan agen dengan perintah Git standar:

git log --oneline -10
git diff main..<agent-branch>

File alur kerja

Agen mempertahankan beberapa file dalam .github/upgrades/{scenarioId}/ yang memberi Anda visibilitas penuh:

File Apa yang ditampilkannya
tasks.md Gambaran umum kemajuan visual dengan semua tugas, indikator status (✅ selesai, 🔄 sedang berlangsung, ⬜ tertunda), dan bilah kemajuan
execution-log.md Menyelesaikan jejak audit kronologis dari setiap tindakan yang diambil agen, kapan, dan apa yang terjadi
assessment.md Analisis awal solusi Anda, termasuk ketergantungan, perubahan yang mempengaruhi kompatibilitas, dan kompleksitas peningkatan
scenario-instructions.md Preferensi Anda dan keputusan yang dipelajari oleh agen
tasks/{taskId}/progress-details.md Detail per tugas: kesalahan build yang ditemui, cara mengatasinya, hasil pengujian, dan keputusan yang dibuat

Lanjutkan pekerjaan terputus

Tutup obrolan atau matikan IDE Anda. Agen menangani situasi ini dengan mulus.

Agen menyimpan semua status di .github/upgrades/ dalam repositori Anda. Saat Anda memulai percakapan baru, agen memeriksa status saat ini dan segera mengetahui:

  • Skenario mana yang aktif.
  • Tugas mana yang selesai, sedang berlangsung, atau tertunda.
  • Artefak apa yang ada (penilaian, rencana, file tugas).
  • Apakah ada tugas yang tampak basi (terjebak dalam 🔄 status dari sesi sebelumnya).

Deteksi tugas usang

Jika ada tugas yang sedang berlangsung dari sesi sebelumnya, agen mengenali bahwa tugas mungkin sudah tidak valid dan menawarkan opsi untuk melanjutkan, memulai ulang, atau melewati.

Petunjuk / Saran

Karena keadaan berada di dalam .github/upgrades/ repositori Anda, ia berpindah bersama kode Anda. Dorong cabang Anda ke remote, tarik pada komputer lain, dan agen mengambil tepat di mana Anda tinggalkan.

Bekerja melalui beberapa sesi

Peningkatan besar, seperti solusi proyek 20, peningkatan kerangka kerja yang kompleks, atau modernisasi multi-langkah, sering mencakup beberapa sesi selama hari atau minggu. Agen menangani pekerjaan multi-sesi dengan lancar.

  • Status persisten: Semuanya ada di .github/upgrades/. Tidak ada status dalam memori untuk hilang.
  • Independensi sesi: Setiap sesi obrolan bersifat independen. Agen merekonstruksi konteksnya dari file status setiap saat.
  • Cross-IDE support: Mulai di VS Code, lanjutkan di Visual Studio atau Copilot CLI. Folder status adalah kontrak bersama.

Panduan untuk pekerjaan multi-sesi

  • Terapkan folder status. Dorong .github/upgrades/ ke cabang Anda untuk mencadangkan folder dan membuatnya terlihat oleh tim Anda.
  • Tinjau di antara sesi. Baca tasks.md dan execution-log.md untuk menyegarkan memori Anda tentang apa yang terjadi di sesi terakhir.
  • Perbarui preferensi saat Anda belajar. Jika Anda menemukan sesuatu dalam pengujian yang harus mengubah pendekatan agen, beri tahu agen di awal sesi berikutnya.

Minta bantuan

Tidak yakin apa yang dapat dilakukan agen atau bagaimana situasinya saat ini? Bertanya:

Apa yang ingin Anda ketahui Apa yang harus dikatakan
Skenario peningkatan yang tersedia "Apa yang bisa anda lakukan?" atau "Skenario apa yang tersedia?"
Kemajuan saat ini "Apa statusnya saat ini?" atau "Tunjukkan kemajuannya"
Paket peningkatan "Jelaskan rencana" atau "Antar saya melalui tugas"
Detail penilaian "Tunjukkan penilaian" atau "Apa yang ditemukan penilaian?"
Keterampilan yang tersedia "Keterampilan apa yang Anda miliki?" atau "Daftar keterampilan Anda"
Keputusan tertentu "Mengapa Anda memilih X daripada Y?"
Risiko atau kekhawatiran "Apa risikonya dengan peningkatan ini?"

Berkomunikasi secara efektif

Kualitas interaksi Anda secara langsung memengaruhi kualitas hasil.

Spesifikkan tentang cakupan

"Tingkatkan hanya proyek Data.Access dan Data.Models untuk .NET 10" memberi pengguna fokus yang jelas. "Tingkatkan semuanya" berfungsi, tetapi agen membuat lebih banyak keputusan secara otomatis tentang urutan dan prioritas.

Bagikan konteks

Agen tidak mengetahui batasan bisnis Anda kecuali Anda membagikannya:

  • "Kami meningkatkan karena Azure App Service menurunkan dukungan .NET 8 pada bulan November."
  • "Ini adalah layanan produksi lalu lintas tinggi—tidak ada perubahan perilaku dalam respons API."

Menyatakan batasan

Beri tahu agen apa yang seharusnya tidak dilakukan, bukan hanya apa yang harus:

  • "Jangan ubah permukaan API publik—kami memiliki konsumen eksternal."
  • "Kami belum dapat meningkatkan Newtonsoft.Json—tim yang memiliki kontrak yang dibagikan belum memperbaruinya."
  • "Jangan sentuh modul pelaporan warisan—yang sedang ditulis ulang secara terpisah."

Berikan umpan balik

Umpan balik positif membantu sama banyaknya dengan koreksi dan mengonfirmasi agen berada di jalur yang benar:

  • "Peningkatan itu terlihat hebat—lakukan pendekatan yang sama untuk proyek repositori lainnya."
  • "Itu berfungsi, tetapi kami lebih memilih injeksi konstruktor daripada injeksi properti dalam basis kode ini."

Referensi cepat

Situasi Apa yang harus dikatakan
Memulai peningkatan baru "Tingkatkan solusi saya ke .NET 10"
Melanjutkan pekerjaan sebelumnya "Lanjutkan" atau "Apa statusnya?"
Beralih ke mode terpandu "Jeda" atau "Beralih ke mode terpandu"
Beralih ke mode otomatis "Lanjutkan" atau "Lanjutkan tanpa bertanya"
Memperbaiki keputusan "Sebenarnya, gunakan X alih-alih Y"
Mengatur preferensi "Selalu lakukan X untuk penyelesaian ini"
Meninjau perubahan "Tunjukkan apa yang Anda ubah" atau periksa log Git
Membatalkan perubahan "Kembalikan perubahan terakhir"
Tanyakan mengapa "Mengapa Anda memilih pendekatan itu?"
Melewati tugas "Lewati tugas ini untuk saat ini"
Dapatkan bantuan "Apa yang bisa anda lakukan?"