README_CN.md
<a href="https://www.openviking.ai">官网</a> · <a href="https://github.com/volcengine/OpenViking">GitHub</a> · <a href="https://github.com/volcengine/OpenViking/issues">问题反馈</a> · <a href="https://www.openviking.ai/docs">文档</a>
👋 加入我们的社区
📱 <a href="./docs/en/about/01-about-us.md#lark-group">飞书群</a> · <a href="./docs/en/about/01-about-us.md#wechat-group">微信群</a> · <a href="https://discord.com/invite/eHvx8E9XF3">Discord</a> · <a href="https://x.com/openvikingai">X</a>
</div>在 AI 时代,数据丰富,但高质量的上下文却难以获得。在构建 AI 智能体时,开发者经常面临以下挑战:
OpenViking 是专为 AI 智能体设计的开源上下文数据库。
我们的目标是为智能体定义一个极简的上下文交互范式,让开发者完全告别上下文管理的烦恼。OpenViking 抛弃了传统 RAG 的碎片化向量存储模型,创新性地采用 "文件系统范式" 来统一组织智能体所需的记忆、资源和技能。
使用 OpenViking,开发者可以像管理本地文件一样构建智能体的大脑:
在开始使用 OpenViking 之前,请确保您的环境满足以下要求:
pip install openviking --upgrade --force-reinstall
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
或从源码构建:
cargo install --git https://github.com/volcengine/OpenViking ov_cli
OpenViking 需要以下模型能力:
OpenViking 支持多种 VLM 提供商:
| 提供商 | 描述 | 设置方式 |
|---|---|---|
volcengine | 火山引擎豆包模型 | Volcengine 控制台 |
openai | OpenAI 官方 API | OpenAI 平台 |
azure | Azure OpenAI 服务 | Azure OpenAI 服务 |
openai-codex | 通过 ChatGPT/Codex OAuth 使用 Codex VLM | 使用 openviking-server init |
Volcengine 支持模型名称和端点 ID。为简单起见,建议使用模型名称:
{
"vlm": {
"provider": "volcengine",
"model": "doubao-seed-2-0-pro-260215",
"api_key": "your-api-key",
"api_base": "https://ark.cn-beijing.volces.com/api/v3"
}
}
您也可以使用端点 ID(可在 Volcengine ARK 控制台 中找到):
{
"vlm": {
"provider": "volcengine",
"model": "ep-20241220174930-xxxxx",
"api_key": "your-api-key",
"api_base": "https://ark.cn-beijing.volces.com/api/v3"
}
}
使用 OpenAI 的官方 API:
{
"vlm": {
"provider": "openai",
"model": "gpt-4o",
"api_key": "your-api-key",
"api_base": "https://api.openai.com/v1"
}
}
您也可以使用自定义的 OpenAI 兼容端点:
{
"vlm": {
"provider": "openai",
"model": "gpt-4o",
"api_key": "your-api-key",
"api_base": "https://your-custom-endpoint.com/v1"
}
}
使用 Azure OpenAI 服务。model 字段需要填写 Azure 上的部署名称(deployment name),而非模型官方名字:
{
"vlm": {
"provider": "azure",
"model": "your-deployment-name",
"api_key": "your-azure-api-key",
"api_base": "https://your-resource-name.openai.azure.com",
"api_version": "2025-01-01-preview"
}
}
</details> <details> <summary><b>OpenAI Codex(OAuth)</b></summary>💡 提示:
api_base填写你的 Azure OpenAI 资源端点,支持*.openai.azure.com和*.cognitiveservices.azure.com两种格式api_version可选,默认值为2025-01-01-previewmodel必须与 Azure Portal 中创建的部署名称一致
如果你希望通过 ChatGPT/Codex OAuth 会话来使用 Codex VLM,而不是标准 OpenAI API Key,可以这样配置:
openviking-server init
# 在向导中选择 OpenAI Codex
openviking-server doctor
{
"vlm": {
"provider": "openai-codex",
"model": "gpt-5.3-codex",
"api_base": "https://chatgpt.com/backend-api/codex",
"temperature": 0.0,
"max_retries": 2
}
}
</details>💡 提示:
- 当 Codex OAuth 可用时,
openai-codex不需要vlm.api_key- OpenViking 会把自己的 Codex 鉴权状态保存在
~/.openviking/codex_auth.json- 可以通过
openviking-server doctor校验当前 Codex 鉴权是否可用
如果你想通过 Ollama 使用本地模型运行 OpenViking,交互式向导会自动完成所有配置:
openviking-server init
向导会:
ov.conf 配置文件随时验证配置是否正确:
openviking-server doctor
doctor 会检查本地环境(配置文件、Python 版本、embedding/VLM 服务连通性、磁盘空间),无需启动服务器。
如果使用云端 API(火山引擎、OpenAI、Gemini 等),请继续下方的手动配置。
推荐的首次配置流程是:
openviking-server init
openviking-server doctor
如果你在 openviking-server init 中选择了 OpenAI Codex,初始化向导会帮你导入已有 Codex 鉴权,或直接引导你完成登录。
如果你更想手动配置,再创建 ~/.openviking/ov.conf,复制前请删除注释:
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"log": {
"level": "INFO",
"output": "stdout" // 日志输出:"stdout" 或 "file"
},
"embedding": {
"dense": {
"api_base" : "<api-endpoint>", // API 端点地址
"api_key" : "<your-api-key>", // 模型服务 API Key
"provider" : "<provider-type>", // 提供商类型:"volcengine"、"openai"、"azure" 等
"api_version": "2025-01-01-preview", // (仅 azure)API 版本,可选,默认 "2025-01-01-preview"
"dimension": 1024, // 向量维度
"model" : "<model-name>" // Embedding 模型名称或 Azure 部署名(如 doubao-embedding-vision-251215 或 text-embedding-3-large)
},
"max_concurrent": 10 // 最大并发 embedding 请求(默认:10)
},
"vlm": {
"api_base" : "<api-endpoint>", // API 端点地址
"api_key" : "<your-api-key>", // 模型服务 API Key(openai-codex 可选)
"provider" : "<provider-type>", // 提供商类型 (volcengine, openai, azure, openai-codex 等)
"api_version": "2025-01-01-preview", // (仅 azure)API 版本,可选,默认 "2025-01-01-preview"
"model" : "<model-name>", // VLM 模型名称或 Azure 部署名(如 doubao-seed-2-0-pro-260215 或 gpt-4-vision-preview)
"max_concurrent": 100 // 语义处理的最大并发 LLM 调用(默认:100)
}
}
注意:对于 embedding 模型,支持
volcengine(豆包)、openai、azure、jina、ollama、voyage、dashscope、minimax、cohere、vikingdb、gemini(需pip install "google-genai>=1.0.0")、litellm和local。对于 VLM 模型,常见提供商包括volcengine、openai、openai-codex、kimi、glm。
👇 展开查看您的模型服务的配置示例:
<details> <summary><b>示例 1:使用 Volcengine(豆包模型)</b></summary>{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"log": {
"level": "INFO",
"output": "stdout" // 日志输出:"stdout" 或 "file"
},
"embedding": {
"dense": {
"api_base" : "https://ark.cn-beijing.volces.com/api/v3",
"api_key" : "your-volcengine-api-key",
"provider" : "volcengine",
"dimension": 1024,
"model" : "doubao-embedding-vision-251215"
},
"max_concurrent": 10
},
"vlm": {
"api_base" : "https://ark.cn-beijing.volces.com/api/v3",
"api_key" : "your-volcengine-api-key",
"provider" : "volcengine",
"model" : "doubao-seed-2-0-pro-260215",
"max_concurrent": 100
}
}
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"log": {
"level": "INFO",
"output": "stdout" // 日志输出:"stdout" 或 "file"
},
"embedding": {
"dense": {
"api_base" : "https://api.openai.com/v1",
"api_key" : "your-openai-api-key",
"provider" : "openai",
"dimension": 3072,
"model" : "text-embedding-3-large"
},
"max_concurrent": 10
},
"vlm": {
"api_base" : "https://api.openai.com/v1",
"api_key" : "your-openai-api-key",
"provider" : "openai",
"model" : "gpt-4-vision-preview",
"max_concurrent": 100
}
}
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"log": {
"level": "INFO",
"output": "stdout"
},
"embedding": {
"dense": {
"api_base" : "https://your-resource-name.openai.azure.com",
"api_key" : "your-azure-api-key",
"provider" : "azure",
"api_version": "2025-01-01-preview",
"dimension": 1024,
"model" : "text-embedding-3-large"
},
"max_concurrent": 10
},
"vlm": {
"api_base" : "https://your-resource-name.openai.azure.com",
"api_key" : "your-azure-api-key",
"provider" : "azure",
"api_version": "2025-01-01-preview",
"model" : "gpt-4o",
"max_concurrent": 100
}
}
</details>💡 提示:
model必须填写 Azure Portal 中创建的部署名称,而非模型官方名字api_base支持*.openai.azure.com和*.cognitiveservices.azure.com两种端点格式- Embedding 和 VLM 可以使用不同的 Azure 资源和 API Key
创建配置文件后,设置环境变量指向它(Linux/macOS):
export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf # 默认值
在 Windows 上,使用以下任一方式:
PowerShell:
$env:OPENVIKING_CONFIG_FILE = "$HOME/.openviking/ov.conf"
命令提示符 (cmd.exe):
set "OPENVIKING_CONFIG_FILE=%USERPROFILE%\.openviking\ov.conf"
💡 提示:您也可以将配置文件放在其他位置,只需在环境变量中指定正确路径。
👇 展开查看您的 CLI/客户端的配置示例:
示例:用于访问本地服务器的 ovcli.conf
{
"url": "http://localhost:1933",
"timeout": 60.0,
"output": "table"
}
创建配置文件后,设置环境变量指向它(Linux/macOS):
export OPENVIKING_CLI_CONFIG_FILE=~/.openviking/ovcli.conf # 默认值
在 Windows 上,使用以下任一方式:
PowerShell:
$env:OPENVIKING_CLI_CONFIG_FILE = "$HOME/.openviking/ovcli.conf"
命令提示符 (cmd.exe):
set "OPENVIKING_CLI_CONFIG_FILE=%USERPROFILE%\.openviking\ovcli.conf"
📝 前置条件:确保您已完成上一步的配置(ov.conf 和 ovcli.conf)。
现在让我们运行一个完整的示例,体验 OpenViking 的核心功能。
openviking-server doctor
openviking-server
如果你的 vlm.provider 是 openai-codex,openviking-server doctor 已经会校验 Codex 鉴权。
或者您可以在后台运行
nohup openviking-server > /data/log/openviking.log 2>&1 &
ov status
ov add-resource https://github.com/volcengine/OpenViking # --wait
ov ls viking://resources/
ov tree viking://resources/volcengine -L 2
# 如果没有使用 --wait,等待一段时间以进行语义处理
ov find "what is openviking"
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/zh
恭喜!您已成功运行 OpenViking 🎉
VikingBot 是构建在 OpenViking 之上的 AI 智能体框架。以下是快速开始指南:
# 选项 1:从 PyPI 安装 VikingBot(推荐大多数用户使用)
pip install "openviking[bot]"
# 选项 2:从源码安装 VikingBot(用于开发)
uv pip install -e ".[bot]"
# 启动 OpenViking 服务器(同时启动 Bot)
openviking-server --with-bot
# 在另一个终端启动交互式聊天
ov chat
对于生产环境,我们建议将 OpenViking 作为独立的 HTTP 服务运行,为您的 AI 智能体提供持久、高性能的上下文支持。
🚀 在云端部署 OpenViking: 为确保最佳的存储性能和数据安全,我们建议在 火山引擎弹性计算服务 (ECS) 上使用 veLinux 操作系统进行部署。我们准备了详细的分步指南,帮助您快速上手。
| 实验组 | 任务完成率 | 成本:输入 token (总计) |
|---|---|---|
| OpenClaw(memory-core) | 35.65% | 24,611,530 |
| OpenClaw + LanceDB (-memory-core) | 44.55% | 51,574,530 |
| OpenClaw + OpenViking Plugin (-memory-core) | 52.08% | 4,264,396 |
| OpenClaw + OpenViking Plugin (+memory-core) | 51.23% | 2,099,622 |
OpenViking 有一个类似 nanobot 的机器人用于交互工作,现已可用。
--
运行第一个示例后,让我们深入了解 OpenViking 的设计理念。这五个核心概念与前面提到的解决方案一一对应,共同构建了一个完整的上下文管理系统:
我们不再将上下文视为扁平的文本切片,而是将它们统一到一个抽象的虚拟文件系统中。无论是记忆、资源还是能力,都映射到 viking:// 协议下的虚拟目录中,每个都有唯一的 URI。
这种范式赋予智能体前所未有的上下文操作能力,使它们能够像开发者一样,通过 ls 和 find 等标准命令精确、确定地定位、浏览和操作信息。这将上下文管理从模糊的语义匹配转变为直观、可追踪的"文件操作"。了解更多:Viking URI | 上下文类型
viking://
├── resources/ # 资源:项目文档、代码库、网页等
│ ├── my_project/
│ │ ├── docs/
│ │ │ ├── api/
│ │ │ └── tutorials/
│ │ └── src/
│ └── ...
├── user/ # 用户:个人偏好、习惯等
│ └── memories/
│ ├── preferences/
│ │ ├── writing_style
│ │ └── coding_habits
│ └── ...
└── agent/ # 智能体:技能、指令、任务记忆等
├── skills/
│ ├── search_code
│ ├── analyze_data
│ └── ...
├── memories/
└── instructions/
一次性将大量上下文塞入提示不仅昂贵,而且容易超出模型窗口并引入噪声。OpenViking 在写入时自动将上下文处理为三个级别:
了解更多:上下文分层
viking://resources/my_project/
├── .abstract # L0 层:摘要(~100 tokens)- 快速相关性检查
├── .overview # L1 层:概览(~2k tokens)- 理解结构和关键点
├── docs/
│ ├── .abstract # 每个目录都有对应的 L0/L1 层
│ ├── .overview
│ ├── api/
│ │ ├── .abstract
│ │ ├── .overview
│ │ ├── auth.md # L2 层:完整内容 - 按需加载
│ │ └── endpoints.md
│ └── ...
└── src/
└── ...
单一向量检索难以应对复杂的查询意图。OpenViking 设计了创新的目录递归检索策略,深度集成多种检索方法:
这种"先锁定高分目录,再精细化内容探索"的策略不仅找到语义最佳匹配的片段,还能理解信息所在的完整上下文,从而提高检索的全局性和准确性。了解更多:检索机制
OpenViking 的组织采用分层虚拟文件系统结构。所有上下文以统一格式集成,每个条目对应一个唯一的 URI(如 viking:// 路径),打破了传统的扁平黑盒管理模式,具有清晰易懂的层次结构。
检索过程采用目录递归策略。每次检索的目录浏览和文件定位轨迹被完整保留,让用户能够清晰观察问题的根源,指导检索逻辑的优化。了解更多:检索机制
OpenViking 内置了记忆自迭代循环。在每个会话结束时,开发者可以主动触发记忆提取机制。系统将异步分析任务执行结果和用户反馈,并自动更新到用户和智能体记忆目录。
这使得智能体能够通过与世界的交互"越用越聪明",实现自我进化。了解更多:会话管理
更多详情,请访问我们的完整文档。
更多详情,请参见:关于我们
OpenViking 仍处于早期阶段,有许多改进和探索的空间。我们真诚邀请每一位对 AI 智能体技术充满热情的开发者:
让我们共同努力,定义和构建 AI 智能体上下文管理的未来。旅程已经开始,期待您的参与!
本项目高度重视安全问题。 有关漏洞报告方式和受支持版本,请参见 SECURITY.md
OpenViking 项目不同组件采用不同的开源协议:
<!-- Link Definitions -->