memory-forge 0.3.13 → 0.4.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.
@@ -2,13 +2,15 @@
2
2
  * 后台自动化引擎: 全部用户无感知。
3
3
  */
4
4
  import type { MemoryStore, Memory } from "../store.js";
5
- /** 自动命名: 从内容中提取前几个字作为名称 */
5
+ /** 自动命名: 首句提取 + 词边界截断。不切词,不停半截。
6
+ * 用户可通过 memory_store({ name: "..." }) 覆盖。 */
6
7
  export declare function autoName(content: string): string;
7
- /** 自动合并: 检测相似内容并合并(异步,重新计算向量) */
8
+ /** 自动合并: 向量预筛 top-10 候选 + Jaccard 确认,避免全扫描。 */
8
9
  export declare function autoMerge(store: MemoryStore, newMemory: Memory): Promise<Memory | null>;
9
10
  /** 自动优先级: 基于访问频率 */
10
11
  export declare function autoPriority(memory: Memory): number;
11
12
  /** 自动衰减: Ebbinghaus 遗忘曲线 */
12
13
  export declare function autoDecay(memory: Memory): number;
13
- /** 生成上下文摘要给 Agent 注入 */
14
+ /** 生成上下文摘要给 Agent 注入。
15
+ * Recency 主导排序(最近使用的优先),分类衰减作 tiebreaker,priority=10 常青保护。 */
14
16
  export declare function generateContextSummary(store: MemoryStore, limit?: number): string;
@@ -1,34 +1,76 @@
1
1
  /**
2
2
  * 后台自动化引擎: 全部用户无感知。
3
3
  */
4
+ import { contentOverlap, safeTruncate } from "../store.js";
4
5
  import { saveMemory } from "../storage/local.js";
5
6
  import { embed } from "../embedding.js";
6
- /** 自动命名: 从内容中提取前几个字作为名称 */
7
+ /** 自动命名: 首句提取 + 词边界截断。不切词,不停半截。
8
+ * 用户可通过 memory_store({ name: "..." }) 覆盖。 */
7
9
  export function autoName(content) {
8
- // Strip code blocks, trim to ~30 chars
9
- const clean = content.replace(/```[\s\S]*?```/g, "").replace(/`/g, "").trim();
10
- const name = clean.slice(0, 40).replace(/\n/g, " ").trim();
10
+ // Strip code blocks and inline code
11
+ const clean = content
12
+ .replace(/```[\s\S]*?```/g, "")
13
+ .replace(/`/g, "")
14
+ .replace(/\n/g, ". ") // newlines as sentence boundaries
15
+ .replace(/\s+/g, " ")
16
+ .trim();
17
+ if (!clean)
18
+ return "memory";
19
+ // Find first natural sentence boundary
20
+ const endMarkers = [". ", "? ", "! ", ".\" ", ".\n"];
21
+ let end = -1;
22
+ for (const marker of endMarkers) {
23
+ const idx = clean.indexOf(marker);
24
+ if (idx > 0 && (end < 0 || idx < end))
25
+ end = idx + 1; // include the marker
26
+ }
27
+ // Take up to first boundary, capped at 60 chars
28
+ const maxLen = 60;
29
+ let name;
30
+ if (end > 0 && end <= maxLen) {
31
+ name = clean.slice(0, end).trim();
32
+ }
33
+ else if (clean.length <= maxLen) {
34
+ name = clean;
35
+ }
36
+ else {
37
+ // Truncate at last space before maxLen (word boundary)
38
+ const truncated = clean.slice(0, maxLen);
39
+ const lastSpace = truncated.lastIndexOf(" ");
40
+ name = lastSpace > maxLen * 0.5 ? truncated.slice(0, lastSpace) : truncated;
41
+ }
11
42
  return name || "memory";
12
43
  }
13
- /** 自动合并: 检测相似内容并合并(异步,重新计算向量) */
44
+ /** 自动合并: 向量预筛 top-10 候选 + Jaccard 确认,避免全扫描。 */
14
45
  export async function autoMerge(store, newMemory) {
15
- const all = [...store.list({ limit: 100, offset: 0 })];
16
- if (all.length === 0)
46
+ // Vector pre-filter: find top-10 semantically similar candidates
47
+ let candidates;
48
+ if (newMemory.vector.length > 0) {
49
+ candidates = store.search("", {
50
+ limit: 10, minSimilarity: 0.7,
51
+ queryVec: new Float32Array(newMemory.vector),
52
+ });
53
+ }
54
+ else {
55
+ // No vector yet — fall back to most recent 20
56
+ candidates = store.list({ limit: 20, offset: 0 });
57
+ }
58
+ if (candidates.length === 0)
17
59
  return null;
18
- for (const existing of all) {
60
+ for (const existing of candidates) {
19
61
  if (existing.id === newMemory.id)
20
62
  continue;
21
63
  const similarity = contentOverlap(existing.content, newMemory.content);
22
64
  if (similarity > 0.8) {
23
- // Merge: update existing with new content + fresh vector
24
65
  existing.content = newMemory.content;
25
66
  existing.access_count++;
26
67
  existing.last_accessed = new Date().toISOString();
27
- // Recompute vector for merged content
68
+ saveMemory(existing); // persist before embed (survives embed failure)
28
69
  const vec = await embed(existing.content);
29
- if (vec)
70
+ if (vec) {
30
71
  existing.vector = Array.from(vec);
31
- saveMemory(existing);
72
+ saveMemory(existing); // re-save with fresh vector
73
+ }
32
74
  store.remove(existing.id);
33
75
  store.add(existing);
34
76
  return existing;
@@ -62,50 +104,52 @@ export function autoDecay(memory) {
62
104
  return 0.2;
63
105
  return 0; // archive
64
106
  }
65
- /** 内容重叠度 (Jaccard 近似) */
66
- function contentOverlap(a, b) {
67
- const setA = new Set(a.toLowerCase().split(/\s+/).filter((w) => w.length > 2));
68
- const setB = new Set(b.toLowerCase().split(/\s+/).filter((w) => w.length > 2));
69
- if (setA.size === 0 || setB.size === 0)
70
- return 0;
71
- let intersection = 0;
72
- for (const w of setA) {
73
- if (setB.has(w))
74
- intersection++;
75
- }
76
- return intersection / Math.min(setA.size, setB.size);
77
- }
78
- /** 生成上下文摘要给 Agent 注入 */
107
+ /** 生成上下文摘要给 Agent 注入。
108
+ * Recency 主导排序(最近使用的优先),分类衰减作 tiebreaker,priority=10 常青保护。 */
79
109
  export function generateContextSummary(store, limit = 5) {
80
- const all = store.list({ limit: 100, offset: 0 });
81
- // Category boost: decision-log and project-context are more useful as quick context
82
- // than raw session transcripts or generic memories
83
- const CATEGORY_BOOST = {
84
- "decision-log": 2.0,
85
- "project-context": 1.8,
86
- "user-preference": 1.2,
87
- "code-pattern": 1.1,
88
- "session-transcript": 0, // excluded — raw transcripts are for deep recall, not quick context
89
- "general": 1.0,
110
+ // Category half-life (days) YourMemory-style decay rates.
111
+ // Strategic decisions decay slowly, casual notes decay fast.
112
+ const CATEGORY_HALFLIFE = {
113
+ "decision-log": 38,
114
+ "project-context": 30,
115
+ "user-preference": 24,
116
+ "code-pattern": 20,
117
+ "session-transcript": 0, // excluded from context injection
118
+ "general": 14,
90
119
  };
91
- // Filter + recency-first with category boost, priority as final tiebreaker
92
- const ranked = all
93
- .filter((m) => {
94
- const boost = CATEGORY_BOOST[m.category];
95
- return boost !== undefined ? boost > 0 : true; // exclude categories with boost=0
96
- })
97
- .sort((a, b) => {
120
+ const now = Date.now();
121
+ // Widen pool (3× limit) so recency reordering has room
122
+ const pool = store.list({ limit: Math.max(limit * 3, 50), offset: 0 });
123
+ // Filter out excluded categories
124
+ const eligible = pool.filter((m) => {
125
+ const hl = CATEGORY_HALFLIFE[m.category];
126
+ return hl === undefined || hl > 0;
127
+ });
128
+ // Split: evergreen (priority=10, force-include) vs normal
129
+ const evergreen = eligible.filter((m) => m.priority >= 10);
130
+ const normal = eligible.filter((m) => m.priority < 10);
131
+ // Sort normal: recency first (last_accessed > created_at), decay as tiebreaker
132
+ normal.sort((a, b) => {
98
133
  const aTime = a.last_accessed ? new Date(a.last_accessed).getTime() : new Date(a.created_at).getTime();
99
134
  const bTime = b.last_accessed ? new Date(b.last_accessed).getTime() : new Date(b.created_at).getTime();
100
- const aBoost = CATEGORY_BOOST[a.category] ?? 1.0;
101
- const bBoost = CATEGORY_BOOST[b.category] ?? 1.0;
102
- const aScore = aTime * aBoost;
103
- const bScore = bTime * bBoost;
104
- if (bScore !== aScore)
105
- return bScore - aScore;
106
- return (b.priority || 5) - (a.priority || 5);
135
+ // Recency primary: newer first
136
+ if (bTime !== aTime)
137
+ return bTime - aTime;
138
+ // Same recency category decay × priority decider
139
+ const aDays = (now - aTime) / 86400000;
140
+ const bDays = (now - bTime) / 86400000;
141
+ const aHalf = CATEGORY_HALFLIFE[a.category] ?? 14;
142
+ const bHalf = CATEGORY_HALFLIFE[b.category] ?? 14;
143
+ const aDecay = Math.pow(0.5, aDays / aHalf);
144
+ const bDecay = Math.pow(0.5, bDays / bHalf);
145
+ const aScore = aDecay * (a.priority || 5);
146
+ const bScore = bDecay * (b.priority || 5);
147
+ return bScore - aScore;
107
148
  });
108
- // Dedup: skip entries too similar to ones already selected (keep more recent)
149
+ // Merge: evergreen first (priority desc), then recency-sorted normal
150
+ evergreen.sort((a, b) => (b.priority || 10) - (a.priority || 10));
151
+ const ranked = [...evergreen, ...normal];
152
+ // Dedup: skip entries too similar to ones already selected
109
153
  const top = [];
110
154
  for (const m of ranked) {
111
155
  if (top.some((t) => contentOverlap(t.content, m.content) > 0.6))
@@ -134,10 +178,7 @@ export function generateContextSummary(store, limit = 5) {
134
178
  lines.push(`- [${m.name}] ${dateStr} | ${m.category}\n ${preview}`);
135
179
  }
136
180
  // Token budget note: tell agent if context is truncated
137
- const eligibleTotal = all.filter((m) => {
138
- const boost = CATEGORY_BOOST[m.category];
139
- return boost !== undefined ? boost > 0 : true;
140
- }).length;
181
+ const eligibleTotal = eligible.length;
141
182
  if (eligibleTotal > limit) {
142
183
  lines.push("", `[MemoryForge] Showing top ${limit} of ${eligibleTotal} eligible memories. ` +
143
184
  `Use memory_search or memory_recall to find more.`);
@@ -181,7 +222,7 @@ function smartPreview(content, maxLen) {
181
222
  if (meaningful.length === 0) {
182
223
  // No meaningful paragraphs found — raw truncation
183
224
  return content.length > maxLen
184
- ? content.slice(0, maxLen).replace(/\n/g, " ").trim() + "…"
225
+ ? safeTruncate(content, maxLen).replace(/\n/g, " ").trim() + "…"
185
226
  : content;
186
227
  }
187
228
  // Build preview from first meaningful paragraph(s)
@@ -195,7 +236,7 @@ function smartPreview(content, maxLen) {
195
236
  // First paragraph is too long — truncate at sentence boundary
196
237
  const cutoff = meaningful[i].slice(0, maxLen);
197
238
  const m = cutoff.match(/[.!?。!?]/g);
198
- const lastPunct = m ? cutoff.lastIndexOf(m[m.length - 1]) + 1 : 0;
239
+ const lastPunct = m ? Math.max(...m.map((p) => cutoff.lastIndexOf(p))) + 1 : 0;
199
240
  return (lastPunct > maxLen * 0.5 ? cutoff.slice(0, lastPunct) : cutoff.slice(0, maxLen)).trim() + "…";
200
241
  }
201
242
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auto/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auto/index.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,6 @@
3
3
  * 延迟加载: 首次调用时加载模型,后续毫秒级。
4
4
  * 降级: 加载失败 → 返回 null,memory_search 自动回退到关键词匹配。
5
5
  */
6
- /** 重试模型加载(后台调用,不阻塞) */
7
- export declare function retryEmbedder(): void;
8
6
  export declare function embed(text: string): Promise<Float32Array | null>;
9
7
  /** 预加载模型(后台运行,不阻塞) */
10
8
  export declare function preload(): void;
package/dist/embedding.js CHANGED
@@ -20,8 +20,20 @@ async function getEmbedder() {
20
20
  return loading;
21
21
  loading = (async () => {
22
22
  try {
23
+ console.error("[MemoryForge] Loading embedding model (~23MB, one-time download)…");
23
24
  const { pipeline } = await import("@huggingface/transformers");
24
- const engine = await pipeline("feature-extraction", "Xenova/all-MiniLM-L6-v2");
25
+ const engine = await pipeline("feature-extraction", "Xenova/all-MiniLM-L6-v2", {
26
+ progress_callback: (progress) => {
27
+ if (progress?.status === "downloading") {
28
+ const pct = progress?.progress ? Math.round(progress.progress) : 0;
29
+ const file = progress?.file ?? "";
30
+ if (pct > 0)
31
+ process.stderr.write(`\r[MemoryForge] Downloading model… ${pct}%`);
32
+ if (pct === 100)
33
+ process.stderr.write("\n");
34
+ }
35
+ },
36
+ });
25
37
  embedFn = async (text) => {
26
38
  const result = await engine(text, { pooling: "mean", normalize: true });
27
39
  return new Float32Array(result.data);
@@ -39,17 +51,6 @@ async function getEmbedder() {
39
51
  })();
40
52
  return loading;
41
53
  }
42
- /** 重试模型加载(后台调用,不阻塞) */
43
- export function retryEmbedder() {
44
- if (!embedFn || lastAttempt === 0)
45
- return;
46
- if (Date.now() - lastAttempt < RETRY_MS)
47
- return;
48
- console.error("[MemoryForge] Retrying embedding model download...");
49
- embedFn = null;
50
- loading = null;
51
- getEmbedder();
52
- }
53
54
  export async function embed(text) {
54
55
  const fn = await getEmbedder();
55
56
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,IAAI,OAAO,GAAmB,IAAI,CAAC;AACnC,IAAI,OAAO,GAA4B,IAAI,CAAC;AAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,mCAAmC;AAE7D,KAAK,UAAU,WAAW;IACxB,2EAA2E;IAC3E,IAAI,OAAO,IAAI,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;YAC/E,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC;YACF,WAAW,GAAG,CAAC,CAAC;YAChB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,4DAA4D,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC;YAChG,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;YAC3B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,OAAO,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO;IAC1C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,QAAQ;QAAE,OAAO;IAEhD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,OAAO,GAAG,IAAI,CAAC;IACf,OAAO,GAAG,IAAI,CAAC;IACf,WAAW,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAY;IACtC,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,OAAO;IACrB,WAAW,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../src/embedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,IAAI,OAAO,GAAmB,IAAI,CAAC;AACnC,IAAI,OAAO,GAA4B,IAAI,CAAC;AAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,mCAAmC;AAE7D,KAAK,UAAU,WAAW;IACxB,2EAA2E;IAC3E,IAAI,OAAO,IAAI,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,yBAAyB,EAAE;gBAC7E,iBAAiB,EAAE,CAAC,QAAa,EAAE,EAAE;oBACnC,IAAI,QAAQ,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;wBACvC,MAAM,GAAG,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnE,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;wBAClC,IAAI,GAAG,GAAG,CAAC;4BAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,GAAG,CAAC,CAAC;wBAChF,IAAI,GAAG,KAAK,GAAG;4BAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YACH,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC;YACF,WAAW,GAAG,CAAC,CAAC;YAChB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,4DAA4D,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC;YAChG,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;YAC3B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAY;IACtC,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,OAAO;IACrB,WAAW,EAAE,CAAC;AAChB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,11 +2,11 @@
2
2
  /**
3
3
  * MemoryForge — AI Agent 持久记忆引擎 (MVP)
4
4
  *
5
- * 8 MCP 工具 + 5 个后台自动化引擎 + Pro Shelby 云同步。
6
- * 嵌入: Transformers.js (23MB, 进程内)
7
- * 存储: Free 层本地 Markdown; Pro Shelby 云。
5
+ * 9 MCP tools + 5 auto-engines + Pro Shelby cloud sync.
6
+ * Embedding: Transformers.js (23MB, in-process).
7
+ * Storage: Free = local Markdown; Pro = Shelby cloud.
8
8
  *
9
- * 一键嵌入:
10
- * claude mcp add memory-forge -- npx memory-forge
9
+ * Quick start:
10
+ * npx memory-forge setup
11
11
  */
12
12
  export {};