oleksiijko/pmb

Local-first persistent memory for AI coding agents (Claude Code, Cursor, Codex) over MCP. Decisions, lessons and facts live in one SQLite file on your disk. Offline, multilingual.

PMB – AI 编程代理的本地优先记忆

这是什么 – PMB(发音为“p-m-b”)是一个 Python 包,为编写代码的 LLM 代理(Claude Code、Cursor、Codex、Gemini 等)提供一个持久、可搜索且完全存在于您机器上的记忆。记忆存储在 SQLite 数据库中(事实来源),并在 LanceDB 中带有可选的向量索引,通过 Model-Context-Protocol (MCP) 暴露给代理。

为何重要 – 如今许多 AI 辅助编程工具在进程重启后就会忘记一切,迫使您重复决策、教训和项目上下文。PMB 会自动捕获这些事实,进行索引,并在模型生成响应之前将相关片段注入回代理,全程无需任何云端调用或 API 密钥。


主要功能(如 README 中所述)

功能 您会得到什么
本地优先存储 所有事件、事实和嵌入都被写入 ~/.pmb/<workspace>/ 中的 SQLite 文件。读取不需要网络流量;写入在毫秒以下。
混合回忆 查询由 BM25 词汇搜索、密集向量相似度和基于图的扩散(Reciprocal-Rank-Fusion)融合来回答。典型的暖路径延迟:~35 毫秒 (p50) 和 ~110 毫秒 (p95)。
MCP 原生集成 一个微小的 MCP 服务器作为代理的子进程运行。标准的 prepare(message) 调用返回结构化的负载(project_contextlessonsrecent_activityopen_goalsactive_arcs)。
自动摄取 pmb index project . 扫描您的代码库,提取符号、导入和文件意图。pmb index pdf … 提取并分块 PDF。pmb track … 记录提交意图和模块用途。
环境(自动写入)记忆 钩子观察代理的工具使用(编辑、测试、提交),并在代理忘记调用 record_* 工具时写入轻量级的日志条目。
仪表板 UI 本地 Web UI(pmb dashboard)将记忆可视化为实体图、时间轴、教训影响、重复项和性能统计。
多语言嵌入 使用 paraphrase-multilingual-MiniLM-L12-v2(涵盖 50 多种语言),因此俄语、法语等查询可以检索英语事实。
零配置,零成本 无云账户、无 API 密钥、无订阅。所有数据都保留在您的磁盘上;您可以导出为 Markdown/JSON。
隐私与导出 机密信息在写入时会被遮蔽;整个工作区可以被复制、同步到 Dropbox 或进行版本控制。
可扩展配置 105 个可调旋钮;默认暴露 25 个(pmb config list)。高级标志隐藏在 --pro 之后。

工作方式(高层流程)

  1. 设置pip install pmb-ai && pmb setup 检测目标代理并安装 MCP 钩子。
  2. 摄取 – 文件、PDF、git 提交和明确的 record_* 调用被写入 SQLite;嵌入被排队并异步插入 LanceDB。
  3. 回忆 – 当代理发送 prepare(message) 时,PMB 运行混合搜索(BM25 + 向量 + 图扩散)并返回最相关的实体、教训、近期动作等。
  4. 环境写入 – 在每次使用工具后,钩子会记录动作;“stop”钩子会评分教训的后续执行,并可以合成缺失的 record_* 条目。
  5. 仪表板 – UI 显示实体和弧线的实时图表、事件时间轴以及诊断(哪些教训实际改变了结果、每个工具的延迟、重复检测)。

快速开始(来自 README)

pip install pmb-ai          # install the package
pmb setup                    # wire the chosen agent (Claude Code, Cursor, …)
pmb warmup                   # preload the ~450 MB embedder
# restart the agent – memory is now active
pmb stats                    # see counts of stored items
pmb recall "auth decision"   # ad-hoc terminal search
pmb dashboard                # open the local UI at http://127.0.0.1:8765

所有命令也可以通过 pmb-ai 别名 (npm) 或作为 Python 模块使用。


典型用例

  • 长期运行的代码库 – 在多次会话中保留决策、架构规则和错误修复理由,无需重新解释。
  • 跨代理连续性 – 从 Claude Code 切换到 Cursor;相同的 SQLite 工作区为两者提供记忆。
  • 研究密集型项目 – 索引 PDF 并在编写代码时即时检索相关段落。
  • 团队级共享上下文 – 可选的 HTTP 模式让多名开发人员将其代理指向一个共同的工作区(受验证保护)。
  • 教训影响分析 – 仪表板告诉您代理实际遵循了哪些“规则”,帮助您修剪无用或嘈杂的教训。

限制与注意事项(如所述或暗示)

  • 读取路径仅限离线 – 回忆时不调用 LLM;质量取决于嵌入器和混合排名。
  • 嵌入模型大小 – 默认的多语言 MiniLM 模型(~450 MB)必须加载一次(pmb warmup)。
  • 可选的基于 LLM 的功能 – 一些可选命令(pmb consolidate、自动写入合成)可以调用本地 Ollama/Claude/OpenAI 模型,但默认为禁用。
  • 本地资源使用 – SQLite + LanceDB 索引占用磁盘空间;庞大的代码库或大量 PDF 会增加工作区的大小。
  • 代理特定钩子 – 完全的优势需要代理支持 MCP 钩子;README 列出了支持的主机(Claude Code、Cursor、Codex 等)。

许可与社区

  • Apache 2.0 – 免费使用、修改和重新分发。
  • MCP 注册 – 列在 Model-Context-Protocol 注册表中,可被其他支持 MCP 的工具发现。
  • 文档与 CI – 在线文档位于 docs.pmbai.dev,CI 徽章显示每次推送都通过测试。

结论

PMB 是一个真正的开源项目,解决了 AI 辅助开发人员的一个具体痛点:缺乏持久、低延迟的记忆。通过将所有内容存储在本地 SQLite 中,提供快速的混合搜索,并通过 MCP 自动连接到流行的编程代理,它让您可以在会话之间保留项目上下文、教训和决策,而无需任何云依赖。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • Dispatch