首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >告别 AI “金鱼记忆”!OpenViking 如何让你的 Agent 过目不忘?

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

作者头像
HELLO程序员
发布2026-06-26 21:22:05
发布2026-06-26 21:22:05
970
举报

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

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

想象一下这个场景:

代码语言:javascript
复制
你:“你好!我是小明,一个 Python 程序员,喜欢简洁的代码!”
AI:“好的,小明!很高兴认识你!”

... 5 分钟后,新的会话开始 ...

你:“你好!你还记得我吗?”
AI:“…… 您是?”

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

传统方案的绝望

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

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

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

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

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

Session 的核心工作流程

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

代码语言:javascript
复制
你进来聊天 → 留下一地瓜子皮(消息)→ 客厅满了
                          ↓
                       扫!地!
                          ↓
                    两阶段处理大法!
阶段一:快速归档,秒级响应! ⚡
代码语言:javascript
复制
session.commit()

# 内部在做什么?
# └─ 咔嚓!把这堆聊天记录塞到 history/archive_001/ 文件夹
# └─ 立刻告诉你:好的,记录上了!
阶段二:后台慢慢消化,提取记忆! 🍵
代码语言:javascript
复制
后台小哥:让我慢慢看看... 哦!小明喜欢简洁代码!
          ↓
   写进 user/alice/memories/preferences/coding.md
          ↓
   向量索引更新!下次能搜索到!

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

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

记忆类型

放在哪里

用途比喻

Profile

user/memories/profile.md

档案袋

Preferences

user/memories/preferences/

购物清单

Entities

user/memories/entities/

名片夹

Events

user/memories/events/

日记本

Cases

agent/memories/cases/

错题本

Patterns

agent/memories/patterns/

解题模板

Tools

agent/memories/tools/

工具使用手册

Skills

agent/memories/skills/

工作手册

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

Session 的完整结构

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

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

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

代码语言:javascript
复制
{
  "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
  }
}

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

记忆提取的完整流程

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

记忆文件长什么样?

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

代码语言:javascript
复制
# 偏好:简洁代码

## Summary (L0)
小明不喜欢过度设计,喜欢简洁代码

## Overview (L1)
- 每次写代码都强调简洁
- 讨厌装饰器滥用
- 喜欢函数式编程

## Content (L2)
小明说过 N次,他喜欢 Python的简洁,他的项目都是...

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

OpenViking 的权限系统非常严格:

代码语言:javascript
复制
def is_accessible(uri: str):
    if 你是 Root 管理员:
        return True  # 随便看!

    if uri 是 public 资源或 session:
        return True  # 共享的东西

    if uri 是小明的 user/:
        return False  # 你敢进试试?

不同空间的能见度

空间类型

谁能看?

比喻

Session

同一 Account 里的人

公司会议室

User/

只有用户自己

你卧室的抽屉

Agent/

用户 + Agent

你俩的共同书房

Resources

全公司可见

公司图书馆

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

让我们用代码来走一遍!

代码语言:javascript
复制
import openviking as ov
import time

# 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": "没问题,记住了!"},
]

for message in dialogues:
    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']}")
    if task_result["status"] in ["completed", "failed"]:
        break
    time.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=true

user/alice/agent/my-assistant/memories

小明给这个助手单独分个抽屉!

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

总结一下 OpenViking 的核心特点:

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

🔥 写在最后

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

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

下一章,我们开始学习如何手写一个OpenViking的记忆功能,从0到1

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HELLO程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🧠 一、先唠唠痛点:为什么你的 AI 助理总是记不住你?
    • 传统方案的绝望
  • 🏠 二、OpenViking 是个啥?一个有记忆的房子!
  • 📦 三、Session 是个啥?客厅的垃圾处理器!
    • Session 的核心工作流程
      • 阶段一:快速归档,秒级响应! ⚡
      • 阶段二:后台慢慢消化,提取记忆! 🍵
  • 📚 四、8 种记忆分类!你的 Agent 是个好学生!
  • 🎯 五、Session 深度解析!给你家客厅装个摄像头!
    • Session 的完整结构
      • 元数据:你的客厅是有身份证的!
  • 🕵️ 六、记忆是怎么提取出来的?让我们看一下这个流水线工厂!
    • 记忆提取的完整流程
    • 记忆文件长什么样?
  • 🔒 七、隐私保护!别人的卧室不能乱进!
    • 不同空间的能见度
  • 🚀 八、完整演示!小明和 Agent 的一天!
  • 📐 九、高级配置!让你的 Agent 更有个性!
    • 命名空间策略
  • 🎉 十、总结!你的 Agent 现在从 0 级变神了!
  • 🔥 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档