记忆 - 完整API参考
存储和回忆用户的偏好、事实和笔记。由向量嵌入支持的语义搜索。
聊天命令
存储记忆
/remember preference risk=conservative 保存交易偏好
/remember fact BTC halving is in April 2028 存储一个事实
/remember note Check ETH before market open 保存一个笔记
/remember rule Never trade during FOMC 存储交易规则
回忆记忆
/memory 查看所有记忆
/memory preferences 仅查看偏好
/memory facts 仅查看事实
/memory notes 仅查看笔记
/memory rules 交易规则
/memory search "bitcoin" 搜索记忆
忘记记忆
/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 halving occurs approximately every 4 years',
metadata: { topic: 'crypto', confidence: 0.95 },
});
// 存储一个笔记
await memory.remember({
userId: 'user-123',
type: 'note',
content: 'Check Polymarket for election markets before Tuesday',
metadata: { priority: 'high' },
});
// 存储一个交易规则
await memory.remember({
userId: 'user-123',
type: 'rule',
content: 'Never trade more than 5% of portfolio on single position',
});
回忆(检索)
// 获取用户的所有记忆
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: 'what is my risk appetite?',
limit: 5,
threshold: 0.7, // 相似度阈值
});
for (const result of results) {
console.log(`${result.type}: ${result.content}`);
console.log(` Similarity: ${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: 'Good day, caught BTC rally',
});
// 获取日记条目
const journal = await memory.getDailyLogs({
userId: 'user-123',
from: '2024-01-01',
to: '2024-01-31',
});
记忆类型
| 类型 |
用途 |
示例 |
| preference |
用户设置 |
risk=conservative |
| fact |
存储知识 |
“ETH gas is cheaper on weekends” |
| note |
提醒/待办 |
“Check election markets” |
| rule |
交易规则 |
“Max 5% per position” |
| context |
对话上下文 |
系统自动保存 |
存储后端
| 后端 |
描述 |
最适合 |
| LanceDB |
向量数据库,混合搜索 |
生产环境,语义搜索 |
| SQLite |
本地文件基础 |
开发,单用户 |
| PostgreSQL |
分布式,带pgvector |
多用户,生产环境 |
最佳实践
- 使用具体的键 —
max_position_size 不仅仅是 size
- 正确使用类型 — 偏好用于设置,规则用于约束
- 语义搜索 — 自然地提问,嵌入将匹配
- 定期清理 — 删除过时的笔记和事实
- 备份记忆 — 在重大更改前导出