记忆系统Skill memory

记忆系统是一个基于向量嵌入的持久记忆服务,用于跨对话存储和检索用户偏好、事实、笔记和交易规则,支持语义搜索和日常活动日志记录。关键词:记忆系统,向量嵌入,语义搜索,API开发,人工智能应用,RAG检索增强生成

RAG应用 0 次安装 0 次浏览 更新于 3/9/2026

name: memory description: “用于偏好、事实和笔记的持久记忆系统” emoji: “🧠”

记忆系统 - 完整API参考

跨对话存储和回忆用户偏好、事实和笔记。语义搜索由向量嵌入驱动。


聊天命令

存储记忆

/remember preference risk=保守的     保存交易偏好
/remember fact BTC减半在2028年4月    存储一个事实
/remember note 市场开盘前检查ETH      保存一个笔记
/remember rule 不要在FOMC期间交易    存储交易规则

回忆记忆

/memory                                     查看所有记忆
/memory preferences                         仅查看偏好
/memory facts                               仅查看事实
/memory notes                               仅查看笔记
/memory rules                               查看交易规则
/memory search "比特币"                   搜索记忆

忘记记忆

/forget <key>                               删除特定记忆
/forget all preferences                     清除所有偏好
/forget all                                 清除所有(小心!)

TypeScript API参考

创建记忆服务

import { createMemoryService } from 'clodds/memory';

const memory = createMemoryService({
  // 存储后端
  backend: 'lancedb',  // 'lancedb' | 'sqlite' | 'postgres'

  // 嵌入模型
  embeddings: {
    provider: 'openai',
    model: 'text-embedding-3-small',
  },

  // 选项
  encryptionKey: process.env.MEMORY_ENCRYPTION_KEY,
});

记住(存储)

// 存储一个偏好
await memory.remember({
  userId: 'user-123',
  type: 'preference',
  key: 'risk_tolerance',
  value: 'conservative',
});

// 存储一个事实
await memory.remember({
  userId: 'user-123',
  type: 'fact',
  content: 'BTC减半大约每4年发生一次',
  metadata: { topic: 'crypto', confidence: 0.95 },
});

// 存储一个笔记
await memory.remember({
  userId: 'user-123',
  type: 'note',
  content: '周二前检查Polymarket的选举市场',
  metadata: { priority: 'high' },
});

// 存储一个交易规则
await memory.remember({
  userId: 'user-123',
  type: 'rule',
  content: '单头寸交易不超过投资组合的5%',
});

回忆(检索)

// 获取用户的所有记忆
const all = await memory.recall({ userId: 'user-123' });

// 按类型获取
const preferences = await memory.recall({
  userId: 'user-123',
  type: 'preference',
});

// 获取特定键
const risk = await memory.recall({
  userId: 'user-123',
  type: 'preference',
  key: 'risk_tolerance',
});

语义搜索

// 按含义搜索(不仅仅是关键词)
const results = await memory.semanticSearch({
  userId: 'user-123',
  query: '我的风险偏好是什么?',
  limit: 5,
  threshold: 0.7,  // 相似度阈值
});

for (const result of results) {
  console.log(`${result.type}: ${result.content}`);
  console.log(`  相似度: ${result.score}`);
}

忘记(删除)

// 删除特定记忆
await memory.forget({
  userId: 'user-123',
  type: 'preference',
  key: 'risk_tolerance',
});

// 删除所有类型的
await memory.forgetByType({
  userId: 'user-123',
  type: 'note',
});

// 删除所有记忆
await memory.forgetAll({ userId: 'user-123' });

每日日志

// 记录日常活动
await memory.logDaily({
  userId: 'user-123',
  date: new Date(),
  trades: 5,
  pnl: 123.45,
  notes: '好日子,抓住了BTC上涨',
});

// 获取日志条目
const journal = await memory.getDailyLogs({
  userId: 'user-123',
  from: '2024-01-01',
  to: '2024-01-31',
});

记忆类型

类型 目的 示例
preference 用户设置 risk=conservative
fact 存储的知识 “ETH gas在周末更便宜”
note 提醒/待办事项 “检查选举市场”
rule 交易规则 “最大头寸5%”
context 对话上下文 由系统自动保存

存储后端

后端 描述 最佳用途
LanceDB 向量数据库与混合搜索 生产,语义搜索
SQLite 本地基于文件 开发,单用户
PostgreSQL 分布式与pgvector 多用户,生产

最佳实践

  1. 键要具体max_position_size 而不是 just size
  2. 正确使用类型 — 偏好用于设置,规则用于约束
  3. 语义搜索 — 自然地问问题,嵌入会匹配
  4. 定期清理 — 删除过时的笔记和事实
  5. 备份记忆 — 在大更改前导出