Hermes Agent 메모리
기준일: 2026-07-26
문서 반영 버전: v2026.7.20
난이도: 중급
공식 기준: Persistent Memory, Memory Providers
Hermes의 메모리는 세션을 넘어서 유지되는 bounded, curated 장기 컨텍스트입니다. 모든 대화를 무제한 저장하는 것이 아니라, 중요한 사용자 선호와 환경 사실을 선별해 다음 세션의 시스템 프롬프트에 넣는 방식입니다.
핵심 개념
| 파일/기능 | 역할 | 한도·위치 |
|---|---|---|
MEMORY.md |
환경 사실, 컨벤션, 배운 점 | 2,200 chars, ~/.hermes/memories/ |
USER.md |
사용자 선호, 말투, 기대치 | 1,375 chars, ~/.hermes/memories/ |
| session_search | 과거 세션 FTS5 전문 검색 | ~/.hermes/state.db |
| 외부 provider | Honcho, Mem0, Supermemory 등 | 내장 메모리와 병행 (대체 아님) |
| write_approval | 메모리 쓰기 승인 게이트 | memory.write_approval |
| background review | 턴 후 학습 후보 검토 | 메인 또는 저렴한 aux 모델 |
메모리는 “사실”에 적합합니다. “어떻게 하는가”는 스킬이 더 적합합니다.
Frozen snapshot
세션 시작 시 메모리가 시스템 프롬프트에 고정 주입됩니다. 세션 중 memory 도구로 변경해도 다음 세션부터 프롬프트에 반영됩니다. 도구 응답에는 항상 최신 상태가 보입니다. 이는 prefix cache 안정성을 위한 설계입니다.
한도 초과 시 자동 압축하지 않고 에러를 반환합니다. 에이전트가 같은 턴에서 consolidate/remove 후 재시도해야 합니다.
선택 기준
메모리에 넣을 것:
- 사용자가 반복해서 요구한 보고 형식
- 프로젝트 위치, 실행 명령, 배포 환경
- 한 번 확인한 뒤 자주 재사용할 제약
- 선호하는 언어와 톤
메모리에 넣지 말 것:
- 일회성 작업 지시
- 비밀값, 토큰, 개인 식별 정보
- 검증되지 않은 추측
- 절차 전체 → 스킬
- SOUL.md / AGENTS.md에 이미 있는 내용
session_search vs memory
| 항목 | Persistent Memory | Session Search |
|---|---|---|
| 용량 | ~1,300 tokens 고정 | 전체 세션 무제한 |
| 속도 | 매 프롬프트 즉시 | FTS5 ~20ms |
| 용도 | 항상 필요한 핵심 사실 | “지난주 X 얘기했나?” |
| 관리 | 에이전트가 선별 | 자동 저장 |
실습
현재 메모리에 남길 후보를 정리합니다.
이번 세션에서 장기 메모리에 남길 만한 사실과 남기면 안 되는 정보를 구분해줘.
각 항목마다 MEMORY.md, USER.md, 스킬, 기록하지 않음 중 하나로 분류해줘.
파일·도구 확인:
ls ~/.hermes/memories
hermes sessions list
# ~/.hermes/config.yaml
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200
user_char_limit: 1375
write_approval: false # true면 승인 후 저장
display:
memory_notifications: on # off | on | verbose
auxiliary:
background_review:
provider: openrouter
model: google/gemini-3-flash-preview # auto = main model
/memory pending
/memory approve <id>
/memory reject <id>
/memory approval on
외부 provider:
hermes memory setup
hermes memory status
Hermes에 입력할 프롬프트
내가 방금 말한 내용 중 장기 메모리로 남길 가치가 있는 사실만 골라줘.
민감정보, 일회성 지시, 검증되지 않은 추측은 제외해줘.
저장 전에 후보와 이유를 먼저 보여줘.
체크리스트
- 메모리와 스킬을 구분했다.
- 비밀값을 메모리에 저장하지 않기로 했다.
- USER.md에는 선호, MEMORY.md에는 환경 사실을 둔다.
- frozen snapshot(다음 세션 반영)을 이해했다.
- 필요하면
memory.write_approval로 자동 저장을 게이트한다. - 외부 메모리 provider는 필요성이 있을 때만 켠다.