Hindsight와 Hermes-Agent를 활용한 AI 에이전트 메모리 및 검색 시스템 구축

AI 어시스턴트가 매 대화마다 "기억상실"을 겪는 이유를 생각해본 적이 있나요?

어제 30분 동안 코드 스타일 선호도를 가르쳤는데 오늘은 완전히 잊어버렸습니다. 지난주에 분석해준 프로젝트 리스크를 이번 주에 다시 설명해야 합니다. 이는 특별한 사례가 아니라 현재 대부분의 AI 에이전트가 겪는 현실입니다.

문제는 "대화 내역"만 있을 뿐 "메모리 시스템"이 없다는 데 있습니다.

이 글에서는 두 가지 상호 보완적인 오픈소스 프로젝트인 Hindsight(생체 모방 메모리 엔진)와 Hermes-Agent(자기 진화 에이전트 프레임워크)를 소개합니다. 이 둘을 결합하면 에이전트가 매번 처음부터 시작하는 대신 경험을 통해 학습할 수 있습니다.

1. AI 에이전트 메모리 시스템의 현황과 과제

현재 주요 접근법의 한계

현재 AI 에이전트의 메모리 솔루션은 크게 세 가지로 나뉘지만, 각각 명확한 단점이 있습니다.

컨텍스트 윈도우 확장은 가장 직관적인 방법입니다. 더 많은 대화 내역을 프롬프트에 포함시키는 것입니다. 하지만 대화가 길어질수록 비용이 선형적으로 증가하고, 핵심 정보가 희석됩니다. 200K 토큰 윈도우가 커 보이지만, 빈번한 상호작용 환경에서는 며칠 만에 가득 찹니다.

RAG(검색 증강 생성)은 현재 주류 선택지입니다. 대화를 벡터로 변환하여 데이터베이스에 저장하고, 필요할 때 의미 유사도에 따라 검색합니다. 하지만 이는 벡터 매칭 품질에 크게 의존하며, 추론과 연관성이 필요한 복잡한 쿼리의 경우 단순한 의미 유사도만으로는 부족합니다.

지식 그래프는 엔터티 관계를 표현할 수 있지만, 구축 및 유지 관리 비용이 매우 높습니다. 수동 주석은 현실적이지 않고, 자동 추출의 품질은 일정하지 않습니다.

"기억한다"는 것과 "학습한다"는 것은 다릅니다

여기에는 중요한 인식 차이가 있습니다. 기억은 학습과 같지 않습니다.

진정한 메모리 시스템은 네 가지 능력을 갖춰야 합니다:

능력 설명 기존 솔루션 지원 수준
저장 및 검색 정보 저장 및 검색 기본적으로 충족
추론 기존 정보에서 새로운 결론 도출 대부분 누락
반성 경험 검토, 패턴 발견 거의 없음
망각 구식 정보 제거 ️ 단순 절단

대부분의 에이전트는 "저장 및 검색" 수준에 머물러 있습니다. 사용자가 말한 내용은 기억할 수 있지만, 왜 그렇게 말했는지 이해하지 못하며, 재사용 가능한 지식을 추출할 수도 없습니다.

이상적인 에이전트 메모리 시스템은 인간 두뇌와 같아야 합니다. 현재 작업을 처리하는 단기 작업 기억, 경험을 축적하는 장기 기억, 그리고 반성을 통해 심층 인지를 형성하는 능력을 모두 갖춰야 합니다.

Hindsight + Hermes-Agent의 조합은 바로 이 목표를 위해 설계되었습니다.

2. Hindsight: 에이전트가 진정으로 학습하게 만드는 메모리 엔진

Hindsight는 Vectorize.io 팀이 오픈소스로 공개했으며, 현재 GitHub에서 10,500개 이상의 Star를 받았고 MIT 라이선스를 사용합니다. 핵심 아이디어는 단 한 문장입니다: 에이전트가 단순히 기억하는 것이 아니라 학습하게 만드는 것입니다.

2.1 생체 모방 메모리 모델: World / Experiences / Mental Models

Hindsight의 설계는 인간의 메모리 시스템에서 영감을 받았습니다. 에이전트의 메모리를 세 가지 계층으로 나눕니다:

World(세계 지식) — 세계에 대한 객관적 사실입니다. "불은 뜨겁다"는 것을 아는 것과 같습니다. 이러한 기억은 정적이고 공유 가능합니다. 에이전트 시나리오에서는 프로젝트의 기술 스택 정보, 팀의 개발 규칙 등 사실적 지식을 저장합니다.

Experiences(경험) — 에이전트 자체의 상호작용 경험입니다. "데었던 적이 있다"는 것과 유사합니다. 이러한 기억은 개인화되어 있고 타임스탬프가 있습니다. 특정 시나리오에서 에이전트의 행동과 결과를 기록합니다. 예를 들어 "사용자는 JavaScript 대신 TypeScript로 유틸리티 함수를 작성하는 것을 선호합니다"와 같은 정보입니다.

Mental Models(멘탈 모델) — 반성을 통해 형성된 심층 인지입니다. "뜨거운 것을 만지면 안 된다는 것을 알고 있다"는 것과 같습니다. 이는 원시 기억의 단순한 축적이 아니라 여러 경험에 걸친 추상화와 종합입니다.

그림1: Hindsight 3계층 생체 모방 메모리 모델, World/Experiences/Mental Models의 계층 관계와 Retain/Recall/Reflect 작업 흐름을 보여줌

이러한 계층화가 단순한 벡터 검색보다 더 효과적인 이유는 무엇일까요? 실제 시나리오의 정보 요구는 종종 다층적이기 때문입니다. 때로는 정확한 사실(World)이 필요하고, 때로는 관련 경험(Experiences)이 필요하며, 때로는 종합적인 판단(Mental Models)이 필요합니다. 단일 검색 전략으로는 이러한 모든 요구를 동시에 충족할 수 없습니다.

2.2 세 가지 핵심 작업: Retain / Recall / Reflect

Hindsight는 세 가지 핵심 작업을 중심으로 완전한 메모리 수명 주기를 구축합니다.

Retain(보유): 정보를 메모리 시스템에 저장합니다. 단순한 텍스트 저장이 아닙니다. Hindsight는 LLM을 사용하여 핵심 사실, 시간 데이터, 엔터티 및 관계를 자동으로 추출한 다음, 이 구조화된 정보를 정규화된 엔터티, 시계열 및 검색 인덱스로 변환합니다.

from hindsight import HindsightClient

client = HindsightClient(api_key="your-api-key")

# Retain: 정보 저장, 엔터티 및 관계 자동 추출
client.retain(
    content="사용자는 유틸리티 함수를 TypeScript로 작성하고 "
            "함수형 프로그래밍 스타일을 따르는 것을 선호합니다.",
    context="코드 스타일 논의",
    tags=["preference", "coding-style"]
)

Recall(회상): 메모리에서 정보를 검색합니다. Hindsight는 4중 병렬 검색 전략을 사용합니다:

  1. 의미 검색: 벡터 유사도 기반의 퍼지 매칭
  2. 키워드 검색: BM25 알고리즘 기반의 정확한 매칭
  3. 그래프 검색: 엔터티 관계 및 인과 관계 링크를 따라 탐색
  4. 시간순 필터링: 시간 범위에 따라 결과 집합 축소

네 가지 결과를 집계한 후 RRF(Reciprocal Rank Fusion, 역순위 융합)를 사용하여 병합하고, Cross-Encoder로 최종 순위를 조정한 다음, 토큰 예산에 따라 출력을 자릅니다.

# Recall: 다중 전략 병렬 검색
results = client.recall(
    query="사용자의 코드 스타일 선호도는 무엇인가요?",
    budget="mid",           # 검색 예산: low / mid / high
    max_tokens=4096,        # 최대 반환 토큰 수
    tags=["preference"],    # 태그별 필터링
    types=["world", "experiences"]  # 메모리 유형 지정
)

print(results.summary)

Reflect(반성): 메모리 간의 심층 종합입니다. 에이전트가 "기억"에서 "학습"으로 도약하게 만드는 핵심 작업입니다. Reflect는 LLM을 호출하여 여러 관련 메모리를 종합적으로 분석하고 새로운 통찰력을 생성합니다.

# Reflect: 메모리 간의 심층 분석 및 통찰력
insight = client.reflect(
    query="지난 주 상호작용을 바탕으로 "
          "사용자의 핵심 기술 선호도와 커뮤니케이션 패턴을 요약해 주세요.",
    budget="high"
)

print(insight.synthesis)
# 출력 예시:
# "사용자는 강한 기술 선호도를 가지고 있습니다: TypeScript + 함수형 스타일 선호,
#  커뮤니케이션은 긴 설명보다는 간결한 코드 예제를 선호합니다..."

LongMemEval(대화 AI 메모리 시스템 벤치마크)에서 Hindsight는 SOTA(현재 최고 성능)를 달성했으며, Virginia Tech Sanghani Center와 Washington Post에서 독립적으로 재현 및 검증했습니다.

3. Hermes-Agent: 내장 학습 루프를 갖춘 자기 진화 에이전트

Hermes-Agent는 NousResearch에서 오픈소스로 공개했으며, 11만 개 이상의 Star를 보유하고 있고 MIT 라이선스를 사용합니다. 그定位는 명확합니다: 스스로 진화할 수 있는 AI 에이전트입니다.

3.1 폐쇄 루프 학습 아키텍처: 경험에서 스킬 생성, 사용 중 개선

Hermes의 가장 독특한 설계는 폐쇄 루프 학습 시스템입니다. 이 루프는 네 단계로 구성됩니다:

메모리 축적: 에이전트는 상호작용을 통해 지식과 경험을 지속적으로 축적합니다. 이 프로세스는 자동이며, 각 대화의 중요한 정보가 추출되어 저장됩니다.

스킬 생성: 복잡한 작업을 완료한 후 에이전트는 자율적으로 솔루션을 재사용 가능한 "스킬"로 추출합니다. 이러한 스킬은 agentskills.io 개방형 표준을 따르며, 현재 100개 이상의 내장 스킬이 있습니다.

사용 및 개선: 스킬은 실제 사용에서 지속적으로 검증되고 최적화됩니다. 특정 스킬의 효과가 좋지 않으면 에이전트가 자동으로 매개변수나 프로세스를 조정합니다.

지식 영속화: 검증된 지식은 고정되어 에이전트의 장기 지식 저장소를 형성합니다.

메모리 저장 계층에서 Hermes는 두 개의 간결하면서도 효율적인 메모리 파일을 내장하고 있습니다:

  • MEMORY.md(2200자 제한): 에이전트의 개인 노트, 환경 사실, 규칙 및 학습된 경험 저장
  • USER.md(1375자 제한): 사용자 프로필, 선호도, 커뮤니케이션 스타일 및 기대치 기록

이 두 파일은 시스템 시작 시 고정 스냅샷으로 프롬프트에 주입되어 에이전트가 항상 가장 중요한 정보에 액세스할 수 있도록 보장합니다.

Hermes는 SQLite + FTS5를 통해 세션 수준 검색을 구현합니다. 대화 내역을 전체 텍스트 검색하고 Gemini Flash를 사용하여 요약을 생성하여 세션 간 정보 검토를 가능하게 합니다.

3.2 MemoryProvider 플러그인 시스템: 확장 가능한 메모리 백엔드

Hermes의 메모리 시스템은 플러그인 아키텍처로 설계되었으며, 핵심은 MemoryProvider 추상 기본 클래스입니다.

그림2: Hermes MemoryProvider 플러그인 아키텍처, 기본 클래스 수명 주기 훅과 Hindsight 등의 외부 제공자 간의 관계를 보여줌

플러그인의 수명 주기 훅은 완전한 메모리 상호작용 흐름을 포괄합니다:

훅 메서드 트리거 시점 역할
initialize() 에이전트 시작 백엔드 연결, 리소스 생성, 워밍업
system_prompt_block() 시스템 프롬프트 구성 정적 프롬프트 텍스트 주입
prefetch(query) 각 대화 전 백그라운드에서 관련 메모리 사전 로드
sync_turn(user, asst) 각 대화 후 대화 데이터 비동기 쓰기
get_tool_schemas() 도구 등록 모델에 도구 노출
handle_tool_call() 도구 호출 도구 요청 분배 및 실행
shutdown() 에이전트 종료 리소스 정리

선택적 훅으로 on_turn_start(컨텍스트가 있는 턴 콜백), on_session_end(세션 종료 시 추출), on_pre_compress(압축 전 추출) 등이 있어 풍부한 확장 지점을 제공합니다.

Hermes는 공식적으로 8개의 메모리 제공자를 제공합니다: Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover 및 Supermemory. 각 제공자는 고유한 특징이 있으며, Hindsight의 강점은 지식 그래프와 반성 종합에 있습니다.

중요한 규칙이 있습니다: 한 번에 하나의 외부 메모리 제공자만 활성화할 수 있지만, 내장 메모리(MEMORY.md/USER.md)는 항상 활성 상태입니다. 이 설계는 기본 메모리 기능의 안정성을 보장하면서 플러그인을 통해 고급 메모리 기능을 확장할 수 있도록 합니다.

4. 심층 통합: Hindsight × Hermes-Agent 아키텍처 설계

Hindsight는 이미 Hermes-Agent의 공식 내장 메모리 제공자 플러그인이며, 코드는 plugins/memory/hindsight/ 디렉토리에 있습니다. 즉, 이 둘의 통합은 서드파티 해킹이 아니라 공식적으로 검증된 일급 시민 솔루션입니다.

4.1 계층형 메모리 아키텍처: 단기 + 장기의 협력적 설계

결합된 시스템은 명확한 계층형 메모리 아키텍처를 형성합니다:

L1 내장 메모리 (MEMORY.md + USER.md) — 빈도가 높은 핵심 사실에 대한 빠른 채널입니다.

이 부분의 용량은 제한적이지만(합계 약 3500자), 액세스 속도가 가장 빠릅니다. 에이전트가 일상적으로 가장 필요로 하는 정보를 저장합니다: 사용자의 이름과 선호도, 프로젝트의 핵심 규칙, 최근의 주요 결정 등입니다.

L2 Hindsight 장기 메모리 — 무한 확장 가능한 심층 메모리 계층입니다.

여기는 Hindsight의 무대입니다. World/Experiences/Mental Models의 3계층 구조는 무제한 저장 용량과 다중 전략 검색 기능을 제공합니다. L1에 맞지 않는 모든 세부 정보, 과거 상호작용 기록, 반성 통찰력이 여기에 저장됩니다.

두 계층 메모리의 협력 방식:

  • 자동 사전 로드(prefetch): 각 대화 전에 Hindsight 플러그인이 백그라운드에서 관련 메모리를 자동으로 검색하여 컨텍스트에 주입합니다.
  • 도구 호출: 에이전트는 hindsight_recallhindsight_reflect 도구를 적극적으로 호출하여 더 자세한 정보를 얻을 수 있습니다.
  • 비동기 쓰기: 대화 내용은 sync_turn을 통해 Hindsight에 자동으로 전달되며, 백그라운드에서 비동기적으로 retain을 처리하여 응답을 차단하지 않습니다.

4.2 데이터 흐름 분석: 대화에서 메모리까지의 완전한 수명 주기

데이터 흐름을 이해하는 것이 이 시스템을 마스터하는 열쇠입니다. 아래에서 세 가지 핵심 경로를 살펴보겠습니다.

그림3: 사용자 입력에서 메모리 쓰기까지의 완전한 데이터 흐름, 쓰기, 읽기, 반성 세 가지 핵심 경로를 보여줌

쓰기 경로:

사용자 메시지 전송 → 에이전트 응답 생성 → sync_turn(user_msg, assistant_msg) 트리거 → Hindsight가 비동기적으로 retain 실행 → LLM이 엔터티 및 관계 추출 → 3계층 메모리에 구조화된 데이터 저장

핵심은 "비동기"입니다. retain 작업에는 LLM 호출 및 엔터티 추출이 포함되어 시간이 오래 걸립니다. Hermes는 비동기 처리를 통해 메모리 쓰기로 인해 에이전트 응답이 지연되는 것을 방지합니다.

읽기 경로:

사용자 쿼리 전송 → prefetch(query)가 백그라운드에서 시작 → Hindsight가 recall 실행(4중 병렬 검색 + RRF 재정렬) → 결과가 컨텍스트에 주입 → 에이전트가 사전 로드된 결과와 자체 추론을 결합하여 응답 생성

prefetch 역시 백그라운드에서 비차단 방식으로 실행됩니다. 검색이 완료되지 않은 경우 에이전트는 기존 정보를 기반으로 계속 응답하며 대기하지 않습니다.

반성 경로:

정기적으로 또는 특정 시나리오에서 reflect 트리거 → LLM이 여러 관련 메모리 분석 → Mental Models(심층 통찰력) 생성 → 통찰력을 사용하여 MEMORY.md 업데이트 또는 새 스킬 생성 가능

세션 혈통은 session/parent 태그를 통해 추적됩니다. 각 세션에는 출처가 표시되어 에이전트가 특정 결론이 어떤 대화에서 도출되었는지 추적할 수 있습니다.

4.3 세 가지 배포 모드 상세 설명

Hindsight는 다양한 사용 시나리오와 기술 요구 사항에 맞게 세 가지 배포 모드를 제공합니다.

그림4: Cloud / Local Embedded / Local External 세 가지 배포 모드의 아키텍처 비교

Cloud 모드: Hindsight Cloud API에 연결합니다.

가장 간단한 솔루션으로, API Key만 있으면 사용할 수 있습니다. 빠른 검증 및 개인 프로젝트에 적합합니다. 데이터는 Hindsight 클라우드에 저장되며, 로컬에 추가 서비스를 배포할 필요가 없습니다.

Local Embedded 모드: 로컬 임베디드 배포.

가장 비용 효율적인 솔루션입니다. Hermes가 자동으로 로컬 Hindsight 데몬 프로세스를 시작하며, 내장 PostgreSQL 데이터베이스를 사용하므로 추가 구성이 필요 없습니다. LLM API Key(엔터티 추출 및 반성용)만 있으면 되며, Docker를 설치하거나 데이터베이스를 구성할 필요가 없습니다.

Local External 모드: Docker 또는 자체 호스팅 배포.

엔터프라이즈 수준 시나리오에 적합합니다. Hindsight 인스턴스를 독립적으로 배포 및 관리하고 HTTP를 통해 연결할 수 있습니다. 이는 완전한 데이터 제어권을 제공하며, 데이터 프라이버시가 엄격하게 요구되는 시나리오에 적합합니다.

세 가지 모드의 핵심 차이점:

차원 Cloud Local Embedded Local External
초기 난이도 ⭐ 가장 쉬움 ⭐⭐ 쉬움 ⭐⭐⭐ 운영 필요
데이터 위치 Hindsight 클라우드 로컬 파일 시스템 자체 호스팅 서버
추가 종속성 없음 LLM API Key Docker + 데이터베이스
적용 시나리오 빠른 검증 개인/소규모 팀 엔터프라이즈급 배포
확장성 탄력적 단일 머신 클러스터 가능

5. 실전: 5분 만에 Hermes Agent에 Hindsight 메모리 구성하기

이론 부분은 끝났습니다. 이제 실제로 해보겠습니다. 처음부터 Hindsight 메모리를 구성해 보겠습니다.

5.1 빠른 시작: Cloud 모드

1단계: Hermes Agent 설치

# pip를 사용하여 Hermes Agent 설치
pip install hermes-agent

# 설치 확인
hermes --version

2단계: Hindsight 메모리 제공자 구성

# 메모리 시스템 구성 마법사 시작
hermes memory setup

# 마법사가 순서대로 묻는 질문:
# 1. 메모리 제공자 선택 → "Hindsight" 선택
# 2. 배포 모드 선택 → "Cloud" 선택
# 3. Hindsight API Key 입력
# 4. 메모리 모드 구성 → "hybrid" 권장 (기본값)

3단계: 구성 확인

# Hermes Agent 시작
hermes chat

# 대화에서 메모리 기능 테스트
> 기억해 주세요: 제 프로젝트는 React 19 + TypeScript 5.7을 사용하고, 코드 스타일은 Airbnb 규칙을 따릅니다.

> 제 기술 스택이 무엇인지 전에 말씀드렸나요?
# 에이전트가 React 19 + TypeScript 5.7을 올바르게 기억해야 함

구성이 완료되면 Hermes는 각 대화 전에 관련 메모리를 자동으로 사전 로드하고, 대화 후에 새 메모리를 자동으로 저장합니다. 또한 hindsight_recall 도구를 통해 언제든지 적극적으로 쿼리할 수 있습니다.

5.2 고급 구성: Local Embedded 모드

데이터를 클라우드로 보내고 싶지 않다면 Local Embedded 모드가 최선의 선택입니다.

# 설치 시 Hindsight 로컬 종속성 포함
pip install hermes-agent[hindsight]

# 구성 마법사 시작
hermes memory setup

# "Hindsight" → "Local Embedded" 선택
# LLM Provider 구성 (엔터티 추출용)

Hermes는 자동으로 로컬에서 Hindsight 데몬 프로세스(내장 PostgreSQL 포함)를 시작하므로, 데이터베이스를 수동으로 설치할 필요가 없습니다.

# 구성 파일은 일반적으로 ~/.hermes/memory_providers/hindsight.yaml에 위치
provider: hindsight
mode: local_embedded

# LLM Provider 구성 (엔터티 추출 및 반성용)
llm:
  provider: openai          # openai / anthropic / ollama 등 지원
  model: gpt-4o-mini        # 권장: 가성비 좋고 속도 빠름
  api_key: ${OPENAI_API_KEY}

# 메모리 검색 구성
recall:
  budget: mid                # low / mid / high
  prefetch_method: recall    # recall(원시 사실) 또는 reflect(LLM 종합)
  max_tokens: 4096

# 메모리 쓰기 구성
retain:
  every_n_turns: 1           # N번의 대화 턴마다 자동으로 retain 실행

# 메모리 모드
memory_mode: hybrid          # hybrid / context / tools

데몬 프로세스 상태 및 로그 확인:

# 데몬 프로세스 상태 확인
hermes memory status

# 실시간 로그 확인
hermes memory logs --follow

# Hindsight Web UI 열기 (가능한 경우)
hermes memory ui

5.3 모범 사례 및 튜닝 팁

구성이 완료되면 다음 튜닝 팁을 통해 더 나은 결과를 얻을 수 있습니다.

memory_mode 선택 전략:

# 세 가지 메모리 모드의 구성 코드

# hybrid (기본 권장): 자동 주입 + 도구 사용 가능
# 에이전트가 컨텍스트에서 사전 로드된 메모리를 볼 수 있을 뿐만 아니라
# hindsight_recall/reflector 도구를 적극적으로 호출할 수도 있음
memory_mode: hybrid

# context: 자동 주입만, 도구 노출 안 함
# 간단한 시나리오에 적합, 토큰 소비 감소
# 에이전트는 prefetch로 주입된 메모리만 볼 수 있음
memory_mode: context

# tools: 도구만, 자동 주입 없음
# 메모리 액세스를 세밀하게 제어해야 하는 시나리오에 적합
# 에이전트는 메모리를 얻기 위해 적극적으로 도구를 호출해야 함
memory_mode: tools

recall_prefetch_method의 시나리오 선택:

  • recall: 원시 사실 및 경험 반환, 정확한 정보가 필요한 시나리오에 적합
  • reflect: LLM이 종합한 통찰력 반환, 종합적인 판단이 필요한 시나리오에 적합

일반적으로 recall을 사용하고, 높은 수준의 요약이 필요할 때만 reflect로 전환하는 것이 좋습니다.

bank_id_template 다중 시나리오 구성:

bank_id_template은 메모리 격리를 위한 핵심 구성입니다. profile, workspace, platform, user, session의 다섯 가지 템플릿 변수를 지원합니다:

# 시나리오 1: 개인 사용, 모든 메모리 공유
bank_id_template: "my-agent"

# 시나리오 2: 다중 사용자 격리 (고객 서비스 시나리오)
bank_id_template: "user-{user}"
# user-alice와 user-bob의 메모리는 완전히 격리됨

# 시나리오 3: 다중 작업 공간 격리 (프로젝트 관리)
bank_id_template: "{workspace}"
# workspace-project-a와 workspace-project-b는 독립적인 메모리

# 시나리오 4: 플랫폼 + 사용자별 격리
bank_id_template: "{platform}-{user}"
# telegram-alice와 discord-alice는 다른 메모리를 가질 수 있음

# 시나리오 5: 세션 수준 격리 (임시 메모리)
bank_id_template: "{platform}-{user}-{session}"
# 각 세션은 독립적인 메모리를 가지며, 일회성 작업 시나리오에 적합

retain_every_n_turns의 균형:

# 매 턴 retain (기본값): 메모리가 가장 완전하지만 API 호출이 더 빈번함
retain_every_n_turns: 1

# 3턴마다 retain: API 오버헤드 감소, 일부 정보 누락 가능성
retain_every_n_turns: 3

# 5턴마다 retain: 빈번하지만 정보 밀도가 낮은 대화에 적합
retain_every_n_turns: 5

개발 시나리오의 경우 1(매 턴 retain)을 유지하는 것이 좋습니다. 잡담 시나리오의 경우 3 또는 5면 충분합니다.

6. 응용 시나리오: 개인 비서에서 엔터프라이즈급 에이전트까지

몇 가지 실제 응용 시나리오를 살펴보겠습니다.

개인 개발 비서

가장 직접적인 시나리오입니다. 에이전트가 프로젝트 기술 스택, 코드 스타일 선호도, 자주 사용하는 종속성 버전을 기억합니다. 매 대화마다 컨텍스트를 반복할 필요가 없습니다. 또한 reflect를 통해 사용자의 코딩 습관 패턴을 발견하여 점점 더 정확한 제안을 제공할 수 있습니다.

예를 들어 한 달 동안 여러 번 ESLint 구성을 수정한 경우, 에이전트는 reflect를 통해 사용자가 코드 규칙에 대한 지속적인 조정 요구가 있을 수 있음을 파악하고 적극적으로 관련 제안을 제공합니다.

프로젝트 관리 에이전트

Hindsight의 reflect 작업을 활용하여 프로젝트 관리 에이전트는 과거 상호작용에서 리스크 패턴을 발견할 수 있습니다. 예를 들어 "이 프로젝트는 지난 3주간의 스프린트에서 매주 화요일 작업 완료율이 낮았습니다"와 같은 정보를 파악하고 사용자에게 일정을 조정하도록 적극적으로 알릴 수 있습니다.

Hermes의 폐쇄 루프 학습은 이러한 패턴을 스킬로 추출하여, 향후 유사한 프로젝트에 자동으로 적용합니다.

고객 서비스 시스템

bank_id_template: "user-{user}"를 통해 다중 사용자 메모리 격리를 구현합니다. 각 사용자의 불만 내역, 선호도 및 해결된 문제가 독립적으로 저장됩니다. 에이전트는 "이 사용자가 지난주에 동일한 문제를 보고했습니다"를 기억하여 일관된 서비스 경험을 제공할 수 있습니다.

동시에 reflect는 문서에 포함되지 않은 공통 문제를 발견하여 지식 기반 최적화에 도움을 줍니다.

영업 에이전트

영업 시나리오에서는 패턴 인식이 가장 중요합니다. 에이전트는 Hindsight를 통해 각 고객의 커뮤니케이션 스타일, 응답 시간 패턴 및 의사 결정 선호도를 기억합니다. reflect 분석 후 에이전트는 "목요일 오후에 보낸 메시지의 응답률이 가장 높습니다"와 같은 통찰력을 요약하여 커뮤니케이션 전략 최적화에 도움을 줄 수 있습니다.

7. 요약 및 전망

Hindsight + Hermes-Agent의 조합은 핵심 문제를 해결합니다: AI 에이전트가 "대화를 기억하는 것"에서 "경험을 통해 학습하는 것"으로 진화하도록 만드는 것입니다.

이 솔루션의 강점은 세 가지 계층의 상호 보완적인 설계에 있습니다:

  • L1 내장 메모리 (MEMORY.md/USER.md)는 핵심 정보에 대한 즉각적인 액세스를 보장합니다.
  • L2 Hindsight 메모리 (World/Experiences/Mental Models)는 무한 확장 가능한 심층 메모리를 제공합니다.
  • 폐쇄 루프 학습 사이클은 메모리가 재사용 가능한 스킬과 지식으로 전환되도록 보장합니다.

현재 솔루션에는 여전히 한계가 있습니다. reflect 작업은 LLM 품질에 의존하며, 다중 에이전트 간 메모리 공유는 아직 탐색 단계에 있고, Local Embedded 모드의 성능 상한은 단일 머신 리소스에 의해 제한됩니다.

미래 발전 방향은 다음과 같습니다: 더 강력한 자율 반성 능력, 다중 에이전트 간 공유 메모리 풀, 더 정교한 메모리 제거 전략. 이 두 프로젝트는 모두 활발히 개발 중이며, 커뮤니티 생태계도 빠르게 성장하고 있습니다.

장기 메모리가 필요한 AI 에이전트를 구축하고 있다면, 지금이 시작하기 가장 좋은时机입니다. 5분의 구성만으로 에이전트가 "건망증"에서 "박학다식"으로 도약할 수 있습니다.

태그: Hindsight Hermes-Agent AI Agent Memory System Retrieval

6월 7일 18:21에 게시됨