Skip to content

Kontrak Sebelas Agen Spesialis: Batasan Alat, Bukan Narasi

Adityo Guni Waluyo

Sebelas file .claude/agents bikin saya sadar: yang mengendalikan subagen adalah field tools, model, dan hook, bukan panjang deskripsinya.

Ringkasan

Ternyata yang ngatur agen bukan deskripsi panjangnya, tapi field kecil kayak tools, model, dan maxTurns yang membatasi apa yang boleh mereka sentuh. Tiap agen cuma dikasih alat yang memang dia butuh, dan laporannya wajib menyebut konsumennya biar bisa diteruskan. Gerbang kerja diikat ke cek yang bisa dijalankan, bukan cuma obrolan.

Saya buka satu commit pemeliharaan di repo KotaPortal, dan isinya sebelas berkas baru di .claude/agents/: architect, backend-engineer, code-reviewer, debugger, dev-lead, frontend-engineer, infra-engineer, release-manager, researcher, security-reviewer, test-engineer. Saya kira bakal ketemu sebelas paragraf kepribadian yang panjang, semacam "kamu adalah engineer senior yang teliti", terus jalan. Ternyata isinya jauh lebih kering dari itu, dan bagian yang paling banyak membatasi cuma enam baris di kepala tiap berkas.

Saya salah duga soal apa yang mengendalikan agen. Yang mengendalikan bukan jumlah kalimat di deskripsi, tapi field yang bisa dicek mesin. Dokumen resminya jelas: tiap subagen jalan di jendela konteksnya sendiri, dengan system prompt sendiri, akses alat spesifik, dan izin independen [1]. Kalau field-nya salah, deskripsinya sebagus apa pun tetap kalah.

Enam baris yang membatasi

Ini isi depan berkas code-reviewer, dipangkas hanya sampai field-nya:

name: code-reviewer
tools: Read, Grep, Glob, Bash, WebFetch, WebSearch, mcp__context7__*
model: opus
memory: local
maxTurns: 40
---

Baris tools itu yang paling berbunyi. Dokumen subagen menyebut dua alasan membatasi alat: "Enforce constraints by limiting which tools a subagent can use" dan "Control costs by routing tasks to faster, lower-cost models like Haiku" [1]. Reviewer dapat Bash tapi bukan tulis-file, peninjau yang lain malah dikunci sampai ruang memorinya sendiri. Dev-lead justru dibekali daftar panjang Agent(...): dia boleh memanggil sebelas spesialis, tapi tidak boleh riset sendiri — pertanyaan teknis dilempar ke researcher.

Field omitClaudeMd ikut menentukan apakah CLAUDE.md repo ikut dimuat untuk subagen tertentu [1]. Prinsipnya sama semua: yang dibagi ke tiap agen cuma yang memang dia butuh. Soal biaya, pengalaman lokal saya mencatat kerja multi-agen jauh lebih boros token daripada kerja langsung di satu percakapan, jadi aturan tim saya tegas: perbaikan satu file jangan pernah didelegasikan. Angka pastinya tidak saya punya; yang saya punya adalah kebiasaan mengeceknya sebelum memanggil spesialis mana pun.

Laporan yang menyebut penerimanya

Sebelas berkas itu berbagi satu blok standar yang isinya persis sama. Isinya tangga eskalasi lima langkah untuk kasus ragu: bukti di repo dulu, lalu context7 untuk dokumentasi pustaka, lalu web untuk error dan rilis, kalau alatnya tidak ada laporkan celahnya ke dev-lead, terakhir nyatakan apa yang memang tidak diketahui. Tidak ada "seharusnya", tanpa nebak.

Bagian yang paling saya pakai justru soal laporan: laporan itu antarmuka ke konsumen berikutnya dari pekerjaanmu, dan kamu harus menyebut siapa konsumennya. Itu yang bikin spesialis baca-saja seperti architect dan security-reviewer menulis temuan di respons akhir mereka, sementara dev-lead yang menyimpannya ke papan kerja. Subagen tidak berbagi konteks dengan lead sama sekali, jadi tiap brief harus berdiri sendiri: tujuan, file target, batasan, kriteria selesai.

Di sini dokumen Anthropic soal sistem riset multi-agen cocok: "A multi-agent system consists of multiple agents (LLMs autonomously using tools in a loop) working together" [2], dan subagen yang paralel memberi pemisahan soal lewat alat, prompt, dan trajektori eksplorasi yang berbeda [2].

Gerbang, memori, dan hook yang menolak

Urutan kerja tim ditulis sebagai gerbang: desain, implementasi, tes, tinjauan, rilis. Satu gerbang gagal, balik ke peran yang bertanggung jawab sekali saja, gagal lagi berhenti dan lapor ke manusia. Persetujuan desain, penerimaan tinjauan, dan deploy tetap hak manusia, tidak bisa ditandai selesai atas kata agen.

Bagian aturan ini sadar diri soal statusnya sendiri. Dokumen memori Claude Code menulis terus terang: "Claude treats them as context, not enforced configuration. To block an action regardless of what Claude decides, use a PreToolUse hook instead" [3]. Makanya tiap berkas reviewer juga memuat hook yang menolak mutasi git lewat Bash, dan peninjau baca-saja cuma boleh menulis ke direktori memorinya sendiri. Subagen memang bisa punya memori otomatisnya sendiri [3], jadi riwayat keputusan yang sama tidak perlu diketik ulang tiap sesi.

Verifikasinya juga diikat ke hal yang bisa dijalankan: "Give Claude a check it can run: tests, a build, a screenshot to compare" [4]. Gerbang tanpa pemeriksaan yang bisa dijalankan cuma percakapan. Dan karena "Context is a critical but finite resource for AI agents" [5], deskripsi tiap subagen dijaga pendek: kalau deskripsi sebelas agen digabung lewat 15.000 token, Claude Code kasih peringatan saat startup [1]. Detailnya taruh di system prompt yang cuma dimuat saat subagen itu dipanggil.

Saya sekarang baca file agen seperti membaca kontrak kerja: siapa boleh sentuh apa, siapa melapor ke siapa, dan siapa yang berhenti. Paragrafnya cuma tambahan.

Sumber

Artikel terkait