开源项目
volcengine/OpenViking avatar
volcengine/OpenViking

OpenViking:把 Agent 的上下文变成可浏览的文件系统

人工智能代理的自我进化上下文数据库。统一代理记忆、知识 RAG 和技能。

37,481 个 Star2,888 个 ForkPythonAGPL-3.0

秒懂

它是什么?
OpenViking 是一个面向 AI Agent 的上下文数据库,将记忆、资源和技能统一为 viking:// 协议下的虚拟文件系统。它通过三层分级加载和目录式检索来降低 token 消耗,但 AGPL-3.0 许可和较新的项目状态需要仔细评估。
适合谁用?
OpenViking 适合那些需要为 Agent 构建长期上下文、且愿意接受 AGPL-3.0 许可约束的团队,尤其是已在火山引擎生态内或使用 Doubao 系列模型的项目。它不适合追求完全自主可控、需要将上下文数据库嵌入闭源产品中的场景。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

Agent 的上下文为什么需要数据库

OpenViking 的目录结构分为 resources 和 user 两大块。resources 存放项目文档、代码仓库、网页等公共资源,user 下按用户 ID 细分,包含 memories、resources、skills 和 peers。每个目录都可以有自己的 .abstract 和 .overview 文件,分别对应 L0 和 L1 层。L2 层才是完整的原始数据,按需加载。这种结构意味着检索时可以先看目录的摘要,再决定是否深入。它不像传统 RAG 那样返回一堆孤立的文本块,而是保留上下文边界。

三层分级:token 花费的控制机制

OpenViking 的核心机制是内容写入时的三层处理。L0 是一句话摘要,约 100 token,用来快速判断相关性。L1 是概述,约 2000 token,包含结构和关键点。L2 是完整原文,只在任务需要时才读取。每个目录都携带自己的 L0/L1 层,所以 Agent 可以在读取任何完整文件之前判断相关性。文档给出的例子是 viking://resources/my_project/ 下每个子目录都有 .abstract 和 .overview。这种设计直接回应了 token 成本问题。根据 README 中的基准数据,使用 OpenViking 后输入 token 降低了 34.3% 到 91.0%。但要注意,这些数据来自项目自己的基准报告,使用 Doubao 2.0 Pro 作为 VLM,Doubao-embedding-vision 作为 embedding 模型。如果你用其他模型,效果可能有差异。

目录递归检索:向量搜索只是第一步

OpenViking 的检索方式不是直接返回最相似的文本块,而是先通过向量搜索定位最高分的目录,然后逐层向下钻取。这样做的结果是,返回的内容带着完整的上下文结构,而不是零散的片段。同时,每次查询都会保留目录浏览的轨迹,当结果不对时,你可以看到是哪个路径产生了这个结果。这种可观测性是传统向量数据库难以提供的。README 中强调“observable retrieval”,意味着调试 Agent 的检索逻辑变得直观。但这也带来一个潜在问题:如果目录结构设计不合理,或者 L0 摘要质量不高,检索可能被误导。文档没有详细说明如何优化目录层级,这需要开发者自己摸索。

会话如何变成长期记忆

OpenViking 有一个独特功能:会话在提交后,系统会异步提取用户偏好和 Agent 经验,写入长期记忆。这意味着 Agent 不是每次从零开始,而是能积累对用户的了解。比如用户的写作风格、编码习惯,都可以从历史会话中提取并存储。这解决了长对话中遗忘的问题。但异步提取意味着记忆更新有延迟,文档没有说明延迟的具体时间。另外,提取的质量取决于底层模型的理解能力,如果模型对会话理解有误,记忆可能被污染。OpenViking 没有提供记忆编辑的详细接口,只展示了目录结构中的 preferences 和 coding_habits 文件。

快速开始:init 向导与 ov.conf

安装过程相对简单。需要 Python 3.10 以上,然后运行 pip install openviking --upgrade。之后用 openviking-server init 启动交互式向导,它会引导你配置 provider、模型和生成 ov.conf 文件。配置文件位于 ~/.openviking/ov.conf。支持的 provider 包括 Volcengine、OpenAI、Codex OAuth、Kimi、GLM 和本地 Ollama。对于 Ollama,init 能自动检测并安装运行时,还能根据硬件拉取合适的模型。然后运行 openviking-server doctor 验证配置,它检查配置文件、Python 版本、provider 连通性和磁盘空间,不需要启动服务器。最后直接运行 openviking-server 即可。后台运行可以用 nohup openviking-server > openviking.log 2>&1 &。手册提到 Windows 也有支持,但细节在文档中。

基准数据:效果提升的代价

README 提供了两组基准结果。在 LoCoMo 长对话用户记忆任务上,三个 Agent 集成的准确率达到 80-83%,而原生记忆只有 24-57%。查询延迟降低了 58.45-66.10%。在 tau2-bench 多轮 Agent 任务上,经验记忆使零售任务成功率提升 6.87 个百分点,航空任务提升 11.87 个百分点。这些数字看起来不错,但必须注意几个前提。第一,评估使用的是火山引擎的 Doubao 模型,OpenViking 是火山引擎开源的项目,这可能存在利益相关性。第二,基准脚本在 benchmark 目录下,但 README 没有说明复现的难度。第三,token 降低的幅度很大,可能因为 L0/L1 层确实减少了不必要的全文读取,但这也依赖于任务类型。对于短查询或简单任务,三层加载可能带来额外开销。

许可和生态:AGPL-3.0 意味着什么

OpenViking 采用 AGPL-3.0 许可。这是一个强 copyleft 许可,如果你修改了代码并部署为网络服务,必须开源你的修改版本。对于内部使用,影响较小,但如果你的产品是基于 OpenViking 构建的,可能需要考虑开源义务。文档没有提供商业许可选项,这是一个潜在障碍。另外,项目主页是 openviking.ai,但代码托管在 volcengine 组织下,这表明它由火山引擎主导。这可能导致对 Volcengine 生态的依赖,比如默认推荐的模型和 embedding 都是 Doubao。如果你使用其他云服务商,可能需要额外配置。项目最近更新频繁,v0.4.17 在 2026 年 8 月发布,说明开发活跃,但版本迭代快也意味着 API 可能不稳定,升级时需要关注 changelog。

编辑结论

OpenViking 适合那些需要为 Agent 构建长期上下文、且愿意接受 AGPL-3.0 许可约束的团队,尤其是已在火山引擎生态内或使用 Doubao 系列模型的项目。它不适合追求完全自主可控、需要将上下文数据库嵌入闭源产品中的场景。在采用前,应先在 OpenViking Studio 中验证其检索质量,并检查你使用的模型和 embedding 是否兼容。同时,由于项目迭代较快,需评估维护成本:版本更新可能引入 API 变化,而 AGPL 许可要求衍生作品开源,这可能与商业计划冲突。最终判断:OpenViking 的目录式上下文设计在可观测性上有明显优势,但许可和依赖特定云服务的特性是必须先解决的问题。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记