Hermes Agent는 Mem0 없이도 기억할까? 세션·기본 메모리·Mem0 차이
Hermes Agent는 Mem0가 없어도 이전 내용을 기억한다. 같은 세션의 대화는 컨텍스트로 유지하고, 중요한 사용자 선호와 환경 정보는 기본 영구 메모리에 저장한다. 과거 세션도 로컬 DB에 남아 있어 필요할 때 다시 검색할 수 있다.
Mem0의 역할은 이 기능을 대체하는 것이 아니다. 여러 세션에 흩어진 세부 정보를 의미 기반으로 자동 검색해 현재 대화에 붙이는 추가 계층이다. 이 차이를 모르면 Mem0를 껐을 때 모든 기억이 사라진다고 오해하거나, 반대로 과거 대화가 저장돼 있다는 이유만으로 새 세션에서도 모든 내용을 자동으로 안다고 기대하게 된다.
먼저 구분할 것: 저장과 현재 컨텍스트는 다르다
AI 에이전트가 어떤 내용을 디스크에 저장했다고 해서 모델이 매번 그 내용을 읽는 것은 아니다. 모델이 답변에 활용하려면 해당 정보가 현재 프롬프트에 포함되거나, 검색 도구를 통해 다시 불러와야 한다.
Hermes Agent의 기억은 크게 네 층으로 나눌 수 있다.
- 현재 세션의 대화 컨텍스트
- 기본 영구 메모리인
MEMORY.md와USER.md - 과거 세션 DB와
session_search - Mem0 같은 외부 메모리 provider
각 계층은 보관하는 정보와 불러오는 방식이 다르다.
같은 스레드에서는 세션 컨텍스트가 기억을 담당한다
Discord 스레드나 CLI 세션에서 대화를 이어가면 Hermes는 앞서 주고받은 메시지를 현재 컨텍스트로 사용한다.
예를 들어 사용자가 먼저 이렇게 말한다.
앞으로 이 iOS 프로젝트는 Tuist로 관리해.
몇 메시지 뒤에 다음과 같이 요청해도 같은 세션이라면 대상을 이해할 수 있다.
그 프로젝트 다시 빌드해줘.
Hermes는 앞선 대화를 보고 Tuist 프로젝트라는 사실을 연결한다. 이 과정에 Mem0는 필요하지 않다.
문제는 대화가 길어질 때다. 모델의 컨텍스트에는 한계가 있으므로 Hermes는 오래된 대화를 압축한다. 최근 메시지와 중요한 시작 맥락은 보호하지만, 과거 원문 전체를 무한히 그대로 들고 있지는 않는다. /reset으로 새 세션을 만들면 활성 대화 컨텍스트도 새로 시작한다.
새 세션에도 항상 들어가는 기본 메모리
Hermes Agent에는 외부 provider와 무관한 기본 영구 메모리가 있다.
MEMORY.md: 환경 정보, 프로젝트 관례, 에이전트가 배운 운영 규칙USER.md: 사용자 선호, 소통 방식, 역할과 기대사항
공식 문서 기준 기본 한도는 MEMORY.md 2,200자, USER.md 1,375자다. 두 파일은 ~/.hermes/memories/에 저장되며 새 세션을 시작할 때 시스템 프롬프트에 고정 스냅샷으로 포함된다.
기본 메모리에 적합한 내용은 짧고 자주 쓰이며 쉽게 바뀌지 않는 사실이다.
- 답변은 간결한 한국어로 작성한다.
- 개발 작업은 프로젝트별 tmux 세션에서 진행한다.
- 특정 환경에서는 Docker 안에서 다시 Docker backend를 사용하지 않는다.
- 배포 결과는 localhost보다 외부에서 접근 가능한 URL을 우선 공유한다.
반대로 빌드 ID, 오늘 발생한 오류, 방금 만든 PR 번호처럼 금방 낡는 정보는 여기에 넣지 않는 편이 낫다. 기본 메모리의 용량이 작기 때문에 모든 것을 저장하면 정작 중요한 규칙이 밀려난다.
과거 대화는 세션 DB에 남지만 자동으로 전부 읽지는 않는다
Hermes는 과거 세션과 메시지를 로컬 DB에 저장한다. 사용자는 이전 세션을 다시 열 수 있고, 에이전트는 session_search로 관련 대화를 찾을 수 있다.
예를 들어 몇 주 전에 해결한 장애를 다시 확인하려면 다음과 같은 검색이 가능하다.
Pievery Hermes에서 terminal backend 문제를 어떻게 해결했지?
검색 결과에는 당시 사용자가 한 말, 실행한 명령, 오류 메시지와 최종 해결 내용이 함께 나온다. 이는 짧은 기억 한 줄보다 정확한 경위를 확인할 때 유리하다.
다만 과거 세션이 DB에 있다는 사실과 새 대화에서 자동으로 읽힌다는 것은 다르다. 검색하지 않은 과거 메시지는 현재 프롬프트에 들어오지 않는다. 저장 비용은 낮지만 회상에는 명시적인 검색 단계가 필요하다.
Mem0는 자동 의미 회상을 추가한다
Mem0를 활성화하면 Hermes의 기본 메모리는 그대로 유지된다. 공식 문서도 built-in memory가 항상 활성화되고, 외부 provider 하나가 그 옆에서 동작한다고 설명한다.
Mem0 OSS 구성은 보통 다음 역할로 나뉜다.
- 메인 모델: 최종 답변, 추론, 도구 실행
- 추출 LLM: 대화에서 장기 기억 후보를 골라 요약
- 임베딩 모델: 기억과 질문을 의미 검색용 벡터로 변환
- 벡터 DB: 기억을 저장하고 유사한 항목을 검색
여기서 흔히 오해하는 부분이 있다. Mem0에 연결한 작은 Llama 모델이 Discord 답변을 작성하는 것은 아니다. 메인 AI가 일을 하는 직원이라면, 작은 Llama는 대화를 읽고 기억 카드를 만드는 사서에 가깝다. 임베딩 모델은 색인을 만들고 Qdrant 같은 벡터 DB는 서고 역할을 한다.
실제로 무엇이 달라지는가
예를 들어 사용자가 여러 세션에 걸쳐 다음 정보를 남겼다고 하자.
- 앞으로 iOS 프로젝트는 Tuist를 사용한다.
- 특정 Docker 환경에서는
terminal.backend=local을 사용한다. - 디스크 스캔 기능은 UI를 막거나 메모리를 과도하게 사용하면 안 된다.
Mem0가 없으면 새 세션에서 이 정보를 얻는 방법은 두 가지다.
- 핵심 규칙을
MEMORY.md나USER.md에 미리 넣는다. - 필요할 때
session_search로 과거 대화를 찾는다.
Mem0가 있으면 “이 iOS 프로젝트 다시 빌드해줘” 또는 “디스크 스캔이 또 멈춰” 같은 새 질문을 임베딩하고, 의미가 가까운 기억을 미리 찾아 컨텍스트에 붙일 수 있다. 사용자가 과거 세션을 직접 지정하지 않아도 관련 개발 규칙이나 장애 해결법이 자동으로 따라올 가능성이 높아진다.
즉 Mem0의 실질적인 이점은 저장 그 자체보다 검색 단계의 자동화다.
추출 모델이 크면 무엇이 좋아질까
Mem0의 추출 LLM은 대화에서 어떤 내용을 저장할지 판단한다. 모델 성능에 따라 다음 부분이 달라진다.
- 일회성 상태와 장기 선호를 구분하는 정확도
- 한국어의 완곡한 표현과 불만을 이해하는 능력
- 기존 기억과 새 사실의 중복 판단
- 설정이 바뀌었을 때 기존 기억을 갱신하는 능력
- 문장을 독립적으로 이해할 수 있는 기억으로 요약하는 품질
큰 모델은 복잡한 대화를 정리하는 데 유리하지만 메모리와 GPU를 더 사용한다. 작은 모델은 빠르고 가볍지만 일회성 문장을 저장하거나 비슷한 기억을 중복 생성할 가능성이 상대적으로 커진다.
하지만 모든 중복을 추출 모델 탓으로 돌릴 수는 없다. 에이전트가 mem0_add 같은 도구로 내용을 명시적으로 저장하면 추출 LLM을 거치지 않고 원문에 가깝게 들어갈 수 있다. 메모리 품질은 모델 크기뿐 아니라 저장 정책과 정리 과정에도 달려 있다.
Mem0의 단점은 검색 잡음이다
의미 검색은 정확한 키워드가 없어도 관련 기억을 찾는 데 강하다. 대신 관련성이 낮은 항목이 섞일 수 있다.
실제 운영에서는 다음 문제가 흔하다.
- 같은 Docker 명령이 표현만 달리해 여러 번 저장됨
- “아래 링크를 열면 된다”처럼 대상이 없는 문장이 남음
- 오래된 설정과 최신 설정이 동시에 검색됨
- 현재 질문과 무관한 과거 메시지가 유사한 표현 때문에 따라옴
따라서 Mem0는 많이 저장할수록 무조건 좋아지는 시스템이 아니다. 중복과 오래된 기억을 정리하지 않으면 오히려 모델이 잘못된 과거 상태를 참고할 수 있다.
어떤 정보를 어디에 넣어야 하나
다음 기준으로 나누면 운영이 단순해진다.
현재 세션 컨텍스트
지금 진행 중인 작업의 세부 상태를 둔다.
- 방금 발생한 오류
- 수정 중인 파일
- 현재 빌드 결과
- 이번 작업의 승인 상태
Hermes 기본 메모리
모든 세션에서 반드시 적용해야 할 핵심 규칙을 둔다.
- 사용자의 답변 스타일
- 고정된 개발 방식
- 안정적인 환경 정보
- 반복되는 승인·배포 규칙
세션 DB
과거 대화의 정확한 경위와 증거를 보관한다.
- 장애 발생부터 해결까지의 전체 과정
- 요구사항이 변경된 순서
- 특정 결정을 내린 이유
Mem0
기본 메모리에는 너무 세부적이지만 여러 세션에서 다시 쓸 가능성이 있는 사실을 둔다.
- 프로젝트별 개발 규칙
- 반복되는 장애 해결법
- 서비스 아이디어의 핵심 정의
- 장기적으로 유지되는 제품 요구사항
Mem0가 꼭 필요한가
한 사용자가 소수의 프로젝트를 운영하고, 핵심 규칙이 짧으며, 필요할 때 과거 세션을 직접 검색하는 방식이 불편하지 않다면 Mem0 없이도 충분하다. Hermes의 기본 메모리와 세션 검색만으로도 상당한 연속성을 확보할 수 있다.
반대로 Discord 스레드가 많고 여러 프로젝트를 오가며, 과거 세부사항을 자동으로 이어받는 것이 중요하다면 Mem0의 가치가 커진다. 단, 자동 저장을 켜는 것에서 끝내지 말고 중복·오래된 설정·맥락 없는 문장을 정기적으로 정리해야 한다.
결국 Mem0는 Hermes의 기억을 만드는 유일한 장치가 아니다. Hermes가 이미 가진 세션 컨텍스트, 기본 메모리, 세션 검색 위에 자동 의미 회상을 더하는 선택적 계층이다. 핵심 규칙은 작고 정확하게, 과거 원문은 세션 DB에, 세부 장기 기억은 Mem0에 두는 구성이 가장 이해하기 쉽고 운영하기도 편하다.