名称: smart-memory
描述: 为 AI 代理提供上下文感知记忆,具备双重检索模式——快速向量搜索或经过策划的 Focus Agent 合成。SQLite 后端,零配置,本地嵌入。
OpenClaw 记忆系统的即插即用替代品,提供更优的搜索质量,并可通过 Focus Agent 实现可选的策划式检索。
npx clawhub install smart-memory
或从 ClawHub 安装:https://clawhub.ai/BluePointDigital/smart-memory
node smart-memory/smart_memory.js --sync
node smart-memory/smart_memory.js --search "James values principles"
node smart-memory/smart_memory.js --focus
node smart-memory/smart_memory.js --search "complex decision about project direction"
node smart-memory/smart_memory.js --unfocus
直接向量相似性搜索。适用于:
- 简单查询
- 快速事实检索
- 日常查询
node smart-memory/smart_memory.js --search "git remote"
通过 Focus Agent 进行多轮策划。适用于:
- 复杂决策
- 多事实合成
- 规划与策略
- 方案比较
node smart-memory/smart_memory.js --focus
node smart-memory/smart_memory.js --search "What did we decide about BluePointDigital architecture?"
Focus 模式工作原理:
1. 检索 20+ 个文本块(广泛撒网)
2. 排序 基于加权相关性(向量 + 术语匹配 + 来源权重)
3. 合成 为连贯的叙述
4. 交付 带有置信度分数的结构化上下文
启用后,搜索会经过额外处理:
查询:"What did we decide about BluePointDigital?"
┌─────────────────┐
│ 检索 20+ 个 │ ← 向量相似性
│ 文本块 │
└────────┬────────┘
▼
┌─────────────────┐
│ 加权排序 │ ← 术语匹配
│ │ 来源权重
│ │ 时效性权重
└────────┬────────┘
▼
┌─────────────────┐
│ 选择 Top 5 │ ← 阈值过滤
└────────┬────────┘
▼
┌─────────────────┐
│ 合成叙述 │ ← 按来源分组
│ │ 提取关键事实
└────────┬────────┘
▼
附带置信度的结构化输出
memory_search({
query: "deployment configuration",
maxResults: 5
})
返回(快速模式):
{
"query": "deployment configuration",
"mode": "fast",
"results": [
{
"path": "MEMORY.md",
"from": 42,
"lines": 8,
"score": 0.89,
"snippet": "..."
}
]
}
返回(Focus 模式):
{
"query": "deployment configuration",
"mode": "focus",
"confidence": 0.87,
"sources": ["MEMORY.md", "memory/2026-02-05.md"],
"synthesis": "关于 \"deployment configuration\" 的相关上下文:\n\n来自 MEMORY.md:\n • Docker 设置使用 docker-compose...\n • 生产部署在 AWS...\n\n来自 memory/2026-02-05.md:\n • 决定改用 Railway...",
"facts": [
{
"content": "Docker 设置使用 docker-compose...",
"source": "MEMORY.md",
"lines": "42-50",
"confidence": 0.89
}
]
}
memory_get({
path: "MEMORY.md",
from: 42,
lines: 10
})
memory_mode('focus') // 启用策划式检索
memory_mode('fast') // 禁用策划式检索
memory_mode() // 获取当前模式状态
# 同步记忆文件
node smart_memory.js --sync
# 搜索(使用当前模式)
node smart_memory.js --search "query" [--max-results N]
# 搜索并覆盖模式
node smart_memory.js --search "query" --focus
node smart_memory.js --search "query" --fast
# 切换模式
node smart_memory.js --focus # 启用 Focus 模式
node smart_memory.js --unfocus # 禁用 Focus 模式
node smart_memory.js --fast # 同 --unfocus
# 检查状态
node smart_memory.js --status # 数据库统计 + 当前模式
node smart_memory.js --mode # 当前模式详情
# 仅使用 Focus Agent
node focus_agent.js --search "query"
node focus_agent.js --suggest "query" # 检查是否推荐使用 Focus 模式
# 模式管理
node memory_mode.js focus
node memory_mode.js unfocus
node memory_mode.js status
| 特性 | 回退方案 | 使用 sqlite-vec |
|---|---|---|
| 关键词搜索 | FTS5(原生) | FTS5(原生) |
| 向量搜索 | JS 余弦计算 | 原生 KNN |
| Focus 策划 | +50-100ms | +50-100ms |
| 速度 | ~100 块/秒 | ~10,000 块/秒 |
| 内存 | 全部在 RAM 中 | 数据库处理 |
在以下情况使用 --focus 或启用 Focus 模式:
- 查询涉及多个相关概念
- 需要合成上下文,而非原始文本块
- 需要理解关系的决策制定
- 总结项目历史
- 比较不同文件中提到的方案
在以下情况不要使用 Focus 模式:
- 快速事实查找(电话号码、命令语法)
- 需要精确文本匹配
- 延迟比上下文质量更重要时
为获得最佳性能,请安装 sqlite-vec:
# macOS
brew install sqlite-vec
# Ubuntu/Debian
# 从 https://github.com/asg017/sqlite-vec/releases 下载
# 将 vec0.so 放入 ~/.local/lib/ 或 /usr/local/lib/
未安装时:仍可正常工作,只是在大型数据库上速度较慢。
smart-memory/
├── smart_memory.js # 主 CLI
├── focus_agent.js # 策划式检索引擎
├── memory_mode.js # 模式切换命令
├── memory.js # OpenClaw 包装器
├── db.js # SQLite 层
├── search.js # 混合搜索
├── chunker.js # 基于令牌的分块
├── embed.js # Transformers.js 嵌入
└── vector-memory.db # SQLite 数据库(自动创建)
MEMORY_DIR=/path/to/memory # 默认:./memory
MEMORY_FILE=/path/to/MEMORY.md # 默认:./MEMORY.md
MEMORY_DB_PATH=/path/to/db.sqlite # 默认:./vector-memory.db
| v1 (JSON) | v2 (SQLite) | v2.1 (Focus Agent) | |
|---|---|---|---|
| 搜索 | 仅向量 | 混合(BM25 + 向量) | 混合 + Focus 策划 |
| 存储 | JSON 文件 | SQLite | SQLite |
| 扩展性 | ~1000 块 | 无限制 | 无限制 |
| 关键词匹配 | 弱 | 强(FTS5) | 强(FTS5) |
| 上下文策划 | 无 | 无 | 有(可切换) |
| 设置 | 零配置 | 零配置 | 零配置 |
MIT