코딩 에이전트를 위한 영구 프로젝트 지식 그래프
요약
이 도구는 코딩 에이전트가 세션 간에도 프로젝트 지식을 영구적으로 기억할 수 있도록 돕는 MCP 서버입니다. LLM을 활용하여 코드의 개념(기능, 모듈 등)을 그래프로 구축하고 관리하며, 이를 통해 에이전트는 작업 전후에 필요한 지식을 이해하고 업데이트할 수 있습니다.
핵심 포인트
- 세션 간 지속적인 기억을 위한 영구 프로젝트 지식 그래프 제공
- AST 파싱 없이 LLM이 코드 개념을 추출하여 그래프화
- 개념(Concept) 기반으로 지식을 저장하며, 기능/모듈/결정 등을 추적
- 다양한 IDE 환경(opencode, claudecode 등)에 맞춘 설치 및 통합 지원
개념, 아키텍처 및 결정에 대한 그래프를 구축하고 쿼리할 수 있게 해주는 MCP 서버입니다. 이를 통해 코딩 에이전트가 세션 간에도 기억할 수 있습니다.
LLM은 인덱서 역할을 합니다. AST 파싱이나 정적 분석 과정이 필요 없습니다. 에이전트는 코드를 읽고, 자신만의 언어로 개념을 작성하며, 향후 작업을 수행하기 전에 이 개념들을 쿼리합니다. 그래프는 코드 심볼이 아닌 개념—기능(features), 모듈(modules), 패턴(patterns), 결정(decisions)—을 저장합니다.
understand → work → update
세션 시작 시 — 에이전트는 list_roots를 호출하여 자신을 정렬합니다.
작업 전 — 에이전트는 자연어 쿼리(또는 정확한 ID 조회를 위한 get_concept)로 understand를 호출합니다.
작업 후 — 에이전트는 자신이 구축한 내용을 기록하기 위해 create_concept 또는 update_concept를 호출합니다.
모든 내용은 .megamemory/knowledge.db에 있는 프로젝트별 SQLite 데이터베이스에 영구적으로 저장됩니다.
npm install -g megamemory
참고
Node.js >= 18이 필요합니다. 임베딩 모델(~23MB)은 첫 사용 시 자동으로 다운로드됩니다.
megamemory install
대화형 설치 프로그램을 실행하고 사용할 에디터를 선택하세요:
참고
설치 프로그램은 성공적인 읽기/병합(read/merge) 후에만 설정 파일을 업데이트하며, 기존의 플러그인/명령어 파일이 MegaMemory 관리 대상으로 표시되지 않은 한 덮어쓰지 않습니다.
megamemory install --target opencode
다음 항목들을 구성합니다:
~/.config/opencode/opencode.json에 MCP 서버~/.config/opencode/AGENTS.md에 워크플로우 지침~/.config/opencode/tool/megamemory.ts에 스킬 툴 플러그인- 초기 그래프 생성을 위한 부트스트랩 명령어
/user:bootstrap-memory- 세션 지식 영구 저장을 위한 저장 명령어/user:save-memory
오픈코드를 재시작하여 설치를 완료하세요.
megamemory install --target claudecode
다음 항목들을 구성합니다:
~/.claude.json에 MCP 서버~/.claude/CLAUDE.md에 워크플로우 지침~/.claude/commands/에 명령어들
megamemory install --target antigravity
다음 항목들을 구성합니다:
./mcp_config.json에 MCP 서버
(작업 공간 수준)
megamemory install --target codex
구성합니다:
-
MCP 서버는
~/.codex/config.toml에서 -
워크플로우 지침은
~/.codex/AGENTS.md에 있습니다.
megamemory를 stdio MCP 서버로 추가합니다. 명령어는 단순히 megamemory입니다
(인수 없음). 이 명령어는 작업 디렉터리 상대 경로의 .megamemory/knowledge.db 파일을 읽고 씁니다. 또는 MEGAMEMORY_DB_PATH를 설정하여 이를 재정의할 수 있습니다.
{
"megamemory": {
"type": "local",
...
| 도구 (Tool) | 설명 (Description) |
|---|---|
understand | 지식 그래프에 대한 의미론적 검색(Semantic search). 자식, 엣지, 부모 컨텍스트가 포함된 일치 개념을 반환합니다. |
get_concept | 정확한 ID로 개념을 조회합니다. 자식, 엣지, 들어오는 엣지(incoming edges), 부모를 포함한 전체 컨텍스트를 반환합니다. |
create_concept | 선택적 엣지와 파일 참조와 함께 새로운 개념을 추가합니다. |
update_concept | 기존 개념의 필드를 업데이트합니다. 임베딩(embeddings)을 자동으로 재생성합니다. |
link | 두 개념 사이에 타입이 지정된 관계를 생성합니다. |
remove_concept | 사유(reason)와 함께 개념을 소프트 삭제(Soft-delete)합니다. 기록은 보존됩니다. |
list_roots | 직접적인 자식을 가진 모든 최상위 개념 목록을 나열합니다. |
list_conflicts | 병합 그룹별로 분류된 해결되지 않은 병합 충돌(merge conflicts) 목록을 나열합니다. |
resolve_conflict | 현재 코드베이스를 기반으로 검증되고 정확한 콘텐츠를 제공하여 병합 충돌을 해결합니다. |
개념 종류 (Concept kinds): feature
· module
· pattern
· config
· decision
· component
관계 유형 (Relationship types): connects_to
· depends_on
· implements
· calls
· configured_by
지식 그래프를 브라우저에서 시각화합니다:
megamemory serve
- 노드는 종류별로 색상이 지정되고 엣지 수에 따라 크기가 결정됩니다.
- 점선 엣지는 부모-자식 링크를, 실선 엣지는 관계를 나타냅니다.
- 모든 노드를 클릭하여 요약 정보, 파일 및 엣지를 검사할 수 있습니다.
- 검색은 하이라이트/딤 필터링을 지원합니다.
- 포트
4321가 사용 중인 경우, 다른 포트를 선택하라는 메시지가 표시됩니다.
megamemory serve --port 8080 # 사용자 지정 포트
src/
index.ts CLI 진입점 + MCP 서버 (9개 도구)
tools.ts 도구 핸들러 (understand, get_concept, create, update, link, remove, list_conflicts, resolve_conflict)
...
임베딩(Embeddings) — Xenova/all-MiniLM-L6-v2 (ONNX, 양자화)를 통해 인프로세스 방식으로 처리됩니다. API 키가 필요 없으며, 첫 모델 다운로드 이후에는 네트워크 호출이 없습니다.저장소(Storage) — WAL 모드를 사용하는 SQLite에 소프트 삭제 기록 및 스키마 마이그레이션(현재 v3) 기능이 포함되어 있습니다.검색(Search) — 노드 임베딩에 대한 브루트 포스 코사인 유사도 검색을 사용하며, 10k 미만의 노드를 가진 그래프에는 충분히 빠릅니다.병합(Merge) — 개념 ID를 통한 양방향 병합 기능을 제공하며, MCP 도구를 이용한 AI 지원 충돌 해결이 가능합니다.
| 명령어 (Command) | 설명 (Description) |
|---|---|
megamemory | MCP stdio 서버 시작 |
megamemory install | 에디터/에이전트 통합 구성 |
megamemory serve | 웹 그래프 탐색기 실행 |
megamemory merge | 두 개의 knowledge.db 파일 병합 |
megamemory conflicts | 해결되지 않은 병합 충돌 목록 표시 |
megamemory resolve | 병합 충돌 해결 |
megamemory --help | 도움말 표시 |
megamemory --version | 버전 표시 |
브랜치가 분기되면, 각각 .megamemory/knowledge.db 파일을 독립적으로 업데이트할 수 있습니다. SQLite 파일은 git에 의해 자동 병합될 수 없으므로, megamemory는 전용 병합 명령어를 제공합니다.
megamemory merge main.db feature.db --into merged.db
개념들은 ID로 비교됩니다: 동일한 노드는 중복 제거되고, 충돌하는 노드는 단일 병합 그룹 UUID 아래에 ::left/::right 변형으로 유지됩니다. --left-label 및 --right-label을 사용하면 기본 측면 레이블을 브랜치 이름으로 대체할 수 있습니다.
megamemory merge main.db feature.db --into merged.db --left-label main --right-label feature-xyz
megamemory conflicts # 사람이 읽기 쉬운 요약 정보
megamemory conflicts --json # 기계가 읽기 쉬운 출력 형식
megamemory conflicts --db 경로 # 데이터베이스 경로 지정
megamemory resolve <merge-group-uuid> --keep left # 왼쪽 버전 유지
megamemory resolve <merge-group-uuid> --keep right # 오른쪽 버전 유지
megamemory resolve <merge-group-uuid> --keep both # 두 개 모두 별도의 개념으로 유지
AI 에이전트가 /merge를 실행하면, list_conflicts를 호출합니다.
, 현재 소스 파일과 두 버전을 모두 검증한 후, 다음을 포함하는 resolved: {summary, why?, file_refs?}와 검증 reason을 호출합니다. 이는 맹목적으로 어느 한쪽 편을 들지 않고, 코드베이스가 현재 반영하고 있는 내용으로 해결합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기