OpenViking 调研报告
OpenViking 调研报告
一、项目概述
1.1 基本信息
| 项目信息 | 详情 |
|---|---|
| 项目名称 | OpenViking |
| 开发者 | ByteDance / 火山引擎 (Volcengine) |
| GitHub | https://github.com/volcengine/OpenViking |
| 官网 | https://openviking.ai |
| 开源协议 | Apache License 2.0 |
| 编程语言 | Python + Rust + Go |
| 发布时间 | 2026年1月 |
| 当前版本 | 0.1.x |
1.2 一句话介绍
OpenViking 是一个专为 AI Agent 设计的开源上下文数据库,通过文件系统范式统一管理 Agent 所需的记忆、资源和技能,实现分层上下文交付和自我演进。
1.3 核心理念
"Everything is a File" — 一切皆文件
OpenViking 摒弃传统 RAG 的碎片化向量存储模型,创新性地采用文件系统范式来统一组织 Agent 所需的记忆、资源和技能。
1.4 解决的核心问题
┌─────────────────────────────────────────────────────────────────┐
│ AI Agent 上下文管理的五大挑战 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 碎片化 Context │
│ ├── 记忆散落在代码中 │
│ ├── 资源存储在向量数据库 │
│ └── 技能分散各处,难以统一管理 │
│ │
│ 2. 上下文需求激增 │
│ ├── Agent 长时间运行产生大量上下文 │
│ └── 简单截断或压缩导致信息丢失 │
│ │
│ 3. 检索效果差 │
│ ├── 传统 RAG 使用扁平存储 │
│ └── 缺乏全局视角,难以理解信息完整上下文 │
│ │
│ 4. 上下文不可观察 │
│ ├── 传统 RAG 的隐式检索链如同黑盒 │
│ └── 出错时难以调试 │
│ │
│ 5. 记忆迭代受限 │
│ └── 当前记忆只是用户交互记录,缺乏任务相关记忆 │
│ │
└─────────────────────────────────────────────────────────────────┘
二、核心功能
2.1 功能概览
| 功能模块 | 解决的问题 | 描述 |
|---|---|---|
| 文件系统管理范式 | 碎片化 | 基于文件系统统一管理记忆、资源、技能 |
| 分层上下文加载 | Token 消耗 | L0/L1/L2 三层结构,按需加载 |
| 目录递归检索 | 检索效果 | 目录定位 + 语义搜索,精准获取上下文 |
| 可视化检索轨迹 | 不可观察 | 可视化检索路径,问题根源清晰可见 |
| 自动会话管理 | 记忆迭代 | 自动压缩内容,提取长期记忆 |
2.2 五大核心概念详解
概念 1: 文件系统管理范式
viking://
├── resources/ # 资源: 项目文档、代码库、网页等
│ ├── my_project/
│ │ ├── docs/
│ │ │ ├── api/
│ │ │ └── tutorials/
│ │ └── src/
│ └── ...
├── user/ # 用户: 个人偏好、习惯等
│ └── memories/
│ ├── preferences/
│ │ ├── writing_style
│ │ └── coding_habits
│ └── ...
└── agent/ # Agent: 技能、指令、任务记忆等
├── skills/
│ ├── search_code
│ ├── analyze_data
│ └── ...
├── memories/
└── instructions/
优势:
- 像 ls、find 这样的标准命令精确定位
- 上下文管理从模糊语义匹配变为可追踪的"文件操作"
- 每个条目对应唯一的 viking:// URI
概念 2: 分层上下文加载 (L0/L1/L2)
viking://resources/my_project/
├── .abstract # L0 层: 摘要 (~100 tokens)
│ → 快速相关性检查
├── .overview # L1 层: 概览 (~2k tokens)
│ → 理解结构和关键点
├── docs/
│ ├── .abstract
│ ├── .overview
│ ├── api/
│ │ ├── auth.md # L2 层: 完整内容
│ │ └── endpoints.md → 按需深度阅读
│ └── ...
└── src/
└── ...
| 层级 | Token 量 | 用途 | 加载时机 |
|---|---|---|---|
| L0 (Abstract) | ~100 | 一句话摘要,快速检索识别 | 初步筛选 |
| L1 (Overview) | ~2,000 | 核心信息和使用场景 | Agent 规划阶段 |
| L2 (Details) | 完整内容 | 原始数据 | 深度阅读时 |
优势:显著降低 Token 消耗,避免一次性加载大量上下文。
概念 3: 目录递归检索
检索流程:
┌─────────────────────────────────────────────────────────────┐
│ 1. 意图分析 │
│ └── 生成多个检索条件 │
│ │
│ 2. 初始定位 │
│ └── 向量检索快速定位高分目录 │
│ │
│ 3. 精细探索 │
│ └── 在目录内二次检索,更新高分结果 │
│ │
│ 4. 递归下钻 │
│ └── 如有子目录,递归重复二次检索 │
│ │
│ 5. 结果聚合 │
│ └── 获取最相关的上下文返回 │
└─────────────────────────────────────────────────────────────┘
策略: "先锁定高分目录,再精细探索内容"
优势: - 不仅找到语义最佳匹配片段 - 还能理解信息所在的完整上下文 - 提高检索的全局性和准确性
概念 4: 可视化检索轨迹
检索轨迹示例:
viking://resources/
├── my_project/ ✓ 访问 (score: 0.92)
│ ├── docs/ ✓ 访问 (score: 0.88)
│ │ ├── api/ ✓ 访问 (score: 0.85)
│ │ │ └── auth.md ✓ 匹配 (final score: 0.91)
│ │ └── tutorials/ ✗ 跳过 (score: 0.32)
│ └── src/ ✗ 跳过 (score: 0.45)
└── other_project/ ✗ 跳过 (score: 0.21)
优势: - 清晰观察问题根源 - 引导检索逻辑优化 - 调试不再是黑盒
概念 5: 自动会话管理
会话结束时的自我迭代:
┌─────────────────────────────────────────────────────────────┐
│ │
│ 会话内容 ──→ 分析 ──→ 提取 ──→ 更新 │
│ │
│ ├── 用户记忆更新 │
│ │ └── 更新用户偏好相关记忆 │
│ │ → Agent 响应更符合用户需求 │
│ │ │
│ └── Agent 经验积累 │
│ └── 提取操作技巧、工具使用经验 │
│ → 后续任务决策更高效 │
│ │
│ 结果: Agent 越用越聪明,实现自我演进 │
│ │
└─────────────────────────────────────────────────────────────┘
三、技术架构
3.1 整体架构
┌─────────────────────────────────────────────────────────────────┐
│ OpenViking 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ AI Agent 层 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ OpenClaw │ │ OpenCode │ │ Claude │ │ Custom │ │ │
│ │ │ │ │ │ │ Code │ │ Agents │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OpenViking 核心层 │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Viking URI │ │ L0/L1/L2 │ │ 检索引擎 │ │ │
│ │ │ 文件系统 │ │ 分层加载 │ │ (递归检索) │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 存储层 │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 向量存储 │ │ 元数据存储 │ │ 文件存储 │ │ │
│ │ │ (Embedding) │ │ (索引) │ │ (原始数据) │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 模型服务层 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │Volcengine│ │ OpenAI │ │ LiteLLM │ │ Ollama │ │ │
│ │ │ (Doubao) │ │ │ │(多模型) │ │ (本地) │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
3.2 目录结构
OpenViking/
├── openviking/ # Python 核心包
│ ├── server/ # HTTP 服务
│ ├── client/ # 客户端库
│ ├── core/ # 核心逻辑
│ │ ├── filesystem/ # 虚拟文件系统
│ │ ├── retrieval/ # 检索引擎
│ │ └── context/ # 上下文管理
│ └── plugins/ # 插件系统
│ ├── openclaw/ # OpenClaw 插件
│ └── opencode/ # OpenCode 插件
│
├── crates/ # Rust 组件
│ ├── ov_cli/ # CLI 工具
│ └── core/ # 高性能核心
│
├── docs/ # 文档
│ ├── en/ # 英文
│ └── zh/ # 中文
│
└── examples/ # 示例代码
├── openclaw-memory-plugin/
└── basic-usage/
3.3 技术栈
| 组件 | 技术 | 用途 |
|---|---|---|
| 核心语言 | Python + Rust + Go | 多语言协作 |
| CLI 工具 | Rust | 高性能命令行 |
| HTTP 服务 | Python | RESTful API |
| 向量存储 | 内置 | Embedding 存储 |
| 模型接口 | LiteLLM | 多模型统一访问 |
四、支持的平台和模型
4.1 AI Agent 平台
| 平台 | 集成方式 | 状态 |
|---|---|---|
| OpenClaw | Memory Plugin | ✅ 官方支持 |
| OpenCode | Memory Plugin | ✅ 支持 |
| Claude Code | 自定义集成 | ✅ 可用 |
| 自定义 Agent | API/SDK | ✅ 灵活集成 |
4.2 支持的模型提供商
VLM (视觉语言模型)
| Provider | 说明 | 模型示例 |
|---|---|---|
| volcengine | 火山引擎豆包 | doubao-seed-2-0-pro |
| openai | OpenAI 官方 | gpt-4o, gpt-4-vision |
| litellm | 统一多模型 | Claude, DeepSeek, Gemini 等 |
Embedding 模型
| Provider | 说明 | 模型示例 |
|---|---|---|
| volcengine | 豆包 Embedding | doubao-embedding-vision |
| openai | OpenAI Embedding | text-embedding-3-large |
| jina | Jina AI | jina-embeddings-v2 |
4.3 LiteLLM 支持的模型
┌─────────────────────────────────────────────────────────────┐
│ LiteLLM 支持的模型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 商业模型: │
│ ├── Anthropic: claude-3-5-sonnet │
│ ├── DeepSeek: deepseek-chat │
│ ├── Gemini: gemini-pro │
│ ├── Moonshot: moonshot-v1 │
│ ├── 智谱: glm-4 │
│ ├── 通义千问: dashscope/qwen-turbo │
│ └── MiniMax: ... │
│ │
│ 本地/开源: │
│ ├── vLLM: hosted_vllm/llama-3.1-8b │
│ └── Ollama: ollama/llama3.1 │
│ │
└─────────────────────────────────────────────────────────────┘
五、OpenClaw 集成
5.1 性能对比数据
基于 LoCoMo10 数据集测试 (1,540 个长对话案例):
| 实验组 | 任务完成率 | 输入 Token 成本 |
|---|---|---|
| OpenClaw (memory-core) | 35.65% | 24,611,530 |
| OpenClaw + LanceDB (-memory-core) | 44.55% | 51,574,530 |
| OpenClaw + OpenViking (-memory-core) | 52.08% | 4,264,396 |
| OpenClaw + OpenViking (+memory-core) | 51.23% | 2,099,622 |
5.2 性能提升总结
┌─────────────────────────────────────────────────────────────┐
│ OpenViking 性能提升 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 对比原生 OpenClaw: │
│ ├── 任务完成率提升: 49% │
│ └── Token 成本降低: 83% │
│ │
│ 对比 LanceDB: │
│ ├── 任务完成率提升: 17% │
│ └── Token 成本降低: 92% │
│ │
│ 同时启用原生记忆: │
│ ├── 任务完成率提升: 43% │
│ └── Token 成本降低: 91% │
│ │
└─────────────────────────────────────────────────────────────┘
5.3 集成要求
- OpenClaw 版本: 2.10 及以上
- Python 版本: 3.10 及以上
六、VikingBot 框架
6.1 简介
VikingBot 是基于 OpenViking 构建的 AI Agent 框架。
6.2 安装和使用
# 安装 VikingBot
pip install "openviking[bot]"
# 启动服务器 (带 Bot 功能)
openviking-server --with-bot
# 在另一个终端启动交互式聊天
ov chat
6.3 应用场景
- 微信机器人 (集成 WeChaty/itchat)
- 带记忆的 AI 助手
- 自我演进的智能系统
七、对比分析
7.1 OpenViking vs Mem0 vs MemGPT
| 维度 | OpenViking | Mem0 | MemGPT (Letta) |
|---|---|---|---|
| 核心理念 | 文件系统范式 | 事实提取 | 核心记忆架构 |
| 上下文组织 | 层级文件系统 | 扁平存储 | 分层记忆 |
| 检索方式 | 目录递归检索 | 向量检索 | 记忆召回 |
| Token 优化 | L0/L1/L2 分层 | 压缩 | 分层加载 |
| 可观察性 | 可视化轨迹 | 有限 | 有限 |
| 自我演进 | ✅ 自动会话管理 | ✅ | ✅ |
| 开源 | ✅ Apache 2.0 | ✅ | ✅ |
| 主要集成 | OpenClaw | 多框架 | 独立 Agent |
7.2 OpenViking vs 传统 RAG
| 维度 | OpenViking | 传统 RAG |
|---|---|---|
| 存储模型 | 层级文件系统 | 扁平向量存储 |
| 检索精度 | 目录递归精准 | 语义匹配模糊 |
| 全局视角 | ✅ 有 | ❌ 无 |
| 可观察性 | ✅ 可视化轨迹 | ❌ 黑盒 |
| Token 效率 | ✅ 分层按需 | ❌ 全量或截断 |
| 上下文演进 | ✅ 自动迭代 | ❌ 静态 |
7.3 选型建议
┌─────────────────────────────────────────────────────────────┐
│ 选型决策树 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 需要 AI Agent 长期记忆? │
│ │ │
│ ├── 是 ──→ 需要层级化上下文管理? │
│ │ │ │
│ │ ├── 是 ──→ 【OpenViking】 │
│ │ │ │
│ │ └── 否 ──→ 需要简单事实提取? │
│ │ │ │
│ │ ├── 是 ──→ 【Mem0】 │
│ │ │ │
│ │ └── 否 ──→ 【MemGPT/Letta】 │
│ │ │
│ └── 否 ──→ 考虑传统 RAG 或无状态方案 │
│ │
└─────────────────────────────────────────────────────────────┘
八、使用场景
8.1 适用场景
| 场景 | 描述 |
|---|---|
| AI Agent 长期记忆 | 为 Agent 提供持久化、可演进的记忆系统 |
| 项目知识库 | 组织项目文档、代码库、API 文档 |
| 用户偏好管理 | 存储和更新用户偏好、习惯 |
| 任务记忆 | 记录 Agent 任务执行经验 |
| 技能库 | 管理 Agent 可复用的技能 |
8.2 典型用例
用例 1: OpenClaw 长期记忆增强
OpenClaw + OpenViking Plugin
→ 任务完成率提升 49%
→ Token 成本降低 91%
用例 2: 企业知识库
企业文档 ──→ OpenViking resources/
│
▼
AI Agent 智能检索
│
▼
精准回答 + 可追溯来源
用例 3: 个性化 AI 助手
用户交互 ──→ OpenViking user/memories/
│
▼
自动学习用户偏好
│
▼
响应越来越个性化
九、安装与快速开始
9.1 环境要求
- Python: 3.10+
- Go: 1.22+ (构建 AGFS 组件)
- C++ 编译器: GCC 9+ 或 Clang 11+
- 操作系统: Linux, macOS, Windows
9.2 安装
# Python 包安装
pip install openviking --upgrade --force-reinstall
# Rust CLI 安装 (可选)
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
9.3 配置
创建 ~/.openviking/ov.conf:
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"embedding": {
"dense": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-api-key",
"provider": "openai",
"dimension": 3072,
"model": "text-embedding-3-large"
}
},
"vlm": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-api-key",
"provider": "openai",
"model": "gpt-4o"
}
}
9.4 快速启动
# 启动服务器
openviking-server
# 使用 CLI
ov status
ov add-resource https://github.com/volcengine/OpenViking
ov ls viking://resources/
ov tree viking://resources/volcengine -L 2
ov find "what is openviking"
十、总结
10.1 优势
| 优势 | 说明 |
|---|---|
| 创新范式 | 文件系统范式,统一管理上下文 |
| 高效检索 | 目录递归检索,精准定位 |
| Token 优化 | L0/L1/L2 分层,按需加载 |
| 可观察性 | 可视化检索轨迹,便于调试 |
| 自我演进 | 自动会话管理,越用越聪明 |
| 性能卓越 | 任务完成率提升 49%,成本降低 91% |
10.2 劣势
| 劣势 | 说明 |
|---|---|
| 新项目 | 2026年1月发布,生态还在发展 |
| 学习曲线 | 需要理解文件系统范式 |
| 依赖模型 | 需要 VLM 和 Embedding 模型支持 |
10.3 最终评价
OpenViking 是 AI Agent 记忆管理领域的创新项目,通过文件系统范式重新定义了上下文管理方式。其分层加载和递归检索机制显著提升了检索效率和准确性。
推荐指数: ⭐⭐⭐⭐⭐ (5/5)
适用人群: - AI Agent 开发者 - 需要长期记忆的 AI 应用 - 企业知识库建设者 - OpenClaw 用户