mcpField
O
openviking-context-database

openviking-context-database

github.com/volcengineAgent 工作流41.1k69 次安装今天更新
代码仓库

关于 openviking-context-database

为使用 OpenViking 的 OpenClaw 插件提供操作指南,面向处理持久上下文的 Agent。内容区分记忆、会话归档、资源与技能操作,并说明远程访问和导入的安全规则。

主要功能

  1. 01记忆检索、存储与删除
  2. 02会话归档搜索与展开
  3. 03资源和 Agent Skill 搜索
  4. 04工具结果查询与读取
  5. 05仅远程插件配置

适用场景

  1. 01检索或更新已存储的用户事实
  2. 02查找归档会话中的具体细节
  3. 03搜索或读取已导入的 OpenViking 内容
  4. 04按明确请求导入资源或技能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/volcengine/openviking --skill openviking-context-database

安装后在 Claude Code 中输入/openviking-context-database确认已加载。

详细介绍

OpenViking 上下文数据库 — OpenClaw 插件操作技能

在安装并配置好 @openviking/openclaw-plugin 后使用本技能。它描述的是当前 OpenClaw 插件的实现,而非独立的 OpenViking Python SDK。

适用范围与安全规则

  • 该插件仅支持远程。它通过 HTTP 与现有的 OpenViking 服务通信,不会启动或管理 openviking-server。
  • 不要臆造 OpenViking REST 端点。请使用下文描述的已注册 OpenClaw 工具和命令。
  • Agent 可见的 add_resource 工具默认禁用(enableAddResourceTool=false)。在搜索、检索、URI 读取或搜索结果优化过程中,不要使用 add_resource。在这些流程中请使用 ov_search 和 ov_read。
  • 请使用手动 /add-resource,或仅在 add_resource 被显式启用且用户明确要求导入、添加、上传、保存或索引某个资源时,才使用 add_resource。
  • 仅在用户明确要求将 Agent Skill 导入、添加、安装或注册到 OpenViking 时,才使用 add_skill。
  • 对于本地文件和目录,请将本地路径传给插件工具。插件会通过 /api/v1/resources/temp_upload 上传它们;不要自行将原始本地文件系统路径发送到远程服务。
  • 切勿记录或回显 API 密钥。插件会将 API 密钥作为 X-API-Key / setup probe 请求头发送,并在 setup 输出中将其掩码处理。

当前架构

OpenClaw 负责 Agent 执行、提示词和工具调用。OpenViking 负责长期存续的上下文:

层级当前行为
assemble从 OpenViking 重建压缩后的会话历史,并将相关召回注入到最新一条用户消息中。
afterTurn仅将新增的一轮追加到 OpenViking 会话;当 pending_tokens >= tokenBudget * commitTokenThresholdRatio 时,可能触发异步提交。
compact运行 commit(wait=true),等待归档/提取完成,并读回最新的归档概览。
工具记忆召回/存储/遗忘、归档搜索/展开、资源/技能导入/搜索、召回轨迹查询、工具结果列表/搜索/读取。

长期记忆通常在 /compact 时或在达到阈值触发的提交时提取。在新会话中提到的一个事实,在成为长期记忆之前,可能仍作为近期会话上下文存在。

配置快速参考

先读取状态:

openclaw openviking status --json
openclaw config get plugins.entries.openviking.config
openclaw config get plugins.slots.contextEngine

核心配置位于 plugins.entries.openviking.config 下:

字段默认值用途
baseUrlhttp://127.0.0.1:1933OpenViking HTTP 端点。也可以来自 OPENVIKING_BASE_URL / OPENVIKING_URL。
apiKey空可选的 API key。也可以来自 OPENVIKING_API_KEY。
peer_rolenone记忆范围:none(共享 viking://user/<user_id>/memories)、assistant(归属于助手的记忆,位于 .../peers/<assistant_id>/memories)或 sender(归属于发送者的记忆,位于 .../peers/<sender_id>/memories)。旧版 person 会被视为 sender。
peer_prefix空当 peer_role=assistant 时,用于助手 peer_id / actor peer 值的可选前缀。
accountId / userId空用于 root-key 或受信任部署的高级租户身份请求头。
targetUriviking://~/memories旧版定向记忆搜索的默认搜索范围。
autoCapturetrue将清理后的对话轮次文本追加到 OpenViking 会话。
captureModesemanticsemantic 或 keyword;影响服务端提取过滤。
captureMaxLength24000每次捕获轮次的最大清理文本长度。
autoRecalltrue在回复前执行召回并注入相关上下文。
recallTargetTypesuser,agent省略 targetUri 时的默认目标类型。允许值:resource、user、agent。
recallResourcesfalse兼容性快捷方式,当未设置 recallTargetTypes 时会将 resource 追加到默认召回目标。
recallLimit6最多选择的召回条目数。
recallScoreThreshold0.15后处理后的最低分数。
recallMaxInjectedChars4000注入字符总数上限;放不下的完整记忆会被跳过。
commitTokenThresholdRatio0.5异步提交阈值,表示模型上下文窗口的比例(0-1,例如 0.5 = 50%);0 表示每轮都提交。
commitKeepRecentCount10afterTurn 提交后保持活跃的最近消息数。Compact 始终使用 0。
bypassSessionPatterns空类似 glob 的会话键,可完全绕过 OpenViking(* 表示单段,** 表示多段)。
emitStandardDiagnosticsfalse输出结构化的 openviking: diag {...} 行。
logFindRequestsfalse记录 find/session 写入的路由。也可通过 OPENVIKING_LOG_ROUTING=1 或 OPENVIKING_DEBUG=1 启用。
traceRecallfalse在内存中记录召回追踪。
traceRecallPersistfalse将召回追踪持久化为本地 JSONL 文件。
traceRecallDir~/.openclaw/openviking/recall-traces启用持久化时的召回追踪目录。

常规设置命令:

openclaw openviking setup --base-url <OPENVIKING_URL> --api-key <API_KEY> --json

常用变体:

openclaw openviking setup --base-url <URL> --api-key <KEY> --peer-role assistant --peer-prefix openclaw-prod --json
openclaw openviking setup --base-url <URL> --api-key <ROOT_KEY> --account-id <ACCOUNT_ID> --user-id <USER_ID> --json
openclaw openviking setup --base-url <URL> --api-key <KEY> --recall-target-types resource --json
openclaw openviking setup --base-url <URL> --api-key <KEY> --allow-offline --json
openclaw openviking setup --base-url <URL> --api-key <KEY> --force-slot --json

工具选择指南

用户意图使用
“我之前说过什么?”,偏好、决定、已知事实memory_recall
“现在记住这个”memory_store
“忘记 X”memory_forget
摘要缺少旧聊天中的确切命令/路径/片段ov_archive_search,如需要再用 ov_archive_expand
导入文档、PDF、本地目录、URL、Git 仓库、媒体附件手动 /add-resource;仅当 enableAddResourceTool=true 时使用 add_resource
导入/注册 Agent Skilladd_skill
搜索已导入的资源或技能ov_search
读取来自 ov_search 或召回追踪的确切 viking://... 命中项ov_read
解释召回/搜索为什么返回了某些内容ov_recall_trace
之前的工具结果只显示预览/引用openviking_tool_result_list、openviking_tool_result_search、openviking_tool_result_read

工具接口参考

memory_recall

对记忆/资源进行语义搜索。会话历史请使用归档工具。

参数必填描述
query是搜索查询。
limit否最多选取的结果数。默认为 recallLimit。
scoreThreshold否分数阈值 0..1。默认为 recallScoreThreshold。
targetUri否精确搜索 URI。若设置,则仅搜索此 URI。
resourceTypes否resource、user、agent 的数组;仅在省略 targetUri 时使用。

说明:省略 targetUri 时,插件会根据 resourceTypes 或已配置的 recallTargetTypes 确定搜索计划,获取多于请求数量的候选项,去重、筛除叶子记忆、重新排序,并遵守 recallMaxInjectedChars 的限制。

memory_store

立即持久化文本:写入会话并以 wait=true 提交。

参数必填描述
text是信息来源文本。
role否会话角色,默认为 user。
sessionId否现有的 OpenViking/OpenClaw 会话引用。若省略,则会创建临时的 memory-store-* 会话。
memory_forget

删除记忆。

参数必填描述
uri否精确的 viking://user/.../memories/... 记忆 URI。非记忆 URI 会被拒绝。
query否URI 未知时使用的搜索查询。
targetUri否搜索范围 URI,默认为 targetUri。
limit否搜索数量上限,默认为 5。
scoreThreshold否搜索阈值,默认为 recallScoreThreshold。

如果查询模式找到多个候选项,请报告候选项并让用户选择精确 URI;不要删除有歧义的记忆。

ov_archive_search

在当前会话归档的原始对话消息中进行关键词搜索。

参数必填描述
query是单个关键词或简短短语;优先使用名称、日期、文件路径、命令或具有辨识度的名词。
archiveId否限定在单个归档中搜索,例如 archive_002。

在确定归档细节不可用之前,至少尝试两个具体的关键词变体。

ov_archive_expand
参数必填描述
archiveId是来自 [Archive Index] 的归档 ID,例如 archive_002。

在归档搜索后使用,或者当 [Archive Index] 已指出可能包含精确细节的归档时使用。

add_resource

将资源导入 viking://resources/...。

此 Agent 工具默认禁用。导入资源时优先使用手动 /add-resource。如果 enableAddResourceTool=true 启用了该工具,仅在明确要求导入/索引时使用,不要将其用于搜索/检索优化。

参数必填描述
source是本地路径、OpenClaw 媒体附件路径、目录路径、公共 URL 或 Git URL。
to否精确的目标 URI,例如 viking://resources/project-docs。与 parent 互斥。
parent否viking://resources 下的父级 URI。与 to 互斥。
reason否导入原因/备注。
instruction否用于语义提取的处理指令。
wait否等待处理完成。

当前 OpenClaw 工具会公开上述参数。底层客户端还支持面向服务端的资源选项,例如 strict、ignore_dirs、include、exclude 和 preserve_structure,供命令/内部路径使用;除非已注册的 schema 公开这些选项,否则不要将它们传给工具。

add_skill

将 Agent 技能导入 viking://~/skills/...。

参数必填描述
source否本地 SKILL.md 路径或技能目录。必须且只能提供 source 或 data 其中一项。
data否原始 SKILL.md 内容或 MCP 工具字典。必须且只能提供 source 或 data 其中一项。
wait否等待处理完成。

Agent 技能最佳实践:技能应包含精确的 frontmatter(name、以触发条件为导向的 description、有用的 tags)、明确的范围边界、必要时明确说明“何时不应使用”,并提供带有具体参数的可执行步骤。不要在技能内容中包含机密信息。

ov_search
参数必填描述
query是搜索查询。
uri否搜索 URI。默认为资源和 Agent 技能。
limit否每个范围的最大结果数,默认为 10。

导入资源/技能后使用,或在用户要求搜索由 OpenViking 管理的知识时使用。

重要:ov_search 会返回 OpenViking 虚拟 URI,例如 viking://resources/project-docs/api.md#chunk-3。这些不是本地文件路径。不要使用文件系统读取工具读取它们;需要完整内容时,请使用确切的 URI 调用 ov_read。

ov_read

通过 /api/v1/content/read 读取一个确切 OpenViking 虚拟 URI 的完整内容。

参数必填描述
uri是ov_search 或召回跟踪结果返回的确切 viking://... URI。不接受 openviking://... 别名和本地文件路径。
ov_recall_trace
参数必填描述
turn否latest 或 all,默认为 latest。
traceId否确切的跟踪 ID。
sessionId / sessionKey / ovSessionId否按 OpenClaw/OpenViking 会话筛选。
source否auto_recall、memory_recall、ov_search 或 ov_archive_search。
resourceTypes否包含 resource、user、agent 的数组/字符串。
since / until否以毫秒为单位的 Unix 时间戳范围。
includeContent否按需读取选定/显示的 URI 内容预览。
limit否返回的最大跟踪记录数,默认为 20。

只有在 traceRecall=true 时才会生成跟踪记录;持久化查询需要 traceRecallPersist=true 且跟踪文件可访问。

外置工具结果工具

当预览中包含 viking://user/{user_id}/sessions/<session_id>/tool-results/<tool_result_id> 时使用。

工具参数
openviking_tool_result_listtool_name?、limit?(默认为 50)
openviking_tool_result_searchtool_output_ref、query、limit?(默认为 20)、context_chars?(默认为 300)
openviking_tool_result_readtool_output_ref、offset?(默认为 0)、limit?(默认为 20000,服务器路径接受 -1,表示读取所有剩余内容)

插件拒绝读取/搜索来自其他会话的工具结果引用。

斜杠命令

/add-resource ./README.md --to viking://resources/openviking-readme --wait
/add-skill ./skills/install-openviking-memory --wait
/ov-search "OpenViking install" --uri viking://resources/openviking-readme --limit=5
/ov-recall-trace --turn latest --source auto_recall --include-content

命令解析器支持带引号的参数和标志。仅适用于资源的标志不允许用于技能导入。

故障排查

症状可能原因首先采取的操作
configured=false设置未能持久化配置重新运行 openclaw openviking setup ... --json;根据 JSON error 分支处理。
slotActive=false另一个上下文引擎占用了槽位,或网关状态已过期检查 plugins.slots.contextEngine;仅在用户确认后使用 --force-slot。
health.ok=false服务不可达,或 baseUrl / 密钥错误检查 baseUrl、网络、/health 和认证。
新事实后没有长期记忆/compact 或提交/抽取尚未运行,或服务端抽取失败对于明确的记住/保存/存储意图,使用 memory_store;否则运行 /compact 或等待阈值提交,然后检查 OpenViking 服务日志。
召回遗漏共享文档未启用 resource 目标使用带 resourceTypes:["resource"] 的 memory_recall,或配置 recallTargetTypes: ["resource"]。
摘要缺少精确细节归档摘要过于粗粒度使用带具体关键词的 ov_archive_search,然后使用 ov_archive_expand。
大型工具输出预览不充分工具结果已被外部化使用带 ref 的 openviking_tool_result_search/read。
需要解释召回行为追踪已禁用,或该轮次没有追踪启用 traceRecall;可选启用 traceRecallPersist;查询 ov_recall_trace。

本仓库中的参考文档

  • README.md / README_CN.md:功能概览与快速开始。
  • INSTALL.md / INSTALL-ZH.md:安装、升级、卸载,以及 JSON 设置处理。
  • INSTALL-AGENT.md:面向 Agent 的安装工作流。
  • docs/openviking-openclaw-plugin-guide.md:全面的中文操作者/开发者指南。

评论

支持 Markdown