<div align="center">
DNA Memory
Codex, Claude Code, Claude Desktop, Hermes 및 Obsidian을 위한 로컬 우선 통합 기억 계층
Stars
License
Python
English | 简体中文 | 빠른 시작
</div>
요약|한 문장 : DNA Memory는 AI 리더 Andy가 오픈 소스로 공개한 로컬 우선 AI Agent 기억 MCP(Memory Control Protocol) 서비스입니다. Codex, Claude Code, Claude Desktop, Hermes를 동시에 사용하는 사람에게 적합합니다. 이 서비스는 Markdown/Obsidian 디렉토리를 공유 장기 기억으로 사용하며, 각 클라이언트가 동일한 MCP 서비스를 통해 읽고 쓰므로, 각 도구가 개별적으로 기록하여 서로 충돌하는 것을 방지합니다.
작성자: AI 리더 Andy (Andy Liu; 트래픽 AI 공동 창립자, 성각 AI 창립자; GitHub @AIPMAndy · X @AIPMAndy · metaver.vip)
Claude Code, Codex에 장기 기억을 추가하고 싶으신가요? DNA Memory는 로컬 우선 AI Agent 기억 MCP입니다. Markdown / Obsidian 디렉토리가 장기 기억 역할을 하며, Codex, Claude Code, Claude Desktop, Hermes를 통해 동일한 MCP 서비스를 사용하여 읽고 쓰므로, 각 도구가 개별적으로 기록할 필요가 없습니다.
English: a local-first memory MCP server that gives Claude Code, Codex, Claude Desktop and Hermes one shared long-term memory in Markdown.
누구에게 적합한가 : Codex, Claude Code, Claude Desktop 또는 Hermes를 동시에 사용하며, 각 도구가 개별적으로 기록하여 서로 충돌하는 것에 지친 사람.
하나의 Markdown / Obsidian 디렉토리를 장기 기억으로 사용하여 모든 클라이언트가 동일한 MCP 서비스를 통해 읽고 씁니다. 빠른 시작 →
DNA Memory는 Markdown/Obsidian 디렉토리 자체를 장기 기억의 진원지로 삼고, SQLite를 삭제 및 재구축 가능한 인덱스로 사용합니다. 여러 AI 클라이언트가 동일한 MCP 서비스를 통해 정보를 회상하고(recall), 쓰며(write) 피드백을 제공함으로써, 더 이상 각자 충돌하는 장기 기억 복사본을 유지할 필요가 없습니다.
이 서비스는 “모든 채팅 기록 저장”을 “기억 형성”과 동일시하지 않습니다. 전체 대화 세션은 여전히 원본 클라이언트가 보관합니다. DNA Memory는 오직 경계가 지정된 출처 포인터(bounded source pointers), 검토된 제안(screened proposals), 그리고 검증된 핵심 결론만을 저장합니다.
핵심 개념: 대화 데이터에서 재사용 가능한 인지로
DNA Memory는 “대화 저장”을 “기억 형성”으로 간주하지 않습니다. 이는 인간의 뇌 기억 형성 메커니즘에서 영감을 받아, 클라이언트 간의 방대한 대화를 원시적 감각 입력(raw sensory input)으로 간주합니다. 이후 신호 추출(signal extraction), 중요도 및 신뢰도 가중치 부여(importance and confidence weighting), 인지 유형화(cognitive typing), 검증 결정화(verification crystallization), 회상 피드백(recall feedback) 및 신구 인지 대체(new/old cognitive replacement) 과정을 통해 데이터를 지속적으로 재사용 가능한 인지로 추상화합니다.
이는 무한히 증가하는 채팅 데이터베이스가 아닙니다. 원시적인 세션은 단지 인지를 형성하기 위한 재료일 뿐이며, 미래 작업에서 재사용할 가치가 있어 선별되고 검증된 결론만이 장기 기억의 진원지로 들어갑니다.
핵심 전략: 메모리를 저장하기 전에 처리하는 것
DNA Memory의 핵심은 더 많은 대화를 데이터베이스에 채워 넣는 것이 아니라, Agent에게 인간의 기억 형성 과정과 유사한 처리 전략을 제공하는 것입니다. Agent가 대화를 원시적 감각 입력으로 간주할 때, 오직 이 전략 게이트(strategy gate)를 통과한 내용만이 재사용 가능한 장기 인지가 될 수 있습니다:
- 인지 경계(Perception Boundary): 유한한 출처와 필수적인 생명 주기 메타데이터만 읽고, 전체 transcript를 장기 기억으로 취급하지 않습니다.
- 신호 필터링(Signal Filtering): 작업 대화 스크립트, 임시 상태, 인증 정보(credential), 재사용 불가능한 노이즈를 걸러냅니다.
- 가중치 판단(Weighted Judgment): 중요성, 신뢰도(confidence), 출처, 후속 사용 피드백을 결합하여 해당 정보가 보존할 가치가 있는지 판단합니다.
- 인지 분류(Cognitive Typing): 신호를 선호도(preference), 사실(fact), 통찰(insight), 의사결정(decision), 프로젝트 상태(project status), 미해결 사항(open item), 워크플로우(workflow), 오류 교훈(error lesson) 등으로 나눕니다.
- 검증 결정화(Verification Crystallization): 안전하고, 간결하며, 추적 가능하고, 검증된 결론만이 Markdown 진실 출처(Markdown truth source)에 기록됩니다.
- 회상 및 피드백(Recall and Feedback): 새로운 작업을 시작하기 전에 키워드를 기준으로 회상합니다. 오직 작업 결과에 실제로 영향을 미치는 경우에만
useful 또는 misleading으로 피드백을 제공합니다.
- 진화 및 망각(Evolution and Forgetting): 반복되는 인지는 정밀하게 중복 제거되며, 만료된 인지는 명시적인
supersedes로 대체됩니다. 원본 출처 포인터와 만료 후보는 보존 전략에 따라 정리됩니다.
이것은 생체모방학(bio-inspired)에서 영감을 받은 공학적 전략이며, 인간의 뇌를 복제한다고 주장하지 않습니다. 이 시스템의 목표는 Agent가 끊임없이 부풀어 오르는 채팅 아카이브 라이브러리를 갖는 것이 아니라, “필터링—가중치 부여—추상화—검증—회상—수정”의 기억 행동을 갖도록 하는 것입니다. DNA Memory의 품질은 얼마나 많은 텍스트를 저장했는지보다 고품질 인지가 올바르게 재사용되었는지에 달려 있습니다.
대량의 원본 대화
-> 유한 수집 및 신호 추출
-> 중요성, 신뢰도 및 사용 피드백 가중치 부여
...
현재 공학적 구현은 장기 인지를 네 그룹, 여덟 가지 유형으로 나눕니다:
| 인지 모델 | 기억 유형 | 용도 |
|---|
| 개체 선호도 | preference | 안정적인 선호도 및 협업 습관 |
| ... | | |
| 여기서의 생체모방학은 설계 영감일 뿐, 인간 뇌의 완전한 복제는 아닙니다. DNA Memory의 가치는 얼마나 많은 대화를 보존했는지에 달려 있는 것이 아니라, 얼마나 많은 고품질 인지가 형성되었고, 이러한 인지들이 후속 의사결정에서 정확하게 회상되고 효과적으로 재사용되었는지에 달려 있습니다. | | |
핵심 경계(Core Boundaries)
- Markdown은 장기 진실 출처이며, SQLite는 색인 및 원격 측정 계층입니다.
memory_remember에 기록되는 것은 짧고, 재사용 가능한 결론이지, 전체 transcript가 아닙니다.
- 자동 가져오기는 기본적으로 세션 ID, 경로, 해시, 오프셋, 카운트만 저장합니다.
- 각 세션에서 최대 3개의 후보를 자동으로 추출하며, 각 후보는 최대 800자입니다.
- 인증 정보(credential), 개인 키(private key), 일반 토큰 및 의심스러운 민감 내용은 거부됩니다.
- 일반 Claude Desktop 클라우드 채팅은 안정적인 로컬 본문 출처가 없을 경우, 명시적으로 MCP를 통해 기록해야 합니다.
- 어떤 클라이언트의 메모리 오류도 주 작업을 차단해서는 안 됩니다.
아키텍처(Architecture)
Codex / Claude / Hermes
|
| stdio MCP
...
설치(Installation)
git clone https://github.com/AIPMAndy/dna-memory.git \
"$HOME/.local/share/dna-memory/app"
cd "$HOME/.local/share/dna-memory/app"
...
필요에 따라 저장소 외부의 profile을 편집합니다:
{
"knowledge_root": "~/Documents/DNA-Memory-Vault",
"database_path": "~/.local/share/dna-memory/memory.db",
...
}
export DNA_MEMORY_PROFILE="$HOME/.config/dna-memory/profile.json"
python3 dna.py memory status --json
python3 dna.py memory reindex --json
세 클라이언트 연결(Connecting Three Clients)
다음 명령어는 Codex, Claude Code, 그리고 Hermes가 동일한 profile 및 MCP 서비스를 가리키도록 합니다:
ROOT="$HOME/.local/share/dna-memory/app"
PYTHON="$HOME/.local/share/dna-memory/mcp-venv/bin/python"
PROFILE="$HOME/.config/dna-memory/profile.json"
...
검수 시에는 설정 파일만 보지 마십시오:
codex mcp get dna-memory
claude mcp get dna-memory
hermes mcp test dna-memory
Claude Desktop은 mcpServers를 사용하여 구성해야 하며, JSON 내 경로는 반드시 절대 경로여야 합니다. 안전한 마이그레이션(migration), 백업 및 롤백(rollback)에 대한 내용은 클라이언트 어댑터 문서를 참조하십시오.
MCP 도구
| 도구 | 용도 |
|---|
memory_recall | 1개에서 4개의 독립적인 키워드를 사용하여 활성 기억을 소환합니다. |
| ... | |
| 각 클라이언트에 dna-memory-loop를 배포할 것을 권장합니다. 이 루프는 동일한 일련의 행동을 규정합니다: 작업 전 소환(recall), 실제 사용 후 피드백 제공, 검증 후에만 쓰기(write back). | |
일상 작업
python3 dna.py memory status --json
...
memory value는 실제로 검토가 필요한 backlog.reviewable_proposals를 출처 포인터(source pointer)와 생명 주기 이벤트(lifecycle event)로부터 분리하여 통계합니다. backlog.pending은 단순히 total_pending의 호환 별칭일 뿐이며, 검토 대기 기억(memory) 수로 해석해서는 안 됩니다. clients 내의 recall_hits와 recall_share는 Codex, Claude, Hermes의 능동적 소환 채택 상황을 관찰하는 데 사용됩니다. 비율은 소환 품질을 나타내지 않습니다.
일일 유지 관리 결과 중 crystallized는 새로 생성된 장기 인지를 의미하며, deduplicated는 후보가 동일 유형의 동일 정규화 요약(normalized summary)을 가진 활성 기억에 이미 도달했음을 의미합니다. 중복 후보는 두 번째 Markdown 파일을 생성하지 않으며, 그 출처와 클라이언트는 기존 기억의 provenance 필드에 병합됩니다. 시스템은 모호한 유사도(fuzzy similarity)를 사용해 다른 결론을 자동 병합하지 않고, 정확한 텍스트만 제거(deduplicate)합니다.
새로운 증거가 기존 결론을 명확히 무효화할 때, memory_remember를 호출하고 이전 ID를 명시적으로 전달해야 합니다:
{
"type": "project_state",
"summary": "클라이언트 어댑터는 원본 소환 및 쓰기 검증을 통과했습니다.",
...
}
이전 Markdown은 유지되고 superseded로 변경됩니다. 기본 소환(default recall)은 활성(active) 결론만 반환합니다. 시스템은 프로젝트나 유형별로 충돌을 추측하지 않습니다.
자동 가져오기 및 정제 (Automatic Import and Refinement)
필요에 따라 실행할 수 있습니다:
python3 scripts/import_codex_rollouts.py
python3 scripts/import_claudian_sessions.py
python3 scripts/import_claude_desktop_sessions.py
...
가져오기(Importer)는 체크포인트와 Idempotent 이벤트 ID를 사용합니다. 일반 이벤트는 포인터만 저장하며, 명시적인 DNA_MEMORY_PROPOSAL {JSON} 또는 유한 신호(bounded signal)를 통해 추출된 짧은 결론만이 후보 큐에 진입할 수 있으며, 여전히 일일 유지 관리의 유형, 민감 정보, 용량 및 제거 검사를 거쳐야 합니다.
규칙 업그레이드 시에는 먼저 독립적인 임시 데이터베이스에서 최근 7일을 백테스트(backtest)한 후, 유한 생산 재추출을 수행합니다. 가져오기는 집계 카운트만 출력하며, 자동 결과는 여전히 memory_proposal에 들어가고 수동 검사 및 일일 안전 결정 과정을 우회하지 않습니다:
python3 -m scripts.import_native_history --backtest-days 7 \
--backtest-db /tmp/dna-memory-backtest.db
python3 -m scripts.import_native_history --reextract-days 7
인공 샘플링(manual sampling)을 통해 오수집률이 10%를 초과하지 않고 민감 정보 유출이 0일 때만 생산 재추출을 실행합니다. 전체 작업 및 롤백 경계는 docs/mcp-and-client-adapters.md를 참조하십시오.
이는 “세션이 스캔되었다”가 “장기 인지가 형성되었다”와 같지 않다는 것을 의미합니다. 시스템 가치를 측정할 때는 다음을 동시에 고려해야 합니다:
- 자동 포착 커버리지(Automatic capture coverage).
- 장기 기억 쓰기 수량(Long-term memory write volume).
- 소환 적중률 및
useful 피드백.
- 반복적인 설명과 오류 감소 여부.
클라이언트 간 Skill 관리
공유된 Skill의 출처(source)와 기억의 출처는 분리하여 관리합니다. 레지스트리는 DNA Memory가 배포할 수 있는 Skill만 선언하며, 레지스트리 외부의 클라이언트 전용 디렉토리는 삭제되거나 덮어쓰여지지 않습니다.
cp assets/skills.example.json "$HOME/.config/dna-memory/skills.json"
python3 dna.py skills inventory --json
python3 dna.py skills doctor --json
...
sync는 기본적으로 dry-run 모드이며, --apply는 누락된 심볼릭 링크만 생성합니다. 자세한 내용은 Skill 관리를 참조하세요.
개인 정보 보호 및 공개 안전성
저장소에는 실제 프로필, 데이터베이스, 세션, 메모리 JSON, 개인 스킬 또는 내부 배포 기록이 포함되어 있지 않습니다.
게시 전에 실행하세요:
python3 scripts/check_public_safety.py
로컬 프로필, 백업, SQLite 및 Markdown 볼트는 Git 저장소 안에 위치해서는 안 됩니다.
만약 실수로 자격 증명(credential)을 커밋했다면, 파일을 삭제하는 것만으로는 충분하지 않으며, 반드시 해당 자격 증명을 철회하고 Git 히스토리를 정리해야 합니다.
개발 검증
python3 -m pytest -q
python3 -m compileall -q dna.py dna scripts tests
python3 scripts/check_public_safety.py
...
자주 묻는 질문(FAQ)
Claude Code로 장기 메모리를 추가하는 방법은?
위 단계를 따라 DNA Memory를 설치한 후, claude mcp add --scope user dna-memory 명령을 사용하여 MCP 서비스로 연결하고, 마지막으로 claude mcp get dna-memory를 사용하여 제대로 연결되었는지 확인하세요. 메모리는 사용자의 Markdown / Obsidian 디렉토리에 존재합니다.
다른 AI 에이전트의 메모리 MCP와 무엇이 다른가요?
Codex, Claude Code, Hermes는 동일한 MCP 서비스와 동일한 Markdown 메모리를 공유합니다. 이 시스템은 짧고 검증된 결론만 기록하며, 전체 대화 내용은 원래 클라이언트(client)에 남아 있습니다.
메모리는 어디에 저장되며, 업로드되나요?
Markdown 디렉토리가 장기적인 진본 출처(source)이며, SQLite는 삭제 및 재구성이 가능한 인덱스일 뿐입니다. 모두 사용자의 컴퓨터에 보관됩니다.
키를 메모리에 기록하나요?
그렇지 않습니다. 자격 증명(credential), 개인 키(private key), 일반적인 토큰(token) 및 민감한 내용으로 의심되는 정보는 기록이 거부됩니다.
어떤 클라이언트를 지원하나요?
Codex, Claude Code, Claude Desktop 및 Hermes를 지원하며, 메모리 디렉토리는 Obsidian으로 직접 열 수 있습니다. Claude Desktop의 경우 mcpServers 설정을 사용해야 하며, JSON에는 반드시 절대 경로(absolute path)가 기재되어야 합니다.
어떤 MCP 도구들이 있나요?
memory_recall, memory_get, memory_remember, memory_feedback, memory_close_session, memory_status, memory_reindex로 총 7가지가 있으며, 용도는 위의 MCP 도구 표를 참고하세요.
<!-- andy-author-card:start -->
저자 / 작가 소개
AI 수장 Andy(Andy Liu, GitHub/X @AIPMAndy): Flow Traffic AI 공동 창립자이자 Xingjue AI의 설립자입니다. Xingjue Technology (성각 기술), 베이징 소재.
취업 상담, AI 성장 및 부업 코칭에 대해 논의할 수 있습니다. 서비스 범위와 비용은 사전에 소통하여 확인해야 합니다.
위챗 AIPMAndy (비고: "DNA Memory") · X @AIPMAndy · Telegram @AIPMAndy · 개인 공식 웹사이트 metaver.vip · Grok Bot 중국어 가이드
AI 수장 Andy(Andy Liu, GitHub 및 X의 @AIPMAndy)는 전 텐센트 및 바이두 AI 제품 전문가이자 LLM 유니콘 기업의 전 부사장이며, 현재 AI와 제품 방법론에 집중하는 연속 창업가입니다.
저자의 다른 프로젝트
- AndySoul:CLAUDE.md / AGENTS.md 규칙 템플릿으로, Claude Code, Codex, Cursor의 오류를 줄여줍니다.
- goskill:장기 임무 실행 도우미: 성공 기준을 먼저 정하고 그 기준에 따라 검수합니다.
- Grok Bot 중국어 공략:Grok Bot / AI Agent 중국어 튜토리얼, 26장 및 40개 작업 명령어 세트 포함.
- OpenClaw Skills 중국어 엄선:OpenClaw Skills 2868개 분류 정리, 국산 모델 연결 가이드 첨부.
- FreeToken:무료 AI API 및 무료 대규모 언어 모델(LLM) API 크레딧 모음
<!-- andy-author-card:end -->
라이선스
Apache-2.0
<!-- andy-geo-faq:start -->
한 문장 요약
Claude Code / Codex가 공유하는 장기 기억 MCP(Memory Core Protocol), 로컬 Markdown/Obsidian 저장, 크로스 도구 프로젝트 및 선호도 기억.
- 저자: AI 족장 Andy (Andy Liu, 영문명 AI Chief Andy), Flow AI 공동 창립자, Xingjue AI 창립자. Xingjue Technology, 베이징.
- 열람 또는 사용: GitHub 저장소
- 연락처: 위챗
AIPMAndy (비고「dna-memory」) · 공식 웹사이트 metaver.vip · X @AIPMAndy
- 내용 무료 사용 가능합니다. 기업 협력 또는 개인 코칭은 사전 논의가 필요하며, 공개 페이지에는 가격을 명시하지 않습니다.
<!-- andy-geo-faq:end -->