使用说明
纪念品
有些记忆最好保存下来。
通过基于SQLite的知识图提供持久内存功能,该知识图使用BGE-M3嵌入存储实体、观察结果和语义搜索关系,以实现跨对话的智能上下文检索。
特性
- 语义向量搜索(sqlite-vec/pgvector,1024d)
- 离线嵌入模型(
bge-m3) - 具有SQLite和PostgreSQL后端的模块化存储库层
- 基于时间、流行度、情境和重要性因素的增强相关性评分
- 结构化图形
entities,observations,以及relations - 轻松与Claude Desktop集成(通过MCP)
先决条件
系统SQLite版本检查
Memento需要SQLite 3.38+。大多数macOS和Linux发行版都会发布 sqlite3 开箱即用,但请仔细检查它是否存在并且足够新:
sqlite3 --version # should print a version string, e.g. 3.46.0
重要提示: 此检查只是为了验证SQLite是否安装在您的系统上。Memento不使用sqlite3 CLI进行操作,它在内部使用Node.js sqlite3模块。
如果您看到“找不到命令”(或您的版本早于3.38),请安装SQLite:
| 平台 | 安装命令 |
|---|---|
| macOS(自制) | brew install sqlite |
| Debian/Ubuntu | sudo apt update && sudo apt install sqlite3 |
配置
Memento现在支持可插拔存储后端。配置受控 完全通过环境变量,因此很容易嵌入MCP中 工作流程。
| 变量 | 描述 |
|---|---|
MEMORY_DB_DRIVER |
数据库后端的可选选择器。默认为 sqlite。设置为 postgres 启用PostgreSQL管理器。 |
MEMORY_DB_PATH |
SQLite数据库文件的文件系统路径(仅在驱动程序为 sqlite). |
SQLITE_VEC_PATH |
通往预构建的可选绝对路径 sqlite-vec 扩展共享库。 |
MEMORY_DB_DSN / DATABASE_URL |
PostgreSQL连接字符串被消耗 pg 客户。 |
PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE |
单个PostgreSQL连接参数。当没有提供DSN时使用。 |
PGSSLMODE |
当设置为 require,SSL将通过启用 rejectUnauthorized: false. |
MEMENTO_WRITE_HOOK_PATH |
JSON Lines文件的可选路径。设置后,Memento会在每次成功的图突变后附加一个事件。 |
写钩子事件
集 MEMENTO_WRITE_HOOK_PATH 当另一个进程需要对内存写入做出反应而不轮询整个图时:
MEMENTO_WRITE_HOOK_PATH=/tmp/memento-events.jsonl memento
每一行都是一个带有ISO的JSON对象 timestamp一 operation,以及更改后的实体/关系有效载荷。例子:
{"timestamp":"2026-05-05T16:33:16.619Z","operation":"create_entity","entity":{"name":"Hook Test","entityType":"test"}}
支持的操作包括 create_entity, add_observations, create_relation, delete_entities, delete_relations, delete_observations,以及 set_importance。仅对实际删除的记录发出删除事件。
钩子写入失败会记录到stderr中,但不会使已经成功的图变异失败。需要严格对账的消费者应将挂钩与偶尔对账相结合 read_graph 或有针对性 open_nodes 检查。
PostgreSQL注释
- PostgreSQL管理器要求
pgvector扩展。它会自动初始化为CREATE EXTENSION IF NOT EXISTS vector.
克劳德桌面:
{
"mcpServers": {
"memory": {
"description": "Custom memory backed by SQLite + vec + FTS5",
"command": "npx",
"args": [
"@iachilles/memento@latest"
],
"env": {
"MEMORY_DB_PATH": "/Path/To/Your/memory.db"
},
"options": {
"autoStart": true,
"restartOnCrash": true
}
}
}
}
故障排除
sqlite-vec扩展问题
重要提示: Memento通过Node.js以编程方式加载sqlite-vec扩展,而不是通过sqlite3 CLI。
常见误解:
- ❌ 为sqlite3 CLI创建shell别名不会影响Memento
- ❌ 在sqlite3 CLI中加载扩展对Memento没有帮助
- ✅ 使用npm安装的sqlite-vec或set
SQLITE_VEC_PATH如果自动检测失败,则环境变量。这应该指向Node.js兼容的扩展版本,通常可以在您的node_modules目录。
如果自动向量加载失败:
# Find the Node.js-compatible vec extension
find node_modules -name "vec0.dylib" # macOS
find node_modules -name "vec0.so" # Linux
# Use it via environment variable
SQLITE_VEC_PATH="/full/path/to/node_modules/sqlite-vec-darwin-x64/vec0.dylib" memento
API概述
此服务器公开以下MCP工具:
create_entitiescreate_relationsadd_observationsdelete_entitiesdelete_relationsdelete_observationsread_graphsearch_nodesopen_nodesset_importance-设置重要性级别(关键/重要/正常/临时/已弃用)
当 MEMENTO_WRITE_HOOK_PATH 配置后,变异工具还为下游消费者附加JSONL写入事件。
LLM应该知道的用于有效内存处理的指令集示例(请参阅memory_PROTOCOL.md)
嵌入模型
此项目使用 @xenova/变压器,量化版本为 bge-m3,在Node.js中完全离线运行。
许可证
麻省理工学院