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/

优势: - 像 lsfind 这样的标准命令精确定位 - 上下文管理从模糊语义匹配变为可追踪的"文件操作" - 每个条目对应唯一的 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 用户


参考资料