TencentDB-Agent-Memory
요약
Tencent에서 공개한 TencentDB-Agent-Memory는 에이전트의 반복 작업을 줄이기 위한 메모리 관리 솔루션입니다. 대화, 기술, 문서를 자산화하여 에이전트 간 공유 및 재사용이 가능하도록 설계되었습니다.
핵심 포인트
- 에이전트의 반복적인 컨텍스트 설명을 방지하여 효율성 증대
- 대화 메모리를 계층별(L0~L3)로 정제하여 관리
- 프레임워크에 종속되지 않는 이식성 있는 메모리 자산 제공
- 기존 문서와 코드를 위키 및 코드 그래프로 자동 변환
최신 정보: Team Memory Beta는 빠르게 진화하고 있습니다 — 지금 설치하여 몇 분 안에 탐색을 시작해 보세요.
memoryhub_demo.mov
세 가지 서비스(memory-core + memory-hub + proxy)를 한 번에 시작하세요:
git clone https://github.com/Tencent/TencentDB-Agent-Memory.git
cd TencentDB-Agent-Memory/deploy/global-images
cp .env.example .env
...
패널 열기: http://localhost:8125.
전체 설치 문서(단독 Memory Hub 배포, Proxy + Claude Code 사용법, 중지 및 정리, 포트 참조 등)는 INSTALL.md (중국어: INSTALL_CN.md)에서 확인할 수 있습니다.
이미 이전 버전(v1.x / v0.x)을 사용 중이며 기존 데이터를 v2.0.0+로 가져오고 싶다면, 마이그레이션 (Migration) 도구를 제공합니다:
전체 사용법 및 플래그(flags)는 **Data Migration Tool (v2 → v3)**를 참조하세요. 신규 설치 시에는 이 단계를 건너뛸 수 있습니다.
우리는 실질적인 질문에서 시작했습니다: 에이전트 (Agents)를 사용할 때 반복적인 작업을 어떻게 줄일 수 있을까?
프로젝트 컨텍스트 (Context)가 이미 설명되었다면, 새로운 세션에서 이를 반복할 필요가 없어야 합니다. 문서가 이미 읽혔다면, 모든 에이전트가 매번 첫 페이지부터 다시 시작할 필요는 없습니다. 이미 작동하는 워크플로 (Workflow)를 다음번에 다시 발견할 필요도 없어야 합니다.
여기서 메모리 (Memory)는 단순히 "대화를 기억하는 것" 이상의 의미를 갖습니다. 다음 에이전트가 바퀴를 다시 발명하는(reinventing the wheel) 일을 피할 수 있도록 돕는 모든 정보는 저장되고, 조직되며, 재사용되어야 합니다.
기존 정보 → 재사용 가능한 메모리 자산 (Reusable memory assets) → 더 적은 턴 (Fewer turns) → 더 적은 재작업 (Less rework) → 더 안정적인 결과 및 더 높은 효율성
에이전트 팀을 위한 Memory Hub는 전체 경험 라이프사이클 (Experience lifecycle)의 루프를 완성합니다: 작업이 자산을 생성하고, 자산이 팀 전체에 순환하며, 새로운 구성원이 첫날부터 팀의 세이브 파일을 불러올 수 있게 합니다.
자동 자산 추출 (Automatic asset extraction): 대화와 작업으로부터 채팅 메모리 (Chat Memory) 및 기술 (Skills)을 추출하고, 문서와 코드를 위키 (Wiki) 및 코드 그래프 (CodeGraph)로 변환합니다. 그 후 이를 일관되게 관리, 검토 및 라우팅합니다.
이식성 및 멀티 에이전트 호환성 (Portable & multi-Agent compatible): 메모리 자산은 에이전트 프레임워크 (Agent frameworks)로부터 분리되어 있습니다. 따라서 프레임워크 간 이동이 가능하며, 여러 에이전트 및 팀 구성원이 공유하고 유지 관리할 수 있습니다.
콜드 스타트 친화적 (Cold-start friendly): 기존 문서, 코드베이스 (codebases), 에이전트 대화 세션을 가져올 수 있습니다. 새로운 에이전트 팀은 처음부터 배우는 대신 기존의 경험으로부터 시작할 수 있습니다.
**채팅 메모리 (Chat Memory)**는 선호도, 사실, 결정 사항 및 상호작용 이력을 유지합니다.
- 각 에이전트는 생성될 때 자동으로 자신만의 메모리를 갖게 됩니다. 따라서 다음에 다시 자신을 소개할 필요가 없습니다.
- L0 대화 (Conversation) → L1 원자 (Atom) → L2 시나리오 (Scenario) → L3 페르소나 (Persona) — 가공되지 않은 대화는 계층별로 정제됩니다.
"기존 인증 모듈을 리팩토링하지 마세요 — 모바일에서 여전히 사용 중입니다." — 이처럼 비용이 많이 드는 문맥 (Context)을 사람이 매번 반복해서 말해야 하는 것에 의존해서는 안 됩니다.
- 복잡한 작업을 완료한 후, 에이전트는 대화와 도구 호출 (tool calls)로부터 재사용 가능한 기술 (Skills)을 추출 및 관리할 수 있으며, 필요할 때 지정된 에이전트의 문맥 (context)으로 가져올 수 있습니다.
- 기술 (Skill)은 단순한 프롬프트 조각이 아닙니다. 버전, 리소스 파일, 트리거 경계 (trigger boundaries), 실행 단계 및 검증 규칙을 가집니다.
- 개인 기술 (Personal Skills)은 기본적으로 비공개이며, 검토를 거친 후 팀과 공유하거나 다른 에이전트에게 할당할 수 있습니다.
문제 해결 (Troubleshooting), 코드 리뷰 (code review), 릴리스 체크리스트 (release checklists) — 한 번 배우면 팀 전체가 사용할 수 있습니다.
**위키 (Wiki)**는 제품 문서, 설계 사양서 (design specs), 운영 런북 (ops runbooks)을 링크 그래프 (link graph)가 포함된 구조화된 페이지로 변환합니다. (Karpathy의 LLM 지식 베이스에서 영감을 받았습니다.)
**코드 그래프 (CodeGraph)**는 코드 심볼 (symbols), 파일, 호출 관계 (call relationships) 및 영향 경로 (impact paths)를 인덱싱합니다.
- 에이전트는 코드를 수정하기 전에 검색, 읽기, 호출자/피호출자 (callers/callees) 조사 및 영향 분석 (impact analysis)을 수행할 수 있습니다.
Wiki는 Agent가 업무를 시작하기 전에 모든 파일 목록을 읽어야 하는 상황을 방지합니다. CodeGraph는 단순히 "코드가 여기에 있다"라고 알려주는 것에 그치지 않고, "이것을 변경하면 저것에 영향을 줄 수 있다"라고 알려줍니다.
- Memory Hub에서 팀과 Agent를 생성합니다; 메모리 자산(memory assets)을 검토, 공유 및 장착합니다.
- 소유권(ownership), 버전(versions), 상태(status), 가시성(visibility), 사용 횟수(usage counts) 및 Agent 바인딩(bindings)을 한 곳에서 관리합니다.
private(비공개): 소유자(Owner)에게만 엄격히 귀속됩니다;team(팀): 모든 팀 멤버에게 보입니다;restricted(제한됨): 사용자(User) / 역할(Role) / Agent ACL을 통해 정밀한 액세스 권한을 부여합니다.
대부분의 Agent가 수행하는 첫 번째 작업은 프로젝트를 다시 학습하는 것입니다. TencentDB Agent Memory는 여러분이 이미 지불한 학습 비용을 세이브 파일(save file)로 전환합니다.
구체적으로, 다음과 같은 기존 자산들을 패널에서 직접 가져오고 자동으로 처리할 수 있습니다:
Codebases (코드베이스): 기존 리포지토리(repositories)를 가져옵니다 — CodeGraph가 심볼(symbols), 파일, 호출 관계(call relationships) 및 영향 경로(impact paths)를 자동으로 인덱싱합니다. Documents & files (문서 및 파일): 관련 문서와 파일을 가져옵니다 — Wiki가 링크 그래프(link graph)가 포함된 구조화된 페이지를 자동으로 생성합니다. Conversation sessions (대화 세션): 과거의 Agent 대화 세션을 가져옵니다 — **Skills (기술) 및 Chat Memory (채팅 메모리)**가 재사용 가능한 자산으로 자동 추출됩니다.
매번 Agent를 재학습시키지 마세요. 세이브 파일을 전달하세요.
Memory Hub를 열고 팀을 생성합니다:
Tiny but Serious Inc.
├── 👤 You · 목표 설정 / 의사 결정
├── 🔭 Scout · 조사 / 기회 발굴
...
여러분은 서로 연결되지 않은 네 개의 채팅 창을 여는 것이 아닙니다. 팀의 축적된 경험을 상속받을 수 있는 서로 다른 역할을 가진 스쿼드(squad)를 구성하는 것입니다.
🔭 Scout
├── User interview Chat Memory (사용자 인터뷰 채팅 메모리)
├── Market research Wiki (시장 조사 Wiki)
...
역할은 다르고, 장비(loadouts)도 다릅니다. 노이즈는 줄이세요 — 각 Agent에게 업무를 완수하는 데 실제로 필요한 메모리 자산만을 부여하십시오.
회사는 작을 수 있습니다. 하지만 경험은 영원히 복리로 쌓일 수 있습니다.
RAG는 "무엇을 찾을 수 있는가?"에 답합니다. Team Memory는 "누가 그것을 사용할 수 있는지, 어떤 버전이 유효한지, 그리고 어떤 Agent가 그것을 받아야 하는지"에 대해서도 답합니다.
| Chat History | Standard RAG | TencentDB Agent Memory |
|---|---|---|
| 세션 간 사용자 이해 (Cross-session user understanding) | △ | △ |
| ... | ||
| Play Style | Hub에서 수행하는 작업 | |
| --- | --- | |
| Team Up | 팀을 생성하고, 사람과 Agent를 추가하며, 공유 범위를 정의합니다 | |
| Asset Library | Chat Memory, Skills, Wiki, CodeGraph를 탐색, 검색, 검토 및 관리합니다 | |
| Agent Loadout | 서로 다른 메모리 자산(assets)을 서로 다른 Agent에 바인딩(bind)합니다; 우선순위 및 사용 모드를 조정합니다 | |
| Knowledge Workshop | Wiki 및 CodeGraph를 구축합니다; 처리 상태 및 자산 메타데이터(metadata)를 모니터링합니다 | |
| Access Control | 개인(private), 팀(team), ACL 기반 액세스 간 전환이 가능합니다; 필요 시 공유를 취소합니다 |
자산을 열 때 중요한 것은 단순히 "무엇을 말하고 있는가"뿐만 아니라, "어디에서 왔는지, 어떤 버전인지, 누구에게 할당되었는지, 그리고 최근에 사용되었는지"입니다.
메모리는 Agent 루프(loop)를 실행하는 것이 아니라, 다음 반복(iteration)이 이전의 결과를 상속받도록 보장합니다: 가치 있는 상호작용은 Chat Memory에 남고, 검증된 워크플로우는 Skills로 추출되며, 문서/코드 변경 사항은 Wiki 인제스트(ingest) 및 CodeGraph 동기화를 통해 업데이트됩니다.
메모리가 없다면, 루프는 그저 더 빠르게 반복될 뿐일 수 있습니다. 상속된 메모리가 있다면, 각 반복은 이전보다 더 나아질 기회를 갖게 됩니다.
새로운 Chat Memory와 Skills는 기본적으로 비공개(private)입니다. 공유는 명시적인 작업이며, 기본적으로 유출되지 않습니다.
| 가시성 (Visibility) | 의미 (Semantics) |
|---|---|
private | 소유자(Owner)만 읽을 수 있습니다 — 팀 관리자(admin)조차도 불가 |
team | 팀 구성원이 읽을 수 있습니다; 소유자/관리자가 관리할 수 있습니다 |
restricted | 사용자(User) / 역할(Role) / Agent ACL을 통한 정밀한 액세스 |
agent | 동일한 팀 내의 특정 Agent에게 타겟팅하여 장착하기 위함 |
"Release Skill"을 Release Agent에 할당할 수 있고, "Architecture Wiki"를 모든 개발 Agent에 할당할 수 있으며, CodeGraph를 Coder와 Reviewer에게 할당할 수 있습니다.
TencentDB Agent Memory는 "모든 것을 저장하는 것"을 목표로 하지 않습니다. 이는 세 가지 문제를 해결합니다: 무엇이 보관할 가치가 있는지, 누가 그것을 사용할 수 있는지, 그리고 다음번에 올바른 것을 가져오면서도 어떻게 더 적게 가져올(retrieve) 것인지.
대화는 먼저 L0로 저장된 다음, 비동기 파이프라인 (async pipeline)을 통해 여러 수준의 세분화 단계로 정제됩니다:
| 계층 (Layer) | 저장 내용 | 주요 용도 |
|---|---|---|
| L0 대화 (Conversation) | 전체 문맥을 포함한 원시 대화 (Raw conversations) | 정확한 문구, 타임스탬프 및 출처 확인 |
| L1 원자 (Atom) | 대화에서 추출된 사실 (Facts), 선호도 (preferences), 제약 사항 (constraints) 및 이벤트 | |
| 실행 가능한 정보의 정밀한 회상 (Precise recall) | ||
| L2 시나리오 (Scenario) | 프로젝트 또는 시나리오를 중심으로 구성된 지식 블록 (Knowledge blocks) | 작업 문맥 (working context)의 신속한 복구 |
| L3 핵심 / 페르소나 (Core / Persona) | 장기 프로필 (Long-term profiles), 안정적인 패턴 및 고수준 인지 (high-level cognition) | 에이전트 (Agents)가 사용자 및 팀의 문맥에 빠르게 진입하도록 지원 |
생성 (generation)과 검색 (retrieval) 모두 계층화되어 있습니다. 일반적으로 L2/L3가 빠른 문맥 부트스트랩 (context bootstrap)을 제공하며, 특정 사실이 필요한 경우 BM25 + 벡터 검색 (vector retrieval) + RRF가 L1/L0로 폴백 (fall back)합니다. 결과는 메모리가 컨텍스트 윈도우 (context window)를 압도하는 것을 방지하기 위해 아이템 개수, 글자 수 예산 및 타임아웃 제한에 의해 추가로 제한됩니다.
채팅 메모리 (Chat Memory), 기술 (Skills), 위키 (Wiki), 그리고 코드그래프 (CodeGraph)는 모두 메모리 자산 (Memory Assets)으로 균일하게 등록됩니다. 메모리 허브 (Memory Hub)는 고정 바인딩 (Fixed Binding) + ACL을 사용하여 특정 에이전트가 사용할 수 있는 자산을 결정합니다. 먼저 팀, 사용자, 에이전트 및 가시성 (visibility)에 따라 권한 범위를 좁힌 다음, 현재 쿼리 (query)를 기반으로 검색합니다.
이를 통해 팀은 모든 개인 정보를 노출하지 않고도 경험을 공유할 수 있으며, 에이전트나 프레임워크를 전환할 때 재학습 (retraining)이 아닌 재장착 (re-equipping)만 필요합니다.
문서는 링크 그래프 드릴다운 (link-graph drill-down)을 지원하는 검색 가능한 위키 페이지로 구성되며, 코드베이스는 파일, 심볼 (symbols) 및 호출 관계 (call relationships)를 포함하는 코드그래프 자산으로 인덱싱됩니다. 에이전트는 먼저 /v3/tools/list를 통해 기능을 발견한 다음, /v3/tools/call을 사용하여 관련 페이지, 소스 코드 또는 영향 경로 (impact paths)를 읽습니다.
이로 인해 문서와 코드 또한 메모리의 일부가 되지만, 이들은 진정으로 필요할 때만 문맥에 진입하는 사용 가능한 도구로 남습니다.
| 벤치마크 (Benchmark) | TencentDB Agent Memory 미사용 시 | 사용 시 | 상대적 개선율 |
|---|---|---|---|
| PersonaMem | 48% | 76% | +59% |
PersonaMem은 에이전트 (Agent)가 장기적인 상호작용 이후에도 사용자 정보를 정확하게 이해하고 적용할 수 있는지 테스트합니다.
-
Wiki 및 CodeGraph는 비동기적으로 구축됩니다.
ready상태에 도달하기 전까지 약간의 처리 시간이 소요될 수 있습니다. -
CodeGraph는 현재 공개 HTTPS 저장소 (public HTTPS repositories)를 우선적으로 지원합니다. 프라이빗 저장소 (private repositories) 및 SSH 자격 증명 (SSH credentials) 지원은 아직 개선 중입니다.
-
Hub는 수동 자산 바인딩 (manual asset binding)을 지원합니다. 완전 자동화된 메모리 라우팅 (memory routing)은 아직 반복 개선 단계에 있습니다.
-
TencentDB Agent Memory는 현재 OpenClaw, Hermes 및 SDK 통합을 지원합니다. 더 광범위한 프레임워크 간 마이그레이션 (cross-framework migration)은 로드맵에 포함되어 있습니다.
-
전체 설치 가이드 (Memory Core + Hub + Proxy 원클릭 배포)
-
데이터 마이그레이션 도구 (v2 → v3) (이전 버전을 사용 중이며 기존 데이터를 마이그레이션하려는 경우)
-
Knowledge OpenAPI
-
기여 가이드 (Contributing Guide)
에이전트 메모리 (Agent Memory)는 아직 확립된 표준이 없습니다. 버그 리포트, 문서, 벤치마크 (benchmarks), 새로운 프레임워크 어댑터 (framework adapters), 그리고 더 창의적인 Memory Hub 활용 사례를 모두 환영합니다.
TencentDB Agent Memory는 오픈 소스 커뮤니티의 토대 위에 서 있습니다:
CodeGraph— 우리의 CodeGraph 자산 모듈은 이 프로젝트의 코드를 사용합니다. 사전 인덱싱된 코드 그래프 (pre-indexed code graph) 설계는 우리 구현의 기초가 되었습니다. Hermes Agent (Nous Research) — 우리의 Skill 자산 관리는 Hermes Agent의 Skill 관련 코드 일부를 사용하며 이를 기반으로 추가적인 최적화를 구축했습니다. Andrej Karpathy의 "LLM Wiki" — 문서를 LLM이 관리하며 점진적으로 성장하는 지식 산출물 (knowledge artifact)로 취급한다는 아이디어는 우리의 Wiki 레이어를 구축하고 최신 상태로 유지하는 방식에 직접적인 영감을 주었습니다.
이 프로젝트들의 저자와 기여자들에게 감사를 표합니다.
버그 리포트, 기능 제안, 문서 수정, 벤치마크 재현, 생태계 통합 또는 풀 리퀘스트 (pull requests) 등 모든 종류의 기여를 환영합니다. 에이전트 메모리는 완성된 단계가 아니며, 우리는 커뮤니티와 함께 이를 구축해 나가기를 희망합니다.
- 🐞
버그를 발견했거나 질문이 있으신가요? GitHub Issues에 이슈를 생성해 주세요 — 24시간 이내에 답변해 드립니다. - 💡
공유하고 싶은 아이디어가 있나요? GitHub Discussions에서 스레드를 시작해 주세요. - 🛠️
코드로 기여하고 싶으신가요? 먼저 CONTRIBUTING.md를 읽어주세요. - 💬
저희와 대화하고 싶으신가요? Discord 커뮤니티에 참여하여 핵심 개발자들과 직접 이야기해 보세요.
팀이 걸어온 길이 다음 에이전트(Agent)의 출발선이 되게 해주세요.
💡 저희와 함께 구축해 나가고 있는 다음 기여자분들께 감사드립니다 — 여러분 덕분에 TencentDB Agent Memory가 더 나아지고 있습니다.
TencentDB Agent Memory가 도움이 되었다면, 프로젝트에 스타(star)를 눌러주세요. 제안 사항이 있다면 언제든지 토론을 위해 이슈를 생성해 주세요. |
|
MIT © TencentDB Agent Memory Team
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기