Spring AI 에이전트, 이제 세션 간에도 기억한다!

by DD
1개월 전
조회수 10

Spring AI 에이전트(Agent)가 세션(Session) 간 정보를 기억하도록 파일 기반의 장기 메모리(Long-Term Memory)를 제공하며, AutoMemoryTools를 통해 구현됨

Claude Code의 자동 메모리 시스템(Auto-Memory System)과 Claude API Memory Tool 사양을 기반으로 설계되었으며, 모든 LLM(Large Language Model) 제공업체에서 사용 가능

ChatMemoryAutoMemoryTools를 함께 사용해 현재 작업과 장기적인 사실(Facts)을 분리하여 관리하며, 메모리 유형(Memory Types)을 정의하여 저장

AutoMemoryToolsAdvisor를 사용하면 간편하게 장기 메모리를 통합할 수 있으며, 메모리 정리(Memory Consolidation)를 통해 저장 공간을 효율적으로 관리

FileSystemTools를 사용하면 에이전트가 전체 파일 시스템에 접근할 수 있으므로, 보안에 유의하여 사용해야 함

AutoMemoryTools의 작동 원리

AutoMemoryTools는 에이전트(Agent)가 장기적인 정보를 저장하고 관리하기 위한 파일 기반의 시스템이다. MEMORY.md라는 인덱스 파일을 통해 각 메모리 파일에 대한 포인터를 관리하며, 에이전트는 세션 시작 시 이 인덱스를 읽어 관련 파일을 선택적으로 로드한다.

6가지 도구(Tools): MemoryView, MemoryCreate, MemoryStrReplace, MemoryInsert, MemoryDelete, MemoryRename

메모리 유형(Memory Types): user, feedback, project, reference

2단계 저장 방식: MemoryCreate → MemoryInsert

이러한 구조를 통해 에이전트는 지속적인 지식(Persistent Knowledge)을 축적하고, 린(Lean)한 컨텍스트(Context)를 유지할 수 있다.

AutoMemoryTools vs. FileSystemTools

AutoMemoryTools는 Claude API Memory Tool 사양을 Spring AI에 맞게 포팅(Porting)한 것으로, 메모리 관리에 특화된 도구(Tool)를 제공한다. 반면, FileSystemTools는 일반적인 파일 시스템 접근을 위한 도구로, AutoMemoryTools와 동일한 메모리 패턴을 구현할 수 있다.

AutoMemoryTools: 샌드박스(Sandbox) 환경에서 작동하며, 안전성을 보장

FileSystemTools: 전체 파일 시스템에 접근 가능하며, 보안에 취약

FileSystemTools: ShellTools와 함께 사용 가능

FileSystemTools는 유연성이 높지만, 데이터 격리 아키텍처(Data Isolation Architecture)를 고려하여 사용해야 한다.

AutoMemoryTools의 통합 방법

AutoMemoryTools는 AutoMemoryToolsAdvisor를 통해 간편하게 통합하거나, 수동으로 설정할 수 있다. AutoMemoryToolsAdvisor는 ChatClient 빌더(Builder)에 추가하여 사용하며, 시스템 프롬프트(System Prompt)와 함께 AutoMemoryTools를 직접 연결할 수도 있다.

Option A: AutoMemoryToolsAdvisor: 간편한 통합, 자동 메모리 정리(Memory Consolidation) 기능 제공

Option B: Manual Setup: 시스템 프롬프트(System Prompt)를 직접 제어, 유연한 설정 가능

Option C: FileSystemTools + ShellTools: 기존 도구(Tool)를 활용, 파일 시스템 접근 권한 필요

어떤 방법을 선택하든, 메모리 정리(Memory Consolidation)를 통해 저장 공간을 효율적으로 관리하는 것이 중요하다.

메모리 정리(Memory Consolidation) 전략

AutoMemoryTools는 시간이 지남에 따라 중복되거나 오래된 정보를 축적할 수 있으므로, 주기적인 메모리 정리가 필요하다. AutoMemoryToolsAdvisor는 특정 조건(시간 경과, 사용자 입력 등)에 따라 자동으로 메모리 정리를 수행하도록 설정할 수 있다.

자동 트리거(Automatic Trigger): 시간 경과 또는 특정 사용자 입력에 따라 자동 실행

수동 트리거(Manual Trigger): 사용자 명령에 따라 실행

확률적 트리거(Probabilistic Trigger): 일정 확률로 실행

메모리 정리는 저장 공간 절약(Storage Space Saving)뿐만 아니라, 에이전트의 응답 속도(Response Speed)를 향상시키는 데에도 기여한다.

Spring AI Agentic Patterns 시리즈와의 연관성

본 기사는 Spring AI Agentic Patterns 시리즈의 일부로, 에이전트(Agent)의 장기적인 메모리(Long-Term Memory)를 구현하는 방법을 제시한다. 이전 파트에서는 에이전트의 스킬(Skills), 사용자 질문 도구(AskUserQuestionTool), 계획 수립(TodoWriteTool), 하위 에이전트 오케스트레이션(Subagent Orchestration), A2A 통합(A2A Integration) 등을 다루었다.

Part 1: Agent Skills

Part 2: AskUserQuestionTool

Part 3: TodoWriteTool

Part 4: Subagent Orchestration

Part 5: A2A Integration

Part 6: AutoMemoryTools

AutoMemoryTools는 이러한 에이전트(Agent)들이 세션(Session) 간에도 지식을 유지하고, 더욱 지능적인 상호작용(Intelligent Interaction)을 가능하게 한다.

Spring AI Agentic Patterns (Part 6): AutoMemoryTools — Persistent Agent Memory Across Sessions