GitHub 趋势 · 第 38 期
把 Agent 的记忆做成 viking:// 文件系统:3.6 万 star,主仓是 AGPLv3
#Agent记忆#上下文数据库#RAG
先把判断放在前面:OpenViking 是这期榜单里少数把「上下文」当成数据库工程来做、而不是当成提示词技巧的项目。它的主张很硬——Agent 的记忆不该是一个黑盒向量库,而应该是一套能用 ls、tree、find 翻看的文件系统。但动手之前有两件事必须先看清:主仓是 AGPLv3,把它嵌进闭源服务会撞上网络传染条款;README 自己也写着 still in its early stages,接口还在动。本篇所有命令、能力描述、许可条款与 benchmark 数字均取自仓库 README 与 LICENSE 原文,未做推测。
你现在的 RAG,问题不在召回率
十万条 chunk 塞进向量库,query 回来五条,拼进 prompt,完事。召回率调一调还能看,真正的麻烦在召回之后:命中了哪一条、为什么命中、它原本属于哪个目录的哪一节,全靠猜。检索过程本身是个黑盒,出错的时候你没法调试,只能重写 prompt 再试一次。Agent 的长期记忆更糟——一次会话结束,偏好和经验就散了,下次从零开始,用户还得把同样的偏好再说一遍。
OpenViking 的解法不是把向量库换一个,而是换一层抽象:先让 Agent 知道自己有什么,再决定读多少。
项目是什么
仓库 volcengine/OpenViking(https://github.com/volcengine/OpenViking),火山引擎(字节跳动旗下)开源,官网 openviking.ai。自述定位是 「Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.」——自演化的 Agent 上下文数据库,把记忆、知识 RAG 和技能统一到一处。
核心设计一句话说得完:把 memories、resources、skills 三类内容统一存成一套虚拟文件系统,挂在 viking:// 协议下。Agent 不是去查向量库,而是像开发者翻文件一样浏览自己的上下文。README 的原话是 “so an agent browses its own context with ls, tree, and find instead of querying a black-box vector store”。
viking://
├── resources/ # Resources: project docs, repos, web pages, etc.
│ └── my_project/
│ ├── docs/
│ │ ├── api/
│ │ └── tutorials/
│ └── src/
└── user/
└── {user_id}/
├── memories/
│ └── preferences/
│ ├── writing_style
│ └── coding_habits
├── resources/
│ └── private_project/
├── skills/
│ ├── search_code
│ └── analyze_data
└── peers/
└── web-visitor-alice/
数据实测(GitHub API):36,535 star / 2,798 fork / 106 watcher,688 个 open issue,语言 Python,默认分支 main,仓库体积约 259 MB(其中 uv.lock 一个文件就 1.28 MB);2026-01-05 创建,最近一次推送 2026-09-10,未归档、未禁用。月度趋势榜新增 8,469,最新正式版 v0.4.19(2026-09-08)。
许可不是一条,是四条
这是整篇里最该逐字看的一段。OpenViking 不是单一许可,README 的 License 一节自己列了四层:
| 路径 | 许可 |
|---|---|
| 主项目(Main Project) | AGPLv3 |
| crates/ov_cli | Apache 2.0 |
| examples | Apache 2.0 |
| third_party | 各自原许可 |
我抓了主仓的 LICENSE 文件核对:是标准 AGPLv3 原文,没有任何追加的自定义条款(无进一步限制、无附加许可)。也就是说约束就是 AGPLv3 本身的约束——你通过 pip 装的主项目受 AGPLv3 管,如果你的产品把它包进对外提供的网络服务里,AGPL 第 13 条要求你把对应源码提供给使用者。
反过来说,这也是这个项目少见的一点坦白:README 专门用一段写“开源版不是阉割版”,原文是 “The open-source edition is not crippled... no feature gates, no account required, no activation key”,还补了一句 it will stay true。它把两条商业线(火山引擎托管版、自托管版按 license key 激活)明确限定在“谁来运维、跑在哪”,而不是“能不能用”。这种把边界写在首页的做法,比藏着说清楚得多。
五个核心能力
| 能力 | README 的表述与含义 |
|---|---|
| 统一文件系统 | Memories、resources、skills 各得一个 viking:// URI,Agent 用确定性的方式定位和操作上下文,像开发者在文件系统里干活。 |
| 三层分级加载 | 每条内容写入时就切成 L0(摘要)/ L1(概览)/ L2(明细),只按任务需要加载到对应深度。 |
| 目录递归检索 | 向量检索先定位得分最高的目录,再逐层下钻,结果回来时带着周围的上下文,而不是孤立的 chunk。 |
| 可观测的检索 | 每次查询都保留自己的目录浏览轨迹(trajectory)。结果不对时,你能看到究竟是哪条路径产出的。 |
| 会话沉淀为记忆 | session commit 之后,OpenViking 异步抽取用户偏好与 Agent 经验,写进长期记忆。 |
其中「三层分级加载」是省 token 的机关。每个目录自己带着 .abstract 和 .overview,所以 Agent 能在读任何全文之前先判断“这个目录跟我相关吗”:
viking://resources/my_project/
├── .abstract # L0: ~100 tokens - quick relevance check
├── .overview # L1: ~2k tokens - structure and key points
└── docs/
├── .abstract
├── .overview
└── api/
├── auth.md # L2: full content, loaded on demand
└── endpoints.md
README 给的两组实测数字
README 里 “Proof it works” 一节把基准摊开写了。原文标注:评测版本是 0.3.22,用户记忆用 LoCoMo,多轮 Agent 任务用 tau2-bench,完整结果与复现脚本在 ./benchmark 目录。
| 基准 | 不用 OpenViking | 用了 OpenViking |
|---|---|---|
| LoCoMo · OpenClaw | 24.20% | 82.08% |
| LoCoMo · Hermes | 33.38% | 82.86% |
| LoCoMo · Claude Code | 57.21% | 80.32% |
| tau2-bench · Retail | 70.94% | 77.81% |
| tau2-bench · Airline | 54.38% | 66.25% |
- ▪三个 Agent 集成用上之后,用户记忆准确率都落到 80–83%,对应各自的原生记忆是 24–57%;输入 token 降 34.3–91.0%,查询延迟降 58.45–66.10%。
- ▪tau2-bench 上是经验记忆带来的任务成功率提升:零售 +6.87pp,航空 +11.87pp。
- ▪理论侧对应论文 VikingMem(arXiv:2605.29640,被 VLDB 2026 接收),README 明确说开源的是论文核心能力的 子集。
读这组数字要带两个前提。第一,README 写明评测用的 VLM 是 Doubao 2.0 Pro、embedding 是 Doubao-embedding-vision-251215——都是自家模型;第二,基准跑在 0.3.22 上,而当前 release 已经是 v0.4.19。这不是造假,但意味着这组数字更适合当“方向验证”,不适合当“采购依据”。
上手:README 的原始命令
README 标注运行要求为 Python 3.10 或以上,安装与启动三步:
pip install openviking --upgrade openviking-server init # interactive wizard: providers, models, ov.conf openviking-server doctor # validate setup openviking-server # start (background: nohup openviking-server > openviking.log 2>&1 &)
init 是交互式向导,会写一份 ~/.openviking/ov.conf。README 列出的 provider 支持:Volcengine、OpenAI、Codex OAuth、Kimi、GLM,以及本地 Ollama——Ollama 这条路它会自己检测并安装运行时、按你的硬件拉合适的模型。doctor 只做检查不动服务,校验配置文件、Python 版本、provider 连通性和磁盘空间。
装完自带 ov 客户端 CLI,服务起来之后:
ov status ov add-resource https://github.com/volcengine/OpenViking # Replace TASK_ID with the returned task_id; continue after status is completed ov task status TASK_ID ov ls viking://resources/ ov tree viking://resources/volcengine -L 2 ov find "what is openviking" ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/en
想连 Bot 一起跑,README 给的是:
pip install "openviking[bot]" openviking-server --with-bot ov chat # in another terminal
集成面铺得很开,README 逐个列了安装说明的 Agent:Claude Code、Codex、OpenClaw、Hermes、Cursor、TRAE / TRAE CN / TraeCode CLI 2.0、OpenCode、pi、Agent Plugins 1.0、MCP 客户端、LangChain / LangGraph。另外有一个 Beta 状态的桌面控制台 OpenViking Helper,目前只给 macOS 与 Windows x64,能自动探测你机器上的 Claude Code、Codex、Cursor、Trae、OpenCode 并写入对应配置。不想装任何东西的话,官网有托管好的 Studio 演示环境可以直接开。
我的判断
适合谁。想让 Agent 记忆可查、可调试、能解释“为什么检索到这条”的团队;已经在用 Claude Code / Codex / Cursor 且不介意挂一个常驻服务的个人开发者;需要把项目文档、检索结果、技能描述放进同一套寻址空间的场景——viking:// 这个统一 URI 是真的省事。
不适合谁。准备把它嵌进闭源 SaaS 商业产品的团队,主仓 AGPLv3 的网络条款是硬约束;不能接受常驻 server 和 ~/.openviking 配置目录的极简派;需要稳定 API 的人——v0.4.17、v0.4.17.1、cli@0.4.18、python-sdk@0.1.10、v0.4.19、sdk/go/v0.0.2 挤在三周内发出来,接口不会停在原地。
几个必须知道的坑:
- ▪许可分层容易看错。主项目 AGPLv3,只有 crates/ov_cli 和 examples 是 Apache 2.0,third_party 各自原许可。你 pip 装的是主项目,受 AGPLv3 管。
- ▪star 数不等于使用基数。36,535 star 对应 106 个 watcher、688 个 open issue——watcher/star 比例只有 0.29%,issue 积压近 700。README 上挂着 Trendshift 榜单徽章,热度有榜单与厂商曝光的成分。
- ▪基准与版本脱节。README 的 LoCoMo / tau2-bench 数字是 0.3.22 跑的,当前版本 v0.4.19;而且评测用的 VLM 与 embedding 都是自家 Doubao 模型。
- ▪ov add-resource 是异步的。它只返回一个 task_id,必须 ov task status 等到 completed 再 ls,否则你会以为导入失败了。README 在注释里写了这一条,很容易漏。
- ▪自认早期。README 的原话是 “OpenViking is still in its early stages, and there is plenty left to build.” 学术侧开源的是论文核心能力的子集。
- ▪仓库 259 MB 是 git 体积。主要由 uv.lock、docs 与 benchmark 撑起来,不代表 pip 包大小,评估磁盘时不要照搬这个数。
写在最后
这一期我本来按动量选了另一个项目(semantica-agi/semantica,本月 +8,849,略高于 OpenViking 的 +8,469,MIT 许可),但 OpenViking 从第 33 期起就被挤掉了四轮,每期文末都承诺“下期优先”。一个对读者公开的待办,比 380 个 star 的动量差更该先兑现,所以本期写它,semantica 排在下一篇。
对 OpenViking 我的结论是:它值得先把 Studio 演示打开看一眼,viking:// 这套寻址方式五分钟就能判断出对你有没有用;但把它放进生产之前,请先让法务看完那份 AGPLv3,再决定是自托管还是直接买火山引擎的托管版。
仓库地址:https://github.com/volcengine/OpenViking
总 star:36,535 | 月度新增 +8,469 | fork 2,798 | open issue 688 | watcher 106
许可:主项目 AGPLv3(标准原文,无附加条款);crates/ov_cli 与 examples 为 Apache 2.0;third_party 各自原许可
最新正式版:v0.4.19(2026-09-08) | 默认分支 main | 语言 Python | 2026-01-05 创建
数据来源:GitHub Trending 官方页面 + GitHub REST API + 仓库 README/LICENSE 原文 · 抓取时间:2026-09-11 12:20
#Agent记忆#上下文数据库#AGPLv3
你在用什么方案管 Agent 的长期记忆?是向量库、文件,还是干脆每次把上下文重塞一遍?评论区说说你踩过的坑,我会挑几个在下一篇里一起聊。
下一篇预告:semantica-agi/semantica(12,609 star,本月 +8,849,MIT)——用图结构承载上下文与可审计的 AI 系统,和本期这套文件系统派正好是两种路线,到时候放一起对比。
备选:cactus-compute/needle(10,778 star,本月 +7,395)——给手机、手表、智能家居和机器人用的 14MB 端侧基础模型。