Files
TrulyMEM-TrueHumanMEM/skills/graph-memory/SKILL.md
root c33e7469ac refactor: update SKILL.md to encourage proactive graph memory usage
- Change positioning from 'enhancement' to 'primary long-term memory'
- Add explicit guidelines for when AI must query/update memory
- Add query templates for persona and tasks at conversation start
- Update all 3 skills: graph-memory, graph-memory-persona, graph-memory-task
- Sync bundled-skills with standalone skills
2026-04-24 21:08:35 +08:00

247 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: graph-memory
description: "图记忆工具 - 检索、写入、删除记忆。AI 应优先使用图数据库管理长期记忆,将重要事实结构化存储"
metadata: {"openclaw": {"requires": {"bins": ["node"]}}}
user-invocable: true
---
# GraphMemory 图记忆系统
让 AI 拥有真正的长期记忆能力。
> **定位声明**:本工具是 AI 的**主要长期记忆系统**。memory-core 管理 session transcripts,GraphMemory 负责结构化长期记忆。AI 在对话中应优先将重要信息写入图数据库,而非依赖 message 历史。
## 与 memory-core 的关系
| 功能 | memory-core | GraphMemory (本工具) |
|------|-------------|---------------------|
| 对话历史 | ✅ 自动保存 messages | ❌ 不管理对话历史 |
| 结构化记忆 | ❌ 无 | ✅ **主要存储** |
| 人设管理 | ❌ 无 | ✅ **主要存储** |
| 任务追踪 | ❌ 无 | ✅ **主要存储** |
| 上下文压缩 | ❌ 无 | ✅ context_rewrite |
| 工作记忆链 | ❌ 无 | ✅ working_memory_chain |
| **语义搜索** | **❌ 无** | **✅ memory_search** |
| **记忆文件读取** | **❌ 无** | **✅ memory_get** |
| 自动触发 | ✅ 自动索引检索 | ❌ LLM 主动调用 |
## 核心概念
### 实体 (Entity)
现实世界中的对象,如"用户"、"Python"、"WaterFlow"。
### 关系 (Relation)
连接两个实体的关系,格式为三元组:主体 - 关系 - 客体。
## 可用命令
### 1. commit - 写入记忆
将信息写入记忆图。
**参数:**
- `triplets`: 三元组数组 `[{subject, relation, object}, ...]` (必需)
- `sessionId`: 会话 ID(可选)
- `turnId`: 轮次 ID(可选)
**示例:**
```
请记住:我喜欢编程,正在学习 TypeScript
```
AI 会执行:
```json
{
"action": "commit",
"params": {
"triplets": [
{"subject": "我", "relation": "喜欢", "object": "编程"},
{"subject": "我", "relation": "正在学习", "object": "TypeScript"}
]
}
}
```
### 2. recall - 检索记忆
从记忆图中检索相关信息。
**参数:**
- `queryIntent`: 搜索关键词(必需,若无则需提供 seedEntities)
- `seedEntities`: 种子实体数组(可选)
- `depth`: 检索深度 1-5(默认 2)
- `sessionFilter`: 会话过滤(可选)
### 3. purge - 删除记忆
删除记忆图中的一些信息。
**参数:**
- `criteria`: 删除条件 `{subject, target, relation, sessionId}`
- `mode`: 删除模式 `soft`(标记删除)、`hard`(彻底删除)或 `supersede`(纠错替代)
- `newRelation`: 替代关系(supersede 模式必需)
### 4. introspect - 查看状态
查看当前记忆状态统计(实体数、关系数)。
### 5. archive - 归档旧记忆
将 N 天前的非活跃关系标记为归档。
**参数:**
- `days`: 归档天数(默认 30)
### 6. cleanup - 清理无效数据
物理删除已删除超过 90 天的关系和孤立节点。
**参数:**
- `dry_run`: 仅预览不删除(默认 true,建议先预览再执行)
### 7. context_rewrite - 压缩上下文
当对话历史过长时,将历史对话压缩为关键记忆节点存入图数据库。
**参数:**
- `context`: 要压缩的长文本(必需)
- `maxEntities`: 最大提取实体数(默认 20)
- `summary`: 自定义摘要(可选)
**返回:**
- `extractedEntities`: 提取的实体数
- `extractedRelations`: 提取的关系数
- `summary`: 生成的摘要
- `compressed`: 是否成功压缩
### 8. working_memory_chain - 工作记忆链
检索当前会话的近期活跃关系和任务节点,形成工作记忆链。
**参数:**
- `maxDepth`: 检索深度 1-5(默认 3)
- `recentOnly`: 仅最近(默认 true)
### 9. task_node_create - 创建任务节点
创建一个新的 TaskNode 并自动链接到工作记忆链。
**参数:**
- `session_id`: 会话 ID(必需)
- `turn_id`: 轮次 ID(必需)
- `summary`: 摘要(必需)
- `key_facts`: 关键事实数组(必需)
- `raw_context`: 原始上下文(可选,会自动存档到文本文件)
### 10. task_node_get_recent - 获取最近节点
获取最近 N 个任务节点(按时间倒序)。
**参数:**
- `session_id`: 会话 ID(必需)
- `limit`: 限制数量(默认 5)
### 11. task_node_get_chain - 获取任务链
获取完整的工作记忆链(从指定节点或最新节点开始回溯)。
**参数:**
- `session_id`: 会话 ID(必需)
- `from_node_id`: 起始节点 ID(可选,默认最新)
### 12. memory_search - 语义搜索
基于 embedding 的语义向量搜索,查找与查询语义相似的文本片段。
**参数:**
- `query`: 搜索查询(必需)
- `limit`: 返回结果数量(可选,默认 10,最大 50)
- `corpus`: 搜索范围(可选,默认 'memory')
**示例:**
```
搜索关于 OpenClaw 的记忆
```
AI 会执行:
```json
{
"action": "memory_search",
"params": {
"query": "OpenClaw",
"limit": 5
}
}
```
返回结果包含相似度分数(0-1),按相关度排序。
### 13. memory_get - 精确读取记忆文件
按路径精确读取记忆文件的内容片段,支持行号范围。
**参数:**
- `path`: 文件路径(必需)
- `fromLine`: 起始行号(可选,1-based)
- `lines`: 读取行数(可选,默认全部,最大 500)
**示例:**
```
读取 MEMORY.md 第 1-20 行
```
AI 会执行:
```json
{
"action": "memory_get",
"params": {
"path": "MEMORY.md",
"fromLine": 1,
"lines": 20
}
}
```
## 使用原则
1. **优先使用图记忆**:对于重要事实、偏好、决策、任务等持久信息,**优先**使用 `commit` 写入图数据库,而非依赖 message 上下文
2. **主动检索**:在回答用户问题前,**先调用 `recall` 或 `memory_search`** 检索相关记忆,而非仅凭当前上下文推理
3. **结构化**:使用三元组格式存储关系,确保信息可被关联检索
4. **定期清理**:删除过时或错误的信息
5. **上下文压缩**:当对话过长时,使用 `context_rewrite` 将历史压缩为记忆节点
6. **工作记忆**:使用 `working_memory_chain` 获取当前会话的上下文链
7. **主动查询人设**:参考 `graph-memory-persona-force` Skill,在适当时候主动查询用户偏好和决策
## 记忆策略指南
### 什么时候写入图数据库?
**必须写入**:
- 用户明确说"请记住"、"记住这个"等
- 用户透露偏好、习惯、身份信息
- 做出重要决策或选择
- 创建任务或目标
- 关键知识点或学习成果
**建议写入**:
- 对话中重复出现的重要概念
- 用户纠正或补充的信息
- 项目相关的配置、路径、决策
**无需写入**:
- 临时性问候、寒暄
- 一次性问题(如"现在几点")
- 已在图数据库中的重复信息
### 什么时候检索图数据库?
**必须检索**:
- 用户问"我之前说过..."、"你还记得..."
- 需要基于历史偏好做推荐或决策
- 继续之前的任务或话题
**建议检索**:
- 每次对话开始时,检索用户相关信息
- 做推荐前先了解用户偏好
- 涉及人设或性格相关的话题