7 poin oleh chebread 2026-01-29 | 12 komentar | Bagikan ke WhatsApp

Pendahuluan

Halo. Saya seorang mahasiswa yang tertarik pada ilmu komputer. Kali ini saya mengembangkan sebuah program bernama lx, dan ingin membuat postingan pertama saya di GeekNews yang selama ini hanya saya baca.

Belakangan ini, vibe coding—di mana kita memberi perintah kepada AI dalam bahasa alami lalu AI menuliskan seluruh kode dengan sendirinya—sedang menjadi tren.
Saya takut pada vibe coding semacam ini.
Bukan sekadar rasa takut kehilangan pekerjaan, melainkan karena rasa kehilangan dalam pemrograman akibat dirampasnya "kesenangan menulis kode (Wrangling code) (sumber: Kent Beck - Augmented Coding: Beyond the Vibes)" dan "kendali developer".

Sebagian orang mengatakan perubahan ini adalah evolusi alami pemrograman, dari punch card ke machine language, assembly, lalu C. Namun saya rasa analogi ini keliru.
Abstraksi di masa lalu adalah proses memberi developer 'palu yang lebih baik'.
Alat memang terus berkembang, tetapi yang mengayunkan palu tetap manusia, dan hasilnya sepenuhnya berada di bawah kendali developer.
Namun AI coding saat ini berbeda.
Sekarang robotlah yang mengayunkan palu sebagai pengganti, dan developer hanya bisa menonton atau paling jauh mencoba membujuk robot itu sedikit.
Jika kita tidak bisa mengayunkan palu itu sendiri, saya rasa itu tidak lagi bisa disebut pemrograman.
Karena itu tidak sepenuhnya berada di bawah kendali kita.

Karena itulah saya membuat lx.
lx adalah alat yang merebut kembali palu dari robot dan mengembalikannya ke tangan developer.
lx memungkinkan AI diperlakukan sebagai alat yang bisa dikendalikan secara menyeluruh.

Isi

lx memiliki filosofi "interface oleh manusia, logic oleh AI".
Developer membuat 'kontrak' dengan mendefinisikan input/output fungsi serta apa yang dilakukan fungsi tersebut, dan AI hanya bertanggung jawab atas implementasi internal fungsi itu.

Pendekatan ini menjamin kesinambungan pengembangan.
Begitu input/output fungsi ditulis, logic tersebut sudah dianggap selesai.
Programmer tidak perlu tenggelam dalam detail implementasi, dan bisa langsung menulis logic tingkat atas sambil menjaga alur pengembangan tetap berjalan tanpa putus.

Selain itu, lx bukan sekadar penggantian teks sederhana. Dengan memanfaatkan paket github.com/tree-sitter/go-tree-sitter, ia mem-parsing source code berbasis AST (abstract syntax tree). Karena itu, kode lain di dalam file, komentar, dan indentasi tidak ikut tercemar, dan hanya logic pada scope yang ditentukan saja yang diganti dengan aman.

Cara penggunaan dasar

Bentuk dasar penggunaan lx adalah sebagai berikut.

package main  
  
import (  
	"fmt"  
  
	lx "github.com/chebread/lxgo"  
)  
  
func main() {  
	var year string = "2025-01-02"  
    // Developer mengendalikan pemanggilan fungsi dan alurnya.  
	result1 := LX_GetYear(year)  
  
	var age = 30  
	result2 := LX_GetAge(age)  
  
	fmt.Println(result1, result2)  
}  
  
func LX_GetYear(year string) (result string) {  
	// Prompt yang akan dikirim ke AI  
	lx.Generate("ubah format yyyy-dd-mm menjadi tanggal gaya Korea")  
	return  
}  
  
func LX_GetAge(year int) (result string) {  
	// Jika malas menginstal library lx terpisah untuk tiap bahasa pemrograman, bentuk marker komentar lx() seperti di bawah juga didukung.  
    // lx("ubah usia gaya Korea menjadi usia internasional")  
	return  
}  

Dalam kode di atas, fungsi LX_GetYear adalah kontrak yang didefinisikan oleh developer.
Saat alat lx dijalankan, alat ini mengenali marker lx.Generate(...) atau // lx(...), mengirim prompt ke LLM, lalu menimpa body fungsi tersebut dengan kode yang benar-benar bisa dijalankan.

Pada saat ini, optimasi token juga diterapkan. Bukan seluruh file yang dikirim, melainkan hanya signature fungsi dan prompt terkait yang dikirim ke LLM, sehingga biaya bisa ditekan dan keamanan diperkuat.

2. Kendali developer

Logic di dalam fungsi lx memang ditulis oleh AI, tetapi pihak yang menggunakan fungsi tersebut tetap haruslah developer.
Namun, jika logic buatan pengguna dicampurkan ke dalam fungsi lx, itu akan diabaikan, sehingga kendali bisa dilakukan melalui wrapper function seperti berikut.

package test  
  
import (  
	"fmt"  
	lx "github.com/chebread/lxgo"  
)  
  
func main() {  
	var year string = "2025-01-02"  
	result1 := ParseYear(year) // memanggil fungsi wrapper  
  
	fmt.Println(result1)  
}  
  
// Business logic yang dikendalikan developer  
func ParseYear(year string) string {  
    // Menggunakan logic yang dihasilkan AI seperti komponen  
	res := LX_GetYear(year)  
    
    // Pemrosesan tambahan atas hasil tetap menjadi peran developer  
	foo := fmt.Sprintf("Hari ini adalah %v!", res)  
	return foo  
}  
  
func LX_GetYear(year string) (result string) {  
	lx.Generate("ubah format yyyy-dd-mm menjadi tanggal gaya Korea")  
	return  
}  

3. Manajemen dependensi yang aman dan transparansi

lx berorientasi pada prinsip tanggung jawab tunggal (SRP).
Ia hanya menghasilkan kode, dan tidak membangun maupun menjalankan program.
Selain itu, jika kode yang dihasilkan AI memerlukan library eksternal, lx tidak akan memasang package secara sembarangan.

  1. Code: menuliskan komentar // lx-dep: ... di bagian atas kode yang dihasilkan

  2. Output: melaporkan daftar kebutuhan instalasi melalui standard output CLI

Sebagai gantinya, ia melaporkannya kepada developer lewat dua cara tersebut.
Developer dapat memeriksanya lalu memutuskan sendiri apakah dependensi itu akan dipasang.

4. Konfigurasi

Untuk menggunakan lx, pengaturan LLM diperlukan. Anda cukup membuat lx-config.yaml di home directory (~/) atau root project (./). Jika file ada di kedua lokasi, file konfigurasi lokal akan diprioritaskan, sehingga pengaturan lx bisa dikelola berbeda untuk tiap project.

# lx-config.yaml  
provider: "gemini"  
api_key: "foo"  
model: "bar"  

5. Instalasi dan menjalankan

Pengguna Mac dapat menginstalnya melalui Homebrew, sementara untuk OS lain Anda bisa mengunduh binary dari lx GitHub Releases.

brew tap chebread/lx  
brew install lx  

Setelah instalasi, jalankan perintah lx di path project agar kode yang sesungguhnya dibuat.
lx memiliki fitur smart generation, sehingga fungsi yang kodenya sudah pernah dihasilkan tidak akan memanggil LLM lagi. Karena itu, Anda bisa menjalankan perintah lx berulang kali dengan aman.

Catatan: lx menggunakan tool per bahasa untuk formatting kode yang dihasilkan (Go: goimports, Python: ruff, JS: prettier). Tool-tool tersebut harus sudah terpasang sebelumnya.

6. Lisensi

lx didistribusikan di bawah AGPL-3.0 License.
Tujuannya agar lx dapat berkontribusi pada ekosistem open source, sekaligus mencegah alat ini diprivatisasi secara tertutup.

Penutup

Software adalah kristalisasi yang ditenun dari upaya manusia yang tak henti-hentinya. Di era AI pun, programmer tetap harus menjadi pemilik kode.
lx memungkinkan "implementasi yang membosankan" seperti regex yang merepotkan atau parsing data diserahkan kepada AI, sementara struktur dan alur program tetap sepenuhnya dimiliki manusia.
Saya merekomendasikan alat ini kepada para developer yang tidak ingin kehilangan kesenangan menulis kode (Wrangling code) dan kendali atas pekerjaannya!

12 komentar

 
moderator 2026-01-31

Sesuai kebijakan operasional, komentar yang tidak pantas telah dihapus, dan akun terkait telah dibatasi penggunaannya.

 
callakrsos 2026-01-30

Saat ini, coding pada dasarnya juga masih berpatokan pada standar manusia
Di masa depan, sepertinya pengembangan akan dilakukan dalam bentuk yang bukan bahasa tidak efisien berbasis standar manusia
Mari kita nikmati banyak framework berbasis standar manusia saat ini

 
galadbran 2026-01-31

Sangat menarik karena ini mengambil pendekatan yang benar-benar berlawanan dengan suasana belakangan ini yang seolah-olah baru dianggap benar kalau sama sekali tidak melihat kode.
Tergantung pilihan, rasanya ini juga bisa dipakai hanya sebagai cara untuk menetapkan dengan jelas area mana yang boleh disentuh AI.
Mungkin juga cukup menarik kalau dicoba dibuat sebagai skill untuk para coding agent?

 
chebread 2026-01-31

Kami akan meninjaunya secara aktif. Jika Anda tertarik, mohon kirim banyak PR!

 
narubrown 2026-01-30

Sepertinya proyek yang menarik!

Menulis spesifikasi Ix -> mengganti fungsi-fungsi lx menjadi fungsi sungguhan dengan Ix Tool -> lalu mengompilasinya dengan go.
Karena akan muncul layer yang menggunakan lx di dalam proyek,
sepertinya lapisan yang ditulis dengan LLM bisa dipisahkan, jadi nantinya saat maintenance juga akan lebih nyaman.

Sepertinya ini percobaan yang menarik dengan menggunakan LLM!

 
chebread 2026-01-30

Terima kasih. lx juga mendukung bahasa selain Go, jadi kami mohon banyak penggunaan dan masukan Anda!

 
iknowca 2026-01-30

Tujuannya menarik, tetapi di sepanjang isi tulisan terasa kuat gaya bahasa khas AI,
jadi sulit untuk memercayainya.

 
chebread 2026-01-30

Poin yang Anda sampaikan sangat tepat. Karena saya masih siswa SMA dan tidak punya banyak waktu, saat menulis saya jadi memanfaatkan kecerdasan buatan, sehingga tulisan tersebut berubah menjadi tulisan yang keandalannya jauh menurun. Meski mungkin agak kurang nyaman, saya mohon pengertiannya.

 
wegaia 2026-01-31

Wah, luar biasa sekali bahwa seorang siswa SMA yang merancang hal seperti ini.
Kalau pengalamannya makin bertambah, sepertinya dia akan membuat hal yang lebih hebat lagi.

 
siabard 2026-01-30

Apakah cara kerjanya memang ketika kode yang memanggil lx.Generate menerima perintah dari command line, lalu diubah menjadi kode yang ditulis oleh LLM?
Menurut saya, bagian pemanggil yang bisa menjadi semacam batasan tipe adalah ide yang bagus. Saya juga penasaran apakah Anda mempertimbangkan cara di mana perintah lx dijalankan otomatis di editor dan menggantikan kode implementasinya. (Selain itu, akan bagus juga jika ada cara untuk membuat ulang kode yang dihasilkan saat hasilnya kurang memuaskan.)
Saya sudah melihat proyeknya dengan baik.

 
chebread 2026-01-30

Kode yang memanggil lx.Generate lalu berubah menjadi kode yang ditulis oleh LLM saat perintah dijalankan dari command line, berarti memang seperti itu, kan? -> Ya, benar!

Bagian pemanggilnya bisa menjadi semacam batasan tipe, jadi menurut saya itu ide yang bagus. Saya juga penasaran apakah Anda mempertimbangkan cara di mana perintah lx dijalankan otomatis di editor dan menggantikan kode implementasinya. -> Menurut saya itu ide yang sangat bagus. Akan kami pertimbangkan secara aktif.

Selain itu, akan bagus juga kalau ada cara untuk menghasilkan ulang saat kode yang dibuat tidak sesuai keinginan. -> Karena filosofi proyek ini adalah AI di bawah kendali penuh developer, kami merancangnya agar jika perlu regenerasi, pengguna membuat lagi marker lx.

 
maneuling 2026-01-30

Melihat ini dibuat oleh anak SMA muda lalu nekat menyusup masuk dan meninggalkan komentar seperti ini, tingkat kecerdasannya sudah kelihatan.

Coba bercermin dan berobatlah.

killdong | 9 bulan lalu | parent | on: Saya menggunakan bom ZIP untuk melindungi server saya (idiallo.com)
Saya rasa kalau di internet pun tidak mau bertanggung jawab atas omong kosong yang dibuang, seharusnya dilarang memakai internet. Tolong bereskan apa yang sudah Anda buang.