GitHub Tidak Dibuat untuk AI Agent (Jadi Cloudflare Membuat Versi Mereka Sendiri)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Jadi, Cloudflow sedang mengerjakan sesuatu yang disebut Artifacts, sistem berkas terdistribusi yang
00:00:05kompatibel dengan Git dan dibangun untuk agen terlebih dahulu, serta memungkinkan Anda membuat, melakukan fork,
00:00:10atau menghapus ribuan repo secara terprogram, tidak peduli seberapa kecil atau besar ukurannya, untuk hal-hal seperti peninjauan PR
00:00:15paralel, refaktorisasi otomatis basis kode besar, dan ruang kerja agen per sesi.
00:00:20Namun karena ini dibangun di atas durable objects, apakah itu berarti Anda harus menggunakan JavaScript
00:00:25dan tidak bisa mengakses perintah shell untuk menjalankan Git?
00:00:28Tekan tombol subscribe dan mari kita cari tahu!
00:00:33GitHub dibuat untuk manusia, bukan untuk agen, artinya mereka tidak membutuhkan aspek sosial apa pun,
00:00:37seperti pengikut atau diskusi, tetapi agen sangat mahir dalam Git, itu sudah ada dalam
00:00:42data pelatihan mereka.
00:00:43Jadi, Cloudflare telah membangun implementasi Git dasar menggunakan Zig, mengompilasinya ke Wasm, dan menempatkannya pada
00:00:49durable object untuk bertindak sebagai server Git.
00:00:52Sementara itu, kliennya sendiri bisa berupa apa pun yang Anda inginkan, seperti worker yang menggunakan isomorphic Git
00:00:57di dalam worker atau menggunakan protokol Git dan bahkan klien HTTP sehingga Anda dapat terhubung
00:01:03ke sana untuk hal-hal yang tidak menggunakan JavaScript.
00:01:05Sekarang, sayangnya pada saat rekaman ini dibuat, saya tidak memiliki akses ke Artifacts karena masih
00:01:10dalam beta pribadi, tetapi ada banyak dokumentasi tentang hal itu, yang berarti saya bisa membuat demo dengan
00:01:15kode dari dokumentasi tersebut dan mungkin ketika sudah dirilis dalam beta publik, Anda bisa memeriksa
00:01:19apakah kode saya benar-benar berfungsi.
00:01:20Jadi, apa yang akan kita lakukan adalah membangun alat yang mengambil daftar tugas untuk sebuah repo
00:01:24tertentu dan menjalankan semua tugas ini secara paralel dengan melakukan fork pada repo tersebut berkali-kali dan menjalankan
00:01:29setiap tugas pada artefaknya sendiri di repo Cloud pada durable object.
00:01:34Mari kita lihat bagaimana cara kerjanya.
00:01:35Sekarang saya mulai dengan mengikuti dokumentasi untuk Artifacts dalam memulai worker,
00:01:39jadi saya menggunakan perintah ini dan teks di sini setelah perintah ini hanyalah nama proyeknya
00:01:44dan bisa berupa apa saja.
00:01:45Jadi, saya mengikuti semua langkah ini, yang akhirnya memberi saya kode worker dasar ini.
00:01:49Dan worker untuk Artifacts sedikit lebih efisien daripada menggunakan REST API karena mereka
00:01:53melakukan lebih sedikit perjalanan pulang pergi (round trip).
00:01:55Kemudian setelah itu, Anda perlu menambahkan binding Artifacts ke berkas wrangle.jsonc atau toml Anda,
00:02:00lalu jalankan ulang tipenya.
00:02:02Sekarang dokumentasi di sini berfokus pada pembuatan repo baru, jadi ia menggunakan binding Artifacts
00:02:07dengan metode create dan nama repo.
00:02:09Ini membuat namanya, yang memberikannya token dan remote.
00:02:13Jadi remote adalah lokasi artefak dan token atau token autentikasi juga diperlukan
00:02:17untuk memberi Anda akses ke sana.
00:02:18Dan tentu saja Anda dapat menggunakan protokol git menggunakan remote dan token untuk berinteraksi
00:02:22dengan artefak Anda.
00:02:23Tapi kita akan melakukan sesuatu yang berbeda.
00:02:25Alih-alih membuat repo baru di durable object Artifacts, kita pertama-tama akan
00:02:29memeriksa apakah ada yang bernama baseline.
00:02:31Lalu jika tidak ada, yang akan kita lakukan adalah mengimpor repo git dan kemudian saya telah
00:02:35memberinya nama baseline dan kemudian mengembalikan nilai tersebut di sini.
00:02:39Dan tentu saja, jika Anda melihat dokumentasi API untuk binding worker, Anda akan melihat lebih banyak
00:02:43parameter yang dapat ditambahkan ke metode import.
00:02:45Tapi kemudian setelah kita mengembalikan repo yang ada, maka kita bisa melakukan beberapa hal yang sangat keren
00:02:49dengannya.
00:02:50Jadi inilah tugas-tugas yang ingin saya lakukan pada repo tersebut, dan tentu saja saya telah melakukan hard code
00:02:53pada tugas tersebut, tetapi ini bisa ditambahkan melalui input atau semacam UI.
00:02:56Dan di sini di dalam ekspor default worker, saya memiliki SDK Anthropic serta repo
00:03:00baseline saya.
00:03:02Dan saya akan mengulang semua tugas dan di sini, saya melakukan fork pada repo dengan
00:03:06nama ini.
00:03:07Lalu kita memiliki fungsi ini, yang akan saya bahas nanti, tapi ini menjalankan tugas di dalam
00:03:10repo yang di-fork dan meminta agen untuk membuat perubahan sambil mengembalikan ringkasan agen.
00:03:15Jadi hal terakhir yang dikatakan agen, dan kemudian setelah setiap loop for, saya mengembalikan informasi
00:03:19ini.
00:03:20Saya akan mencantumkan nama tugas, nama fork, remote, dan token
00:03:23agar kita dapat mengaksesnya kapan pun kita ingin melihat apakah perubahannya bagus dan ringkasan
00:03:27dari apa yang telah dilakukan.
00:03:28Jadi saat ini binding worker tidak memberi Anda kemampuan untuk melakukan pull, commit, dan push.
00:03:33Jadi dalam kode saya, saya harus melakukannya dengan isomorphic FET dan kemudian menggunakan sistem penyimpanan dalam memori
00:03:38untuk menyimpan perubahan untuk sementara.
00:03:39Jadi kembali ke kode agen, kita membuat sistem berkas kita di dalam memori, dan kemudian kita memiliki
00:03:43prompt sistem yang memberi tahu agen untuk membuat perubahan yang relevan dan kemudian melakukan commit pada
00:03:47kode mereka.
00:03:48Jadi kita akan melakukan clone pada repo yang di-fork menggunakan remote yang telah disediakan serta
00:03:51tokennya.
00:03:52Dan kemudian kita menentukan beberapa alat, yaitu baca, tulis, dan commit.
00:03:55Di sini kita memilih model dan memberikan prompt sistem pada model kita, lalu kita memberikan tugas
00:03:59sebagai pesan pengguna.
00:04:00Dan sisa kodenya adalah loop agen standar Anda.
00:04:02Jadi jika ada panggilan alat, hentikan penalaran dan jalankan panggilan alat, dalam kasus kita, baca, tulis,
00:04:07atau commit, yang juga kebetulan mendorong (push) kode setelah melakukan commit.
00:04:10Dan keuntungan memiliki artefak adalah semua kode ini akan ada di durable object,
00:04:14disimpan dalam basis data SQLite dari objek tersebut, dan jika durable object mati, informasinya
00:04:20dapat diambil dari basis data SQLite kapan saja jika ia kembali aktif.
00:04:23Dan kemudian di bawah sini, kita melanjutkan penalaran model setelah panggilan alat sebelum mengembalikan
00:04:27pesan terbaru dari model.
00:04:29Sekarang saya tahu sangat sulit untuk memvisualisasikan semua ini terjadi tanpa saya bisa
00:04:32menjalankan kodenya, tetapi mudah-mudahan Anda bisa melihat apa yang bisa dilakukan dengan artefak dan
00:04:37potensi penuhnya.
00:04:38Bayangkan jika Anda bisa memiliki UI untuk melihat semua perubahan yang terjadi di artefak-artefak ini
00:04:42dan Anda dapat berkomunikasi dengan agen individu atau satu agen orchestrator untuk membuat perubahan
00:04:46pada berbagai repo.
00:04:48Berbicara tentang agen orchestrator, kita bisa memiliki satu worker yang dapat mengorkestrasi
00:04:52semua perubahan ini dan menggabungkannya ke repo utama setelah agen peninjau
00:04:56memeriksa kodenya.
00:04:57Kita bahkan bisa menggabungkan artefak dengan worker dinamis sehingga agen dapat menjalankan kode yang telah mereka
00:05:02ubah untuk melihat apakah kodenya berhasil.
00:05:03Dan jika itu bukan kode JavaScript, maka kita bisa menggunakan Cloudflare sandbox untuk menjalankan bahasa apa pun
00:05:07yang kita inginkan dan bahkan menjalankan perintah shell.
00:05:09Belum lagi ada opsi browser Cloudflare yang menjalankan browser puppeteer untuk
00:05:13model agar bisa melihat dan mengetahui apakah kode yang diimplementasikannya benar jika itu adalah perubahan front-end.
00:05:18Sejujurnya saya sangat senang memikirkan kemungkinan artefak, meskipun
00:05:21saya belum bisa menjalankannya.
00:05:22Tetapi satu hal yang saya perhatikan adalah tidak ada perintah git diff.
00:05:25Itu tidak diekspos dalam API binding worker atau dalam isomorphic git.
00:05:30Jadi mungkin satu-satunya cara untuk melakukan git diff adalah melalui protokol git, atau mereka mungkin menambahkannya di
00:05:35masa mendatang.
00:05:36Bagaimanapun, saat ini, jika Anda ingin melakukannya tanpa menggunakan protokol git, saya rasa Anda bisa menggunakan
00:05:40isomorphic git menggunakan git log untuk menemukan pohon git agar bisa berjalan menyusuri pohon tersebut untuk
00:05:45membandingkan perbedaannya.
00:05:46Terlepas dari itu, saya pikir ini adalah rilis yang sangat keren dari Cloudflare.
00:05:50Dan meskipun sudah ada alat sistem berkas lain seperti S3 files, ZeroFS, dan JuiceFS yang
00:05:55sudah ada, saya tidak berpikir opsi-opsi ini kompatibel dengan git, yang merupakan fitur yang sangat keren
00:05:59dan lebih ramah agen.
00:06:01Berbicara tentang S3, jika Anda pernah ingin menjalankannya secara lokal di mesin Anda, maka lihatlah
00:06:05video oleh Josh ini yang memberi tahu Anda cara melakukannya.

Key Takeaway

Cloudflare Artifacts menciptakan sistem berkas terdistribusi berbasis Durable Objects yang dirancang khusus untuk memproses repositori Git secara paralel dan terprogram oleh AI agent, melampaui keterbatasan platform seperti GitHub yang dibuat untuk interaksi manusia.

Highlights

Cloudflare Artifacts menyediakan sistem berkas terdistribusi yang kompatibel dengan Git dan dioptimalkan secara khusus untuk alur kerja AI agent.

Implementasi Git dasar dalam Artifacts dibangun menggunakan bahasa Zig dan dikompilasi ke WebAssembly (Wasm) untuk berjalan di atas Durable Objects.

Penggunaan Durable Objects memungkinkan penyimpanan data persisten dalam basis data SQLite, sehingga data tetap tersedia meskipun objek sempat nonaktif.

Arsitektur ini memungkinkan fork ribuan repositori secara terprogram untuk keperluan peninjauan PR paralel dan refaktorisasi basis kode skala besar.

Interaksi dengan artefak dapat dilakukan menggunakan protokol Git standar, klien HTTP, atau Worker yang memanfaatkan Isomorphic Git.

Timeline

Keterbatasan GitHub untuk AI Agent

  • GitHub dirancang untuk kebutuhan interaksi manusia seperti fitur sosial, bukan untuk kebutuhan komputasi agen.
  • Agen memerlukan kemampuan untuk membuat, memfork, dan menghapus repositori secara terprogram dalam skala besar.
  • Sistem berkas yang kompatibel dengan Git sangat krusial agar agen dapat bekerja dengan alur kerja yang sudah mereka kuasai.

GitHub tidak efisien untuk tugas-tugas seperti peninjauan PR paralel atau refaktorisasi otomatis pada basis kode besar karena tidak mendukung alur kerja yang berpusat pada agen. Kebutuhan akan sistem yang mampu menangani ribuan repositori secara efisien menjadi dasar pengembangan Cloudflare Artifacts.

Arsitektur Teknis Cloudflare Artifacts

  • Server Git diimplementasikan menggunakan bahasa Zig yang dikompilasi ke WebAssembly (Wasm).
  • Penyimpanan data utama dijamin oleh Durable Objects yang memanfaatkan basis data SQLite.
  • Protokol Git dan klien HTTP didukung untuk memberikan fleksibilitas akses di luar lingkungan JavaScript.

Cloudflare menggunakan Durable Objects sebagai fondasi server Git. Pendekatan ini memberikan keunggulan berupa persistensi data yang kuat, di mana informasi dapat diambil kembali dari basis data SQLite bahkan setelah objek dihentikan sementara.

Implementasi Worker dan Alur Kerja Agen

  • Worker Artifacts mengurangi latensi dibandingkan penggunaan REST API standar karena meminimalkan round trip jaringan.
  • Pembuatan repositori dilakukan dengan binding Artifacts yang menghasilkan token autentikasi dan lokasi remote.
  • Tugas dijalankan dengan melakukan fork pada repositori baseline ke dalam artefak terpisah untuk setiap sesi agen.

Pengembang dapat mengintegrasikan Artifacts dengan memberikan binding pada konfigurasi worker. Proses kerja melibatkan pemeriksaan repositori baseline, melakukan fork, dan mengeksekusi tugas agen secara paralel di setiap artefak yang terisolasi.

Potensi Integrasi dan Masa Depan

  • Sistem penyimpanan dalam memori digunakan untuk sementara karena binding saat ini belum mendukung perintah native seperti pull, commit, dan push secara langsung.
  • Integrasi dengan Cloudflare Sandbox dan browser puppeteer memungkinkan agen menguji kode secara dinamis.
  • Kompatibilitas Git membuat Artifacts lebih unggul dibandingkan sistem penyimpanan berkas lain seperti S3, ZeroFS, atau JuiceFS untuk kebutuhan agen.

Potensi masa depan mencakup penggunaan agen orchestrator untuk menggabungkan perubahan dari berbagai repositori setelah peninjauan. Meskipun fitur seperti git diff belum tersedia secara native, fleksibilitas infrastruktur ini membuka ruang untuk otomatisasi penuh dalam siklus pengembangan perangkat lunak berbasis AI.

Community Posts

View all posts