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.