Manajemen tugas agen AI: siklus klaim sebagai kontrak, bukan prompt
Cara mengelola tugas agen AI dengan siklus klaim yang ditegakkan server: masa pinjam, detak, pertanyaan, tanda terima, dan batas perhatian manusia.
Weft adalah pengelola tugas AI untuk pendiri tunggal dan tim kecil.
Oleh Andrei Finogeev ·
Manajemen tugas agen AI berhasil ketika papan, bukan prompt, yang memegang siklusnya: agen bertanya apa yang harus dikerjakan, mengklaim satu tugas dengan masa pinjam yang kedaluwarsa jika ia berhenti bersuara, bertanya kepada orangnya hanya untuk keputusan yang memang milik orang itu, dan selesai dengan tanda terima yang bisa diperiksa. Di Weft, setiap langkah itu adalah alat MCP yang diperiksa server, sehingga agen yang melewatkan satu langkah akan ditolak atau kehilangan tugasnya, bukannya diam-diam tidak sinkron.
Kami yang membuat Weft. Fakta tentang produk lain diambil dari halaman resminya, diperiksa pada 27 Oktober 2026.
Mengapa daftar tugas yang ditempel ke obrolan berhenti bekerja?
Menempelkan tugas ke obrolan adalah hal pertama yang dicoba semua orang, dan itu berhasil selama satu sore. Lalu obrolannya berakhir, dan keadaannya ikut berakhir. Agen tahu item mana yang sudah selesai, mana yang ditinggalkannya, dan apa yang membuatnya ragu. Sekarang tidak ada yang tahu.
Orang yang menempelkan daftar itu menjadi perantara, menyalin hasil kembali ke papan yang sebenarnya dan mengerjakan ulang pekerjaan yang diambil sesi kedua karena tidak ada yang menyatakan pekerjaan itu sudah diambil.
Akses ke papan menyelesaikan masalah potret, bukan sisanya. Jika alat yang tersedia hanya “pindahkan kartu” dan “tambahkan komentar”, siklusnya tetap bergantung pada agen yang mengikuti konvensi tertulis di instruksinya. Konvensi justru rusak tepat ketika ada yang salah: agen mogok di tengah run, atau dua agen mulai pada saat yang sama.
Seperti apa siklus klaim sebagai kontrak?
Di Weft, siklusnya punya lima langkah, dan masing-masing adalah alat terpisah di satu endpoint MCP, https://letsweft.com/api/mcp. Server menyimpan keadaan di antara langkah-langkah itu, sehingga siklusnya bertahan melewati akhir obrolan mana pun.
- get_my_work: bertanya sebelum memilih. Jawabannya mencakup apa yang sudah dipegang klien ini, apa yang menunggu orangnya, apa yang sudah lewat tenggat atau segera jatuh tempo, dan apakah masih ada ruang untuk memulai sesuatu.
- start_task: mengklaim dengan masa pinjam. Klaim berlaku 20 menit dan memindahkan tugas ke Doing. Responsnya membawa
runId,leaseToken, danrenewEverySeconds: 300. Klien kedua yang mencoba tugas yang sama mendapatalready_claimeddan petunjuk untuk tidak menduplikasi pekerjaan. - report_progress: detaknya. Setiap panggilan dengan id run dan token masa pinjam memperpanjang masa pinjam. Jika agen mati, detaknya berhenti, dan 20 menit kemudian run ditandai basi dan tugas kembali tanpa penanggung jawab agar bisa diambil siapa saja. Masa pinjam yang hilang menjawab
lease_lost, sehingga agen tahu ia tidak lagi memegang pekerjaan itu. - request_input: hanya untuk keputusan milik orangnya. Pertanyaan hingga 500 karakter, dengan hingga 10 pilihan. Klaim dipertahankan selama agen menunggu.
- complete_task: selesai dengan tanda terima.
outcome,artifacts(bukti seperti URL, commit, atau hash file),notDone,unknowns, dannextStep.
Mengapa masa pinjam dan bukan status? Karena keheningan adalah satu-satunya sinyal yang bisa dikirim agen yang mogok. Kartu di Doing mengatakan seseorang pernah mengerjakannya. Masa pinjam mengatakan seseorang sedang mengerjakannya sekarang, dan berhenti mengatakannya dengan sendirinya ketika itu tidak lagi benar.
Klaim itu sendiri adalah satu insert ke basis data yang dijaga indeks unik. Ketika dua agen berlomba, basis data yang menentukan siapa yang menang, jadi keduanya tidak bisa sama-sama mendapat tugasnya. Sebaliknya, dua komentar “Diklaim” yang diposting dengan selisih satu detik sama-sama komentar yang sah.
Kapan agen sebaiknya memanggil request_input?
Ketika ia mencapai sesuatu yang hanya bisa diputuskan orangnya: apa pun yang tidak bisa dibatalkan, seperti uang, publikasi, produksi, atau urusan hukum, atau persimpangan nyata tanpa pilihan bawaan yang masuk akal. Bukan untuk meminta izin melanjutkan.
Menahan diri itu penting karena sebuah pertanyaan menyita perhatian orangnya sebanyak tugas yang selesai, dan di Weft keduanya dihitung terhadap batas yang sama. Pertanyaan masuk ke Kotak masuk, dengan notifikasi push di ponsel dan, untuk item yang menunggu 20 menit atau lebih, pengingat lewat email. Weft tidak pernah memanggil balik agen: jawabannya tiba pada start_task atau get_my_work berikutnya. Selama pertanyaan masih terbuka, agen memegang tugas itu selama 60 menit; setelah itu masa pinjamnya lepas, tetapi pertanyaannya tetap ada.
Apa isi panggilan complete_task?
Hasil singkat, bukti, dan penjelasan jujur tentang batas-batasnya. Berikut payload realistis untuk perbaikan bug:
{
"id": "9b2f6c1e-4d7a-4c3b-8e21-5a0f3d9c7b14",
"runId": "d41e8a90-2f6b-4e17-9c3a-71b5e0a4c8f2",
"leaseToken": "lt_3f9a…",
"outcome": "Fixed the 500 on /api/invoices when the customer has no billing address. Fix is in PR #418; the route now returns 422 with a field error.",
"artifacts": [
{ "kind": "url", "uri": "https://github.com/acme/app/pull/418" },
{ "kind": "commit", "uri": "a1c9e07" },
{ "kind": "url", "uri": "https://preview-418.acme.dev/api/invoices/health", "httpStatus": 200 }
],
"claims": [
"Added a test for an empty billing address; the invoices test file passes locally"
],
"notDone": [
"Did not merge the PR",
"Did not backfill the 14 invoices that failed last week"
],
"unknowns": [
"Whether the mobile app shows the 422 message or a generic error"
],
"nextStep": "Merge PR #418 to main"
}Artefak adalah hal yang bisa diperiksa orangnya tanpa harus percaya begitu saja pada kata-kata agen. notDone dan unknowns bukan pengakuan dosa; keduanya memisahkan hasil yang bisa Anda andalkan dari hasil yang harus Anda susun ulang dari diff. Panggilan ini tidak pernah gagal karena bukti tidak ada, sebab kehilangan pekerjaan yang sudah selesai lebih buruk daripada mencatatnya tanpa verifikasi. Selengkapnya tentang membaca tanda terima ini di apa yang sudah dikerjakan agen AI saya.
Apa bedanya dengan memindahkan kartu dan memposting komentar?
Panduan Hypertask tentang siklus yang sama (klaim, perbarui, laporkan, tutup) menggambarkan kebiasaannya dengan baik. Versi MCP mereka untuk klaim adalah memuat tugas, memindahkannya ke bagian yang sedang dikerjakan, dan memposting komentar klaim, dipandu prompt yang ditulis tim ke dalam instruksi agen. Berikut siklus yang sama, langkah demi langkah:
| Langkah siklus | Papan yang hanya mengandalkan konvensi (agen memindahkan kartu dan berkomentar) | Apa yang ditegakkan Weft, dan dengan alat MCP apa |
|---|---|---|
| Memilih pekerjaan | Agen menampilkan daftar tugas dan memilih. Tidak ada yang memberitahunya bahwa orangnya sudah tenggelam dalam tinjauan. | get_my_work mengembalikan apa yang sudah dipegang klien ini, apa yang menunggu orangnya, apa yang lewat tenggat, dan apakah masih ada ruang untuk memulai sesuatu. |
| Mengklaim | Pindahkan kartu ke Doing dan posting “Diklaim.” Dua agen bisa melakukannya pada saat yang sama dan sama-sama yakin memilikinya. | start_task mengambil masa pinjam 20 menit dalam satu penulisan basis data yang dijaga indeks unik. Yang kalah mendapat already_claimed beserta id dan judul tugas. |
| Tetap hidup | Komentar kemajuan, jika agen ingat. Agen yang mogok meninggalkan kartu di Doing tanpa batas waktu. | report_progress memperpanjang masa pinjam (agen diminta melakukannya setiap 5 menit). Setelah 20 menit hening, run ditandai basi dan tugasnya bebas lagi. |
| Bertanya | Komentar “Terhambat:”. Agen berhenti atau menebak; kartunya mungkin masih terlihat sedang dikerjakan. | request_input menaruh pertanyaan dengan hingga 10 pilihan di Kotak masuk orangnya dan mempertahankan klaim (60 menit selama diparkir). Jawabannya kembali lewat start_task atau get_my_work. |
| Melapor | Komentar akhir berupa teks bebas. Bentuknya bergantung pada seberapa bagus prompt-nya. | complete_task menerima kolom bernama: outcome, artifacts, notDone, unknowns, nextStep. |
| Menutup atau meninjau | Agen memindahkan kartu ke Review atau Done, sesuai perintah prompt. | Secara bawaan, tugas masuk ke Done. Tugas berhenti di Kotak masuk untuk Terima / Kerjakan ulang / Nanti / Batalkan jika perlu ditinjau atau pemeriksaan verifikasi gagal. |
| Kelebihan beban | Tidak ada apa-apa. Agen terus memulai pekerjaan dan kolom Review terus membengkak. | start_task menolak dengan attention_queue_full begitu 5 item (satu orang) atau 10 (tim) menunggu orang, atau 45 menit tinjauan. |
Agar adil terhadap Hypertask: mereka memang punya masa pinjam sungguhan. Dokumentasinya mencantumkan endpoint untuk klaim, detak, dan pelepasan masa pinjam, dan tabel Known limitations-nya menyatakan bahwa masa pinjam tugas, bukti, dan eskalasi hanya berupa endpoint REST, memang dirancang begitu (ikhtisar MCP Hypertask). Referensi alatnya tidak memuat alat masa pinjam di antara 21 alat MCP-nya (referensi alat). CLI-nya juga bisa mengklaim, sebagai perintah opsional (changelog, referensi CLI). Jadi agen berbasis skrip di Hypertask bisa memegang masa pinjam; agen yang bekerja lewat MCP di Claude Code atau Cursor mendapat versi kartu-dan-komentar, kecuali ada yang menyambungkan panggilan REST-nya.
Jika agen Anda berjalan sebagai skrip dan job CI, CLI dan REST API Hypertask adalah keunggulan nyata, dan Weft tidak punya keduanya: tanpa CLI, tanpa REST API publik, tanpa webhook. Weft untuk agen yang hidup di dalam klien MCP dan membutuhkan siklusnya bertahan di sana.
Apa yang dilihat orangnya?
Sebagian besar waktu, kartu di Done: secara bawaan, tugas yang selesai langsung masuk ke sana beserta hasil dan buktinya.
Tugas berhenti di Kotak masuk orangnya jika ditandai perlu ditinjau, atau jika pemeriksaan verifikasi gagal. Di sana orangnya memilih salah satu dari empat jawaban:
- Terima: pekerjaan diterima. Jika agen menyertakan nextStep, orangnya melihatnya di atas tombol (“Jika Anda menerimanya, agen akan …”), dan menerima berarti menyetujui tepat langkah itu, tidak lebih luas. Persetujuan berlaku 72 jam dan kembali kepada agen lewat get_my_work atau start_task.
- Kerjakan ulang: kembalikan, dengan catatan yang menjelaskan apa yang salah.
- Nanti: tidak sekarang. Batalkan: berhenti mengerjakannya.
Kotak masuk ada di web, dan ketika sesuatu masuk ke sana, orangnya juga menerima notifikasi push di aplikasi seluler Weft. Jabat tangan nextStep mencegah agen menganggap “kelihatannya beres” sebagai izin untuk merge, deploy, dan mengirim: ia boleh melakukan satu langkah yang disetujui, lalu menyelesaikan tugas itu lagi.
Mengapa agen ditolak alih-alih memulai pekerjaan baru?
Karena perhatian, bukan pekerjaan, yang langka. Agen bisa memulai sepuluh hal dalam waktu yang dibutuhkan seseorang untuk meninjau satu.
Weft menghitung apa yang menunggu orang: tugas yang menunggu tinjauan ditambah pertanyaan yang masih terbuka. Ketika jumlahnya mencapai 5 item di ruang kerja satu orang, 10 di tim, atau sekitar 45 menit perkiraan waktu tinjauan, mana yang lebih dulu tercapai, start_task menolak dengan attention_queue_full. Batasnya bergantung pada jumlah orang di ruang kerja, bukan pada paketnya.
Penolakan itu sebuah instruksi, bukan jalan buntu. Ia melaporkan ukuran antrean, umur item tertua, dan panggilan yang masih diizinkan: report_progress, get_my_work, get_board_state, dan search. Langkah yang sudah disetujui orangnya pada kartu itu dikecualikan, jadi “merge PR #418” yang sudah diterima tidak diblokir oleh antrean.
Bagaimana cara menyiapkannya?
Hubungkan klien Anda dan masuk lewat browser; tidak ada kunci yang perlu disalin. Weft menerbitkan refresh token, sehingga klien memperbarui sesi masuknya sendiri. Di Claude Code cukup satu perintah, claude mcp add --transport http weft https://letsweft.com/api/mcp (halaman pengaturan). Cursor punya instalasi satu klik (Cursor), Codex memerlukan entri konfigurasi dan codex mcp login weft (Codex), dan ChatGPT punya aplikasi Weft yang sudah terbit di semua paket termasuk Free (ChatGPT). Server menjelaskan siklusnya sendiri kepada agen, jadi tidak perlu prompt siklus hidup.
Untuk panduan Claude Code, lihat papan tugas untuk Claude Code. Untuk beberapa agen di satu papan, tempat masa pinjam dan already_claimed paling berarti, lihat beberapa agen AI, satu papan. Protokolnya sendiri didokumentasikan di modelcontextprotocol.io, dan papan MCP lain dibandingkan di pengelola tugas MCP.
Apa yang tidak dilakukan Weft di sini?
- Tidak ada CLI, REST API publik, maupun webhook, jadi cron job dan pipeline CI tidak bisa menjalankan siklusnya di luar klien MCP.
- Tidak ada integrasi GitHub atau Slack. Bukti adalah apa pun yang ditautkan agen di artifacts.
- Tidak ada AI bawaan. Proses berpikirnya terjadi di klien AI Anda sendiri, itulah juga sebabnya Weft tidak memerlukan kredit AI.
Free mencakup 50 tugas dan 200 panggilan AI per bulan. Pro seharga $7 per kursi per bulan atau $60 per kursi per tahun (harga).
- Bukankah prompt yang bagus sudah cukup untuk membuat agen mengikuti siklusnya?
- Prompt menggambarkan siklus; ia tidak bisa menegakkannya. Prompt tidak mencegah dua agen mengklaim tugas yang sama, dan tidak bisa membebaskan tugas yang dipegang agen yang mogok. Di Weft, klaim adalah masa pinjam yang dimiliki server, jadi kasus-kasus itu tertangani entah agen ingat instruksinya atau tidak.
- Apa yang terjadi jika agen saya mogok di tengah jalan?
- Detaknya berhenti. Dua puluh menit setelah report_progress terakhir, run ditandai basi, token masa pinjam dihapus, dan tugas kembali tanpa penanggung jawab, sehingga agen lain atau seseorang bisa mengambilnya. Kartunya tidak menggantung di Doing selama seminggu.
- Apakah setiap tugas yang selesai menunggu saya tinjau?
- Tidak. Secara bawaan, tugas yang selesai langsung masuk Done beserta hasil dan buktinya. Tugas berhenti di Kotak masuk Anda untuk Terima, Kerjakan ulang, Nanti, atau Batalkan hanya jika perlu ditinjau atau pemeriksaan verifikasi gagal.
- Mengapa saya ingin agen saya ditolak mengambil pekerjaan?
- Karena kalau tidak, ia terus menghasilkan hal yang tidak sempat Anda periksa. Begitu 5 item (10 untuk tim) atau sekitar 45 menit tinjauan menunggu orang, start_task mengembalikan attention_queue_full dan mengarahkan agen ke hal yang masih bisa dilakukannya. Mengosongkan antrean akan membukanya kembali.
- Hypertask juga punya masa pinjam. Mengapa MCP penting?
- Masa pinjam Hypertask berupa endpoint REST, menurut dokumentasinya sendiri (ikhtisar MCP), dan CLI-nya juga bisa mengklaim. Itu cocok untuk agen berbasis skrip. Agen yang bekerja lewat alat MCP di editor atau obrolan tidak mendapatkannya di sana, sedangkan di Weft mendapatkannya: start_task, report_progress, dan complete_task adalah alat MCP.