Agen Bisa Jalan, Tapi Apakah Anda Tahu Apa yang Dilakukannya?
Agen AI di production jarang gagal dengan cara yang dramatis. Yang lebih sering terjadi: agen memanggil tool yang sama dua puluh kali, menghabiskan anggaran token satu hari dalam satu sesi, atau menyelesaikan tugas dengan hasil yang tampak benar padahal salah. Tanpa observability, tiga pertanyaan dasar — apa yang dilakukan agen, kenapa gagal, dan berapa biayanya — baru bisa dijawab setelah menjadi insiden.
Glosarium agen dari Hugging Face mendefinisikan harness sebagai "lapisan eksekusi di dalam agen: ia memanggil model, menangani tool call, dan memutuskan kapan berhenti". Karena semua langkah agen melewati harness, di situlah tempat paling alami untuk memasang instrumentasi. Artikel ini membahas apa yang perlu dicatat, kenapa harus sejak hari pertama, cara memverifikasi hasil, cara mengatribusikan biaya, dan pola pemulihan saat agen gagal.
Apa yang Harus Di-trace
Hugging Face menyebut satu putaran lengkap agen dari awal sampai akhir sebagai rollout, yang juga dikenal sebagai trajectory atau trace: apa yang dilihat agen, apa yang dilakukannya, dan hasilnya di setiap langkah. Trace yang berguna di production minimal berisi:
| Data | Kenapa penting |
|---|---|
| Prompt per langkah | Memastikan model benar-benar menerima konteks yang Anda kira |
| System prompt yang sebenarnya dikirim | Template sering dirakit dinamis; yang tertulis di repo belum tentu yang terkirim |
| Tool call (nama + argumen) | Menunjukkan keputusan model, bukan hanya hasil akhirnya |
| Tool result | Banyak kegagalan berasal dari output tool yang kosong, terpotong, atau error |
| Token input/output | Dasar perhitungan biaya dan deteksi konteks yang membengkak |
| Latensi per langkah | Membedakan model yang lambat dari tool yang lambat |
Poin system prompt sering diremehkan. Scaffolding — menurut definisi Hugging Face — mencakup system prompt, deskripsi tool, cara respons model di-parse, dan apa yang diingat antar langkah. Jika salah satu bagian itu dirakit dari variabel, simpan versi final yang benar-benar dikirim ke API, bukan template-nya.
Observability Masuk ke Harness Sejak Hari Pertama
Panduan harness engineering dari DataNorth merumuskannya dengan singkat: model menyediakan penalaran, sedangkan harness menentukan apa yang dilihat model, apa yang boleh dilakukannya, apa yang diingatnya, dan di mana ia berjalan. Framework besar sudah menganggap tracing sebagai komponen inti — OpenAI Agents SDK, misalnya, menyediakan Tracing sebagai primitif sejajar dengan Agents, Handoffs, Guardrails, Sessions, dan State.
Alasannya sederhana: kesalahan agen menumpuk. DataNorth mengutip riset bahwa akurasi per langkah menurun seiring bertambahnya jumlah langkah, dan data METR yang dikutipnya menunjukkan Claude Opus 4.6 mampu menangani tugas sepanjang 718,8 menit pada tingkat keberhasilan 50%, tetapi hanya 69,9 menit pada 80%. Semakin panjang tugas, semakin besar kemungkinan ada langkah yang salah — dan tanpa trace, Anda tidak akan tahu langkah yang mana. Menambahkan logging setelah outage pertama berarti insiden pertama itu tidak bisa didiagnosis.
Pemeriksaan Komputasional vs Inferensial
DataNorth membedakan dua mekanisme umpan balik: guide yang mengarahkan agen sebelum bertindak, dan sensor yang mengamati setelah bertindak agar agen bisa mengoreksi diri. "Tes, linter, type check, dan hook semuanya termasuk," tulisnya. Di dalam kategori sensor, ada baiknya membedakan dua jenis pemeriksaan:
- Komputasional — deterministik, murah, dan bisa diulang: unit test, linter, type checker, validasi skema JSON. Firecrawl mencontohkan harness agen coding yang menjalankan test suite setelah setiap fitur dan baru menandainya selesai jika tes lulus.
- Inferensial — menggunakan model lain sebagai penilai (LLM-as-judge) untuk hal yang tidak bisa diukur dengan aturan, seperti relevansi jawaban atau nada bahasa. Lebih fleksibel, tetapi lebih mahal dan tidak sepenuhnya deterministik.
Jalankan pemeriksaan komputasional lebih dulu karena paling murah, lalu gunakan LLM-as-judge hanya untuk sisa yang memang butuh penilaian. Catat keduanya di trace. Satu trik dari Firecrawl patut ditiru: OpenAI menulis pesan error linter yang secara khusus mengajarkan cara memperbaikinya, sehingga setiap kegagalan menjadi konteks bagi percobaan berikutnya.
Atribusi Biaya: Per Run, Per Tool, Per User
Budget cap hanya berarti jika Anda tahu ke mana token pergi. Tandai setiap pemanggilan model dengan run_id, nama tool yang memicu langkah tersebut, dan user_id atau tenant. Dari situ Anda bisa menjawab pertanyaan seperti: tool mana yang paling boros, user mana yang memicu run paling mahal, dan apakah biaya per run naik setelah perubahan prompt.
Data ini juga menunjukkan di mana optimasi paling berdampak. DataNorth mencatat Vercel memangkas penggunaan token dari sekitar 102.000 menjadi 61.000, dan waktu eksekusi dari 274,8 detik menjadi 77,4 detik, dengan mengganti 15 tool khusus menjadi bash. Anthropic disebut memangkas satu workflow dari 150.000 token menjadi 2.000 dengan menyajikan tool sebagai modul kode, dan sebuah hook PreToolUse menyaring output tes dari puluhan ribu token menjadi ratusan. Penghematan seperti itu hanya terlihat jika biaya per tool tercatat.
Pola Pemulihan Kegagalan
Retry yang terukur. Ulangi kegagalan sementara (timeout, rate limit) dengan backoff dan batas jumlah percobaan. Jangan me-retry kegagalan logika dengan prompt yang sama — sertakan pesan error-nya sebagai konteks, seperti pola linter di atas.
Checkpoint. Simpan state setelah langkah penting agar run yang gagal bisa dilanjutkan, bukan diulang dari nol. DataNorth menyebut LangGraph menyediakan memori jangka pendek lewat checkpointer, dan fungsi interrupt yang menyimpan state lalu menunggu manusia saat sebuah langkah butuh pertimbangan. Firecrawl menambahkan bahwa file pelacakan berformat JSON lebih awet daripada Markdown karena model lebih jarang merusaknya.
Menghentikan agen yang berputar-putar. Harness adalah bagian yang "memutuskan kapan berhenti", jadi pasang batas keras: jumlah langkah maksimum, anggaran token per run, dan deteksi tool call berulang dengan argumen identik. Saat batas tercapai, simpan checkpoint, tandai run sebagai gagal, dan kirim notifikasi — jangan biarkan agen terus membakar token.
Human-in-the-loop. Untuk aksi sensitif, Firecrawl menyarankan interupsi yang menjeda agen sampai manusia menyetujui.
Penutup
Observability untuk agen AI bukan fitur tambahan, melainkan bagian dari harness itu sendiri. Catat prompt, system prompt yang sebenarnya, tool call, hasil tool, token, dan latensi di setiap langkah; gabungkan pemeriksaan komputasional dengan LLM-as-judge; atribusikan biaya per run, tool, dan user; lalu siapkan retry, checkpoint, dan batas henti. Dengan begitu, ketika agen bertingkah aneh di production, jawabannya sudah ada di trace — bukan di tebakan.