volcengine/OpenViking · 上手攻略

  • 仓库:volcengine/OpenViking
  • 链接:https://github.com/volcengine/OpenViking
  • 分类:agent / database / rag / llm-infra
  • 作者:spark
  • 更新:2026-07-17

这是什么

OpenViking 是字节跳动旗下火山引擎(Volcengine)开源的、面向 AI Agent 的「上下文数据库」(Context Database)。它用「文件系统范式(filesystem paradigm)」统一管理 Agent 运行所需的全部上下文:长期记忆(memory)、外部知识与资源(resources)、可调用的技能(skills)。

与传统 RAG 把上下文切成扁平的向量块不同,OpenViking 把每个上下文对象组织成一个有 URI、可 ls/find 的「目录树」,并叠加 L0 / L1 / L2 三层加载递归目录检索可视化检索轨迹会话自动压缩与记忆自演进。一句话定位:它把 Agent 的「大脑」抽象成一套可挂载、可浏览、可观测的文件系统。

仓库目前 26k+ Stars,最近一次提交 2026-06-29,主语言 Python,许可证 AGPL-3.0(repo_card 与 GitHub README 标注;社区部分博客误写 Apache-2.0,以 GitHub 实际 LICENSE 为准)。

解决什么问题

构建一个长期运行的 Agent 时,几乎都会撞上五堵墙,OpenViking 把它列在 README 里:

  1. 上下文碎片化:记忆写在代码里、知识塞在向量库、技能散落在提示词工程里——没人能说清一份上下文「在哪」。
  2. 上下文爆炸:长任务一轮跑下来产生的 token 远超模型窗口,简单截断=丢信息。
  3. 检索效果差:传统 RAG 是扁平 chunk 的相似度匹配,缺全局视图,容易捡到局部相关但上下文错位的片段。
  4. 检索不可观测:召回的链路是黑盒,出问题只能猜。
  5. 记忆无法演进:现在的「记忆」基本就是聊天记录复读,Agent 不会从任务里学到东西。

OpenViking 的解法:

  • viking:// URI 命名空间把 memory / resources / skills 装进一棵虚拟目录树;
  • 每个对象分 L0(~100 token 摘要)/ L1(~2k token 概览)/ L2(全文)三层,按需逐层下钻,显著省 token
  • 检索同时支持「目录定位 + 语义搜索」,可递归遍历子目录;
  • 提供 retrieval trajectory 可视化,能回放「为什么召回这一条」;
  • 会话结束自动压缩、抽取长期 memory,Agent 越用越聪明。

按官方和第三方基准(来源见末尾),相对传统 RAG 它能带来 +52% 任务完成率最高 96% 的 token 成本下降(数字来自第三方 FAUN/Medium 博客转述官方 benchmark,未与最新 commit 二次校核)。

快速安装

OpenViking 同时提供 Python SDK、Rust CLI、桌面端 Helper(macOS/Windows),最常用的入口是 pip install

环境要求

  • Python ≥ 3.10
  • Rust 工具链 cargo(仅当你从源码构建 CLI 或 RAGFS 时需要)
  • C++ 编译器:GCC 9+ 或 Clang 11+
  • 系统:Linux / macOS / Windows
  • 一个可用的 Embedding 模型 + VLM(多模态)模型的 API

1. 安装 Python 包

pip install openviking --upgrade --force-reinstall

如果还要用内置的 VikingBot(开箱即用的 Agent):

pip install "openviking[bot]"

2. 安装 CLI(可选)

# 一键脚本(macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

# 或从源码构建
cargo install --git https://github.com/volcengine/OpenViking ov_cli

# Node 侧也有同名包
npm i -g @openviking/cli

3. 配置模型

首次推荐用交互向导,会自动检测 Ollama 或帮你拉取合适模型:

openviking-server init    # 选 provider、按提示输入 API key
openviking-server doctor  # 校验配置和连通性

想手动配置就写 ~/.openviking/ov.conf

{
  "storage": {
    "workspace": "/home/your-name/openviking_workspace"
  },
  "log": { "level": "INFO", "output": "stdout" },
  "embedding": {
    "dense": {
      "api_base": "https://ark.cn-beijing.volces.com/api/v3",
      "api_key": "your-volcengine-api-key",
      "provider": "volcengine",
      "dimension": 1024,
      "model": "doubao-embedding-vision-251215",
      "max_concurrent": 10,
      "text_source": "content_only",
      "max_input_tokens": 4096
    }
  },
  "vlm": {
    "api_base": "https://ark.cn-beijing.volces.com/api/v3",
    "api_key": "your-volcengine-api-key",
    "provider": "volcengine",
    "model": "doubao-seed-2-0-lite-260428",
    "max_concurrent": 64
  }
}

支持的 provider(README 表格原文):volcengine / openai / openai-codex(Codex OAuth,可走 openviking-server init 自动登录)/ kimi(Kimi Coding 订阅端点)/ glm(Z.AI Coding Plan)。本地模型用 Ollama,init 向导会自动安装并拉取 embedding + VLM。

4. 启动

openviking-server              # 只跑服务
openviking-server --with-bot   # 同时启动内置 VikingBot

核心用法

CLI:浏览 + 检索

ov status                       # 健康检查
ov add-resource https://example.com/docs/intro   # 把资源摄入上下文库
ov add-resource ./README.md                       # 也支持本地文件
ov find "如何配置 embedding 模型"                  # 语义检索
ov ls viking://resources                          # 像 ls 一样浏览目录

CLI 设计哲学很明确:让 Agent 开发者用「浏览 + 搜索」而不是「构造 prompt」来获取上下文。

Python SDK:往目录树写自己的上下文

按第三方深度文章演示的常见 pattern(命令名以官方 README / examples 为准,方法名以实际 import 为准):

from openviking import OpenViking

client = OpenViking()  # 读 ~/.openviking/ov.conf

# 1) 写入资源
client.resources.add(
    uri="viking://resources/docs/handbook",
    source="https://example.com/handbook",
)

# 2) 写入用户记忆
client.user.memories.add(
    uri="viking://user/memories/preference-lang",
    content="用户偏好中文回答,技术细节用术语保留英文",
)

# 3) 写入 Agent 技能
client.agent.skills.add(
    uri="viking://agent/skills/code-review",
    content={"name": "code-review", "steps": [...]},
)

# 4) 检索(语义 + 目录定位)
ctx = client.find("如何做 code review", scope="agent")
for hit in ctx.results:
    print(hit.uri, hit.l0, hit.l1)

# 5) 按需展开 L2
content = client.load(hit.uri, level="L2")

上面 Python API 的方法名(resources.add / user.memories.add / agent.skills.add / find / load)是按 README 与第三方教程描述的「filesystem paradigm」语义给出的调用示例。具体参数名、关键字以 help(OpenViking) 或仓库 examples/ 目录为准——这是 OpenViking 比较新的抽象,命名还在演进。

VikingBot:开箱即用的 Agent

pip install "openviking[bot]"
openviking-server --with-bot
ov chat

VikingBot 把上面这套上下文管理封装成可直接对话的 Agent,省去自己接 LLM 的胶水代码。

OpenViking Helper 桌面端

如果不想敲命令,可以下载 OpenViking Helper 桌面 App(macOS Apple Silicon / Intel / Windows x64 都有),提供:

  • 自动检测本地 Agent(Claude Code / Codex / Cursor / Trae / OpenCode)并配置 MCP / Hook / CLI 集成;
  • 可视化 Session Trace:回放 OpenViking 的 recall、prompt 注入、MCP 调用、capture、commit 事件;
  • 本地 memory / SKILL.md 可视化管理,一键同步到 OpenViking。

Helper 当前是 beta,按 README 标注为「for users of OpenViking」,是配 OpenViking 一起用的可视化外壳,不是 OpenViking 本身。

典型适用场景

  • 长期运行的个人 Agent / 数字员工:需要把跨周、跨月的任务记忆、知识更新沉淀下来,而不是每次重新喂 prompt。
  • 多 Agent 协作平台:多个 Agent 共享一个 viking:// 上下文库,避免重复摄取知识。
  • 企业知识库 + Agent 联动:把 Confluence / Notion / GitHub 仓库当 resource 摄入,用目录式检索代替「chunk 模糊匹配」。
  • 需要在本地跑、可视化调试的 RAG 升级:不想再把上下文塞进 LangChain 里调试,OpenViking 直接给「为什么召回这条」的证据链。
  • Codex / Claude Code 等编码 Agent 的外挂记忆:Helper 应用主打就是这个,把 IDE Agent 的会话导入 OpenViking,跨 IDE 共享。

坑与注意

  1. AGPL-3.0 不是 Apache 2.0:如果你要把 OpenViking 嵌进闭源 SaaS 服务对外提供,要仔细看传染条款;只在内部工具里用问题不大。
  2. 依赖较重:要 Embedding + VLM 两类模型,单纯想当个本地向量库用是大炮打蚊子。Ollama 本地路径虽然有,但 embedding + VLM 跑起来还是吃显存/算力。
  3. Python ≥ 3.10:老项目(3.8/3.9)要先升环境。
  4. CLI 与 SDK 仍在快速演进:方法名、URI scheme 在 0.x 阶段可能微调,生产用前固定一个 minor 版本。
  5. ~/.openviking/ov.conf 是真理:所有 API key / endpoint 都在里面,记得 chmod 600别提交进 git
  6. provider 与端点不是一一对应kimiglm 默认走的是 Coding Plan 端点,不是通用 chat 端点;切模型时要确认它能多模态(要看得懂图片和 PDF),否则 glm-4.6v / glm-5v-turbo 之类的视觉模型才能跑通。

与同类对比

项目 形态 关键差异
OpenViking 上下文数据库(filesystem 范式) L0/L1/L2 分层 + 目录递归 + 检索可视化 + 自动记忆压缩
LangChain / LlamaIndex Memory 框架内置 memory 跟框架耦合;多 Agent 共享难;没有文件系统抽象
传统向量库(Chroma / Weaviate / Milvus) 扁平向量存储 缺全局视图,缺层级,缺可观测性
Mem0 / Zep / Letta Agent 专用记忆层 更聚焦「长期 memory」这一块;不做资源/技能统一管理,文件系统范式 OpenViking 独有
Haystack DeepSet 编排框架 强在 pipeline,不在 context 管理本身

一句话:OpenViking 想做的是「Agent 的 OS 层」,其它大多是「OS 上的一个应用」

一句话推荐结论

如果你在做的 Agent 已经超过 demo 阶段、开始为「记忆碎、检索黑、token 贵」头疼,OpenViking 是当下少有的把上下文当成一等公民来管的现成方案;先用 pip install openviking + openviking-server init(Ollama 路径)跑通本地 demo,再决定要不要把生产上下文迁过去。


参考来源

  • GitHub README: https://github.com/volcengine/OpenViking
  • 第三方深度文(filesystem paradigm 与安装流程): FAUN / Medium「OpenViking Explained: Reinventing Memory and Context for AI Agents」
  • 媒体介绍: MarkTechPost「Meet OpenViking: An Open-Source Context Database…」, Python Libraries Substack
  • 仓库视频介绍: Prism Labs「OpenViking: The Context Database AI Agents Actually Need」(YouTube, 2026-03-13)

不确定处

  • Python SDK 的具体方法名(resources.add / user.memories.add / agent.skills.add 等)按 README 描述的语义给出,参数名以 help() 或仓库 examples/ 为准
  • 「+52% 任务完成率 / 最高 96% token 成本下降」数字来自第三方博客转述官方 benchmark,未与最新 commit 重新校核
  • 许可证以 GitHub 仓库 LICENSE 文件为准(repo_card 标 AGPL-3.0,部分博客误传 Apache-2.0)。