Pendahuluan: Agen yang Diinginkan Semua Orang, Tanpa Hype
Masalah dengan agen pengkodean adalah sebagian besar dari mereka mencoba menjadi bos Anda, co-pilot Anda, dan terapis Anda—kemudian lupa untuk sekadar menulis kode. Alurnya seperti ini: tambahkan selusin penyimpanan vektor, taburkan sedikit debu peri orkestrasi, pasang browser, lalu sebut saja selesai. Demo-nya bagus. Namun, juga berantakan saat Anda memintanya untuk memperbaiki tes integrasi yang tidak stabil pada pukul 16.52 pada hari Jumat.
Membangun agen pengkodean ringan dengan —kejutan—sebenarnya mudah jika Anda berhenti mengejar impian pelayan perangkat lunak universal dan hanya membangun alat yang membaca kode, merencanakan, mengedit, menjalankan, dan mengulangi. Tidak ada khotbah tentang “AI menggantikan pengembang.” Tidak ada alur . Hanya loop yang ketat yang melakukan hal-hal yang jelas, dengan baik.
Ini adalah panduan cara untuk sampai ke sana tanpa menyeret seluruh departemen operasi AI. Kami akan menggunakan untuk otak, sistem file dan shell untuk tangan, dan memori kecil untuk fokus jangka pendek. Itu saja. Ringan berarti Anda dapat memahaminya dalam sekali duduk, menjalankannya secara lokal, dan mempercayainya karena setiap langkah dapat diperiksa. Yang, jika Anda telah menggunakan apa pun di ruang ini akhir-akhir ini, hampir subversif.
Mengapa Cocok untuk Agen Minimalis
memiliki temperamen yang sebenarnya Anda inginkan untuk kode: berhati-hati dengan mengikuti instruksi, cukup lumayan dalam membaca , dan tidak terlalu bersemangat untuk menghalusinasi kerangka kerja yang tidak Anda minta. Model ini kompeten dalam penalaran bertahap tanpa menuntut novel perintah lengkap. Kombinasi itu—penalaran ditambah pengekangan—menjadikannya ideal untuk loop agen pengkodean:
- Amati: Baca file saat ini, log kesalahan, dan tes.
- Rencanakan: Usulkan pengeditan konkret dengan alasan.
- Bertindak: Perbaiki file, jalankan perintah.
- Renungkan: Evaluasi output, ulangi atau berhenti.
Anda dapat memasang ini ke repo mana pun dan mendapatkan nilai dalam satu sore. Triknya adalah menahan keinginan untuk mengubahnya menjadi “platform AI”. Jika Anda menjaga agen tetap ringan, melakukan pekerjaan berat tanpa menghalangi Anda.
Arsitektur Ringan: Lima Bagian, Tanpa Drama
Inilah seluruh tumpukan yang Anda butuhkan:
- Loop inti: Satu proses yang memanggil dan menafsirkan pesan penggunaan alatnya.
- Alat: Set kecil—read_file, write_file, list_dir, run_tests (atau run_cmd), search_code.
- Pembuat konteks: Kumpulkan perintah singkat dan tepat dengan metadata repo dan diff terbaru.
- Memori jangka pendek: Jendela percakapan bergulir ditambah kertas buram eksplisit untuk rencana dan batasan.
- Pagar pengaman: Token, waktu, dan batasan penulisan file; mode ; dan snapshot pengembalian.
Itu saja. Anda dapat menjalankannya tanpa kepala di terminal atau membungkusnya dalam UI minimal jika Anda harus melakukannya. Alasan ini berhasil membosankan: setiap tindakan diamati dan dapat diverifikasi. Agen mengusulkan perubahan, menunjukkan , menjalankan tes, membaca output, dan melanjutkan atau berhenti. Tidak ada misteri di tengahnya.
Cara Membangun Agen (Tanpa Kehilangan Alur Cerita)
Langkah 1: Tentukan Kontrak—Prompt dan Alat
Agen Anda sebaik kontraknya dengan model. Jaga agar perintah sistem tetap pendek, ketat, dan sangat praktis.
Perintah sistem, yang disuling:
- Anda adalah agen pengkodean. Tugas Anda adalah membuat perubahan kecil dan benar pada repo untuk memenuhi tugas pengguna.
- Berpikirlah dengan keras di kertas buram tersembunyi; hanya ungkapkan rencana dan kepada pengguna.
- Pilih minimal, pengujian yang berfungsi, dan kemajuan bertahap.
- Jika tidak yakin, usulkan eksperimen dan jalankan.
- Jangan pernah membuat file atau perintah—daftar dan baca sebelum Anda mengedit.
Skema alat (jangan terlalu dipikirkan):
- read_file(path, offset?, length?)
- write_file(path, content, create_if_missing=false)
- run_cmd(command, timeout=60, cwd=repo_root)
- search_code(query, path=repo_root, max_results=50)
Keistimewaan opsional: git_diff dan git_revert(sha) jika Anda menginginkan pengembalian tanpa menggunakan tangan. Anda dapat melewati penyimpanan vektor; sebagian besar tugas yang berguna bergantung pada beberapa file dalam memori kerja ditambah pencarian cepat.
Langkah 2: Jaga agar Konteks Tetap Ramping
Memasukkan konteks adalah pemujaan kargo desain agen. Jangan buang seluruh monorepo Anda ke dalam prompt. Sebaliknya:
- Ringkasan repo: Satu paragraf ringkasan README; titik masuk; perintah pelari uji.
- File aktif: Hanya file yang akan disentuh oleh agen—baca dalam potongan sesuai kebutuhan.
- Tugas: Tujuan pengguna, yang diungkapkan dengan jelas: “Perbaiki pengujian yang gagal FooTest.test_bar di tests/foo_test.py.”
- Batasan: Batas waktu proses, daftar putih penulisan file, aturan gaya, dan harapan penerapan versi semantik jika berlaku.
- Riwayat terbaru: Dua terakhir dan hasil pengujiannya. Tidak ada yang lain.
sangat mampu mengambil lebih banyak konteks ketika membutuhkannya melalui search_code dan read_file. Berikan peta, bukan wilayahnya.
Langkah 3: Loop (Amati → Rencanakan → Bertindak → Renungkan)
- Amati: Mulailah dengan membuat daftar direktori, membaca pengujian yang gagal, kode yang diuji, dan log kesalahan. Minta untuk meringkas gejala kegagalan dalam dua atau tiga poin.
- Rencanakan: Minta untuk mengusulkan rencana dengan:
- Hipotesis untuk kegagalan
- File untuk diperiksa atau diedit
- Perintah pengujian untuk memvalidasi
- Bertindak: Terapkan yang diusulkan melalui write_file. Tampilkan kata demi kata. Jalankan tes.
- Renungkan: Umpankan stdout/stderr kembali. Tanyakan kepada : lanjutkan, kembalikan, atau berhenti? Jika rencana berubah, minta pembenaran satu kalimat yang mengacu pada output aktual.
- Keluar: Berhenti ketika pengujian lulus, atau setelah iterasi N, mana saja yang lebih dulu.
Ini adalah pemrograman berpasangan yang dimuliakan di mana Anda benar-benar menjaga agar pemasangan tetap jujur.
Langkah 4: Pagar Pengaman yang Menyelamatkan Akhir Pekan Anda
- Daftar putih penulisan: Hanya izinkan penulisan di dalam src/, lib/, atau jalur yang disetujui secara eksplisit.
- Batas ukuran : Batasi pengeditan hingga 200–500 baris per langkah. Jika lebih besar, bagi menjadi sub-langkah.
- Daftar yang diizinkan perintah: pelari uji, linter, dan beberapa skrip dev. Larang jaringan. Anda menginginkan reproduktifitas, bukan ala wild-west.
- Waktu tunggu dan coba lagi: Waktu tunggu singkat, maksimal satu kali percobaan ulang—loop yang dijalankan ulang tanpa henti adalah tempat agen mati.
- Mode : Cetak yang diusulkan tetapi jangan tulis. Bagus untuk tinjauan kode.
akan mematuhi aturan jika Anda membuatnya eksplisit. Jika tidak, jangan kaget ketika ia mencoba “membantu” dengan mengatur ulang seluruh repo Anda agar sesuai dengan beberapa posting blog dari tahun 2017.
Langkah 5: Memori yang Benar-Benar Berguna
Memori jangka pendek memecahkan 80% masalah. Simpan:
- Kertas buram untuk hipotesis dan rencana saat ini.
- Daftar file yang disentuh sesi ini.
- Dua output perintah terakhir.
Itu cukup bagi untuk bernalar secara koheren. Memori jangka panjang—log tugas, penyematan—dapat membantu untuk basis kode yang berulang, tetapi perlakukan itu sebagai pemanis opsional. Jika agen Anda tidak dapat memperbaiki pengujian tanpa indeks vektor 500MB, itu bukan agen—itu adalah dependensi.
Sketsa Implementasi Minimal
Dalam istilah pseudocode, Anda dapat mengimplementasikan agen ini dalam beberapa ratus baris:
- inisialisasi: muat metadata repo, batasan, dan klien model
- amati: baca pengujian, file, log yang gagal
- plan = model.propose_plan(context)
- while not done and steps < MAX:
- diff = model.propose_patch(plan)
- show(diff); maybe approve
- out = run_cmd(plan.test_cmd)
- reflect = model.evaluate(out)
- if reflect == pass: done = true
- else if reflect == rollback: git_revert(last_commit)
- else: plan = model.revise_plan(out)
Anda akan melihat bagian yang hilang: tidak ada agen yang mengelola agen, tidak ada “delegasi”, tidak ada “model perencana” dan “model pelaksana” terpisah. dapat melakukan kedua pekerjaan dengan baik jika Anda tidak menyabotnya dengan peralatan .
Prompt yang Tidak Terlalu Keras
Prompt yang buruk mencoba menjadi pintar. Prompt yang baik membosankan dan spesifik. Inilah kerangka yang waras untuk blok instruksi inti Anda:
- Tujuan: Nyatakan tugas pengkodean dan kriteria keberhasilan yang tepat.
- Konteks: Struktur proyek, titik masuk, dan perintah pengujian.
- Batasan: Daftar putih penulisan, batas ukuran , tidak ada jaringan.
- Preferensi gaya: Versi bahasa, pemformat, aturan linter.
- Proses: Amati → Rencanakan → Bertindak → Renungkan; tunjukkan ; jalankan tes; ulangi hingga langkah N; berhenti ketika pengujian lulus.
, dengan struktur ini, tidak memerlukan skenario bermain peran 100 baris. Itu hanya berfungsi.
Contoh Praktis: Perbaiki Pengujian yang Gagal
Katakanlah sebuah pengujian gagal di tests/time_test.py karena parse_time("09:00") mengembalikan 5400 alih-alih 32400. Loop agen harus terlihat seperti ini:
- Amati: Baca time.py dan time_test.py; jalankan pytest -k parse_time.
- Rencanakan: Hipotesis—detik vs bug matematika menit; usulkan pengeditan parse_time; tambahkan kasus tepi unit.
- Bertindak: Perbaiki parse_time, tambahkan pengujian untuk jam dengan angka nol di depan; jalankan tes.
- Renungkan: Jika pengujian masih gagal, baca kesalahan, sesuaikan matematika atau regex, jalankan ulang.
Patch keberhasilan minimal mungkin merupakan perubahan dua baris. Itulah intinya. Pengeditan kecil, siklus cepat, kemajuan nyata.
Di Mana Ringan Mengalahkan
- Latensi: Satu model, satu loop, tidak ada orkestrasi.
- Transparansi: Setiap langkah dapat diaudit. Anda dapat membedakannya, Anda dapat mengembalikannya, Anda dapat menjalankannya kembali.
- Kontrol: Pagar pengaman menjaga kerusakan tetap lokal. Agen tidak dapat berkeliaran ke infrastruktur Anda.
- Biaya: Lebih sedikit panggilan, lebih sedikit konteks, token yang dapat diprediksi.
- UX: Anda memahaminya. Rekan tim Anda memahaminya. Diri Anda di masa depan tidak akan membenci Anda.
Dan :
- Luas: Agen pengkodean ringan tidak akan memfaktorkan ulang monorepo lima bahasa Anda dalam satu lintasan. Juga seharusnya tidak.
- Inisiatif: Itu tidak akan menciptakan peta jalan multi-minggu. Anda memberinya tugas.
- Statefulness: Tanpa lapisan memori yang besar, ia melupakan riwayat yang jauh berdasarkan desain. Itu adalah fitur sampai menjadi bug.
Titik Manis untuk Agen Pengkodean
bersinar pada:
- Membaca dan bernalar tentang dan log.
- Menghasilkan perubahan kode yang koheren dan minimal.
- Mengikuti batasan dan bersikap eksplisit tentang ketidakpastian.
Kurang bagus dalam:
- Menebak perilaku API yang tidak dapat dibacanya.
- Koreografi alat yang berat (tidak diperlukan di sini).
- Refaktor multi-file panjang tanpa manusia yang memandu langkah-langkahnya.
Poin terakhir itu penting. Cara terbaik untuk mendapatkan hasil yang kuat bukanlah dengan membuat agen lebih besar—tetapi membuat tugas lebih kecil. Gunakan otak Anda untuk menentukan ruang lingkup, dan untuk eksekusi dalam ruang lingkup itu.
Sepatah Kata tentang Integrasi IDE
Tahan keinginan untuk memasukkan ini langsung ke panel IDE dengan lima puluh tombol. Loop berbasis terminal dengan teks biasa lebih mudah dipercaya dan di-. Jika Anda menginginkan pemanis editor, buatlah tetap bodoh:
- Perintah untuk memulai/menghentikan loop.
- Tampilkan dalam tampilan terpisah.
- Prompt persetujuan untuk penulisan (opsional tetapi bijaksana).
Anda dapat mengintegrasikan nanti. Pertama, buatlah berfungsi.
Sider.AI, Digunakan dengan Hemat, Benar-Benar Membantu Jika Anda menginginkan lingkungan pragmatis untuk menjalankan loop semacam ini tanpa menemukan kembali perancah, Sider.AI benar-benar berfungsi—setidaknya ketika Anda menggunakannya untuk apa yang baik. Itu membuat percakapan dan tetap rapi, memungkinkan Anda menjalankan perintah, dan tidak memaksakan Anda beberapa “kerangka kerja agen otonom” yang megah. Triknya adalah menyimpan aturan Anda sendiri: prompt pendek, loop ketat, yang terlihat. keluar dari jalan, yang lebih jarang daripada seharusnya. Kesalahan Umum (dan Cara Menghindari Terlihat Konyol)
- Konteks yang terlalu padat: Jika prompt Anda terbaca seperti catatan tebusan, Anda melakukannya dengan salah. Ambil file sesuai permintaan.
- Refaktor prematur: Agen menyarankan untuk mengatur ulang modul? Buat itu lulus pengujian terlebih dahulu. Refaktor nanti.
- File yang dihalusinasi: Minta list_dir dan read_file sebelum write_file apa pun ke jalur baru.
- Loop yang dijalankan ulang tanpa batas: Batasi langkah. Minta pembenaran untuk setiap hipotesis baru.
- Satu raksasa: Bagi perubahan. yang lebih kecil gagal lebih cepat dan lebih mudah untuk beralasan.
Keamanan dan Keselamatan Tanpa Paranoia
- Eksekusi lokal: Jalankan di direktori yang di-. Tidak ada jaringan secara default.
- Isolasi dependensi: Gunakan venv atau container lokal. Sematkan versi.
- Rahasia: Agen tidak membutuhkannya. Jika perintah membutuhkan token, berhenti dan bertanya.
- Audit: Pertahankan setiap rencana, , dan perintah dalam log.
Bagaimana Mengetahui Itu Berfungsi
- Waktu tunggu menyusut: Perbaikan bug yang memakan waktu satu jam sekarang memakan waktu sepuluh menit.
- Lebih sedikit kesalahan ketik gemuk: menjadi lebih kecil, pengujian menjadi lebih hijau.
- Anda mempercayainya: Anda berhenti melayang di atas setiap tindakan karena itu belum membakar Anda.
- Rekan tim menggunakannya: Definisi keberhasilan adalah bahwa orang lain mengadopsinya tanpa pertemuan.
Meningkatkan Skala, dengan Hati-Hati
Jika Anda benar-benar harus meningkatkan skala, lakukan dengan disiplin:
- Subtugas paralel, bukan otak paralel: Bagi pekerjaan, jalankan beberapa loop ringan di direktori terpisah, dan gabungkan saat hijau.
- Memori episodik, bukan pembuangan otak: Simpan patch dan pemetaan gejala-ke-perbaikan yang berhasil. Ambil secara bedah.
- Lewat “lebih besar” berkala: Cadangkan sesi yang dipandu manusia untuk refaktor; agen membantu, tidak memimpin.
Implementasi Referensi Minimal (Sketsa)
Pseudocode bergaya Python untuk bergerak:
- def init(self, repo_root, model):
- self.history = [] # last two diffs and test outputs
- "repo": summarize_repo(self.root),
- "constraints": {"write_whitelist": ["src/", "tests/"], "max_diff_lines": 300, "no_network": True},
- "history": self.history[-2:],
- plan = self.model("propose_plan", self.context(task))
- diff = self.model("propose_patch", {"plan": plan})
- out = run_cmd(plan.test_cmd)
- eval = self.model("evaluate", {"output": out, "plan": plan})
- self.history.append({"diff": diff, "out": tail(out)})
Akhir Seukuran Manusia
Industri terus menjanjikan agen pengembang otonom. Apa yang sebenarnya kita butuhkan adalah asisten jujur yang membaca, merencanakan, mengedit, menjalankan, dan berhenti. pandai dalam hal itu, asalkan Anda tidak menguburnya di bawah kerangka kerja yang sebagian besar ada untuk membenarkan diri mereka sendiri. Ringan bukanlah kompromi—itu adalah intinya. Bangun loop, tambahkan pagar pengaman, dan biarkan alat melakukan satu hal yang selalu dilakukan alat ketika Anda membuatnya tetap sederhana: membuat pekerjaan lebih kecil.
Kesimpulan: Jalan Pintas Membosankan yang Menang
Inilah daftar periksa Anda untuk agen pengkodean ringan dengan :
- Satu loop, satu model, alat kecil.
- Konteks ketat: tugas, beberapa file, output terakhir.
- minimal, pengujian yang sering, batasan yang ketat.
- Eksekusi lokal, di-; tidak ada jaringan.
- Pemanis editor opsional; tidak pernah diperlukan.
Jika Anda menyipitkan mata, itu tampak mencurigakan seperti rekayasa perangkat lunak yang baik, hanya lebih cepat. Dan itulah -nya. Hal terpintar yang dapat Anda lakukan di sini bukanlah mengejar “otonomi”—tetapi untuk mengkodifikasi disiplin. Semakin sedikit Anda meminta dari agen, semakin banyak yang Anda dapatkan.
FAQ
Q1:Bagaimana cara mulai membangun agen pengkodean ringan dengan ?
Definisikan toolset kecil (baca, tulis, cari, jalankan), tulis perintah sistem yang ketat, dan implementasikan loop Amati → Rencanakan → Bertindak → Renungkan. Jaga agar konteks tetap kecil dan umpan log dan nyata— berkinerja terbaik ketika tugasnya sempit dan umpan baliknya konkret.
Q2:Apakah saya memerlukan basis data vektor atau lapisan memori untuk agen pengkodean ?
Tidak. Untuk sebagian besar tugas, memori jangka pendek ditambah search_code sudah cukup. Tambahkan memori jangka panjang hanya jika Anda berulang kali mengunjungi kembali repo yang sama dan dapat membuktikan itu menghemat token tanpa membuat agen lebih bodoh.
Q3:Pagar pengaman apa yang penting untuk agen pengkodean ?
Daftar putih jalur yang dapat ditulis, batasi ukuran , batasi perintah, dan catat setiap tindakan. Batasan sederhana ini menjaga agar agen tetap dapat diprediksi dan membuat pengembalian membosankan—dalam arti yang baik.
Q4:Bisakah agen ringan menangani refaktor multi-file?
Ya, jika Anda membagi pekerjaan menjadi langkah-langkah kecil dan menjaga agar loop tetap ketat. dapat mengelola refaktor, tetapi Anda memandu ruang lingkup; jika tidak, Anda akan mendapatkan satu raksasa dan rapuh yang tidak ingin Anda tinjau.
Q5:Di mana Sider.AI cocok dengan agen pengkodean ?
Sider.AI berguna sebagai ruang kerja yang rapi: percakapan, , dan perintah di satu tempat, tanpa memaksakan kerangka kerja agen yang berat. Gunakan itu untuk menjalankan loop Anda, bukan untuk menemukan kembali.