mcpsqlite_memory_bank
概述
mcpsqlite_memory_bank 是一个动态的、对代理和LLM友好的SQLite内存库,专为模型上下文协议(MCP)服务器和现代AI代理平台设计。
该项目提供了一个强大的、可发现的API,用于创建、探索和管理SQLite表和知识图。它使Claude、Anthropic、Github Copilot、Claude Desktop、VS Code、Cursor和其他LLM驱动的工具能够以安全、明确和可扩展的方式与结构化数据进行交互。
关键用例:
- 构建和查询用于语义搜索和推理的知识图
- 为LLM代理存储、检索和组织笔记或结构化数据
- 为数据库管理和探索启用自然语言工作流
- 具有语义搜索功能的智能内容发现
- 通过标准化的MCP资源和提示访问内存内容
- 与FastMCP、Claude Desktop和其他代理平台集成,实现无缝工具发现
为什么选择mcp_sqlite_memory_bank?
- 完全符合MCP: 资源、提示和40多种有组织的工具
- 语义搜索: 基于人工智能的相似性匹配的自然语言内容发现
- 显式、可发现的API 用于LLM和具有增强分类功能的代理
- 安全、参数化的查询和模式管理
- 专为可扩展性和开源协作而设计
______________________________________________________________________
快速开始
在2分钟内开始在IDE中使用SQLite内存库:
1.安装并运行
# Install uvx if you don't have it
pip install uvx
# Run SQLite Memory Bank
uvx mcp-sqlite-memory-bank2.配置IDE
VS代码/光标: 增添 .vscode/mcp.json:
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "${workspaceFolder}/.vscode/project_memory.sqlite"
}
}
}
}克劳德桌面: 增添 claude_desktop_config.json:
{
"mcpServers": {
"sqlite_memory": {
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "/path/to/your/memory.db"
}
}
}
}3.测试它
重新启动IDE并尝试询问AI助手:
创建一个名为“notes”的表,其中包含列“id”(整数、主键)和“content”(文本)。然后添加一个注释,上面写着“Hello SQLite Memory Bank!”
✅ 你应该看到AI使用SQLite内存库工具创建表格并添加注释!
______________________________________________________________________
特性
- 动态表管理: 在运行时创建、列出、描述、重命名和删除表
- 高级CRUD操作: 插入、读取、更新、删除,具有智能批处理和更改跟踪功能
- 安全SQL: 运行具有全面输入验证的参数化SELECT查询
- 语义搜索引擎: 使用句子变换器进行自然语言搜索以实现智能内容发现
- 零设置搜索: 自动嵌入生成
auto_semantic_search和auto_smart_search - 批处理操作套件: 高效的批量创建、更新和删除操作,部分成功处理
- 高级优化: 重复检测、存储体优化和智能归档
- LLM辅助分析: 基于人工智能的重复检测、优化策略和归档策略
- 发现与情报: 人工智能引导的探索、关系发现和预构建的工作流模板
- 三维可视化: 令人惊叹的Three.js/WGBL知识图,支持实时照明和VR
- 交互式仪表板: 具有企业级功能的专业D3.js可视化
- MCP资源: 通过标准化的MCP资源URI访问内存内容
- MCP提示: 用于常见内存分析工作流的内置智能提示
- 工具分类: 组织工具发现,并提供详细的使用示例,以增强LLM集成
- 知识图谱工具: 内置对节点/边缘模式和沉浸式3D属性图的支持
- 代理/LLM集成: 显式、基于工具的API,便于发现和自动化
- 企业规模: 具备全面优化和分析能力的生产就绪
- 开源: 麻省理工学院获得许可,经过全面测试,可供社区使用
______________________________________________________________________
MCP合规性和增强集成
SQLite Memory Bank v1.6.4+提供了完全符合模型上下文协议(MCP)的高级功能,以增强LLM和代理集成:
🔧 MCP工具(40+可用)
按逻辑类别组织,便于发现:
- 模式管理 (6个工具):表格创建、修改和检查
- 数据操作 (11个工具):带验证和高级批处理的CRUD操作
- 搜索与发现 (6个工具):内容搜索、探索和智能发现
- 语义搜索 (5个工具):人工智能驱动的自然语言内容发现
- 优化和分析 (8个工具):内存库优化、重复检测和洞察
- 可视化和知识图 (4个工具):交互式可视化和3D知识图
📄 MCP资源(5个可用)
通过标准化URI实时访问内存内容:
memory://tables/list-所有可用表格列表memory://tables/{table_name}/schema-表架构信息memory://tables/{table_name}/data-表数据内容memory://search/{query}-搜索结果作为资源memory://analytics/overview-内存库概述分析
💡 MCP提示(4个可用)
常见内存分析工作流的智能提示:
analyze-memory-content-分析记忆库内容并提供见解search-and-summarize-搜索并创建摘要提示technical-decision-analysis-从记忆中分析技术决策memory-bank-context-为AI对话提供内存库上下文
🎯 增强的可发现性
- 工具分类:
list_tool_categories()用于有组织的工具发现 - 使用示例:
get_tools_by_category()每个工具都有详细的示例 - 语义搜索: 用于智能内容发现的自然语言查询
- LLM友好API: 明确、描述性的工具名称和全面的文档
______________________________________________________________________
工具和API参考
所有工具都是为LLM、代理和开发人员明确、可发现的使用而设计的。每个函数都可以作为直接的Python导入和MCP工具使用。
🔍 工具发现: 使用 list_tool_categories() 查看所有已组织的工具类别,或 get_tools_by_category(category) 有关特定工具组和使用示例的详细信息。
架构管理工具(6个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
create_table | 使用自定义架构创建新表 | table_name (str), columns (列表\[字典\]) | 无 |
drop_table | 删除表格 | table_name (str) | 无 |
rename_table | 重命名现有表 | old_name (str), new_name (str) | 无 |
list_tables | 列出所有表 | 无 | 无 |
describe_table | 获取架构详细信息 | table_name (str) | 无 |
list_all_columns | 列出所有表的所有列 | 无 | 无 |
数据操作工具(11个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
create_row | 将行插入表中 | table_name (str), data (字典) | 无 |
read_rows | 从表中读取行 | table_name (str) | where 字典 limit (int) |
update_rows | 更新现有行 | table_name (str), data 字典 where (字典) | 无 |
delete_rows | 从表中删除行 | table_name (str), where (字典) | 无 |
run_select_query | 运行安全的SELECT查询 | table_name (str) | columns (list\[str\]), where 字典 limit (int) |
upsert_memory | 智能更新或创建具有更改跟踪功能的内存记录 | table_name (str), data 字典 match_columns (list\[str\]) | 无 |
batch_create_memories | 高效地创建多个内存记录 | table_name (str), data_list (列表\[字典\]) | match_columns (list\[str\]), use_upsert (bool) |
batch_delete_memories | 高效删除多个内存记录 | table_name (str), where_conditions (列表\[字典\]) | match_all (bool) |
find_duplicates | 查找重复和接近重复的内容 | table_name (str), content_columns (列表\[str\]) | similarity_threshold (浮动), sample_size (int) |
archive_old_memories | 存档旧记忆以减少活动存储 | table_name (str) | archive_days (int), archive_table_suffix (str), delete_after_archive (bool) |
optimize_memory_bank | 全面的存储体优化 | table_name (str) | optimization_strategy (str), dry_run (bool) |
搜索和发现工具(6个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
search_content | 跨表内容的全文搜索 | query (str) | tables (list\[str\]), limit (int) |
explore_tables | 探索和发现表结构 | 无 | pattern (str), include_row_counts (bool) |
intelligent_discovery | AI引导的记忆库探索 | 无 | discovery_goal (str), focus_area (str), depth (str), agent_id (str) |
discovery_templates | 预构建的勘探工作流程 | 无 | template_type (str), customize_for (str) |
discover_relationships | 查找数据中的隐藏连接 | 无 | table_name (str), relationship_types (list\[str\]), similarity_threshold (浮动) |
generate_knowledge_graph | 创建交互式HTML知识图 | 无 | output_path (str), include_temporal (布尔), min_connections (int), open_in_browser (bool) |
语义搜索工具(5个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
add_embeddings | 生成用于语义搜索的向量嵌入 | table_name (str), text_columns (列表\[str\]) | embedding_column (str), model_name (str) |
semantic_search | 基于向量相似度的自然语言搜索 | query (str) | tables (list\[str\]), similarity_threshold (浮动), limit (int) |
find_related | 按相似性查找与特定行相关的内容 | table_name (str), row_id (int) | similarity_threshold (浮动), limit (int) |
smart_search | 混合关键字+语义搜索 | query (str) | tables (list\[str\]), semantic_weight (浮动), text_weight (浮动) |
embedding_stats | 获取语义搜索准备情况的统计数据 | table_name (str) | embedding_column (str) |
优化和分析工具(8个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
analyze_memory_patterns | 全面的内容分布分析 | 无 | focus_tables (list\[str\]), include_semantic (bool) |
get_content_health_score | 总体健康评分及建议 | 无 | tables (list\[str\]), detailed_analysis (bool) |
intelligent_duplicate_analysis | LLM辅助语义重复检测 | table_name (str), content_columns (列表\[str\]) | analysis_depth (str) |
intelligent_optimization_strategy | 基于人工智能的优化规划 | table_name (str) | optimization_goals (列表\[str\]) |
smart_archiving_policy | 基于人工智能的留存策略 | table_name (str) | business_context (str), retention_requirements 字典 |
auto_semantic_search | 自动嵌入的零设置语义搜索 | query (str) | tables (list\[str\]), similarity_threshold (浮动), limit (int), model_name (str) |
auto_smart_search | 具有自动嵌入功能的零设置混合搜索 | query (str) | tables (list\[str\]), semantic_weight (浮动), text_weight (浮动), limit (int), model_name (str) |
list_tool_categories | 列出所有可用的工具类别 | 无 | 无 |
可视化和知识图工具(4个工具)
| 工具 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
create_3d_knowledge_graph | 使用Three.js创建令人惊叹的3D知识图 | 无 | output_path (str), table_name (str), include_semantic_links (布尔), color_scheme (str), camera_position (str), animation_enabled (布尔), export_formats (列表\[str\]) |
create_interactive_d3_graph | 专业D3.js交互式知识图谱 | 无 | output_path (str), include_semantic_links (布尔), filter_tables (list\[str\]), layout_algorithm (str), color_scheme (str), export_formats (列表\[str\]) |
create_advanced_d3_dashboard | 具有多种可视化功能的Enterprise D3.js仪表板 | 无 | output_path (str), dashboard_type (str), include_metrics (布尔), real_time_updates (布尔), custom_widgets (列表\[str\]) |
export_graph_data | 以专业格式导出图形数据 | 无 | output_path (str), format (str), include_metadata (布尔), compress_output (bool) |
\[1.6.4\]-3D可视化和综合功能(2025-06-29)
当前版本:最先进的SQLite内存库版本,包含40多个MCP工具、3D可视化、LLM辅助优化和企业级功能。
🚀 最近的主要功能
- 3D知识图:具有实时照明的沉浸式Three.js/WGBL可视化
- 批量操作:高效的批量处理,智能防复制
- LLM辅助工具:人工智能驱动的优化策略和重复分析
- 高级发现:智能探索与关系检测
- 增强活力:通过新旧价值比较进行详细的变更跟踪
- 零设置搜索:用于即时语义搜索的自动嵌入生成
- 企业优化:通过归档实现全面的内存库优化
有关详细更改,请参阅 更改日志.md.
🚀 批处理操作和高级内存管理
SQLite Memory Bank v1.6.4+提供强大的批处理操作和智能优化,以实现高效的内存管理:
智能内存更新和更改跟踪
- 增强
upsert_memory:智能更新或创建,具有详细的变更跟踪功能 - 字段级别更改:查看新旧值比较的确切变化
- 防止重复:使用匹配列查找现有记录
- 透明度:完全了解现场修改以进行调试
高效的批处理
batch_create_memories:在单个操作中创建多条记录- 智能模式与快速模式:在追加销售逻辑(防止重复)或快速插入之间进行选择
- 部分成功处理:即使某些记录失败,也会继续处理
- 详细反馈:返回已创建、已更新和失败记录的计数
灵活批量删除
batch_delete_memories:删除条件复杂的多条记录- 灵活匹配:支持OR逻辑(match_any)和and逻辑(match_all)
- 条件列表:根据多个不同标准删除
- 安全操作:删除前验证条件
高级优化套件
find_duplicates:通过语义分析检测精确和近乎重复的内容optimize_memory_bank:通过重复数据消除和归档进行全面优化archive_old_memories:具有可配置保留策略的智能归档- 模拟运行支持:在应用更改之前分析优化
LLM辅助优化
intelligent_duplicate_analysis:AI驱动的语义重复检测intelligent_optimization_strategy:基于数据模式的定制优化规划smart_archiving_policy:人工智能生成的保留策略与业务需求相一致
发现与关系智能
intelligent_discovery:人工智能引导的探索,以目标为导向的工作流程discovery_templates:为常见场景预先构建的探索模式discover_relationships:自动检测隐藏的数据连接- 零设置搜索:
auto_semantic_search和auto_smart_search具有自动嵌入生成功能
使用示例
# Enhanced upsert with change tracking
upsert_result = upsert_memory('technical_decisions', {
'decision_name': 'API Design',
'chosen_approach': 'REST APIs with GraphQL',
'rationale': 'Better performance and flexibility'
}, match_columns=['decision_name'])
# Returns: {"updated_fields": {"chosen_approach": {"old": "REST APIs", "new": "REST APIs with GraphQL"}}}
# Batch create with duplicate prevention
batch_create_memories('project_insights', [
{'category': 'performance', 'insight': 'Database indexing strategies'},
{'category': 'security', 'insight': 'Input validation patterns'},
{'category': 'architecture', 'insight': 'Microservice communication patterns'}
], match_columns=['category', 'insight'], use_upsert=True)
# Intelligent duplicate detection
find_duplicates('project_knowledge', ['title', 'content'],
similarity_threshold=0.85)
# AI-powered optimization strategy
intelligent_optimization_strategy('user_data',
optimization_goals=['performance', 'storage'])
# Zero-setup semantic search
auto_smart_search('machine learning algorithms and AI patterns',
semantic_weight=0.7, text_weight=0.3)🎨 高级可视化和知识图
SQLite内存库包括强大的可视化功能,用于探索和呈现您的数据:
3D知识图
- Three.js/WGBL渲染:硬件加速的实时照明3D图形
- 交互式相机控制:动态观察、平移、缩放,动画流畅
- 多个主题:专业、充满活力、霓虹和宇宙色彩方案
- 导出功能:屏幕截图、3D模型格式(GLTF、OBJ)
- VR就绪:WebXR支持沉浸式观看体验
交互式D3.js可视化
- 专业知识图谱:企业级交互式可视化
- 多种布局算法:强制、分层、圆形布局
- 实时过滤:具有搜索功能的动态节点/边缘过滤
- 语义关系:AI驱动的智能边缘连接
- 导出套件:用于演示文稿的PNG、SVG、JSON导出
企业仪表板
- 多控件仪表板:力图、时间线、指标、热图
- 实时更新:通过WebSocket实现实时数据刷新功能
- 跨小部件筛选:交互式深入分析和数据探索
- 专业造型:企业级UI/UX设计
- 移动响应:针对台式机、平板电脑和移动设备进行了优化
使用示例
# Create stunning 3D knowledge graph
create_3d_knowledge_graph(
color_scheme="cosmic",
animation_enabled=True,
include_semantic_links=True
)
# Professional interactive D3.js graph
create_interactive_d3_graph(
layout_algorithm="force",
color_scheme="professional",
export_formats=["png", "svg"]
)
# Enterprise dashboard with multiple visualizations
create_advanced_d3_dashboard(
dashboard_type="enterprise",
include_metrics=True,
real_time_updates=True
)______________________________________________________________________
运输方式
标准模式(默认)
- 用例:MCP客户端(VS Code、Claude Desktop等)
- 协议:通过标准输入/标准输出的JSON-RPC
- 命令:
uvx mcp-sqlite-memory-bank - 益处:与AI助手和IDE直接集成
HTTP模式(开发)
- 用例:开发、测试、web API
- 协议:HTTP REST API
- 命令:
python -m mcp_sqlite_memory_bank.server main --port 8000 - 益处:Web浏览器访问、卷曲测试、API集成
______________________________________________________________________
安装和运输选项
要求:
- Python 3.8或更高版本(pyproject.toml中指定的必需包)
- FastAPI,Uvicorn(用于服务器模式)
- 支持的操作系统:Windows、macOS、Linux
选项1:从PyPI安装(推荐)
pip install mcp_sqlite_memory_bank选项2:从源代码克隆和安装(适用于贡献者)
git clone https://github.com/robertmeisner/mcp_sqlite_memory_bank.git
cd mcp_sqlite_memory_bank
pip install -e .选项3:通过NPX风格的命令运行
python -m pip install --user pipx
pipx run mcp_sqlite_memory_bank选项4:通过UVX运行(建议MCP客户端使用)
# Run directly with latest version (recommended)
uvx mcp-sqlite-memory-bank
# Force refresh to get latest updates
uvx --refresh mcp-sqlite-memory-bank______________________________________________________________________
运行命令
Stdio传输(默认值-适用于VS Code、Claude Desktop等MCP客户端):
uvx mcp-sqlite-memory-bankHTTP传输(仅限开发/测试):
python -m mcp_sqlite_memory_bank.server main --host 127.0.0.1 --port 8000______________________________________________________________________
设置和配置
数据库位置
默认行为(v1.2.5+):
- 用户特定数据库:
~/.mcp_sqlite_memory/memory.db - 按用户隔离:每个用户都有自己的数据库
- 跨项目持续:数据在会话之间保留
自定义数据库路径: 您可以通过配置自定义数据库位置 DB_PATH 环境变量:
- 项目特定:
DB_PATH=./project_memory.db - 共享团队数据库:
DB_PATH=/shared/team_memory.db - 临时数据库:
DB_PATH=/tmp/session_memory.db
环境变量:
DB_PATH:SQLite数据库文件的路径(默认值:~/.mcp_sqlite_memory/memory.db)
示例 .env:
# Use project-specific database
DB_PATH=./project_memory.db
# Or use a specific location
DB_PATH=/path/to/my/memory.db迁移说明: 如果您使用的是v1.2.4或更早版本,则您的数据存储在 ./test.db 在当前工作目录中。要迁移数据,请执行以下操作:
- 找到你的旧
test.db文件 - 将其复制到新的默认位置:
~/.mcp_sqlite_memory/memory.db - 或设置
DB_PATH指向您现有的数据库
______________________________________________________________________
与编辑和代理平台集成
VS代码集成
手动配置
选项1:使用默认用户数据库(推荐)
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"]
}
}
}选项2:项目特定数据库
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "${workspaceFolder}/.mcp_memory.db"
}
}
}
}选项3:自定义数据库位置
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "/path/to/your/custom/memory.db"
}
}
}
}光标集成
游标使用与VS代码相同的配置。增添 .vscode/mcp.json:
选项1:使用默认用户数据库(推荐)
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"]
}
}
}选项2:项目特定数据库
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "${workspaceFolder}/.mcp_memory.db"
}
}
}
}选项3:自定义数据库位置
{
"servers": {
"SQLite_Memory": {
"type": "stdio",
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "/path/to/your/custom/memory.db"
}
}
}
}Claude桌面集成
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"sqlite_memory": {
"command": "uvx",
"args": ["--refresh", "mcp-sqlite-memory-bank"],
"env": {
"DB_PATH": "/path/to/your/memory.db"
}
}
}
}- 在VS Code、Cursor或Claude Desktop中打开您的项目。MCP服务器将由Copilot Chat、Cursor、Claude或任何兼容的代理自动发现。
- 使用自然语言创建表格、存储笔记或构建知识图。
______________________________________________________________________
运行服务器
MCP标准模式(推荐)
用于VS Code、Claude Desktop和其他MCP客户端:
# Run with uvx (automatically gets latest version)
uvx mcp-sqlite-memory-bank
# Force refresh to latest version
uvx --refresh mcp-sqlite-memory-bank开发/测试模式
HTTP服务器模式(用于开发和测试):
python -m mcp_sqlite_memory_bank.server main --port 8000直接Python模块:
python -m mcp_sqlite_memory_bank.server______________________________________________________________________
资源
服务器将所有工具作为MCP资源公开,并支持知识图模式(节点、边、属性)。
代理和复制品使用:
- 看 API文档 用于:
- Agent和Copilot使用场景(自然语言提示→ 工具映射) - 可访问性和安全说明
- 看 内存使用说明 用于:
- 为LLM代理实现持久内存 - 内存管理的模式设计和最佳实践
代理提示示例:
创建一个名为“tasks”的表,其中包含列“id”(整数、主键)和“description”(文本)
这将触发 create_table 该工具具有适当的参数。有关更多代理提示示例,请参阅API文档。
______________________________________________________________________
使用示例
快速入门:基本表格
from mcp_sqlite_memory_bank import create_table, create_row, read_rows
create_table(
"notes",
[
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "content", "type": "TEXT"}
]
)
create_row("notes", {"content": "Hello, memory bank!"})
rows = read_rows("notes")
print(rows)知识图(节点和边)
# Basic implementation example for creating knowledge graphs
from mcp_sqlite_memory_bank import create_table, create_row, read_rows
create_table("nodes", [
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "label", "type": "TEXT"}
])
create_table("edges", [
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "source", "type": "INTEGER"},
{"name": "target", "type": "INTEGER"},
{"name": "type", "type": "TEXT"}
])
n1 = create_row("nodes", {"label": "Person"})
n2 = create_row("nodes", {"label": "Company"})
create_row("edges", {"source": n1["id"], "target": n2["id"], "type": "works_at"})
print(read_rows("nodes"))
print(read_rows("edges"))LLM代理内存实现
以下是一个Python应用程序如何实现内存模式的示例,但请记住,LLM将通过MCP工具和自然语言与这些功能进行交互:
# Initialize memory schema
def initialize_agent_memory():
tables = list_tables()
# Create tables if they don't exist yet
if 'user_preferences' not in tables['tables']:
create_table('user_preferences', [
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "preference_type", "type": "TEXT NOT NULL"},
{"name": "preference_value", "type": "TEXT NOT NULL"},
{"name": "context", "type": "TEXT"}
])
# Store a user preference
def remember_preference(pref_type, pref_value, context=None):
# Check if this preference already exists
existing = read_rows('user_preferences', {'preference_type': pref_type})
if existing['rows']:
# Update existing preference
update_rows('user_preferences',
{'preference_value': pref_value, 'context': context},
{'id': existing['rows'][0]['id']})
else:
# Create new preference
create_row('user_preferences', {
'preference_type': pref_type,
'preference_value': pref_value,
'context': context
})
# Retrieve user preferences
preferences = read_rows('user_preferences')
print(f"Remembered {len(preferences['rows'])} user preferences")LLM将使用自然语言命令完成相同的任务,例如:
Create a table called 'user_preferences' with columns for id (auto-incrementing primary key),
preference_type (required text), preference_value (required text), and context (optional text).
Add a row to user_preferences with preference_type="code_style" and preference_value="tabs" and context="User prefers tabs over spaces"
Find all rows in the user_preferences table有关完整的代理内存实现示例,请参阅 examples/agent_memory.example.py 和详细 内存使用说明.
______________________________________________________________________
MCP资源和提示使用
使用MCP资源
MCP资源通过标准化的URI提供对内存内容的实时访问:
# Access resource via MCP client
resource_uri = "memory://tables/list"
tables_resource = await client.read_resource(resource_uri)
# Get table schema
schema_uri = "memory://tables/user_preferences/schema"
schema_resource = await client.read_resource(schema_uri)
# Access table data
data_uri = "memory://tables/user_preferences/data"
data_resource = await client.read_resource(data_uri)
# Search as resource
search_uri = "memory://search/user preferences coding style"
search_resource = await client.read_resource(search_uri)
# Analytics overview
analytics_uri = "memory://analytics/overview"
analytics_resource = await client.read_resource(analytics_uri)使用MCP提示
MCP Prompts提供智能分析工作流程:
# Analyze memory content
analysis_prompt = await client.get_prompt("analyze-memory-content", {
"focus_area": "technical_decisions"
})
# Search and summarize
summary_prompt = await client.get_prompt("search-and-summarize", {
"query": "database performance optimization",
"max_results": 10
})
# Technical decision analysis
decision_analysis = await client.get_prompt("technical-decision-analysis", {
"decision_category": "architecture"
})
# Get memory context for conversations
context_prompt = await client.get_prompt("memory-bank-context", {
"conversation_topic": "API design patterns"
})语义搜索示例
# 🌟 ZERO-SETUP SEMANTIC SEARCH (RECOMMENDED)
# Automatic semantic search - handles embedding generation automatically
results = auto_semantic_search("machine learning algorithms",
similarity_threshold=0.4,
limit=5)
# 🌟 ZERO-SETUP HYBRID SEARCH (RECOMMENDED)
# Automatic hybrid search - combines semantic + keyword automatically
hybrid_results = auto_smart_search("API design patterns",
semantic_weight=0.7,
text_weight=0.3)
# Advanced: Manual embedding setup (for power users)
add_embeddings("technical_decisions", ["decision_name", "rationale"])
# Advanced: Manual semantic search (requires pre-setup)
results = semantic_search("machine learning algorithms",
similarity_threshold=0.4,
limit=5)
# Find related content from specific text
related = find_related("technical_decisions",
row_id=123,
similarity_threshold=0.5)
# Check semantic search readiness
stats = embedding_stats("technical_decisions")发现和情报示例
# 🧠 AI-GUIDED EXPLORATION (RECOMMENDED)
# Intelligent discovery with goal-oriented workflows
intelligent_discovery(
discovery_goal="understand_content",
depth="moderate",
focus_area="technical_decisions"
)
# Pre-built exploration templates
discovery_templates("first_time_exploration")
# Automatic relationship discovery
discover_relationships(
table_name="users",
relationship_types=["foreign_keys", "semantic_similarity", "temporal_patterns"]
)
# LLM-assisted duplicate analysis
intelligent_duplicate_analysis(
table_name="project_knowledge",
content_columns=["title", "content"],
analysis_depth="semantic"
)
# AI-powered optimization strategy
intelligent_optimization_strategy(
table_name="user_data",
optimization_goals=["performance", "storage"]
)
# Smart archiving policy generation
smart_archiving_policy(
table_name="project_logs",
business_context="Development project logs",
retention_requirements={"legal_hold": "2_years", "active_period": "6_months"}
)工具组织发现
# Discover tool categories
categories = list_tool_categories()
# Returns: {"schema_management": 6, "data_operations": 11, "optimization": 8, ...}
# Get detailed tool information by category
schema_tools = get_tools_by_category("schema_management")
# Returns detailed info with usage examples for each tool______________________________________________________________________
故障排除
常见MCP连接问题
服务器未启动/连接超时:
# Force refresh uvx cache and try again
uvx --refresh mcp-sqlite-memory-bank
# Check if the command works directly
uvx mcp-sqlite-memory-bank --helpVS代码:“服务器在响应初始化请求之前退出”:
- 检查中的MCP配置
.vscode/mcp.json - 确保
uvx已安装并位于您的PATH中 - 尝试重新启动VS代码或从命令面板运行“MCP:重新启动服务器”
IDE中未显示的工具:
- 验证服务器是否正在运行:
uvx mcp-sqlite-memory-bank应该没有错误地启动 - 检查一下
"type": "stdio"在MCP配置中设置 - 重新启动IDE或重新加载MCP配置
数据库权限错误:
- 确保目录为
DB_PATH存在并且可写 - 检查SQLite数据库文件的文件权限
- 在中使用绝对路径
DB_PATH避免路径解析问题
找不到包/版本已过时:
# Clear uvx cache completely
uvx cache remove mcp-sqlite-memory-bank
uvx mcp-sqlite-memory-bank语义搜索和高级功能问题
语义搜索不起作用/“缺少依赖项”错误:
- 汽车工具(
auto_semantic_search,auto_smart_search)自动处理依赖关系 - 如果手动工具失败,则可能缺少依赖关系:
pip install sentence-transformers torch numpy - 检查嵌入生成:
embedding_stats('table_name')验证语义准备情况
3D知识图未渲染:
- 确保输出目录存在并且可写
- 检查浏览器JavaScript控制台是否存在WebGL错误
- 需要现代浏览器(Chrome 80+、Firefox 75+、Safari 14+)
- 应启用硬件加速以获得最佳性能
批处理操作超时:
- 使用较小的批量
batch_create_memories(推荐100-500条记录) - 启用
dry_run=True为了optimize_memory_bank申请前进行测试 - 检查可用内存以进行大型重复检测操作
LLM辅助工具不起作用:
- 这些工具要求您的客户端具有MCP采样功能
- 确保您的IDE/客户端支持高级MCP功能
- 检查人工智能分析功能的网络连接
发现工具返回空结果:
- 确保表格有足够的数据进行模式分析
- 检查一下
intelligent_discovery具有适当的权限 - 验证关系发现是否包含具有实际连接的数据
______________________________________________________________________
运行测试
如果您正在使用 src/ 布局,设置Python路径,以便测试可以导入包:
在Windows(PowerShell)上:
$env:PYTHONPATH = 'src'
pytest在Linux/macOS上:
PYTHONPATH=src pytest或者,使用:
pytest --import-mode=importlib______________________________________________________________________
开发设置
为了确保代码质量和一致的风格,本项目使用 flake8 和 pre-commit 钩子。
安装开发依赖项:
pip install -r requirements.txt启用预提交挂钩(推荐):
pre-commit install这将自动运行 flake8 在每次提交之前对暂存文件进行处理。要手动检查所有文件,请执行以下操作:
pre-commit run --all-files如果您看到lint错误,请在提交之前修复它们。您可以在 .flake8 文件。
支持与联系
- --Bug报告和功能请求
- --问答和社区支持
______________________________________________________________________
贡献
欢迎提出请求、问题和建议!看 贡献.md 作为指导方针。
看 docs/api.md API完整参考和 示例/run_server.py 以服务器为例。
______________________________________________________________________
许可证
麻省理工学院
______________________________________________________________________
LLM代理内存实现
SQLite内存库为在LLM代理中实现持久内存提供了强大的基础,使它们能够在对话会话中维护上下文,并提供更连贯、更个性化的帮助。
LLM代理的内存管理
LLM代理可以利用SQLite内存库来存储和检索:
- 用户首选项和上下文
- 编码风格偏好 - 项目专用术语 - 重复任务和工作流
- 技术知识
- 项目架构 - 设计决策和理由 - 文档片段
- 对话历史
- 之前的互动 - 未完成的任务 - 后续事项
内存架构示例
当LLM使用SQLite内存库时,它们通过MCP工具而不是直接的Python代码与之交互。以下是LLM如何通过自然语言命令创建内存模式:
Create a table called 'project_structure' with columns:
- id (integer, auto-incrementing primary key)
- category (required text)
- title (required text)
- content (required text)
- timestamp (text with default current timestamp)
Create a table called 'technical_decisions' with columns:
- id (integer, auto-incrementing primary key)
- decision_name (required text)
- chosen_approach (required text)
- alternatives (text)
- rationale (required text)
- timestamp (text with default current timestamp)在幕后,这些自然语言请求会调用相应的MCP工具(如 create_table),LLM不需要直接编写Python代码。
下面显示的Python实现是开发人员在以编程方式与SQLite内存库集成时使用的:
# Initialize memory tables (run once at the start of each session)
def initialize_memory():
# Check if tables exist
tables = list_tables()
# Create project structure table if needed
if 'project_structure' not in tables['tables']:
create_table('project_structure', [
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "category", "type": "TEXT NOT NULL"},
{"name": "title", "type": "TEXT NOT NULL"},
{"name": "content", "type": "TEXT NOT NULL"},
{"name": "timestamp", "type": "TEXT DEFAULT CURRENT_TIMESTAMP"}
])
# Create technical decisions table if needed
if 'technical_decisions' not in tables['tables']:
create_table('technical_decisions', [
{"name": "id", "type": "INTEGER PRIMARY KEY AUTOINCREMENT"},
{"name": "decision_name", "type": "TEXT NOT NULL"},
{"name": "chosen_approach", "type": "TEXT NOT NULL"},
{"name": "alternatives", "type": "TEXT"},
{"name": "rationale", "type": "TEXT NOT NULL"},
{"name": "timestamp", "type": "TEXT DEFAULT CURRENT_TIMESTAMP"}
])存储和检索代理内存
LLM可以通过映射到MCP工具的自然语言命令存储和检索内存:
Store in project_structure where category is "architecture" and title is "API Design":
Content: "The project uses a RESTful API design with explicit endpoint naming."
Find all entries in project_structure where category is "architecture"对于以编程方式集成的开发人员来说,实现可能是这样的:
# Store project information
def remember_project_structure(category, title, content):
# Check if this information already exists
existing = read_rows('project_structure', {
'category': category,
'title': title
})
if existing:
# Update existing record
update_rows('project_structure',
{'content': content},
{'id': existing[0]['id']})
return existing[0]['id']
else:
# Create new record
result = create_row('project_structure', {
'category': category,
'title': title,
'content': content
})
return result['id']
# Retrieve relevant project information
def recall_project_structure(category=None):
if category:
return read_rows('project_structure', {'category': category})
else:
return read_rows('project_structure')代理内存的最佳实践
- 初始化内存表 每节课开始时
- 写作前检查 避免重复信息
- 使用特定查询 仅检索相关上下文
- 更新现有记录 而不是创建重复项
- 验证关键信息 已正确保存
有关详细的实施指南,请参阅 内存使用说明.
______________________________________________________________________
高级功能
注: 以下功能都计划在未来的版本中使用,目前尚未实现。
长期作业进度报告(计划)
对于可能需要大量时间的操作,SQLite内存库将提供进度更新:
# Example of a planned feature - not yet implemented
result = run_complex_query('large_table', complex_filter,
with_progress=True, timeout=30)进度通知将发送给客户端,包括完成百分比和估计剩余时间。
内存快照(计划中)
创建数据库状态的时间点快照:
# Example of planned feature - not yet implemented
# Create a named snapshot
create_memory_snapshot('before_major_update')
# Later restore to that point
restore_memory_snapshot('before_major_update')
# List all available snapshots
list_memory_snapshots()内存联合(计划功能)
连接多个存储体以实现分布式存储:
# Example of planned feature - not yet implemented
# Register external memory bank
register_external_memory('project_knowledge', 'http://other-server:8000/mcp')
# Query across federated memory
federated_results = query_federated_memory('technical_decisions',
['local', 'project_knowledge'])安全考虑
访问控制
默认情况下,SQLite内存库以对数据库的完全读/写访问权限运行。对于安全敏感部署:
- 将Docker与特定目录的只读挂载一起使用
- 为访问级别配置环境变量:
- SQLITE_MEMORY_ACCESS=read_only 只读模式(计划) - SQLITE_MEMORY_ACCESS=schema_only 防止数据修改(计划中) - SQLITE_MEMORY_ALLOWED_TABLES 限制对特定表的访问(计划中)
加密(计划功能)
对于敏感数据,启用加密:
# Coming soon - not yet implemented
python -m mcp_sqlite_memory_bank --encrypt --password-file /path/to/key性能优化(计划)
对于大型数据集,将添加以下功能:
- 启用WAL模式
DB_WAL_MODE=1 - 使用设置适当的缓存大小
DB_CACHE_SIZE=10000 - 使用
create_index优化频繁查询的工具 - 考虑
DB_MEMORY_TEMP=1用于内存中的临时表
扩展SQLite内存库
计划在未来的版本中提供以下扩展功能:
自定义架构验证器(计划功能)
创建模式验证器以确保数据一致性:
# Example of planned feature - not yet implemented
from mcp_sqlite_memory_bank import register_schema_validator
def validate_user_schema(columns):
required_fields = ['username', 'email']
for field in required_fields:
if not any(col['name'] == field for col in columns):
return False, f"Missing required field: {field}"
return True, "Schema valid"
register_schema_validator('users', validate_user_schema)自定义数据处理器(计划功能)
注册处理器以在读/写时转换数据:
# Example of planned feature - not yet implemented
from mcp_sqlite_memory_bank import register_data_processor
def process_pii_data(row, operation):
if operation == 'write' and 'email' in row:
# Hash or encrypt PII data
row['email'] = hash_email(row['email'])
return row
register_data_processor('users', process_pii_data)______________________________________________________________________
