跳到主要內容

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

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% 成本降低不是拿來嘴的數字。