OpenViking:字节跳动开源的 19.6k Stars AI Agent 上下文数据库
OpenViking:字节跳动开源的 19.6k Stars AI Agent 上下文数据库
目标读者:构建 AI Agent、需要管理大量上下文的开发者 核心问题:如何让 AI Agent 高效管理记忆、资源和技能? 难度:⭐⭐⭐⭐(专家设计) 来源:GitHub volcengine/OpenViking,2026-03-28
一、项目概览
1.1 为什么这个项目值得关注
OpenViking 是字节跳动开源的 AI Agent 上下文数据库,创新采用「文件系统 paradigm」统一管理 AI Agent 的记忆(Memories)、资源(Resources)和技能(Skills)。
核心数据:
| 指标 | 数值 |
|---|---|
| GitHub Stars | 19.6k |
| Forks | 1.4k |
| License | Apache-2.0 |
| 官方文档 | https://www.openviking.ai/ |
| 官方群 | 飞书群 / 微信群 / Discord |
1.2 背景故事
AI 时代,数据充足,但高质量上下文稀缺。
开发者在构建 AI Agent 时经常面临以下挑战:
| 挑战 | 说明 |
|---|---|
| 上下文碎片化 | 记忆在代码里,资源在向量数据库,技能分散,难以统一管理 |
| 上下文需求暴涨 | Agent 长任务在每次执行都产生上下文,简单截断或压缩会导致信息丢失 |
| 检索效果差 | 传统 RAG 使用扁平存储,缺乏全局视角,难以理解信息全貌 |
| 上下文不可观测 | 传统 RAG 的隐式检索链像黑盒,出错时难以调试 |
| 记忆迭代有限 | 现有记忆只是用户交互记录,缺乏 Agent 相关任务记忆 |
1.3 OpenViking 的解决方案
OpenViking 重新定义 Agent 的上下文交互范式,告别上下文管理的繁琐。
核心理念:「文件系统 paradigm(范式)」
| 传统方式 | OpenViking 方式 |
|---|---|
| 碎片化存储 | 统一文件系统管理 |
| 简单截断 | L0/L1/L2 三层按需加载 |
| 扁平检索 | 目录递归检索 |
| 黑盒检索 | 可视化检索轨迹 |
| 被动记录 | 自动会话管理 |
二、核心特性
2.1 文件系统管理范式
OpenViking 借鉴 Linux 文件系统的设计理念:
viking:// # 根目录
├── memories/ # 记忆目录
│ ├── sessions/ # 会话记忆
│ └── long_term/ # 长期记忆
├── resources/ # 资源目录
│ ├── code/ # 代码资源
│ ├── docs/ # 文档资源
│ └── data/ # 数据资源
└── skills/ # 技能目录
├── builtin/ # 内置技能
└── custom/ # 自定义技能2.2 分层上下文加载(L0/L1/L2)
| 层级 | 说明 | Token 消耗 |
|---|---|---|
| L0 | 核心上下文 | 最低 |
| L1 | 扩展上下文 | 中等 |
| L2 | 完整上下文 | 最高 |
按需加载,显著节省成本。
2.3 目录递归检索
结合目录定位和语义搜索,实现递归精确的上下文获取。
2.4 可视化检索轨迹
支持目录检索轨迹可视化,清晰观察问题根因,指导检索逻辑优化。
2.5 自动会话管理
自动压缩对话中的内容、资源引用、工具调用等,提取长期记忆,让 Agent 越用越聪明。
三、技术架构
3.1 整体架构
┌─────────────────────────────────────────────────────────────┐
│ OpenViking 架构 │
├─────────────────────────────────────────────────────────────┤
│ SDK 层(多语言) │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Python SDK │ │ Rust CLI │ │
│ │ openviking │ │ ov_cli │ │
│ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ VikingBot(AI Agent 框架) │
│ 基于 OpenViking 构建的 AI Agent 框架 │
├─────────────────────────────────────────────────────────────┤
│ 核心引擎层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Context │ │ Retrieval │ │ Memory │ │
│ │ Engine │ │ Engine │ │ Engine │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 存储层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ File System │ │ Vector Store │ │
│ │ Paradigm │ │ (Embedding) │ │
│ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 模型层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ VLM Model │ │ Embedding │ │
│ │ (视觉理解) │ │ Model (向量化)│ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘3.2 支持的模型提供商
VLM 模型提供商:
| 提供商 | 说明 | API Key 获取 |
|---|---|---|
| volcengine | 火山引擎豆包模型 | 火山引擎控制台 |
| openai | OpenAI 官方 API | OpenAI Platform |
| litellm | 统一访问多种第三方模型(Anthropic、DeepSeek、Gemini、vLLM、Ollama 等) | 见 LiteLLM 文档 |
Embedding 模型提供商:
| 提供商 | 说明 |
|---|---|
| volcengine | 豆包 Embedding |
| openai | OpenAI Embedding |
| jina | Jina AI |
| voyage | Voyage AI |
| minimax | MiniMax |
| vikingdb | VikingDB |
| gemini | Google Gemini |
3.3 核心目录结构
OpenViking/
├── bot/ # VikingBot(AI Agent 框架)
├── build_support/ # 构建支持
├── crates/ov_cli/ # Rust CLI 工具
├── deploy/helm/ # Helm 部署
├── docs/ # 文档
├── examples/ # 示例
├── openviking/ # 核心 Python 包
├── openviking_cli/ # Python CLI
├── src/ # 核心源代码
├── tests/ # 测试
└── third_party/ # 第三方依赖四、快速开始
4.1 环境要求
| 工具 | 要求 |
|---|---|
| Python | ≥3.10 |
| Go | ≥1.22(构建 AGFS 组件必需) |
| C++ 编译器 | GCC 9+ 或 Clang 11+(构建核心扩展必需) |
| 操作系统 | Linux / macOS / Windows |
4.2 安装
Python 包:
pip install openviking --upgrade --force-reinstallRust CLI(可选):
# 方式一:安装脚本
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
# 方式二:从源码构建
cargo install --git https://github.com/volcengine/OpenViking ov_cli4.3 模型配置
OpenViking 需要以下模型能力:
| 模型类型 | 说明 |
|---|---|
| VLM 模型(视觉语言模型) | 用于图像和内容理解 |
| Embedding 模型(嵌入向量) | 用于向量化和语义检索 |
4.4 配置示例
服务端配置 ~/.openviking/ov.conf:
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"embedding": {
"api_base": "<api-endpoint>",
"api_key": "<your-api-key>",
"provider": "volcengine",
"dimension": 1024,
"model": "doubao-embedding-vision-250615"
},
"vlm": {
"api_base": "<api-endpoint>",
"api_key": "<your-api-key>",
"provider": "volcengine",
"model": "doubao-seed-2-0-pro-260215"
}
}4.5 运行示例
启动服务器:
openviking-server
# 或后台运行
nohup openviking-server > /data/log/openviking.log 2>&1 &运行 CLI:
ov status # 查看状态
ov add-resource https://github.com/volcengine/OpenViking # 添加资源
ov ls # 列出内容
ov tree viking://resources/ # 树形结构
ov find "what is openviking" # 语义搜索
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/zh # grep 搜索4.6 VikingBot 快速开始
VikingBot 是基于 OpenViking 构建的 AI Agent 框架:
# 安装 VikingBot(推荐方式)
pip install "openviking[bot]"
# 启动带 Bot 的服务器
openviking-server --with-bot
# 在另一个终端启动交互式聊天
ov chat五、与传统 RAG 对比
| 特性 | 传统 RAG | OpenViking |
|---|---|---|
| 存储模型 | 扁平向量存储 | 文件系统范式 |
| 上下文组织 | 碎片化 | 统一分层管理 |
| 检索方式 | 简单相似度匹配 | 目录递归 + 语义检索 |
| 检索可观测性 | 黑盒 | 可视化轨迹 |
| 记忆迭代 | 被动记录 | 自动压缩 + 长期记忆提取 |
| 多模态支持 | 有限 | VLM 深度集成 |
六、适用场景
| 场景 | 说明 |
|---|---|
| AI Agent 上下文管理 | 为 Agent 提供统一的记忆、资源、技能管理 |
| 长对话总结 | 自动压缩会话,提取关键信息 |
| 代码库理解 | 目录递归检索,快速定位相关代码 |
| 知识库问答 | 结合语义搜索和目录结构 |
| 多模态内容处理 | VLM 图像理解和内容提取 |
七、资源链接
| 资源 | 链接 |
|---|---|
| GitHub | https://github.com/volcengine/OpenViking |
| 官网 | https://www.openviking.ai/ |
| 文档 | https://www.openviking.ai/docs |
| Discord | https://discord.com/invite/eHvx8E9XF3 |
| X (Twitter) | https://x.com/openvikingai |
八、总结与展望
8.1 核心价值
OpenViking 的核心价值在于为 AI Agent 提供企业级的上下文管理能力,让开发者可以像管理本地文件一样管理 Agent 的脑。
| 传统方式 | OpenViking 方式 |
|---|---|
| 碎片化存储 | 统一文件系统 paradigm |
| 被动记录 | 主动压缩 + 长期记忆 |
| 黑盒检索 | 可视化检索轨迹 |
| 简单匹配 | 目录递归 + 语义检索 |
8.2 技术亮点
- 文件系统范式:创新的上下文组织方式
- 分层加载:L0/L1/L2 按需加载,显著节省 Token
- 递归检索:结合目录定位和语义搜索
- 多模型支持:支持 volcengine、OpenAI、LiteLLM 等多种提供商
- VikingBot:开箱即用的 AI Agent 框架
相关话题标签
#OpenViking #上下文数据库 #AI Agent #记忆管理 #RAG #字节跳动
来源
- GitHub:https://github.com/volcengine/OpenViking
OpenViking 由字节跳动(Volcengine)开源,采用 Apache-2.0 许可证。