Open-source Context Database for AI Agents
OpenViking 是面向 AI Agent 的开源上下文数据库,采用 文件系统范式(Filesystem Paradigm) 统一管理 Agent 的三大核心上下文:记忆(Memories)、资源(Resources)和技能(Skills)。
核心思路:用 viking:// 协议将 Agent 的所有上下文组织成一个虚拟文件系统,Agent 可以像操作本地文件一样浏览、检索和加载上下文。
该项目由 VikingMem 研究论文支撑(VLDB 2026),从学术层面验证了这种文件系统范式在 Agent 上下文管理中的有效性。
OpenViking 的关键创新:不是一次性把所有上下文塞给 LLM,而是按三个层级按需加载,精确控制 token 消耗。
OpenViking 不是简单的向量搜索,而是实现了目录递归检索策略,模拟人类在文件系统中"一层层翻找"的过程:
整个检索过程有可视化轨迹(Visualized Retrieval Trajectory),方便调试和观测 Agent 的上下文加载行为。
OpenViking 在每次会话结束后自动执行:
| 维度 | OpenViking | mem0 |
|---|---|---|
| 上下文模型 | ✅ 文件系统范式(viking://) | KV 向量存储 |
| 分层加载 | ✅ L0/L1/L2 三级按需加载 | ❌ 一次性检索 |
| 上下文类型 | ✅ 记忆 + 资源 + 技能统一管理 | 主要为记忆 |
| 检索策略 | ✅ 目录递归检索(意图→向量→递归) | 向量相似度搜索 |
| 可观测性 | ✅ 可视化检索轨迹 | ❌ 黑盒检索 |
| Token 效率 | ✅ 三级按需加载,节省 70%+ token | 全量返回 |
| 会话管理 | ✅ 自动提取偏好与经验 | 手动管理 |
| 学术支撑 | ✅ VLDB 2026 (VikingMem) | 社区驱动 |
| 社区规模 | 25k ⭐ | 较大 |
pip install openviking
from openviking import VikingDB
# 初始化上下文数据库
db = VikingDB()
# 添加记忆(自动组织到文件系统中)
db.add_memory("user_preferences", {
"language": "Python",
"editor": "VS Code",
"style": "prefer concise code"
})
# 添加资源(文档、代码片段等)
db.add_resource("project_docs/README.md", content="...")
# 添加技能描述
db.add_skill("web_search", description="Search the web for information")
# Agent 查询 — 使用 viking:// 协议导航
context = db.retrieve(
query="用户的编程偏好是什么?",
strategy="directory_recursive", # 目录递归检索
max_tokens=2000, # token 预算
)
# context 自动按 L0→L1→L2 加载,节省 token
print(context.items) # 返回相关上下文项
print(context.trajectory) # 可视化检索轨迹
# 会话结束后,OpenViking 自动提取并更新记忆
db.end_session(
session_transcript=conversation_log,
auto_extract=True, # 自动提取用户偏好和 Agent 经验
auto_organize=True, # 自动整理文件系统结构
)