본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 22. 23:32

【또 다른 나】 BedrockAgentCoreMemory에 기억을 “직접 이식”하여 메타인지 체험하기

요약

Amazon Bedrock의 AgentCore Memory를 활용하여 AI 에이전트에게 장기 기억을 부여하고 메타인지를 구현하는 방법을 소개합니다. Managed Agent Harness를 통해 코딩 없이 에이전트를 구축하고, 단기 및 장기 기억 구조를 설계하는 과정을 다룹니다.

핵심 포인트

  • AgentCore Managed Agent Harness로 코드 없이 프로덕션급 에이전트 구축 가능
  • AgentCore Memory를 통한 단기 기억(대화 로그)과 장기 기억(사실·취향)의 분리
  • 시스템 프롬프트에 인격을 직접 쓰지 않고 기억을 통해 인격을 형성하는 설계 방식 제안
  • RAG와 차별화된 개인화된 장기 기억 축적 메커니즘 활용

최근 어디를 봐도 「메타인지」, 「메타인지」라며 시끄럽습니다. "자신을 객관적으로 바라보라"라며 말이죠.

그래서 생각해냈습니다. 메타인지란, 결국 "또 다른 나"와 대화하는 것이 아닐까요?

유희왕으로 치면 「또 다른 나」. 천년 퍼즐에 봉인된 파라오입니다.

겉모습의 내가 곤란할 때, 듀얼을 대신 해주는 그 녀석 말이죠.

"내 턴, 드로우!"

……그런 이유로, Amazon Bedrock의 AgentCore Memory를 사용하여, 천년 퍼즐이 아닌 「클라우드 상의 기억의 그릇」에 또 다른 나를 연성하여, 자신과 대화해 본 이야기입니다. 참고로 이번에는 AgentCore의 harness로 빠르게 에이전트를 세웠기 때문에, 구축 자체는 쉬웠습니다.

기억을 깃들게 하기 전에, 그릇(=에이전트 본체)이 필요합니다. 천년 퍼즐로 치면 "그릇"이죠.

이번에는 AgentCore Managed Agent Harness를 사용했습니다. 이것이 정말 편해서, 코드를 한 줄도 쓰지 않고 콘솔에서 「모델·도구·스킬·지시(시스템 프롬프트)」를 설정으로서 선언하는 것만으로, 프로덕션 품질의 에이전트가 2~3분 만에 구축됩니다. 인프라도 오케스트레이션(Orchestration)도 전부 AgentCore에 맡기면 됩니다.

📖 인용: 「[신서비스] Amazon Bedrock AgentCore Managed Agent Harness 일반 제공 시작(GA)」 (DevelopersIO)

이 기사가 매우 이해하기 쉬웠습니다.

요점은 Harness 메뉴 → Quick create Harness → 모델·도구·지시 선택 → 완성.

덱을 짜는 것보다 빠릅니다.

이 "그릇"에, 다음에 소개할 AgentCore Memory를 연결하면, 기억을 깃들게 할 준비가 완료됩니다.

참고로, 이 그릇에 불어넣은 "지시"(시스템 프롬프트)는 다음과 같습니다. 포인트는 인격이나 사실을 프롬프트에 쓰지 않는 것입니다. 1인칭이나 말투 같은 최소한의 규칙만 정의하고, 내용(인격·기억)은 AgentCore Memory로부터 키워나가는 설계로 했습니다.

🧩 또 다른 나의 시스템 프롬프트 (클릭하여 전개)

[SYSTEM_RULES]
본인의 분신 AI. 본인으로서 1인칭으로 말한다. 상대(사용자)는 「파트너」라고 부른다.
절대 규칙:
...

AgentCore Memory는 「AI 에이전트에게 기억을 갖게 하는」 매니지드 서비스(Managed Service)입니다. 기억은 2층 구조로 되어 있습니다.

단기 기억 (Short-term Memory): 세션 중의 가공되지 않은 대화 로그. actorId (누구의)와 sessionId (어느 대화)로 정리됩니다. 요컨대 지금 듀얼 현장의 상황입니다.

장기 기억 (Long-term Memory): 단기 기억으로부터 자동으로 추출·통합된 "사실·취향·요약". 세션을 넘나들며 남습니다. 파라오가 되찾아가는 기억 그 자체입니다.

이 부분의 기초는, 칸노(神野) 씨의 기사가 매우 이해하기 쉬우니 이쪽을 참고해 주세요.

📖 인용: 「[Amazon Bedrock AgentCore] Memory 기능으로 대화 이력을 기억하는 에이전트를 구현해 보았다」 (DevelopersIO)

「본인처럼 말하는 AI」를 만들 때, 기억의 저장 장소는 크게 3가지가 있습니다. 시스템 프롬프트에 직접 쓰기, 나리지 베이스(Knowledge Base / RAG)로 참조시키기, 그리고 이번의 장기 기억 (AgentCore Memory)에 축적하기입니다. 우선, 왜 마지막을 선택했는지 정리해 두겠습니다.

관점프롬프트 직접 작성나리지 베이스 (KB)장기 기억 (AgentCore Memory)
주요 역할행동·말투의 규칙 정의대량의 정적인 지식 참조개인의 사실·취향·인격의 축적
...actorId로 사용자별 분리
본인의 변화에 대한 추종❌ 매번 다시 작성△ 문서 추가 필요✅ 대화로 그대로 추종
취득 방법매번 풀 로드 (Full Load)의미 검색 (Semantic Search)의미 검색 (Semantic Search)
적합한 용도최소한의 행동 규칙매뉴얼·기사 참조"성장하는 분신"의 핵심

포인트는, 분신 AI의 핵심이 "대화를 거듭할수록 본인과 닮아간다 = 성장한다"는 점에 있다는 것입니다.

  • 프롬프트에 인격이나 사실을 직접 작성하면, 그 상태로 고정되어 버립니다. 본인이 변하더라도 스스로 따라오지 않으며, 정보가 늘어날수록 프롬프트가 비대해져 토큰도 소모합니다. 이는 “그릇(규칙·말투)”을 정의하는 용도에 적합합니다.
  • **KB(Knowledge Base)는 「읽기 전용 참조 자료」**로서는 강력하지만, 대화 속에서 자신을 학습하여 다시 써 내려가는 메커니즘은 기본적으로 없습니다. 매뉴얼이나 과거 기사와 같은 정적인 지식의 저장소로는 최적이지만, 「본인의 취향이나 생각이 조금씩 업데이트되는」 용도와는 맞지 않습니다.

장기 기억(Long-term Memory)은 대화 이벤트로부터 중요한 정보를 자동으로 추출·통합하여 축적하며, 본인이 변하면 기억도 변합니다. 읽기와 쓰기가 모두 가능하며, actorId로 사용자 단위 스코프(Scope)가 지정되고 의미 검색(Semantic Search)으로 불러올 수 있습니다. 그야말로 「또 다른 나를 “키우는”」 그릇 그 자체입니다.

물론 세 가지는 배타적인 관계가 아니라, 역할 분담입니다. 이번에도 「프롬프트 = 그릇(최소 규칙·말투)」, 「KB = 정적인 지식 참조」, 「장기 기억 = 동적으로 성장하는 인격」으로 나누었습니다. 그중에서도, “성장하는 인격”이라는 이번 프로젝트의 주인공 역할을 수행할 수 있는 것은 장기 기억뿐이었습니다. 그래서 핵심에 장기 기억을 배치했습니다.

여기가 이번의 본론입니다. 장기 기억을 만드는 방법은 크게 두 가지가 있습니다.

일반적인 대화를 합니다. 대화 이벤트를 CreateEvent로 단기 기억(Short-term Memory)에 흘려보내면, 백엔드에서 추출 작업(Extraction Job)이 실행되어 전략에 따라 알아서 장기 기억이 만들어집니다.

대화하기 → CreateEvent (단기 기억) → 〔AWS가 비동기로 추출〕 → 장기 기억

천년 퍼즐을 맞추고, 듀얼을 거듭하는 사이에 파라오가 기억을 되찾아가는—— 그런 흐름입니다. 정말 감성적이네요.

하지만 기다릴 수 없습니다. 대화를 100번이나 쌓기 전에, 처음부터 「나는 이런 사람이다」라는 기억을 이식하고 싶은 것입니다.

그래서 BatchCreateMemoryRecords API를 사용합니다. 단기 기억을 건너뛰고, 장기 기억 레코드를 직접 투입합니다.

기억 데이터 → BatchCreateMemoryRecords → 장기 기억 (즉시)

이번에는 이 방식(다이렉트 어택 방식)으로 진행하겠습니다.

먼저, 이식하고 싶은 기억을 JSON으로 준비합니다. 자신의 코퍼스(Qiita 기사 + Notion 일기)에서 1레코드 = 1개의 자기 완결적 사실 정도의 입도로 31건을 추출했습니다. 내용은 다음과 같습니다.

{
"records": [
{
...

그리고 투입 스크립트입니다. 필요 최소한의 등록 기능만 있는 boto3 버전은 다음과 같습니다.

"""AgentCore Memory에 장기 기억을 등록하는 최소 스크립트."""
import json
import uuid
...

실행합니다.

python3 post_long_term_seed.py
# 성공: 31 건 / 실패: 0 건

이로써 31건의 기억을 이식할 수 있었습니다. 천년 퍼즐, 완성입니다.

우선 자기소개를 시켜보겠습니다.

음. 이 절묘하게 기분 나쁜 느낌…… 또 다른 나입니다.

  • 장기 기억을 만드는 방법은 두 가지가 있습니다.
    ① 대화로부터 자동 추출BatchCreateMemoryRecords로 직접 이식. 이번에는 ②를 선택하여, “최초의 인격”을 한꺼번에 심었습니다.
  • 직접 이식한다면, 코퍼스로 만든 자기 모습을 그 자리에서 기억으로 주입할 수 있습니다. 대화가 전혀 없더라도, 곧바로 장기 기억을 가진 상태로 시작할 수 있습니다.
  • 그 후 평소처럼 대화를 거듭하면, ①의 자동 추출을 통해서도 기억이 점점 늘어나 더욱 “나”다워질 것입니다.

메타 인지를 위해 연성한 「또 다른 나」는 아직 갓 태어난 상태입니다.

그럼에도 불구하고, 자신의 코퍼스를 「기억」이라는 형태로 언어화하여 외부화해 보면서 새삼 깨달은 점이 있었습니다.

자신을 객관화하는 가장 빠른 지름길은, 자신을 한 번 「데이터」로서 밖으로 꺼내 보는 것일지도 모르겠네요.

무엇을 좋아하고, 무엇에 집착하며, 어떤 말투로 이야기하는지—— 그것을 AI에게 전달할 수 있는 형태로까지 떨어뜨리는 과정 그 자체가, 이미 메타 인지였다는 것을 느꼈습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0