★ 41,405· 3,371 forks· Python· AGPL-3.0开源替代

OpenViking:AI Agent 的自进化上下文数据库

volcengine/OpenViking

火山引擎开源的 Agent 上下文数据库,将知识/记忆/技能统一为虚拟文件系统,支持分层检索和会话归档

成熟度:维护活跃,最近提交0天前,open issues 1199,3个月内快速迭代

项目体检

部署 · Docker Compose 一键部署,默认端口 1933(服务)+ 1934(Caddy 反向代理),公网 HTTPS 需配置 .env 中的 OPENVIKING_PUBLIC_BASE_URL 和 ACME 邮箱

成本 · 开箱即用,可选配置 LLM API Key(支持 OpenAI/火山方舟)、OAuth 认证、Gateway 管理密钥;依赖 Python 3.10+ 和多个 PDF/爬虫库

技术 · Python + FastAPI + uvicorn,集成 Scrapy/trafilatura(网页抓取)、pdfplumber(文档解析)、APScheduler(任务调度)、Maturin(Rust 绑定)

许可 · AGPL-3.0,商用需开源衍生代码或联系火山引擎获取商业授权

活跃 · 最新版本 v0.5.3(1天前),329 贡献者,4.1万 stars,维护高度活跃

解决什么

传统 AI Agent 的记忆管理是"黑箱":文本进去,向量出来,没人知道 Agent 到底记住了什么。OpenViking 将 Agent 的知识、记忆、技能统一组织为虚拟文件系统(viking://),Agent 像操作文件一样用 ls、tree、read、write 导航上下文,开发者可直接打开任意目录检查和编辑 Agent 的认知。每个目录自动生成摘要,Agent 先扫描摘要判断相关性,再决定是否读取完整内容,避免向量检索的"全局扫描"低效。

为何火

火山引擎在 GitHub 上线 3 个月即获 4.1 万 stars,核心原因是让 Agent 记忆透明化。不同于 LangChain Memory 或 Mem0 的纯向量存储,OpenViking 的文件系统隐喻让非技术人员也能理解 Agent 在"想什么"。HN 社区认可其"分层检索"设计(L0 摘要→L1 概览→L2 全文),认为这比传统 RAG 更符合人类认知习惯。国内开发者青睐其火山引擎镜像(volces.com)和中文文档,无需梯子即可快速上手。

核心功能

  • 虚拟文件系统:知识库在 viking://resources/,用户记忆在 viking://user/{user_id}/memories/,技能定义在 viking://user/{user_id}/skills/,每个路径都可用 URI 引用和检索
  • 三层加载机制:L0(一句话摘要)→L1(结构化概览)→L2(原始全文),Agent 按需深入,减少 token 消耗
  • 目录级语义搜索:find 在指定子树查询,search 根据会话上下文规划检索路径,避免全局向量扫描
  • 会话归档与编译:提交会话后自动提取记忆为 Markdown,可人工编辑;启用 VikingBot 后 ov compile 将素材整理为 Wiki/知识图谱/报告
  • 在线 Studio:Web 界面可视化浏览文件系统、编辑记忆、查看会话历史,支持 OAuth 登录和多用户隔离

安装

Docker(推荐):

# 本地部署(默认端口 1933)
docker compose up -d

# 公网 HTTPS 部署:创建 .env 文件
echo "OPENVIKING_PUBLIC_BASE_URL=https://ov.your-domain.com" > .env
echo "[email protected]" >> .env
docker compose up -d

源码安装(需 Python 3.10+):

pip install openviking
ov init  # 初始化配置
ov server start  # 启动服务

国内用户可在 docker-compose.yml 中切换镜像为 openviking-cn-beijing.cr.volces.com/volcengine/openviking:latest。

适合谁

  • Agent 开发者:需要透明化记忆管理、支持多用户隔离、希望记忆可人工审核和编辑
  • 知识库重度用户:传统 RAG 检索不准,想按项目/主题分层组织文档,减少无关召回
  • 企业 AI 应用:需要审计 Agent 决策依据(AGPL 协议需注意,商用可能需联系火山引擎)
  • 不适合:纯向量检索场景(Qdrant/Milvus 更轻量)、不需要文件系统抽象的简单 Chatbot

社区评价

HN 讨论热度较低(2 点,1 条评论),但评价积极。有开发者指出"理想情况下应支持任意图查询或 Datalog,但分层组织+内容标签+向量相似度是个好起点",认可其渐进式设计。GitHub 上 4.1 万 stars 主要来自中文社区,Discord/飞书群活跃度高。批评声音集中在 AGPL 协议的商用限制,以及 1199 个 open issues 反映的早期稳定性问题。

选型对比

维度OpenVikingLangChain MemoryMem0
记忆组织虚拟文件系统,可视化编辑键值对/向量,黑箱纯向量,自动管理
检索粒度目录级,支持路径过滤全局向量检索全局向量检索
人工干预支持直接编辑 Markdown需写代码修改不支持
部署复杂度Docker 一键,需配置 LLM库集成,轻量SaaS 或自托管
许可协议AGPL(商用需开源)MITApache 2.0

取舍:OpenViking 适合需要"可解释记忆"的复杂 Agent,代价是 AGPL 协议和较重的部署;LangChain Memory 适合快速原型,但缺乏透明度;Mem0 自动化程度高,但牺牲了人工控制。

已知坑

  • AGPL 协议陷阱:若将 OpenViking 集成到 SaaS 产品,需开源整个后端代码,商用前务必咨询法务或联系火山引擎商业授权
  • 1199 个 open issues:项目处于快速迭代期,部分功能(如 MCP 集成、多模态支持)文档滞后,生产环境建议锁定稳定版本
  • LLM 依赖:目录摘要生成、会话编译依赖 OpenAI/火山方舟 API,离线场景需自行适配本地模型
  • 中文分词:README 未提及中文优化,实测对中文文档的语义检索效果一般,可能需调整 Embedding 模型
  • 资源占用:包含 Scrapy/PDF 解析等重依赖,Docker 镜像约 2GB,小内存服务器需注意

安装方式:docker compose