
Mycelium: 멀티 에이전트 시스템을 위한 신뢰 기반 메모리 메시 (Trust-Aware Memory Mesh)
요약
Mycelium은 지식 그래프를 기반으로 멀티 에이전트 간 공유 메모리를 구축하는 TypeScript 프레임워크입니다. 에이전트 간의 정보 동기화, 출처 추적, LLM 기반 모순 탐지 기능을 통해 신뢰할 수 있는 메모리 연합을 구현합니다.
핵심 포인트
- 지식 그래프(Cognee)를 활용한 구조화된 메모리 저장
- 출처 추적 프로토콜을 통한 데이터 감사 가능성 확보
- LLM을 이용한 효율적인 에이전트 간 모순 탐지
- 에이전트 간 신뢰 기반의 정보 공유 및 동기화
문제점
오늘날의 AI 에이전트들은 점점 더 똑똑해지고 있지만, 근본적으로는 건망증을 앓고 있습니다.
고객 지원 에이전트와 대화하여 답변을 얻은 뒤, 다음 날 다시 돌아오면 — 에이전트는 백지 상태입니다. 심지어 지속성 메모리 (persistent memory) 시스템조차도 대개 단일 에이전트 경계 내에 사실을 저장합니다. 두 에이전트가 동일한 사실에 대해 서로 다른 의견을 가진다면 어떻게 될까요? 당신은 누구를 신뢰해야 할까요?
이것이 제가 해결하고자 하는 문제입니다: 어떻게 하면 내장된 모순 탐지 기능과 시간이 지남에 따라 진화하는 신뢰를 갖춘, 독립적인 에이전트 간의 공유 메모리를 구축할 수 있을까?
Mycelium을 소개합니다.
Mycelium이란 무엇인가
Mycelium은 지식 그래프 (knowledge graph)를 기반으로 지속적이고 공유된 메모리를 가진 AI 에이전트를 구축하기 위한 TypeScript 프레임워크입니다. 이를 메모리 연합 (memory federation)이라고 생각하십시오. 각 에이전트는 자신만의 데이터셋 (메모리)을 갖지만, 출처 (provenance)를 추적하고, 모순을 탐지하며, 신뢰를 구축하는 프로토콜을 통해 동료들과 사실을 동기화, 공유 및 조정할 수 있습니다.
이 이름은 자연에서 유래되었습니다. 균사체 (Mycelium) 네트워크는 개별 균류를 공유 정보망으로 연결합니다. 영양분, 경고, 신호가 지하의 실을 통해 유기체 사이를 흐릅니다. 이 프로젝트는 동일한 아이디어를 AI 에이전트에 적용합니다.
아키텍처
시스템은 네 가지 핵심 계층으로 구성됩니다:
1. 지식 그래프 메모리 (Cognee)
모든 에이전트는 Cognee 데이터셋을 래핑(wrap)합니다. 사실을 추가하면 Cognee는 다음을 수행합니다:
- 텍스트를 수집 (Ingests)
- LLM 파이프라인을 실행하여 엔티티 (entities)와 관계 (relationships)를 추출
- 임베디드된 Kuzu 그래프 데이터베이스에 저장
- 의미론적 검색 (semantic search)을 위해 ONNX 임베딩 (bge-small-en-v1.5) 생성
그 결과는 단순한 벡터 저장소 (vector store)가 아닌 구조화된 지식 그래프입니다. 에이전트는 단순한 유사도 매칭이 아니라, 사실을 회상하고, 관계를 탐색하며, 그래프 완성 (graph-completion) 답변을 얻을 수 있습니다.
2. 출처 추적 동기화 프로토콜 (Provenance-Tracked Sync Protocol)
에이전트 A가 에이전트 B와 사실을 공유할 때, 모든 사실은 저장되기 전에 출처 태그가 붙습니다:
__provenance__:{"sourceAgentId":"agent_a","factId":"f123","timestamp":1700000000000}
Flight AA1234 departs at 5:00 PM.
이 태그는 Cognee의 그래프 추출 (graph extraction) 과정을 거치는 왕복 과정(round-trips)에서도 유지됩니다. 사용자는 언제든지 사실(fact)을 그 출처로 추적할 수 있으며, 이는 의료나 금융과 같이 규제가 엄격한 도메인에서 감사 가능성 (auditability)을 확보하는 데 매우 중요합니다.
3. LLM 기반 모순 탐지 (LLM-Powered Contradiction Detection)
System: 당신은 모순 탐지기입니다. 두 개의 사실 목록이 주어지면,
서로 직접적으로 모순되는 쌍을 식별하십시오.
JSON으로 응답하십시오: { contradictions: [{ sIndex, tIndex, reason, confidence }] }
...
모든 쌍을 일일이 비교하는 대신 단 한 번의 LLM 호출로 해결합니다. 응답은 구조화된 JSON 형식이므로 파싱(parsing)의 모호함이 없습니다. 비용은 gpt-4o-mini 기준 실행당 약 $0.001입니다.
4. 신뢰 점수 산정 (Trust Scoring)
신뢰도는 0.5에서 시작하여 0에서 1 사이의 단순한 점수입니다:
| 이벤트 | 신뢰도 변화 |
|---|---|
| 자동 병합 (모순 없음) | +0.05 |
| ... |
모순에는 높은 가중치가 부여됩니다. 단 하나의 모순만 발생해도 현재 신뢰도와 관계없이 auto_merged 상태가 pending_review로 전환됩니다. 이는 인센티브 정렬 (incentive alignment)을 만들어냅니다. 즉, 신뢰할 수 있고 충돌 없는 사실을 공유하는 에이전트가 시간이 지남에 따라 신뢰를 쌓게 됩니다.
다섯 가지 도메인, 하나의 패턴
이 패턴이 일반화될 수 있음을 증명하기 위해, 저는 다섯 가지 엔드 투 엔드 (end-to-end) 데모를 구축했습니다.
의료 — 약물 조정 (Medication Reconciliation)
한 클리닉에는 "Metformin 500 mg, 1일 1회 복용, 알레르기 없음"이라고 저장되어 있습니다. 반면 약국에는 "Metformin 500 mg, 1일 2회 복용, Amoxicillin 알레르기 있음"이라고 되어 있습니다. 동기화 엔진은 사실들이 병합되기 전에 두 모순을 모두 찾아냅니다. (이는 실제 생명과 직결된 문제로, 투약 오류는 매년 수천 명의 사망을 초래합니다.)
공급망 — 재고 드리프트 (Inventory Drift)
Alpha 창고는 "SKU WX-1001 재고 500개"라고 기록합니다. Beta 창고는 "200개, 단가 $14.99"라고 기록합니다. 같은 창고임에도 숫자가 다릅니다. 엔진은 수량과 가격의 불일치를 포착합니다.
스마트 홈 — IoT 센서 퓨전 (IoT Sensor Fusion)
거실 허브는 "새벽 2:30에 거실에서 움직임 감지"라고 말합니다. 보안 허브는 "움직임 감지되지 않음 — 보안 시스템 가동 중"이라고 말합니다. 상충하는 센서 판독값이 검토를 위해 플래그(flag) 처리됩니다.
뉴스 검증 — 미디어 팩트 체크 (News Verification — Media Fact-Checking)
두 뉴스 매체가 동일한 기자 회견을 다루지만 완전히 다른 프로젝트를 보도합니다 — NewsWire는 "Elm Street 커뮤니티 공원, 예산 200만 달러"라고 보도하는 반면, CityPress는 "Oak Avenue 공공 도서관, 예산 500만 달러"라고 보도합니다. 엔진은 5개의 모순을 식별하고 두 프로젝트 모두 실제일 수 있음을 제안합니다.
여행 어시스턴트 — 일정 동기화 (Itinerary Synchronization)
여행 플래너가 항공 정보(항공 교통 관제(ATC) 혼잡으로 인한 오후 8:00 출발)를 업데이트했지만, 개인 어시스턴트에는 여전히 원래 시간인 오후 5:00로 표시됩니다. 동기화 엔진이 이 충돌을 포착하고 래그(flag) 처리합니다.
각 데모는 30초 미만으로 실행되며, LLM 호출 비용은 약 0.1센트(1/10 cent)에 불과하며, 동일한 핵심 엔진을 보여줍니다.
기술적 세부 사항 (Technical Details)
스택 (Stack):
- 언어 (Language): TypeScript (ES2022)
- 그래프 메모리 (Graph Memory): Cognee Rust SDK (
@cognee/cognee-tsv0.1.2) - 그래프 DB (Graph DB): Kuzu (embedded, Cognee를 통해 사용)
- LLM: OpenAI
gpt-4o-mini(저렴하며json_schema지원) - 임베딩 (Embeddings): ONNX (bge-small-en-v1.5, 로컬 — API 불필요)
- 모노레포 (Monorepo): pnpm workspaces
- 런타임 (Runtime):
tsx를 통한 Node.js (빌드 단계 없음)
주요 설계 결정 (Key design decisions):
-
쌍별(Pairwise) 방식 대신 배치(Batched) LLM 탐지: 모든 사실을 포함한 단일 프롬프트를 사용하여 O(n²) 호출을 방지합니다. LLM은 한 번의 패스(pass)로 모든 것을 비교할 수 있을 만큼 충분히 뛰어납니다.
-
빌드 단계 없음:
package.json의main이 가공되지 않은.ts소스 파일을 가리킵니다.tsx가 런타임에 트랜스파일(transpile)합니다. 이를 통해tsup,typescript, Turborepo의 필요성을 완전히 제거합니다. -
로컬 우선 (Local-first): 모든 것이 노트북에서 실행됩니다. Kuzu는 임베디드(embedded) 방식입니다. ONNX 모델은 자동으로 다운로드됩니다. Cognee Cloud, Pinecone, 외부 벡터 DB(vector DB)가 필요 없습니다.
-
공급자 중립적 LLM (Provider-agnostic LLM): 단일
USE_LLM_PROVIDER환경 변수만으로 OpenAI에서 Groq, Ollama, LM Studio로 교체할 수 있습니다. 모순 탐지기(contradiction detector)와 Cognee의 cognify 파이프라인 모두 어떤 공급자와도 작동합니다.
결과 (Results)
데모를 통해 이 패턴이 작동함을 증명합니다:
- 모순 탐지(Contradiction detection)가 신뢰할 수 있음: 모든 데모에서 배치 처리된 LLM 호출이 상충하는 사실을 정확하게 식별합니다. 구조화된 JSON 출력은 깔끔하며 파싱(parseable)이 가능합니다.
- 신뢰(Trust)가 유의미한 신호를 제공함: 모순(Contradictions) → 검토 대기(pending_review) → -0.2는 명확한 페널티를 생성합니다. 깨끗한 동기화(Clean syncs) → 자동 병합(auto_merge) → +0.05는 신뢰성을 보상합니다.
- Cognee 그래프 추출이 작동함: SDK는 출처 접두사 태그(provenance prefix tags)가 포함된 원문 텍스트에서도 엔티티(entities)와 관계(relationships)를 성공적으로 추출합니다. Kuzu 기반의 그래프는 순회(traversal) 및 그래프 완성(graph completion) 쿼리를 지원합니다.
- 일반화(Generalization)가 유지됨: 다섯 가지 매우 다른 도메인에 대해 하나의 엔진만 사용하며, 도메인별 코드 변경은 전혀 필요하지 않습니다.
향후 계획 (What's Next)
이 프레임워크는 알파(alpha) 단계에 있습니다. 다음에 구축하고자 하는 기능은 다음과 같습니다:
| 기능 | 이유 | 난이도 |
|---|---|---|
| WebSocket 실시간 동기화 (live sync) | 에이전트들이 폴링(polling) 방식이 아닌 실시간으로 동기화됨 | 중간 |
| ... | ||
| 모순 증거 인용 (evidence citation) | LLM이 정확히 상충하는 스니펫(snippet)을 반환함 | 중간 |
사용해 보기 (Try It)
git clone https://github.com/harishkotra/mycelium
cd mycelium
pnpm install
...
이것으로 끝입니다. 다섯 가지 데모 중 아무거나 실행하여 모순이 탐지되고 신뢰도가 실시간으로 조정되는 것을 확인해 보세요.
스크린샷 (Screenshots)
코드 및 더 알아보기: https://www.dailybuild.xyz/project/184-mycelium
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


