Skip to content

Agent Plugins 1.0 插件包

Agent Plugins 1.0 是一套与厂商无关的 AI 编码 Agent 插件打包规范。一个插件就是一个普通目录:plugin.json 清单、skills/ 下自动发现的 Agent Skills,以及可选的 mcp.json MCP 服务声明。所有符合规范的客户端都以同样的方式加载它 —— 不再需要为每个客户端各写一套接入。

OpenViking 的这个插件包位于仓库的 agent-plugins/ 目录。

目录结构

agent-plugins/
├── plugin.json                          # Agent Plugins 1.0 清单(name: openviking)
├── mcp.json                             # 一个 stdio MCP server:"openviking"
├── servers/
│   ├── mcp-proxy.mjs                    # stdio -> streamable-HTTP 代理,转发到服务端 /mcp
│   ├── config.mjs, debug-log.mjs        # 凭据 / 配置解析
│   └── shared/                          # 由 examples/memory-plugin-shared/lib 生成
├── skills/openviking-memory/SKILL.md    # 教模型完成「召回 + 沉淀」闭环
└── plugin.test.mjs                      # node --test 规范一致性校验

零 npm 依赖 —— 代理和测试只用 Node.js 标准库(需要 Node 18+ 以获得全局 fetch)。

安装

  1. 准备一个可访问的 OpenViking 服务。还没有的话,先按 快速开始 部署;本地默认端点是 http://127.0.0.1:1933
  2. 让你的 Agent Plugins 客户端指向 agent-plugins/ 目录。各客户端的安装命令或插件目录不同,请查阅其文档。加载时客户端会:
    • mcp.json 注册名为 openviking 的 MCP server,以 stdio 方式运行 node <plugin>/servers/mcp-proxy.mjs
    • skills/ 发现 openviking-memory 技能。
  3. 配置凭据(见下节)后开始会话。模型即可使用 find / search / recall / read / list / grep / glob / remember / add_resource / forget / health,较新的服务端还提供 tree / write / edit

为什么用 stdio 代理,而不是 streamable-http

OpenViking 服务端本身在 /mcp 上就是 streamable HTTP,但 mcp.json 里直接写 streamable-http 条目无法做到可移植:服务地址因部署而异(有人是 localhost,有人是远端),而规范禁止把凭据写进静态 headers。stdio 代理同时解决这两点 —— 它在运行时从与 ov CLI 相同的本地来源解析 URL 和 API Key,逐请求注入,再把 JSON-RPC 原样通过 streamable HTTP 转发。

凭据解析顺序

从高到低 —— 与 ov CLI 及其他 OpenViking 插件完全一致:

  1. 环境变量:OPENVIKING_URL(或 OPENVIKING_BASE_URL)、OPENVIKING_API_KEY(或 OPENVIKING_BEARER_TOKEN)、OPENVIKING_ACCOUNTOPENVIKING_USEROPENVIKING_PEER_ID
  2. ~/.openviking/ovcli.confurlapi_keyaccountuser)—— 可用 OPENVIKING_CLI_CONFIG_FILE 覆盖路径
  3. ~/.openviking/ov.confserver 段(url,或 host / port,以及 root_api_key)—— 可用 OPENVIKING_CONFIG_FILE 覆盖路径
  4. 默认值:http://127.0.0.1:1933,不鉴权(本地模式)
json
// ~/.openviking/ovcli.conf
{
  "url": "https://openviking.example.com",
  "api_key": "your-api-key"
}

配置文件的改动会被运行中的代理自动读取,无需重启。

调试:设置 OPENVIKING_DEBUG=1,日志以 JSON Lines 写入 ~/.openviking/logs/agent-plugins.log(路径可用 OPENVIKING_DEBUG_LOG 覆盖)。OPENVIKING_TIMEOUT_MS 可调整默认 15s 的单请求超时。

能力边界:规范不含 hooks

Agent Plugins 1.0 只覆盖 skills 和 MCP servers;hooks、commands、agents 被有意排除在本版本之外,因为它们在各客户端之间语义差异太大。因此这个包提供的是可移植的召回 + 写入能力面,由模型驱动而非生命周期事件驱动:自动会话捕获和 prompt 前自动召回不在此范围内

作为补偿,内置的 openviking-memory 技能直接把这套闭环教给模型 —— 任务开始时用 find / search / recall + read 召回,过程中和结束后用 remember / write / edit 沉淀,并给出使用召回内容时的优先级与安全规则。

如果你的 harness 支持 hooks 机制,推荐使用专属插件。 hook 驱动的召回与捕获不需要模型花费工具调用、也不依赖模型「想起来要记」,比技能驱动的闭环更省 token、也更可靠。本 Agent Plugins 包适用于没有 hooks 的 harness,或你希望用同一个包覆盖多个客户端的场景。

Claude Code、Codex、Cursor、TRAE / TRAE CN、ZCode、OpenCode、pi 共用同一个安装脚本。它会依次询问界面语言、要安装的 harness、下载源和 OpenViking 凭据,所有步骤幂等,重复运行安全:

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

GitHub 访问受限的地区,从火山引擎 TOS 镜像运行同一个脚本:

bash
bash <(curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/memory-plugin-shared/install.sh)
Harness专属集成
Claude CodeClaude Code 记忆插件
CodexCodex 记忆插件
OpenCodeOpenCode 插件
CursorCursor 记忆集成
TRAE / TRAE CNTRAE 记忆集成
pipi Coding Agent 扩展
OpenClawOpenClaw 插件 — 独立安装流程
ZCode社区集成

按规范,客户端专属的集成后续也可以放进同一个包里 —— 使用反向域名命名的目录(如 com.example.client/)或清单的 extensions 字段 —— 且不会影响其他客户端。

开发

bash
node --test agent-plugins/plugin.test.mjs

plugin.test.mjs 会校验:清单的 schema URL 及两个清单的规范版本一致、插件 name 规则、清单根字段闭集、semver、每个 skills/* 子目录都有带 name + description frontmatter 且 name 与目录同名的 SKILL.mdmcp.json 引用的文件存在且不逃逸插件根目录,以及包内所有 .mjs 都能通过 node --check

servers/shared/*.mjsexamples/memory-plugin-shared/lib 的生成副本 —— 请改共享库后重新执行 node examples/memory-plugin-shared/sync.mjs;一旦漂移,examples/memory-plugin-shared/sync.test.mjs 会失败。两个测试文件都已接入 CI。

Released under the Apache-2.0 License.