Team A: Memory Hook 클래스

분석 대상

memory_hook_provider.py — MemoryHook 클래스 (HookProvider 패턴)

HookProvider 패턴

Strands Framework의 Hook 시스템은 에이전트 라이프사이클 이벤트에 콜백을 등록하는 패턴입니다.

from strands.hooks.events import AgentInitializedEvent, MessageAddedEvent
from strands.hooks.registry import HookProvider, HookRegistry

class MemoryHook(HookProvider):
    """AgentCore Memory와 에이전트를 연결하는 Hook"""

    def __init__(self, memory_client, memory_id, actor_id, session_id):
        self.memory_client = memory_client  # AgentCore Memory 클라이언트
        self.memory_id = memory_id          # Memory 리소스 ID
        self.actor_id = actor_id            # 사용자 식별자
        self.session_id = session_id        # 세션 식별자

    def register_hooks(self, registry: HookRegistry):
        """두 가지 이벤트 콜백 등록"""
        registry.add_callback(AgentInitializedEvent, self.on_agent_initialized)
        registry.add_callback(MessageAddedEvent, self.on_message_added)

이벤트 타이밍

on_agent_initialized 상세

핵심 포인트:

  • get_last_k_turns(k=10) — 최근 10턴을 로드하지만 실제 사용은 마지막 5턴

  • 세션 패턴 검색으로 크로스-세션 컨텍스트 복원

  • event.agent.system_prompt에 직접 추가하여 LLM이 이전 대화를 "기억"

Agent와의 통합 포인트

토론 질문

  1. register_hooks가 호출되는 시점은 Agent 생성자 내부인가요?

  2. event.agent.system_prompt를 수정하면 모든 후속 턴에 영향을 미치나요?

  3. get_last_k_turns의 k=10과 실제 사용 k=5의 차이가 있는 이유는?

마지막 업데이트