面向 AI 助手:本页的 Markdown 版本位于 https://ark.volcengine.com/region:cn-beijing/docs/agent-plan-personal-openviking-memory.md,全部文档索引见 https://ark.volcengine.com/llms.txt。

Agent 记忆

火山引擎 OpenViking Context 为 Agent Plan Harness 层提供 Agent 记忆服务。OpenViking Context 是基于 开源 OpenViking 内核构建的全托管云服务,是一款面向 AI Agents 的上下文数据库,以“虚拟文件系统 + 分层上下文 + 目录递归检索 + 可观测与自迭代”为核心思想,通过将 Memory、Resource、Skill 统一抽象为文件的理念,解决 AI Agent 在执行对话和长周期任务时的复杂上下文管理难题,为 AI Agent 开发者提供结构化、可追溯且低成本的上下文工程解决方案。

能力介绍#

OpenViking Context 适用于需要长程记忆、复杂知识管理和多 Agent 协作的各类 AI 应用场景,核心价值在于提供结构化、可迭代的上下文管理能力。

  • Agent 长期记忆升级:作为 Agent 产品的记忆插件,为 Agent 提供记忆沉淀、检索和自进化能力,解决长周期任务中常见的遗忘和高昂成本问题。
  • 全局知识资产沉淀:支持将多个代码仓库、文档库等知识源统一导入 OpenViking Context,构建可语义检索的知识库,赋能代码助手与研发场景。
  • 多 Agent 协作共享:多个独立 Agent 可共享同一个 OpenViking Context 实例作为记忆与知识中枢,实现高效协同。
  • 多租户安全隔离:利用多租户共享与隔离能力,为团队或企业构建安全可控的知识与记忆中心,让智能体在可控的上下文环境中执行任务。

使用限制#

  • 仅支持完成了实名认证的企业用户和个人用户使用。
  • 仅支持在北京地域使用 Agent Plan 套餐的 AFP 额度抵扣火山引擎 OpenViking Context 资源的使用费用。
  • 仅支持 Agent Plan 个人版、OpenViking Context 个人版。
  • 如果您是子账号,首次使用时需联系主账号授权 VikingdbFullAccess 策略。
  • 火山引擎官网账号未欠费(账户余额 ≥ 0)。

使用 OpenViking Context#

步骤一:订阅套餐并开通 Agent 记忆#

  1. 在 开通管理-Agent Plan 页面购买 Agent Plan 个人版套餐。套餐说明参见套餐概览。

  2. 在控制台单击Harness,开启 Agent 记忆的抵扣开关。

    memory1.png

步骤二:创建数据库#

在Harness区域,找到 Agent 记忆卡片,单击配置使用进入 OpenViking Context 页面,根据页面提示开通服务并创建数据库。

memory2.png

步骤三:接入 Agent#

OpenViking Context 支持 MCP、CLI、API、SDK 接入您的自研 Agent 框架,同时对主流 Agent 框架进行生态适配。

认证说明#

Agent 接入 OpenViking 时,必须使用 OpenViking 的 API Key 作为唯一认证,并关联到对应的数据。

OpenViking API Key 可在 OpenViking Context 控制台 的用户管理页面查看与复制。
image-20260619-205141-807.png

主流 Agent 集成#

步骤 1:安装

Bash
bash <(curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/claude-code-memory-plugin/setup-helper/install.sh)

该脚本将自动检查依赖项、配置 OpenViking 连接并完成插件安装,支持重复运行(幂等操作)。
安装完成后,需在当前终端激活 claude 的封装函数(wrapper),或者直接打开一个新的终端窗口:

Bash
source ~/.openviking/openviking-repo/examples/claude-code-memory-plugin/setup-helper/wrapper.sh

使用一段时间后,即便在全新的对话中提及过往的话题,Claude Code 也能准确回忆起来。

步骤 2:验证

Bash
type claude

在 type claude 显示为 shell function 的终端中运行 claude 启动,随后:

  • 输入 /plugins:在 Installed 列表中应能找到 openviking-memory(其子项openviking MCP 应显示为已连接状态)。
  • 输入/mcp:OpenViking 对应的条目应显示您的服务器 URL 及有效的认证信息。
  • 输入 /openviking-memory:ov:查看服务器状态、身份信息、召回/注入的统计数据以及功能开关状态。
    若插件未正常工作,可设置环境变量 OPENVIKING_DEBUG=1,并查看日志文件 ~/.openviking/logs/cc-hooks.log 以排查问题。

前提条件:您已经在本地或云服务器上部署了 OpenClaw 2026.5.2 或更新版本。

步骤 1:安装 OpenViking
在你的 OpenClaw 的机器终端,执行以下命令以安装 OpenViking Plugin。

Bash
openclaw plugins install clawhub:@openviking/openclaw-plugin && openclaw openviking setup

步骤 2:配置信息
根据提示配置以下信息:

  • Base URL:https://api.vikingdb.cn-beijing.volces.com/openviking
  • API Key:在 OpenViking Context 控制台的用户管理页面复制 API Key,具体参见 认证说明。

步骤 3:重启 OpenClaw

复制以下指令到 Agent 终端以重启 OpenClaw,重启后控制台将自动判断 Agent 接入状态。

Bash
openclaw gateway restart

步骤1:配置
运行 Hermes 记忆配置向导:

Bash
hermes memory setup

配置以下信息:

  • OpenViking 服务 URL: 自托管服务器 或 火山引擎 OpenViking Context
  • API Key: 火山引擎 OpenViking Context 时填 API Key,具体参见 认证说明。
  • 租户 account / user / agent ID:多租户部署时使用

配置保存在 Hermes 的 config.yaml 和 .env 文件中。

步骤2:验证

Bash
hermes memory status

配置完成后,Hermes 自动使用 OpenViking 作为长期记忆——viking_remember、viking_recall 等记忆工具即刻可用。

步骤 1:安装

Bash
bash <(curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/codex-memory-plugin/setup-helper/install.sh)

该脚本会自动检查依赖、配置 OpenViking 连接并注册插件。所有步骤均具有幂等性,可安全地重复执行。
安装完成后,在当前终端激活 codex 封装函数,或重新打开一个终端窗口。

Bash
source ~/.openviking/openviking-repo/examples/codex-memory-plugin/setup-helper/wrapper.sh

# 首次启动需执行 /hooks 进行一次安全审批
codex

步骤 2:验证

Bash
type codex

进入 Codex 后,插件将在每次输入前自动召回记忆。将环境变量 OPENVIKING_DEBUG 设置为 1,可将事件日志输出至 ~/.openviking/logs/codex-hooks.log。

CLI 接入#

步骤1:安装 OpenViking CLI 并进入配置流程

Bash
npm i -g @openviking/cli && ov config

步骤2: 配置信息
按提示填写以下信息:

  • Base URL:https://api.vikingdb.cn-beijing.volces.com/openviking
  • API Key:在 OpenViking Context 控制台的用户管理页面复制 API Key,具体参见 认证说明。

步骤3:查看 CLI 用法

Bash
ov --help

将下方提示词复制给您的 AI 助手(Claude Code、Codex、Cursor、TraeCode 等),它会自动完成 OpenViking CLI 安装、配置和用法学习:

Plain
请先向用户询问 OpenViking API Key,并记为 OPENVIKING_API_KEY。

请在 ~/.openviking/ovcli.conf 写入以下内容:
{
  "url": "https://api.vikingdb.cn-beijing.volces.com/openviking",
  "api_key": "<OPENVIKING_API_KEY>"
}

如发现 ~/.openviking/ovcli.conf 已存在且内容冲突,请先询问用户是否备份原文件,并在得到确认后再覆盖。

请安装 OpenViking CLI:
npm i -g @openviking/cli

安装完成后,请运行:
ov --help

请探索 CLI 用法,并把 OpenViking CLI 的使用方式写入你的长期记忆。

MCP 接入#

步骤1:MCP 配置
以下为 MCP 配置示例,将 <OPENVIKING_API_KEY> 替换为 OpenViking API Key,具体参见认证说明。

JSON
{
  "mcpServers": {
    "ov-mcp-server": {
      "url": "https://api.vikingdb.cn-beijing.volces.com/openviking/mcp",
      "headers": {
        "Authorization": "Bearer <OPENVIKING_API_KEY>"
      }
    }
  }
}

步骤2:测试 MCP 工具连通性

Bash
ov health

SDK 接入#

步骤1:安装 OpenViking

Bash
pip install openviking --upgrade --force-reinstall

步骤2:初始化客户端

将控制台用户管理页面中展示的 API Key 复制到你的 Agent 运行环境中,建议通过环境变量或安全配置中心进行注入,而不要直接硬编码在代码里。具体参见认证说明。

Bash
export OPENVIKING_API_KEY="your-api-key"
Python
import os
import openviking as ov

client = ov.SyncHTTPClient(
    url="https://api.vikingdb.cn-beijing.volces.com/openviking",
    api_key=os.environ["OPENVIKING_API_KEY"],
    agent_id="your-agent-id", # 自定义 agent_id,用于隔离 Agent 侧上下文
    timeout=120.0,
)
client.initialize()

步骤3:写入资源
资源写入用于把外部知识导入 OpenViking Context。SDK 可以直接接收本地文件路径、目录路径或远端 URL,并自动处理上传细节。

Python
file_path = "your-file-path"
resource_to = "your-resource-path"  # e.g. viking://resources/demo/api.md
reason = "your-reason"  # e.g. External API documentation

result = client.add_resource(
    path=file_path,
    to=resource_to,
    reason=reason,
    wait=True,
)

print(result)

步骤4:写入记忆
记忆写入建议通过会话方式完成。下面示例演示如何将一条用户消息写入会话,并通过提交触发后续记忆提取。

Python
text = "your-message-text"  # e.g. I am a developer

session = client.create_session()
session_id = session["result"]["session_id"] if "result" in session else session["session_id"]

client.add_message(
    session_id,
    "user",
    parts=[{"type": "text", "text": text}],
)

result = client.commit_session(session_id)
print(result)

API 接入#

如果您希望通过平台网关、工作流引擎、低代码平台直接调用接口,推荐使用 HTTP API 接入。

步骤1:写入资源
对于 HTTP 接口,本地文件不能直接作为path传给 /api/v1/resouces,需先上传本地文件获取temp_file_id,再调用 /api/v1/resouces。

Python
import json
from pathlib import Path

import requests

url = "https://api.vikingdb.cn-beijing.volces.com/openviking"
api_key = "your-api-key" #可在用户管理页面复制
agent_id = "your-agent-id" #自定义agent-id
file_path = Path("your-file-path")  # e.g. test.txt
resource_to = "your-resource-path"  # e.g. viking://resources/demo/test.txt
reason = "your-reason"  # e.g. External API documentation

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + api_key,
    "X-OpenViking-Agent": agent_id,
}


def post_json(path: str, payload: dict, timeout: float):
    response = requests.post(
        f"{url}{path}",
        headers=headers,
        json=payload,
        timeout=timeout,
    )
    response.raise_for_status()
    return response.json()


with file_path.open("rb") as file:
    result = requests.post(
        f"{url}/api/v1/resources/temp_upload",
        headers={
            "Authorization": "Bearer " + api_key,
            "X-OpenViking-Agent": agent_id,
        },
        files={"file": (file_path.name, file, "application/octet-stream")},
        timeout=120.0,
    )

result.raise_for_status()
result = result.json()
print(json.dumps(result, ensure_ascii=False, indent=2))

temp_file_id = result["result"]["temp_file_id"]

result = post_json(
    "/api/v1/resources",
    {
        "temp_file_id": temp_file_id,
        "source_name": file_path.name,
        "to": resource_to,
        "reason": reason,
    },
    120.0,
)

print(json.dumps(result, ensure_ascii=False, indent=2))

步骤2:写入记忆

通过 API 写入记忆时,同样遵循“创建会话 - 添加消息 - 提交会话”的流程。

Python
import json
import requests

url = "https://api.vikingdb.cn-beijing.volces.com/openviking"
api_key = "your-api-key" #可在【用户管理页面】复制
agent_id = "your-agent-id" #自定义agent-id
text = "your-message-text"  # e.g. I am a developer

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + api_key,
    "X-OpenViking-Agent": agent_id,
}


def post_json(path: str, payload: dict, timeout: float):
    response = requests.post(
        f"{url}{path}",
        headers=headers,
        json=payload,
        timeout=timeout,
    )
    response.raise_for_status()
    return response.json()


session = post_json("/api/v1/sessions", {}, 360.0)
session_id = session["result"]["session_id"]

post_json(
    f"/api/v1/sessions/{session_id}/messages",
    {
        "role": "user",
        "parts": [{"type": "text", "text": text}],
    },
    360.0,
)

result = post_json(
    f"/api/v1/sessions/{session_id}/commit",
    {"telemetry": False},
    360.0,
)

print(json.dumps(result, ensure_ascii=False, indent=2))

计费说明#

  • 未开启超额后付费:请求调用产生的费用使用套餐内 AFP 进行抵扣,不消耗其他资源包或账户余额。抵扣规则参见 套餐内 AFP 抵扣规则。
  • 开启超额后付费:在套餐周期内额度未用尽时优先抵扣套餐额度;当套餐周期内额度用尽时,无需修改任何配置信息,系统将自动切换至超额后付费模式继续使用,并产生后付费账单。具体规则与操作参见 超额后付费规则 和 超额后付费管理。

实践教程#

常见问题#

  • 我想保留 OpenViking 服务,仅想从 Agent Plan 抵扣切换到官网付费,要如何操作?

    在 Agent Plan 页面关闭抵扣后,立即进入 OpenViking Context 控制台 重新开通 OpenViking 商品即可。

  • 我想保留 OpenViking 服务,仅想从官网付费切换到 Agent Plan 抵扣,要如何操作?

    下单个人版 Agent Plan 套餐,并在 Agent Plan 页面开启抵扣即可。

  • Agent Plan 额度不足且未开通超额后付费,导致服务无法使用,如何恢复?

    开启超额后付费立即恢复,通过官网出账;或升级 Agent Plan 套餐扩充 AFP 额度,待下一个扣费周期扣减成功即可恢复,最长 1 小时;或升级后 oncall 客服人工恢复。

服务协议#