RLM内存MCP服务器
递归大模型(RLM)存储系统 -一种模型上下文协议(MCP)服务器,为AI代理提供持久内存和语义文件发现。
核心理念:AI Agent是 故意失明 到文件系统。而不是使用 ls, grep, find,或 dir,人工智能依靠MCP作为它的眼睛和记忆。
运作原理
┌─────────────────────────────────────────────────────────────────┐
│ YOU (Developer) │
│ │
│ npm start → Opens UI at http://localhost:3848 │
│ View all projects and memories in real-time │
│ Test all tools via the testing interface │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ projects/ directory │
│ rlm-memory-mcp-server/projects/ │
│ ├── jumpinotech/.rlm/ │
│ ├── my-app/.rlm/ │
│ └── another-project/.rlm/ │
└─────────────────────────────────────────────────────────────────┘
▲
│
┌─────────────────────────────────────────────────────────────────┐
│ AI Agents (Claude Code, Codex, etc) │
│ │
│ NEW! Bi-directional communication: │
│ Agent asks: "What files for this task?" → MCP answers │
│ MCP asks: "Is indexing complete?" → Agent confirms │
└─────────────────────────────────────────────────────────────────┘快速开始
cd rlm-memory-mcp-server
# Install dependencies
npm install
# Build
npm run build
# Create .env file with your Gemini API key
echo 'GEMINI_API_KEY=your-key-here' > .env
# Start the UI (for you to view memories and test tools)
npm start
# → Opens http://localhost:3848脚本
| 命令 | 描述 |
|---|---|
npm start | 启动UI服务器(用于查看内存+测试) |
npm run dev | 在开发模式下启动UI并自动重新加载 |
npm run mcp | 直接运行MCP服务器(用于测试) |
npm run build | 将TypeScript构建为JavaScript |
环境变量
创建 .env 文件:
# Required for AI features
GEMINI_API_KEY=your-gemini-api-key
# Optional
UI_PORT=3848在获取Gemini API密钥 谷歌人工智能工作室.
______________________________________________________________________
AI代理的MCP配置
克劳德代码
添加到 ~/.claude.json:
{
"mcpServers": {
"rlm-memory": {
"command": "node",
"args": ["D:\\rlm_memory\\rlm-memory-mcp-server\\dist\\index.js"]
}
}
}或者使用CLI:
claude mcp add rlm-memory -- node D:\\rlm_memory\\rlm-memory-mcp-server\\dist\\index.jsOpenAI Codex命令行界面
添加到 ~/.codex/config.toml:
[mcp_servers.rlm-memory]
command = "node"
args = ["D:\\rlm_memory\\rlm-memory-mcp-server\\dist\\index.js"]Gemini CLI
添加到 ~/.gemini/mcp.json:
{
"servers": {
"rlm-memory": {
"command": "node",
"args": ["D:\\rlm_memory\\rlm-memory-mcp-server\\dist\\index.js"]
}
}
}______________________________________________________________________
AI代理可用的工具
对于AI代理集成: 看 example_agents.md AI代理应该遵循的简明规则。
核心工具
| 工具 | 目的 |
|---|---|
rlm_init | 初始化新项目以进行跟踪 |
rlm_status | 获取项目统计信息 |
rlm_list_projects | 列出所有跟踪的项目 |
发现和搜索工具
| 工具 | 目的 |
|---|---|
rlm_query | 主要的 -向MCP询问用户请求的相关文件 |
rlm_recall_memory | 按关键字检索相关的过去上下文 |
rlm_find_files_by_intent | 自然语言语义文件搜索 |
索引和内存工具
| 工具 | 目的 |
|---|---|
rlm_index_codebase | 扫描并索引现有代码库 |
rlm_verify_index | 验证索引是否完成(索引检查后) |
rlm_smart_memory | 推荐 -使用丰富的元数据创建内存 |
rlm_create_memory | 基本内存创建(传统) |
网站地图管理工具
| 工具 | 目的 |
|---|---|
rlm_manage_sitemap | 代码库更改时删除、移动或更新文件条目 |
______________________________________________________________________
新工具(v2.0)
1. rlm_query -双向通信(初级)
AI代理的主要工具↔ MCP通信。
AI代理问:“用户想修复登录按钮,我应该查看哪些文件?” MCP的Gemini搜索内存+文件映射+编辑历史,并返回带有上下文的相关文件。
{
"project_name": "my-app",
"user_request": "The user wants to fix the submit button color on the login form",
"include_memories": true,
"include_suggestions": true,
"max_files": 10
}退货:
relevant_files:包含描述、最近更改、组件类型、功能区的文件relevant_memories:过去与此请求相关的工作ai_analysis:解释如何处理任务suggestions:AI代理的提示
2. rlm_smart_memory -增强内存创建(推荐)
创建具有丰富元数据的内存条目。AI代理提供详细的上下文,Gemini:
- 提取语义搜索的最佳关键字
- 按以下方式对文件进行分类 组件类型 (按钮、窗体、模态、api端点等)
- 按以下方式对文件进行分类 特征区域 (身份验证、结账、仪表板等)
- 轨迹 编辑历史记录 对于每个文件
{
"project_name": "my-app",
"user_prompt": "Fix the submit button color",
"changes_context": "Changed the submit button in LoginForm to use the primary theme color instead of hardcoded blue. Also added hover state styling.",
"files_modified": [
{
"path": "src/components/LoginForm.tsx",
"change_type": "modified",
"change_summary": "Updated button color to use theme.primary, added hover state"
}
],
"new_features": ["themed-buttons"],
"affected_areas": ["auth", "ui"]
}3. rlm_verify_index -后索引验证
在为代码库建立索引后,此工具会问: “就这些吗?你确定吗?”
{
"project_name": "my-app",
"expected_features": ["authentication", "payment", "dashboard"],
"report_format": "summary"
}退货:
- 按类型和功能区域分组的文件索引
- 检测到潜在差距(例如,“未找到测试文件”)
- AI代理确认提示
4. rlm_manage_sitemap -网站地图管理
当代码库更改时,保持站点地图同步。
AI代理可以使用此工具:
- 删除 不再存在的文件的条目
- 移动 重命名/移动文件时的条目
- 更新 元数据(描述、关键字、组件类型、特征区域)
{
"project_name": "my-app",
"operations": [
{ "action": "delete", "file_path": "src/old-component.tsx" },
{ "action": "move", "file_path": "src/Button.tsx", "new_path": "src/ui/Button.tsx" },
{
"action": "update",
"file_path": "src/api/auth.ts",
"updates": {
"description": "JWT authentication service",
"keywords": ["jwt", "auth", "token"],
"feature_area": "security"
}
}
]
}退货:
- 成功/失败操作总结
- 每次操作的详细结果
- 当前站点地图条目计数
______________________________________________________________________
增强功能
文件元数据
地图中的每个文件现在都包括:
component_type:按钮、窗体、模态、钩子、服务、api端点等。feature_area:身份验证、结账、仪表板、用户配置文件等。edit_history:包含日期和摘要的过去更改数组
智能语义搜索
这 rlm_find_files_by_intent 工具现在:
- 使用组件类型和特征区域缩小结果范围
- 考虑编辑历史以进行相关性评分
- 当您请求一个特定按钮时,不会返回所有按钮
- 提供选择文件的原因的推理
回退模式
所有工具都可以在没有Gemini API(基于关键字的回退)的情况下工作:
rlm_query:使用加权关键字匹配rlm_smart_memory:从文件路径推断类型rlm_find_files_by_intent:基本关键字搜索
______________________________________________________________________
现有工具参考
rlm_init -初始化项目
{
"project_name": "jumpinotech",
"working_directory": "D:\\projects\\jumpinotech"
}创造 projects/jumpinotech/.rlm/ 配备内存存储功能。
rlm_recall_memory -回忆上下文(先通话!)
{
"project_name": "jumpinotech",
"keywords": ["auth", "login", "session"]
}返回过去工作的相关记忆。
rlm_find_files_by_intent -查找文件
{
"project_name": "jumpinotech",
"user_prompt": "I need to fix the submit button color"
}使用AI从语义图中查找相关文件。
rlm_create_memory -保存内存(传统)
{
"project_name": "jumpinotech",
"user_prompt": "Fix login timeout",
"changes_summary": "Increased session timeout from 30min to 2hrs",
"files_modified": ["src/config/auth.ts"],
"keywords": ["auth", "session", "timeout"]
}rlm_index_codebase -索引现有代码库
{
"project_name": "jumpinotech",
"directory_path": "D:\\projects\\jumpinotech",
"max_files": 200,
"read_content": true
}现在还摘录: component_type、feature_area和验证提示。
______________________________________________________________________
RLM工作流程
对于新项目
User: "Help me work on this new project"
│
▼
┌──────────────────────────────────────┐
│ 1. rlm_init │
│ Initialize project │
└──────────────────────────────────────┘
│
▼
Ready for RLM workflow!对于现有的代码库(首次)
User: "Index this codebase"
│
▼
┌──────────────────────────────────────┐
│ 1. rlm_init + rlm_index_codebase │
│ Scans directory, builds file map │
│ with AI-generated descriptions │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 2. rlm_verify_index │
│ MCP asks: "Is this everything?" │
│ Shows what was indexed + gaps │
└──────────────────────────────────────┘
│
▼
Project is ready!常规任务工作流(推荐)
User: "Fix the submit button"
│
▼
┌──────────────────────────────────────┐
│ 1. rlm_query (PRIMARY TOOL) │
│ "User wants to fix submit button" │
│ → Gets: Relevant files, past │
│ memories, AI suggestions │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 2. AI reads & fixes the files │
│ Using context from rlm_query │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 3. rlm_smart_memory (MANDATORY!) │
│ Records changes with rich context │
│ Updates file map with edit history│
└──────────────────────────────────────┘传统工作流(仍受支持)
User: "Fix the submit button"
│
▼
┌──────────────────────────────────────┐
│ 1. rlm_recall_memory │
│ keywords: ["submit", "button"] │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 2. rlm_find_files_by_intent │
│ "Fix submit button not working" │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 3. AI reads & fixes the files │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 4. rlm_create_memory │
│ Records what was done │
└──────────────────────────────────────┘______________________________________________________________________
项目结构
rlm-memory-mcp-server/
├── src/
│ ├── index.ts # MCP server (for AI agents via stdio)
│ ├── ui/
│ │ └── server.ts # Web UI (for you at localhost:3848)
│ ├── services/
│ │ ├── database.ts # File-based storage
│ │ └── gemini.ts # Gemini AI (semantic search, keywords)
│ ├── tools/
│ │ ├── query.ts # NEW: rlm_query
│ │ ├── smart-memory.ts # NEW: rlm_smart_memory
│ │ ├── verify-index.ts # NEW: rlm_verify_index
│ │ ├── index-codebase.ts # Enhanced with types
│ │ ├── find-files.ts # Enhanced semantic search
│ │ ├── recall-memory.ts
│ │ ├── create-memory.ts
│ │ └── init-status.ts
│ └── schemas/ # Zod validation
├── projects/ # All project data stored here
│ ├── jumpinotech/.rlm/
│ └── my-app/.rlm/
├── dist/ # Built JavaScript
├── .env # Your API keys
└── package.json______________________________________________________________________
Web UI功能
打开 http://localhost:3848 跑步后 npm start:
- 实时更新 -每5秒自动刷新一次
- 项目浏览器 -查看所有跟踪的项目
- 内存查看器 -查看所有带有时间戳的记忆
- 文件映射 -查看包含组件类型和特征区域的语义文件索引
- 搜索 -按名称筛选项目
- 工具测试 -直接从UI测试所有MCP工具
______________________________________________________________________
常见问题解答
为什么不在每个项目文件夹中存储数据?
集中存储 projects/ 指:
- 一个备份所有AI记忆的地方
- 易于在UI中查看所有项目
- 没有杂乱的项目仓库
.rlm文件夹 - 即使删除项目文件夹也能工作
我可以在没有Gemini API的情况下使用它吗?
对!回到关键字匹配。人工智能功能不会那么智能。
我该如何备份我的记忆?
只需复制 projects/ 文件夹。
rlm_query和rlm_recall_memory有什么区别?
rlm_query: 全面的 -搜索文件+记忆+编辑历史记录,返回AI分析和建议rlm_recall_memory: 简单 -只需按关键字搜索记忆
rlm_smart_memory和rlm_create_memory有什么区别?
rlm_smart_memory: 元数据 -提取零部件类型、要素区域、轨迹编辑历史记录rlm_create_memory: 基础 -只存储内存条目
______________________________________________________________________
许可证
麻省理工学院
