mcpField
I
In Memoria

In Memoria

本地服务
github.com/pi22by7记忆与知识17544 周前更新

关于 In Memoria

In Memoria 是一个 MCP 服务,可从本地代码库中学习模式与架构,并在会话之间保存这些信息,供 AI 编码助手查询。项目采用本地优先设计,代码与数据保存在用户机器上,适合希望减少重复说明上下文的开发者。

主要功能

  1. 01学习代码库的命名约定与架构模式
  2. 02项目蓝图:技术栈、入口与结构概览
  3. 03根据功能需求路由到相关文件
  4. 04按语义、文本或模式进行代码搜索
  5. 05记录工作任务与架构决策的跨会话记忆

适用场景

  1. 01新会话中快速获取项目上下文,无需重复说明架构
  2. 02将模糊需求(如添加密码重置)映射到具体文件
  3. 03在 Copilot 等工具中按既有约定审查代码

MCP 相关

该项目是 MCP 服务,向 AI 编码助手提供 analyze_codebase、search_codebase、get_project_blueprint、predict_coding_approach 等 13 个工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"In-Memoria": {
"command": "npx",
"args": [
"-y",
"in-memoria"
]
}
}
}
启动命令npx -y in-memoria

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmin-memoria

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

In Memoria

npm version npm downloads License: MIT Discord

为 AI 编码助手提供真正持久的记忆。

快速演示

asciicast

观看 In Memoria 的实际演示:学习代码库、提供即时上下文,并将功能请求路由到相关文件。


问题:会话失忆

你一定很熟悉这样的流程:启动 Claude、Copilot 或 Cursor 来协助处理代码库。你解释架构,描述模式,说明约定。AI 理解了,帮你解决问题,一切都很顺利。

然后你关闭窗口。

下次会话呢?完全失忆。你又要解释一遍相同的架构决策、相同的命名约定,以及第十五次重复「不,我们这里不用类,而是用函数式组合」。

每次 AI 编码会话都要从头开始。

这不仅令人烦恼,也效率低下。这些工具每次交互都会重新分析代码库,浪费 token 和时间。它们会给出不符合你风格的泛泛建议,也不记得上次哪些做法奏效、哪些被你否决,或原因是什么。

解决方案:持久智能

In Memoria 是一个 MCP 服务,能够从你的实际代码库中学习,并在不同会话间保留记忆。它会构建关于你代码的持久智能(模式、架构、约定和决策),供 AI 助手通过 Model Context Protocol 查询。

你可以把它想成给 AI 结对程序员配了一个记事本,每次重启会话都不会被清空。

当前版本:0.6.0 - 查看更改内容

功能
  • 学习你的模式 - 分析代码,了解命名约定、架构选择和结构偏好
  • 即时项目上下文 - 以 <200 个 token 提供技术栈、入口点和架构(无需重新分析)
  • 智能文件路由 - 将「添加密码重置」等模糊请求直接路由到相关文件
  • 语义搜索 - 根据含义而不仅仅是关键词查找代码
  • 工作记忆 - 在不同会话间跟踪当前任务和架构决策
  • 模式预测 - 根据你的历史记录,建议你会如何解决类似问题
示例工作流
# First time: Learn your codebase
npx in-memoria learn ./my-project

# Start the MCP server
npx in-memoria server

# Now in Claude/Copilot:
You: "Add password reset functionality"
AI: *queries In Memoria*
    "Based on your auth patterns in src/auth/login.ts, I'll use your
     established JWT middleware pattern and follow your Result<T>
     error handling convention..."

# Next session (days later):
You: "Where did we put the password reset code?"
AI: *queries In Memoria*
    "In src/auth/password-reset.ts, following the pattern we
     established in our last session..."

无需重复解释。没有泛泛的建议。只有持续且能理解上下文的协助。

快速开始

安装
# Install globally
npm install -g in-memoria

# Or use directly with npx
npx in-memoria --help
连接到你的 AI 工具

Claude Desktop - 添加到配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "in-memoria": {
      "command": "npx",
      "args": ["in-memoria", "server"]
    }
  }
}

Claude Code CLI:

claude mcp add in-memoria -- npx in-memoria server

GitHub Copilot - 请参阅下方的 Copilot 集成部分

学习你的代码库
# Analyze and learn from your project
npx in-memoria learn ./my-project

# Or let AI agents trigger learning automatically
# (Just start the server and let auto_learn_if_needed handle it)
npx in-memoria server

工作原理

In Memoria 基于 Rust + TypeScript 构建,使用 Model Context Protocol 将 AI 工具连接到持久的代码库智能。

架构
┌─────────────────────┐    MCP     ┌──────────────────────┐    napi-rs    ┌─────────────────────┐
│  AI Tool (Claude)   │◄──────────►│  TypeScript Server   │◄─────────────►│   Rust Core         │
└─────────────────────┘            └──────────┬───────────┘               │  • AST Parser       │
                                              │                           │  • Pattern Learner  │
                                              │                           │  • Semantic Engine  │
                                              ▼                           │  • Blueprint System │
                                   ┌──────────────────────┐               └─────────────────────┘
                                   │ SQLite (persistent)  │
                                   │ SurrealDB (in-mem)   │
                                   └──────────────────────┘
核心组件

Rust 层 — 快速的原生处理:

  • 使用 Tree-sitter AST 解析 12 种语言(TypeScript、JavaScript、Python、PHP、Rust、Go、Java、C/C++、C#、Svelte、SQL)
  • 蓝图分析器(检测项目结构、入口点和架构模式)
  • 模式学习器(对你的编码风格进行统计分析)
  • 语义引擎(理解代码关系和概念)

TypeScript 层 — MCP 服务与编排:

  • 面向 AI 助手的 13 个专用工具(分为 4 类)
  • 使用 SQLite 存储结构化数据,使用 SurrealDB 和 SurrealKV 持久化向量嵌入
  • 文件监视,用于增量更新
  • 智能路由,将功能映射到文件

存储 — 本地优先:

  • 所有数据都保留在你的设备上
  • 使用 SQLite 存储模式和元数据
  • 使用 SurrealDB 和 SurrealKV 后端持久化向量嵌入
  • 使用本地 transformers.js 生成嵌入(Xenova/all-MiniLM-L6-v2)
与众不同之处

这不只是又一个 RAG 系统或静态规则引擎:

  • 从实际代码中学习 — 不是手动定义规则,而是从你的真实代码库中提取统计模式
  • 预测你的处理方式 — 根据你之前解决类似问题的方式进行预测
  • 节省 Token — 优化响应以尽量减少大模型上下文用量(项目上下文少于 200 个 Token)
  • 路由到文件 — “添加登录” → 自动建议 src/auth/login.ts
  • 记住上下文 — 跟踪工作会话、任务和架构决策
  • 多模式搜索 — 语义(含义)、文本(关键词)或基于模式的搜索

v0.5.x 新功能

我们最近完成了实施路线图的第 1 至第 4 阶段:

🗺️ 项目蓝图(第 1 阶段)

无需完整学习即可立即获取项目上下文。询问代码库相关问题,即可在 200 个 Token 以内获得技术栈、入口点、关键目录和架构信息。

💼 工作上下文系统(第 2 阶段)

AI Agent 现在可以跟踪工作会话、维护任务列表并记录架构决策。准确地从上次停止的位置继续工作。

🧭 智能文件路由(第 3 阶段)

跨 10 个类别(身份验证、API、数据库、UI 等)建立功能到文件的映射。像“添加密码重置”这样的模糊请求会自动路由到具体文件。

⚡ 流畅的进度跟踪(v0.5.3)

不再有恼人的控制台刷屏。进度条会原地更新,刷新频率稳定为 500 ms。

面向 AI 助手的 MCP 工具

In Memoria 提供 13 个专用工具,供 AI 助手通过 MCP 调用。它们分为 4 类(第 4 阶段整合了冗余工具,数量从 16 个减少到 13 个):

🎯 核心分析(2 个工具)
  • analyze_codebase — 使用概念、模式和复杂度分析文件/目录(第 4 阶段:现在同时支持文件和目录)
  • search_codebase — 多模式搜索(语义/文本/模式)
🧠 智能功能(7 个工具)
  • learn_codebase_intelligence — 深度学习,以提取模式和架构
  • get_project_blueprint — 立即获取包含技术栈和入口点的项目上下文 ⭐(第 4 阶段:包含学习状态)
  • get_semantic_insights — 查询已学习的概念和关系
  • get_pattern_recommendations — 获取模式及相关文件,以保持一致性
  • predict_coding_approach — 提供实现指导并路由到文件 ⭐
  • get_developer_profile — 获取编码风格和工作上下文
  • contribute_insights — 记录架构决策
🤖 自动化(1 个工具)
  • auto_learn_if_needed — 带过期检测的智能自动学习 ⭐(第 4 阶段:包含快速设置功能)
📊 监控(3 个工具)
  • get_system_status - 健康检查
  • get_intelligence_metrics - 已学习模式的分析数据
  • get_performance_status - 性能诊断

第 4 阶段整合:为了改善 AX(Agent 体验,哈哈),三个工具已合并到现有工具中:

  • get_file_content → 已合并到 analyze_codebase
  • get_learning_status → 已合并到 get_project_blueprint
  • quick_setup → 已合并到 auto_learn_if_needed

面向 AI Agent:请参阅 AGENT.md,了解完整的工具参考,包括使用模式和决策树。

GitHub Copilot 集成

In Memoria 通过自定义指令和聊天模式与 GitHub Copilot 配合使用。

设置

此仓库包含:

  • .github/copilot-instructions.md - 为 Copilot 提供自动指导
  • .github/chatmodes/ - 三种专用聊天模式:
    • 🔍 inmemoria-explorer - 智能代码库导航
    • 🚀 inmemoria-feature - 使用模式实现功能
    • 🔎 inmemoria-review - 检查一致性的代码审查

GitHub Copilot 集成(VS Code)

In Memoria 通过 MCP + 自定义 Agent(以前称为 聊天模式)与 GitHub Copilot Chat 集成。 这些 Agent 可让 Copilot 在 Agent 模式下工作时查询 In Memoria 的持久化智能。

⚠️ 重要:只有在聊天处于 Agent 模式(而非 Ask 或 Edit 模式)时,Copilot 才会调用 MCP 工具。

要求
  • VS Code 1.106+
  • 已启用 GitHub Copilot Chat
  • 已配置并运行 In Memoria MCP 服务

MCP 服务设置(必需)

在工作区中创建或编辑以下文件:

.vscode/mcp.json

{
  "servers": {
    "in-memoria": {
      "command": "npx",
      "args": ["in-memoria", "server"]
    }
  }
}

在 VS Code 中打开此文件,并在出现提示时点击 Start,或手动启动。


Copilot 指令(自动)

此仓库包含:

  • .github/copilot-instructions.md

VS Code 会自动加载此文件,并将其中的指导应用于 Copilot Chat。 无需进行其他设置。


自定义 Agent(以前称为“聊天模式”)

此仓库为 Copilot 提供 三个自定义 Agent:

Agent用途
🔍 inmemoria-explorer智能代码库导航
🚀 inmemoria-feature使用已学习的模式实现功能
🔎 inmemoria-review基于一致性和模式的代码审查
Agent 文件位置

⚠️ VS Code 已将 聊天模式 重命名为 自定义 Agent

为确保兼容当前版本的 VS Code:

  1. 创建文件夹:

    .github/agents/
    
  2. 移动或复制以下位置中的文件:

    .github/chatmodes/
    

    到:

    .github/agents/
    
  3. 重命名每个文件:

    *.chatmode.md → *.agent.md
    

示例:

inmemoria-feature.chatmode.md → inmemoria-feature.agent.md

在 VS Code 中使用 Agent
  1. 打开 Copilot Chat
  2. 直接从下拉菜单中选择自定义 Agent(例如,inmemoria-featurename)。

如果 Agent 未显示:

  • 重新加载窗口
  • 确保文件位于 .github/agents/

使用示例
Where is the authentication logic?

→ Copilot 查询 In Memoria 的语义索引

Add password reset functionality

→ Copilot 检索:

  • 文件路由
  • 架构模式
  • 先前的身份验证决策
Review this code for consistency

→ Copilot 根据已学习的约定进行比较


常见问题
  • ❌ 使用 Ask/Edit 模式 → MCP 工具会被忽略
  • ❌ MCP 服务未运行
  • ❌ Agent 文件仅留在 .github/chatmodes/ 中
  • ❌ VS Code 版本低于 1.106

VS Code 术语说明
旧名称当前名称
聊天模式自定义 Agent
Chat: Configure Chat Modes…Chat: Configure Custom Agents
.github/chatmodes/.github/agents/

VS Code 仍能识别旧版文件,但建议今后使用 .github/agents/*.agent.md 格式。

语言支持

通过 tree-sitter 进行原生 AST 解析,支持:

  • TypeScript 和 JavaScript(包括 JSX/TSX)
  • Python
  • PHP
  • Rust
  • Go
  • Java
  • C 和 C++
  • C#
  • Svelte
  • SQL

会自动过滤构建产物(node_modules/、dist/、.next/ 等)。

状态:进行中

坦诚地说:In Memoria 仍处于早期阶段。它可以运行,但还不够完善。

运行良好的功能
  • ✅ 从真实代码库中学习模式
  • ✅ 跨概念语义搜索
  • ✅ 生成项目蓝图
  • ✅ 与 Claude Desktop/Code 集成 MCP
  • ✅ 跨平台支持(Linux、macOS、Windows)
  • ✅ 节省 Token 的响应
已知限制
  • ⚠️ 大型代码库(10 万个以上文件)首次分析可能较慢
  • ⚠️ 代码库的一致性越高,模式准确度就越高
  • ⚠️ 不同语言的 tree-sitter 支持程度各不相同
  • ⚠️ 文档仍有待完善
我们需要你的帮助

这是用于 AI 辅助开发的开源基础设施。目前由 @pi22by7 独自开发,但我们不仅欢迎贡献,更离不开大家的参与。

贡献代码前,请先:

参与贡献的方式:

  • 🐛 报告 Bug——发现了问题?提交 issue
  • 💡 建议功能——有想法?在 Discord 或 GitHub Discussions 上讨论
  • 🔧 提交 PR——我们始终欢迎代码贡献(请先讨论!)
  • 📖 完善文档——帮助大家更轻松地理解项目
  • 🧪 在你的代码库中测试——试用并告诉我们哪些地方出问题
  • 💬 加入社区——通过 Discord 参与实时讨论

有关开发环境配置和指南,请参阅 CONTRIBUTING.md。

技术对比

与 GitHub Copilot 的记忆功能相比:

  • Copilot:基础事实存储,不学习模式
  • In Memoria:语义分析 + 模式学习 + 架构智能 + 工作上下文

与 Cursor 的规则相比:

  • Cursor:静态规则,需手动定义
  • In Memoria:从实际代码中动态学习 + 智能文件路由 + 项目蓝图

与自定义 RAG 相比:

  • RAG:检索相关代码片段
  • In Memoria:理解模式 + 预测解决方法 + 路由至文件 + 跟踪工作上下文

团队使用

In Memoria 既适用于个人开发者,也适用于团队:

个人:

  • 学习你的个人编码风格
  • 记住你做出的架构决策
  • 提供感知上下文的建议

团队:

  • 共享 .in-memoria.db 文件,分发已学习的模式
  • 通过预先学习的代码库智能帮助新开发者上手
  • 确保团队内的 AI 建议保持一致

从源代码构建

git clone https://github.com/pi22by7/in-memoria
cd in-memoria
npm install
npm run build

要求:

  • Node.js 18+
  • Rust 1.70+(从源代码构建所需)
  • 至少 2GB RAM

开发:

npm run dev          # Start in development mode
npm test            # Run test suite (98.3% pass rate)
npm run build:rust  # Build Rust components

质量指标:

  • 120 项单元测试中有 118 项通过(98.3%)
  • 23 项 MCP 集成测试全部通过(100%)
  • Rust 代码没有 clippy 警告
  • 已验证无内存泄漏

常见问题

问:这会取代我的 AI 编码助手吗? 答:不会,而是增强它们。In Memoria 提供记忆和上下文,让 Claude、Copilot 和 Cursor 等工具能够给出更好的建议。

问:会收集哪些数据? 答:所有数据都保留在本地。没有遥测,也不会向外部服务器发送数据。你的代码绝不会离开你的设备。所有嵌入都使用 transformers.js 模型在本地生成。

问:模式学习的准确性如何? 答:准确性会随着代码库规模和一致性的提升而提高。与规模较小或不一致的代码库相比,具有成熟模式的项目效果更好。系统会从频率和重复中学习。

问:对性能有什么影响? 答:影响极小。初次学习需要一些时间(与代码库规模成正比),但后续查询速度很快。文件监视可实现增量更新。智能过滤会自动跳过构建产物。

问:如果分析失败或结果异常怎么办? 答:请附上详细信息提交问题。内置超时机制和熔断器可以处理大多数边缘情况,但现实中的代码库往往很复杂,我们需要你的反馈来改进。

问:可以在生产环境中使用吗? 答:可以,但请记住,这还是 v0.5.x 版本。可能存在一些不完善之处。请充分测试并报告问题。我们正在努力提升稳定性,但目前还未达到目标。

问:为什么选择 Rust + TypeScript? 答:Rust 用于对性能要求较高的 AST 解析和模式分析。TypeScript 用于 MCP 服务和编排。两者各有优势:核心快速,集成层灵活。

问:其他 AI 工具(非 Claude/Copilot)能用吗? 答:任何支持 MCP 的工具都可以使用 In Memoria。我们已在 Claude Desktop、Claude Code 和 GitHub Copilot 上进行测试。其他工具应该也能使用,但可能需要进行配置。

路线图

我们采用分阶段推进的方式:

  • ✅ 阶段 1:项目蓝图系统(v0.5.0)
  • ✅ 阶段 2:工作上下文与会话记忆(v0.5.0)
  • ✅ 阶段 3:智能文件路由(v0.5.0)
  • ✅ 阶段 4:工具整合(v0.5.0)
  • 🚧 阶段 5:增强型向量搜索与嵌入
  • 📋 阶段 6:多项目智能
  • 📋 阶段 7:协作功能

详细进度请查看 GitHub Projects。

社区与支持

项目维护者: @pi22by7

贡献前须知:开始开发重要功能前,请先在 Discord、通过电子邮件或在问题讨论中交流你的想法。这有助于确保与项目方向一致,并避免重复劳动。

许可证

MIT - 详见 LICENSE

由 @pi22by7 为 AI 辅助开发社区倾心打造 ❤️


试用:npx in-memoria server

最新版本:v0.6.0 - 流畅的进度跟踪,阶段 1 至 4 已完成

In memoria:意为“在记忆中”。因为你的 AI 助手应该记住。

有问题或想法? 欢迎加入我们的 Discord,或通过 [email protected] 联系我们

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。