认识 OpenViking:给 AI Agent 装上"有序大脑"的上下文数据库
你有没有过这种崩溃时刻:前一秒跟 AI 助理交代得清清楚楚"这个项目用 PostgreSQL、密码存在环境变量里、接口走 8080",下一秒它转头就问你"请问数据库连接信息是什么"。
这不是它笨,是它根本没有长期记忆。
传统做法是用 RAG(检索增强生成)把资料切块塞进向量库,但现实特别骨感:召回回来的是一堆碎片段,不是结构;要么把上下文窗口灌爆,要么粗暴截断丢掉关键信息;出了问题还不知道是召回烂还是排序烂。更要命的是——会话一结束,记忆全清零,下次又从零开始。
这就像你招了个记性只有 5 分钟的实习生,每天把同一句话重复八遍。
字节跳动火山引擎的 Viking 团队看不下去了,于 2026 年初开源了 OpenViking——一个专门给 AI Agent 设计的"上下文数据库"。到 2026 年 8 月 21 日,它刚发布 v0.4.16,并直接冲上 GitHub Agent 记忆类热榜,单日涨星近千。
文件系统,才是 Agent 上下文的终极形态。—— Manvs 团队(OpenViking 的设计理念与之不谋而合)
什么是 OpenViking
一句话:OpenViking 把 Agent 需要的"记忆、资源、技能"统一收进一个虚拟文件系统,让 Agent 像操作电脑文件夹一样管理自己的大脑。
它最核心的一招,是用 viking:// 协议把所有上下文组织成目录树:
viking://
├── resources/ # 文档、代码仓库、网页等外部资源
│ ├── docs/
│ ├── repos/
│ └── web/
├── user/
│ └── memories/ # 用户记忆
└── agent/
├── memories/ # Agent 自己的记忆
└── skills/ # Agent 沉淀的技能这意味着 Agent 不再是"问一句最像的段落是什么",而是可以确定性定位——比如直接读取 viking://resources/docs/api/auth.md 的 L1 概述。精确、可预测,不依赖玄学般的语义相似度。
它有什么特点
- 文件系统范式:记忆、资源、技能都变成可寻址的目录和文件,Agent 用
ls、find、tree就能定位,告别"向量碎片"。 - 三层上下文加载(L0/L1/L2):写入时自动分层——L0 摘要(约 100 token)常驻做快速筛选,L1 概览(约 2000 token)按需规划,L2 完整细节只在真正执行时才拉取。好比找资料先看书名目录,觉得相关再读章节摘要,确定有用才翻正文。
- 目录递归检索:先全局向量搜索找出 top-3 相关目录当"种子",再在目录内二次检索、递归进入子目录,并用分数传播(
final_score = 0.5 × 子节点分 + 0.5 × 父节点分)收敛,连续 3 轮不变就提前终止。 - 会话记忆自迭代:调一次
session.commit(),系统在后台异步分析本次对话的任务结果和反馈,自动更新user/memories/和agent/memories/,并把工具使用经验提炼进agent/skills/——越用越聪明。 - 可视化检索轨迹:每一步召回路径都能画出来,哪层目录漏了、哪步召回烂了,一眼看清,调试不再抓瞎。
- 双存储架构:VikingFS 之上做了 AGFS(存内容)+ VectorDB(存索引)的存储分离,底层向量引擎支持
local / http / volcengine / vikingdb四种 backend,本地用 flat 索引、云端自动建 hnsw 索引。 - 多语言、多模型后端:提供 Python / Rust / Go SDK,兼容 OpenAI、豆包、DeepSeek、Gemini、Ollama、LiteLLM 等几乎所有主流模型,并对外提供 HTTP 服务与 CLI 工具。
它真正有价值的不是"新概念",而是把 Agent 的上下文工程,从一组黑盒检索动作,拉到了可观察、可治理的工程层。
哪些公司在用、效果如何
OpenViking 由字节跳动火山引擎 Viking 团队发起和维护——这个团队此前就在云原生数据湖、向量引擎(VikingDB)上深耕,这次是把底层能力产品化成了 Agent 的"根目录"。
几个值得记住的真实数据点:
- 效果实测:基于 LoCoMo10 长程对话数据集,接入 OpenViking 后任务完成率提升 43%~49%,输入 Token 成本下降 83%~96%。省下的不是小钱,是实打实的成本结构。
- 框架协同:与 OpenClaw 等主流 Agent 框架做了原生协同;Claude Code 也侧面验证了"简单文件系统 + Bash 在某些场景下比复杂向量索引更好用"这件事。
- 生产级检索能力:底层 VikingDB 支持 Partition 子索引(多租户延迟优化)、Dense+Sparse 混合索引、后置过滤、以及图文混合多模态检索,比纯 Dense 在领域术语场景下更准。
说白了,如果你正卡在"Agent 能跑,但不稳、贵、难调"的阶段,这套架构值得认真评估。
初体验:五分钟跑起来
OpenViking 对 Python 用户极其友好。先装:
pip install openviking起一个本地服务(本地模式用 flat 索引,开箱即用、带崩溃恢复):
openviking server start然后用 Python 把资料喂进去,并用 viking:// 寻址:
from openviking import OpenViking
client = OpenViking.from_local("./my_agent_brain")
# 写入一份资源,自动拆成 L0/L1/L2 三层
client.write("viking://resources/docs/auth.md", open("auth.md").read())
# 像查文件一样检索
result = client.find("认证是怎么配置的?")
print(result.uri, result.layer)
# 会话结束,让记忆自动沉淀
session = client.new_session()
session.chat("帮我看看登录接口")
session.commit() # 后台异步提炼长期记忆,不阻塞当前会话
client.wait_processed()想接云端 VikingDB 做生产规模,把 backend 换成 volcengine 或 vikingdb 即可,上层代码几乎不用改。
进阶
OpenViking 不是银弹:它偏"高可用 + 最终一致"而非强一致,队列治理、参数调优(比如目录深度超过 5~6 层时建议配套 doubao-seed-rerank)、本地到云迁移都要靠团队自己补齐。但如果你做的是多步任务型 Agent、正被上下文治理卡脖子,它会是一个很顺手的"大脑底座"。
更多开源技术干货和学习资料,关注公众号「遇码」,领取专属福利。
