Files
TrulyMEM-TrueHumanMEM/README.md

5.9 KiB
Raw Blame History

TrulyMEM - WaterFlow 适配版

让 AI 拥有真正的长期记忆能力 - WaterFlow 框架适配版

English Version


简介

本项目是将 TrulyMEM 的图记忆能力迁移到 WaterFlow 框架的 TypeScript 实现。

作为 WaterFlow 的内置模块,提供图记忆功能:

  • recall: 检索记忆
  • commit: 写入记忆
  • purge: 删除记忆
  • introspect: 查看状态
  • persona_update/clear: 人设管理
  • task_create/set_state/delete: 任务管理

目录结构

ts/
├── src/runtime/core/
│   ├── graph_memory/           # 图记忆核心模块
│   │   ├── types.ts            # 类型定义
│   │   ├── graph_database.ts   # 图数据库
│   │   ├── memory_service.ts   # 记忆服务
│   │   └── index.ts            # 模块导出
│   └── tools/
│       └── builtin/
│           └── graph_memory_tool.ts  # Tool 实现
│
├── bundled-skills/             # Skill 定义
│   └── graph_memory/
│       ├── SKILL.md            # 记忆操作
│       ├── persona/SKILL.md   # 人设管理
│       └── task/SKILL.md       # 任务管理
│
├── package.json                # 项目配置
└── tsconfig.json               # TypeScript 配置

在 WaterFlow 中使用

本模块支持两种使用方式:作为模块直接引用 或 作为 Skill 调用。

方式一:作为模块直接引用(适合开发者集成)

步骤 1:复制源码

将本项目的 ts/ 目录复制到你的 WaterFlow 项目中,例如:

你的WaterFlow项目/
├── src/
│   └── runtime/
│       └── core/
│           └── graph_memory/    # 从 ts/src/runtime/core/ 复制
└── ts/                          # 或直接放在项目根目录
    └── bundled-skills/          # Skill 文件

步骤 2:编译 TypeScript

cd ts/
npm install
npm run build

编译后的文件会输出到 ts/dist/ 目录。

步骤 3:在代码中引用

import { createGraphMemoryTool } from './runtime/core/tools/builtin/graph_memory_tool';

// 创建工具实例,可以传入 sessionId 来区分不同会话
const tool = createGraphMemoryTool('my-session-id');

// 准备执行上下文
const context = {
  toolCallId: 'call-123',
  workingDirectory: '/project',
  abortController: { signal: {} },
  config: { timeout: 30000 },
  logger: {
    info: console.log,
    warn: console.warn,
    error: console.error,
    debug: console.debug
  }
};

// 写入记忆示例
const commitResult = await tool.handler({
  action: 'commit',
  params: {
    triplets: [
      { subject: '用户', relation: '喜欢', object: '编程' },
      { subject: '用户', relation: '正在学习', object: 'TypeScript' }
    ]
  }
}, context);

console.log(commitResult);
// 输出: {"success":true,"data":{"createdEntities":4,"createdRelations":2}}

// 检索记忆示例
const recallResult = await tool.handler({
  action: 'recall',
  params: {
    queryIntent: '用户 编程'
  }
}, context);

console.log(recallResult);
// 输出: {"success":true,"data":{"entities":[...],"relations":[...],"message":"找到 X 个实体, Y 条关系"}}

方式二:使用 Skill(推荐,适合 AI Agent 调用)

步骤 1:配置 Skill 来源

在你的 WaterFlow 项目中,找到 Skill 配置文件,添加 bundled 来源指向本项目的 Skill 目录:

// skill_interface.ts 或配置文件中
import { DEFAULT_SKILL_LOADER_CONFIG } from './skill_interface';

const config = {
  ...DEFAULT_SKILL_LOADER_CONFIG,
  sources: {
    ...DEFAULT_SKILL_LOADER_CONFIG.sources,
    bundled: './ts/bundled-skills'  // 指向本项目的 Skill 目录
  },
  enabledSources: ['project', 'bundled']
};

步骤 2:通过 Agent 调用 Skill

在你的 Agent 或 Workflow 中,通过 Tool 调用 Skill:

使用 skill:graph_memory 进行以下操作:

1. 写入记忆: 我喜欢编程,正在学习 TypeScript
2. 检索记忆: 找出我和编程相关的记忆

或者通过代码调用:

// 通过 SkillTool 调用
const skillResult = await skillTool.handler({
  skill: 'graph_memory',
  args: 'recall - queryIntent: "用户 学习"'
}, context);

可用 Skill 列表

Skill 名称 功能 使用场景
graph_memory 记忆 CRUD 读取/写入/删除记忆
graph_memory_persona 人设管理 设置 AI 角色性格
graph_memory_task 任务管理 创建/更新长期任务

API

GraphMemoryTool

const tool = new GraphMemoryTool(sessionId?: string);

Actions

Action 说明 参数
recall 检索记忆 queryIntent, seedEntities, sessionFilter
commit 写入记忆 triplets, sessionId, turnId
purge 删除记忆 criteria, mode
introspect 查看状态 -
persona_update 更新人设 attributes, mode
persona_clear 清除人设 confirm
task_create 创建任务 task_id, description, info_nodes
task_set_state 设置状态 task_id, state
task_delete 删除任务 task_id

示例

写入记忆

{
  "action": "commit",
  "params": {
    "triplets": [
      { "subject": "用户", "relation": "喜欢", "object": "TypeScript" },
      { "subject": "用户", "relation": "正在学习", "object": "WaterFlow" }
    ]
  }
}

检索记忆

{
  "action": "recall",
  "params": {
    "queryIntent": "用户 学习"
  }
}

创建任务

{
  "action": "task_create",
  "params": {
    "task_id": "Task_学习TypeScript",
    "description": "学习 TypeScript 并完成项目",
    "info_nodes": ["文档链接", "教程链接"]
  }
}

许可证

GNU General Public License v3.0 (GPLv3)