OpenViking项目全景解读:一个数据库统一Agent记忆、知识RAG与技能
【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking
OpenViking 是面向 AI Agent 的开源上下文数据库(Context Database):它把 Agent 的**记忆(Memory)、知识 RAG(Resource)与技能(Skill)**统一放进一棵viking://虚拟目录树,内容写入时自动生成分层的摘要/概览/详情三层,按需加载、节省 token,每次检索都留下可回放、可调试的目录轨迹。对新手来说最大的好处是:不再需要同时维护一个向量库、一个记忆服务和一堆散落各处的技能文件——一个数据库全部搞定。
1、为什么 Agent 需要专门的"上下文数据库"?
构建 Agent 时,开发者普遍卡在 5 个痛点上:
| 痛点 | 表现 |
|---|---|
| 🔸 上下文碎片化 | 记忆在代码里、资源在向量库、技能散落各处,难以统一管理 |
| 🔸 上下文猛增 | 长程任务不断产出新上下文,简单截断/压缩必然丢信息 |
| 🔸 检索效果差 | 传统 RAG 平铺式存储,缺乏全局视野,难理解完整语境 |
| 🔸 过程不可观察 | 检索链路像黑箱,结果不对时无法定位原因 |
| 🔸 记忆迭代有限 | 只记录"用户说过什么",缺少 Agent 自身的任务经验 |
OpenViking 就是为解决这些问题而生的:用文件系统范式 + 分层加载 + 可观察检索 + 会话自迭代四件套一次性解决。
2、核心设计:一棵"虚拟文件系统"装下记忆、知识与技能
OpenViking 把三类上下文统一抽象为目录结构,每个条目都有唯一的viking://URI,Agent 可以像开发者操作文件一样用ls、tree、find、grep来确定性地定位内容:
viking:// ├── resources/ # 资源:项目文档、代码库、网页等(知识 RAG) │ └── my_project/docs/ └── user/{user_id}/ ├── memories/ # 用户记忆:偏好、习惯、事件 ├── skills/ # 技能:可调用的工具、MCP └── sessions/ # 原始会话| 上下文类型 | 存什么 | 特点 |
|---|---|---|
| Resource(资源) | 文档、代码、FAQ 等知识 | 长期、相对静态 |
| Memory(记忆) | 用户偏好、Agent 学习到的经验 | 长期、动态更新 |
| Skill(技能) | 工具、MCP 等可调用能力 | 长期、静态 |
在官方 Web Studio 里,这棵树就是可视化呈现的——左侧是上下文目录树,中间是每个节点的 L0 摘要与 L1 概览,右侧终端可以直接执行检索命令:
💡 设计要点:向量检索负责"找到",文件路径负责"定位",两者结合让 Agent 的上下文操作从"碰运气"变成"确定性"。
3、L0/L1/L2 三层加载:任务需要多深,就加载多深
把海量内容一次性塞进提示词,既贵又容易超出模型窗口。OpenViking 在写入时就自动把内容处理成三个层级:
| 层级 | 名称 | 默认上限 | 用途 |
|---|---|---|---|
| L0 | 摘要(.abstract.md) | 约 256 字符 | 向量搜索、快速判断相关性 |
| L1 | 概览(.overview.md) | 约 4000 字符 | Rerank 精排、规划阶段导航 |
| L2 | 详情 | 无统一上限 | 完整原文,真正需要时才读 |
关键在于:每个目录都自带 L0/L1 sidecar,Agent 在读完整文件之前就能判断"这个目录跟当前任务相不相关",从而大幅减少无效 token 消耗。这是它相对传统 RAG"一刀切切片"的本质区别。
4、检索机制:从"黑盒"到"可观察"
OpenViking 采用两阶段检索,流程是:
- 意图分析:LLM 把查询拆成 0–5 个带类型的子查询(记忆/资源/技能);
- 初始定位:向量检索先锁定得分最高的目录;
- 精细探索:在该目录下二次检索,高分结果进入候选集;
- 递归下探:沿子目录逐层重复上述过程;
- Rerank 汇总:标量过滤 + 模型重排,返回带语境的完整结果。
更难得的是可观察性:每次检索都会记录"搜过哪些目录、命中了哪条 URI、各阶段耗时"的完整轨迹,结果不对时能直接看到它出自哪条路径:
5、会话自动沉淀:让 Agent"越用越聪明"
会话提交(commit)后,OpenViking 会异步分析对话结果与用户反馈,把有价值的信息提取成长期记忆,形成"记忆自迭代闭环"。内置记忆类型开箱即用:
| 用途 | 内置类型 |
|---|---|
| 用户与环境理解 | profile、preferences、entities、events |
| 助手身份与连续性 | identity、soul |
| 任务执行与学习 | cases、trajectories、experiences、tools、skills |
也就是说,它不只是"记住用户说过什么",还能沉淀Agent 自己的任务经验,让同类任务下次做得更好。
6、快速开始:5 分钟部署你的 OpenViking 上下文数据库
环境要求 Python 3.10+,安装启动只需三步(详细步骤见docs/zh/getting-started/02-quickstart.md):
pip install openviking --upgrade openviking-server init # 交互式向导:选模型提供商、生成 ov.conf openviking-server doctor # 校验配置,不启动服务也能体检 openviking-server # 启动服务init支持火山引擎、OpenAI、Kimi、GLM 和本地 Ollama 等多种提供商,选 Ollama 时还能自动检测并安装运行时。doctor会逐项检查配置、Python 版本、模型连通性和磁盘空间,全部 PASS 即可放心启动:
服务起来后,客户端命令ov就能体验"文件式"上下文操作:
ov add-resource https://github.com/volcengine/OpenViking --wait ov ls viking://resources/ ov find "what is openviking"⚙️ OpenViking 需要两个模型能力:VLM(内容理解)+ Embedding(向量化)。以火山引擎为例,在控制台的"开通管理"中开通对应模型、创建 API Key 填入
ov.conf即可:
希望从源码构建或二次开发时,可克隆仓库:git clone https://gitcode.com/GitHub_Trending/op/OpenViking;生产部署推荐 Docker 官方镜像(docker-compose.yml已在仓库根目录提供,默认暴露1933端口与/studioWeb 界面)。
7、如何把 OpenViking 接入你的 Agent(MCP 一键配置)
OpenViking 把召回结果注入 Agent 上下文,并自动提交会话记忆。已适配的 Agent 包括:Claude Code、Codex、Cursor、Trae、OpenCode、OpenClaw、Hermes、pi、LangChain/LangGraph以及任意MCP 客户端。
以 Cursor 为例:打开 Settings → Tools & MCPs → "Add Custom MCP",粘贴配置中的 MCP JSON 并启用即可(完整步骤见docs/zh/agent-integrations/12-cursor.md):
自研系统则可直接调用 HTTP API(默认http://localhost:1933),或使用官方多语言 SDK:sdk/python/、sdk/typescript/、sdk/go/;LangChain 用户还可以参考integrations/langchain/中的集成实现。
8、VikingBot:在上下文数据库之上搭一个会聊天的智能体
想要"开箱即用的 Agent"而不是只搭基础设施?OpenViking 内置了VikingBot智能体框架——一条命令就能在服务器上附带启动 Bot 网关与控制台:
pip install "openviking[bot]" openviking-server --with-bot ov chat # 另开终端即可对话其源码位于bot/vikingbot/,包含通道(channels)、沙箱(sandbox)、技能(skills)、定时任务等完整模块,官方 Docker 镜像默认即随服务器一起启动。
9、实测数据:接入 OpenViking 前后的差距
官方评测(复现脚本在benchmark/目录)给出了相当直观的收益:
- 长对话用户记忆(LoCoMo):三种 Agent 接入 OpenViking 后准确率从原生的 24%–57% 提升到80%–83%,同时输入 token 减少34.3%–91.0%,查询时延降低58.45%–66.10%;
- 多轮 Agent 任务(tau2-bench):经验记忆让任务成功率在 Retail 场景提升6.87pp、Airline 场景提升11.87pp(同 LLM 无记忆对比)。
简单说:答案更准、token 更省、响应更快——这正是上下文数据库相对"裸奔 RAG"的核心价值。
10、项目结构速览:代码都放在哪
| 目录 | 内容 |
|---|---|
openviking/ | 服务端核心:retrieve/(层级检索)、session/(会话与记忆)、parse/(解析与 L0/L1 生成)、server/(HTTP API 与 Web 控制台) |
crates/ragfs | Rust 实现的虚拟文件系统内核 |
openviking_cli/ | Python 侧ov命令行工具 |
bot/vikingbot/ | VikingBot 智能体框架 |
web-studio/ | 可视化 Web 控制台前端 |
sdk/、integrations/ | Python / TypeScript / Go SDK 与 LangChain 集成 |
benchmark/ | LoCoMo、tau2 等评测复现脚本 |
docs/zh/ | 中文文档:概念、架构、部署、Agent 接入全收录 |
适合谁用:个人开发者想给自己的 Claude Code / Cursor 加"长期记忆";团队想在生产环境把 Agent 上下文作为独立 HTTP 服务统一托管(支持多租户、API Key、加密与指标采集);研究者则可以基于开源的 VikingMem 相关能力做记忆系统实验。
写在最后
OpenViking 把"Agent 记忆、知识 RAG、技能"三件事收敛进了一个类文件系统的上下文数据库:viking://统一寻址、L0/L1/L2 分层省 token、目录递归检索可观察、会话自动沉淀经验。如果你正在为 Agent 的上下文管理头疼,不妨先用pip install openviking花 5 分钟跑起来,再决定要不要把它纳入技术栈。
【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考