Episode ini membentuk identitas agent: menulis persona, goals, dan default behavior; menentukan capability seperti browsing, code execution, dan database access; lalu mendefinisikan toolset dan permission limits agar agent powerful tapi tetap terkendali.

Di episode 3 kalian berhasil menyalakan agent pertama dan mengobrol dengannya di terminal. Tapi agent itu masih polos — belum punya kepribadian, belum tahu mau jadi apa, dan belum punya alat untuk bekerja. Episode ini mengubah agent kalian dari objek eksperimen menjadi entitas dengan identitas dan wewenang yang jelas.
Roadmap episode ini: menulis persona, goals, dan default behavior; menentukan capability seperti browsing, code execution, dan database access; lalu mendefinisikan toolset dan permission limits.
Semua identitas agent didefinisikan dalam satu file bernama agent profile. File inilah yang dibaca controller setiap kali sesi dimulai, dan menjadi sumber kebenaran untuk siapa agent itu, apa tujuannya, apa yang boleh ia lakukan, dan bagaimana ia bersikap.
name: support-agent
persona: "Asisten support produk yang teliti dan ramah"
goals:
- "Menjawab pertanyaan user berdasarkan dokumentasi"
- "Mengarahkan tiket yang rumit ke eskalasi"
default_behavior:
language: indonesian
tone: helpful
verbosity: balanced
temperature: 0.4
capabilities:
- tools
- browsing
tools: []Struktur di atas adalah tulang punggung profile. Dua blok pertama, persona dan goals, membentuk kepribadian; dua blok berikutnya, capabilities dan tools, membentuk wewenang. Mari bedah satu per satu.
Persona menentukan cara agent berbicara, bukan apa yang ia tahu. Persona yang baik menyebutkan tiga hal: siapa dirinya, gaya komunikasinya, dan batasannya.
persona: >
Kamu adalah asisten support resmi produk Checkout.
Berbicaralah ramah dan singkat, hindari jargon teknis
untuk user non-teknis. Jangan pernah membuat janji
pengiriman yang tidak bisa kamu verifikasi.
goals:
- "Menyelesaikan masalah user secepat mungkin"
- "Selalu merujuk dokumentasi sebelum menjawab"
- "Eskalasi ke manusia bila data user tidak lengkap"Goals memberi agent arah saat menghadapi situasi ambigu. Kalau user bertanya hal yang tidak ada di dokumentasi, agent tahu harus menjawab apa berdasarkan prioritas goals-nya — misalnya memilih menyampaikan kejelasan ketimbang menebak.
Default behavior melengkapi persona dengan parameter perilaku: bahasa default, tone, verbosity, dan temperature untuk model. Profile yang sama bisa di-clone dengan default behavior berbeda — misalnya versi "singkat" untuk chat dan versi "detail" untuk email — tanpa mengubah persona dan goals-nya.
Info
Persona bukan sekadar teks kosmetik — isi persona ikut masuk ke system prompt di setiap turn dan secara langsung memengaruhi gaya seluruh percakapan.
Capability adalah jenis kemampuan yang boleh dipakai agent, sedangkan tools adalah instansi konkretnya. Hermes mendukung beberapa capability inti: browsing untuk membaca web, code_execution untuk menjalankan kode, database untuk query data, file_system untuk membaca dan menulis file, serta network untuk memanggil API eksternal.
name: research-agent
capabilities:
browsing:
enabled: true
allowDomains:
- "wikipedia.org"
- "*.blog.example.com"
code_execution:
enabled: false
database:
enabled: true
read_only: true
allowTables: ["orders", "customers"]
file_system:
enabled: true
read: ["./kb"]
write: []Perhatikan prinsipnya: tiap capability bisa dipersempit. browsing dibatasi ke daftar domain, database hanya baca dan hanya tabel tertentu, code_execution mati total, file_system hanya bisa membaca satu folder dan tidak bisa menulis apa pun. Kemampuan yang tidak aktif tidak muncul di context model — agent bahkan tidak tahu bahwa ia "bisa" memanggilnya, sehingga tidak akan mencoba.
Code execution dan database access adalah dua capability yang paling sering disalahgunakan. Agent yang bisa menjalankan kode arbitrer bisa mengeksekusi script berbahaya; agent dengan akses tulis database bisa menghapus data. Selalu aktifkan keduanya hanya jika benar-benar dibutuhkan, dan perketat dengan batasan di atas.
Kalau capability menjawab "agent boleh melakukan apa", toolset menjawab "aksi konkret apa yang tersedia". Setiap tool didaftarkan dengan permission level:
tools:
- name: web.search
permission: auto
- name: web.fetch
permission: confirm
- name: db.query
readOnly: true
permission: auto
- name: http.post
permission: denied
- name: fs.write
permission: denied| Permission | Arti |
|---|---|
auto | Controller langsung mengeksekusi tanpa bertanya |
confirm | Agent menunggu persetujuan user dulu |
denied | Tool diblokir total, tidak bisa dipanggil |
web.search dan db.query yang hanya membaca boleh di-auto, tapi web.fetch yang membuka halaman berisi konten tak dikenal sebaiknya di-confirm. Operasi dengan efek samping seperti http.post dan fs.write di-denied kalau memang tidak dibutuhkan — prinsip ini biasa disebut least privilege.
Danger
Tool dengan efek samping permanen — kirim email, transfer uang, hapus data — harus di permission confirm paling tidak, dan idealnya denied sampai ada alasan jelas untuk menyalakannya.
Dengan profile lengkap, jalankan agent dan lihat bagaimana kepribadiannya muncul:
hermes run agents/support.yml --session support-1Berbeda dengan episode 3 yang memakai profile default, sekarang agent memakai persona, goals, capability, dan toolset yang kalian tulis sendiri. Coba minta ia menjelaskan sesuatu, lalu bandingkan gayanya dengan agent bawaan — perbedaan itu datang dari profile. Kalau mau mencoba banyak varian tanpa menulis ulang, gunakan perintah hermes run agents/support.yml sambil berganti file profile untuk tiap percobaan.
Buat beberapa profile sekaligus untuk kasus yang berbeda: support.yml untuk layanan pelanggan, research.yml untuk riset, writing.yml untuk editing artikel. Semuanya bisa hidup berdampingan dan dipanggil per sesi, memakai pola yang sama seperti di episode 6 saat kita mengintegrasikan tool eksternal.
Episode 4 mengubah agent kalian dari cangkang kosong menjadi entitas dengan identitas: persona, goals, dan default behavior menentukan cara ia bersikap; capabilities menentukan jenis kemampuan yang aktif; toolset dan permission limits menentukan aksi konkret yang boleh dijalankan. Semua itu hidup dalam satu file profile yang mudah di-version control dan diganti per use case.
Inti yang harus dibawa pulang:
auto, confirm, dan denied mengontrol kapan setiap tool boleh dieksekusi.Di episode 5 kita menyempurnakan otak agent: Prompt Engineering & System Design — menyusun system prompt dan task instructions, memakai prompt templates dan dynamic prompt generation, serta menangani edge case dan failure mode pada prompt design. Sampai jumpa!