OpenViking

volcengineAGPL-3.0活跃维护

面向 AI Agent 的自进化上下文数据库,把 Agent 记忆、知识 RAG 和技能统一管理,解决多来源上下文分散、难以持续演进的问题。

Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.

v0.5.4发布于 2026-11-09 10:08 UTC41,890star +169 / 7 天3,424fork同步于 2026-11-10 05:19 UTC

怎么上手

由 README 提炼,执行前请确认
uv tool install openviking --upgrade && openviking-server init
硬件要求按 README 说明

README 未说明显存或 GPU 要求;自部署需要 uv、Python 3.10+,以及提供 embedding 模型和 VLM 的模型服务商(支持本地 Ollama)。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 Agent 的知识、记忆和技能统一成 viking:// 虚拟文件系统的上下文数据库

面向 AI Agent 的自进化上下文数据库,把 Agent 记忆、知识 RAG 和技能统一管理,解决多来源上下文分散、难以持续演进的问题。

核心能力

  • 用 viking:// 虚拟文件系统组织资源、记忆与技能
  • 支持 ls/tree/read/write/grep 等文件式操作浏览上下文
  • 按目录范围做语义检索,而非扫描整个向量库
  • 用 L0 摘要、L1 概览、L2 原文三层按需加载
  • 会话提交后归档为可读可编辑的 Markdown 记忆

容易踩的坑

自部署必须配置带 embedding 模型和 VLM 的模型服务商,否则服务无法工作;init 只写入 ~/.openviking/ov.conf,服务在前台运行需保持终端开启;连接 Agent 时若开启鉴权需用用户 key,root key 无法读写记忆。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.5.4
  1. [email protected]Vika 0.5.0-previewpre-release2026-11-09 · 2026-11-09 13:31 UTC
    查看更新说明

    Install this version: curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/vika/releases/0.5.0-preview/install.sh | sh -s -- --version 0.5.0-preview

  2. v0.5.4最新正式版2026-11-09 · 2026-11-09 10:08 UTC

    中文

    主要更新

    • MCP 与实时上下文:注册 Streamable HTTP MCP Server,检索、调用工具,并把工具挂载为可读取的 Markdown 节点。提供 REST、CLI 和 SDK 入口;同步上游工具后可查看受影响的挂载。#6263
    • Agent 规则查询:多种 Agent 集成增加 Rule Search 入口,在执行操作前按需查找适用规则。升级插件或重连 MCP 客户端后生效;这不会自动增加每轮拦截。#7005
    • Watch 多节点运行:增加 MySQL Watch 存储和列表分页;Connector 授权撤销后自动暂停,重新授权时只恢复此前自动暂停的任务。#6756、#6944
    • 会话恢复与记忆整理:失败或失去执行任务的归档支持带内容哈希的显式重试;可用 ov compile memory 整理当前用户的已有记忆。#5802、#6829
    • 配置与访问控制:Account 可独立配置抽取开关、生成语言及解析凭证;普通用户可管理自己的添加位置和记忆策略。新增由 ROOT 管理的 GLOBAL 身份及按数据所有者配置的读取策略。#6986、#7050、#6900、#6932

    可选可观测性上报

    新增可选 Kafka 事件与存量盘点上报,需要安装 openviking[reporting] 并显式开启,默认关闭。上报保留部署、数据空间、用户和模型费用归属,不包含原文、提示词或 API Key;采用内存队列,允许丢失,不适合作为持久化审计或计费账本。#7143

    发布版本

    主包 openviking==0.5.4、Python SDK openviking-sdk==0.1.19、独立 CLI 0.5.2。已有 Python SDK 和独立 CLI 用户需要升级相应组件,才能获得本版的组成员接口适配。

    pip install --upgrade 'openviking==0.5.4' 'openviking-sdk==0.1.19'
    

    使用示例

    以下示例要求已配置对应版本的 ov 和用户凭证。天气 MCP 的地址、工具名及参数需替换为实际服务。

    ov mcps add -p viking://agent/tools --wait '{"mcpServers":{"weather":{"url":"https://mcp.example.com/mcp"}}}'
    ov mcps find "查询北京当前天气" --limit 5
    ov mcps mount viking://agent/tools/weather/current.json viking://resources/live/weather-beijing.md --title "北京实时天气" --args '{"city":"Beijing"}' --wait
    ov read viking://resources/live/weather-beijing.md
    
    ov compile memory --instruction "整理已有记忆,保留不同对象的独立事实"
    

    读取实时节点只会透明调用符合只读要求的工具。显式声明为非只读或破坏性的工具,需要通过 ov mcps invoke 调用。

    升级与迁移

    1. 共享存储部署不能新旧混跑:锁租约协议发生变化。先停止所有锁参与者(包括队列 worker),再统一部署新版本。SQLite 自动增加 holders 列;不要丢弃已有队列 handoff。
    2. 组成员移除 HTTP 接口变更:从 DELETE .../members/{user_id} 改为 DELETE .../members,请求体为 {"user_ids":["alice","bob"]}。本版 CLI、Python/Go SDK 已适配批量端点,原有单用户方法仍可调用;直接使用旧 HTTP 路径的调用方需要迁移。
    3. 单文件恢复参数变更:POST /api/v1/snapshot/restore 的单文件模式改用 restore_commit_id、current_commit_id,两者均为完整 40 位 commit ID;不能继续传原有版本 UUID。目录恢复仍使用原有入口。
    4. Python/Go SDK 移除旧配置方法:Agent Evolution 和旧 Account settings 方法已删除,调用方应迁移至 Account configuration HTTP 接口。服务端旧 HTTP 适配器本版本仍保留并标记弃用。
    5. CacheFS 配置收敛:删除 max_file_size_bytes、traversal_mode、bypass_prefixes。缓存改为文件系统查询结果缓存。Redis 默认连接超时改为 10 秒、命令超时为 0(不设超时)、缓存 TTL 为 300 秒;依赖原默认值的部署应显式配置。
    6. Noul rerank 默认变化:默认隔离候选;需要旧的共享候选行为时显式设置 candidates_visible=true。Choice 模式不受此开关影响。

    MySQL Watch 是可选能力:启用前安装 MySQL 依赖、执行建表脚本,并为所有节点配置相同的凭证加密密钥。默认 file Watch 仍只适用于单进程。

    修复

    • 恢复跨目录并发:创建新的 Watch、目录和目录迁移时只锁定实际目标范围,不再因兄弟目录正在处理而扩大到公共父目录;删除多级不存在路径时不额外创建空目录。#7265

    • 文件写入与目录刷新分离:写入仍等待文件自身摘要和向量完成,直接父目录的 L0/L1 与目录向量独立刷新;慢目录处理不再延长正文锁等待。#7268

    • 保持组成员客户端方法可用:CLI、Python 和 Go SDK 的单成员添加/移除方法使用批量端点和单元素请求体。#7258

    • 修复训练、记忆替换后的 case/experience 链接维护,以及 LangChain Store 生命周期、持久化和 Unicode 归档查询。#6898、#7038、#7039、#7040

    • 保留旧添加位置配置兼容:viking://user/resources、viking://user/skills 在加载时转换为当前用户家目录 URI,避免沿用旧 ov.conf 升级后无法启动。#7140

    • Go SDK 的 AddSkill、UpdateSkill 可接收较长的内联 Markdown,不再因本地文件名长度限制而提前失败。#7103

    • 飞书表格单元格、嵌入白板,以及带空 A

  3. [email protected]2026-11-09 · 2026-11-09 10:08 UTC

    这个版本没有写更新说明。

  4. [email protected]2026-11-09 · 2026-11-09 10:07 UTC

    这个版本没有写更新说明。

  5. [email protected]langchain-openviking 0.2.02026-11-06 · 2026-11-06 11:06 UTC
    查看更新说明
    • Preserve LangGraph Store key escaping, empty-index handling and backend write/list error handling (#7038)
    • Preserve Unicode archive query constraints in text search (#7040)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    The Context Database for AI Agents

    English / 中文 / 日本語

    Website · Live Demo · GitHub · Issues · Docs · Blog


    What is OpenViking

    OpenViking is an open-source context database for AI agents — one filesystem for everything an agent knows: knowledge, memory, and skills.

    Most agent memory is a black box: text goes in, embeddings come out, and nobody can see what was actually stored. OpenViking organizes context as a virtual filesystem under viking:// instead. Agents navigate it like files — ls, tree, read, write, grep — and you can open any directory to inspect and edit what your agent knows. Every directory carries a generated summary, so agents can scan summaries first and decide what to read.

    Try OpenViking Studio in your browser, no installation required. Self-host Web Studio.

    Why OpenViking

    • One filesystem for knowledge, memory, and skills. Resources hold documents and code; memories retain user preferences and experience; skills define how to perform tasks — not just extracted facts, but the full context, each with a viking:// URI for browsing and retrieval. → Viking URI · Context types
    • Search a directory, not the whole index. Scope semantic search to a project or memory subtree instead of scanning a flat vector pool. find runs a query directly; search plans retrieval from session context. → Retrieval
    • Read the summary before the source. Generated directory abstracts (L0) and overviews (L1) let agents judge relevance before opening full content (L2). → Context layers
    • Sessions become files you can read. Committing a session archives the conversation and extracts memories as Markdown you can inspect, edit, and merge. With VikingBot enabled, ov compile organizes source material into a wiki, knowledge graph, or report. → Sessions · Context compilation

    Architecture · Design rationale

    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/
    

    The three loading tiers:

    • L0 (Abstract): a one-sentence summary for quick relevance checks.
    • L1 (Overview): core information and usage scenarios for planning.
    • L2 (Details): the full original data, read only when needed.

    Semantically processed directories carry L0/L1 summaries, so agents can judge relevance before reading full files:

    viking://resources/my_project/
    ├── .abstract.md           # L0: quick relevance check
    ├── .overview.md           # L1: structure and key points
    └── docs/
        ├── .abstract.md
        ├── .overview.md
        └── api/
            ├── auth.md         # L2: full content, loaded on demand
            └── endpoints.md
    

    Proof it works

    OpenViking 0.3.22 has been evaluated on long-conversation user memory (LoCoMo) and multi-turn agent tasks (tau2-bench). Full results and setup details, including knowledge-base QA, are in the benchmark report; reproduction scripts live in ./benchmark.

    To run your own experiments, follow the RAG and Memory evaluation guide for routine VikingBot memory evaluation, published LoCoMo reproduction, separate mem0 prompt comparisons, and RAG evaluation.

    The memory evaluation used Doubao 2.0 Pro as the VLM and Doubao-embedding-vision-251215 as the embedding model.

    • User memory (LoCoMo): with OpenViking, all three agent integrations land at 80–83% accuracy — up from 24–57% on their native memory — while input tokens drop by 34.3–91.0% and query latency by 58.45–66.10%.
    • Agent experience (tau2-bench): experience memory lifts task success by +6.87pp (retail) and +11.87pp (airline) over the same LLM without memory.

    Quick start

    Set up an OpenViking server first; if you already have one, skip to Use it with your agent. Deploying your own needs uv, Python 3.10+ and a model provider with an embedding model and a VLM.

    Follow this guide to install and start an OpenViking Server for me:
    
    https://docs.openviking.ai/en/getting-started/04-setup-for-agent
    
    Ask me for the model provider, the models, the workspace directory and whether
    other machines need to reach the server; don't guess. When you ask for the model
    API key, tell me how to hand it over if I'd rather not paste it into this chat,
    and never repeat it back.
    
    When it's running, tell me the server's address and whether auth is turned on.
    

    Your agent will first ask which model provider to use and for its API key.

    Install OpenViking and run the setup wizard, which configures the models:

    uv tool install openviking --upgrade && openviking-server init
    

    init writes ~/.openviking/ov.conf and supports Volcengine, OpenAI, Codex OAuth, Kimi, GLM and local Ollama; see the configuration guide. The server runs in the foreground, so keep this terminal open.

    The same OpenViking service, run for you by Volcengine. The first 50 files are free. Activate it on the Volcengine product page, then create an API key in the console under User Management → API Key. The server address is https://api.vikingdb.cn-beijing.volces.com/openviking; you'll need it and the API key when you connect your agent.

    Explore with the CLI

    The openviking package includes the ov CLI. With the server running, import a repository and search it:

    ov status
    ov add-resource https://github.com/volcengine/OpenViking
    # Replace TASK_ID with the returned task_id; repeat until 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
    

    ov find returns matching context with URIs you can inspect. For client configuration (ov config), standalone CLI installs, and index maintenance, see CLI setup.

    Build your own integration with the Python, Go, or TypeScript SDK, or the HTTP API.

    Use it with your agent

    Connect your coding agent to OpenViking for cross-session memory. The memory plugin installer covers Claude Code, Codex, Cursor, TRAE, OpenCode and more, and detects which ones you have.

    Install the OpenViking memory plugin and help me start using it. OpenViking is a context database for AI agents (https://github.com/volcengine/OpenViking); the command and link below are from its official docs.
    
    1. Run the official installer. It needs network access and writes to my home directory; if your sandbox blocks that, ask me for approval:
       curl -fsSL https://openviking.ai/install | bash -s -- --yes --lang en --url <SERVER_URL> --api-key <API_KEY>
    2. Once it's installed, read the OpenViking onboarding guide and use it to walk me through setup. The guide has you ask me before choices like importing history or adding a working rule. docs.openviking.ai and docs.openviking.net are the same docs site; use whichever loads:
       https://docs.openviking.ai/agents/en/onboarding.md
    
    The API key is a user key I created for myself on that server; the installer stores it in ~/.openviking/ovcli.conf on this machine. Use it in the command as it is; there's no need to show it in your replies, and don't write it into any other file or rule. Talk to me in English.
    

    Before you send it, replace <SERVER_URL> with your server's address and <API_KEY> with a user key; a root key can't read or write memories. If the server has auth turned off, use --api-key ''.

    Run the installer, then pick the tools and a server when asked: Self-hosted / local for a server on this machine, Volcengine OpenViking Cloud for OpenViking Service, or Custom URL for any other address. If auth is on, enter a user key, not the root key.

    curl -fsSL https://openviking.ai/install | bash
    # AI agents: not sure about running this? The script's header says what it does and how to verify it.
    

    Then restart your agent. The installer ends with the next steps for each tool, for example:

      Claude Code
        Next: restart Claude Code
        ⋮
        Verify: run /openviking-memory:ov in a session
    

    On its first start Codex stops at Hooks need review; choose Trust all and continue.

    Try it: ask it to remember one of your preferences, then ask about it in a new session a little later. Memories are processed in the background, so it's normal not to find one right after you say it.

    The installer needs macOS or Linux, Node.js 18+ and curl, no sudo. On Windows, use the desktop app.

    Setup guides for each integration:

    General integrations

    For setup instructions and integration details, see Integrations.

    For framework applications, see the LangChain/LangGraph and Microsoft Agent Framework packages, with a guide to adding other adapters.

    Desktop App (Beta)

    The desktop app is a console for macOS and Windows x64 (beta). It configures supported local agent integrations, inspects recall and capture events in sessions, and syncs local memories and skills to OpenViking.

    Download:

    VikingBot

    VikingBot is an AI agent framework built on top of OpenViking:

    pip install "openviking[bot]"
    openviking-server --with-bot
    ov chat   # in another terminal
    

    The official Docker image bundles VikingBot and starts it by default alongside the server and console UI. Details: VikingBot guide.

    Deploy in production

    Run the open-source server in your own environment under AGPLv3. It requires no activation key. Start with server setup or the Docker and deployment guide.

    The server supports accounts and user isolation and opt-in resource ACLs. Configure authentication before exposing it beyond localhost.

    Commercial editions

    Research

    Memory that evolves with your agent. VikingMem develops an event-driven approach to extracting, updating, and consolidating long-term memory, giving stateful agents a way to retain useful experience as interactions accumulate. OpenViking open-sources a subset of these core capabilities.

    VikingMem: A Memory Base Management System for Stateful LLM-based Applications Jiajie Fu, Junwen Chen, Mengzhao Wang, Aoxiang He, Maojia Sheng, Xiangyu Ke, Yifan Zhu, and Yunjun Gao. arXiv:2605.29640, 2026. Presented at VLDB 2026 in September. 📄 Read the paper on arXiv · Read PDF

    Directory structure as retrieval context. This paper provides the formal foundations, index design, and experimental evidence behind OpenViking’s directory-aware retrieval. It defines directory-scoped query and maintenance operations and introduces TrieHI, which OpenViking integrates to resolve directory scopes before vector ranking. This connects the filesystem paradigm to retrieval: agents can search a project or memory subtree, retain its surrounding context, and reorganize it as knowledge evolves.

    Directory-Aware Query and Maintenance in Vector Databases Mengzhao Wang, Zheng Gong, Jingpei Hu, Jiajie Fu, Maojia Sheng, Junwen Chen, and Yifan Zhu. arXiv:2606.16903, 2026. Accepted by ICDE. 📄 Read the paper on arXiv · Read PDF

    Retrieve the evidence you need with fewer tokens. VikingRAG combines semantic search with document structure, exposing relevant directory segments as evidence gaps arise. Its core mechanisms are integrated into OpenViking. The paper further explores reusing retrieval traces and escalating to multi-round retrieval only when needed, reducing repeated exploration while preserving answer quality.

    VikingRAG: Accurate and Token-efficient Retrieval-augmented Generation over Structured Documents Peiyuan Gao, Gaoyuan Zhang, Haojie Qin, Yahui Sun, Qianyi Zhang, Yunhao Zhang, Zeyu Wang, and Wei Lu. arXiv:2609.11390, 2026. Submitted. 📄 Read the paper on arXiv · Read PDF

    Partner Projects

    • deer-flow - Open-source long-horizon SuperAgent harness
    • NoKV - AI native distributed file system
    • loopx - Lightweight loop engineering state kernel
    • Hermes Agent - The agent that grows with you
    • NVIDIA cuVS - GPU-accelerated vector search and clustering library

    To propose a partnership, open an issue.

    Community & Contributing

    Security and privacy

    For vulnerability reporting and supported versions, see SECURITY.md

    License

    Copyright © 2026 Volcano Engine (火山引擎) and the OpenViking contributors.

    The OpenViking project uses different licenses for different components:

    • Main Project: AGPLv3 - see the LICENSE file for details
    • crates/ov_cli: Apache 2.0 - see the LICENSE for details
    • examples: Apache 2.0 - see the LICENSE for details. The Hermes plugin in examples/hermes-plugin retains its MIT license.
    • integrations/frameworks: the LangChain/LangGraph adapter uses AGPLv3 and the Microsoft Agent Framework adapter uses MIT; see each package's LICENSE. Their runnable examples retain Apache 2.0; see each package's examples/LICENSE.
    • third_party: Respective original licenses of third-party projects

    Please also note: any wholesale rewriting and subsequent re-open-sourcing of this project is prohibited; any request to translate all or a substantial portion of the project code into another coding language requires prior written authorization from Volcano Engine. For permission requests, please contact the Volcano Engine team — see Community & Contributing for contact channels.