字节跳动开源的 Agent 上下文数据库。通过 viking:// 文件系统协议统一管理记忆、资源和技能,L0/L1/L2 三层按需加载,token 消耗降低 83-96%。
能力说明文件系统协议viking:// 统一管理 resources/user/agent 三类上下文L0/L1/L2 分层摘要(~100 tokens) / 概览(~2k tokens) / 全文,按需加载语义检索目录递归检索 + 向量匹配会话记忆自动提取长期记忆,跨会话保持Token 节省对比全量加载,输入 token 降低 83%~96%
bash
bash scripts/install-skill.sh
脚本会将 skill 复制到 OpenClaw 的 skills 目录(自动检测路径),然后在 OpenClaw 中说 "refresh skills" 即可发现。
skill 安装完成后,运行以下命令安装 OpenViking 本体:
bash
bash scripts/install.sh
自动检测 Python >= 3.10,安装 openviking 包,创建工作目录,可选安装 Rust CLI ( ov)。
bash
bash scripts/setup-config.sh
支持的模型提供商:
提供商VLM 模型Embedding 模型openaigpt-4otext-embedding-3-large (dim=3072)volcenginedoubao-seed-2-0-pro-260215doubao-embedding-vision-250615 (dim=1024)litellmclaude-3-5-sonnet / deepseek-chat—NVIDIA NIMmeta/llama-3.3-70b-instructnvidia/nv-embed-v1 (dim=4096)
注意:避免使用推理模型 (kimi-k2.5, deepseek-r1),它们的
reasoning字段与 OpenViking 不兼容。
bash
openviking-server
# 或后台运行:
nohup openviking-server > ~/.openviking/server.log 2>&1 &
通过 scripts/viking.py 与 OpenViking 交互:
bash
python3 scripts/viking.py <command> [args]
命令功能示例add <path_or_url>添加资源(文件/URL/目录)viking.py add ./docs/``search <query>语义搜索viking.py search "认证逻辑"``ls [uri]浏览资源目录viking.py ls viking://resources/``tree [uri]树形展示viking.py tree viking://resources/ -L 2``abstract <uri>L0 摘要 (~100 tokens)viking.py abstract viking://resources/proj``overview <uri>L1 概览 (~2k tokens)viking.py overview viking://resources/proj``read <uri>L2 全文viking.py read viking://resources/proj/api.md``info检查服务状态viking.py info``commit提取当前会话记忆viking.py commit``stats查看 token 消耗统计viking.py stats``stats --reset重置统计数据viking.py stats --reset
每次调用 search、 abstract、 overview、 read 时自动追踪:
每次命令结尾自动输出一行会话累计摘要:
text
📊 会话累计 | 实际: 2,300 tokens | 全量: 48,000 tokens | 节省: 45,700 (95.2%)
使用 stats 命令查看完整的逐操作明细表:
bash
python3 scripts/viking.py stats
输出示例:
text
═══ Token 消耗统计 ═══
会话开始: 2026-03-19 19:30:00
操作次数: 4
# 时间 操作 层级 实际 全量 节省 URI
──── ────────── ────────── ───── ──────── ──────── ──────── ──────────────────
1 19:30:05 search L0 300 48,000 47,700 用户认证 鉴权
2 19:30:12 overview L1 1,800 15,000 13,200 viking://resources/auth
3 19:30:18 abstract L0 80 8,000 7,920 viking://resources/db
4 19:30:25 read L2 3,200 3,200 0 viking://resources/auth/jwt
┌─────────────────────────────────────┐
│ 全量加载 (传统方式): 74,200 tokens │
│ 实际消耗 (分层加载): 5,380 tokens │
│ 节省 token 数量: 68,820 tokens │
│ 节省比例: 92.8% │
└─────────────────────────────────────┘
统计数据持久化在 ~/.openviking/session_stats.json,跨命令调用累积。新会话可用 stats --reset 重置。
收到开发需求(如"帮我写一个用户认证模块")时:
Step 1 — L0 快速扫描(~300 tokens)
bash
python3 scripts/viking.py search "用户认证 鉴权 登录"
用 L0 摘要判断哪些资源相关,过滤无关内容。
Step 2 — L1 概览决策(~2k tokens/资源)
bash
python3 scripts/viking.py overview viking://resources/auth-docs
理解架构和技术选型,制定实现计划。
Step 3 — L2 按需深读(仅必要文件)
bash
python3 scripts/viking.py read viking://resources/auth-docs/jwt-config.md
只加载写代码需要的具体文件。
bash
python3 scripts/demo-token-compare.py ./your-project-docs/
方案Token 消耗说明全量加载 (传统 RAG)50,000所有文档塞进 promptL0 扫描 + L1 概览3,000分层按需,仅摘要和概览L0 + L1 + L2 按需~8,000最终只深读 2-3 个必要文件**节省比例****84%~94%**相比全量加载
问题原因解决Dense vector dimension mismatchembedding 维度配置错误检查 ov.conf 中的 dimension 与模型匹配NoneType is not subscriptable使用了推理模型换用 gpt-4o 或 llama-3.3-70binput_type required使用了非对称 embedding换用对称模型如 nvidia/nv-embed-v1搜索无结果语义处理未完成添加资源后等待: viking.py add --wait服务连接失败服务器未启动运行 openviking-server