@yun-zero/claw-memory 0.1.0 → 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/dist/hooks/bootstrap.js +1 -1
- package/dist/hooks/message.d.ts.map +1 -1
- package/dist/hooks/message.js +4 -9
- package/dist/hooks/message.js.map +1 -1
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +5 -8
- package/dist/tools/memory.js.map +1 -1
- package/openclaw.plugin.json +6 -1
- package/package.json +3 -3
- package/src/hooks/bootstrap.ts +1 -1
- package/src/hooks/message.ts +4 -10
- package/src/tools/memory.ts +5 -9
package/dist/hooks/bootstrap.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/hooks/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,UAAU,YAAY;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/hooks/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,UAAU,YAAY;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
package/dist/hooks/message.js
CHANGED
|
@@ -27,19 +27,14 @@ export async function handleMessageSent(event, db, dataDir) {
|
|
|
27
27
|
const qaContent = `Q: ${userMessage}\n\nA: ${assistantMessage}`;
|
|
28
28
|
// 解析 dataDir 中的 ~
|
|
29
29
|
const resolvedDataDir = dataDir.replace(/^~/, homedir());
|
|
30
|
-
//
|
|
31
|
-
if (!fs.existsSync(resolvedDataDir)) {
|
|
32
|
-
fs.mkdirSync(resolvedDataDir, { recursive: true });
|
|
33
|
-
}
|
|
30
|
+
// 直接创建目录(recursive: true 已处理存在的情况)
|
|
34
31
|
const memoriesDir = path.join(resolvedDataDir, 'memories');
|
|
35
|
-
|
|
36
|
-
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
37
|
-
}
|
|
32
|
+
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
38
33
|
// 保存记忆
|
|
39
34
|
const memoryId = uuidv4();
|
|
40
35
|
const contentPath = path.join(memoriesDir, `${memoryId}.md`);
|
|
41
|
-
//
|
|
42
|
-
fs.
|
|
36
|
+
// 异步写入文件
|
|
37
|
+
await fs.promises.writeFile(contentPath, qaContent, 'utf-8');
|
|
43
38
|
// 提取摘要(取前200字符)
|
|
44
39
|
const summary = assistantMessage.substring(0, 200);
|
|
45
40
|
// 插入数据库
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/hooks/message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAiB7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAmB,EACnB,EAAY,EACZ,OAAe;IAEf,6BAA6B;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,iBAAiB;QACjB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1C,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IAE/C,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,SAAS;IACT,MAAM,SAAS,GAAG,MAAM,WAAW,UAAU,gBAAgB,EAAE,CAAC;IAEhE,kBAAkB;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/hooks/message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAiB7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAmB,EACnB,EAAY,EACZ,OAAe;IAEf,6BAA6B;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,iBAAiB;QACjB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1C,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IAE/C,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,SAAS;IACT,MAAM,SAAS,GAAG,MAAM,WAAW,UAAU,gBAAgB,EAAE,CAAC;IAEhE,kBAAkB;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzD,mCAAmC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC3D,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO;IACP,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IAE7D,SAAS;IACT,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAE7D,gBAAgB;IAChB,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnD,QAAQ;IACR,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,EACV,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,EACV,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,QA2HhB"}
|
package/dist/tools/memory.js
CHANGED
|
@@ -28,11 +28,9 @@ export function registerMemoryTools(tools, db, dataDir) {
|
|
|
28
28
|
const { content, metadata = {} } = params;
|
|
29
29
|
const memoryId = uuidv4();
|
|
30
30
|
const memoriesDir = path.join(resolvedDataDir, 'memories');
|
|
31
|
-
|
|
32
|
-
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
33
|
-
}
|
|
31
|
+
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
34
32
|
const contentPath = path.join(memoriesDir, `${memoryId}.md`);
|
|
35
|
-
fs.
|
|
33
|
+
await fs.promises.writeFile(contentPath, content, 'utf-8');
|
|
36
34
|
db.prepare(`
|
|
37
35
|
INSERT INTO memories (id, content_path, summary, importance, created_at)
|
|
38
36
|
VALUES (?, ?, ?, ?, datetime('now'))
|
|
@@ -98,15 +96,14 @@ export function registerMemoryTools(tools, db, dataDir) {
|
|
|
98
96
|
const memories = db.prepare(`
|
|
99
97
|
SELECT summary, importance, created_at
|
|
100
98
|
FROM memories
|
|
101
|
-
WHERE
|
|
99
|
+
WHERE created_at >= ?
|
|
102
100
|
ORDER BY importance DESC
|
|
103
101
|
LIMIT 20
|
|
104
102
|
`).all(startDateStr);
|
|
105
|
-
const count = Array.isArray(memories) ? memories.length : 0;
|
|
106
103
|
return {
|
|
107
104
|
period,
|
|
108
|
-
count,
|
|
109
|
-
memories:
|
|
105
|
+
count: memories.length,
|
|
106
|
+
memories: memories.slice(0, 10)
|
|
110
107
|
};
|
|
111
108
|
}
|
|
112
109
|
});
|
package/dist/tools/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,UAAU,mBAAmB,CACjC,KAAU,EACV,EAAY,EACZ,OAAe;IAEf,kBAAkB;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzD,mBAAmB;IACnB,KAAK,CAAC,QAAQ,CAAC;QACb,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;gBAChE,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;wBAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;wBACtD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;qBACvD;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;QACD,OAAO,EAAE,KAAK,EAAE,MAAW,EAAE,EAAE;YAC7B,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;YAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC3D,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/tools/memory.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "claw-memory",
|
|
3
3
|
"name": "ClawMemory",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"description": "AI memory system - auto-save conversations and inject memory summary",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
|
+
"configSchema": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {}
|
|
11
|
+
},
|
|
7
12
|
"dependencies": {},
|
|
8
13
|
"scripts": {
|
|
9
14
|
"build": "tsc"
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yun-zero/claw-memory",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "OpenClaw 记忆插件 - 自动保存对话,智能注入上下文",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
7
|
+
"openclaw": {
|
|
8
|
+
"extensions": ["./dist/index.js"]
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
package/src/hooks/bootstrap.ts
CHANGED
|
@@ -12,7 +12,7 @@ export async function handleAgentBootstrap(
|
|
|
12
12
|
const weekMemories = db.prepare(`
|
|
13
13
|
SELECT summary, importance
|
|
14
14
|
FROM memories
|
|
15
|
-
WHERE
|
|
15
|
+
WHERE created_at >= ?
|
|
16
16
|
ORDER BY importance DESC
|
|
17
17
|
LIMIT 10
|
|
18
18
|
`).all(weekStartStr) as { summary: string; importance: number }[];
|
package/src/hooks/message.ts
CHANGED
|
@@ -54,22 +54,16 @@ export async function handleMessageSent(
|
|
|
54
54
|
// 解析 dataDir 中的 ~
|
|
55
55
|
const resolvedDataDir = dataDir.replace(/^~/, homedir());
|
|
56
56
|
|
|
57
|
-
//
|
|
58
|
-
if (!fs.existsSync(resolvedDataDir)) {
|
|
59
|
-
fs.mkdirSync(resolvedDataDir, { recursive: true });
|
|
60
|
-
}
|
|
61
|
-
|
|
57
|
+
// 直接创建目录(recursive: true 已处理存在的情况)
|
|
62
58
|
const memoriesDir = path.join(resolvedDataDir, 'memories');
|
|
63
|
-
|
|
64
|
-
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
65
|
-
}
|
|
59
|
+
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
66
60
|
|
|
67
61
|
// 保存记忆
|
|
68
62
|
const memoryId = uuidv4();
|
|
69
63
|
const contentPath = path.join(memoriesDir, `${memoryId}.md`);
|
|
70
64
|
|
|
71
|
-
//
|
|
72
|
-
fs.
|
|
65
|
+
// 异步写入文件
|
|
66
|
+
await fs.promises.writeFile(contentPath, qaContent, 'utf-8');
|
|
73
67
|
|
|
74
68
|
// 提取摘要(取前200字符)
|
|
75
69
|
const summary = assistantMessage.substring(0, 200);
|
package/src/tools/memory.ts
CHANGED
|
@@ -36,12 +36,10 @@ export function registerMemoryTools(
|
|
|
36
36
|
const memoryId = uuidv4();
|
|
37
37
|
|
|
38
38
|
const memoriesDir = path.join(resolvedDataDir, 'memories');
|
|
39
|
-
|
|
40
|
-
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
41
|
-
}
|
|
39
|
+
fs.mkdirSync(memoriesDir, { recursive: true });
|
|
42
40
|
|
|
43
41
|
const contentPath = path.join(memoriesDir, `${memoryId}.md`);
|
|
44
|
-
fs.
|
|
42
|
+
await fs.promises.writeFile(contentPath, content, 'utf-8');
|
|
45
43
|
|
|
46
44
|
db.prepare(`
|
|
47
45
|
INSERT INTO memories (id, content_path, summary, importance, created_at)
|
|
@@ -120,17 +118,15 @@ export function registerMemoryTools(
|
|
|
120
118
|
const memories = db.prepare(`
|
|
121
119
|
SELECT summary, importance, created_at
|
|
122
120
|
FROM memories
|
|
123
|
-
WHERE
|
|
121
|
+
WHERE created_at >= ?
|
|
124
122
|
ORDER BY importance DESC
|
|
125
123
|
LIMIT 20
|
|
126
124
|
`).all(startDateStr);
|
|
127
125
|
|
|
128
|
-
const count = Array.isArray(memories) ? memories.length : 0;
|
|
129
|
-
|
|
130
126
|
return {
|
|
131
127
|
period,
|
|
132
|
-
count,
|
|
133
|
-
memories:
|
|
128
|
+
count: memories.length,
|
|
129
|
+
memories: memories.slice(0, 10)
|
|
134
130
|
};
|
|
135
131
|
}
|
|
136
132
|
});
|