跳到主要內容
/閱讀約 4 分鐘/

OpenViking:字節跳動開源的 AI Agent 上下文檔案系統

火山引擎(字節跳動)開源的 OpenViking 把 agent 的記憶、資源、技能統一成檔案系統。LoCoMo10 測試中任務完成率提升 49%、token 成本降 83%。目前 22.3k stars,採用 AGPLv3。

目錄+
volcengine/OpenViking on GitHub

AI agent 的上下文管理一直是個老問題:記憶放在 vector DB、資源放在檔案系統、技能寫在 prompt 裡、session 存在 Redis——四套儲存、四套 API、四個要 debug 的地方。火山引擎(字節跳動)開源的 OpenViking 提出一個直接的解法:把所有東西當作檔案系統處理。


核心想法:viking:// URI

OpenViking 用 viking:// URI 組織所有上下文,結構類似 Unix 檔案系統——有階層、有路徑、有權限。Agent 的記憶不是塞進向量 DB 的一堆 chunk,而是結構化的目錄樹。

這個設計最大的好處是可觀察:可以列目錄、看檔案、追蹤修改,像 debug 一個專案那樣 debug agent 的上下文狀態。


分層載入:L0 / L1 / L2

Loading diagram...

OpenViking 為每個上下文節點維護三個版本:

  • L0 抽象摘要:一兩句話,用來快速判斷節點是否相關
  • L1 概述:段落級內容,用來定位
  • L2 完整細節:實際資料,只在確定需要時才載入

這個設計直接回應「context 爆量」的問題——agent 不必每次把完整內容拉進 prompt,只在真正需要時深入讀取。


基準測試結果

LoCoMo10 基準(vs baseline,百分比)

在 LoCoMo10 資料集(1,540 個長期對話案例)上:

  • vs baseline:任務完成率提升 49%、token 成本降 83%
  • vs LanceDB:完成率提升 17%、token 節省 92%

49% 和 83% 同時出現並不常見——通常提升效能意味著消耗更多 token,提升效率則以犧牲品質為代價。OpenViking 的分層載入同時做到了兩件事。


五個解決的問題

問題解決方法
上下文分散檔案系統統一抽象
Context 爆量L0/L1/L2 分層載入
檢索不準目錄遞迴檢索 + 語意搜尋
不可觀察視覺化檢索軌跡
記憶侷限自動從 session 擷取記憶

技術細節

  • 語言:Python 84.6% + Rust 5.7% + C++ 4.6%
  • 支援模型:OpenAI、豆包、LiteLLM(Anthropic、DeepSeek、Gemini、Ollama 本地)
  • 需求:Python 3.10+、Go 1.22+(AGFS 用)、GCC 9+
  • 授權:主專案 AGPLv3、CLI 和範例 Apache 2.0

社群規模

22.3k stars、1.6k forks——從數字來看,OpenViking 不是小眾實驗專案,而是已經被廣泛採用的基礎建設。字節跳動把它作為 agent 上下文層開源,背後應該有實際產品(豆包 / Viking 相關產品)驗證過。


結語

OpenViking 的「檔案系統抽象」對 agent 工程而言是一個重要的心智模型轉換。把上下文當作可遍歷、可分層、可觀察的結構,而不是一堆 embeddings,agent 的行為因此變得更可理解、可 debug。

如果你在建構 agent 系統,尤其需要長期記憶與複雜上下文管理的那種,OpenViking 值得認真評估。49% 的完成率提升加 83% 的成本降低,不是拿來嘴的數字。