Opening Hook
你写了一个能调用工具的 AI Agent,三天后它却像第一次认识你一样。
这不是模型的问题,是上下文管理的问题。记忆存在代码变量里,知识躺在向量库里,技能散在各个 MCP Server 中——Agent 的"大脑"被拆成了三份,每次重启就失忆一次。
OpenViking 是字节跳动火山引擎开源的上下文数据库,它把记忆、资源、技能统一抽象成一套虚拟文件系统,让 Agent 像操作 Linux 目录一样管理自己的上下文。本文记录一套可直接复制的 Docker 部署方案:从
docker-compose.yml到ov.conf模型配置,再到启动 VikingBot 说出第一句话。
Outline
OpenViking 是什么,以及为什么需要它 — 读者问题:"我为什么要多部署一个服务?" — 关键 points:上下文碎片化痛点、文件系统范式、三层加载(L0/L1/L2)、URI 定位。
部署前的三项准备 — 读者问题:"我需要提前准备好什么?" — 关键 points:Docker 环境、模型 API Key(VLM + Embedding)、本地数据目录。
编写 Docker Compose 配置 — 读者问题:"docker-compose.yml 怎么写?" — 关键 points:镜像来源、端口映射、数据卷挂载、
OPENVIKING_WITH_BOT的作用。准备 ov.conf:让容器知道调用哪个模型 — 读者问题:"模型怎么配?" — 关键 points:配置文件路径、火山引擎豆包推荐配置、OpenAI 兼容方案、必须设置
root_api_key。H3: 火山引擎豆包模型配置(推荐)
H3: OpenAI / 其他兼容模型配置
启动容器与首次健康检查 — 读者问题:"怎么确认部署成功了?" — 关键 points:
docker compose up -d、/health 和 /ready 端点、日志排查。Mac Docker 的特殊处理:端口转发方案 — 读者问题:"Mac 上访问不了 localhost:1933 怎么办?" — 关键 points:127.0.0.1 绑定限制、socat 转发方案。
第一次对话:启动 VikingBot — 读者问题:"部署完怎么用起来?" — 关键 points:
ov chat、Web Studio/studio、添加第一个资源并检索。下一步:把 OpenViking 接入你的 Agent — 读者问题:"怎么和我的现有 Agent 集成?" — 关键 points:Python SDK、Claude Code / Cursor / MCP 集成方向。
总结 — 读者问题:"我现在该做什么?" — 关键 points:部署清单回顾、数据备份提醒。
技能树
viking://
├── resources/ # 知识和规则(文档、代码、网页)
│ └── my_project/
├── user/
│ └── {user_id}/
│ ├── memories/ # 用户记忆(偏好、经验)
│ ├── resources/ # 用户私有资源
│ └── skills/ # 可调用的技能
└── agent/
└── skills/ # 全局共享技能