OpenViking Agent 部署 SOP 全指南:从安装、配置到问题分诊的完整流程
【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking
导读
本文基于 docs/en/getting-started/04-setup-for-agent.md 展开,系统讲解如何以最小可行路径帮助用户完成 OpenViking 服务器(openviking-server)的安装、配置、校验与启动。文章覆盖标准安装、Ollama 本地模型、Docker、Windows 与源码编译五条路径,给出ov.conf最小配置形状与各 provider 的追问清单,并逐条解析doctor工具可诊断的八大典型故障场景。读完本文,你将掌握一套可复用的、面向 Agent 自动化的 OpenViking 部署 SOP,并理解背后 openviking_cli/doctor.py、openviking_cli/setup_wizard.py、openviking/server/config.py 等核心实现的运行原理。
本文聚焦服务器端部署。如果你只需要客户端 CLI(
ov)配置,请参考 OpenViking CLI Setup;完整的服务器快速上手可参考 Server Mode 快速开始。
一、总览与基本原则
本 SOP 的最终目标是:帮助用户以最小可行路径完成 OpenViking 服务器的安装、配置、校验和启动。整个流程遵循三条核心原则:
- 默认走普通终端用户安装路径,不默认源码编译。优先使用预构建包(prebuilt packages),不要假设用户具备 Go / Rust / C++ / CMake 环境。
- 配置不确定时先问用户,不猜测。provider、model、api_base、api_key、workspace 这些关键字段,必须在用户明确确认后才能写入配置文件。
- 仅在安装明确回退到本地编译、或用户明确要求源码安装时,才进入源码构建路径。
从源码角度看,openviking-server doctor的设计正体现了"先校验、后启动"的哲学:它不需要服务器运行即可检查本地前置条件,覆盖配置文件、Python 版本、原生向量引擎、AGFS、embedding provider、VLM provider、VikingBot 鉴权与磁盘空间(见 openviking_cli/doctor.py 的模块 docstring)。而openviking-server init则是一个交互式设置向导,支持逐步设置、Ollama 推荐配置、手动编辑三种模式,并能对已有配置做分节增量更新(见 openviking_cli/setup_wizard.py)。
二、第一步:选择安装路径
SOP 的第一步是判断用户属于哪一类,从而选择对应路径。五条路径的判定条件与执行流程如下表:
| 路径 | 适用条件 | 执行流程 |
|---|---|---|
| A. 标准最小安装 | 用户只想要 OpenViking 装好并能运行;只是想试用或集成;不涉及源码级开发;不涉及修改底层原生组件 | 1. 安装 Python 包 → 2. 询问模型配置 → 3. 生成~/.openviking/ov.conf→ 4. 运行openviking-server doctor→ 5. 启动openviking-server |
| B. 本地模型安装(Ollama) | 用户明确要本地模型;明确要 Ollama;不想手工填写大量模型配置 | 1.openviking-server init→ 2.openviking-server doctor→ 3. 启动openviking-server |
| C. Docker 安装 | 用户明确要用 Docker;不想在宿主机直接装 Python 包;希望通过挂载卷持久化配置与数据 | 1. 确认是否已有ov.conf→ 2. 没有则先确认模型配置或引导在容器内运行openviking-server init→ 3. 用镜像或docker-compose.yml启动容器 → 4. 校验/health |
| D. Windows 安装 | 用户在 Windows 上;用户询问 Windows 安装步骤 | 1. 优先走标准最小安装的预构建 wheel 路径 → 2. 用 Windows shell 语法配置OPENVIKING_CONFIG_FILE→ 3. 运行openviking-server doctor→ 4. 启动openviking-server→ 5. 仅当 wheel 不可用或安装失败时才进入 Windows 本地构建路径 |
| E. 源码构建 | 用户明确要求源码安装;安装失败且错误明确指向需要本地编译;当前平台没有预构建 wheel;用户想修改或重建底层原生组件 | 说明所需工具链:Go 1.22+、Rust 1.91.1+、C++ 编译器、CMake |
其中源码构建工具链与仓库的实际技术栈吻合:OpenViking 的底层引擎包含 Rust 编写的 crates/ragfs 与 crates/ov_cli,以及 C++ 实现的 src 目录(CMakeLists.txt 定义了原生构建流程)。但请注意,这是最后的兜底选项,绝不是默认前置条件——绝大多数用户应通过预构建 wheel 或 Docker 完成安装。
三、第二步:向用户提问(先问清,再写配置)
如果用户没有提供完整的模型配置,必须先提问,不要立即写配置文件。SOP 将问题分为"必问问题"与"按 provider 的追问",并在 Docker / Windows 场景下补充额外必问项。
3.1 必问问题
使用哪个模型 provider?
openaiazurevolcengineopenai-codexollama
是否已决定:
- embedding 模型名称
- VLM 模型名称
- API key / 认证方式
storage.workspace使用哪个目录?
3.2 按 provider 的追问清单
| Provider | 需要追问的字段 |
|---|---|
openai | embedding 模型名、VLM 模型名、是否使用https://api.openai.com/v1、API key 是否就绪 |
azure | embedding deployment 名、VLM deployment 名、Azure API Base、Azure API Key、是否使用默认api_version = 2025-01-01-preview |
volcengine | embedding 模型名、VLM 模型名、是否使用https://ark.cn-beijing.volces.com/api/v3、API key 是否就绪 |
openai-codex | 是否希望通过openviking-server init完成 Codex OAuth、VLM 模型名、embedding 使用哪个 provider 和模型 |
ollama | 是否接受直接运行openviking-server init、Ollama 是否已安装、想用哪些本地 embedding / VLM 模型 |
追问逻辑与仓库实现高度一致:openai-codex场景下,Codex OAuth 令牌由openviking-server init引导登录完成,令牌保存在~/.openviking/codex_auth.json,见 examples/ov.conf.example 中的vlm_codex_example注释;ollama场景下,openviking-server启动时会通过detect_ollama_in_config检测配置中的 Ollama 地址并尝试确认服务在线,见 openviking/server/bootstrap.py。
3.3 Docker 场景的额外必问项
- 用
docker run还是docker compose? - 宿主机是否已有
~/.openviking/ov.conf? - 是否挂载宿主
~/.openviking到容器/app/.openviking? - 是否通过
OPENVIKING_CONF_CONTENT注入完整 JSON 配置?
3.4 Windows 场景的额外必问项
- 使用 PowerShell 还是 cmd.exe?
- 是否只接受预构建 wheel 安装?
- 若必须本地构建,CMake 和 MinGW 是否已安装?
四、第三步:生成 ov.conf 配置
只有在用户确认了所有必填值之后,才允许写~/.openviking/ov.conf。配置格式为 JSON,不要把 README 注释复制进 JSON 文件。
4.1 最小配置形状
{ "storage": { "workspace": "..." }, "embedding": { "dense": { "provider": "...", "api_base": "...", "api_key": "...", "model": "..." } }, "vlm": { "provider": "...", "api_base": "...", "api_key": "...", "model": "..." } }4.2 可选字段
仅在 provider 要求、README 示例明确包含、或用户明确要求时才追加:
dimension—— 向量维度。例如 Volcengine 的doubao-embedding-vision系列为 1024,Ollama 的nomic-embed-text为 768(见 examples/ov.conf.example)。api_version—— 如 Azure 默认2025-01-01-preview。max_concurrent、temperature、max_retries—— 推理参数,示例中 VLM 常用temperature: 0.0、max_retries: 2。
4.3 红线:绝对不要做的事
- 不要填写伪造的 API key
- 不要填写未经确认的路径
- 不要把 README 注释复制进 JSON 文件
- 不要猜测模型名称或私有 API 端点
从配置加载实现看,ov.conf的解析链路是:--config参数(由--config设置OPENVIKING_CONFIG_FILE环境变量)→OPENVIKING_CONFIG_FILE环境变量 →~/.openviking/ov.conf(默认),见 openviking/server/config.py 的load_server_config与 openviking_cli/utils/config/consts.py。配置必须是合法 JSON,且未知字段会被 Pydantic 模型(extra: "forbid")拒绝,这与doctor会报告未知或非法字段、而非放行一个启动时会失败的配置的行为一致(见 openviking_cli/doctor.py)。
五、第四步:执行安装与启动命令
5.1 Path A:标准最小安装
pip install openviking --upgrade --force-reinstall用户确认配置并写入~/.openviking/ov.conf后:
openviking-server doctor openviking-server启动成功后应看到类似INFO: Uvicorn running on http://0.0.0.0:1933的输出(默认端口 1933,见 openviking/server/config.py 的ServerConfig默认值)。openviking-server还支持--config /path/to/ov.conf指定配置文件、--port覆盖端口、--workers设置 uvicorn 多进程等参数(见 openviking/server/bootstrap.py)。
5.2 Path B:本地模型安装(Ollama)
openviking-server init openviking-server doctor openviking-serveropenviking-server init交互向导的三种模式:逐步设置(分别选择 embedding 与 VLM,支持云端、本地或混合)、推荐的本地设置(全 Ollama,按内存大小自动选型,一次确认)、手动(直接编辑 ov.conf)。若检测到已有配置,向导会给出"重新开始 / 更新 VLM / 更新 embedding / 更新 server 与鉴权 / 取消"的分节选项(见 openviking_cli/setup_wizard.py)。
Ollama 本地配置示例(来自 examples/ov.conf.example 的embedding_ollama_example):
{ "embedding": { "dense": { "provider": "ollama", "model": "nomic-embed-text", "api_base": "http://localhost:11434/v1", "dimension": 768, "input": "text" } } }5.3 Path C:Docker 安装
选项 1:直接运行发布镜像。若用户已有本地配置目录,优先:
docker run --rm \ -p 1933:1933 \ -v ~/.openviking:/app/.openviking \ ghcr.io/volcengine/openviking:latest要点:
- 容器内默认配置路径为
/app/.openviking/ov.conf - 容器内
HOME=/app - 优先把宿主
~/.openviking挂载到容器/app/.openviking,使配置、CLI 配置与 workspace 数据持久化 - Web Studio 由 OV 服务器自身在
http://127.0.0.1:1933/studio提供,无需额外端口
选项 2:使用docker-compose.yml。仓库根目录的 docker-compose.yml 已内置:镜像ghcr.io/volcengine/openviking:latest、端口1933:1933、卷~/.openviking:/app/.openviking,并附带了 Caddy 反向代理服务与健康检查(openviking-entrypoint --healthcheck)。从仓库根目录执行:
docker compose up -d选项 3:在容器内初始化配置。若还没有ov.conf,二选一:
- 在宿主机先生成再挂载进容器;
- 启动容器后执行:
docker exec -it openviking openviking-server init另外,镜像的入口脚本 docker/openviking-entrypoint.sh 支持通过环境变量OPENVIKING_CONF_CONTENT在首次启动时注入完整 JSON 配置(写入${CONFIG_FILE},默认为/app/.openviking/ov.conf)。仅当用户明确要求且所有配置值均已确认时才使用。
Docker 启动后校验:
curl http://localhost:1933/health5.4 Path D:Windows 安装
优先走预构建 wheel:
pip install openviking --upgrade --force-reinstall配置文件就绪后,按用户 shell 设置环境变量。
PowerShell:
$env:OPENVIKING_CONFIG_FILE = "$HOME/.openviking/ov.conf"cmd.exe:
set "OPENVIKING_CONFIG_FILE=%USERPROFILE%\.openviking\ov.conf"然后运行:
openviking-server doctor openviking-server若用户还需要 CLI 配置:
PowerShell:
$env:OPENVIKING_CLI_CONFIG_FILE = "$HOME/.openviking/ovcli.conf"cmd.exe:
set "OPENVIKING_CLI_CONFIG_FILE=%USERPROFILE%\.openviking\ovcli.conf"5.5 Path E:源码构建
仅在确认源码构建确有必要后,才要求用户准备 Go / Rust / C++ / CMake 工具链(Go 1.22+、Rust 1.91.1+、C++ 编译器、CMake)。不要一开始就把源码构建依赖呈现为默认安装前置条件。
六、第五步:问题分诊(Triage)
openviking-server doctor内置 10 项检查:Config、Python、Native Engine、AGFS、Authentication、Embedding、VLM、Ollama、VikingBot、Disk(见 openviking_cli/doctor.py),每项输出PASS / WARN / FAIL三态结果与修复建议,全部通过时返回码 0(见 openviking_cli/doctor.py)。这与本 SOP 的分诊 Case 一一对应。
Case 1:配置文件缺失、路径错误或 JSON 无法解析
先检查:
~/.openviking/ov.conf是否存在- 环境变量或
--config是否指向了错误路径 - 配置文件是否为合法 JSON
处理规则:先修复配置路径或 JSON 语法,再重跑openviking-server doctor。这与_find_config/_load_config_json的实现对应:配置文件不可读或不是合法 JSON 时返回None,检查失败(见 openviking_cli/doctor.py)。
Case 2:模型配置不完整
典型症状:
- 缺少 embedding 或 VLM 配置
- 缺少
provider/model/api_key - 只配置了
openai-codex的 VLM,而 embedding 仍然缺失
处理规则:先补齐最小必填配置;不猜测模型名或 key;若 provider 是openai-codex,提醒用户它主要覆盖 VLM 侧,embedding 仍需单独确认。
Case 3:模型服务不可达或认证不可用
先检查:
- API Base 是否正确
- API key / 认证方式是否正确
- 若用
openai-codex,是否已通过openviking-server init完成 OAuth - 若用 Ollama,服务是否真正在运行
处理规则:先修复 provider 配置与认证状态;Ollama 优先推荐:
openviking-server init然后重跑:
openviking-server doctorCase 4:本地依赖或打包产物不可用
典型症状:
- 原生引擎模块无法导入
- AGFS / RAGFS 相关绑定不可用
- 安装后缺少打包产物
处理规则:先尝试标准重装:
pip install openviking --upgrade --force-reinstall仍失败再决定是否进入源码构建路径;不要立即要求完整的本地构建工具链。
Case 5:安装回退到本地编译
先确认原因:
- 当前平台没有兼容 wheel
- 用户本来就在做源码安装
- 预构建产物不可用
处理规则:确认源码构建路径后才引入 Go / Rust / C++ / CMake;在 Windows 上,本地编译通常先涉及 CMake 和 MinGW;不要把源码构建依赖呈现为默认安装前提。
Case 6:Windows 安装失败
按顺序检查:
- 当前 Python 版本 / 架构是否匹配预构建 wheel
- 安装是否真的回退到了源码编译
- PowerShell 或 cmd.exe 的环境变量是否设置正确
- 若发生本地编译,是否缺少 CMake / MinGW
处理规则:先修复 wheel、路径与环境变量问题;仅在明确需要本地编译时才添加构建依赖。
Case 7:Docker 启动但 OpenViking 不可用
先检查:
~/.openviking是否正确挂载到/app/.openviking- 容器内
/app/.openviking/ov.conf是否存在 - 模型配置是否完整
curl http://localhost:1933/health是否成功- 容器是否仍需要
openviking-server init
处理规则:先修复卷挂载与配置,再校验 provider、model 与认证设置。
Case 8:用户不知道选什么模型
此时不要写配置。引导规则:
- 若用户已有某云厂商账号,优先用该厂商的 provider
- 若用户想本地运行,优先 Ollama +
openviking-server init - 若用户想用
openai-codex,提醒其主要用于解决 VLM 侧,embedding 需单独配置
七、doctor 与 init:两条关键命令的底层逻辑
理解这两条命令,有助于在自动化场景(Agent 代操作)中正确编排流程:
openviking-server doctor与ov health不同:后者只 ping 一个运行中的服务器,前者不要求服务器运行,在本地完成全套前置检查(配置、Python、原生引擎、AGFS、鉴权、embedding、VLM、Ollama、VikingBot、磁盘)。它甚至包含认证健康检查:在api_key模式下,VikingBot 必须使用 User API key(而非 root key),doctor会据此给出 PASS / WARN / FAIL 与修复建议(见 openviking_cli/doctor.py)。因此 SOP 中"写配置 → doctor → 启动"的顺序,本质上是用 doctor 把配置错误、模型不可达等绝大多数启动期故障提前暴露出来。openviking-server init是交互式设置向导,除生成配置外还承担特殊职责:引导 Codex OAuth 登录、按机器内存推荐 Ollama 本地模型、对已有配置做分节更新(见 openviking_cli/setup_wizard.py)。这就是 SOP 中 Ollama 与 openai-codex 两条路径都优先指向init的原因——它把"问问题 + 写配置 + 处理认证"合并成了一个人机交互闭环。
八、常见配置参考:一份可扩展的 ov.conf
仓库根目录的 examples/ov.conf.example 提供了远超最小配置的完整示例。除embedding.dense与vlm外,还包含:
server:host(默认0.0.0.0)、port(默认 1933)、root_api_key、cors_origins、agent_evolution、observability(metrics / traces / logs 导出)storage:workspace、vectordb(默认backend: "local",也支持 Volcengine VikingDB)、agfs(local / s3)rerank:VikingDB 或 OpenAI 兼容的重排服务(如 DashScopeqwen3-rerank),threshold默认 0.1encryption:本地 AES 密钥文件~/.openviking/master.key,或 HashiCorp Vault / Volcengine KMSvlm多种订阅示例:Volcengine Plan(api/plan/v3)、Codex(OAuth,https://chatgpt.com/backend-api/codex)、Kimi Coding、GLM(Z.AI,https://api.z.ai/api/coding/paas/v4)
需要强调两点事实边界:其一,vlm.max_tokens未设置时,记忆抽取默认需要约 32768 输出 token 以避免截断完整记忆文件重写,若所用模型输出上限较低(如 gpt-4o-mini 为 16384),应显式设置max_tokens覆盖(见 examples/ov.conf.example 中_max_tokens_comment);其二,encryption.api_key_hashing.enabled默认关闭,开启文件加密后 API key 以明文形式存于 AES-GCM 加密文件内(见 openviking/server/config.py)。
九、验证闭环与下一步
无论走哪条路径,最终都要形成"配置 → doctor → 启动 → /health 校验"的闭环:
# 1. 配置校验(不要求服务器运行) openviking-server doctor # 2. 启动 openviking-server # 3. 健康检查(仅确认进程在运行,不替代 doctor) curl http://localhost:1933/health # {"status": "ok"}注意:doctor检查的是本地配置、模型访问与认证就绪状态;curl /health只确认服务器进程已经启动(见 docs/en/getting-started/03-quickstart-server.md)。服务器就绪后,可通过~/.openviking/ovcli.conf配置客户端 CLI({"url": "http://localhost:1933", "api_key": "your-key"}),用openviking observer system、openviking add-resource、openviking find等命令接入 Agent 记忆与知识检索,详见 OpenViking CLI Setup 与 Server Mode 快速开始。
结语
本 SOP 的核心价值在于把"不确定就提问、可验证就校验、能预构建就不编译"固化成可执行流程:通过五条路径分类、按 provider 的追问清单、最小配置形状与八大分诊 Case,任何 Agent 或工程师都能在用户配合下,用最少的猜测和最小的摩擦把 OpenViking 服务器跑起来。配合openviking-server doctor的 10 项本地自检与openviking-server init的交互向导,绝大多数配置与连通性问题都能在启动前被提前发现并修复。
【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考