Modul 3 · Bab 3: Agen pertama
Agen pertama yang hanya membaca
Intinya
Agen pertama sebaiknya hanya bisa mencari dan membaca, bekerja di salinan tanpa berkas rahasia, dengan batas putaran, batas anggaran, dan batas keluaran yang cukup sejak percobaan pertama.
Setelah pelajaran ini kamu bisa
- Membangun agen pertama yang hanya boleh membaca
- Memasang batas putaran dan anggaran sejak percobaan pertama
Istilah di pelajaran ini
Pahami
Agen pertamamu sebaiknya hanya bisa membaca. Menulis tidak sulit, tetapi agen baca-saja memberimu semua pelajaran penting dengan risiko paling kecil: kamu belajar menulis tujuan, melihat bagaimana model memilih alat, membaca jejaknya, dan menghitung biayanya, tanpa ada yang bisa rusak.
Tugas yang cocok untuk agen baca-saja pertama: menyusun daftar keputusan dari setumpuk notulen, mencari semua tempat sebuah istilah dipakai di dokumen proyek, atau menjelaskan bagaimana sebuah folder kode tersusun. Semuanya butuh beberapa putaran, karena agen harus mencari, membuka, lalu membaca berkas sesuai temuannya. Karena itu tugas ini cocok untuk agen; satu prompt (perintah atau instruksi yang kamu tulis untuk AI) tidak cukup.
Untuk agen baca-saja, alat yang diberikan cukup tiga jenis: mencari berkas menurut nama, mencari teks di dalam berkas, dan membaca isi berkas. Tidak ada alat untuk menulis, menjalankan perintah, membuka internet, atau memulai subagen (subagent), yaitu agen kedua yang dipanggil agen utama. Setiap alat tambahan adalah kemampuan tambahan yang harus kamu awasi, jadi jangan berikan sebelum ada alasan.
Tempatkan agen di sandbox (lingkungan terisolasi) dari bab dua: folder berisi salinan dokumen, di mesin atau kontainer (container) yang tidak menyimpan berkas rahasia. Ingat, agen baca-saja tetap bisa membocorkan: apa pun yang ia baca masuk ke konteks, tercatat di jejak, dan dikirim ke penyedia model. Kalau di folder itu ada berkas berisi kunci atau kata sandi, membaca saja sudah cukup untuk membuatnya tersebar.
Batas dipasang sejak percobaan pertama, bukan setelah ada masalah. Ada tiga batas yang berbeda, dan ketiganya perlu:
- Batas putaran: jumlah maksimum siklus model memilih alat dan membaca hasilnya. Untuk tugas meringkas satu folder kecil, sepuluh sampai lima belas putaran biasanya cukup. Kalau batasnya tercapai, itu tanda tujuan kurang jelas atau tugasnya terlalu besar, bukan alasan menaikkan batas.
- Batas anggaran: biaya maksimum satu tugas dalam mata uang. Ini melindungimu dari putaran yang terus membaca berkas besar.
- Batas keluaran: jumlah token (potongan kata yang dihitung dan dibaca model) maksimum yang boleh ditulis model dalam satu jawaban. Jangan terlalu kecil: model penalaran (reasoning model) memakai sebagian anggaran ini untuk berpikir, dan batas yang terlalu ketat bisa menghasilkan jawaban kosong.
Selain batas, tetapkan tujuan yang bisa diperiksa dan bentuk hasil sebelum menjalankan: misalnya "daftar keputusan, satu baris per keputusan, dengan nama berkas sumbernya". Bentuk yang menyebut sumber membuatmu bisa mengecek setiap baris ke berkasnya. Tanpa itu, kamu hanya bisa percaya.
Langkah khusus Anthropic, cek versi terbaru.
Sebagai contoh yang dikerjakan, ini agen baca-saja dengan Claude Agent SDK untuk Python (paket claude-agent-sdk). Opsi tools hanya menyediakan tiga alat baca bawaan, allowed_tools membiarkan ketiganya berjalan tanpa bertanya, dan permission_mode="dontAsk" menolak panggilan lain yang seharusnya bertanya. Tanpa tools, dontAsk saja masih meloloskan panggilan yang tidak butuh persetujuan, seperti perintah shell baca-saja dan memulai subagen. Opsi max_turns dan max_budget_usd memasang batas putaran dan anggaran, dan cwd menentukan folder kerjanya:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
async def main():
options = ClaudeAgentOptions(
tools=["Read", "Glob", "Grep"],
allowed_tools=["Read", "Glob", "Grep"],
permission_mode="dontAsk",
max_turns=12,
max_budget_usd=0.50,
cwd="salinan-notulen",
)
tugas = "Saya perlu daftar keputusan dari notulen di folder ini, dengan nama berkas sumber tiap keputusan."
async for message in query(prompt=tugas, options=options):
if isinstance(message, ResultMessage):
print(message.result)
print("biaya", message.total_cost_usd, "putaran", message.num_turns)
asyncio.run(main())Pesan terakhir dari query() adalah ResultMessage yang memuat hasil akhir, perkiraan biaya, dan jumlah putaran. Folder kerja bukan tembok: jalankan contoh ini di mesin atau kontainer yang hanya berisi salinan dokumen. Langkah khusus Anthropic; cek versi terbaru di dokumentasinya karena nama opsi bisa berubah.
Sebelum
Permintaan
Baca semua dokumen di drive tim dan beri tahu saya apa saja yang penting.
Hasilnya
Contoh keluaran buruk; angka dan rujukannya dikarang model, jangan dipakai: Saya membaca 312 dokumen. Hal penting: anggaran naik 18 persen, proyek gudang mundur dua bulan, dan ada tiga risiko utama. Detail lainnya tersedia bila diperlukan.
Sesudah
Permintaan
Tujuan: saya perlu daftar keputusan rapat proyek bulan ini. Bahan: hanya folder salinan notulen yang saya siapkan; agen hanya boleh mencari dan membaca. Batas: paling banyak 12 putaran; jangan menyimpulkan keputusan yang tidak tertulis di notulen. Bentuk: satu baris per keputusan: keputusan, tanggal rapat, nama berkas sumber. Cek: tandai keputusan yang bertentangan antar notulen.
Hasilnya
Daftar keputusan, satu baris per keputusan dengan tanggal rapat dan nama berkas notulennya. Satu baris ditandai: dua notulen mencatat tenggat yang berbeda untuk tugas yang sama. Agen berhenti di putaran kesembilan.
Yang berubah
- Permintaan pertama memberi akses ke seluruh drive dan tidak meminta sumber, sehingga angka di hasilnya tidak bisa diperiksa.
- Permintaan kedua membatasi bahan ke satu folder salinan, memberi batas putaran, dan meminta nama berkas di setiap baris.
- Tanda pertentangan antar notulen adalah hal yang paling berguna untuk diperiksa manusia.
Kesalahan umum
- Kesalahan
- Menjalankan agen pertama tanpa batas putaran dan anggaran "untuk melihat seberapa jauh ia bisa".
- Kenapa merugikan
- Agen yang tujuannya kabur akan terus membuka berkas, dan setiap putaran mengirim ulang konteks yang makin besar. Biaya naik lebih cepat dari yang kamu kira, dan hasilnya tidak lebih baik.
- Lakukan ini
- Pasang batas putaran dan anggaran yang kecil sejak percobaan pertama. Kalau batasnya tercapai, perjelas tujuan atau pecah tugasnya, lalu jalankan lagi.
Coba
Agen pertamamu bertugas menyusun daftar keputusan dari notulen. Kumpulan alat mana yang tepat?
Kartu pilah
Pasangkan masalah dengan batas yang mencegahnya.
Model penalaran mengembalikan jawaban kosong
Satu tugas membaca berkas sangat besar berulang kali dan biayanya melonjak
Agen terus membuka berkas baru tanpa pernah menyimpulkan
Agen mengulang pencarian yang sama sepuluh kali
Agen dijalankan tiap malam dan tagihannya tidak terduga
5 kartu lagi
Bawa pulang
Agen baca-saja pertamamu
- Alatnya hanya mencari dan membaca
- Ia bekerja di salinan, di tempat tanpa berkas rahasia
- Batas putaran dan anggaran terpasang sejak awal
- Batas keluaran cukup longgar untuk model penalaran
- Bentuk hasil meminta sumber untuk setiap baris
Yang salah di tempat kami
Berkas rencana infrastruktur tidak di-commit
- Konteks
- Saat infrastruktur dikelola sebagai kode, alatnya menulis berkas rencana sebelum perubahan diterapkan. Berkas itu terasa seperti keluaran sementara.
- Yang biasanya salah
- Berkas rencana bisa memuat rahasia yang dimasukkan ke alat, seperti kata sandi dan token, dalam teks biasa. Kalau ikut di-commit, rahasia itu masuk ke riwayat git.
- Akibatnya bila dibiarkan
- Siapa pun yang bisa membaca repositori, sekarang atau nanti, bisa membaca rahasia itu. Menghapus berkasnya di commit berikutnya tidak menghapusnya dari riwayat.
- Akar masalah
- Pola abaikan git dibuat untuk berkas yang sudah dikenal, dan berkas keluaran alat jarang diperiksa isinya.
- Cara kami
- Berkas rencana masuk daftar abaikan git dan tidak pernah di-commit. Bila rahasia pernah masuk riwayat, kami mencabut dan merotasinya saat itu juga, lalu membersihkan riwayatnya.
- Aturan yang kami pegang
- Rahasia tidak pernah ditulis di berkas yang dilacak git, dan daftar abaikan mencakup semua keluaran alat infrastruktur.
PelajarannyaKeluaran alat bisa menyimpan rahasia yang kamu masukkan; periksa sebelum menyimpannya.
Artinya untuk kerjamuBerkas keluaran dan catatan bisa menyimpan kata sandi atau data pribadi yang pernah kamu masukkan. Periksa isinya sebelum menyimpan atau membagikannya.
Sumber
- Agent SDK docs: Python reference (diakses 26 Oktober 2026)
