一天一个开源项目(第216篇):OpenViking - 给 AI Agent 装上可自进化的上下文数据库

文章来源声明: 原文作者:冬奇Lab; 来源站点:掘金; 原文链接:https://juejin.cn/post/7684443722588438564; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

适合重度使用 Claude Code、Cursor 的开发者与团队,用一套 viking:// 命名空间解决跨会话失忆与知识共享,Token 成本与准确率双赢,值得优先试用。

引言 --

"Self-evolving Context Database for AI Agents."

这是"一天一个开源项目"系列的第 216 篇文章。今天带你了解的项目是 OpenViking

你有没有遇到过这个问题:每次打开 Claude Code 或 Cursor,它对你的项目、你的习惯、上次踩过的坑一无所知,必须重头介绍。每次对话结束,所有的上下文灰飞烟灭。

这不是模型的问题,这是上下文管理架构的问题。

OpenViking 就是来解决这件事的。它是火山引擎(字节跳动旗下云服务)开源的一个 Agent 上下文数据库,核心设计理念是:把 Agent 的记忆、知识库、技能统一组织成一个类似文件系统的结构,用 viking:// 协议寻址,让 Agent 像操作文件一样管理自己的上下文,并在每次会话结束后自动提炼经验写入记忆。

上线不到 9 个月,GitHub Stars 已突破 36,000,并有三篇发表于 VLDB 2026、ICDE 的学术论文支撑其核心设计——这是一个有扎实研究基础的工程项目。

你将学到什么

  • OpenViking 用虚拟文件系统统一管理三类 Agent 上下文的设计思想
  • L0/L1/L2 三层上下文加载机制如何大幅降低 Token 消耗
  • 会话提交后的记忆自动提炼与合并流程
  • 与 Claude Code、Cursor、DSH 等主流 Agent 的集成方式
  • Benchmark 数据:LoCoMo 准确率从 57% 提升到 80%,Token 消耗减少 34-91%

前置知识

  • 了解 AI Agent 的基本工作方式(LLM + 工具调用)
  • 知道 RAG(检索增强生成)是什么
  • Python 基础环境(本地部署需要)

项目背景

项目简介

OpenViking 把 AI Agent 需要的所有上下文组织成一个虚拟文件系统,根路径是 viking://

viking:<span>//</span>
├── resources/              <span># 知识资源:项目文档、代码仓库、网页等</span>
│   └── my_project/
│       ├── docs/
│       └── src/
└── user/
    └── {user_id}/
        ├── memories/       <span># 记忆:用户偏好、历史经验</span>
        │   └── preferences/
        │       ├── writing_style
        │       └── coding_habits
        ├── resources/      <span># 用户私有资源</span>
        ├── skills/         <span># 技能:可复用的任务执行模式</span>
        │   ├── search_code
        │   └── analyze_data
        └── peers/          <span># 其他 Agent 或用户的上下文</span>

Agent 可以用 lstreereadwrite 这些熟悉的文件操作命令浏览和管理上下文,也可以用 findsearch 进行语义检索。

作者/团队介绍

  • 开发者:火山引擎(Volcengine)AI 团队,字节跳动旗下
  • 研究支撑:背后有专门的 VikingMem 研究团队,成果发表于 VLDB 2026、ICDE 等顶级数据库会议
  • 商业版:火山引擎提供 SaaS 托管版,字节旗下 BytePlus 计划提供海外版
  • 创建时间:2026 年 1 月

项目数据

  • ⭐ GitHub Stars: 36,000+
  • 🍴 Forks: 2,815
  • 📦 最新版本: v0.4.19(2026-09-08)
  • 📄 License: AGPLv3(CLI 和示例为 Apache 2.0)
  • 🌐 官网: openviking.ai
  • 🐍 语言:Python(后端)+ Rust(CLI 核心)

主要功能

核心作用

OpenViking 解决的是 Agent 跨会话失忆 的问题。它做了三件事:

  1. 统一上下文存储:记忆(Memory)、知识(Resources)、技能(Skills)三类上下文用同一套 viking:// 文件系统寻址,Agent 不需要分别对接三套系统
  2. 按需加载上下文:L0/L1/L2 三层机制让 Agent 先看摘要,再决定要不要读全文,大幅减少无效 Token 消耗
  3. 会话自动进化:对话结束后 OpenViking 在后台提炼经验,更新用户记忆,下次对话时 Agent 已经"记住"了上次的内容

使用场景

  1. 跨会话编程助手记忆

    • 你在 Claude Code 里告诉它"我们的项目用 pnpm,不用 npm",OpenViking 把这个偏好存入记忆,下次开新会话时自动注入,不需要重复说明。
  2. 私有知识库 RAG

    • 把公司文档、代码仓库、设计规范导入 viking://resources/,Agent 在回答问题前先在知识库里检索,给出基于真实文档的答案。
  3. 技能(Skills)的积累与复用

    • Agent 每次成功完成一类任务(如"分析竞品"、"写单元测试"),执行步骤可以被提炼为 Skill,下次遇到同类任务直接复用,效果越来越好。
  4. 多 Agent 共享上下文

    • 同一个 viking:// 命名空间可以在多个 Agent 之间共享,一个 Agent 更新的知识,另一个 Agent 立刻可以检索到。
  5. 企业级知识管理

    • 多用户隔离(viking://user/{user_id}/),团队知识放 viking://resources/,私人笔记放用户命名空间,权限自动分离。

快速开始

<span># 安装(需要 Python 3.10+)</span>
pip install openviking --upgrade

<span># 初始化配置(选择 LLM 和 Embedding 提供商)</span>
openviking-server init
<span># 支持:Volcengine、OpenAI、Kimi、GLM、Ollama 等</span>

<span># 检查配置和连通性</span>
openviking-server doctor

<span># 启动服务</span>
openviking-server

服务启动后,用 ov CLI 操作上下文:

<span># 查看服务状态</span>
ov status

<span># 导入一个 GitHub 仓库作为知识资源</span>
ov add-resource https://github.com/volcengine/OpenViking

<span># 等待索引任务完成</span>
ov task status TASK_ID

<span># 浏览知识库结构</span>
ov <span>ls</span> viking://resources/
ov tree viking://resources/volcengine -L 2

<span># 语义检索</span>
ov find <span>"openviking 的记忆提炼机制是怎么工作的"</span>

<span># 全文搜索</span>
ov grep <span>"context layers"</span> --uri viking://resources/volcengine/OpenViking/docs

启用 VikingBot(内置 Agent)

pip install <span>"openviking[bot]"</span>
openviking-server --with-bot

<span># 在另一个终端直接对话</span>
ov chat

Docker 一键部署(含 VikingBot)

docker run -p 7860:7860 \
  -e OPENVIKING_LLM_PROVIDER=openai \
  -e OPENAI_API_KEY=your-key \
  volcengine/openviking:latest

核心特性

  1. 虚拟文件系统(viking:// URI)

    • 所有上下文都有唯一 URI,viking://resources/my_project/docs/apiviking://user/alice/memories/coding_habits 一样简单直接,支持目录级检索和权限控制。
  2. L0/L1/L2 三层上下文加载

    • L0(摘要):一句话,用于快速判断相关性
    • L1(概览):核心信息和使用场景,用于规划
    • L2(全文):完整原始内容,按需加载
    • Agent 先看 L0/L1 决策,只有真正需要时才读 L2,避免上下文窗口被无关内容塞满。
  3. 会话自动记忆提炼

    • 对话结束后执行 ov session commit,OpenViking 在后台分析对话,提取有价值的信息,与现有记忆比对后决定:新建、合并还是跳过。记忆策略可配置。
  4. 目录感知向量检索(TrieHI)

    • 检索时可以限定范围:ov find "问题" --uri viking://resources/my_project/,先在目录树中定位候选目录,再做向量相似度排序,比全库检索更精准、更快。
  5. 广泛的 Agent 集成

    • 原生集成:Claude Code、Cursor、Codex、TRAE(Hooks + MCP)
    • 框架集成:LangChain、DeerFlow、DSH
    • 通用集成:MCP 协议(任何支持 MCP 的 Agent 都可接入)
  6. ov compile:上下文编译

    • 用 VikingBot 把原始素材(笔记、对话、文档)编译成结构化输出:Wiki、知识图谱、研究报告。
  7. 多租户与权限隔离

    • 支持用户账号体系,个人记忆和技能在 viking://user/{id}/ 下隔离,团队知识在 viking://resources/ 下共享,支持资源级 ACL。

项目优势

对比项OpenVikingMem0Zep
**上下文类型**记忆 + 知识库 + 技能,三合一主要是记忆主要是记忆
**组织方式**虚拟文件系统(目录结构)图数据库混合存储
**检索方式**目录感知向量检索向量 + 图检索向量检索
**Token 优化**L0/L1/L2 三层按需加载有限
**Agent 集成**Claude Code/Cursor/DSH 等原生集成API 为主API 为主
**自进化**会话自动提炼,记忆合并策略支持有限
**学术背书**VLDB 2026、ICDE 论文
**开源协议**AGPLv3Apache 2.0Apache 2.0

项目详细剖析

1. 三层上下文加载:解决 Token 浪费问题

OpenViking 最核心的工程创新是 L0/L1/L2 分层加载。传统 RAG 的问题是:检索回来一大段文本,不管有没有用都塞进 context window,Token 大量浪费,且真正有用的内容被淹没。

OpenViking 的解法:每个语义处理过的目录,都自动生成两个摘要文件:

viking:<span>//resources/my_project/</span>
├── .<span>abstract</span>.md        <span># L0:一句话摘要,极小</span>
├── .overview.md        <span># L1:结构说明和关键点,中等</span>
└── docs/
    ├── .<span>abstract</span>.md
    ├── .overview.md
    └── api/
        ├── auth.md     <span># L2:完整内容,按需读取</span>
        └── endpoints.md

Agent 决策流程变成:

问题到来
  ↓
读 L0 摘要(极少 Token)→ 不相关?跳过
  ↓
读 L1 概览(少量 Token)→ 需要细节?
  ↓
读 L2 全文(按需)

Benchmark 数据显示:使用 OpenViking 后,输入 Token 消耗减少了 34.3%–91.0%,同时 LoCoMo 记忆准确率从原生的 24–57% 提升到 80–83%。

2. 会话记忆的自动提炼机制

这是 OpenViking 让 Agent "越用越聪明"的关键机制,背后是 VikingMem(发表于 VLDB 2026 的研究成果)。

对话进行中
  ↓
用户执行 ov session commit(或自动触发)
  ↓
后台记忆提炼流程:
<span>  1.</span> 分析对话内容,识别有价值的信息片段
<span>  2.</span> 提取候选记忆(用户偏好、踩过的坑、成功的模式等)
<span>  3.</span> 与现有记忆库对比:
<span>     -</span> 全新信息 → 创建新记忆节点
<span>     -</span> 补充/修正已有信息 → 合并
<span>     -</span> 冗余 → 跳过
  ↓
记忆写入 viking://user/{id}/memories/
  ↓
下次会话开始时自动注入相关记忆

记忆策略可以自定义:什么类型的信息值得保留、合并的阈值、记忆的过期规则等。

3. 与 Claude Code 的集成:Hooks + MCP 双模式

OpenViking 对 Claude Code 的集成是目前最完整的,采用两种机制协同:

MCP 工具:给 Claude Code 提供 ov_findov_readov_write 等工具,让 Claude 可以主动查询和写入上下文。

<span>// Claude Code MCP 配置</span>
<span>{</span>
  <span>"mcpServers"</span><span>:</span> <span>{</span>
    <span>"openviking"</span><span>:</span> <span>{</span>
      <span>"command"</span><span>:</span> <span>"ov"</span><span>,</span>
      <span>"args"</span><span>:</span> <span>[</span><span>"mcp-server"</span><span>]</span><span>,</span>
      <span>"env"</span><span>:</span> <span>{</span><span>"OPENVIKING_SERVER"</span><span>:</span> <span>"http://localhost:7860"</span><span>}</span>
    <span>}</span>
  <span>}</span>
<span>}</span>

Hooks:在 Claude Code 的 PreToolUseStop 事件钩入,实现:

  • 对话开始时自动注入相关记忆(无需 Claude 主动查询)
  • 对话结束时自动触发记忆提炼
<span>// Claude Code hooks 配置(.claude/settings.json)</span>
<span>{</span>
  <span>"hooks"</span><span>:</span> <span>{</span>
    <span>"PreToolUse"</span><span>:</span> <span>[</span><span>{</span>
      <span>"matcher"</span><span>:</span> <span>".*"</span><span>,</span>
      <span>"hooks"</span><span>:</span> <span>[</span><span>{</span><span>"type"</span><span>:</span> <span>"command"</span><span>,</span> <span>"command"</span><span>:</span> <span>"ov recall --inject"</span><span>}</span><span>]</span>
    <span>}</span><span>]</span><span>,</span>
    <span>"Stop"</span><span>:</span> <span>[</span><span>{</span>
      <span>"hooks"</span><span>:</span> <span>[</span><span>{</span><span>"type"</span><span>:</span> <span>"command"</span><span>,</span> <span>"command"</span><span>:</span> <span>"ov session commit --auto"</span><span>}</span><span>]</span>
    <span>}</span><span>]</span>
  <span>}</span>
<span>}</span>

这个双模式设计的精妙之处:MCP 给 Claude 主动检索的能力,Hooks 负责透明地注入记忆和保存经验,两者结合让记忆管理对用户几乎无感。

4. TrieHI:目录感知的向量检索索引

OpenViking 的向量检索不是简单的全库相似度搜索,而是目录感知的 TrieHI 索引(论文发表于 ICDE)。

核心思路:向量数据库的索引结构感知 viking:// 的目录树层次,检索时:

  1. 先在目录层级定位候选范围(哪几个子目录最相关)
  2. 再在这些目录内做精细的向量相似度排序

效果:限定范围的检索(ov find "问题" --uri viking://resources/my_project)比全库检索精准得多,且因为搜索空间缩小,延迟也显著降低。Benchmark 显示检索延迟降低了 58.45–66.10%

5. 研究背书:三篇顶会论文

OpenViking 是少数有学术论文支撑的开源 Agent 工具:

  • VikingMem(VLDB 2026):事件驱动的长期记忆提炼与合并机制,是 OpenViking 记忆系统的理论基础
  • 目录感知向量检索(ICDE):TrieHI 索引设计的形式化论证和实验评估
  • VikingRAG(arXiv 2026,已投稿):结合文档结构的 RAG 检索优化,减少 Token 消耗同时保持答案质量

这意味着 OpenViking 的核心设计不是工程层面的经验积累,而是经过严格实验验证的方法论。


项目地址与资源

官方资源

相关资源


总结与展望

核心要点回顾

  1. 虚拟文件系统统一三类上下文:记忆、知识资源、技能都用 viking:// 寻址,一套接口管理所有 Agent 上下文
  2. L0/L1/L2 分层加载:先看摘要再决定是否读全文,Token 消耗减少 34–91%,是目前最系统的上下文 Token 优化方案
  3. 会话自动记忆提炼:对话结束后自动提炼经验写入记忆,Agent 越用越聪明,有 VLDB 2026 论文背书
  4. 广泛的 Agent 集成:原生支持 Claude Code、Cursor、Codex、DSH,以及 MCP 通用接入
  5. 36,000+ Stars,2026 年 1 月上线:增长速度极快,是目前 Agent 记忆领域最受关注的开源项目

适用人群

  • 重度 Claude Code / Cursor 用户:项目越来越大,频繁给 Agent 解释背景,接入 OpenViking 后 Agent 自动记住你的偏好和项目上下文
  • AI 应用开发者:构建需要跨会话状态管理的 Agent 应用,OpenViking 提供了比 Mem0/Zep 更完整的上下文管理方案
  • 企业知识管理团队:需要把内部文档、代码、经验沉淀为 Agent 可检索的知识库
  • AI 研究者:对 Agent 记忆架构、RAG 优化、向量检索感兴趣,OpenViking 的三篇论文值得深读

一句话评价

OpenViking 是目前设计最系统、学术背书最扎实的 Agent 上下文数据库——它把"Agent 记忆管理"这个一直被当成配件的问题,升格为了一个值得认真工程化的核心基础设施。


欢迎访问 PrimeSkills —— 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页