本教程介绍如何在 OpenClaw 环境中配置 OpenViking,使用 NVIDIA NIM API 作为 Embedding 和 VLM 后端。
OpenViking 是火山引擎开源的 AI Agent 上下文数据库。它用”虚拟文件系统”的方式管理 Agent 的记忆、资源和技能,提供:
- 分层上下文:L0摘要 / L1概览 / L2全文,按需加载节省 Token
- 语义搜索:融合目录定位与向量检索
- 自动摘要:VLM 自动生成文档摘要和概览
- 会话记忆:自动提取对话中的长期记忆
GitHub: https://github.com/volcengine/OpenViking
- Python 3.9+
- NVIDIA NIM API Key(免费注册)
- 稳定的网络连接
创建目录和配置文件:
编辑 :
NVIDIA 上的推理模型(如 kimi-k2.5)返回的 字段为空,内容在 字段里。OpenViking 期望标准的 格式,所以要用非推理模型。
- 访问 https://build.nvidia.com/
- 登录/注册账号
- 点击右上角用户名 → API Keys → Generate Key
- 复制保存(只显示一次)
建议添加到 :
创建测试脚本 :
运行:
错误:
解决: 在配置文件中明确指定 ,匹配 的输出维度。
错误:
原因: 使用了推理模型(如 kimi-k2.5),其返回格式与 OpenViking 不兼容。
解决: 换用标准模型如 。
错误:
原因: 某些 Embedding 模型(如 nv-embedqa-e5-v5)是非对称模型,需要指定 query 或 document。
解决: 使用对称模型 ,不需要 input_type。
错误:
原因: OpenViking 用文件名(不含路径)作为 URI,不同目录下的同名文件会冲突。
解决:
- 方案一:重命名文件,使用唯一名称
- 方案二:分批导入,避免同时添加同名文件
- 方案三:等待官方修复此设计问题
OpenClaw 默认使用 作为记忆后端,配合手动维护的 和 文件。这套方案够用,但有几个痛点:
- 搜索精度有限 — qmd 基于简单向量匹配,缺乏层次化理解
- 手动维护成本高 — 记忆文件需要人工整理,容易遗漏
- 缺乏自动摘要 — Agent 需要读取整个文件才能了解内容
- 无法管理大量文档 — 当 workspace 文件很多时,qmd 不够用
方式一:作为 OpenClaw 的补充记忆(推荐)
保留 qmd 作为日常轻量记忆,用 OpenViking 管理大型文档库:
Agent 工作流:
- 日常对话 → qmd 记忆(轻量、快速)
- 需要查阅文档 → OpenViking 语义搜索(精准、分层)
- Sub-agent 写作/研究 → OpenViking 提供上下文(节省 Token)
方式二:完全替代 qmd
将 OpenClaw 的所有记忆文件也导入 OpenViking:
⚠️ 目前 OpenViking 还不能直接作为 OpenClaw 的 配置项。需要通过 skill 的 CLI 工具间接调用。未来如果 OpenClaw 支持自定义记忆后端插件,可以更深度集成。
方式三:给 Sub-agent 提供上下文
写书、做研究等任务时,sub-agent 可以先搜索 OpenViking 获取相关上下文,而不是把整本书塞进 prompt:
这样一个 sub-agent 只需要加载几千 token 的相关内容,而不是整本书的 10 万+ token。
我们已经把 OpenViking 封装为 OpenClaw skill,安装后 Agent 可以直接使用:
Skill 提供的命令:
⚠️ 避免使用推理模型(如 kimi-k2.5、deepseek-r1),它们返回的格式与 OpenViking 不兼容。
- OpenViking 官网: https://www.openviking.ai
- OpenViking GitHub: https://github.com/volcengine/OpenViking
- NVIDIA NIM API: https://build.nvidia.com/
- NVIDIA API 文档: https://docs.api.nvidia.com/nim/
本教程基于 OpenViking 0.1.17 和 NVIDIA NIM API 测试通过。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/251827.html原文链接:https://javaforall.net
