网易首页 > 网易号 > 正文 申请入驻

2900人收藏!字节火山开源OpenViking,文件系统管Agent上下文

0
分享至

现在的 AI Agent 开发,真的是越来越卷了。

前有 OpenClaw 2天狂揽10万Star,后有港大开源的 ClawWork 让 AI 自己赚钱养活自己。

看起来 AI Agent 的赛道已经足够热闹,但有一个核心问题,却始终没有得到很好的解决:

上下文管理。

这不是什么新问题,但绝对是个让人头疼的大问题。当你的 Agent 需要长期运行,需要记住用户偏好、调用历史、处理复杂任务时,上下文就会像滚雪球一样越滚越大。

塞进去吧,token费用吓死人;截断吧,重要信息说丢就丢。

怎么办?传统RAG表示:我尽力了。

就在最近,字节跳动火山引擎(Volcengine) 低调开源了一个名为OpenViking的重磅项目。



一个专为 AI Agent 设计的上下文数据库,它把这个问题用了很好的处理思路给解决了。

这个项目没有走传统RAG的老路,而是用了一个非常巧妙的思路:文件系统范式

目前已在 GitHub 收获2.9K收藏量!




一、项目背景

在说 OpenViking 之前,得先搞清楚传统方案到底哪里出了问题。

  • 碎片化:记忆写在代码里,资源存在向量数据库中,技能分散在各个模块。
  • 成本高:Agent运行久了,上下文越来越多。简单粗暴地截断或压缩?不好意思,重要信息全丢了。全部塞进去?抱歉,token费用了解一下。
  • 检索差:传统RAG用扁平存储,没有全局视图,想精准找到需要的上下文,比登天还难。
  • 黑盒子:整个检索链路完全不可观测,出了Bug你都不知道去哪找问题。
  • 不迭代:现有记忆只记录用户对话,根本没有Agent任务相关的记忆沉淀,用过就忘。

这些问题叠加在一起,AI Agent 的上下文管理简直就是一个"地狱级"副本。

OpenViking的出现,就是为了打破这个困局。

二、项目简介

OpenViking是字节火山引擎开源的一款专为 AI Agent 设计的上下文数据库。



它的核心思路非常巧妙:用文件系统范式来管理上下文

简单来说,就是让开发者像管理本地文件一样来管理Agent的:

  • 记忆(Memory)
  • 资源(Resources)
  • 技能(Skills)

不用再学习复杂的向量数据库操作,不用再去理解各种抽象概念。建文件夹、拖文件、搜索——一切都是那么熟悉,它有层级、有路径、有语义组织。

这就是OpenViking定义的"极简上下文交互范式"。

三、五大核心亮点

1、文件系统管理范式 → 终结碎片化

把记忆、资源、技能全部统一到一个虚拟文件系统里。

  • 记忆可以存在不同的文件夹
  • 资源文件就像你的Word、Excel
  • 技能就是可执行的程序模块
  • 同时支持目录层级结构,想怎么组织就怎么组织

2、分层上下文按需加载 → 大幅降低Token消耗

L0/L1/L2三层结构设计:

L0:最核心、最常用的信息,常驻内存。

L1:次重要的信息,按需加载。

L2:大量历史信息,用时再读取。

这种设计太重要了——以前不管有用没用,所有上下文都得塞进Prompt里,token成本蹭蹭涨。现在好了,真正需要的才加载,大幅节省了成本。

3、目录递归检索 → 精准定位上下文

传统RAG只会简单的语义匹配,OpenViking直接玩起了"目录定位+语义搜索"的组合拳:

  • 目录路径定位
  • 递归查找
  • 语义融合
  • 精准召回

这种方式既有文件系统的精准定位,又有语义搜索的灵活性,检索效果直接提升了好几个档次!

4、可视化检索轨迹 → 彻底告别黑盒子

这一点是很多 RAG 系统没有的。

OpenViking 支持可视化目录检索轨迹。

你可以看到:

  • Agent 从哪个目录开始
  • 递归进入了哪些子路径
  • 为什么加载某个资源
  • 检索链路如何展开

5、会话自动管理 → Agent越用越聪明

OpenViking 还做了一件更高级的事:自动压缩会话历史

包括:对话内容、工具调用、资源引用、冗余信息。

并会提取长期记忆。

用过的知识、解决过的问题,自动沉淀下来。下次遇到类似场景,直接调取沉淀经验!

四、快速上手

第一步:OpenViking 安装

OpenViking 有两种安装方式,推荐用Python包安装:

pip install openviking

如果你想试试Rust CLI(可选),也可以这样装:

curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash

第二步:模型准备

OpenViking需要两种模型能力:

  • VLM模型:用于图像和内容理解
  • Embedding模型:用于向量化和语义检索

好消息是,OpenViking支持超多模型提供商,你想用哪个就用哪个:

提供商

模型

获取API Key的地方

火山引擎

doubao

Volcengine Console

OpenAI

gpt

OpenAI Platform

Anthropic

claude

Anthropic Console

DeepSeek

deepseek

DeepSeek Platform

Google

gemini

Google AI Studio

月之暗面

kimi

Moonshot Platform

智谱AI

glm

BigModel

通义千问

qwen

DashScope Console

MiniMax

minimax

MiniMax Platform

OpenRouter

任意模型

OpenRouter

vLLM

本地模型

最贴心的是,OpenViking用了Provider Registry来统一管理模型访问,系统会根据模型名字自动检测提供商,切换起来超级丝滑!

第三步:配置模型

不同的提供商有不同的配置方式,需要创建配置文件 ~/.openviking/ov.conf。

{"embedding": {"dense": {"api_base" : "",   // API 服务端点地址"api_key"  : "",   // 模型服务的 API 密钥"provider" : "",  // 提供商类型(volcengine 或 openai)"dimension": 1024,               // 向量维度"model"    : ""      // Embedding 模型名称(如 doubao-embedding-vision-250615 或 text-embedding-3-large)},"vlm": {"api_base" : "",     // API 服务端点地址"api_key"  : "",     // 模型服务的 API 密钥"provider" : "",    // 提供商类型(volcengine 或 openai)"model"    : ""        // VLM 模型名称(如 doubao-seed-1-8-251228 或 gpt-4-vision-preview)}

给大家举几个常用的例子:

火山引擎(豆包)配置:

{"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-250615"},"vlm": {"api_base" : "https://ark.cn-beijing.volces.com/api/v3","api_key"  : "your-volcengine-api-key","provider" : "volcengine","model"    : "doubao-seed-1-8-251228"}

如果你想用本地模型也没问题,通过vLLM就能跑:

# 启动vLLM服务器vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000

然后这样配置:

{"vlm": {"provider": "vllm","model": "meta-llama/Llama-3.1-8B-Instruct","api_base": "http://localhost:8000/v1"}

第四步:开始使用

创建示例脚本example.py:

import openviking as ov# Initialize OpenViking client with data directoryclient = ov.SyncOpenViking(path="./data")try:# Initialize the clientclient.initialize()# Add resource (supports URL, file, or directory)add_result = client.add_resource(path="https://raw.githubusercontent.com/volcengine/OpenViking/refs/heads/main/README.md"root_uri = add_result['root_uri']# Explore the resource tree structurels_result = client.ls(root_uri)print(f"Directory structure:\n{ls_result}\n")# Use glob to find markdown filesglob_result = client.glob(pattern="**/*.md", uri=root_uri)if glob_result['matches']:content = client.read(glob_result['matches'][0])print(f"Content preview: {content[:200]}...\n")# Wait for semantic processing to completeprint("Wait for semantic processing...")client.wait_processed()# Get abstract and overview of the resourceabstract = client.abstract(root_uri)overview = client.overview(root_uri)print(f"Abstract:\n{abstract}\n\nOverview:\n{overview}\n")# Perform semantic searchresults = client.find("what is openviking", target_uri=root_uri)print("Search results:")for r in results.resources:print(f"  {r.uri} (score: {r.score:.4f})")# Close the clientclient.close()except Exception as e:print(f"Error: {e}")

然后运行脚本:

python example.py

看到如下输出,就说明运行成功了!

Directory structure:Content preview: ...Wait for semantic processing...Abstract:Overview:Search results:viking://resources/... (score: 0.8523)...

当然如果嫌本地麻烦,火山引擎也提供了云端部署方式,将 OpenViking 作为独立 HTTP 服务运行,以便为你的 AI Agent 提供持久化、高性能的上下文支持。

详细部署方式可参考这个文档:https://github.com/volcengine/OpenViking/blob/main/docs/zh/getting-started/03-quickstart-server.md
五、写在最后

OpenViking这个项目真的很有创意,它用一个大家最熟悉的文件系统范式,就把AI Agent上下文管理的所有痛点都解决了。

就像当年 Linux 用一切皆文件的理念改变了操作系统一样,OpenViking 用一切皆文件的理念重新定义了 AI Agent 的上下文管理。

如果你正在做 AI Agent 开发,或者被上下文管理的问题搞得头疼,OpenViking 非常值得体验!

GitHub:

https://github.com/volcengine/OpenViking

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
别克官宣:纯电MPV至境世家开启预售!3月17日上市

别克官宣:纯电MPV至境世家开启预售!3月17日上市

网上车市
2026-03-02 18:37:23
如今黄河已成悬河,为啥不让挖泥船把泥沙清走,让黄河整体下移?

如今黄河已成悬河,为啥不让挖泥船把泥沙清走,让黄河整体下移?

天下十三洲猎奇
2026-03-01 00:21:41
女子回湖北婆家过年,车被妯娌砸稀烂,报警后绝不和解,结局爽了

女子回湖北婆家过年,车被妯娌砸稀烂,报警后绝不和解,结局爽了

离离言几许
2026-02-27 21:13:58
爱因斯坦:上帝不会掷骰子,他到底想表达什么?

爱因斯坦:上帝不会掷骰子,他到底想表达什么?

宇宙时空
2026-03-01 21:40:03
六十年前三线建设曾被质疑,如今看来,毛主席的决策显现深远智慧

六十年前三线建设曾被质疑,如今看来,毛主席的决策显现深远智慧

老踝是个手艺人
2026-02-23 17:26:29
为什么美国、日本第一时间就知道中国的决策、军事及重大的工程等

为什么美国、日本第一时间就知道中国的决策、军事及重大的工程等

越过海面
2026-03-02 09:54:46
二野军政委回乡探亲,家中空无一人,打听后才知妻儿已被村长卖掉

二野军政委回乡探亲,家中空无一人,打听后才知妻儿已被村长卖掉

诺言卿史录
2026-03-02 09:02:40
汪小菲窝里横!直播说:我知道我妈对我好,她不会和我生气的!

汪小菲窝里横!直播说:我知道我妈对我好,她不会和我生气的!

小娱乐悠悠
2026-03-02 13:39:43
63岁刘德华晒一日三餐,网友:太狠了,难怪看起来像40岁

63岁刘德华晒一日三餐,网友:太狠了,难怪看起来像40岁

独舞独舞
2026-03-01 20:21:49
伊朗称若能源设施遭袭 该地区所有国家油气设施都将被毁

伊朗称若能源设施遭袭 该地区所有国家油气设施都将被毁

财联社
2026-03-02 01:58:12
F-15被击落?林肯号航母遭导弹“点名”?伊朗的全面反击开始了!

F-15被击落?林肯号航母遭导弹“点名”?伊朗的全面反击开始了!

近史博览
2026-03-03 00:41:35
中美冲突升级的下一步,一定是军事较量,我们要做好全面准备

中美冲突升级的下一步,一定是军事较量,我们要做好全面准备

曾经年少
2025-04-14 16:03:33
为什么说没妈的孩子像根草?网友:有事出门,内衣裤子一周没换

为什么说没妈的孩子像根草?网友:有事出门,内衣裤子一周没换

另子维爱读史
2026-03-02 22:45:12
什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

泠泠说史
2025-10-30 15:20:45
快船大胜!小卡23+3+5,赛后鲍尔默鼓掌庆祝庆祝,小卡抱住穆雷

快船大胜!小卡23+3+5,赛后鲍尔默鼓掌庆祝庆祝,小卡抱住穆雷

担酒
2026-03-02 12:35:52
24小时拿下制空权,投弹超2000枚,以军战机在伊朗上空横行

24小时拿下制空权,投弹超2000枚,以军战机在伊朗上空横行

几人尽弃
2026-03-03 00:37:03
上海中心,又一枚王炸地块要开了

上海中心,又一枚王炸地块要开了

地产K线官方
2026-03-02 20:37:12
“大学女儿非要买LV”视频火了,网友:穷人穿上龙袍也不像太子

“大学女儿非要买LV”视频火了,网友:穷人穿上龙袍也不像太子

妍妍教育日记
2026-02-25 21:18:14
1969年,毛主席下令:放两个原子弹,不要对外公布,怎么回事?

1969年,毛主席下令:放两个原子弹,不要对外公布,怎么回事?

李哥三观很正
2024-08-17 11:25:30
房子“收购大潮”来了?已确定,2026年开始,2类房产或迎收购潮

房子“收购大潮”来了?已确定,2026年开始,2类房产或迎收购潮

林子说事
2026-03-02 16:05:50
2026-03-03 01:55:00
我不叫阿哏
我不叫阿哏
分享有趣、有用的故事!
321文章数 6478关注度
往期回顾 全部

科技要闻

苹果中国官网上线iPhone 17e,4499元起

头条要闻

中国留学生:很多人得知哈梅内伊身亡后 决定尽快撤离

头条要闻

中国留学生:很多人得知哈梅内伊身亡后 决定尽快撤离

体育要闻

“想要我签名吗” 梅西逆转后嘲讽对手主帅

娱乐要闻

李亚鹏与哥哥和解 只有一条真心话短信

财经要闻

油价飙升 美伊冲突将如何搅动全球经济

汽车要闻

国民SUV再添一员 瑞虎7L静态体验

态度原创

时尚
本地
房产
手机
健康

今年春天一定要拥有的4件衣服,太好看了!

本地新闻

津南好·四时总相宜

房产要闻

方案突然曝光!海口北师大附校,又有书包大盘杀出!

手机要闻

iPhone 17e发布:4499元起,e系列首次搭载灵动岛

转头就晕的耳石症,能开车上班吗?

无障碍浏览 进入关怀版