supermemory를 Vercel AI SDK 기반 에이전트에 연결하면 매 요청마다 초기화되는 ToolLoopAgent나 generateText 루프에 사용자 기억, 프로필, 검색 컨텍스트를 추가할 수 있다. 핵심은 모델 호출을 갈아엎는 것이 아니라 Supermemory 도구를 AI SDK tools 목록에 주입하고, 호출 전후로 관련 기억을 읽고 쓰게 만드는 것이다.
왜 AI SDK에 별도 메모리가 필요한가
AI SDK는 모델 호출, 스트리밍, 툴 호출 오케스트레이션을 잘 처리하지만 세션이 끝난 뒤 사용자의 선호·이전 작업·미해결 이슈를 자동으로 유지하지 않는다. 단순 벡터 DB를 붙이면 비슷한 텍스트 청크는 찾을 수 있지만, 사용자가 누구인지와 시간에 따라 변한 사실을 구조적으로 관리하기 어렵다.
Supermemory는 이 빈틈을 다음 기능으로 채운다.
| 기능 | AI SDK에서 해결하는 문제 |
|---|---|
| 메모리 그래프 | 여러 세션과 툴 루프에 걸친 관계와 변경 사항 유지 |
| 사용자 프로필 | 매 요청마다 수동으로 시스템 프롬프트에 선호도를 붙이는 작업 제거 |
| 하이브리드 검색 | 벡터 검색과 키워드 검색, 재랭킹을 결합해 관련 컨텍스트 주입 |
| 멀티모달 추출 | 문서·이미지·영상·코드에서 기억 후보를 추출 |
설치
npm i supermemoryAPI 키는 Supermemory 콘솔에서 발급한 뒤 환경 변수로 둔다.
export SUPERMEMORY_API_KEY="..."AI SDK 도구로 주입하기
Supermemory의 AI SDK 통합은 @supermemory/tools/ai-sdk의 supermemoryTools를 통해 이뤄진다.
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { supermemoryTools } from "@supermemory/tools/ai-sdk";
const result = await generateText({
model: openai("gpt-4o-mini"),
prompt: "지난번에 내가 진행하던 리팩터링 다음 단계가 뭐였지?",
tools: supermemoryTools({
apiKey: process.env.SUPERMEMORY_API_KEY!,
}),
});이 방식은 모델 제공자와 강하게 결합되지 않는다. AI SDK가 지원하는 모델이라면 동일한 툴 인터페이스로 메모리를 붙일 수 있다.
ToolLoopAgent에서의 패턴
장기 실행 에이전트에서는 대화 루프가 여러 툴 호출을 거친다. 이때 Supermemory는 두 지점에 들어간다.
- 생성 전: 현재 사용자·프로젝트와 관련된 기억을 검색해 컨텍스트로 주입한다.
- 생성 후: 새로 확인된 사실, 결정, 선호도, 작업 결과를 기억으로 저장한다.
이 패턴은 long-running-agents의 상태 지속성 문제와도 연결된다. 단기 세션 상태는 ADK·서버 세션이 들고, 사용자의 장기 취향과 프로젝트 맥락은 Supermemory가 들게 나누면 컨텍스트 창을 덜 오염시킨다.
운영 시 주의점
- 기억 범위: 사용자, 조직, 프로젝트 단위를 명확히 나누어 다른 고객의 기억이 섞이지 않게 한다.
- 삭제 정책: 사용자가 “기억하지 말라”고 한 내용은 즉시 삭제 가능한 경로를 둔다.
- 민감정보: 개인정보·비밀키·계약 정보는 pii-proxy 같은 프록시나 가드레일을 먼저 통과시킨다.
- 평가: 단순 recall@k뿐 아니라 잘못된 기억을 주입했을 때 에이전트가 어떻게 행동하는지 회귀 테스트한다.
누가 쓰면 좋은가
AI SDK로 고객지원 봇, 개인 비서, 코딩 보조 에이전트, 장기 프로젝트 에이전트를 만드는 팀에 적합하다. 반대로 한 번 묻고 끝나는 단발 Q&A나 익명 트래픽 중심 서비스라면 메모리 레이어보다 비용·지연 최적화가 먼저다.
참고 자료
- Supermemory with AI SDK Guide — Supermemory Blog (2026-04)
- Supermemory — Supermemory 공식 사이트