Skip to content

简介

OpenViking 是一个开源的、专为 AI Agent 设计的上下文数据库。OpenViking 通过文件系统范式统一管理Agent 所需要的上下文(记忆、资源和技能),并实现上下文的分层供给自我迭代,最终目标是降低 Agent 开发门槛,让开发者更专注于业务创新而非底层上下文管理。

为什么需要 OpenViking

在 AI 时代,数据易得,但高质量的上下文却难求。构建 AI Agent 时,开发者经常遇到这些挑战:

  • 上下文碎片化:记忆在代码里,资源在向量库,技能散落各处,难以统一管理
  • 所需上下文猛增:Agent 的长程任务在每次执行时都会产出上下文,简单的截断或压缩会导致信息损失
  • 检索效果不佳:传统 RAG 是平铺式存储,缺乏全局视野,难以理解信息的完整语境
  • 上下文不可观测:传统 RAG 隐式的检索链路如同黑箱,出错时难以调试
  • 记忆迭代有限:目前记忆只是用户记忆的记录,缺乏 Agent 相关的任务记忆

OpenViking 正是为解决这些痛点而设计的上下文数据库。

核心特性

1. 文件系统管理范式

摒弃传统的扁平化数据库思维,将所有上下文组织为一套虚拟文件系统。Agent 不再仅是通过向量搜索来找数据,而是可以通过确定性的路径和标准文件系统指令来定位和浏览数据。

统一 URI 标识:每个上下文分配唯一的 viking:// URI,让系统能精准定位并访问存储在不同位置的资源。

viking://
├── resources/              # 资源:项目文档、代码库、网页等
│   └── my_project/
├── user/
│   └── {user_id}/          # 当前用户的私有上下文
│       ├── memories/       # 用户记忆
│       ├── resources/      # 用户私有资源
│       ├── skills/         # 用户私有技能(默认)
│       ├── peers/
│       │   └── {peer_id}/
│       │       ├── memories/
│       │       └── resources/
│       └── sessions/
└── agent/
    └── skills/             # account 全局共享技能(可选)

三种上下文类型

类型用途生命周期
Resource知识和规则(文档、代码、FAQ)长期,相对静态
MemoryAgent 的认知(用户偏好、学习经验)长期,动态更新
Skill可调用的能力(工具、MCP)长期,静态

类 Unix API:熟悉的命令式操作

python
client.find("用户认证")              # 语义搜索
client.ls("viking://resources/")     # 列出目录
client.read("viking://resources/doc") # 读取内容
client.abstract("viking://...")       # 获取 L0 摘要
client.overview("viking://...")       # 获取 L1 概览

2. 分层上下文按需加载

将海量上下文一次性塞入提示词,不仅成本高昂,更容易超出模型窗口并引入噪声。OpenViking 在上下文写入时便自动将其处理为三个层级:

层级名称Token 限制用途
L0摘要~100 tokens向量搜索、快速过滤
L1概览~2k tokensRerank 精排、内容导航
L2详情无限制完整内容、按需加载
viking://resources/my_project/
├── .abstract.md               # L0 层:摘要
├── .overview.md               # L1 层:概览
├── docs/
│   ├── .abstract.md          # 每个目录都有对应的 L0/L1 层
│   ├── .overview.md
│   └── api.md                # L2 层:完整内容
└── src/

3. 目录递归检索

单一的向量检索难以应对复杂的查询意图。OpenViking 设计了一套创新的目录递归检索策略

  1. 意图分析:通过意图分析生成多个检索条件
  2. 初始定位:利用向量检索快速定位初始切片所在的高分目录
  3. 精细探索:在该目录下进行二次检索,并将高分结果更新至候选集合
  4. 递归下探:若目录下仍存在子目录,则逐层递归重复上述二次检索步骤
  5. 结果汇总:最终拿到最相关上下文返回

这种"先锁定高分目录、再精细探索内容"的策略,不仅能找到语义最匹配的片段,更能理解信息所在的完整语境。

4. 可视化检索轨迹

OpenViking 的组织方式采用层次化虚拟文件系统结构,所有上下文均以统一格式整合且每个条目对应唯一 URI,打破传统扁平黑箱式管理模式。

检索过程采用目录递归策略,每次检索的目录浏览、文件定位轨迹均被完整留存,能够清晰观测问题根源并指导检索逻辑优化。

5. 会话自动管理

OpenViking 内置记忆自迭代闭环。提交会话后,系统会异步分析任务执行结果与用户反馈,并根据记忆策略更新当前用户或 Peer 的记忆。

内置记忆类型

用途内置类型说明
用户与环境理解profilepreferencesentitiesevents记录用户画像、偏好、实体和事件
助手身份与连续性identitysoul记录助手身份、边界、风格和连续性
任务执行与学习casestrajectoriesexperiencestoolsskills沉淀可训练案例、执行轨迹、经验和工具/技能使用知识

OpenViking 支持根据业务需要扩展或调整记忆类型。

让 Agent 在与世界的交互中"越用越聪明",实现自我进化。

下一步

Released under the Apache-2.0 License.