Memory & AGENTS.md
Memory itu yang bikin dia inget lo antar sesi. Tapi memory di Hermes sengaja dibatesin: kecil, dikurasi, dan bisa lo gate.
Dua file, dua tujuan
| File | Isi | Limit |
|---|---|---|
memories/MEMORY.md | Catatan agent: fakta environment, konvensi project, quirk tool, pelajaran | 2.200 karakter (~800 token), kira-kira 8-15 entri |
memories/USER.md | Profil lo: nama, role, preferensi, gaya komunikasi | 1.375 karakter (~500 token), kira-kira 5-10 entri |
Dua-duanya ditulis si agent lewat tool memory (aksi: add, replace, remove). Lo gak perlu nulis manual. Mau dia inget sesuatu? Bilang aja:
> inget ya, gw lebih suka jawaban pendek dan gw di zona WIB # agent manggil memory(add, target=user, ...) → kesimpen ke USER.md
Memory cuma kesimpen kalau model beneran manggil tool memory. Kalimat "oke udah gw inget" doang itu cuma teks. Cek dengan cat ~/.hermes/memories/MEMORY.md atau hermes journey list.
"Kok dia lupa yang barusan gw bilang?"
Memory di-inject ke system prompt sebagai snapshot beku pas sesi mulai. Kalau agent nyimpen sesuatu di tengah sesi, ke disk-nya langsung, tapi di system prompt baru muncul di sesi berikutnya. Sengaja, biar prefix cache LLM gak rusak. Jadi: /new kalau mau "refresh".
Konsekuensinya buat bot Telegram yang sesinya nyambung terus: loop belajarnya gak jalan sampai sesi direset. Set reset sesi berkala (ada di config gateway) kalau mau memory-nya kepake.
Gating: lo approve dulu sebelum dia nulis memory
Ini boundary penting. Default-nya agent boleh nulis memory bebas. Buat agent yang jalan unattended (Telegram, cron), nyalain approval:
memory: memory_enabled: true user_profile_enabled: true memory_char_limit: 2200 user_char_limit: 1375 write_approval: true # tulisan di-stage, lo review dulu
> /memory pending # liat antrian > /memory approve <id> > /memory reject <id> > /memory approval on|off # toggle runtime $ hermes journey list # timeline semua yang dia pelajarin (memory + skill) $ hermes journey edit $ hermes journey delete
Matiin memory total
Buat agent sekali pakai atau demo, set dua-duanya false: tool memory ilang dari schema dan guidance-nya ilang dari prompt. Kalau pake provider eksternal (Hindsight, Mem0, Honcho) itu gak kena; buat matiin semuanya sekalian, taruh memory di agent.disabled_toolsets.
Yang BUKAN memory
- Variabel di
.env: itu credential, bukan memory. Lebih lengkap di halaman Rahasia & credential. - Fakta yang lo sebut sambil lalu tanpa minta disimpen.
- Prosedur panjang: itu skill.
Memory juga di-scan buat pola injection/exfiltration dan Unicode tak terlihat sebelum diterima. Duplikat otomatis ditolak. Kalau penuh, tool balikin error (gak diem-diem buang entri lama): agent harus remove/replace yang basi dulu.
AGENTS.md: aturan per-project
Kalau SOUL.md global, AGENTS.md itu lokal di folder project. Di-load pas startup dari working directory, dan nested AGENTS.md di subfolder ketemu progresif pas agent masuk ke sana.
# Project: landing-page-kopi
- Framework: Astro. Jangan tambah React.
- Jalanin dev: `npm run dev` (port 4321)
- Test: `npm test` sebelum commit, selalu.
- Jangan edit `src/content/legal/*` tanpa konfirmasi.
- Commit message pake bahasa Inggris, imperative.
- Deploy cuma lewat `npm run deploy`, jangan push langsung ke main.Prioritas context file (cuma satu tipe yang di-load per sesi, first match menang): .hermes.md → AGENTS.md → CLAUDE.md → .cursorrules. Discovery jalan naik sampai git root. SOUL.md selalu di-load terpisah, gak ikut rantai ini.
AGENTS.md dari repo orang lain = teks asing masuk prompt. Hermes nge-scan dan nge-block file project yang ketrigger pola injection (beda sama SOUL.md yang cuma warning). Tetep: baca dulu AGENTS.md sebelum nge-clone repo random terus nyuruh agent kerja di situ.
Background review (belajar otomatis)
Abis sebuah turn, Hermes bisa jalanin review di background buat ngusulin memory/skill baru. Bisa dirutein ke model lebih murah, ditunda, atau dimatiin. Digabung sama write_approval, lo dapet loop belajar yang tetep lo kontrol.