Gemini_Generated_Image_nnh39pnnh39pnnh3

Tulisan ini bukanlah tutorial cara menggunakan Beads sebagai issue tracker, melainkan bagaimana Beads mengajarkan saya tentang era baru dalam penulisan software dengan dibantu oleh AI Coding Agent.

Sebelum memulai, marilah berkenalan dengan Beads. Sederhananya, Beads adalah issue tracker yang dibangun di atas git, disimpan di dalam JSONL dan SQLite, serta dirancang untuk bekerja dengan baik bersama AI Coding Agent (seterusnya akan saya sebut sebagai Coding Agent).

Mengapa Beads bisa bekerja baik dengan Coding Agent? 🤔

Karena setiap task di Beads memiliki grafik dependensi yang jelas, sehingga Coding Agent dapat dengan mudah memahami konteks dan hubungan antar task. Konteks ini sangat penting bagi Coding Agent karena memorinya yang sangat terbatas. Coding Agent dapat berfungsi dengan baik jika diberikan konteks yang cukup, namun jika suatu sesi berjalan terlalu lama, konteks yang diberikan akan berkurang. Coding Agent akan mulai melupakan konteks yang diberikan di awal dan mengulangi kesalahan yang sama.

Sebagai contoh misalnya sebuah Coding Agent membuat rencana yang komprehensif untuk menyelesaikan sebuah tugas. Umumnya Coding Agent akan membuat rencana tersebut dalam satu sesi. Dan rencana tersebut dituang ke dalam sebuah file Markdown. Masalahnya akan muncul ketika Coding Agent mengerjakan rencana tersebut. Jika sesi tersebut berjalan terlalu lama, maka konteks rencana yang sudah dibuat tadi akan hilang. Coding Agent akan kesulitan untuk mengingat rencana yang sudah dibuatnya sendiri karena konteks yang dibuat sudah semakin banyak namun memori yang dimiliki terbatas.

Karena Beads adalah issue tracker, Coding Agent dapat dengan mudah mengambil konteks dari grafik dependensi yang ada di Beads. Dengan begitu, Coding Agent dapat mengerjakan rencana yang sudah dibuatnya tanpa kehilangan konteks.

Selain itu, setiap task di Beads memiliki deskripsi yang terstruktur (Design Notes, Acceptance Criteria, Estimation, dll), yang memungkinkan Coding Agent untuk memberikan saran untuk mendeskripsikan sebuah issue dengan baik.

Mungkin kalian masih bingung dengan penjelasan saya di atas. Sama. Awalnya saya juga demikian, mengapa Beads bisa bekerja lebih baik dibanding file Markdown berisi plan? Singkatnya begini:

  • Markdown Plan: Komprehensif namun memakan konteks yang lebih besar. Coding Agent umumnya akan mengkonsumsi seluruh isi file Markdown tersebut untuk memahami konteksnya.
  • Issue Tracker: Bisa komprehensif juga sih, tapi dirancang dengan grafik dependensi yang jelas sehingga Coding Agent bisa mengambil konteks yang dibutuhkan saja.

Lalu, kenapa tidak menggunakan issue tracker konvensional seperti GitHub Issues atau Jira?

Benar, issue tracker konvensional sebenarnya juga baik digunakan oleh Coding Agent. Anggap suatu isu Epic sebagai sebuah plan dan isu-isu di bawahnya sebagai to-do dari plan tersebut. Inilah realisasi saya setelah menggunakan Beads. Sebenarnya tidak ada yang salah dengan issue tracker konvensional. Namun, Beads sudah memberikan beberapa fitur tambahan yang membuatnya lebih cocok untuk digunakan bersama Coding Agent. Misalnya, fitur untuk membuat summary (menghemat konteks) dan fitur untuk mengekspor grafik dependensi (memahami struktur).

Dicari: Issue Tracker Dengan MCP

Setelah bereksperimen dengan Beads, saya menyadari bahwa saya membutuhkan issue tracker yang mendukung MCP (Model Context Protocol). MCP adalah protokol yang memudahkan Coding Agent untuk berhubungan dengan API, dalam hal ini issue tracker. Coding Agent berfungsi sangat baik dengan MCP, karena kita tidak harus kembali mengisi form demi form demi form seperti jaman batu hanya untuk menuliskan sebuah tugas.

Kita bisa saja menuliskan tugas: “Evaluasi test pada komponen X”, kemudian minta Coding Agent untuk menjabarkan apa yang akan dievaluasi, bagaimana cara evaluasinya, dan kriteria keberhasilannya. Setelah itu, kita bisa minta Coding Agent untuk membuatkan isu sesuai dengan hasil penjabaran tersebut ke dalam issue tracker dengan terstruktur.

Jadi, issue tracker apa yang akan kalian gunakan? Apakah Beads? Atau issue tracker konvensional seperti GitHub Issues atau Jira? Saya kemungkinan akan mencoba Fizzy, sebuah issue tracker baru yang dibuat oleh Basecamp karena saya orangnya Rails banget, hahaha.

Menurut saya, kita tidak perlu model yang teramat mahal dan terlampau canggih. Kita hanya perlu sebuah model yang cukup untuk mengerjakan tugas yang sangat, sangat sederhana. Ngomong-ngomong soal breaking down task, itulah makanan saya sehari-hari ketika bermain Factorio 😂.