🧠 memory-eternal — 당신의 AI를 위한 두 번째 두뇌
GitHub stars
npm
release
license
English (default) · 简体中文
<p align="center">
<a href="https://eternalnight996.github.io/memory-eternal/demo/"><img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/demo.gif" width="900" alt="memory-eternal 20초 투어: 검토 대기열, 토큰 원장, 지식 그래프" /></a>
</p>
<p align="center"><sub style="font-size:1em;">▲ 20초 투어 — 검토 대기열 · 토큰 원장 · 지식 그래프 · <a href="https://eternalnight996.github.io/memory-eternal/demo/">실시간 데모</a></sub></p>
당신의 AI는 매 세션마다 기억을 잃습니다. 신뢰할 수 있는 메모리를 제공하세요.
로컬 우선(Local-first), 검토 게이트 방식(review-gated), 측정 가능(measurable) — DSH, Claude Code, Codex, Cursor 및 모든 MCP 클라이언트가 공유하는 단일 SQLite 볼트.
- 🔍 카운트 전에 검토 — 새로운 카드는 검토 대기열에 기다립니다. 웹 UI 또는 터미널에서 승인하거나 거부할 수 있으며, 모든 변경 사항은 불변의 감사 로그(immutable audit log)에 기록됩니다.
- 🧾 토큰 원장(Token ledger) — 얼마나 많은 회상 정보가 주입되었는지, 몇 번의 증류 호출(distillation calls)이 실행되었는지, 그리고 회상이 실제로 얼마나 유용했는지를 확인할 수 있습니다.
- 🏠 로컬 우선, 클라우드 없음 — 자체 디스크에 있는 SQLite + Markdown을 사용합니다. 타사 메모리 프레임워크나 계정이 필요 없습니다. 메모리 데이터는 기기를 벗어나지 않으며, 뉴스 페이지는 요청 시 공개 RSS / Hacker News만 가져옵니다(제목, 발췌문 및 외부 링크만).
- ⭐ 핵심 메모리(Core memory) — 승인된 카드를 항상 켜진 메모리로 승격시킵니다. 모든 세션에서 자동으로 이들이 적용되며, 검토 대기열이 여전히 무엇이 자격을 갖추는지 결정합니다.
- 🧭 리더 및 레이아웃 — 카드 리더에 클릭 가능한 목차(table of contents)가 제공되며, 전체 메모리 UI를 위한 컴팩트/노멀/라지 레이아웃 설정도 가능합니다.
<p align="center"><strong style="color: #ffc107;">⭐ 동일한 컨텍스트를 다시 설명하는 수고를 덜어준다면, 별 하나가 큰 도움이 됩니다.</strong><br/><sub style="font-size: small;">DSH 원라인 명령어: <code style="background-color: #eee; padding: 2px 4px; border-radius: 3px;">dsh plugin --profile desktop add memory-eternal</code></sub></p>
⚡ 빠른 시작 (Quick start)
DeepSeek Harness (desktop / web)
dsh plugin --profile desktop add memory-eternal
Claude Code, Codex 또는 Cursor — MCP를 통한 동일한 볼트 사용
npm i -g memory-eternal
dsh-memory connect claude
모든 MCP 클라이언트 (Any MCP client)
npx -y -p memory-eternal dsh-memory mcp
브라우저 또는 터미널 (Browser or terminal)
dsh-memory open
npx -y -p memory-eternal dsh-memory tui
🧾 실제로 토큰을 절약하나요?
대부분의 메모리 제품은 토큰을 절약한다고 <em style="font-style: italic;">말합니다</em>. 하지만 직접 확인해 보시는 것이 좋습니다. 이 플러그인은 내장된 메모리 원장(memory ledger) (런타임 상태 → Memory ledger)을 제공하여 다음 사항들을 기록합니다:
| 기록 항목 | 의미 |
|---|
| recall: hits + injected characters | 메모리가 실제로 컨텍스트에 얼마나 많이 주입되었는지 |
| ... | |
정확한 계산은 다음과 같습니다:
net benefit ≈ avoided context cost − (injected characters + distillation calls × price)
| 시나리오 | 지불하는 비용 | 절약되는 비용 |
|---|---|
| 결정과 함정이 있는 다중 세션 프로젝트 | 리콜당 약 0.6–0.9k 토큰 | 컨텍스트 재설명 (~1.5–3k) 또는 파일 재읽기 (3–6k) |
| 일회성 질문, 낮은 히트율 | 리콜 주입 비용 | 보통 없음 |
참고 수치이며 벤치마크가 아닙니다. 원장(ledger)을 통해 직접 측정해 보세요. 만약 리콜의 유용성이 약 ~60% 미만으로 유지된다면, 설정을 조정하거나 (결과를 줄이고 요약을 짧게 하거나) 메모리 기능을 꺼주세요.
🛡️ 먼저 검토하고, 나중에 증명하세요
모든 것을 조용히 수집하는 메모리 시스템은 결국 잘못된 사실을 진실로 리콜할 수 있습니다. memory-eternal은 기본적으로 커밋 전 검토(review-before-commit) 방식을 따릅니다:
- 새로운 카드는 **보류 대기열(pending queue)**에 도착하며, 사람이 승인하기 전까지는 메인 금고(main vault)로 들어가지 않습니다.
- 웹 UI(Web UI), 터미널 TUI(TUI), 또는 CLI(Command Line Interface)에서 승인, 거부 또는 일괄 처리할 수 있습니다.
- 모든 상태 변경은 불변 감사 로그(immutable audit log)(누가/무엇을/언제/왜)에 추가됩니다. 이는 관습이 아닌 SQLite 계층에서 강제됩니다.
- 에이전트는 읽고 제안할 수 있지만, 자신의 카드를 승인할 수는 없습니다.
- 삭제된 카드는 재활용 쓰레기통(recycle bin)으로 이동하며 (기본값 30일), 이 기간 동안 보관됩니다.
⭐ 핵심 메모리 (Core memory)
모든 것이 모든 세션에 주입되어서는 안 됩니다. 핵심 메모리(Core memory)는 항상 우선해야 하는 작고 명시적인 규칙 및 선호도 집합입니다:
- 승인된 카드는 리더 또는 카드 목록에서 상위 항목으로 승격될 수 있습니다.
- 자동 캡처(auto-capture)는 명시적인 장기 선호도/하드 제약 조건에 대해서만 핵심 항목을 제안할 수 있으며, 핵심 후보들은 항상 검토를 위해 보류 상태로 유지됩니다.
- 승인된 핵심 카드는 모든 세션의 시스템 프롬프트(system prompt)에 주입되므로,
memory_recall 호출이 필요하지 않습니다.
- 설정(Settings) → 메모리(Memory) → 핵심 메모리(Core memory)에서 카드 제한 및 문자 예산을 설정합니다.
- 지식 그래프(knowledge graph)에서 핵심 노드는 별표(★)가 있는 주황색 다이아몬드입니다.
- 절대로 비밀 정보나 API 키를 핵심 카드에 저장하지 마십시오. 자격 증명 디렉터리(credential directory)로의 포인터만 유지하십시오.
🎛 리더 및 레이아웃 (Reader & layout)
- 리더의 목차(table of contents)에서 아무 제목이나 클릭하면 해당 섹션으로 부드럽게 스크롤됩니다.
- 설정(Settings) → 메모리(Memory) → 레이아웃 크기(Layout size)는 전체 UI에 대해 **컴팩트/일반/크게(compact / normal / large)**를 제공합니다. 이는 표시(display)에만 영향을 줍니다.
🧩 모든 에이전트를 위한 하나의 금고 (One vault, every agent)
| 항목 | 얻는 것 |
|---|
| DSH desktop / web | 임베디드 메모리 UI: 검토(review), 그래프(graph), 설정(config), 원장(ledger) |
| ... | ... |
📸 스크린샷 (Screenshots)
<p align="center">
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/graph-en.png" width="32%" alt="지식 그래프: 종류별 클러스터, 태그 엣지" />
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/audit-en.png" width="32%" alt="검토 받은 편지함: 유형 바(type bar), 대기열 및 판결창" />
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/status-en.png" width="32%" alt="런타임 상태: 데이터베이스, 백업, 캡처, 버전" />
</p>
<p align="center"><sub style="font-size: 0.9em;">▲ 지식 그래프 · 검토 받은 편지함 · 런타임 상태</sub></p>
<p align="center">
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-audit.png" width="49%" alt="네이티브 터미널 감사: 전체 선택, 일괄 승인/거부" />
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-reader.png" width="49%" alt="네이티브 터미널 장문 리더" />
</p>
<p align="center"><sub style="font-size: 0.9em;">▲ 터미널 네이티브 검토 및 장문 읽기 — <code class="language-bash">dsh-memory tui</code></sub></p>
📚 문서 및 링크
💬 커뮤니티
질문, 아이디어 또는 DSH 플러그인 관련 논의에 참여하려면 그룹에 가입하세요.
| QQ 그룹 | WeChat 그룹 |
|---|
| <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-qr.jpg" width="240" alt="QQ group QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-wechat.jpg" width="240" alt="WeChat group QR" /> |
저자에게 커피 사주기 (선택 사항):
| WeChat Pay | WeChat Reward |
|---|
| <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-pay.jpg" width="200" alt="WeChat Pay QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-reward.jpg" width="200" alt="WeChat Reward QR" /> |
후원은 선택 사항이며, 플러그인은 계속 MIT 라이선스를 유지하고 무료로 제공됩니다. SPONSOR.md를 참조하세요.
📄 라이선스
MIT — 사용하고, 자체 호스팅하며, 이를 기반으로 구축하세요.