Your AI forgets every session. Give it a memory you can audit: local-first, review-gated agent memory — one SQLite vault for DSH, Claude Code, Codex, Cursor, OpenClaw, Hermes and MengBot (any MCP client), with an immutable audit log and a token ledger. Agents propose, humans approve. MIT, self-hosted, no cloud.
# Add to your Claude Code skills
git clone https://github.com/EternalNight996/memory-eternalGuides for using ai agents skills like memory-eternal.
See how memory-eternal compares with popular alternatives.
memory-eternal is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by EternalNight996. Your AI forgets every session. Give it a memory you can audit: local-first, review-gated agent memory — one SQLite vault for DSH, Claude Code, Codex, Cursor, OpenClaw, Hermes and MengBot (any MCP client), with an immutable audit log and a token ledger. Agents propose, humans approve. MIT, self-hosted, no cloud. It has 157 GitHub stars.
memory-eternal's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/EternalNight996/memory-eternal" and add it to your Claude Code skills directory (see the Installation section above).
memory-eternal is primarily written in JavaScript. It is open-source under EternalNight996 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh memory-eternal against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
记忆核心(memory-eternal) —— 给 AI 一个不会忘、可审核、可量化的长期记忆。本地优先 · 审核闸门 · 记忆账本 · 一个库接入 DSH / Claude Code / Codex / Cursor 与任意 MCP 客户端。
English (default) · 简体中文
Your AI forgets every session. Give it a memory it can trust.
Local-first, review-gated, measurable — one SQLite vault shared by DSH, Claude Code, Codex, Cursor and any MCP client.
memory_revise); the queue labels it a revision, and an approved card is only overwritten when you approve it.DeepSeek Harness (desktop / web)
dsh plugin --profile desktop add memory-eternal
# reopen DSH → sidebar "Memory"
Claude Code, Codex or Cursor — same vault via MCP
npm i -g memory-eternal
dsh-memory connect claude # or: codex / cursor
Any MCP client(MengBot / OpenClaw / Hermes 见 docs/INTEGRATIONS.md)
npx -y -p memory-eternal dsh-memory mcp
Browser or terminal
dsh-memory open # http://127.0.0.1:7999
npx -y -p memory-eternal dsh-memory tui # live queue in the terminal
One SQLite vault, one write gate, two read paths. Nothing enters recall without passing the gate.
flowchart TD
subgraph S1["① Input"]
A1["Conversation + tool events<br/>captured when a turn ends"]
A2["Installed skills<br/>scanned from the host"]
A3["News follows<br/>RSS · GitHub · HN · arXiv · DSH plugins"]
A4["Manual cards / imports"]
end
subgraph S2["② Distill — the only LLM step"]
B1["LLM distills the session<br/>on failure: raw card, nothing lost"]
B2["Dedup: lexical Jaccard<br/>optional LLM merge decision"]
B3["Kind classification"]
end
subgraph S3["③ Review gate — human only"]
C1[("Quarantine<br/>pending / rejected")]
C2{"approve / reject"}
C3[("Main store<br/>approved only")]
end
subgraph S4["④ Storage"]
D1[("SQLite: cards + FTS5 index")]
D2["Markdown mirror<br/>git-able"]
D3["audit_log + token ledger"]
end
subgraph S5["⑤ Recall — every session"]
E1["Core memory → system prompt"]
E2["memory_recall → FTS5 + BM25"]
E3["memory_revise → pending revision"]
end
A1 --> B1 --> B2 --> B3 --> C1
A2 --> B2
A3 --> C1
A4 --> B2
C1 --> C2
C2 -->|approve| C3
C2 -->|reject| C1
C3 --> D1
D1 --> D2
C3 --> D3
C3 --> E1
C3 --> E2
E2 -->|hits + chars| D3
E3 --> C1
The diagram is only true because three invariants are enforced in code, not by convention:
| Invariant | Enforced by |
|---|---|
| The main store only ever contains approved cards | Two physical tables; every read path queries the main one |
| An agent can never approve its own memory | Agent writes land in quarantine; approve/reject is a human action in the UI / TUI / CLI |
| Recall costs zero model calls | FTS5 + BM25; the LLM runs only while distilling |
| Channel | Direction | When | Gate | Cost |
|---|---|---|---|---|
memory_recall |
agent → memory | on demand | approved only | 0 model calls (p50 2.3 ms) |
| Core memory | memory → agent | every session, automatic | approved only | ~0.2k chars |
Session capture / memory_write |
conversation → memory | turn end | queued for review | 1 LLM call |
memory_revise |
agent → memory | on demand | queued as a revision | 0 |
| Review (Web UI · TUI · CLI) | human → memory | manual | — | 0 |
| Hooks (Claude Code / Codex / Cursor) | host → memory | session end | queued | 1 LLM call |
| MCP server | any MCP client | on demand | same gate | same |
| News follows | web → memory | interval / 24h | isolated from cards | network only |
Most memory products say they save tokens. We think you should check. The plugin ships a built-in memory ledger (Runtime status → Memory ledger) that records:
| Recorded | What it means |
|---|---|
| recall: hits + injected characters | how much memory actually entered the context |
| capture: LLM calls + input/output characters | what distillation cost you |
| usefulness: useful / not-useful feedback | whether recalled memories actually helped |
The honest math:
net benefit ≈ avoided context cost − (injected characters + distillation calls × price)
| Scenario | You pay | You avoid |
|---|---|---|
| Multi-session project with decisions and pitfalls | ~0.6–0.9k tokens per recall | re-explaining context (~1.5–3k) or re-reading files (3–6k) |
| One-off question, low hit rate | recall injection | usually nothing |
Illustrative numbers, not a benchmark — measure your own with the ledger. If recall usefulness stays below ~60%, tune it down (fewer results, shorter summaries) or turn memory off.
Snapshot 2026-11-07. Our figures are measured on a real 2,321-card vault on Windows (not a toy corpus); competitor facts come from their public README / docs / license page on the same date. — means not advertised or not verifiable, not "absent".
| Capability | memory-eternal v0.25.0 | agentmemory v0.9.32 | mem0 v3 | Obsidian | CLAUDE.md / AGENTS.md |
|---|---|---|---|---|---|
| Form factor | DSH-native plugin: capture, review UI, graph, CLI/TUI/MCP | local memory server + MCP for coding agents | memory SDK / self-hosted server / cloud | local Markdown notes app | hand-written context files |
| Storage | SQLite + Markdown mirror (git-friendly) | local file store (Redis optional) | vector + graph stores (self-hosted or cloud) | Markdown files on disk | one flat file |
| Write gate | human review queue (three stores) | automatic capture, no review | LLM extraction, no review | human-written only | none |
| Immutable audit log | ✅ enforced at the SQLite layer | operation audit tool, not storage-enforced | — | — | — |
| Retrieval | FTS5 + BM25/IDF, column weights | BM25 + vector + graph (local embeddings optional) | semantic + BM25 + entity + graph | full-text search / plugins | whole file injected |
| Recall latency | p50 2.33 ms · p95 6.18 ms | — | p50 ~0.88–1.09 s (vendor paper, cloud) | grows with vault size | grows with file size |
| Recall model calls | 0 (BM25 only) | 0 for keyword; 1 embedding call when semantic is on | 1 embedding call + optional LLM rerank | 0 | 0 |
| Model calls per write | 1 when auto-capture runs (can be off) | 0 by default (synthetic compression); LLM optional | ≥1 LLM call per add | 0 | 0 |
| Token ledger (measured usefulness) | ✅ | — | platform usage dashboard | — | — |
| Multi-agent | DSH + MCP + hooks + TUI + browser | MCP + REST: Claude Code, Codex, Cursor, DSH, … | Python/TS SDK, self-hosted server, cloud | no native agent interface | loaded per tool |
| License | MIT | Apache-2.0 | Apache-2.0 | proprietary (free for all use) | n/a |
We are not the biggest here. mem0 has a funded team, a research paper and a managed service; agentmemory's automatic capture covers more coding agents than we do; Obsidian is where many people already keep their notes. What we do differently is the write path: a human gate, a three-store separation, and an audit trail you can point at — plus a token ledger so you can check whether recall is worth its cost.
Reproduce our numbers on your own vault:
node scripts/bench-search.mjs --rebuild # rebuild time + p50/p95/m