是的——全部内容都会完整复制到 Server 机器上,不是"只存索引"。
OpenViking 是数据库不是搜索引擎。它需要把原始内容存在自己这边才能切片、生成摘要、做向量化、按需返回 L2 全文。没有 Server 本地存储,整套机制就跑不起来。
01先纠正一个常见误解
很多人把 OpenViking 想成搜索引擎那种"只存索引"——这是错的。
✗ 错误想象
像 Google 那样的索引
Google 不存网页本身,只记录"这个关键词出现在哪个 URL"。你点搜索结果时是去原网站取内容。
如果 OpenViking 是这样:那 Server 上只有一堆 viking:// 链接和向量,原始内容还在你本地——但实际不是这样工作的。
✓ 实际情况
像 Notion / 网盘那样的存储
你把文档上传到 Notion,Notion 服务器上就有了完整副本——之后所有人查询、搜索都基于这个副本。原件丢了 Notion 上还在。
OpenViking 就是这个模式:你 add_resource 一份资料,Server 那边立刻有了一份完整副本 + 一堆衍生的摘要和向量。
02数据流:从你的 Agent 到 Server 磁盘
一份资料进入 OpenViking 后,被拆成四样东西分别存起来。
▸ 当你执行 add_resource("一份 5000 字的设计文档")
03Server 磁盘上最终留下了四样东西
单份资料的"足迹",每个都是原始数据的衍生品或本身。
L2 · 原文副本
完整原始内容
~/.openviking/data/agfs/
你给的资料一字不漏地存了一份。任何人在 Server 上 cat 这个文件就能看到原文。
≈ 等于原文大小
L0 + L1 · 摘要
VLM 生成的总结
workspace/<path>/.abstract
workspace/<path>/.overview
VLM 读了原文后写的摘要,跟原文是"两份独立内容"。摘要本身也算敏感信息——它精炼了原文要点。
≈ 原文 5-10%
Vector · 向量
每段的语义指纹
~/.openviking/data/vectordb/
每段切片的 1024 维浮点向量。但要注意:vectordb 通常会把原文段落也一并存下,方便检索时返回原文,不只是向量。
≈ 原文 110%(含原段落)
Session · 会话记录
你和 Agent 的对话日志
workspace/session/...
如果 Agent 用了 session/ 路径来记录交互,那连你跟 Agent 聊天的全部内容都会落盘到 Server 上。
随会话量增长
04完善"书架"比喻
你之前问"是不是把书本身放进去"——是的。但其实更准确的比喻是:
OpenViking Server = 一个图书馆 + 一位过分尽职的图书管理员
📚
把整本书放上书架
你给一本书,他不止登记书名,而是把整本书原件放在书架上(L2)。原件不在你手里也行——他这边已经有副本了。
📝
写一张内容摘要卡贴在封面
他还会读一遍这本书,写一句话总结(L0)和一段详细介绍(L1)贴在书上,方便快速判断要不要读全文。
🗂️
把每一段都登记到中央检索卡片柜里
他把书拆成段落,每段都生成一张"语义检索卡"放进中央卡片柜(vectordb),卡片上还抄了一份这段原文方便快速取用。
📓
录下你每次借书的对话
你跟管理员的每一次互动,他都会记在日志本上(session/)——你问了什么、他回答了什么、给你看了哪本书,全都留底。
所以"viking://" 这个 URI 不是指向外部源头的链接,而是指向 Server 内部这个图书馆的"书架坐标"。你的本地 Agent 拿到 viking://docs/api/auth.md,意思是"管理员请去你那个图书馆 docs/api/ 这一格把 auth.md 取给我看"。
05这意味着什么——隐私和安全
把"全部数据复制到 Server"这件事想透了,安全意识就建立起来了。
★ 现实意义
- 那台 OpenViking Server 能登录的任何人都能看到所有原始数据。SSH 进去
cat 就行,没有任何加密保护(除非你自己加)。
- 数据同时也流过火山引擎的 API——做 embedding 和 VLM 摘要时,字节那边能看到全部内容。这是不可避免的第二处副本。
- 如果用云上 VPS 部署 Server,云厂商技术上能访问到磁盘内容(除非全盘加密)。
- 本地 Agent 一旦
add_resource 把数据发送出去就无法撤回——即使后面删除,Server 磁盘上的副本要专门 delete 才会清掉,向量库里的残留更难追。
- 你跟 Agent 的对话如果走
session/ 路径持久化,所有聊天记录都在远程——这对多用户场景尤其敏感。
06那应该把 OpenViking 放哪里?
三种部署模式,按数据敏感度选。
按"数据离自己多近"排序
最稳
自己的私有服务器 / 内网 VPC
数据全程在自己掌控的网络里。即使如此,火山引擎 API 这一跳还是要走出去(除非自托管模型)。适合企业内部多 Agent 平台。
折中
公网云上的 VPS(阿里云/火山云 ECS)
数据在云厂商机房,理论上他们能看。配上磁盘加密 + IP 白名单 + 强密钥能挡掉绝大部分意外。适合个人项目或非敏感数据。
慎用
第三方托管的 OpenViking 服务
假如未来有人提供 SaaS 化的 OpenViking,你的所有数据都在他们那。除非合规可控,否则别把敏感业务数据扔进去。
⌘ 对你那个多 Agent 平台
这个数据模型会影响你的架构决策
你的"群聊式多 Agent 协作"场景特别值得提前想清楚一件事:所有 Agent 之间的消息、共享的上下文、协作过程产生的中间产物——全部会被 OpenViking 持久化。这既是优点(完整可追溯)也是负担(合规和存储成本)。
建议的架构边界:① 给每个"工作空间"(比如每个客户/项目)独立部署一个 OpenViking 实例,不要混租;② 在你的 Agent 平台层做一个"敏感数据过滤"——某些内容(密码、API key、个人信息)明确不进 OpenViking,只在 session 内存里活几秒就消失;③ 定期 delete 老 session,向量库会越来越胖。
把 OpenViking 当成"会留底的记忆"而不是"临时缓存"来设计,整个系统的边界就清晰了。