Pernah kepikiran, "Sebenarnya AI agent saya inget apa aja sih soal saya?" Kalau iya, tulisan ini buat kamu.
Masalahnya: Memori AI Itu Kotak Hitam
Kalau kamu pakai AI agent yang punya memori jangka panjang (persistent memory), kamu mungkin pernah ngerasa gak nyaman karena beberapa hal ini:
- Gak tahu persis apa yang diingat AI tentang kamu
- Gak tahu file-nya disimpan di mana
- Gak bisa edit memori itu tanpa ngetik perintah lewat chat
- Takut kalau file memorinya rusak, semua informasi hilang begitu saja
Studi kasus di tulisan ini pakai Hermes Agent, agent open-source besutan Nous Research. Sebagai konteks buat yang belum familiar: Hermes Agent adalah agent AI open-source yang berjalan sebagai proses (daemon) mandiri di server milikmu sendiri, mengumpulkan memori lintas sesi, menjalankan tugas terjadwal, terhubung ke belasan platform pesan, dan menulis skill-nya sendiri dari pengalaman. Framework berlisensi MIT ini dirilis Februari 2026 dan dengan cepat menarik perhatian komunitas open-source AI.
Hermes menyimpan memorinya di dua file utama: USER.md (profil tentang kamu) dan MEMORY.md (catatan agent soal lingkungan kerja, kebiasaan, dan pelajaran yang dipetik), plus satu file lagi SOUL.md untuk "kepribadian" si agent. Semuanya disimpan dalam format teks polos yang dipisah pakai karakter §, seperti ini:
Preferensimu: komunikasi singkat dan langsung
§
Namamu Budi, awal 30-an, tinggal di Surabaya
§
Penggemar PKM / Building a Second Brain
Format ini fungsional, tapi ada beberapa kekurangan:
- Susah diedit langsung karena bukan format yang ramah manusia
- Gak ada riwayat versi — sekali salah edit, informasi bisa hilang selamanya
- Gak ada tampilan visual — susah lihat semua catatan sekaligus
- Gak ada antarmuka grafis — harus lewat chat agent atau edit file mentah
Solusinya: pindahkan memori itu ke Obsidian, aplikasi catatan berbasis markdown yang mendukung riwayat versi lewat git dan bisa diedit bebas.
Arsitektur Sistemnya
Sistem sinkronisasi ini punya empat lapisan:
┌──────────────────┐
│ Memori Hermes │ ~/.hermes/memories/{USER,MEMORY}.md (format §)
│ ditulis agent │ ~/.hermes/SOUL.md (teks polos)
└────────┬─────────┘
│ export / import
▼
┌──────────────────┐
│ Mesin sinkron │ ~/.hermes/scripts/hermes-memory-sync.py
│ (Python) │ (tanpa dependensi eksternal, cuma stdlib)
└────────┬─────────┘
│ tulis / baca
▼
┌──────────────────┐
│ Vault Obsidian │ _hermes/{USER,MEMORY,SOUL}.md (markdown rapi)
│ (bisa diedit) │ _hermes/skills-index.md (daftar skill)
│ │ _hermes/skills/*.md (skill custom)
└────────┬─────────┘
│ git commit tiap 6 jam
▼
┌──────────────────┐
│ Riwayat Git │ Jejak lengkap tiap perubahan
└──────────────────┘
Poin kuncinya: pakai Python, bukan bash. Karakter § itu multi-byte di UTF-8, dan bash gampang salah potong kalau dipakai sebagai pemisah (delimiter). Python (re.split()) menangani ini dengan benar, jadi seluruh mesin sinkronisasi ditulis sebagai satu file Python (sekitar 400 baris) yang cuma pakai library bawaan Python — tidak perlu install apa-apa lagi.
Cara Kerjanya
Export: dari Hermes ke Obsidian
Script membaca file memori Hermes yang dipisah §, memecahnya jadi entri-entri terpisah, lalu menulis tiap entri sebagai heading ## Entry N di bawah metadata (YAML frontmatter):
---
source: hermes-agent
type: user
last_synced: 2026-06-28T17:53:29+07:00
entries: 12
---
## Entry 1
Preferensimu: komunikasi singkat dan langsung
---
## Entry 2
Namamu Budi, awal 30-an, tinggal di Surabaya
Hasilnya bisa langsung diedit di Obsidian. Vault juga otomatis mendapat:
-
SOUL.md— identitas/karakter agent, tanpa batas karakter -
skills-index.md— tabel semua skill yang terpasang, skill custom ditandai bintang -
skills/*.md— file lengkap skill yang dibuat sendiri oleh agent
Import: dari Obsidian kembali ke Hermes
Arahnya bisa dibalik: script membaca heading ## Entry N, buang metadata, gabungkan lagi entri-entri itu pakai pemisah §, lalu timpa file memori Hermes. Sebelum ditimpa, file lama otomatis disalin dulu sebagai cadangan (.bak.<timestamp>), jadi tidak ada data yang benar-benar hilang.
Satu hal penting: Hermes punya batas karakter (1.375 karakter untuk USER, 2.200 untuk MEMORY) supaya jendela konteksnya tetap efisien. Saat proses import, script akan memangkas entri yang kelebihan — tapi salinan lengkapnya tetap disimpan di vault Obsidian.
Riwayat Versi Lewat Git
Ada tugas terjadwal (cron) di Hermes yang jalan tiap 6 jam:
hermes cron create name=memories-to-obsidian \
schedule='0 */6 * * *' \
prompt='Run ~/.hermes/scripts/hermes-memory-sync.sh sync'
Tiap kali jalan, urutannya: export → git add -A → git commit. Hasilnya, kamu punya git log lengkap dari setiap perubahan memori. Kalau perlu balikin ke versi lama, tinggal:
git log --oneline _hermes/USER.md # cari versi yang mau dipulihkan
git show <hash>:_hermes/USER.md > /tmp/restored.md
cp /tmp/restored.md _hermes/USER.md
hermes-memory-sync.sh import
Panduan Setup (Sekitar 10 Menit)
1. Buat folder vault
mkdir -p ~/Documents/Obsidian\ Vault/_hermes
cd ~/Documents/Obsidian\ Vault
git init
git config user.email "kamu@email.com"
git config user.name "Nama Kamu"
echo '_hermes/*.bak' >> .gitignore
git add -A && git commit -m "Initial vault"
2. Atur lokasi vault
echo 'OBSIDIAN_VAULT_PATH=$HOME/Documents/Obsidian Vault' >> ~/.hermes/.env
Baris ini memberi tahu script sinkronisasi ke mana file markdown harus ditulis.
3. Siapkan script sinkronisasi
Source code memory sync: hermes-memory-sync.py
Mesin utamanya ada di ~/.hermes/scripts/hermes-memory-sync.py (Python). Ada juga wrapper shell hermes-memory-sync.sh yang cuma menyiapkan environment lalu memanggil script Python itu:
#!/usr/bin/env bash
DIR="$(cd "$(dirname "$0")" && pwd)"
exec python3 "$DIR/hermes-memory-sync.py" "$@"
Jangan lupa buat executable:
chmod +x ~/.hermes/scripts/hermes-memory-sync.sh
Catatan: isi lengkap script Python-nya (~400 baris) biasanya tersedia sebagai referensi skill kalau kamu memang menjalankan Hermes Agent.
4. Export pertama kali
bash ~/.hermes/scripts/hermes-memory-sync.sh sync
Ini akan mengekspor semua memori yang ada sekarang ke vault, sekaligus bikin commit git pertama.
5. Pasang cron untuk backup otomatis
hermes cron create name=memories-to-obsidian \
schedule='0 */6 * * *' \
prompt='Run ~/.hermes/scripts/hermes-memory-sync.sh sync'
6. Cek hasilnya
hermes-memory-sync.sh status
Kamu akan lihat jumlah entri, pemakaian karakter, dan log git terbaru.
Apa Saja yang Bisa Kamu Lakukan?
| Mau ngapain | Caranya |
|---|---|
| Lihat semua yang diingat AI | Buka _hermes/USER.md dan _hermes/MEMORY.md di Obsidian |
| Tambah memori manual | Tulis blok ## Entry N baru, lalu jalankan hermes-memory-sync.sh import
|
| Hapus memori | Hapus blok ## Entry-nya, lalu import |
| Pulihkan memori yang terhapus |
git log → git show <hash>:_hermes/USER.md → pulihkan lalu import |
| Lihat apa yang berubah | git diff HEAD~1..HEAD _hermes/USER.md |
| Backup ke GitHub | git remote add origin <url> && git push |
| Sinkron ke beberapa vault | Buat wrapper script dengan OBSIDIAN_VAULT_PATH berbeda-beda |
Level Lanjutan: Multi-Vault dan Arsip Memori
Dua Vault Sekaligus
Kamu bisa jalankan sinkronisasi ini ke lebih dari satu vault — misalnya satu vault utama dan satu vault "Second Brain" terpisah dengan metode PARA. Masing-masing punya wrapper script dan cron sendiri:
# ~/.hermes/scripts/hermes-memory-sync-second-brain.sh
#!/usr/bin/env bash
export OBSIDIAN_VAULT_PATH="$HOME/Documents/Second Brain"
exec python3 ~/.hermes/scripts/hermes-memory-sync.py "$@"
Cron-nya bisa dijalankan dalam mode "no-agent" supaya tidak makan token sama sekali:
hermes cron create name=second-brain-sync \
schedule='0 */6 * * *' \
no_agent=true \
script=hermes-memory-sync-second-brain-cron.sh
Arsip Memori (Cold Storage)
Kalau memori sudah penuh, ada script pendamping yang bisa memindahkan entri yang jarang dipakai ke vault sebagai arsip:
hermes-memory-archive.py archive USER "detail proyek lama"
hermes-memory-archive.py search USER "proyek"
hermes-memory-archive.py promote USER entry-id
Entri yang diarsipkan disimpan sebagai file markdown bertimestamp di _hermes/archive/ — bisa dibaca manusia, dicari, dan dipulihkan kapan saja.
Pelajaran yang Bisa Diambil
Bash gak cocok buat karakter
§. Karakter ini multi-byte di UTF-8 (byteC2 A7), sementaraIFSdi bash motong berdasarkan byte, jadi hasilnya bisa salah kalau file punya banyak entri. Python (re.split()) menangani ini dengan benar.Ada mekanisme deteksi "drift". Tool memori Hermes mengecek apakah file bisa dipecah-gabung ulang secara konsisten lewat pemisah
§. Kalau kamu nulis markdown mentah langsung ke file memori Hermes, tool-nya akan menolak menyimpan perubahan berikutnya dan otomatis bikin snapshot cadangan. Script sinkronisasi ini menghindari masalah itu dengan mengganti nama file asli jadi.baksebelum menimpanya.Wajib mulai sesi baru (
/new) setelah import. File memori itu cuma "snapshot" yang dimuat sekali di awal sesi. Kalau kamu baru saja import perubahan, sesi yang sedang berjalan masih pakai snapshot lama — harus mulai sesi baru dulu.Batas karakter itu ketat, tapi ada gunanya. Batas 1.375 karakter (USER) dan 2.200 karakter (MEMORY) menjaga jendela konteks agent tetap efisien. Salinan di vault tidak punya batas itu, jadi kamu bisa simpan versi lengkap di sana sementara Hermes cuma pegang versi ringkasnya.
Rekomendasi Keamanan Sebelum Kamu Pakai Ini
Sebelum kamu terapkan setup ini, ada beberapa risiko keamanan yang layak dipikirkan dulu — apalagi karena file yang disinkronkan berisi data pribadi (nama, lokasi, kebiasaan, detail proyek) dalam bentuk teks polos tanpa enkripsi.
Jangan push vault ke repo GitHub publik. File
_hermes/USER.mddan_hermes/MEMORY.mdisinya profil pribadi kamu apa adanya. Kalau repo-nya publik, siapa pun bisa baca riwayat git-nya — termasuk versi lama yang sudah "dihapus", karena git tetap menyimpan histori commit-nya. Kalau memang mau backup ke GitHub, pakai repo privat, dan idealnya repo terpisah dari vault catatan lain yang kamu share ke publik.Pertimbangkan enkripsi at-rest untuk folder
_hermes/. Karena isinya data pribadi, folder ini adalah kandidat bagus untuk dienkripsi terpisah — misalnya pakaigit-cryptatauageuntuk enkripsi transparan di git, atau simpan di partisi terenkripsi kalau laptop/servernya dipakai bersama orang lain.Batasi permission file di level OS. File memori Hermes dan folder
_hermes/sebaiknya diberi permission600/700(chmod 600 ~/.hermes/memories/*.md) supaya user lain di mesin yang sama tidak bisa baca isinya.Waspada terhadap prompt injection lewat memori. Karena file memori ini dibaca ulang oleh agent tiap sesi, isi yang "diedit" lewat Obsidian pada dasarnya jadi instruksi baru buat agent. Kalau vault-nya bisa diakses proses lain, plugin, atau kolaborator yang tidak sepenuhnya kamu percaya, seseorang bisa menyisipkan teks di
## Entry Nyang berfungsi sebagai injeksi prompt — misalnya instruksi tersembunyi yang membuat agent melakukan sesuatu di luar niat kamu saat sesi berikutnya dimulai. Perlakukan folder_hermes/seperti kamu memperlakukan kredensial: jangan sembarangan buka aksesnya ke sync plugin pihak ketiga atau vault yang di-share.Cek juga plugin Obsidian yang kamu pasang di vault yang sama. Plugin komunitas Obsidian punya akses baca-tulis penuh ke seluruh vault, termasuk folder
_hermes/. Kalau salah satu plugin itu punya bug atau memang berniat jahat, ia bisa membaca atau memodifikasi memori AI kamu tanpa kamu sadari. Pertimbangkan vault terpisah khusus untuk_hermes/kalau kamu banyak coba-coba plugin baru.Backup cron itu juga berarti "titik kegagalan" baru. Job cron yang jalan tiap 6 jam berarti ada proses otomatis dengan akses baca-tulis ke memori kamu. Pastikan script
hermes-memory-sync.shdanhermes-memory-sync.pyhanya bisa ditulis oleh user kamu sendiri (bukanworld-writable), supaya proses lain di mesin yang sama tidak bisa menyisipkan kode ke script yang dieksekusi otomatis itu.
Poin-poin di atas bukan berarti setup ini berbahaya untuk dipakai — tapi karena kamu memindahkan data yang tadinya "terkunci" di dalam sistem agent ke lapisan filesystem dan git biasa, tanggung jawab menjaga keamanannya juga ikut berpindah ke tanganmu.
Worth It, Gak?
Kalau kamu sudah pakai AI agent dengan memori jangka panjang dan sudah hidup di Obsidian sehari-hari — jawabannya: iya, layak dicoba. Pergeserannya sederhana:
- Dari yang tadinya memberi tahu AI apa yang harus diingat lewat perintah chat
- Jadi kamu mengedit langsung apa yang diingatnya, lewat catatan markdown biasa
- Dan AI-nya mencerminkan kembali editan itu lewat sistem memorinya
Rasanya memori AI jadi terasa seperti basis pengetahuan milikmu sendiri, bukan kotak hitam yang tersembunyi di file konfigurasi.
Top comments (0)