- Published on
TencentDB Agent Memory: 에이전트 메모리는 벡터 DB가 아니라 운영 계층이다
- Authors

- Name
- Kyunghyun Park
- @devkhpark
키워드: AI agent memory · layered memory · TencentDB Agent Memory · OpenClaw · Hermes · SQLite vector search
에이전트 메모리를 “대화 기록을 벡터 DB에 넣고 검색하는 기능”으로만 보면 금방 한계가 온다. 기억은 많아지지만 왜 그 기억이 다시 나왔는지 설명하기 어렵고, 잘못된 기억을 고치기도 어렵고, 장기 세션에서는 오히려 컨텍스트를 더럽히는 비용이 커진다.
TencentCloud/TencentDB-Agent-Memory가 흥미로운 이유는 여기에 있다. 이 프로젝트는 메모리를 저장소 하나로 보지 않고, 원본 증거에서 페르소나까지 올라가는 계층형 운영 시스템으로 본다. README는 이를 “symbolic short-term memory + layered long-term memory”라고 부르고, OpenClaw 연동 기준으로 토큰 사용량을 최대 61.38% 줄이고 PersonaMem 정확도를 48%에서 76%로 올렸다고 제시한다.

이 글의 결론은 단순하다. 에이전트 메모리는 벡터 DB 기능이 아니라 운영 계층이다. 어떤 정보를 남길지, 어떤 추상화로 올릴지, 언제 다시 불러올지, 근거를 어떻게 추적할지까지 설계해야 한다. TencentDB Agent Memory는 그 방향을 꽤 노골적으로 보여주는 저장소다.
기준 시점: 이 글은 2026-07-09에 확인한
TencentCloud/TencentDB-Agent-MemoryREADME, GitHub API 메타데이터,openclaw.plugin.json,package.json, CHANGELOG, npm registry 정보를 바탕으로 작성했다.
왜 지금 에이전트 메모리인가: “다시 설명”이 제품 병목이 된다
LLM 에이전트의 초기 데모는 보통 한 번의 작업을 잘 끝내는 데 집중한다. 하지만 실제 팀에서 문제가 되는 지점은 다르다.
- 매번 같은 프로젝트 배경을 다시 설명해야 한다.
- 같은 코드베이스 규칙, 테스트 절차, 배포 금기사항을 반복해서 알려줘야 한다.
- 이전 세션에서 실패한 접근을 다음 세션의 에이전트가 또 반복한다.
- 사용자 선호와 팀 운영 규칙이 컨텍스트 창 안에서만 임시로 살아 있다가 사라진다.
TencentDB Agent Memory의 README는 이 문제를 꽤 정확히 짚는다. “Memory is not about hoarding everything in the AI — it is about sparing humans from having to repeat themselves.” 즉 기억의 목적은 모든 것을 쌓는 것이 아니라, 사람이 같은 설명을 반복하지 않게 만드는 것이다.
이 관점은 중요하다. 메모리를 무작정 많이 넣으면 에이전트가 똑똑해지는 게 아니라, 오래된 사실·애매한 요약·관련 없는 로그가 현재 판단을 방해하는 상태가 된다. 그래서 필요한 것은 저장량이 아니라 구조다.
핵심 설계: L0→L1→L2→L3로 기억을 올린다
TencentDB Agent Memory의 장기 기억 구조는 L0 Conversation, L1 Atom, L2 Scenario, L3 Persona로 설명된다.

이 구조를 한국 개발자 관점에서 풀면 다음과 같다.
| 계층 | 의미 | 실무 역할 |
|---|---|---|
| L0 Conversation | 원본 대화와 실행 흔적 | 나중에 근거를 확인할 수 있는 원본 증거 |
| L1 Atom | 원자 단위 기억 | 선호, 사실, 결정, 제약을 작은 단위로 추출 |
| L2 Scenario | 상황 블록 | 반복되는 업무 맥락과 해결 패턴을 묶음 |
| L3 Persona | 사용자/팀 프로필 | 평소 선호, 작업 방식, 장기 목표를 상위 정책처럼 사용 |
여기서 핵심은 L3가 L0를 대체하지 않는다는 점이다. 좋은 메모리 시스템은 원본을 요약으로 지워버리지 않는다. 상위 계층은 판단과 방향을 빠르게 주고, 하위 계층은 증거와 정밀도를 제공한다. README가 말하는 “top-layer symbol → mid-layer index → bottom-layer raw text”의 드릴다운 경로가 바로 이 구조다.
실무적으로는 이 차이가 크다. 예를 들어 에이전트가 “이 팀은 PR 전에 특정 테스트를 항상 돌린다”고 기억했다면, 운영자는 그 문장이 어느 대화·어느 실패·어느 커밋 맥락에서 나왔는지 확인할 수 있어야 한다. 그렇지 않으면 메모리는 생산성 도구가 아니라 설명 불가능한 정책 엔진이 된다.
단기 기억은 더 과감하다: 로그를 Mermaid 캔버스로 낮춘다
장기 기억만큼 중요한 것이 단기 작업 메모리다. 코딩 에이전트가 긴 작업을 하다 보면 검색 결과, 테스트 로그, 파일 diff, 에러 스택, 웹 문서, 도구 호출 결과가 순식간에 수십만 토큰으로 불어난다. 이걸 그대로 컨텍스트에 넣으면 모델은 더 많은 정보를 받는 것이 아니라 더 많은 소음을 받는다.
TencentDB Agent Memory는 이 문제를 “symbolic memory”로 접근한다. 전체 로그는 refs/*.md 같은 외부 파일로 오프로딩하고, 컨텍스트에는 Mermaid 스타일의 작은 상태 그래프만 남긴다. 그래프 노드에는 node_id가 있고, 에이전트는 필요할 때 그 ID로 원본 로그를 다시 찾아간다.

이 설계는 단순한 토큰 절약 팁이 아니다. 장기 작업 에이전트에서 필요한 것은 “모든 로그를 항상 기억하기”가 아니라 현재 상태를 작게 유지하되, 원본으로 돌아갈 길을 잃지 않는 것이다.
비유하면 이렇다.
- 컨텍스트 창에는 작업 지도만 올린다.
- 원본 로그와 산출물은 파일 시스템이나 DB에 둔다.
- 지도에는 필요한 좌표와 링크를 남긴다.
- 모델은 판단할 때 지도만 보고, 검증할 때 원본으로 내려간다.
이 방식은 검색 기반 RAG와도 다르다. RAG는 보통 질문이 들어오면 관련 문서를 찾는다. 반면 여기서는 작업 진행 자체가 구조화되고, 에이전트가 현재 작업 상태를 추적할 수 있는 작업 캔버스가 만들어진다. 긴 리팩터링, 디버깅, 리서치, 멀티파일 코드 수정 같은 작업에서는 이 차이가 꽤 크다.
숫자는 매력적이지만, 읽는 방식은 조심해야 한다
README의 성능 수치는 눈에 띈다.
- WideSearch: OpenClaw 성공률 33% → 플러그인 적용 50%, 토큰 221.31M → 85.64M
- SWE-bench: 58.4% → 64.2%, 토큰 3474.1M → 2375.4M
- AA-LCR: 44.0% → 47.5%, 토큰 112.0M → 77.3M
- PersonaMem: 48% → 76%
이 수치를 그대로 “모든 환경에서 성능이 오른다”로 읽으면 안 된다. 벤치마크는 프로젝트가 제시한 조건에서 측정된 것이고, 실제 효과는 작업 종류, 모델, 로그 길이, 팀 규칙, 저장 백엔드, recall 설정에 따라 달라진다.
다만 방향성은 설득력 있다. 장기 세션에서 에이전트가 실패하는 이유 중 하나는 모델 자체가 약해서가 아니라, 작업 상태를 잃고, 불필요한 로그를 너무 많이 읽고, 중요한 과거 결정을 다시 못 찾기 때문이다. 이 병목을 줄이면 같은 모델도 더 안정적으로 보일 수 있다.
제품화 포인트: 플러그인, 게이트웨이, 로컬 백엔드
저장소의 top-level 구조도 이 프로젝트의 성격을 보여준다. openclaw.plugin.json, SKILL.md, hermes-plugin/, docker/, src/, index.ts, package.json이 함께 있다. 즉 연구 데모라기보다 에이전트 런타임에 끼워 넣는 패키지에 가깝다.
package.json 기준 패키지 이름은 @tencentdb-agent-memory/memory-tencentdb이고, 설명은 “Four-layer local memory system plugin for OpenClaw”다. 현재 npm registry의 latest dist-tag는 1.0.0으로 잡혀 있고, GitHub의 package snapshot은 Node.js >=22.16.0, TypeScript, sqlite-vec, @node-rs/jieba, OpenAI 호환 AI SDK 의존성을 보여준다.
README의 설치 흐름도 꽤 구체적이다.
- OpenClaw에서는
openclaw plugins install @tencentdb-agent-memory/memory-tencentdb로 설치한다. - 기본값은 로컬
SQLite + sqlite-vec백엔드다. - Hermes에는 Docker로
:8420게이트웨이를 띄우거나, 기존 Hermes 설치에memory_tencentdbprovider로 붙이는 경로가 있다. - 에이전트 도구로는
tdai_memory_search,tdai_conversation_search가 노출된다. - Gateway 보안 옵션으로 Bearer API key와 CORS allow-list가 있다.
이건 중요한 신호다. 에이전트 메모리는 이제 “앱 내부 기능”으로만 들어가는 게 아니라, 에이전트 호스트가 공통으로 붙일 수 있는 런타임 사이드카가 되고 있다.
운영자가 봐야 할 체크리스트

한국의 개발팀이나 운영팀이 이런 메모리 계층을 도입한다면 기능보다 먼저 아래 질문을 봐야 한다.
1) 어떤 기억을 저장할 것인가
사용자 선호, 팀 SOP, 반복되는 실패 패턴, 프로젝트 구조 같은 것은 저장 가치가 있다. 반대로 일시적인 토큰, 민감한 개인 정보, 고객 데이터 원문, 보안 키 주변 로그는 함부로 저장하면 안 된다. 메모리는 곧 데이터 보관 시스템이다.
2) recall 예산을 어떻게 제한할 것인가
CHANGELOG의 0.3.6 항목은 recall.maxCharsPerMemory, recall.maxTotalRecallChars 같은 recall 컨텍스트 예산 제어를 언급한다. 이건 사소한 옵션이 아니다. 기억이 좋아질수록 더 많이 넣고 싶어지지만, 실제로는 현재 작업에 필요한 만큼만 주입해야 한다.
3) 벡터 검색만 믿을 것인가
openclaw.plugin.json은 recall 전략으로 keyword, embedding, hybrid를 둔다. README도 BM25 + vector + RRF 기반 hybrid retrieval을 말한다. 에이전트 메모리에서는 이 선택이 자연스럽다. 파일명, 함수명, 에러 코드, 티켓 번호 같은 정확한 문자열은 벡터 검색만으로 놓치기 쉽다.
4) 디버깅 가능한가
메모리 시스템에서 가장 나쁜 장애는 “왜 이 기억이 나왔는지 모르는 상태”다. TencentDB Agent Memory가 Markdown scenario, persona.md, Mermaid canvas, node_id, result_ref를 강조하는 이유도 여기에 있다. 메모리는 블랙박스 검색 결과가 아니라 감사 가능한 체인이어야 한다.
5) 게이트웨이를 어디에 노출할 것인가
README는 Hermes Gateway가 :8420에서 capture/search/recall HTTP endpoint를 노출한다고 설명하고, API key와 CORS allow-list를 옵션으로 둔다. 로컬 개발이면 괜찮아도, 네트워크에 붙는 순간 메모리 게이트웨이는 민감한 데이터면이다. 운영 환경에서는 loopback 바인딩, 인증, 로그 보관, 비밀값 분리까지 함께 봐야 한다.
기존 에이전트 메모리 글들과 무엇이 다른가
이 블로그에서도 이미 agentmemory, Hivemind, Zvec 같은 주제를 다뤘다. 이번 글의 차이는 특정 기능 하나가 아니라 메모리의 운영 구조에 있다.
agentmemory류의 포인트는 검색 recall과 코딩 에이전트의 과거 지식 재사용에 가깝다.- Hivemind류의 포인트는 팀 단위 공유 기억과 skill codification에 가깝다.
- Zvec류의 포인트는 벡터 검색을 애플리케이션 가까이 가져오는 배포 형태다.
- TencentDB Agent Memory의 포인트는 단기 로그 오프로딩, 장기 계층화, 게이트웨이/플러그인 배포, 추적 가능한 드릴다운을 한 설계 안에 묶는 것이다.
그래서 이 프로젝트를 “또 하나의 agent memory repo”로 보면 조금 아쉽다. 더 정확한 해석은 에이전트가 장기 작업을 수행할 때 필요한 상태관리 계층이다.
실무적 해석: 메모리는 모델 밖의 상태관리다
앞으로 에이전트 제품의 품질은 모델 선택만으로 결정되지 않는다. 같은 모델이라도 어떤 상태를 보존하고, 어떤 상태를 버리고, 어떤 기억을 다시 불러오는지에 따라 전혀 다른 제품이 된다.
개발자에게 필요한 판단은 세 가지다.
- 메모리 저장소를 먼저 고르지 말고 기억 수명주기를 먼저 정의하라. 원본, 추출, 시나리오, 프로필을 같은 테이블에 섞으면 금방 운영이 어려워진다.
- 요약은 삭제가 아니라 인덱스여야 한다. 상위 추상화가 원본으로 돌아갈 경로를 잃는 순간, 메모리는 검증 불가능해진다.
- recall은 기능이 아니라 정책이다. 무엇을 몇 개, 몇 글자, 어떤 우선순위로 넣을지 제한하지 않으면 메모리는 컨텍스트 오염원이 된다.
TencentDB Agent Memory가 완성형 표준이라는 뜻은 아니다. GitHub 메타데이터 기준 이슈가 많고, 저장소가 빠르게 변하고 있으며, OpenClaw/Hermes 생태계 의존성도 있다. 실제 도입 전에는 라이선스, 데이터 경로, 보안 설정, 장애 시 fallback, 팀 내부 PII 정책을 반드시 검토해야 한다.
하지만 방향은 선명하다. 장기 실행 에이전트는 결국 자기 상태를 관리해야 한다. 그리고 그 상태관리는 모델 내부가 아니라, 모델 바깥의 저장·검색·압축·감사 계층에서 일어난다.
결론: 에이전트 메모리의 경쟁은 “더 많이 기억하기”가 아니다
TencentDB Agent Memory가 보여주는 핵심은 “에이전트에게 기억을 붙였다”가 아니다. 더 중요한 메시지는 기억을 계층화하고, 압축하고, 다시 추적할 수 있게 만들었다는 점이다.
앞으로 에이전트 메모리 경쟁은 더 큰 벡터 DB를 붙이는 방향만으로 가지 않을 가능성이 높다. 오히려 좋은 시스템은 다음 질문에 답할 것이다.
- 이 기억은 어디서 왔는가?
- 지금 작업에 정말 필요한가?
- 오래된 기억과 충돌하지 않는가?
- 사람이 열어보고 고칠 수 있는가?
- 모델이 원본 증거로 다시 내려갈 수 있는가?
이 질문에 답하지 못하는 메모리는 편리한 데모는 될 수 있어도, 운영 가능한 제품 계층은 되기 어렵다. TencentDB Agent Memory는 그 차이를 잘 보여주는 최신 신호다.