인공지능/Hermes

[인공지능/Hermes] 헤르메스 메모리 시스템 이해하기

초보 & 뉴비 2026. 4. 25. 19:32

헤르메스 에이전트 메모리 시스템 정리

한 줄 요약

Hermes Agent의 메모리는 항상 필요한 핵심 사실은 Markdown 파일에 저장하고, 과거 대화는 SQLite 검색으로 찾고, 더 깊은 장기 기억은 외부 Provider로 확장하며, 반복 작업은 Skill로 절차화하는 다층 메모리 구조라고 보면 된다.

전체 구조

Hermes Agent의 메모리 시스템은 크게 보면 다음 계층으로 나눌 수 있다.

  • 내장 영구 메모리
  • 세션 검색 메모리
  • 외부 메모리 Provider
  • 스킬 기반 절차적 메모리
  • 사용자 모델링 메모리

정리하면 단순히 기억 파일 하나를 두는 구조가 아니라, 짧고 중요한 사실은 항상 프롬프트에 넣고, 과거 대화는 검색으로 가져오고, 더 깊은 장기 기억은 외부 메모리 Provider로 확장하는 방식이라고 보면 된다.


내장 영구 메모리

MEMORY.md

MEMORY.md는 에이전트가 기억해야 하는 개인 노트에 가깝다.

저장 위치는 다음과 같다.

~/.hermes/memories/MEMORY.md

주로 이런 정보를 저장한다.

  • 사용자의 개발 환경
  • 프로젝트 정보
  • 자주 쓰는 명령어
  • 특정 서버나 도구의 특이사항
  • 에이전트가 작업하면서 학습한 사실
  • 나중에도 반복적으로 도움이 될 운영 지식

예를 들면 이런 내용이 들어갈 수 있다.

User runs macOS with zsh and Homebrew. Main editor is VS Code.
Project ~/code/api uses Go 1.22, sqlc, chi router. Run tests with make test.
Staging server requires SSH port 2222 instead of 22.

이 메모리는 에이전트의 개인 작업 노트라고 보면 된다.

USER.md

USER.md는 사용자 프로필에 가깝다.

저장 위치는 다음과 같다.

~/.hermes/memories/USER.md

주로 이런 정보를 저장한다.

  • 사용자의 선호
  • 응답 스타일
  • 커뮤니케이션 방식
  • 장기적인 목표
  • 반복적으로 나타나는 기대사항
  • 사용자가 원하는 작업 방식

예를 들면 이런 내용이 들어갈 수 있다.

User prefers concise technical answers with concrete commands.
User likes explanations structured as problem, cause, fix, and verification.
User works mostly on infrastructure, blockchain, and backend systems.

MEMORY.md가 작업 환경과 지식 중심이라면, USER.md는 사용자 자체에 대한 이해를 저장하는 공간이라고 보면 된다.

프롬프트 주입 방식

MEMORY.mdUSER.md는 세션 시작 시 시스템 프롬프트에 삽입된다.

중요한 특징은 frozen snapshot 방식이라는 점이다.

즉 세션 시작 시점의 메모리 내용이 프롬프트에 들어가고, 세션 중간에 메모리를 수정하더라도 현재 프롬프트에는 바로 반영되지 않는다.

대신 디스크에는 즉시 저장되고, 다음 세션부터 새 메모리 내용이 반영된다.

이렇게 하는 이유는 프롬프트 캐시 효율과 세션 안정성을 유지하기 위해서라고 보면 된다.


세션 검색 메모리

session_search

Hermes Agent는 모든 과거 대화를 무조건 MEMORY.md에 넣지 않는다.

대신 과거 세션 전체를 SQLite에 저장하고, 필요할 때 session_search 도구로 검색한다.

저장 위치는 다음과 같다.

~/.hermes/state.db

검색 방식은 SQLite FTS5 기반이다.

즉 과거 CLI 대화나 메신저 대화가 세션 단위로 저장되고, 나중에 에이전트가 다음과 같은 질문을 받으면 검색해서 찾아올 수 있다.

지난주에 내가 말한 Kubernetes 문제 기억나?
전에 설정했던 서버 IP 뭐였지?
저번에 분석한 설치 스크립트 다시 찾아줘.

Persistent Memory와 Session Search 차이

MEMORY.md / USER.mdsession_search는 목적이 다르다.

구분 Persistent Memory Session Search
저장 대상 핵심 사실 모든 과거 세션
저장 위치 ~/.hermes/memories/ ~/.hermes/state.db
검색 방식 프롬프트에 항상 주입 필요할 때 검색
용량 제한 있음 사실상 세션 누적
속도 즉시 사용 가능 검색과 요약 필요
용도 항상 알아야 하는 정보 과거 대화 회상

쉽게 말하면 다음과 같다.

  • MEMORY.md, USER.md는 항상 기억해야 하는 핵심 메모리다.
  • session_search는 과거 대화 전체를 뒤지는 검색 메모리다.

외부 메모리 Provider

개념

Hermes Agent는 기본 메모리 외에 외부 메모리 Provider를 붙일 수 있다.

외부 Provider는 MEMORY.mdUSER.md를 대체하는 것이 아니라 추가로 붙는 구조다.

즉 기본 메모리는 항상 유지되고, 그 위에 외부 장기 기억 시스템을 하나 더 연결하는 방식이다.

중요한 제약은 한 번에 하나의 외부 Provider만 활성화할 수 있다는 점이다.

설정은 다음처럼 할 수 있다.

hermes memory setup
hermes memory status
hermes memory off

또는 config.yaml에서 직접 지정할 수 있다.

memory:
  provider: honcho

사용 가능한 Provider는 다음 8개다.

  • Honcho
  • OpenViking
  • Mem0
  • Hindsight
  • Holographic
  • RetainDB
  • ByteRover
  • Supermemory

Honcho

특징

Honcho는 사용자 모델링에 강한 메모리 Provider다.

단순히 사용자가 말한 내용을 저장하는 수준이 아니라, 대화를 분석해서 사용자의 성향, 목표, 선호, 커뮤니케이션 패턴을 추론한다.

핵심 기능은 다음과 같다.

  • cross-session user modeling
  • dialectic reasoning
  • session-scoped context injection
  • semantic search
  • persistent conclusions
  • peer 기반 사용자/AI 모델 분리

적합한 경우

Honcho는 이런 경우에 적합하다.

  • 사용자를 장기적으로 이해하는 에이전트를 만들고 싶을 때
  • 여러 프로필 또는 여러 에이전트가 같은 사용자와 상호작용할 때
  • 단순 기억보다 사용자 성향 추론이 중요할 때
  • AI가 사용자의 작업 방식과 목표를 점점 더 잘 파악하게 만들고 싶을 때

OpenViking

특징

OpenViking은 ByteDance 계열 Volcengine의 context database를 기반으로 한 self-hosted 메모리 Provider다.

핵심 특징은 다음과 같다.

  • filesystem-style knowledge hierarchy
  • tiered retrieval
  • automatic memory extraction
  • viking:// URI 기반 지식 탐색
  • self-hosted 구조

OpenViking은 기억을 계층형 지식 저장소처럼 다루는 방식에 가깝다.

적합한 경우

OpenViking은 이런 경우에 적합하다.

  • 클라우드 메모리 서비스 대신 직접 호스팅하고 싶을 때
  • 지식을 폴더나 파일 시스템처럼 계층적으로 탐색하고 싶을 때
  • 프로젝트 지식 베이스를 에이전트와 연결하고 싶을 때

Mem0

특징

Mem0는 서버 측 LLM 기반 fact extraction을 제공하는 메모리 Provider다.

핵심 특징은 다음과 같다.

  • 자동 사실 추출
  • semantic search
  • reranking
  • automatic deduplication
  • cloud 기반 저장

즉 에이전트가 대화를 일일이 정리하지 않아도 Mem0 쪽에서 기억할 만한 사실을 추출하고 관리하는 방식이다.

적합한 경우

Mem0는 이런 경우에 적합하다.

  • 메모리 관리를 최대한 자동화하고 싶을 때
  • cloud 기반 장기 기억을 빠르게 붙이고 싶을 때
  • fact extraction과 deduplication을 직접 구현하고 싶지 않을 때

Hindsight

특징

Hindsight는 knowledge graph 기반 장기 메모리 Provider다.

핵심 특징은 다음과 같다.

  • knowledge graph
  • entity resolution
  • multi-strategy retrieval
  • cross-memory synthesis
  • full conversation turn retention
  • session-level document tracking

단순 검색보다 엔티티 관계와 기억 간 연결을 중시하는 구조라고 보면 된다.

적합한 경우

Hindsight는 이런 경우에 적합하다.

  • 엔티티 관계를 기반으로 기억을 검색하고 싶을 때
  • 여러 기억을 종합해서 결론을 내리는 기능이 필요할 때
  • 프로젝트, 사람, 문서, 사건 사이의 관계가 중요한 경우
  • cloud 또는 local PostgreSQL 기반 메모리를 쓰고 싶을 때

Holographic

특징

Holographic은 로컬 SQLite 기반 fact store다.

핵심 특징은 다음과 같다.

  • local SQLite 저장
  • FTS5 full-text search
  • trust scoring
  • HRR 기반 compositional query
  • conflicting fact detection
  • 외부 서비스 의존성 없음

가장 큰 장점은 로컬에서만 동작할 수 있다는 점이다.

적합한 경우

Holographic은 이런 경우에 적합하다.

  • 외부 클라우드 없이 로컬 메모리만 쓰고 싶을 때
  • SQLite 기반으로 단순하게 관리하고 싶을 때
  • fact 단위 저장, 검색, 신뢰도 점수 관리가 필요할 때
  • conflicting fact를 탐지하고 싶을 때

RetainDB

특징

RetainDB는 cloud memory API 기반 Provider다.

핵심 특징은 다음과 같다.

  • Vector search
  • BM25
  • reranking
  • hybrid search
  • 7 memory types
  • delta compression

검색 품질과 memory type 분류를 중시하는 클라우드 기반 메모리라고 보면 된다.

적합한 경우

RetainDB는 이런 경우에 적합하다.

  • 팀 단위로 RetainDB 인프라를 이미 쓰고 있을 때
  • vector search와 BM25를 함께 쓰는 hybrid search가 필요할 때
  • memory type 기반 정리가 필요한 경우
  • 클라우드 API 기반 메모리를 선호할 때

ByteRover

특징

ByteRover는 brv CLI 기반의 local-first 메모리 Provider다.

핵심 특징은 다음과 같다.

  • hierarchical knowledge tree
  • fuzzy text search
  • LLM-driven search
  • local-first storage
  • optional cloud sync
  • pre-compression extraction

특히 context compression 전에 중요한 내용을 먼저 추출해서 저장하는 기능이 특징이다.

적합한 경우

ByteRover는 이런 경우에 적합하다.

  • 개발자 친화적인 CLI 기반 메모리를 원할 때
  • 로컬 우선 저장 방식을 선호할 때
  • 지식을 knowledge tree 형태로 관리하고 싶을 때
  • 필요하면 cloud sync도 붙이고 싶을 때

Supermemory

특징

Supermemory는 semantic long-term memory Provider다.

핵심 특징은 다음과 같다.

  • semantic recall
  • profile recall
  • semantic search
  • explicit memory tools
  • session-end conversation ingest
  • graph-level knowledge building
  • context fencing
  • multi-container support

context fencing은 회수된 메모리가 다시 저장되어 메모리 오염이 반복되는 문제를 줄이기 위한 장치라고 보면 된다.

적합한 경우

Supermemory는 이런 경우에 적합하다.

  • semantic search 중심의 장기 메모리가 필요할 때
  • 사용자 프로필과 최근 맥락을 함께 쓰고 싶을 때
  • 세션 종료 시 대화 전체를 그래프 형태로 흡수하고 싶을 때
  • 프로젝트별 container를 나눠서 메모리를 관리하고 싶을 때

 

메모리 저장 위치 정리

기본 파일 구조

Hermes Agent의 기본 메모리 관련 파일은 대략 다음 구조로 볼 수 있다.

~/.hermes/
├── memories/
│   ├── MEMORY.md
│   └── USER.md
├── state.db
├── skills/
└── config.yaml

각 파일의 역할은 다음과 같다.

위치 역할
~/.hermes/memories/MEMORY.md 에이전트 개인 노트
~/.hermes/memories/USER.md 사용자 프로필
~/.hermes/state.db 세션 저장 및 검색
~/.hermes/config.yaml 메모리 설정 및 Provider 지정

설정 예시

기본 메모리 설정

~/.hermes/config.yaml에서 기본 메모리 설정은 다음과 같이 구성할 수 있다.

memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200
  user_char_limit: 1375

각 항목의 의미는 다음과 같다.

설정 의미
memory_enabled MEMORY.md 사용 여부
user_profile_enabled USER.md 사용 여부
memory_char_limit 에이전트 메모리 글자 수 제한
user_char_limit 사용자 프로필 글자 수 제한

외부 Provider 설정

외부 Provider를 쓰려면 다음처럼 설정할 수 있다.

memory:
  provider: honcho

다른 Provider를 쓰려면 값만 바꾸면 된다.

memory:
  provider: openviking

사용 가능한 값은 다음과 같다.

honcho
openviking
mem0
hindsight
holographic
retaindb
byterover
supermemory

각 메모리 시스템 비교

비교표

메모리 시스템 저장 방식 주요 용도 특징
MEMORY.md 로컬 Markdown 파일 에이전트 개인 노트 항상 프롬프트에 주입
USER.md 로컬 Markdown 파일 사용자 프로필 선호, 스타일, 기대사항 저장
session_search SQLite + FTS5 과거 대화 검색 필요할 때 검색 후 요약
Honcho Cloud 또는 self-hosted 사용자 모델링 dialectic reasoning
OpenViking self-hosted 계층형 지식 관리 tiered retrieval
Mem0 Cloud 자동 사실 추출 deduplication, reranking
Hindsight Cloud 또는 local 지식 그래프 entity relationship, reflect
Holographic Local SQLite 로컬 fact store trust scoring, conflict detection
RetainDB Cloud hybrid search Vector + BM25 + reranking
ByteRover Local 또는 Cloud knowledge tree CLI 기반 local-first
Supermemory Cloud semantic long-term memory context fencing, graph ingest
Skills Markdown/스킬 파일 절차적 메모리 작업 루틴 재사용

실제 사용 관점 정리

개인 개발자 기준 추천

개인 개발자가 로컬에서 Hermes Agent를 써보는 정도라면 처음에는 기본 메모리만으로도 충분하다.

우선 다음 조합이면 된다.

MEMORY.md
USER.md
session_search
skills

이 조합만으로도 다음이 가능하다.

  • 내 개발 환경 기억
  • 프로젝트별 규칙 기억
  • 내 답변 스타일 기억
  • 과거 대화 검색
  • 반복 작업 스킬화

로컬 우선 메모리가 필요할 때

외부 클라우드 없이 로컬에서만 쓰고 싶으면 다음 Provider가 적합하다.

Holographic
ByteRover
OpenViking

각각의 느낌은 다음과 같다.

Provider 추천 상황
Holographic SQLite 기반 로컬 fact store가 필요할 때
ByteRover CLI 기반 knowledge tree를 원할 때
OpenViking self-hosted 지식 계층과 tiered retrieval이 필요할 때

사용자 모델링이 중요할 때

사용자 성향과 장기적 선호를 깊게 모델링하고 싶으면 Honcho가 가장 특화되어 있다.

Honcho

Honcho는 단순 기억보다 사용자를 이해하는 모델에 가깝다.

검색 품질이 중요할 때

검색 품질이나 semantic search가 중요하면 다음 Provider를 고려할 수 있다.

Mem0
RetainDB
Supermemory
Hindsight

각각의 방향은 조금 다르다.

Provider 강점
Mem0 자동 fact extraction
RetainDB hybrid search
Supermemory semantic recall + graph ingest
Hindsight knowledge graph + synthesis

결론

핵심 요약

Hermes Agent의 메모리 시스템은 다음처럼 정리할 수 있다.

  1. MEMORY.md는 에이전트가 기억해야 할 작업 지식이다.
  2. USER.md는 사용자 선호와 프로필을 저장하는 공간이다.
  3. session_search는 과거 대화 전체를 SQLite FTS5로 검색하는 기능이다.
  4. 외부 Provider는 기본 메모리를 대체하지 않고 확장한다.
  5. 외부 Provider는 한 번에 하나만 활성화할 수 있다.
  6. 사용 가능한 외부 Provider는 Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, Supermemory다.
  7. Skills System은 작업 절차를 저장하고 재사용하는 절차적 메모리로 볼 수 있다.