Pertama, apa itu context window? Dan bagaimana hubungannya dengan coding yang efektif menggunakan Cursor? Untuk melihat gambaran yang lebih luas, large language model (LLM) adalah model kecerdasan buatan yang dilatih untuk memprediksi dan menghasilkan teks dengan mempelajari pola dari dataset yang sangat besar. Model ini menggerakkan tools seperti Cursor dengan memahami input Anda dan menyarankan kode atau teks berdasarkan apa yang telah dilihatnya sebelumnya. Token adalah input dan output dari model-model ini. Token adalah potongan teks, seringkali berupa fragmen dari sebuah kata, yang diproses oleh LLM satu per satu. Model tidak membaca seluruh kalimat sekaligus; mereka memprediksi token berikutnya berdasarkan token-token yang datang sebelumnya. Untuk melihat bagaimana suatu teks di-tokenize, Anda dapat menggunakan tokenizer seperti yang ini. Tokenizer

Apa itu konteks?

Ketika kami menghasilkan saran kode di Cursor, “konteks” merujuk pada informasi yang diberikan kepada model (dalam bentuk “token input”) yang kemudian digunakan model untuk memprediksi informasi selanjutnya (dalam bentuk “token output”). Ada dua jenis konteks:
  1. Konteks intent mendefinisikan apa yang ingin didapatkan pengguna dari model. Misalnya, system prompt biasanya berfungsi sebagai instruksi tingkat tinggi tentang bagaimana pengguna ingin model berperilaku. Sebagian besar “prompting” yang dilakukan di Cursor adalah konteks intent. “Ubah tombol itu dari biru menjadi hijau” adalah contoh intent yang dinyatakan; ini bersifat preskriptif.
  2. Konteks state menggambarkan keadaan dunia saat ini. Memberikan Cursor pesan error, log konsol, gambar, dan potongan kode adalah contoh konteks yang terkait dengan state. Ini bersifat deskriptif, bukan preskriptif.
Bersama-sama, kedua jenis konteks ini bekerja secara harmonis dengan menggambarkan keadaan saat ini dan keadaan masa depan yang diinginkan, memungkinkan Cursor untuk membuat saran coding yang berguna.

Memberikan konteks di Cursor

Semakin banyak konteks relevan yang dapat Anda berikan kepada model, semakin berguna model tersebut. Jika konteks yang tidak memadai diberikan di Cursor, model akan mencoba menyelesaikannya tanpa informasi yang relevan. Hal ini biasanya menghasilkan:
  1. Halusinasi di mana model mencoba mencocokkan pola (ketika tidak ada pola) yang menyebabkan hasil yang tidak terduga. Ini dapat terjadi secara sering pada model seperti claude-3.5-sonnet ketika tidak diberikan konteks yang cukup.
  2. Agent mencoba mengumpulkan konteks sendiri dengan mencari codebase, membaca file, dan memanggil tools. Model thinking yang kuat (seperti claude-3.7-sonnet) dapat melangkah cukup jauh dengan strategi ini, dan memberikan konteks awal yang tepat akan menentukan arah perjalanannya.
Kabar baiknya adalah Cursor dibangun dengan kesadaran kontekstual sebagai intinya dan dirancang untuk memerlukan intervensi minimal dari pengguna. Cursor secara otomatis menarik bagian-bagian dari codebase Anda yang diperkirakan model relevan, seperti file saat ini, pola-pola yang secara semantik mirip di file lain, dan informasi lain dari sesi Anda. Namun, ada banyak konteks yang dapat ditarik, jadi secara manual menentukan konteks yang Anda ketahui relevan dengan tugas adalah cara yang membantu untuk mengarahkan model ke arah yang benar.

Simbol @

Cara termudah untuk memberikan konteks eksplisit adalah dengan simbol @. Ini sangat berguna ketika Anda tahu secara spesifik file, folder, website, atau bagian konteks lain yang ingin Anda sertakan. Semakin spesifik Anda, semakin baik. Berikut adalah rincian cara untuk lebih tepat sasaran dengan konteks:
SimbolContohKasus penggunaanKekurangan
@code@LRUCachedFunctionAnda tahu fungsi, konstanta, atau simbol mana yang relevan dengan output yang Anda buatMemerlukan banyak pengetahuan tentang codebase
@filecache.tsAnda tahu file mana yang harus dibaca atau diedit, tetapi tidak tahu persis di mana dalam fileMungkin menyertakan banyak konteks yang tidak relevan untuk tugas yang sedang dikerjakan tergantung pada ukuran file
@folderutils/Semua atau mayoritas file dalam folder relevanMungkin menyertakan banyak konteks yang tidak relevan untuk tugas yang sedang dikerjakan
Context Menu

Rules

Anda harus menganggap rules sebagai memori jangka panjang yang ingin Anda atau anggota tim lainnya akses. Menangkap konteks spesifik domain, termasuk alur kerja, format, dan konvensi lainnya, adalah titik awal yang bagus untuk menulis rules. Rules juga dapat dibuat dari percakapan yang sudah ada dengan menggunakan /Generate Cursor Rules. Jika Anda telah melakukan percakapan panjang bolak-balik dengan banyak prompting, mungkin ada beberapa arahan berguna atau aturan umum yang ingin Anda gunakan kembali nanti. Rules

MCP

Model Context Protocol adalah lapisan ekstensibilitas di mana Anda dapat memberikan kemampuan kepada Cursor untuk melakukan tindakan dan menarik konteks eksternal. Tergantung pada pengaturan pengembangan Anda, Anda mungkin ingin memanfaatkan berbagai jenis server, tetapi dua kategori yang kami lihat sangat berguna adalah:
  • Dokumentasi internal: misalnya, Notion, Confluence, Google Docs
  • Manajemen proyek: misalnya, Linear, Jira
Jika Anda memiliki peralatan yang sudah ada untuk mengakses konteks dan melakukan tindakan melalui API, Anda dapat membangun server MCP untuk itu. Berikut adalah panduan singkat tentang cara membangun server MCP. MCP

Mengumpulkan konteks secara mandiri

Pola yang kuat yang diadopsi oleh banyak pengguna adalah membiarkan Agent menulis alat-alat berumur pendek yang kemudian dapat dijalankan untuk mengumpulkan lebih banyak konteks. Ini sangat efektif dalam alur kerja human-in-the-loop di mana Anda meninjau kode sebelum dieksekusi. Misalnya, menambahkan pernyataan debugging ke kode Anda, menjalankannya, dan membiarkan model memeriksa output memberikan akses ke konteks dinamis yang tidak dapat disimpulkan secara statis. Dalam Python, Anda dapat melakukan ini dengan meminta Agent untuk:
  1. Menambahkan pernyataan print(“debugging: …”) di bagian-bagian kode yang relevan
  2. Menjalankan kode atau tes menggunakan terminal
Agent akan membaca output terminal dan memutuskan apa yang harus dilakukan selanjutnya. Ide intinya adalah memberikan Agent akses ke perilaku runtime yang sebenarnya, bukan hanya kode statis. Self-Gathering Context

Kesimpulan

  • Konteks adalah fondasi dari coding AI yang efektif, terdiri dari intent (apa yang Anda inginkan) dan state (apa yang ada). Memberikan keduanya membantu Cursor membuat prediksi yang akurat.
  • Gunakan konteks yang tepat sasaran dengan simbol @-symbols (@code, @file, @folder) untuk memandu Cursor secara presisi, daripada hanya mengandalkan pengumpulan konteks otomatis.
  • Tangkap pengetahuan yang dapat diulang dalam aturan untuk penggunaan seluruh tim, dan perluas kemampuan Cursor dengan Model Context Protocol untuk menghubungkan sistem eksternal.
  • Konteks yang tidak memadai menyebabkan halusinasi atau ketidakefisienan, sementara terlalu banyak konteks yang tidak relevan mengencerkan sinyal. Temukan keseimbangan yang tepat untuk hasil optimal.