OpenViking:火山引擎开源的 AI Agent 上下文数据库

前言:Agent 的记忆困境

随着 AI Agent 应用快速普及,一个被忽视但至关重要的问题浮出水面——Agent 的上下文管理太乱了

记忆存一个地方,外部文档存另一个地方,技能和指令又是另一套系统。传统 RAG 方案把所有内容打碎成扁平的向量块,检索时只能靠相似度猜,既不精准,也难以调试。更要命的是,每次对话都要把大量上下文塞进 Prompt,token 消耗居高不下。

这不是模型的问题,是上下文管理方式的问题。

OpenViking 正是为此而生。


什么是 OpenViking?

OpenViking 是火山引擎(字节跳动旗下云平台)Viking 团队开源的专为 AI Agent 设计的上下文数据库(Context Database)

项目地址:https://github.com/volcengine/OpenViking

它的核心思路是:抛弃传统 RAG 的碎片化向量存储,改用"文件系统范式"统一管理 Agent 所需的记忆、资源和技能。

简单说,Agent 的大脑从此可以像管理本地文件一样组织和检索——用 lsfindgrep 这样熟悉的方式操作上下文,而不是把一切都交给模糊的向量相似度来决定。
在这里插入图片描述


解决了什么问题?

1. 上下文碎片化

传统向量数据库把文档切片打散存储,缺乏结构。OpenViking 引入文件系统范式,将记忆(Memory)、外部资源(Resources)、技能与指令(Skills)统一组织在一套虚拟目录结构下:

viking://
├── resources/   # 文档、代码库、网页等外部资源
├── user/        # 用户偏好、个人记忆
└── agent/       # Agent 技能、指令、任务记忆

2. Token 消耗过高

OpenViking 采用 L0 / L1 / L2 三层上下文结构,按需加载:

  • L0(约 100 token):极简摘要,快速识别定位
  • L1:核心概览,供 Agent 规划阶段决策
  • L2:完整内容,仅在真正需要时加载

实测在 LoCoMo10 基准(1540 条长对话)上,与基线方案相比,token 消耗降低约 83%,任务完成率提升约 49%

3. 检索不准、难以调试

OpenViking 采用目录递归检索策略:先向量检索定位目录,再在目录内二次检索,必要时递归深入子目录。同时提供检索轨迹可视化,让开发者清楚看到每次检索走了哪条路径,方便排查问题——Agent 表现差,往往不是模型问题,而是拿到了错误的上下文。

4. 会话记忆无法自动沉淀

内置记忆自迭代循环,会话结束后自动提取关键信息并写入长期记忆,无需手动维护。


怎么用?

安装

# 安装 OpenViking
pip install openviking --upgrade

# 或安装包含 VikingBot 的完整版
pip install "openviking[bot]"

环境要求:Python 3.10+,Go 1.22+,支持 Linux / macOS / Windows。

配置模型

~/.openviking/ov.conf 中配置 Embedding 模型和 VLM 模型(支持火山引擎豆包、OpenAI、Claude、DeepSeek、Ollama 等):

{
  "storage": {
    "workspace": "/home/yourname/openviking_workspace"
  },
  "embedding": {
    "dense": {
      "provider": "volcengine",
      "api_base": "https://ark.cn-beijing.volces.com/api/v3",
      "api_key": "your-api-key",
      "model": "doubao-embedding-vision-250615",
      "dimension": 1024
    }
  },
  "vlm": {
    "provider": "volcengine",
    "api_base": "https://ark.cn-beijing.volces.com/api/v3",
    "api_key": "your-api-key",
    "model": "doubao-seed-2-0-pro-260215"
  }
}

启动服务

openviking-server

CLI 快速体验

# 查看服务状态
ov status

# 添加一个外部资源(比如 GitHub 仓库)
ov add-resource https://github.com/volcengine/OpenViking

# 查看资源列表
ov ls viking://resources/

# 查看目录树
ov tree viking://resources/volcengine -L 2

# 语义搜索
ov find "what is openviking"

# 全文检索
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/zh

Python SDK 调用

import openviking as ov

client = ov.SyncHTTPClient(url="http://localhost:1933")
client.initialize()

# 添加资源
result = client.add_resource(
    "https://raw.githubusercontent.com/volcengine/OpenViking/refs/heads/main/README.md"
)

# 等待语义处理完成
client.wait_processed()

# 语义搜索
results = client.find("what is openviking", target_uri=result["root_uri"])
for r in results.resources:
    print(f"{r.uri} (score: {r.score:.4f})")

client.close()

与 OpenClaw 集成

OpenViking 官方支持作为 OpenClaw 的记忆后端使用:

# 在 OpenClaw 中安装 OpenViking 插件
# 参考官方文档:openclaw-openviking-plugin

总结

OpenViking 做的事情很专注:给 AI Agent 造一个有结构、可检索、会自我进化的大脑

它不是另一个 RAG 框架,也不是向量数据库的简单封装,而是从上下文管理的根本范式入手——用开发者最熟悉的文件系统思维,重新定义 Agent 应该如何存储和使用信息。

适合关注的开发者:

  • 正在为 Agent 搭建长期记忆系统的工程师
  • 被 RAG 检索不准、token 超限困扰的开发者
  • 使用 OpenClaw、Claude Code 等 Agent 框架并希望接入持久化记忆的用户
  • 需要在本地私有化部署 Agent 记忆基础设施的团队

项目目前仍处于早期快速迭代阶段,star 数已突破 10k,社区活跃。如果你在做 Agent 开发,值得加入工具箱。

GitHub:https://github.com/volcengine/OpenViking

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐