公司动态
如何给 AI 编码智能体装上长期记忆:oh-my-pi Mnemopi 本地 SQLite 记忆引擎深度解读
如何给 AI 编码智能体装上长期记忆oh-my-pi Mnemopi 本地 SQLite 记忆引擎深度解读【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-piMnemopi 是 oh-my-pi 内置的本地 SQLite 记忆引擎让 AI 编码智能体跨会话记住你的项目约定、技术决策和踩过的坑。本文带你从新手视角看懂这套 oh-my-pi 记忆后端的架构、配置与日常使用。为什么 AI 编码工具需要记忆大多数 AI 编码助手每次开启新会话都失忆你上周确认过的部署目标、修好的依赖问题它下次一问三不知。oh-my-pi 通过 Mnemopi 后端解决了这个问题——一个完全本地运行的长期记忆系统数据不出机器所有记忆存在本机 SQLite 数据库文件mnemopi.db中不依赖任何云端记忆服务双层记忆模型模拟人类记忆区分工作记忆与情景记忆多通道召回全文搜索、向量语义、关系图谱、时间维度四路并行检索在 oh-my-pi 的四种记忆模式中Mnemopi 是唯一一个本地结构化记忆选项其余为off、local文件摘要、远程hindsight。详细对比见 docs/memory.md。三步启用 Mnemopi 记忆后端启用只需在config.yml中声明后端类型memory: backend: mnemopi加上推荐的项目隔离 全局可见作用域mnemopi: scoping: per-project-tagged重启后oh-my-pi 会根据作用域配置打开一个或多个本地 SQLite 数据库在会话第一轮自动召回相关记忆注入memories提示块每完成若干轮对话默认 4 轮自动将内容沉淀进记忆库压缩上下文时把召回的记忆作为额外背景补充完整设置说明见 docs/mnemosyne-memory-backend.md。Mnemopi 内部结构双层记忆与本地存储Mnemopi 的核心是BeamMemory引擎源码位于 packages/mnemopi/src/core/beam/它把记忆分成两层设计思路借鉴了经典认知科学模型层级表名职责工作记忆working_memory最近会话沉淀的原始记忆等待整理情景记忆episodic_memory整理后长期保留的记忆分 1~3 级分层衰减全文索引fts_working/fts_episodesSQLite FTS5 虚拟表支撑关键词检索关键特性一览向量语义搜索默认使用本地fastembedONNX 模型BAAI/bge-base-en-v1.5768 维也可切换为 OpenAI 兼容远程嵌入接口或完全关闭嵌入只走全文检索noEmbeddings: true睡眠整理sleep定时把过期的工作记忆批量合并、摘要、降级到情景记忆各层级类比人类睡眠时巩固记忆真伪与信任分级每条记忆携带veracitytrue/stated/inferred…与trust_tier字段召回时按可信度加权数据库层统一由 packages/mnemopi/src/db.ts 管理开启 WAL 日志模式、外键约束、5 秒锁等待超时并提供可嵌套事务。建表与索引定义在 packages/mnemopi/src/core/beam/schema.ts你可以直接打开阅读理解整个记忆库的表结构。四路召回Polyphonic Recall 工作原理普通的关键词搜索常常词不对味就召回失败。Mnemopi 可选开启多声部召回mnemopi.polyphonicRecall: true同时从四个维度搜索再用倒数排名融合Reciprocal Rank Fusion合并结果声道检索方式擅长场景vector向量余弦相似度语义近似部署目标 ≈ deploy targetgraph情景图谱关联找到与已知实体/记忆相连的内容fact抽取事实表匹配精确事实如版本号、配置项temporal时间戳 半衰期加权上周、最近一次等时间性问题实现入口在 packages/mnemopi/src/core/polyphonic-recall.ts四种声道类型一目了然。此外开启mnemopi.enhancedRecall还会启用分级查询缓存重复或相近的召回查询直接命中缓存减少重复计算。日常使用四个记忆工具与 /memory 命令启用 Mnemopi 后智能体会自动获得四个可发现的记忆工具recall— 按自然语言搜索记忆结果带记忆 ID 与得分详见 docs/tools/recall.mdretain— 显式保存一条持久事实reflect— 跨多条召回记忆综合出回答✏️memory_edit— 按 ID 更新、遗忘或作废某条记忆注意召回预览默认截断到 500 字符若要用memory_edit修改某条记忆先用read memory://memory-id读取完整内容再替换避免误伤。不借助智能体工具你也可以在会话中直接用斜杠命令管理记忆命令作用/memory view查看当前注入的记忆内容/memory stats查看库统计信息/memory diagnose运行后端诊断/memory enqueue强制沉淀当前会话并触发 sleep 整理/memory clear删除当前作用域下的全部记忆数据库包本身还提供独立 CLI入口 packages/mnemopi/src/cli.ts可脱离智能体单独体验mnemopi remember Use stable-cluster for production deploys mnemopi recall production deploy target mnemopi stats mnemopi sleep作用域怎么选全局、按项目、还是混合mnemopi.scoping决定记忆的隔离粒度这是新手最容易困惑的配置global— 所有项目共享一个记忆库适合单项目用户per-project默认— 每个工作目录独立记忆库目录名 路径哈希命名互不污染per-project-tagged— 写入项目本地库召回时同时检索项目库与全局库并去重合并想让公司统一规范这类全局记忆对所有项目生效时选它作用域逻辑由 coding-agent 侧的封装层实现packages/coding-agent/src/mnemopi/Mnemopi 包本身只暴露纯粹的记忆库bank概念保持底层干净、可独立复用。配置速查与数据存放位置最常用的一批设置完整表格见 docs/mnemosyne-memory-backend.md设置默认值说明mnemopi.recallLimit8每轮注入提示词的最大记忆条数mnemopi.autoRecalltrue会话首轮自动召回mnemopi.autoRetaintrue自动沉淀已完成的对话轮次mnemopi.retainEveryNTurns4自动沉淀的最小轮次间隔mnemopi.noEmbeddingsfalse设为 true 关闭向量检索只用全文搜索mnemopi.llmModesmolLLM 辅助抽取模式smol/remote/none数据默认存放在智能体记忆目录下的mnemopi/mnemopi.db项目级作用域的银行是同一目录下的兄弟数据库文件。几个有用的环境变量MNEMOPI_DATA_DIR自定义存放位置MNEMOPI_NO_EMBEDDINGS1强制纯全文检索MNEMOPI_EMBEDDING_MODEL指定嵌入模型。两个实用提示后端启动是尽力而为——即使数据库或模型初始化失败会话也会照常进行只是记忆工具会提示后端未初始化正常退出只做轻量刷盘若希望退出前完成完整的沉淀与整理先执行/memory enqueue再退出小结Mnemopi 是 oh-my-pi 中一套教科书式的本地记忆方案SQLite 保证零依赖与数据主权双层记忆 sleep 整理让信息越用越精四路召回让搜索既懂字面又懂语义。对新手而言只需在config.yml里加上memory.backend: mnemopi一行即可让你的编码智能体从此记住你。想深入源码建议从 packages/mnemopi/README.md 和核心引擎 packages/mnemopi/src/core/memory.ts 读起。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考