memory-eternal 0.17.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +27 -27
- package/.codex-plugin/plugin.json +24 -24
- package/.cursor-plugin/plugin.json +14 -14
- package/README.md +138 -138
- package/README.zh-CN.md +138 -138
- package/cursor-extension/package.json +54 -54
- package/dsh-tui-plugin/dsh-plugin.json +42 -42
- package/dsh-tui-plugin/package.json +51 -51
- package/index.js +70 -8
- package/lib/api.js +48 -6
- package/lib/capture.js +37 -2
- package/lib/client.js +34 -21
- package/lib/core-memory.js +45 -0
- package/lib/db.js +2 -0
- package/lib/setup.js +242 -33
- package/lib/vault.js +20 -0
- package/orca-plugin/orca-plugin.json +36 -36
- package/package.json +2 -2
- package/web/app.js +39 -26
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
|
-
"name": "memory-eternal",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
6
|
-
"author": {
|
|
7
|
-
"name": "EternalNight996",
|
|
8
|
-
"url": "https://github.com/EternalNight996"
|
|
9
|
-
},
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"hooks": {
|
|
12
|
-
"source": "./hooks/hooks.claude.json"
|
|
13
|
-
},
|
|
14
|
-
"skills": [
|
|
15
|
-
"./skills/"
|
|
16
|
-
],
|
|
17
|
-
"mcp_servers": [
|
|
18
|
-
{
|
|
19
|
-
"name": "memory",
|
|
20
|
-
"command": "node",
|
|
21
|
-
"args": [
|
|
22
|
-
"${CLAUDE_PLUGIN_ROOT}/bin/dsh-memory.mjs",
|
|
23
|
-
"mcp"
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
|
+
"name": "memory-eternal",
|
|
4
|
+
"version": "0.18.1",
|
|
5
|
+
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "EternalNight996",
|
|
8
|
+
"url": "https://github.com/EternalNight996"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"hooks": {
|
|
12
|
+
"source": "./hooks/hooks.claude.json"
|
|
13
|
+
},
|
|
14
|
+
"skills": [
|
|
15
|
+
"./skills/"
|
|
16
|
+
],
|
|
17
|
+
"mcp_servers": [
|
|
18
|
+
{
|
|
19
|
+
"name": "memory",
|
|
20
|
+
"command": "node",
|
|
21
|
+
"args": [
|
|
22
|
+
"${CLAUDE_PLUGIN_ROOT}/bin/dsh-memory.mjs",
|
|
23
|
+
"mcp"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "memory-eternal",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "EternalNight996",
|
|
7
|
-
"url": "https://github.com/EternalNight996"
|
|
8
|
-
},
|
|
9
|
-
"license": "MIT",
|
|
10
|
-
"keywords": [
|
|
11
|
-
"deepseek-harness",
|
|
12
|
-
"dsh-plugin",
|
|
13
|
-
"memory",
|
|
14
|
-
"knowledge-base",
|
|
15
|
-
"mcp",
|
|
16
|
-
"markdown",
|
|
17
|
-
"vault"
|
|
18
|
-
],
|
|
19
|
-
"homepage": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
20
|
-
"repository": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
21
|
-
"skills": "./skills/",
|
|
22
|
-
"mcpServers": "./.mcp.json",
|
|
23
|
-
"hooks": "./hooks/hooks.codex.json"
|
|
24
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "memory-eternal",
|
|
3
|
+
"version": "0.18.1",
|
|
4
|
+
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "EternalNight996",
|
|
7
|
+
"url": "https://github.com/EternalNight996"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"deepseek-harness",
|
|
12
|
+
"dsh-plugin",
|
|
13
|
+
"memory",
|
|
14
|
+
"knowledge-base",
|
|
15
|
+
"mcp",
|
|
16
|
+
"markdown",
|
|
17
|
+
"vault"
|
|
18
|
+
],
|
|
19
|
+
"homepage": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
20
|
+
"repository": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
21
|
+
"skills": "./skills/",
|
|
22
|
+
"mcpServers": "./.mcp.json",
|
|
23
|
+
"hooks": "./hooks/hooks.codex.json"
|
|
24
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "memory-eternal",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "EternalNight996",
|
|
7
|
-
"url": "https://github.com/EternalNight996"
|
|
8
|
-
},
|
|
9
|
-
"license": "MIT",
|
|
10
|
-
"homepage": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
11
|
-
"repository": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
12
|
-
"mcpServers": "./.mcp.json",
|
|
13
|
-
"hooks": "./hooks/hooks.cursor.json"
|
|
14
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "memory-eternal",
|
|
3
|
+
"version": "0.18.1",
|
|
4
|
+
"description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "EternalNight996",
|
|
7
|
+
"url": "https://github.com/EternalNight996"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"homepage": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
11
|
+
"repository": "https://github.com/EternalNight996/dsh-memory-eternal",
|
|
12
|
+
"mcpServers": "./.mcp.json",
|
|
13
|
+
"hooks": "./hooks/hooks.cursor.json"
|
|
14
|
+
}
|
package/README.md
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
# 🧠 memory-eternal — a second brain for your AI
|
|
2
|
-
|
|
3
|
-
[](https://github.com/EternalNight996/memory-eternal/stargazers)
|
|
4
|
-
[](https://www.npmjs.com/package/memory-eternal)
|
|
5
|
-
[](LICENSE)
|
|
7
|
-
|
|
8
|
-
**English (default)** · [简体中文](README.zh-CN.md)
|
|
9
|
-
|
|
10
|
-
<p align="center">
|
|
11
|
-
<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-second tour: review queue, token ledger, knowledge graph" /></a>
|
|
12
|
-
</p>
|
|
13
|
-
<p align="center"><sub>▲ 20-second tour — review queue · token ledger · knowledge graph · <a href="https://eternalnight996.github.io/memory-eternal/demo/">live demo</a></sub></p>
|
|
14
|
-
|
|
15
|
-
> **Your AI forgets every session. Give it a memory it can trust.**
|
|
16
|
-
>
|
|
17
|
-
> Local-first, review-gated, measurable — one SQLite vault shared by DSH, Claude Code, Codex, Cursor and any MCP client.
|
|
18
|
-
|
|
19
|
-
- 🔍 **Review before it counts** — new cards wait in a review queue; approve or reject from the Web UI or terminal; every change is written to an immutable audit log.
|
|
20
|
-
- 🧾 **Token ledger** — see how much recall injected, how many distillation calls ran, and how often recall was actually useful.
|
|
21
|
-
- 🏠 **Local-first, no cloud** — SQLite + Markdown on your own disk. No third-party memory framework, no account, no outbound calls.
|
|
22
|
-
|
|
23
|
-
<p align="center"><strong>⭐ If it saves you from explaining the same context again, a star helps a lot.</strong><br/><sub>DSH one-liner: <code>dsh plugin --profile desktop add memory-eternal</code></sub></p>
|
|
24
|
-
|
|
25
|
-
## ⚡ Quick start
|
|
26
|
-
|
|
27
|
-
**DeepSeek Harness (desktop / web)**
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
dsh plugin --profile desktop add memory-eternal
|
|
31
|
-
# reopen DSH → sidebar "Memory"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**Claude Code, Codex or Cursor — same vault via MCP**
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npm i -g memory-eternal
|
|
38
|
-
dsh-memory connect claude # or: codex / cursor
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
**Any MCP client**
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
npx -y -p memory-eternal dsh-memory mcp
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Browser or terminal**
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
dsh-memory open # http://127.0.0.1:7999
|
|
51
|
-
npx -y -p memory-eternal dsh-memory tui # live queue in the terminal
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## 🧾 Does it actually save tokens?
|
|
55
|
-
|
|
56
|
-
Most memory products <em>say</em> they save tokens. We think you should check. The plugin ships a built-in **memory ledger** (Runtime status → Memory ledger) that records:
|
|
57
|
-
|
|
58
|
-
| Recorded | What it means |
|
|
59
|
-
|---|---|
|
|
60
|
-
| recall: hits + injected characters | how much memory actually entered the context |
|
|
61
|
-
| capture: LLM calls + input/output characters | what distillation cost you |
|
|
62
|
-
| usefulness: useful / not-useful feedback | whether recalled memories actually helped |
|
|
63
|
-
|
|
64
|
-
The honest math:
|
|
65
|
-
|
|
66
|
-
```text
|
|
67
|
-
net benefit ≈ avoided context cost − (injected characters + distillation calls × price)
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
| Scenario | You pay | You avoid |
|
|
71
|
-
|---|---|---|
|
|
72
|
-
| 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) |
|
|
73
|
-
| One-off question, low hit rate | recall injection | usually nothing |
|
|
74
|
-
|
|
75
|
-
> 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.
|
|
76
|
-
|
|
77
|
-
## 🛡️ Review first, prove later
|
|
78
|
-
|
|
79
|
-
A memory system that silently ingests everything will eventually recall a wrong fact as truth. memory-eternal defaults to **review-before-commit**:
|
|
80
|
-
|
|
81
|
-
- new cards land in a **pending queue**; nothing enters the main vault until a human approves it;
|
|
82
|
-
- approve, reject or bulk-process from the Web UI, the terminal TUI, or the CLI;
|
|
83
|
-
- every status change is appended to an **immutable audit log** (who / what / when / why) — enforced at the SQLite layer, not by convention;
|
|
84
|
-
- agents can read and propose, but **cannot approve their own cards**;
|
|
85
|
-
- deleted cards go to a recycle bin (30 days by default).
|
|
86
|
-
|
|
87
|
-
## 🧩 One vault, every agent
|
|
88
|
-
|
|
89
|
-
| Entry | What you get |
|
|
90
|
-
|---|---|
|
|
91
|
-
| **DSH desktop / web** | embedded memory UI: review, graph, config, ledger |
|
|
92
|
-
| **Claude Code / Codex / Cursor** | MCP server, same local vault, <code>dsh-memory connect</code> |
|
|
93
|
-
| **Any MCP client** | <code>npx -y -p memory-eternal dsh-memory mcp</code> |
|
|
94
|
-
| **Terminal** | <code>dsh-memory tui</code> — live queue, select-all, batch approve/reject, long-form reader |
|
|
95
|
-
| **Browser** | <code>dsh-memory open</code> → http://127.0.0.1:7999 |
|
|
96
|
-
|
|
97
|
-
## 📸 Screenshots
|
|
98
|
-
|
|
99
|
-
<p align="center">
|
|
100
|
-
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/graph-en.png" width="32%" alt="Knowledge graph: clusters by kind, tag edges" />
|
|
101
|
-
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/audit-en.png" width="32%" alt="Review inbox: type bar, queue and verdict pane" />
|
|
102
|
-
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/status-en.png" width="32%" alt="Runtime status: database, backups, capture, version" />
|
|
103
|
-
</p>
|
|
104
|
-
<p align="center"><sub>▲ Knowledge graph · review inbox · runtime status</sub></p>
|
|
105
|
-
|
|
106
|
-
<p align="center">
|
|
107
|
-
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-audit.png" width="49%" alt="Native terminal audit: select-all, batch approve/reject" />
|
|
108
|
-
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-reader.png" width="49%" alt="Native terminal long-form reader" />
|
|
109
|
-
</p>
|
|
110
|
-
<p align="center"><sub>▲ Terminal-native review and long-form reading — <code>dsh-memory tui</code></sub></p>
|
|
111
|
-
|
|
112
|
-
## 📚 Documentation & links
|
|
113
|
-
|
|
114
|
-
- [Full manual (English)](docs/GUIDE.md) · [完整手册(中文)](docs/GUIDE.zh-CN.md)
|
|
115
|
-
- [Private deployment (Docker / systemd)](docs/DEPLOY.md)
|
|
116
|
-
- [Changelog](docs/CHANGELOG.md) · [Architecture](docs/ARCHITECTURE.md)
|
|
117
|
-
- [Terminal plugin (dsh-tui)](dsh-tui-plugin/README.md) · [Orca launcher](orca-plugin/README.md) · [Cursor / VS Code extension](cursor-extension/README.md)
|
|
118
|
-
- [Report a bug](https://github.com/EternalNight996/memory-eternal/issues)
|
|
119
|
-
|
|
120
|
-
## 💬 Community
|
|
121
|
-
|
|
122
|
-
**Questions, ideas, or DSH plugin talk — join the groups:**
|
|
123
|
-
|
|
124
|
-
| QQ group | WeChat group |
|
|
125
|
-
|:---:|:---:|
|
|
126
|
-
| <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.png" width="240" alt="WeChat group QR" /> |
|
|
127
|
-
|
|
128
|
-
**Buy the author a coffee (optional):**
|
|
129
|
-
|
|
130
|
-
| WeChat Pay | WeChat Reward |
|
|
131
|
-
|:---:|:---:|
|
|
132
|
-
| <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" /> |
|
|
133
|
-
|
|
134
|
-
> Sponsorship is optional; the plugin stays MIT and free. See [SPONSOR.md](SPONSOR.md).
|
|
135
|
-
|
|
136
|
-
## 📄 License
|
|
137
|
-
|
|
138
|
-
MIT — use it, self-host it, build on it.
|
|
1
|
+
# 🧠 memory-eternal — a second brain for your AI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/EternalNight996/memory-eternal/stargazers)
|
|
4
|
+
[](https://www.npmjs.com/package/memory-eternal)
|
|
5
|
+
[](https://github.com/EternalNight996/memory-eternal/releases)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
**English (default)** · [简体中文](README.zh-CN.md)
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<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-second tour: review queue, token ledger, knowledge graph" /></a>
|
|
12
|
+
</p>
|
|
13
|
+
<p align="center"><sub>▲ 20-second tour — review queue · token ledger · knowledge graph · <a href="https://eternalnight996.github.io/memory-eternal/demo/">live demo</a></sub></p>
|
|
14
|
+
|
|
15
|
+
> **Your AI forgets every session. Give it a memory it can trust.**
|
|
16
|
+
>
|
|
17
|
+
> Local-first, review-gated, measurable — one SQLite vault shared by DSH, Claude Code, Codex, Cursor and any MCP client.
|
|
18
|
+
|
|
19
|
+
- 🔍 **Review before it counts** — new cards wait in a review queue; approve or reject from the Web UI or terminal; every change is written to an immutable audit log.
|
|
20
|
+
- 🧾 **Token ledger** — see how much recall injected, how many distillation calls ran, and how often recall was actually useful.
|
|
21
|
+
- 🏠 **Local-first, no cloud** — SQLite + Markdown on your own disk. No third-party memory framework, no account, no outbound calls.
|
|
22
|
+
|
|
23
|
+
<p align="center"><strong>⭐ If it saves you from explaining the same context again, a star helps a lot.</strong><br/><sub>DSH one-liner: <code>dsh plugin --profile desktop add memory-eternal</code></sub></p>
|
|
24
|
+
|
|
25
|
+
## ⚡ Quick start
|
|
26
|
+
|
|
27
|
+
**DeepSeek Harness (desktop / web)**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
dsh plugin --profile desktop add memory-eternal
|
|
31
|
+
# reopen DSH → sidebar "Memory"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Claude Code, Codex or Cursor — same vault via MCP**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm i -g memory-eternal
|
|
38
|
+
dsh-memory connect claude # or: codex / cursor
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Any MCP client**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx -y -p memory-eternal dsh-memory mcp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Browser or terminal**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
dsh-memory open # http://127.0.0.1:7999
|
|
51
|
+
npx -y -p memory-eternal dsh-memory tui # live queue in the terminal
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 🧾 Does it actually save tokens?
|
|
55
|
+
|
|
56
|
+
Most memory products <em>say</em> they save tokens. We think you should check. The plugin ships a built-in **memory ledger** (Runtime status → Memory ledger) that records:
|
|
57
|
+
|
|
58
|
+
| Recorded | What it means |
|
|
59
|
+
|---|---|
|
|
60
|
+
| recall: hits + injected characters | how much memory actually entered the context |
|
|
61
|
+
| capture: LLM calls + input/output characters | what distillation cost you |
|
|
62
|
+
| usefulness: useful / not-useful feedback | whether recalled memories actually helped |
|
|
63
|
+
|
|
64
|
+
The honest math:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
net benefit ≈ avoided context cost − (injected characters + distillation calls × price)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Scenario | You pay | You avoid |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| 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) |
|
|
73
|
+
| One-off question, low hit rate | recall injection | usually nothing |
|
|
74
|
+
|
|
75
|
+
> 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.
|
|
76
|
+
|
|
77
|
+
## 🛡️ Review first, prove later
|
|
78
|
+
|
|
79
|
+
A memory system that silently ingests everything will eventually recall a wrong fact as truth. memory-eternal defaults to **review-before-commit**:
|
|
80
|
+
|
|
81
|
+
- new cards land in a **pending queue**; nothing enters the main vault until a human approves it;
|
|
82
|
+
- approve, reject or bulk-process from the Web UI, the terminal TUI, or the CLI;
|
|
83
|
+
- every status change is appended to an **immutable audit log** (who / what / when / why) — enforced at the SQLite layer, not by convention;
|
|
84
|
+
- agents can read and propose, but **cannot approve their own cards**;
|
|
85
|
+
- deleted cards go to a recycle bin (30 days by default).
|
|
86
|
+
|
|
87
|
+
## 🧩 One vault, every agent
|
|
88
|
+
|
|
89
|
+
| Entry | What you get |
|
|
90
|
+
|---|---|
|
|
91
|
+
| **DSH desktop / web** | embedded memory UI: review, graph, config, ledger |
|
|
92
|
+
| **Claude Code / Codex / Cursor** | MCP server, same local vault, <code>dsh-memory connect</code> |
|
|
93
|
+
| **Any MCP client** | <code>npx -y -p memory-eternal dsh-memory mcp</code> |
|
|
94
|
+
| **Terminal** | <code>dsh-memory tui</code> — live queue, select-all, batch approve/reject, long-form reader |
|
|
95
|
+
| **Browser** | <code>dsh-memory open</code> → http://127.0.0.1:7999 |
|
|
96
|
+
|
|
97
|
+
## 📸 Screenshots
|
|
98
|
+
|
|
99
|
+
<p align="center">
|
|
100
|
+
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/graph-en.png" width="32%" alt="Knowledge graph: clusters by kind, tag edges" />
|
|
101
|
+
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/audit-en.png" width="32%" alt="Review inbox: type bar, queue and verdict pane" />
|
|
102
|
+
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/status-en.png" width="32%" alt="Runtime status: database, backups, capture, version" />
|
|
103
|
+
</p>
|
|
104
|
+
<p align="center"><sub>▲ Knowledge graph · review inbox · runtime status</sub></p>
|
|
105
|
+
|
|
106
|
+
<p align="center">
|
|
107
|
+
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-audit.png" width="49%" alt="Native terminal audit: select-all, batch approve/reject" />
|
|
108
|
+
<img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/screen/tui-reader.png" width="49%" alt="Native terminal long-form reader" />
|
|
109
|
+
</p>
|
|
110
|
+
<p align="center"><sub>▲ Terminal-native review and long-form reading — <code>dsh-memory tui</code></sub></p>
|
|
111
|
+
|
|
112
|
+
## 📚 Documentation & links
|
|
113
|
+
|
|
114
|
+
- [Full manual (English)](docs/GUIDE.md) · [完整手册(中文)](docs/GUIDE.zh-CN.md)
|
|
115
|
+
- [Private deployment (Docker / systemd)](docs/DEPLOY.md)
|
|
116
|
+
- [Changelog](docs/CHANGELOG.md) · [Architecture](docs/ARCHITECTURE.md)
|
|
117
|
+
- [Terminal plugin (dsh-tui)](dsh-tui-plugin/README.md) · [Orca launcher](orca-plugin/README.md) · [Cursor / VS Code extension](cursor-extension/README.md)
|
|
118
|
+
- [Report a bug](https://github.com/EternalNight996/memory-eternal/issues)
|
|
119
|
+
|
|
120
|
+
## 💬 Community
|
|
121
|
+
|
|
122
|
+
**Questions, ideas, or DSH plugin talk — join the groups:**
|
|
123
|
+
|
|
124
|
+
| QQ group | WeChat group |
|
|
125
|
+
|:---:|:---:|
|
|
126
|
+
| <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.png" width="240" alt="WeChat group QR" /> |
|
|
127
|
+
|
|
128
|
+
**Buy the author a coffee (optional):**
|
|
129
|
+
|
|
130
|
+
| WeChat Pay | WeChat Reward |
|
|
131
|
+
|:---:|:---:|
|
|
132
|
+
| <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" /> |
|
|
133
|
+
|
|
134
|
+
> Sponsorship is optional; the plugin stays MIT and free. See [SPONSOR.md](SPONSOR.md).
|
|
135
|
+
|
|
136
|
+
## 📄 License
|
|
137
|
+
|
|
138
|
+
MIT — use it, self-host it, build on it.
|