헤르메스 에이전트 메모리 시스템 정리
한 줄 요약
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.md와 USER.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.md와 session_search는 목적이 다르다.
| 구분 | Persistent Memory | Session Search |
|---|---|---|
| 저장 대상 | 핵심 사실 | 모든 과거 세션 |
| 저장 위치 | ~/.hermes/memories/ |
~/.hermes/state.db |
| 검색 방식 | 프롬프트에 항상 주입 | 필요할 때 검색 |
| 용량 | 제한 있음 | 사실상 세션 누적 |
| 속도 | 즉시 사용 가능 | 검색과 요약 필요 |
| 용도 | 항상 알아야 하는 정보 | 과거 대화 회상 |
쉽게 말하면 다음과 같다.
MEMORY.md,USER.md는 항상 기억해야 하는 핵심 메모리다.session_search는 과거 대화 전체를 뒤지는 검색 메모리다.
외부 메모리 Provider
개념
Hermes Agent는 기본 메모리 외에 외부 메모리 Provider를 붙일 수 있다.
외부 Provider는 MEMORY.md와 USER.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의 메모리 시스템은 다음처럼 정리할 수 있다.
MEMORY.md는 에이전트가 기억해야 할 작업 지식이다.USER.md는 사용자 선호와 프로필을 저장하는 공간이다.session_search는 과거 대화 전체를 SQLite FTS5로 검색하는 기능이다.- 외부 Provider는 기본 메모리를 대체하지 않고 확장한다.
- 외부 Provider는 한 번에 하나만 활성화할 수 있다.
- 사용 가능한 외부 Provider는 Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, Supermemory다.
- Skills System은 작업 절차를 저장하고 재사용하는 절차적 메모리로 볼 수 있다.
'인공지능 > Hermes' 카테고리의 다른 글
| [인공지능/Hermes] 헤르메스 메시징 게이트웨이 이해하기 (0) | 2026.04.25 |
|---|---|
| [인공지능/Hermes] 헤르메스 리눅스에 설치하기 (0) | 2026.04.25 |
| [인공지능/Hermes] 헤르메스란 ( feat. 오픈클로와의 차이 ) (0) | 2026.04.15 |