回忆
基于Ruby的MCP(模型上下文协议)持久内存服务器 管理Claude Code会话。
概述
Recollect将决策、模式、错误和学习存储在SQLite数据库中 使用FTS5全文搜索。它通过HTTP上的MCP协议公开存储器, 使AI编码助手能够跨会话维护上下文。
特性
- MCP协议支持:用于存储和检索内存的标准MCP工具
- 混合搜索:将BM25全文搜索与矢量语义搜索相结合,使用 互易秩融合(RRF) 为了获得卓越的相关性
- 智能Markdown分块:自动将大型文档拆分为语义块(约700个单词),并重叠以进行精确的向量匹配
- 父子检索:透明地将块级搜索匹配解析回完整的原始文档
- 近期排名:可选的时间衰减评分,以选择更新的记忆
- LLM供电(可选):使用Anthropic-Claude模型进行查询扩展和重新排名
- 项目隔离:每个项目单独的数据库,加上一个全局数据库
- REST API:Web UI和CLI的HTTP端点
- 网络界面:在浏览器中浏览和搜索回忆
- CLI工具:用于快速记忆操作的命令行界面
需求
- Ruby>=3.4.0
- SQLite3
可选:矢量搜索
对于语义向量搜索(混合FTS5+向量相似度):
- Python>=3.8
- sqlite-vec扩展(例如。,
pacman -S sqlite-vec在Arch Linux上)
可选:LLM集成(扩展和重新排名)
Recollect可以使用远程LLM(如Anthropic的Claude 3 Haiku)通过以下方式提高搜索质量:
- 查询扩展:生成替代搜索词以查找概念上相关的记忆
- 语义重新排序:根据与查询的实际语义相关性对顶部结果进行重新排序
这在运行大型本地嵌入模型不可行的超薄硬件上特别强大。
export RECOLLECT_LLM_PROVIDER=anthropic
export ANTHROPIC_API_KEY=your_key_here
export RECOLLECT_ANTHROPIC_MODEL=claude-3-haiku-20240307安装
git clone
cd ruby-mcp-memory
bundle install可选:设置矢量搜索
要启用语义向量搜索,请创建一个Python虚拟环境并安装依赖项:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt然后在启动服务器时设置环境变量:
RECOLLECT_ENABLE_VECTORS=true ./bin/server可选:启用最近度排名
最近度排名将时间衰减评分应用于搜索结果,更喜欢更新的记忆 与具有类似相关性的旧版本相比。当最近的上下文更多时,这很有用 比历史信息更有价值。
RECOLLECT_RECENCY_AGING_FACTOR=0.5 RECOLLECT_RECENCY_HALF_LIFE_DAYS=30 ./bin/server- 老化因子 (0.0-1.0):新旧程度对排名有多大影响。0=禁用,1=完全生效。
- 半衰期:记忆最近度分数衰减到50%之前的几天。
随着 aging_factor=0.5 和 half_life_days=30,一个30天的记忆可以保留75%的 相关性得分,而全新的记忆保持100%。
用法
启动服务器
./bin/server服务器运行在 http://localhost:7326 默认情况下。
配置Claude代码
添加到您的Claude Code MCP配置中:
{
"mcpServers": {
"recollect": {
"type": "http",
"url": "http://localhost:7326/mcp"
}
}
}项目命名
Recollect为每个项目存储记忆。为了确保会话之间的命名一致, 在项目的CLAUDE.md中添加指令:
在存储或回忆记忆时,请将此项目称为“myproject”
如果没有这个,不同的会话可能会使用不一致的名称(目录基名, 其在单独的数据库中分割存储器。
克劳德代码技能
为了有效使用内存,请安装 using-long-term-memory 你的技能 ~/.claude/skills/ 目录。该技能强化了两个核心原则:
- 询问前先搜索 -当遇到问题或不熟悉的情况时,
在询问用户或调查代码库之前搜索内存
- 继续前进前先储存 -当做出决定、吸取教训或发现错误时
解决后,立即用适当的标签存储
看 docs/克劳德/技能/使用长期记忆/SKILL.md 为了获得全部技能。
CLI命令
# Check server status
./bin/recollect status
# Store a memory
./bin/recollect store "We decided to use Puma for threading" -p myproject -t decision
# Search memories
./bin/recollect search "threading"
# List recent memories
./bin/recollect list -p myproject
# List all projects
./bin/recollect projectsWeb用户界面
打开 http://localhost:7326 在浏览器中浏览和搜索回忆。
MCP工具
| 工具 | 说明 |
|---|---|
store_memory | 存储包含内容、类型、标签和项目的内存 |
search_memory | 在记忆中进行全文搜索 |
get_context | 获取项目的全面背景 |
list_projects | 列出所有存储了内存的项目 |
delete_memory | 按ID删除特定内存 |
内存类型
note(默认)-一般信息、事实、上下文todo-行动项目、任务、提醒session-会议总结和交接说明
对于语义分类(决策、模式、错误、学习),使用 标签 而不是存储器类型。这提供了更灵活的过滤,并允许记忆有多个类别。
MCP提示
提示是可重复使用的模板,指导人工智能助手完成常见的工作流程。
| 提示 | 描述 |
|---|---|
session_log | 创建结构化会话摘要并将其存储以供将来检索 |
resume_session | 使用上次会话日志和最近的记忆恢复工作 |
会话工作流
在会话结束时,使用 session_log 捕捉所做的工作、所做的决定, 解决的问题和下一步行动。这创建了一个“会话”内存类型。
启动新会话时,请使用 resume_session 检索最后一个会话日志,以及 最近的记忆,为继续你离开的地方提供背景。
resume_session详细信息
这 resume_session prompt接受可选 project 论点:
- 随着项目:检索最后一个会话日志和10个最近的记忆(笔记/待办事项)
对于该项目,然后要求人工智能总结并提出下一步行动
- 无项目:为人工智能从上下文中确定项目提供指导
(工作目录、对话或致电 get_context 无参数)
这使得你很容易从中断的地方继续,即使你不记得确切的位置 项目名称或您正在进行的工作。
配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
RECOLLECT_DATA_DIR | ~/.recollect | 数据存储目录 |
RECOLLECT_HOST | 127.0.0.1 | 服务器绑定地址 |
RECOLLECT_PORT | 7326 | 服务器端口 |
RECOLLECT_URL | http://localhost:7326 | CLI基本URL |
RECOLLECT_ENABLE_VECTORS | false | 启用矢量搜索 |
RECOLLECT_MAX_VECTOR_DISTANCE | 1.0 | 矢量结果的最大余弦距离(0-2) |
RECOLLECT_LOG_WIREDUMPS | false | 启用调试日志记录 |
RECOLLECT_RECENCY_AGING_FACTOR | 0.0 | 近期排名强度(0.0-1.0,0=禁用) |
RECOLLECT_RECENCY_HALF_LIFE_DAYS | 30.0 | 记忆相关性衰减到50%的天数 |
RECOLLECT_LLM_PROVIDER | none | LLM提供者(none, anthropic) |
ANTHROPIC_API_KEY | Anthropic提供程序的API密钥 | |
RECOLLECT_ANTHROPIC_MODEL | claude-3-haiku-20240307 | 用于Anthropic的模型 |
WEB_CONCURRENCY | 1 | 彪马工人流程 |
PUMA_MAX_THREADS | 5 | 每个工人的线程数 |
作为系统服务运行
看 docs/systemd/README.md 有关将Recollect作为用户systemd服务运行的安装说明。
发展
# Run tests
bundle exec rake test
# Run single test file
bundle exec ruby -Itest test/recollect/database_test.rb
# Lint
bundle exec rubocop建筑
┌─────────────────────────────────────────────────────────┐
│ Sinatra/Puma Server │
├─────────────────────────────────────────────────────────┤
│ POST /mcp → MCP protocol endpoint │
│ GET/POST /api/* → REST API │
│ GET / → Web UI │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ SQLite + FTS5 (per-project) │
├─────────────────────────────────────────────────────────┤
│ ~/.recollect/global.db → Cross-project memories │
│ ~/.recollect/projects/*.db → Project-specific │
└─────────────────────────────────────────────────────────┘许可证
GPL-3.0或更高版本
