使用说明
@百丰/代理商记忆
一个强大的MCP(模型上下文协议)服务器,提供具有全文搜索功能的持久内存存储。它使用SQLite和FTS5(全文搜索)构建,使AI助手能够通过高效的模糊搜索在本地存储、检索和管理知识。
特性
- 持久化存储:基于SQLite的本地数据库,具有自动备份功能
- 全文检索:FTS5,用于模糊匹配的三元组标记化
- 内存管理:完成CRUD操作(创建、读取、更新、删除)
- 分类:按自定义类别组织记忆
- 关键词系统:用可搜索关键字标记记忆
- 分页:可配置页面大小的高效搜索结果
- 调试日志:用于故障排除的可选基于文件的日志记录
- WAL模式:提前写入日志以实现更好的并发访问
安装
npm install @baixfeng/agent-memory
或者直接将其用作二进制文件:
npx @baixfeng/agent-memory [storage-dir] [enable-log]
配置
服务器接受两个可选的命令行参数:
1.存储目录
- 默认:
~/.local-memory - 用法:指定用于存储数据库和日志的自定义目录
- 示例:
/custom/path/to/memory或~/my-memory
2.启用日志文件
- 默认:
false - 用法:通行证
"true"启用基于文件的日志记录 - 备注:调试输出始终发送到stderr(在MCP检查器中可见)
- 示例:
true
示例用法
# Default configuration
agent-memory
# Custom storage directory
agent-memory /path/to/memory
# Custom storage with logging
agent-memory /path/to/memory true
MCP工具
服务器提供以下MCP工具:
1.save_memory
将新知识保存到内存数据库中。
参数:
title(string):记忆的简称summary(string):内容简述content(string):内存的完整内容/正文keywords(字符串数组):可搜索关键字列表category(string):用于组织内存的类别
退货:保存记录的内存ID
示例:
{
"title": "JavaScript Closures",
"summary": "Understanding how closures work in JavaScript",
"content": "Closures allow functions to access variables from their outer scope...",
"keywords": ["javascript", "closures", "scope"],
"category": "Programming"
}
2.搜索_存储
使用全文搜索在存储的内存中搜索。
参数:
query(string):搜索关键字或短语page(数字,可选):页码(默认值:1)limit(数字,可选):每页结果(默认值:25,最大值:100)category(字符串,可选):按类别筛选结果
退货:带有分页信息和内存元数据的JSON对象
示例:
{
"query": "javascript closures",
"page": 1,
"limit": 10,
"category": "Programming"
}
回应:
{
"page": 1,
"limit": 10,
"results": [
{
"id": 1,
"title": "JavaScript Closures",
"summary": "Understanding how closures work in JavaScript",
"keywords": ["javascript", "closures", "scope"],
"category": "Programming",
"date": "2024-01-15"
}
]
}
3.read_memory
按ID读取特定内存的全部内容。
参数:
id(number):要检索的内存ID
退货:完整内容的完整内存记录
示例:
{
"id": 1
}
4.update_memory
更新现有内存字段。
参数:
id(数字):要更新的内存IDtitle(字符串,可选):新标题summary(字符串,可选):新摘要content(字符串,可选):新内容keywords(字符串数组,可选):新关键字category(字符串,可选):新类别
退货:成功消息
示例:
{
"id": 1,
"title": "Updated Title",
"summary": "Updated summary",
"keywords": ["javascript", "updated"]
}
5.删除记忆
按ID删除一个或多个内存。
参数:
ids(数字数组):要删除的内存ID列表
退货:带有已删除记录计数的确认消息
示例:
{
"ids": [1, 2, 3]
}
6.列表_类别
列出存储记忆中的所有独特类别。
参数:无
退货:带有类别数组的JSON对象
回应:
{
"categories": ["Programming", "Design", "Documentation"]
}
7.列表_内存
列出带有分页、类别过滤和排序的内存元数据。
参数:
page(数字,可选):页码(默认值:1)limit(数字,可选):每页结果(默认值:25,最大值:100)category(字符串,可选):按类别筛选内存sort_by(字符串,可选):排序字段-created_at或updated_at(默认值:updated_at)sort_order(字符串,可选):排序顺序-desc或asc(默认值:desc)
退货:带有分页信息和内存元数据的JSON对象
示例:
{
"page": 1,
"limit": 10,
"category": "Programming",
"sort_by": "updated_at",
"sort_order": "desc"
}
回应:
{
"page": 1,
"limit": 10,
"total_count": 847,
"total_pages": 85,
"results": [
{
"id": 1,
"title": "JavaScript Closures",
"summary": "Understanding how closures work in JavaScript",
"keywords": ["javascript", "closures", "scope"],
"category": "Programming",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T15:45:00Z"
}
]
}
发展
先决条件
- Node.js>=18.0.0
- npm或纱线
克隆存储库
git clone https://github.com/baiXfeng/agent-memory.git
cd agent-memory
安装依赖项
npm install
构建
npm run build
发展模式
npm run dev
启动服务器
npm start
数据库模式
主表: memories
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
summary TEXT NOT NULL,
content TEXT NOT NULL,
keywords TEXT,
category TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
)
全文搜索表: memories_fts
使用带有三元组标记化的FTS5在所有文本字段中进行高效的模糊搜索。
文件结构
~/.local-memory/ # Default storage directory
├── memory.db # Main SQLite database
├── memory.db.bak # Automatic backup (created on startup)
└── debug.log # Debug log (if enabled)
MCP配置
要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将其添加到MCP配置文件中:
克劳德桌面(macOS)
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/node_modules/@baixfeng/agent-memory/dist/index.js", "/custom/path", "true"]
}
}
}
故障排除
调试日志
通过传递启用基于文件的日志记录 "true" 作为第二个论点:
agent-memory /path/to/storage true
日志将写入 <storage-dir>/debug.log.
常见问题
- 数据库锁定错误:确保没有其他进程正在使用该数据库
- 权限不足:检查存储目录的写入权限
- 搜索未返回任何结果:尝试更广泛的查询词或检查FTS5索引状态
演出
- FTS5搜索:通过三元组标记化进行了优化,以实现模糊匹配
- WAL模式:支持并发读写
- 分页:限制大型结果集的内存使用
- 自动索引:触发器保持全文索引同步
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请随时提交问题或拉取请求。
作者
凝乳酶
仓库
https://github.com/baiXfeng/agent-memory