---
url: /openviking/introduction.md
description: >-
  OpenViking 是字节火山引擎开源的 AI Agent 上下文数据库，用 viking:// 虚拟文件系统统一管理记忆、资源与技能，解决 RAG
  碎片化与 Token 成本痛点，让 Agent 越用越聪明。
---

# 认识 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 用户极其友好。先装：

```bash
pip install openviking
```

起一个本地服务（本地模式用 flat 索引，开箱即用、带崩溃恢复）：

```bash
openviking server start
```

然后用 Python 把资料喂进去，并用 `viking://` 寻址：

```python
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、正被上下文治理卡脖子，它会是一个很顺手的"大脑底座"。

更多开源技术干货和学习资料，关注公众号「遇码」，领取专属福利。
