OmniAgent主动式记忆系统:BM25+向量混合检索,让Agent比你自己更懂你

发布时间:2026/10/2 14:43:38

OmniAgent主动式记忆系统:BM25+向量混合检索,让Agent比你自己更懂你 OmniAgent主动式记忆系统BM25向量混合检索让Agent比你自己更懂你【免费下载链接】OmniAgentAn agent capable of self-evolving and dynamically hardening security项目地址: https://gitcode.com/gh_mirrors/om/OmniAgentOmniAgent 的主动式记忆Proactive Memory系统让 AI Agent 告别金鱼记忆。它基于BM25 全文检索 向量语义检索的混合检索机制把你在MEMORY.md和memory/*.md中沉淀的偏好、决策与项目知识变成每次会话都能精准召回的长期记忆。本文帮新手 5 分钟看懂这套记忆系统的工作原理、关键配置与快速上手方法。 为什么 AI Agent 需要长期记忆用过对话式 AI 的同学都有同一个痛点每次新开一个会话Agent 就像失忆了你上周定的技术方案、项目暗号、个人偏好全部清零你不得不反复解释我们之前说过……既费时又容易出错纯靠关键词搜索又太死板换个说法就搜不到。OmniAgent 给出的答案是主动式记忆系统通过显式交互反馈 隐式 LLM 归纳的双路径对齐机制Agent 会把跨会话的工作结论、用户偏好、项目知识持续沉淀为 Markdown 记忆文件并在需要时主动召回——真正做到比你自己更懂你。记忆的存放位置非常直观就在你的工作区里记忆来源说明MEMORY.md/memory.md工作区根目录的主记忆文件memory/**/*.mdmemory/目录下的任意子目录 Markdown 文件发现逻辑由 memory.py 中的文件扫描函数实现支持配置额外路径。 BM25 向量混合检索双引擎混合检索是这套系统的灵魂。它同时跑两路召回再按权重融合得分兼顾字面精准与语义相近。关键词检索BM25 负责字面命中记忆文本会被写入 SQLite 的FTS5 全文索引虚拟表chunks_fts查询时使用经典的BM25 算法打分你搜索API key包含这个确切词组的记忆片段得分最高代码名、错误信息、专有名词这类不能靠猜的内容BM25 一搜一个准原始 BM25 秩值会被归一化到 0~1 区间方便与向量分数比较。这一层实现在 memory.py 的search_fts方法中。向量检索Embedding 负责意思相近向量检索解决的是换个说法也能找到的问题每个记忆分块都会生成一个Embedding 向量调用 OpenAI 兼容的/embeddings接口或本地 sentence-transformers 模型默认all-MiniLM-L6-v2与文本一起存进数据库查询时把问题也转成向量与所有记忆向量计算余弦相似度取最接近的 Top-N你搜之前那个部署脚本怎么写的即使原文没出现过这些词语义相近的片段也能被召回。两类嵌入提供者OpenAI 兼容 / 本地离线定义在 embedding.py 中。加权融合0.7 向量 0.3 文本两路结果按分块 ID 合并后计算最终得分最终得分 0.7 × 向量分数 0.3 × BM25 分数随后过滤掉低于0.35 最低相关度的结果按得分降序返回前 6 条。权重可在配置中调整见下文关键配置项逻辑位于 memory_manager.py 的search方法。 为什么默认向量权重更高因为日常提问多是自然语言、意图模糊语义匹配比字面匹配更能命中你心里想的那条。 记忆的存分块、增量同步与本地数据库记忆的写入同样讲究核心流程是分块 → 哈希比对 → 增量索引 → 向量计算环节做法好处Markdown 分块每块约 400 tokens相邻块重叠 80 tokens语义边界完整切块不漏句变更检测对每个分块计算 SHA-256 哈希没改过的文件直接跳过秒级增量同步本地存储SQLite 单文件数据库.omniagent/memory.db零依赖、隐私不出本机索引构建文本 FTS5 全文索引 Embedding 向量一套数据支撑两路检索同步时机由配置控制默认会话启动时和每次搜索前都会自动增量同步你只需要维护 Markdown 文件索引永远是最新的。完整同步逻辑见 memory_manager.py数据库表结构见 memory.py。 两个记忆工具memory_search 与 memory_getAgent 通过两个内置工具使用这套记忆系统注册逻辑在 reflexion.py工具核心参数典型场景memory_searchquery必填、max_results默认 6、min_score默认 0.35跨会话召回之前做的决策、日期、人物、偏好、待办memory_getpath必填、from_line、lines按行精读某个记忆文件的指定段落两个贴心细节可溯源每次召回都附带Source: memory/xxx.md#L12-L30形式的引用你可以点开原文核对记忆不再黑盒优先级清晰对刚才、上一轮、just now这类短期指代Agent 会优先查当前对话历史而不是动用长期记忆只有跨会话问题才走memory_search。这套召回纪律写进了系统提示词见 bootstrap.py 与 reflexion.py。相关行为还有专门的回归测试 test_memory_recall_priority.py。⚠️ 安全提示memory_get内置路径校验只允许读取MEMORY.md、memory/下的文件防止路径穿越实现见 memory_manager.py。⚡ 快速上手三步开启主动式记忆# 第一步获取项目 git clone https://gitcode.com/gh_mirrors/om/OmniAgent cd OmniAgent pip install -e . # 第二步交互式配置选择模型服务商并填入 API Key omniagent onboard # 第三步启动对话 omniagent chat然后在工作区创建你的记忆文件例如MEMORY.md# 我的偏好 - 代码注释一律用中文 - 我负责 OmniAgent 的 memory 模块再往memory/目录里按需添加专题文件memory/decisions.md、memory/preferences.md……。下次会话中直接问我之前定过哪些技术决策Agent 就会自动检索并带着引用作答。⚙️ 关键配置项一览混合检索权重怎么调所有记忆参数集中在 config/models.py 的MemorySearchConfig中可在~/.omniagent/config.yaml的memory:段覆盖配置项默认值作用enabledtrue总开关是否启用记忆检索系统hybrid_enabledtrue关闭则退化为纯 BM25 检索hybrid_vector_weight0.7向量检索权重语义匹配更敏感hybrid_text_weight0.3文本检索权重字面命中更敏感chunking_tokens/chunking_overlap400/80分块大小与重叠量query_max_results6单次召回条数上限query_min_score0.35相关度过滤阈值sync_on_session_start/sync_on_searchtrue会话启动 / 搜索前自动增量同步embedding_provideropenai嵌入来源可选local走本地模型离线检索temporal_decay_hours168记忆相关度时间衰减半衰期默认 7 天 调优建议如果召回结果太发散调高query_min_score如果总是搜不到字面精确的报错文本调大hybrid_text_weight。 源码导航记忆系统模块地图想深入阅读实现可以从这些入口出发存储层SQLite FTS5、分块、哈希omniagent/agents/memory.py混合检索与工具注册omniagent/agents/memory_manager.py嵌入提供者OpenAI 兼容 / 本地omniagent/agents/embedding.py记忆配置模型omniagent/config/models.pyAgent 集成与召回提示词omniagent/agents/reflexion.py行为回归测试tests/test_memory_recall_priority.py项目总览文档README.md中文见 README_CN.md写在最后OmniAgent 的主动式记忆系统用BM25 保精准、向量保语义、权重融合保平衡的混合检索架构加上分块增量同步和本地 SQLite 存储让 Agent 的记忆既准又快、还不出本机。你只管把想法写进 Markdown剩下的召回、排序、引用都交给它——这才是真正越用越懂你的 AI Agent。 【免费下载链接】OmniAgentAn agent capable of self-evolving and dynamically hardening security项目地址: https://gitcode.com/gh_mirrors/om/OmniAgent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/2 14:43:38

OpenRig本地部署指南:Codex协议适配与YAML驱动的AI工具链

1. OpenRig 是什么:一个被误读的开源项目代号OpenRig 这个词在当前技术社区里,正经历一场典型的“语义漂移”——它既不是官方发布的成熟产品,也不是某个知名开源组织背书的标准化工具,而更像是一组围绕Codex Node.js YAML 配置…

2026/10/2 14:38:38

Redis 接入 AI 能力全解析:向量检索、会话管理与多 Agent 协作实践

1. 从一条更新日志说起:Redis 接入 AI 到底意味着什么 前几天刷社区的时候看到一条消息,说 Redis 官方在最新版本里正式把 AI 相关的能力做进了核心链路。第一反应是"又一个蹭热点的营销词",但把更新说明和几个相关提案翻完之后&am…

2026/10/2 14:38:38

6DOF-GraspNet六自由度抓取:从点云到机械臂位姿估计实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 15:33:41

用Excel VBA制作定时提醒小工具,到点自动弹窗

你是不是也有这种经历:表格做到一半,突然想起上午十点有个会要开,或者有一份报表下午三点前必须提交。手机闹钟要么没设,要么设了也懒得看;专门的提醒软件又觉得为了这点小事装一个太折腾。其实你天天打开的那份Excel&…

2026/10/2 15:33:41

Eclipse新版Tomcat配置失败原因与Jakarta EE适配方案

1. 新版Eclipse里Tomcat配置“卡壳”的真实原因:不是操作错了,是项目模型变了你刚下载完Eclipse 2023-12或2024-03,兴冲冲新建一个Dynamic Web Project,点开Project Explorer——咦?没有WebContent文件夹?右…

2026/10/2 15:33:41

Windows 64位环境下的curl预编译bin包:从配置到避坑完整指南

简介:面向 Visual Studio 2017 环境下的 Windows 平台 64 位 curl 库二进制包,适合需要快速集成 HTTP、HTTPS、FTP 等网络通信能力的开发者,省去从源码编译的环节。资源共 25 个文件、约 770KB,其中 12 个头文件用于 API 声明&…

2026/10/2 15:33:40

腾讯WorkBuddy实战指南:Skill机制与models.json配置详解

1. 为什么我要认真写这篇 WorkBuddy 实战指南 第一次听说 WorkBuddy 是在一个技术群里,有人甩了张截图,说腾讯出了个 AI 工作台,能把日常那些重复性的活儿全接过去。当时我的反应跟大多数人一样:又一个套壳产品吧?直到…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/1 17:09:46

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/2 0:02:57

PWN入门:从栈溢出原理到ROP链实战

1. 这不是“学PWN”,是重新理解你每天敲的每一行C代码我第一次在CTF赛场上写出能控制程序流的exp时,手抖得连gdb的c命令都输错三次。那道题只有23行C代码,一个gets()调用,一个printf(),一个return——它甚至没开NX&…

2026/10/2 0:02:57

Windows下cudaMallocHost显存占用之谜:WDDM与TCC模式差异及优化方案

1. 一个反直觉的显存占用现象第一次在 Windows 上看到cudaMallocHost把显存吃掉的时候,我的反应是打开任务管理器反复确认了三遍。明明调用的是主机端锁页内存分配,按 CUDA 文档的说法,这块内存应该落在系统 RAM 里,跟 GPU 的显存…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑