Memgram——人工智能记忆图
AI助手的持久存储层,作为 主控程序 服务器。Memgram使任何兼容MCP的AI(Copilot CLI、Claude Desktop、Claude Code、Cursor等)能够记住会话中的想法、规则、决策和错误。
特性
- 24个MCP工具 用于存储/检索知识
- 会话管理 --跟踪所做的事情、何时、由哪种AI/模型完成
- 二维范围界定 --过滤条件
project和branch - 名称规范化 —
oxide-os,oxide_os,OxideOS所有比赛oxideos - 压实意识 --在上下文窗口边界保存/恢复状态
- 规则引擎 --学习严格和强化的做/不做模式
- 错误模式 --防止重复错误的故障知识
- FTS5全文搜索 具有相关性评分(最近性+访问性+严重性+固定)
- sqlite-vec矢量搜索 用于RAG风格的语义检索
- 健康诊断 --WAL/外键检查、向量可用性、表计数
- 意群 --将相关项目组合在一起
- 项目总结 --自动更新的实时概览
- 三种导出格式 --markdown(链接
.md文件)、网络(可导航的HTML网站)和PDF(带有完整内容、标记渲染和美人鱼图的深色主题报告) - 项目清理 --列出、合并或重命名项目以修复拼写错误
- 抽象数据库层 --SQLite现在,PostgreSQL/pgvector就绪
快速开始
# Install
uv add memgram
# Run as MCP server (stdio) — default subcommand
memgram serve
# Or just:
memgram
# With custom DB path
memgram --db-path /path/to/memgram.db serve
# With custom embedding dimensions (default: 384)
memgram serve --embedding-dim 1536
# Export database as markdown
memgram export -o memgram-export
# Export as PDF report
memgram export-pdf -o report.pdf --project myappCLI子命令
| 命令 | 描述 |
|---|---|
memgram serve | 通过stdio运行MCP服务器(未给出子命令时的默认值) |
memgram export | 将数据库导出为链接的markdown文件树(slug文件名) |
memgram export-web | 导出为可导航的Jekyll HTML网站 |
memgram export-pdf | 导出为样式化的深色主题PDF报告 |
memgram migrate-exports | 将基于旧ID的导出文件重命名为slugs并修复链接 |
memgram list-projects | 列出所有有计数的项目(即使不存在摘要) |
memgram merge-projects | 将一个项目的所有数据合并到另一个项目中(清除拼写错误) |
memgram rename-project | 重命名项目(如果目标已存在,则合并) |
全球旗帜(--db-path)在子命令之前;子命令特定的标志紧随其后。
MCP配置
副驾驶CLI/VS代码
添加到MCP设置(.vscode/mcp.json 或全局配置):
{
"servers": {
"memgram": {
"command": "uv",
"args": ["run", "--directory", "/path/to/memgram", "memgram"],
"env": {
"MEMGRAM_DB_PATH": "~/.memgram/memgram.db"
}
}
}
}克劳德桌面
添加 claude_desktop_config.json:
{
"mcpServers": {
"memgram": {
"command": "uv",
"args": ["run", "--directory", "/path/to/memgram", "memgram"],
"env": {
"MEMGRAM_DB_PATH": "~/.memgram/memgram.db"
}
}
}
}克劳德代码
添加 .claude/settings.json 或项目级别 .mcp.json:
{
"mcpServers": {
"memgram": {
"command": "uv",
"args": ["run", "--directory", "/path/to/memgram", "memgram"],
"env": {
"MEMGRAM_DB_PATH": "~/.memgram/memgram.db"
}
}
}
}范围界定模型
Memgram使用二维范围系统: 项目 + 分支.
| 维度 | 目的 | 示例 |
|---|---|---|
project | 按代码库/代码库隔离知识 | "myapp", "oxideos" |
branch | 按特征分支分离知识 | "featureauth", "fixloginbug" |
两者都是可选的和规范化的(小写,非字母数字剥离): feature/auth-flow 成为 featureauthflow.
范围界定是如何工作的:
- 无项目,无分支 --项目完全是全球性的
- 仅限项目 --该项目范围内的项,在所有分支上可见
- 项目+分支 --项目范围为该特定分支
检索行为:
get_rules和get_resume_context使用NULL包含匹配:传递时branch="featureauth",你在哪里得到物品branch='featureauth'加 项目在哪里branch IS NULL(分支全球项目)。这意味着,无论你在哪个分支,项目范围内的规则总是会浮出水面。search和list_sessions使用精确匹配:只返回与指定分支匹配的项。
指导:
- 使用
branch用于特定功能的决策、临时解决方法和仅分支上下文 - 省略
branch用于项目范围内的真相(编码标准、架构决策、持久规则) - 当一个分支合并时,其分支范围的知识会保留在数据库中,但会停止出现(因为没有人再查询该分支了)
工具
会话管理
| 工具 | 分支 | 描述 |
|---|---|---|
start_session | 是 | 开始会话。返回恢复上下文(上次快照、固定项、规则)。 |
end_session | -- | 以结构化摘要(决策、文件、下一个提示)结束。 |
save_snapshot | -- | 压缩检查点--目标、进度、阻碍者、下一步。 |
get_resume_context | 是 | 恢复所需的一切:会话、快照、规则、项目摘要。 |
知识管理
| 工具 | 分支 | 描述 |
|---|---|---|
add_thought | 是 | 储存一个想法(观察、决定、想法、模式、笔记)。 |
update_thought | 是 | 修改现有的想法。 |
add_rule | 是 | 学习模式——做/不做/取决于上下文,严重程度不同。 |
reinforce_rule | -- | 重新确认后,会削弱规则的信心。 |
add_error_pattern | 是的 | 记录一次失败:发生了什么,为什么,如何修复。 |
link_items | -- | 连接项目(通知、矛盾、取代、相关、原因)。 |
搜索与检索
| 工具 | 分支 | 描述 |
|---|---|---|
search | 是 | FTS5全文搜索所有具有相关性评分的表 |
search_by_embedding | yes | RAG风格的向量相似性搜索(需要存储嵌入)。 |
store_embedding | -- | 存储项目的向量嵌入。 |
get_rules | yes | 获取上下文(项目、分支、严重性、关键字)的活动规则。 |
get_session_history | 是 | 过去的会议有总结。 |
get_related | -- | 通过思维图链接的项目。 |
get_project_summary | -- | 生活项目概述。 |
update_project_summary | -- | 更新项目概述、技术栈、模式、目标。 |
组和维护
| 工具 | 分支 | 描述 |
|---|---|---|
create_group | yes | 创建一个命名集群(例如“身份验证系统”)。 |
add_to_group | -- | 向组中添加项目。 |
remove_from_group | -- | 从组中删除项目。 |
get_group | 是 | 获取包含所有成员详细信息的组。 |
pin_item | -- | 固定/取消固定--固定的项目始终在简历上下文中加载。 |
archive_item | -- | 存档--默认情况下排除在搜索之外。 |
建筑
src/memgram/
├── server.py # MCP server entry point (stdio) + CLI subcommands
├── models.py # Data models
├── utils.py # ID generation, timestamps, name normalization
├── export.py # Export engine (markdown, web, PDF)
├── db/
│ ├── __init__.py # create_db() factory
│ ├── base.py # DatabaseBackend ABC + MemgramDB business logic
│ └── sqlite.py # SQLite + FTS5 + sqlite-vec backend
└── tools/
├── __init__.py # Tool registration & dispatch (normalization choke point)
├── sessions.py # Session management tool definitions
├── knowledge.py # Knowledge management tool definitions
└── search.py # Search/retrieval/groups/maintenance tool definitions数据库
默认位置: ~/.memgram/memgram.db
12个表:会话、想法、规则、压缩快照、思想链接、错误模式、项目摘要、会话摘要、思想组、组成员、嵌入数据+用于向量搜索的sqlite向量虚拟表。
现有数据库将自动迁移: branch 列在启动时添加到7个相关表中(幂等)。现有行获取 branch=NULL,无缝工作。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MEMGRAM_DB_PATH | ~/.memgram/memgram.db | SQLite数据库路径 |
MEMGRAM_EMBEDDING_DIM | 384 | 嵌入向量维度 |
