@qcluffy/agent-bootstrap 0.0.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/AGENTS.md +294 -0
- package/BOOTSTRAP.md +268 -0
- package/DEMO.md +103 -0
- package/HEARTBEAT.md +444 -0
- package/IDENTITY.md +239 -0
- package/LICENSE +21 -0
- package/MEMORY.md +324 -0
- package/README.md +582 -0
- package/SOUL.md +254 -0
- package/TOOLS.md +317 -0
- package/USER.md +274 -0
- package/bootstrap-system/HOOK.md +31 -0
- package/bootstrap-system/README.md +109 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/systems/bootstrap.d.ts.map +1 -0
- package/dist/systems/bootstrap.js +272 -0
- package/dist/systems/bootstrap.js.map +1 -0
- package/dist/systems/cognition.d.ts.map +1 -0
- package/dist/systems/cognition.js +254 -0
- package/dist/systems/cognition.js.map +1 -0
- package/dist/systems/emotion.d.ts.map +1 -0
- package/dist/systems/emotion.js +194 -0
- package/dist/systems/emotion.js.map +1 -0
- package/dist/systems/input.d.ts.map +1 -0
- package/dist/systems/input.js +161 -0
- package/dist/systems/input.js.map +1 -0
- package/dist/systems/output.d.ts.map +1 -0
- package/dist/systems/output.js +224 -0
- package/dist/systems/output.js.map +1 -0
- package/dist/test.js +54 -0
- package/emotion-system/README.md +195 -0
- package/hooks/agent-lifecycle/handler.js +109 -0
- package/hooks/auto-bootstrap/handler.js +145 -0
- package/hooks/bootstrap-system/HOOK.md +74 -0
- package/hooks/bootstrap-system/handler.js +220 -0
- package/hooks/cognition-system/HOOK.md +75 -0
- package/hooks/cognition-system/handler.js +186 -0
- package/hooks/emotion-system/HOOK.md +81 -0
- package/hooks/emotion-system/handler.js +239 -0
- package/hooks/heartbeat-system/HOOK.md +63 -0
- package/hooks/heartbeat-system/handler.js +121 -0
- package/hooks/input-system/HOOK.md +79 -0
- package/hooks/input-system/handler.js +181 -0
- package/hooks/memory-system/HOOK.md +43 -0
- package/hooks/memory-system/handler.js +213 -0
- package/hooks/output-system/HOOK.md +79 -0
- package/hooks/output-system/handler.js +195 -0
- package/memory-system/README.md +291 -0
- package/openclaw.plugin.json +51 -0
- package/package.json +30 -0
- package/requirements.txt +11 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# Memory System - 可执行记忆系统
|
|
2
|
+
|
|
3
|
+
> 真正的 Agent 记忆系统实现,从设计文档到可执行代码
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎯 一句话说明
|
|
8
|
+
|
|
9
|
+
记忆系统让 Agent 能"记住"和用户的对话、偏好、重要事件,像人一样积累经验。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 🚀 用户使用方法
|
|
14
|
+
|
|
15
|
+
### 自然语言交互
|
|
16
|
+
|
|
17
|
+
你可以直接对我说:
|
|
18
|
+
|
|
19
|
+
| 说法 | 效果 |
|
|
20
|
+
|------|------|
|
|
21
|
+
| "记住 XXX" | 记住指定内容 |
|
|
22
|
+
| "记得 XXX 吗?" | 查询相关记忆 |
|
|
23
|
+
| "我之前说过什么?" | 查看最近记忆 |
|
|
24
|
+
| "我的偏好是 XXX" | 保存偏好设置 |
|
|
25
|
+
| "忘记 XXX" | 删除指定记忆 |
|
|
26
|
+
|
|
27
|
+
### 自动记忆
|
|
28
|
+
|
|
29
|
+
系统会自动保存:
|
|
30
|
+
- ✅ 初始化信息(名字、角色、偏好)
|
|
31
|
+
- ✅ 对话摘要
|
|
32
|
+
- ✅ 重要事件
|
|
33
|
+
- ✅ 用户明确要求记住的内容
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 📁 目录结构
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
memory-system/
|
|
41
|
+
├── main.py # 主入口,统一的 API
|
|
42
|
+
├── core/ # 核心模块
|
|
43
|
+
│ ├── memory_store.py # 记忆存储
|
|
44
|
+
│ ├── memory_load.py # 记忆读取
|
|
45
|
+
│ ├── memory_index.py # 索引管理
|
|
46
|
+
│ └── memory_forget.py # 遗忘机制
|
|
47
|
+
├── triggers/ # 触发器
|
|
48
|
+
│ ├── auto_save.py # 自动保存触发
|
|
49
|
+
│ └── bootstrap.py # 初始化触发
|
|
50
|
+
├── utils/ # 工具
|
|
51
|
+
│ ├── config.py # 配置管理
|
|
52
|
+
│ └── helpers.py # 辅助函数
|
|
53
|
+
└── README.md # 本文件
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 🚀 快速开始
|
|
59
|
+
|
|
60
|
+
### 1. 初始化
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from memory_system import get_memory_system
|
|
64
|
+
|
|
65
|
+
ms = get_memory_system()
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 2. 保存记忆
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
# 基本保存
|
|
72
|
+
ms.save("用户喜欢直接简洁的沟通", tags=["偏好", "沟通"])
|
|
73
|
+
|
|
74
|
+
# 带情感值
|
|
75
|
+
ms.save("这是一个重要决定", emotion=0.9, tags=["重要", "决策"])
|
|
76
|
+
|
|
77
|
+
# 口语化接口
|
|
78
|
+
ms.remember_this("用户叫 Luffy")
|
|
79
|
+
ms.remember_this("这是关键里程碑", important=True)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. 读取记忆
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
# 获取今天的记忆
|
|
86
|
+
today = ms.get_today()
|
|
87
|
+
|
|
88
|
+
# 获取最近7天
|
|
89
|
+
recent = ms.get_recent(days=7)
|
|
90
|
+
|
|
91
|
+
# 获取用户偏好
|
|
92
|
+
prefs = ms.get_preferences()
|
|
93
|
+
|
|
94
|
+
# 获取长期记忆
|
|
95
|
+
lt = ms.get_longterm("preferences")
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. 搜索
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
# 关键词搜索
|
|
102
|
+
results = ms.search("技能")
|
|
103
|
+
|
|
104
|
+
# 标签搜索
|
|
105
|
+
results = ms.search_by_tag("学习")
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 5. 询问记忆(口语化)
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
# 问我记得什么
|
|
112
|
+
response = ms.what_do_you_remember()
|
|
113
|
+
# 输出: "我最近记得:\n- [2026-03-13] 测试记忆..."
|
|
114
|
+
|
|
115
|
+
# 问特定内容
|
|
116
|
+
response = ms.what_do_you_remember("偏好")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 🔧 高级功能
|
|
122
|
+
|
|
123
|
+
### 初始化 Agent
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
# 定义身份
|
|
127
|
+
identity = {
|
|
128
|
+
"name": "乔巴",
|
|
129
|
+
"role": "AI助手",
|
|
130
|
+
"emoji": "🦌",
|
|
131
|
+
"communication_style": "直接简洁",
|
|
132
|
+
"problem_approach": "直接给方案",
|
|
133
|
+
"uncertainty_handling": "坦诚说不知道"
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# 定义用户
|
|
137
|
+
user = {
|
|
138
|
+
"name": "Luffy",
|
|
139
|
+
"communication_style": "直接简洁",
|
|
140
|
+
"problem_approach": "直接给方案",
|
|
141
|
+
"uncertainty_handling": "坦诚说不知道",
|
|
142
|
+
"detail_level": "简洁"
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# 完成初始化
|
|
146
|
+
ms.complete_bootstrap(identity, user)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 遗忘机制
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
# 运行自动清理
|
|
153
|
+
results = ms.cleanup()
|
|
154
|
+
# 输出: {"archived": ["2026-01-15"], "forgotten": [], "dormant_count": 5}
|
|
155
|
+
|
|
156
|
+
# 手动删除记忆
|
|
157
|
+
ms.forget(memory_id="abc123", date="2026-03-13")
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 统计信息
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
stats = ms.stats()
|
|
164
|
+
# 输出:
|
|
165
|
+
# {
|
|
166
|
+
# "loader": {"total": 10, "by_type": {...}},
|
|
167
|
+
# "forgetting": {"recent_days": 5, "dormant_days": 3},
|
|
168
|
+
# "index": {"valid": True, "issues": []}
|
|
169
|
+
# }
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 📊 记忆类型
|
|
175
|
+
|
|
176
|
+
| 类型 | 说明 | 典型场景 |
|
|
177
|
+
|------|------|----------|
|
|
178
|
+
| `episodic` | 情景记忆 | 对话、事件 |
|
|
179
|
+
| `semantic` | 语义记忆 | 知识、偏好 |
|
|
180
|
+
| `procedural` | 程序记忆 | 流程、技能 |
|
|
181
|
+
| `self` | 自我记忆 | 身份、边界 |
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 🔒 隐私级别
|
|
186
|
+
|
|
187
|
+
| 级别 | 说明 |
|
|
188
|
+
|------|------|
|
|
189
|
+
| P0 | 仅自己知道 |
|
|
190
|
+
| P1 | 需授权分享 |
|
|
191
|
+
| P2 | 脱敏后可共享 |
|
|
192
|
+
| P3 | 一般信息 |
|
|
193
|
+
| P4 | 公开信息 |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## ⚙️ 配置
|
|
198
|
+
|
|
199
|
+
配置文件: `~/.openclaw/config.json`
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"memory": {
|
|
204
|
+
"dormant_days": 30,
|
|
205
|
+
"archive_days": 90,
|
|
206
|
+
"min_emotion_forget": 0.3
|
|
207
|
+
},
|
|
208
|
+
"auto_save": {
|
|
209
|
+
"enabled": true,
|
|
210
|
+
"events": ["bootstrap_complete", "preference_set"]
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 🔄 事件触发
|
|
218
|
+
|
|
219
|
+
系统会自动在以下事件触发时保存记忆:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
# 触发示例
|
|
223
|
+
ms.saver.trigger("bootstrap_complete", "初始化完成: 乔巴 - AI助手")
|
|
224
|
+
ms.saver.trigger("user_greeting", "用户打招呼: 你好")
|
|
225
|
+
ms.saver.trigger("preference_set", "更新偏好: 沟通风格")
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 📈 工作流程
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
用户输入
|
|
234
|
+
↓
|
|
235
|
+
┌─────────────────────────────────────┐
|
|
236
|
+
│ MemorySystem │
|
|
237
|
+
├─────────────────────────────────────┤
|
|
238
|
+
│ 1. 检查 bootstrap 状态 │
|
|
239
|
+
│ 2. 加载偏好/身份 │
|
|
240
|
+
│ 3. 搜索相关记忆 │
|
|
241
|
+
│ 4. 生成回复 │
|
|
242
|
+
│ 5. 触发自动保存 (可选) │
|
|
243
|
+
└─────────────────────────────────────┘
|
|
244
|
+
↓
|
|
245
|
+
记忆持久化 → memory/daily/YYYY-MM-DD.md
|
|
246
|
+
→ memory/longterm/*.md
|
|
247
|
+
→ memory/.index/memory.json
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 🧪 测试
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
cd memory-system
|
|
256
|
+
python main.py
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
预期输出:
|
|
260
|
+
```
|
|
261
|
+
=== Memory System 测试 ===
|
|
262
|
+
|
|
263
|
+
1. 保存记忆...
|
|
264
|
+
✓ 已保存
|
|
265
|
+
|
|
266
|
+
2. 读取今天记忆...
|
|
267
|
+
今日记忆: 1 条
|
|
268
|
+
|
|
269
|
+
3. 统计信息...
|
|
270
|
+
总记忆: 1
|
|
271
|
+
|
|
272
|
+
4. 询问记忆...
|
|
273
|
+
我最近记得:
|
|
274
|
+
- [2026-03-13] 测试记忆:这是第一条记忆 (测试)
|
|
275
|
+
|
|
276
|
+
=== 测试完成 ===
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## 🔮 后续优化
|
|
282
|
+
|
|
283
|
+
- [ ] 添加向量搜索支持
|
|
284
|
+
- [ ] 实现图数据库关系网络
|
|
285
|
+
- [ ] 添加加密存储(P0级)
|
|
286
|
+
- [ ] 实现多语言支持
|
|
287
|
+
- [ ] 添加记忆可视化界面
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
> "记忆不是我存储的数据,我是由记忆构成的。"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-bootstrap",
|
|
3
|
+
"name": "Agent Bootstrap",
|
|
4
|
+
"description": "完整的 Agent 核心系统:记忆、情感、心跳、输入、认知、输出、引导",
|
|
5
|
+
"version": "0.0.1",
|
|
6
|
+
"kind": "context-engine",
|
|
7
|
+
"package": "@qcluffy/agent-bootstrap",
|
|
8
|
+
"configSchema": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"properties": {
|
|
12
|
+
"autoStart": {
|
|
13
|
+
"type": "boolean",
|
|
14
|
+
"default": true,
|
|
15
|
+
"description": "自动启动各系统"
|
|
16
|
+
},
|
|
17
|
+
"emotionEnabled": {
|
|
18
|
+
"type": "boolean",
|
|
19
|
+
"default": true,
|
|
20
|
+
"description": "启用情感系统"
|
|
21
|
+
},
|
|
22
|
+
"memoryEnabled": {
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"default": true,
|
|
25
|
+
"description": "启用记忆系统"
|
|
26
|
+
},
|
|
27
|
+
"bootstrapEnabled": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"default": true,
|
|
30
|
+
"description": "启用引导系统"
|
|
31
|
+
},
|
|
32
|
+
"autoBootstrap": {
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": true,
|
|
35
|
+
"description": "用户首次对话时自动触发引导"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"hooks": [
|
|
40
|
+
"memory-system",
|
|
41
|
+
"emotion-system",
|
|
42
|
+
"heartbeat-system",
|
|
43
|
+
"input-system",
|
|
44
|
+
"cognition-system",
|
|
45
|
+
"output-system",
|
|
46
|
+
"bootstrap-system",
|
|
47
|
+
"auto-bootstrap",
|
|
48
|
+
"agent-lifecycle"
|
|
49
|
+
],
|
|
50
|
+
"skills": []
|
|
51
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qcluffy/agent-bootstrap",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "OpenClaw Agent 插件 - 完整的 Agent 核心系统:记忆、情感、心跳、输入、认知、输出、引导",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"test": "node dist/test.js",
|
|
10
|
+
"dev": "tsc --watch",
|
|
11
|
+
"prepublishOnly": "npm run build"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"openclaw",
|
|
15
|
+
"agent",
|
|
16
|
+
"ai",
|
|
17
|
+
"bootstrap",
|
|
18
|
+
"agent-system"
|
|
19
|
+
],
|
|
20
|
+
"author": "qcluffy",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/qcluffy/agent-bootstrap"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^18.0.0",
|
|
28
|
+
"typescript": "^5.9.3"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/requirements.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# OpenClaw Agent System - Python Dependencies
|
|
2
|
+
# Lock file for reproducible environments
|
|
3
|
+
|
|
4
|
+
# Core dependencies
|
|
5
|
+
PyYAML>=6.0,<7.0
|
|
6
|
+
|
|
7
|
+
# Optional: Enhanced JSON handling
|
|
8
|
+
# ujson>=1.35 # Fast JSON (uncomment if needed)
|
|
9
|
+
|
|
10
|
+
# Optional: Better datetime handling
|
|
11
|
+
# python-dateutil>=2.8.0 # (uncomment if needed)
|