@morningljn/mnemo 0.1.2
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/LICENSE +21 -0
- package/README.md +156 -0
- package/README_zh.md +156 -0
- package/banner.png +0 -0
- package/dist/init.d.ts +10 -0
- package/dist/init.js +138 -0
- package/dist/init.js.map +1 -0
- package/dist/retriever.d.ts +70 -0
- package/dist/retriever.js +689 -0
- package/dist/retriever.js.map +1 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.js +62 -0
- package/dist/schema.js.map +1 -0
- package/dist/security.d.ts +15 -0
- package/dist/security.js +116 -0
- package/dist/security.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +150 -0
- package/dist/server.js.map +1 -0
- package/dist/store.d.ts +122 -0
- package/dist/store.js +696 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +72 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +46 -0
- package/src/init.ts +157 -0
- package/src/retriever.ts +806 -0
- package/src/schema.ts +61 -0
- package/src/security.ts +132 -0
- package/src/server.ts +172 -0
- package/src/store.ts +805 -0
- package/src/types.ts +81 -0
- package/tests/retriever.test.ts +55 -0
- package/tests/security.test.ts +30 -0
- package/tests/store.test.ts +104 -0
- package/tsconfig.json +16 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retriever.js","sourceRoot":"","sources":["../src/retriever.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SCHEMA = "\n-- \u4E8B\u5B9E\u8868\nCREATE TABLE IF NOT EXISTS facts (\n fact_id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL UNIQUE,\n category TEXT DEFAULT 'general',\n tags TEXT DEFAULT '',\n keywords TEXT DEFAULT '[]',\n trust_score REAL DEFAULT 0.5,\n retrieval_count INTEGER DEFAULT 0,\n helpful_count INTEGER DEFAULT 0,\n created_at TEXT DEFAULT (datetime('now', 'localtime')),\n updated_at TEXT DEFAULT (datetime('now', 'localtime'))\n);\n\n-- \u5B9E\u4F53\u8868\nCREATE TABLE IF NOT EXISTS entities (\n entity_id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL,\n entity_type TEXT DEFAULT 'unknown',\n aliases TEXT DEFAULT '',\n created_at TEXT DEFAULT (datetime('now', 'localtime'))\n);\n\n-- \u4E8B\u5B9E-\u5B9E\u4F53\u5173\u8054\u8868\nCREATE TABLE IF NOT EXISTS fact_entities (\n fact_id INTEGER NOT NULL REFERENCES facts(fact_id) ON DELETE CASCADE,\n entity_id INTEGER NOT NULL REFERENCES entities(entity_id) ON DELETE CASCADE,\n PRIMARY KEY (fact_id, entity_id)\n);\n\n-- \u7D22\u5F15\nCREATE INDEX IF NOT EXISTS idx_facts_trust ON facts(trust_score DESC);\nCREATE INDEX IF NOT EXISTS idx_facts_category ON facts(category);\nCREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name);\nCREATE INDEX IF NOT EXISTS idx_fact_entities_entity ON fact_entities(entity_id);\n\n-- FTS5 \u5168\u6587\u7D22\u5F15\nCREATE VIRTUAL TABLE IF NOT EXISTS facts_fts\n USING fts5(content, tags, content=facts, content_rowid=fact_id);\n\n-- FTS5 \u540C\u6B65\u89E6\u53D1\u5668\uFF1A\u63D2\u5165\nCREATE TRIGGER IF NOT EXISTS facts_ai AFTER INSERT ON facts BEGIN\n INSERT INTO facts_fts(rowid, content, tags)\n VALUES (new.fact_id, new.content, new.tags);\nEND;\n\n-- FTS5 \u540C\u6B65\u89E6\u53D1\u5668\uFF1A\u5220\u9664\nCREATE TRIGGER IF NOT EXISTS facts_ad AFTER DELETE ON facts BEGIN\n INSERT INTO facts_fts(facts_fts, rowid, content, tags)\n VALUES ('delete', old.fact_id, old.content, old.tags);\nEND;\n\n-- FTS5 \u540C\u6B65\u89E6\u53D1\u5668\uFF1A\u66F4\u65B0\nCREATE TRIGGER IF NOT EXISTS facts_au AFTER UPDATE ON facts BEGIN\n INSERT INTO facts_fts(facts_fts, rowid, content, tags)\n VALUES ('delete', old.fact_id, old.content, old.tags);\n INSERT INTO facts_fts(rowid, content, tags)\n VALUES (new.fact_id, new.content, new.tags);\nEND;\n";
|
package/dist/schema.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const SCHEMA = `
|
|
2
|
+
-- 事实表
|
|
3
|
+
CREATE TABLE IF NOT EXISTS facts (
|
|
4
|
+
fact_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
5
|
+
content TEXT NOT NULL UNIQUE,
|
|
6
|
+
category TEXT DEFAULT 'general',
|
|
7
|
+
tags TEXT DEFAULT '',
|
|
8
|
+
keywords TEXT DEFAULT '[]',
|
|
9
|
+
trust_score REAL DEFAULT 0.5,
|
|
10
|
+
retrieval_count INTEGER DEFAULT 0,
|
|
11
|
+
helpful_count INTEGER DEFAULT 0,
|
|
12
|
+
created_at TEXT DEFAULT (datetime('now', 'localtime')),
|
|
13
|
+
updated_at TEXT DEFAULT (datetime('now', 'localtime'))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
-- 实体表
|
|
17
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
18
|
+
entity_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
19
|
+
name TEXT NOT NULL,
|
|
20
|
+
entity_type TEXT DEFAULT 'unknown',
|
|
21
|
+
aliases TEXT DEFAULT '',
|
|
22
|
+
created_at TEXT DEFAULT (datetime('now', 'localtime'))
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
-- 事实-实体关联表
|
|
26
|
+
CREATE TABLE IF NOT EXISTS fact_entities (
|
|
27
|
+
fact_id INTEGER NOT NULL REFERENCES facts(fact_id) ON DELETE CASCADE,
|
|
28
|
+
entity_id INTEGER NOT NULL REFERENCES entities(entity_id) ON DELETE CASCADE,
|
|
29
|
+
PRIMARY KEY (fact_id, entity_id)
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
-- 索引
|
|
33
|
+
CREATE INDEX IF NOT EXISTS idx_facts_trust ON facts(trust_score DESC);
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_facts_category ON facts(category);
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name);
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_fact_entities_entity ON fact_entities(entity_id);
|
|
37
|
+
|
|
38
|
+
-- FTS5 全文索引
|
|
39
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS facts_fts
|
|
40
|
+
USING fts5(content, tags, content=facts, content_rowid=fact_id);
|
|
41
|
+
|
|
42
|
+
-- FTS5 同步触发器:插入
|
|
43
|
+
CREATE TRIGGER IF NOT EXISTS facts_ai AFTER INSERT ON facts BEGIN
|
|
44
|
+
INSERT INTO facts_fts(rowid, content, tags)
|
|
45
|
+
VALUES (new.fact_id, new.content, new.tags);
|
|
46
|
+
END;
|
|
47
|
+
|
|
48
|
+
-- FTS5 同步触发器:删除
|
|
49
|
+
CREATE TRIGGER IF NOT EXISTS facts_ad AFTER DELETE ON facts BEGIN
|
|
50
|
+
INSERT INTO facts_fts(facts_fts, rowid, content, tags)
|
|
51
|
+
VALUES ('delete', old.fact_id, old.content, old.tags);
|
|
52
|
+
END;
|
|
53
|
+
|
|
54
|
+
-- FTS5 同步触发器:更新
|
|
55
|
+
CREATE TRIGGER IF NOT EXISTS facts_au AFTER UPDATE ON facts BEGIN
|
|
56
|
+
INSERT INTO facts_fts(facts_fts, rowid, content, tags)
|
|
57
|
+
VALUES ('delete', old.fact_id, old.content, old.tags);
|
|
58
|
+
INSERT INTO facts_fts(rowid, content, tags)
|
|
59
|
+
VALUES (new.fact_id, new.content, new.tags);
|
|
60
|
+
END;
|
|
61
|
+
`;
|
|
62
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DrB,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 记忆安全扫描器。
|
|
3
|
+
* 移植自 Hermes memory_tool.py 的 _scan_memory_content 并扩展。
|
|
4
|
+
*
|
|
5
|
+
* 三重扫描:提示注入检测、PII 检测、不可见 Unicode 检测。
|
|
6
|
+
*/
|
|
7
|
+
import type { SecurityScanResult } from './types.js';
|
|
8
|
+
/** 扫描注入尝试(硬拦截级别) */
|
|
9
|
+
export declare function scanForInjection(text: string): SecurityScanResult;
|
|
10
|
+
/** 扫描 PII(警告级别,不阻止存储) */
|
|
11
|
+
export declare function scanForPii(text: string): SecurityScanResult;
|
|
12
|
+
/** 扫描不可见 Unicode(拦截级别) */
|
|
13
|
+
export declare function scanForInvisibleUnicode(text: string): SecurityScanResult;
|
|
14
|
+
/** 综合安全扫描 */
|
|
15
|
+
export declare function fullSecurityScan(text: string): SecurityScanResult;
|
package/dist/security.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 记忆安全扫描器。
|
|
3
|
+
* 移植自 Hermes memory_tool.py 的 _scan_memory_content 并扩展。
|
|
4
|
+
*
|
|
5
|
+
* 三重扫描:提示注入检测、PII 检测、不可见 Unicode 检测。
|
|
6
|
+
*/
|
|
7
|
+
// -- 提示注入检测 ---
|
|
8
|
+
/** 检测伪造围栏标签 */
|
|
9
|
+
const MEMORY_CONTEXT_INJECTION_RE = /<\s*\/?\s*memory-context\s*>/i;
|
|
10
|
+
/** 检测 system-reminder 伪装 */
|
|
11
|
+
const SYSTEM_REMINDER_INJECTION_RE = /<\s*system-reminder\s*>/i;
|
|
12
|
+
/** 提示注入模式 */
|
|
13
|
+
const PROMPT_INJECTION_PATTERNS = [
|
|
14
|
+
/ignore\s+(?:all\s+)?(?:previous|above|prior)\s+(?:instructions|context)/i,
|
|
15
|
+
/forget\s+(?:all\s+)?(?:previous|above|prior)\s+(?:instructions|context)/i,
|
|
16
|
+
/you\s+are\s+now\s+(?:a|an|the)\s+/i,
|
|
17
|
+
/do\s+not\s+tell\s+the\s+user/i,
|
|
18
|
+
/(?:system|admin|root)\s+(?:prompt|instruction|message)/i,
|
|
19
|
+
/disregard\s+(?:your|all|any)\s+(?:instructions|rules|guidelines)/i,
|
|
20
|
+
/act\s+as\s+(?:if|though)\s+you\s+(?:have\s+no|don'?t\s+have)\s+(?:restrictions|limits|rules)/i,
|
|
21
|
+
];
|
|
22
|
+
// -- 数据外泄检测 ---
|
|
23
|
+
const EXFIL_PATTERNS = [
|
|
24
|
+
/curl\s+[^\n]*\$\{?\w*(?:KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|API)/i,
|
|
25
|
+
/wget\s+[^\n]*\$\{?\w*(?:KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|API)/i,
|
|
26
|
+
/(?:cat|type|read)\s+[^\n]*(?:\.env|credentials|\.netrc|\.pgpass|\.npmrc)/i,
|
|
27
|
+
/authorized_keys/i,
|
|
28
|
+
];
|
|
29
|
+
// -- PII 检测 ---
|
|
30
|
+
const EMAIL_RE = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;
|
|
31
|
+
const API_KEY_PATTERNS = [
|
|
32
|
+
/(?:sk|pk|api[_-]?key|token|secret)[_-][a-zA-Z0-9]{20,}/gi,
|
|
33
|
+
/ghp_[a-zA-Z0-9]{36}/g,
|
|
34
|
+
/AKIA[0-9A-Z]{16}/g,
|
|
35
|
+
/AIza[0-9A-Za-z_-]{35}/g,
|
|
36
|
+
];
|
|
37
|
+
// -- 不可见 Unicode ---
|
|
38
|
+
const INVISIBLE_UNICODE_RANGES = [
|
|
39
|
+
[0x200B, 0x200F, '零宽字符'],
|
|
40
|
+
[0x2028, 0x202E, '控制字符'],
|
|
41
|
+
[0x2060, 0x206F, '不可见格式字符'],
|
|
42
|
+
[0xFEFF, 0xFEFF, 'BOM'],
|
|
43
|
+
[0xFFF9, 0xFFFB, '注解字符'],
|
|
44
|
+
];
|
|
45
|
+
// -- 导出函数 ---
|
|
46
|
+
/** 扫描注入尝试(硬拦截级别) */
|
|
47
|
+
export function scanForInjection(text) {
|
|
48
|
+
const injectionAttempts = [];
|
|
49
|
+
if (MEMORY_CONTEXT_INJECTION_RE.test(text)) {
|
|
50
|
+
injectionAttempts.push('检测到 memory-context 标签注入');
|
|
51
|
+
}
|
|
52
|
+
if (SYSTEM_REMINDER_INJECTION_RE.test(text)) {
|
|
53
|
+
injectionAttempts.push('检测到 system-reminder 标签注入');
|
|
54
|
+
}
|
|
55
|
+
for (const pattern of PROMPT_INJECTION_PATTERNS) {
|
|
56
|
+
if (pattern.test(text)) {
|
|
57
|
+
injectionAttempts.push(`匹配提示注入模式: ${pattern.source}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const pattern of EXFIL_PATTERNS) {
|
|
61
|
+
if (pattern.test(text)) {
|
|
62
|
+
injectionAttempts.push(`匹配数据外泄模式`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
safe: injectionAttempts.length === 0,
|
|
67
|
+
warnings: [],
|
|
68
|
+
hasPii: false,
|
|
69
|
+
injectionAttempts,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/** 扫描 PII(警告级别,不阻止存储) */
|
|
73
|
+
export function scanForPii(text) {
|
|
74
|
+
const warnings = [];
|
|
75
|
+
let hasPii = false;
|
|
76
|
+
// 重置 lastIndex(因为使用了 g flag)
|
|
77
|
+
EMAIL_RE.lastIndex = 0;
|
|
78
|
+
if (EMAIL_RE.test(text)) {
|
|
79
|
+
warnings.push('包含邮箱地址');
|
|
80
|
+
hasPii = true;
|
|
81
|
+
}
|
|
82
|
+
for (const p of API_KEY_PATTERNS) {
|
|
83
|
+
p.lastIndex = 0;
|
|
84
|
+
if (p.test(text)) {
|
|
85
|
+
warnings.push('包含 API 密钥模式');
|
|
86
|
+
hasPii = true;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { safe: true, warnings, hasPii, injectionAttempts: [] };
|
|
91
|
+
}
|
|
92
|
+
/** 扫描不可见 Unicode(拦截级别) */
|
|
93
|
+
export function scanForInvisibleUnicode(text) {
|
|
94
|
+
const warnings = [];
|
|
95
|
+
for (const [lo, hi, name] of INVISIBLE_UNICODE_RANGES) {
|
|
96
|
+
for (let cp = lo; cp <= hi; cp++) {
|
|
97
|
+
if (text.includes(String.fromCodePoint(cp))) {
|
|
98
|
+
warnings.push(`包含不可见 Unicode: ${name} (U+${cp.toString(16).toUpperCase()})`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return { safe: warnings.length === 0, warnings, hasPii: false, injectionAttempts: [] };
|
|
103
|
+
}
|
|
104
|
+
/** 综合安全扫描 */
|
|
105
|
+
export function fullSecurityScan(text) {
|
|
106
|
+
const injection = scanForInjection(text);
|
|
107
|
+
const pii = scanForPii(text);
|
|
108
|
+
const unicode = scanForInvisibleUnicode(text);
|
|
109
|
+
return {
|
|
110
|
+
safe: injection.safe && unicode.safe,
|
|
111
|
+
warnings: [...injection.warnings, ...pii.warnings, ...unicode.warnings],
|
|
112
|
+
hasPii: pii.hasPii,
|
|
113
|
+
injectionAttempts: injection.injectionAttempts,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
package/dist/server.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { z } from 'zod/v4';
|
|
7
|
+
import { MemoryStore } from './store.js';
|
|
8
|
+
import { FactRetriever } from './retriever.js';
|
|
9
|
+
import { fullSecurityScan } from './security.js';
|
|
10
|
+
const FACT_STORE_DESCRIPTION = `结构化事实记忆系统(SQLite+FTS5 索引)。支持读写。
|
|
11
|
+
|
|
12
|
+
操作:
|
|
13
|
+
- search — 关键词查找
|
|
14
|
+
- probe — 实体探测:关于某人/某事的所有事实
|
|
15
|
+
- related — 实体关联
|
|
16
|
+
- reason — 组合推理:同时关联多个实体的事实
|
|
17
|
+
- contradict — 矛盾检测
|
|
18
|
+
- list — 浏览事实
|
|
19
|
+
- add — 添加新事实(自动去重,相似则更新)
|
|
20
|
+
- update — 更新已有事实
|
|
21
|
+
- remove — 删除事实
|
|
22
|
+
|
|
23
|
+
写入时先 search 检查是否已存在相似事实。identity/coding_style/tool_pref/workflow/general → 全局库,project → 项目库。`;
|
|
24
|
+
const factStoreSchema = {
|
|
25
|
+
action: z.enum(['add', 'search', 'probe', 'related', 'reason', 'contradict', 'update', 'remove', 'list']),
|
|
26
|
+
content: z.string().optional().describe("事实内容('add' 必需)"),
|
|
27
|
+
query: z.string().optional().describe("搜索查询('search' 必需)"),
|
|
28
|
+
entity: z.string().optional().describe("实体名('probe'/'related' 使用)"),
|
|
29
|
+
entities: z.array(z.string()).optional().describe("实体列表('reason' 使用)"),
|
|
30
|
+
fact_id: z.number().optional().describe("事实 ID('update'/'remove' 使用)"),
|
|
31
|
+
category: z.enum(['identity', 'coding_style', 'tool_pref', 'workflow', 'general']).optional(),
|
|
32
|
+
tags: z.string().optional().describe('逗号分隔标签'),
|
|
33
|
+
trust_delta: z.number().optional().describe("'update' 的信任调整值"),
|
|
34
|
+
min_trust: z.number().optional().describe('最低信任过滤(默认 0.3)'),
|
|
35
|
+
limit: z.number().optional().describe('最大结果数(默认 10)'),
|
|
36
|
+
};
|
|
37
|
+
const factFeedbackSchema = {
|
|
38
|
+
action: z.enum(['helpful', 'unhelpful']),
|
|
39
|
+
fact_id: z.number().describe('要评分的事实 ID'),
|
|
40
|
+
};
|
|
41
|
+
function resolveCategory(category) {
|
|
42
|
+
if (!category)
|
|
43
|
+
return 'general';
|
|
44
|
+
const valid = ['identity', 'coding_style', 'tool_pref', 'workflow', 'general'];
|
|
45
|
+
return valid.includes(category) ? category : 'general';
|
|
46
|
+
}
|
|
47
|
+
const minTrust = 0.3;
|
|
48
|
+
// -- Initialize store + retriever --
|
|
49
|
+
const dbPath = join(homedir(), '.mnemo', 'facts.db');
|
|
50
|
+
const store = new MemoryStore(dbPath);
|
|
51
|
+
const retriever = new FactRetriever(store, { temporalDecayHalfLife: 30 });
|
|
52
|
+
// Startup maintenance
|
|
53
|
+
store.decayTrustScores();
|
|
54
|
+
store.auditContradictions();
|
|
55
|
+
// -- MCP Server --
|
|
56
|
+
const server = new McpServer({ name: 'mnemo-mcp', version: '0.1.0' });
|
|
57
|
+
server.tool('fact_store', FACT_STORE_DESCRIPTION, factStoreSchema, async (args) => {
|
|
58
|
+
try {
|
|
59
|
+
const a = args;
|
|
60
|
+
const category = resolveCategory(a.category);
|
|
61
|
+
switch (a.action) {
|
|
62
|
+
case 'add': {
|
|
63
|
+
if (!a.content)
|
|
64
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: content' }) }] };
|
|
65
|
+
const similar = store.findSimilarFact(a.content, category) ?? store.findSimilarFact(a.content);
|
|
66
|
+
let warnings;
|
|
67
|
+
const scan = fullSecurityScan(a.content);
|
|
68
|
+
if (scan.warnings.length > 0 || scan.hasPii)
|
|
69
|
+
warnings = [...scan.warnings];
|
|
70
|
+
if (similar) {
|
|
71
|
+
store.updateFact(similar.factId, { content: a.content, tags: a.tags, trustDelta: 0.05 });
|
|
72
|
+
const demoted = store.demoteContradictingFacts(similar.factId, a.content, category);
|
|
73
|
+
return { content: [{ type: 'text', text: JSON.stringify({ fact_id: similar.factId, status: 'updated', reason: 'similar_fact_merged', ...(demoted > 0 ? { contradicted_demoted: demoted } : {}), ...(warnings ? { warnings } : {}) }) }] };
|
|
74
|
+
}
|
|
75
|
+
const factId = store.addFact(a.content, category, a.tags ?? '');
|
|
76
|
+
const demoted = store.demoteContradictingFacts(factId, a.content, category);
|
|
77
|
+
return { content: [{ type: 'text', text: JSON.stringify({ fact_id: factId, status: 'added', category, ...(demoted > 0 ? { contradicted_demoted: demoted } : {}), ...(warnings ? { warnings } : {}) }) }] };
|
|
78
|
+
}
|
|
79
|
+
case 'search': {
|
|
80
|
+
if (!a.query)
|
|
81
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: query' }) }] };
|
|
82
|
+
const results = retriever.search(a.query, { category: a.category ? category : undefined, minTrust: a.min_trust ?? minTrust, limit: a.limit ?? 10 });
|
|
83
|
+
return { content: [{ type: 'text', text: JSON.stringify({ results, count: results.length }) }] };
|
|
84
|
+
}
|
|
85
|
+
case 'probe': {
|
|
86
|
+
if (!a.entity)
|
|
87
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: entity' }) }] };
|
|
88
|
+
const results = retriever.probe(a.entity, { minTrust: a.min_trust ?? minTrust, limit: a.limit ?? 10 });
|
|
89
|
+
return { content: [{ type: 'text', text: JSON.stringify({ results, count: results.length }) }] };
|
|
90
|
+
}
|
|
91
|
+
case 'related': {
|
|
92
|
+
if (!a.entity)
|
|
93
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: entity' }) }] };
|
|
94
|
+
const results = retriever.related(a.entity, { minTrust: a.min_trust ?? minTrust, limit: a.limit ?? 10 });
|
|
95
|
+
return { content: [{ type: 'text', text: JSON.stringify({ results, count: results.length }) }] };
|
|
96
|
+
}
|
|
97
|
+
case 'reason': {
|
|
98
|
+
const entities = a.entities ?? [];
|
|
99
|
+
if (entities.length === 0)
|
|
100
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: "reason requires 'entities' list" }) }] };
|
|
101
|
+
const results = retriever.reason(entities, { minTrust: a.min_trust ?? minTrust, limit: a.limit ?? 10 });
|
|
102
|
+
return { content: [{ type: 'text', text: JSON.stringify({ results, count: results.length }) }] };
|
|
103
|
+
}
|
|
104
|
+
case 'contradict': {
|
|
105
|
+
const results = retriever.contradict({ threshold: 0.3, limit: a.limit ?? 10 });
|
|
106
|
+
return { content: [{ type: 'text', text: JSON.stringify({ results, count: results.length }) }] };
|
|
107
|
+
}
|
|
108
|
+
case 'update': {
|
|
109
|
+
if (!a.fact_id)
|
|
110
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: fact_id' }) }] };
|
|
111
|
+
const updated = store.updateFact(a.fact_id, { content: a.content, tags: a.tags, category, trustDelta: a.trust_delta });
|
|
112
|
+
return { content: [{ type: 'text', text: JSON.stringify({ updated }) }] };
|
|
113
|
+
}
|
|
114
|
+
case 'remove': {
|
|
115
|
+
if (!a.fact_id)
|
|
116
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: fact_id' }) }] };
|
|
117
|
+
const removed = store.removeFact(a.fact_id);
|
|
118
|
+
return { content: [{ type: 'text', text: JSON.stringify({ removed }) }] };
|
|
119
|
+
}
|
|
120
|
+
case 'list': {
|
|
121
|
+
const facts = store.listFacts(category, a.min_trust ?? 0.0, a.limit ?? 10);
|
|
122
|
+
return { content: [{ type: 'text', text: JSON.stringify({ facts, count: facts.length }) }] };
|
|
123
|
+
}
|
|
124
|
+
default:
|
|
125
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: `Unknown action: ${a.action}` }) }] };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }] };
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
server.tool('fact_feedback', '使用事实后评分。标记 helpful 如果准确,unhelpful 如果过时。训练记忆系统 — 好事实上升,坏事实下降。', factFeedbackSchema, async (args) => {
|
|
133
|
+
try {
|
|
134
|
+
const a = args;
|
|
135
|
+
if (!a.fact_id)
|
|
136
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Missing required argument: fact_id' }) }] };
|
|
137
|
+
const result = store.recordFeedback(a.fact_id, a.action === 'helpful');
|
|
138
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }] };
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
// -- Start --
|
|
145
|
+
const transport = new StdioServerTransport();
|
|
146
|
+
server.connect(transport).catch(err => {
|
|
147
|
+
console.error('mnemo-mcp failed to start:', err);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite 事实存储层。
|
|
3
|
+
* 移植自 Ocean CLI MemoryStore,使用 better-sqlite3 同步 API。
|
|
4
|
+
*
|
|
5
|
+
* 职责:
|
|
6
|
+
* - CRUD 操作(facts + entities + fact_entities)
|
|
7
|
+
* - 实体自动提取(正则模式)
|
|
8
|
+
* - 信任评分反馈(非对称调整)
|
|
9
|
+
* - 去重(content UNIQUE 约束)
|
|
10
|
+
*/
|
|
11
|
+
import Database from 'better-sqlite3';
|
|
12
|
+
import type { Fact, FactCategory } from './types.js';
|
|
13
|
+
export declare class MemoryStore {
|
|
14
|
+
private defaultTrust;
|
|
15
|
+
private db;
|
|
16
|
+
private stmtInsertFact;
|
|
17
|
+
private stmtFindFactByContent;
|
|
18
|
+
private stmtFindEntityByName;
|
|
19
|
+
private stmtFindEntityByAlias;
|
|
20
|
+
private stmtInsertEntity;
|
|
21
|
+
private stmtInsertFactEntity;
|
|
22
|
+
private stmtDeleteFactEntities;
|
|
23
|
+
private stmtGetEntitiesForFact;
|
|
24
|
+
constructor(dbPath: string, defaultTrust?: number);
|
|
25
|
+
private initSchema;
|
|
26
|
+
/** 增量迁移:添加新列(已存在则跳过) */
|
|
27
|
+
private migrateSchema;
|
|
28
|
+
private prepareStatements;
|
|
29
|
+
/** 添加事实,返回 fact_id。精确重复返回已有 ID。 */
|
|
30
|
+
addFact(content: string, category?: FactCategory, tags?: string): number;
|
|
31
|
+
/**
|
|
32
|
+
* 三层递进式去重。
|
|
33
|
+
*
|
|
34
|
+
* 层 1: 实体重叠 + 编辑距离(英文/有明确实体时效果最好)
|
|
35
|
+
* 层 2: Jaccard bigram 相似度(中文回退,bigram 分词不依赖实体提取)
|
|
36
|
+
* 层 3: Containment 包含率(捕捉"旧事实是新事实子集"的场景)
|
|
37
|
+
*
|
|
38
|
+
* 每层找到匹配即返回,不再尝试下一层。
|
|
39
|
+
*/
|
|
40
|
+
findSimilarFact(content: string, category?: FactCategory): Fact | null;
|
|
41
|
+
/** 归一化编辑距离(Levenshtein),返回 0~1 的相似度 */
|
|
42
|
+
private normalizedEditDistance;
|
|
43
|
+
/** 部分更新事实 */
|
|
44
|
+
updateFact(factId: number, updates: {
|
|
45
|
+
content?: string;
|
|
46
|
+
tags?: string;
|
|
47
|
+
category?: FactCategory;
|
|
48
|
+
trustDelta?: number;
|
|
49
|
+
}): boolean;
|
|
50
|
+
/** 删除事实 */
|
|
51
|
+
removeFact(factId: number): boolean;
|
|
52
|
+
/** 浏览事实(按信任评分排序) */
|
|
53
|
+
listFacts(category?: FactCategory, minTrust?: number, limit?: number): Fact[];
|
|
54
|
+
/** 记录反馈,调整信任评分 */
|
|
55
|
+
recordFeedback(factId: number, helpful: boolean): {
|
|
56
|
+
oldTrust: number;
|
|
57
|
+
newTrust: number;
|
|
58
|
+
helpfulCount: number;
|
|
59
|
+
};
|
|
60
|
+
/** 按实体名查询关联事实 */
|
|
61
|
+
getFactsByEntity(entityName: string, category?: FactCategory, limit?: number): Fact[];
|
|
62
|
+
/** 按多实体 AND 查询(同时关联多个实体的事实) */
|
|
63
|
+
getFactsByEntities(entities: string[], category?: FactCategory, limit?: number): Fact[];
|
|
64
|
+
/** 获取事实关联的实体名列表 */
|
|
65
|
+
getEntitiesForFact(factId: number): string[];
|
|
66
|
+
/**
|
|
67
|
+
* 信任衰减:按 category 宽限期 + 衰减率处理过期事实。
|
|
68
|
+
* 超过宽限期的事实,trust_score 每周衰减 decayPerWeek。
|
|
69
|
+
* trust_score < MIN_SURVIVAL_TRUST 的自动删除。
|
|
70
|
+
* @returns { decayed: number, removed: number }
|
|
71
|
+
*/
|
|
72
|
+
decayTrustScores(): {
|
|
73
|
+
decayed: number;
|
|
74
|
+
removed: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* 矛盾降权:新事实添加后,查找同 category 中共享实体但内容冲突的旧事实,降低其 trust。
|
|
78
|
+
* 用归一化编辑距离判断冲突:同实体但编辑距离低 = 矛盾/需求变更。
|
|
79
|
+
* @returns 被降权的事实数量
|
|
80
|
+
*/
|
|
81
|
+
demoteContradictingFacts(newFactId: number, newContent: string, category: FactCategory): number;
|
|
82
|
+
/**
|
|
83
|
+
* 启动时矛盾审计:扫描所有事实对,找到内容冲突的,降权较旧的。
|
|
84
|
+
*
|
|
85
|
+
* 双层扫描:
|
|
86
|
+
* 1. 实体 JOIN(已有逻辑):捕捉有明确实体重叠的矛盾
|
|
87
|
+
* 2. Jaccard 回退(新增):捕捉中文事实等实体提取为空的矛盾
|
|
88
|
+
*
|
|
89
|
+
* 每次 session 启动必然执行,不依赖写入触发。
|
|
90
|
+
* @returns { audited: number, demoted: number }
|
|
91
|
+
*/
|
|
92
|
+
auditContradictions(): {
|
|
93
|
+
audited: number;
|
|
94
|
+
demoted: number;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* 项目活跃续命:重置所有 project category 事实的 updated_at。
|
|
98
|
+
* 用户在本项目启动 ocean = 项目正在开发,project 事实不应衰减。
|
|
99
|
+
* 项目完成后不再启动 = 自然衰减 + 自动清理。
|
|
100
|
+
*/
|
|
101
|
+
refreshProjectFacts(): void;
|
|
102
|
+
/** 获取事实总数 */
|
|
103
|
+
getTotalCount(): number;
|
|
104
|
+
/** 获取数据库连接(供 FactRetriever 直接使用) */
|
|
105
|
+
get connection(): Database.Database;
|
|
106
|
+
/** 去重用分词:英文空格分词 + 中文 bigram */
|
|
107
|
+
private tokenizeForDedup;
|
|
108
|
+
/** Jaccard 相似度 */
|
|
109
|
+
private jaccardSimilarity;
|
|
110
|
+
/** 包含率:短文本的 token 在长文本中出现的比例(双向取 max) */
|
|
111
|
+
private containmentScore;
|
|
112
|
+
/** 将中文 bigram 追加到 tags,让 FTS5 能检索中文词组 */
|
|
113
|
+
private enhanceTagsForChinese;
|
|
114
|
+
/** 实体类型分类 */
|
|
115
|
+
private classifyEntity;
|
|
116
|
+
/** 清理没有关联任何事实的孤立实体 */
|
|
117
|
+
private cleanOrphanEntities;
|
|
118
|
+
close(): void;
|
|
119
|
+
private resolveEntity;
|
|
120
|
+
private extractEntities;
|
|
121
|
+
private rowToFact;
|
|
122
|
+
}
|