news 2026/5/1 7:21:29

告别 AI “金鱼记忆”!OpenViking 如何让你的 Agent 过目不忘?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别 AI “金鱼记忆”!OpenViking 如何让你的 Agent 过目不忘?

各位代码界的卷王、AI圈的探险家们! 👋 今天咱们要聊聊 OpenViking 里那个让 AI Agent 终于能“记住你是谁”的神奇系统!

🧠 一、先唠唠痛点:为什么你的 AI 助理总是记不住你?

想象一下这个场景:

你:“你好!我是小明,一个 Python 程序员,喜欢简洁的代码!” AI:“好的,小明!很高兴认识你!” ... 5 分钟后,新的会话开始 ... 你:“你好!你还记得我吗?” AI:“…… 您是?”

是不是像极了养了一条金鱼?🐠7秒记忆,重新开始!

传统方案的绝望

  • 📋 把上下文全塞进去? Token 爆炸!💥
  • 💾 塞到向量库? 搜索不准,还存了一堆垃圾!
  • 📃 存数据库? 复杂到怀疑人生!

🏠 二、OpenViking 是个啥?一个有记忆的房子!

让我给你看看 OpenViking 给 AI Agent 造的超级记忆大豪宅

viking:// ├── 🎬 session/alice-chat-001/ # 临时客厅,聊天用 ├── 👤 user/alice/ # 小明的私人卧室 │ └── memories/ # 小明的储物柜 │ ├── profile.md # 个人档案(永远最新!) │ ├── preferences/ # 喜好库 │ ├── entities/ # 重要的人和事 │ └── events/ # 重要事件 └── 🤖 agent/my-assistant/ # 助手的书房 └── memories/ # 助手的学习笔记 ├── cases/ # 案例库 └── patterns/ # 经验库

📦 三、Session 是个啥?客厅的垃圾处理器!

Session 的核心工作流程

Session 就像你家的临时聊天客厅

你进来聊天 → 留下一地瓜子皮(消息)→ 客厅满了 ↓ 扫!地! ↓ 两阶段处理大法!
阶段一:快速归档,秒级响应! ⚡
session.commit()# 内部在做什么?# └─ 咔嚓!把这堆聊天记录塞到 history/archive_001/ 文件夹# └─ 立刻告诉你:好的,记录上了!
阶段二:后台慢慢消化,提取记忆! 🍵
后台小哥:让我慢慢看看... 哦!小明喜欢简洁代码! ↓ 写进 user/alice/memories/preferences/coding.md ↓ 向量索引更新!下次能搜索到!

📚 四、8 种记忆分类!你的 Agent 是个好学生!

OpenViking 给你的 Agent 做了超级规整的分类笔记

记忆类型放在哪里用途比喻
Profileuser/memories/profile.md档案袋
Preferencesuser/memories/preferences/购物清单
Entitiesuser/memories/entities/名片夹
Eventsuser/memories/events/日记本
Casesagent/memories/cases/错题本
Patternsagent/memories/patterns/解题模板
Toolsagent/memories/tools/工具使用手册
Skillsagent/memories/skills/工作手册

🎯 五、Session 深度解析!给你家客厅装个摄像头!

Session 的完整结构

看看你家这个客厅长啥样:

viking://session/my-chat-session/ │ ├── .meta.json 📋 客厅登记表 │ ├── 创建者:小明 │ ├── 参与人:小明 + 小红 │ └── 累计谈话次数:100次! │ ├── messages.jsonl 📝 实时对话记录 │ └── history/ 🗃️ 聊天档案馆 ├── archive_001/ │ ├── messages.jsonl │ ├── .abstract.md 一句话总结 │ ├── .overview.md 详细概述 │ └── .done ✓ 已完成标记 └── archive_002/
元数据:你的客厅是有身份证的!

.meta.json长这样,简直像个统计神器:

{"session_id":"聊天的ID","created_at":"什么时候开始的","updated_at":"最后一句话是什么时候","created_by_user_id":"谁开的这个房间","participant_user_ids":["谁进来过"],"participant_agent_ids":["有什么助手进来过"],"message_count":10,"commit_count":5,"memories_extracted":{"profile":1,"preferences":2,"total":10},"llm_token_usage":{"total_tokens":20000}}

🕵️ 六、记忆是怎么提取出来的?让我们看一下这个流水线工厂!

记忆提取的完整流程

用户说了一堆话 → 📥 进入 MemoryExtractor 工厂 ↓ 🤖 LLM 开始分析:哦!小明说他是Python专家! ↓ 📦 打成候选记忆包 ↓ 🎯 MemoryDeduplicator 判断:和以前的记忆冲突吗? ↓ ✍️ VikingFS 写入:写入对应的目录! ↓ 📊 VectorDB 更新:向量索引加上!下次能搜索!

记忆文件长什么样?

每个记忆文件都是个三层的宝藏!

# 偏好:简洁代码 ## Summary (L0) 小明不喜欢过度设计,喜欢简洁代码 ## Overview (L1) - 每次写代码都强调简洁 - 讨厌装饰器滥用 - 喜欢函数式编程 ## Content (L2) 小明说过 N次,他喜欢 Python的简洁,他的项目都是...

🔒 七、隐私保护!别人的卧室不能乱进!

OpenViking 的权限系统非常严格:

defis_accessible(uri:str):if你是 Root 管理员:returnTrue# 随便看!ifuri 是 public 资源或 session:returnTrue# 共享的东西ifuri 是小明的 user/returnFalse# 你敢进试试?

不同空间的能见度

空间类型谁能看?比喻
Session同一 Account 里的人公司会议室
User/只有用户自己你卧室的抽屉
Agent/用户 + Agent你俩的共同书房
Resources全公司可见公司图书馆

🚀 八、完整演示!小明和 Agent 的一天!

让我们用代码来走一遍!

importopenvikingasovimporttime# 1️⃣ 开门!client=ov.SyncHTTPClient(url="http://localhost:1933")client.initialize()# 2️⃣ 小明进入客厅!开始聊天!session=client.create_session()session_id=session["session_id"]print("👋 小明开了个新 session!",session_id)# 3️⃣ 对话!说话!dialogues=[{"role":"user","content":"你好!我是小明,Python 程序员!"},{"role":"assistant","content":"你好小明!"},{"role":"user","content":"我喜欢简洁的代码风格!"},{"role":"assistant","content":"没问题,记住了!"},]formessageindialogues:client.add_session_message(session_id,message["role"],message["content"])# 4️⃣ 打扫卫生!commit 一下!print("\n🗄️ 小明说:存档!")commit_result=client.commit_session(session_id)task_id=commit_result["task_id"]print(f"⏳ 后台任务:{task_id}")# 5️⃣ 等后台慢慢消化...whileTrue:task_result=client.get_task(task_id)print(f"⏱️ 任务状态:{task_result['status']}")iftask_result["status"]in["completed","failed"]:breaktime.sleep(1)# 6️⃣ 看看记住了什么!print("\n✅ 完成!来看看记住什么了!")session_info=client.get_session(session_id)print("记忆统计:",session_info["memories_extracted"])# 7️⃣ 下次聊天...print("\n🌅 第二天... 小明又来了!")new_session=client.create_session()print("新的会话已经自动检索并注入了小明的记忆!")

📐 九、高级配置!让你的 Agent 更有个性!

命名空间策略

你想让记忆多细粒度?由你说了算!

配置结果比喻
默认user/alice/memories小明的一个大抽屉
isolate_user_scope_by_agent=trueuser/alice/agent/my-assistant/memories小明给这个助手单独分个抽屉!

🎉 十、总结!你的 Agent 现在从 0 级变神了!

总结一下 OpenViking 的核心特点:

  1. 两阶段 Commit: 不卡你,后台慢慢处理
  2. 目录组织记忆: 就像你的文件系统,直观!
  3. 权限隔离: 别人的东西看不着!
  4. 自动更新向量: 下次能搜到!
  5. 完整的统计: 你甚至知道用了多少 token!

🔥 写在最后

所以,下次你的 AI Agent 对你说“我们之前讨论过什么吗?”,请记住,OpenViking 已经帮你安排得明明白白了! 🎉

快来试试吧!让你的 Agent 拥有真正的“记忆”,变得越来越懂你!

下一章,我们如何手写一个OpenViking

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:20:23

基于openclaw-agents框架构建AI智能体:从原理到实践

1. 项目概述与核心价值最近在开源社区里,一个名为openclaw-agents的项目引起了我的注意。这个由being-gojo维护的项目,从名字上就透着一股“开放之爪”的锐利感,直指当前AI领域最热门也最富挑战性的方向之一:智能体(Ag…

作者头像 李华
网站建设 2026/5/1 7:14:30

3D模型渐进式对齐技术Interp3D解析与应用

1. 项目背景与核心价值去年在做3D内容生成项目时,我们团队经常遇到一个棘手问题:当需要生成两个3D模型之间的过渡形态时,传统方法要么产生严重畸变,要么直接丢失关键特征。这种"断层式"的过渡效果在动画制作、游戏开发和…

作者头像 李华
网站建设 2026/5/1 7:02:26

AI自动化集成:atlassian-skill实现Jira与Confluence智能操作

1. 项目概述与核心价值如果你是一名开发者或项目经理,每天在Jira和Confluence之间来回切换,手动创建工单、更新状态、搜索文档,那么你肯定想过:能不能让我的AI助手帮我干这些活?今天要聊的这个开源项目atlassian-skill…

作者头像 李华
网站建设 2026/5/1 7:02:26

Arm SVE2指令集STNT1W:非临时存储优化技术解析

1. Arm SVE2指令集与STNT1W指令概述现代处理器架构中,向量化技术已成为提升数据吞吐效率的核心手段。Arm SVE2(Scalable Vector Extension 2)作为第二代可扩展向量指令集,通过创新的可变向量长度设计,支持从128位到204…

作者头像 李华
网站建设 2026/5/1 7:02:25

Python实现函数优化过程动态可视化技术解析

1. 函数优化可视化的核心价值在数据科学和机器学习领域,函数优化是最基础也最关键的环节之一。无论是调整模型超参数、寻找最佳业务决策点,还是优化工程设计方案,本质上都是在多维空间中寻找目标函数的极值点。但纯数字的迭代过程就像在黑箱中…

作者头像 李华
网站建设 2026/5/1 7:00:37

MQTTS连接adafruit平台示例

目录 MQTTS简介 MQTTS特点 Adafruit IO 平台简介 Adafruit IO Feed 数据流介绍 MQTT连接 Adafruit IO 收发数据流程 实现过程 运行结果 总结 本篇文章我们将详细介绍如何在W55MH32芯片上面实现MQTTS协议。并通过实战例程,为大家讲解如何使用W55MH32的MQTTS协…

作者头像 李华