用 Agent Plugins 1.0 统一打包 OpenViking 记忆能力:一份插件包接入所有 AI 编码 Agent 📅 发布时间:2026/9/11 8:15:07 👁 浏览次数: 用 Agent Plugins 1.0 统一打包 OpenViking 记忆能力一份插件包接入所有 AI 编码 Agent【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVikingOpenViking 在仓库的agent-plugins/目录中提供了一份符合 Agent Plugins 1.0 规范的便携插件包以plugin.json声明清单、skills/自动发现技能、mcp.json声明 MCP 服务器让任何遵循该规范的客户端Cursor、VS Code、Amazon/OpenAI 侧客户端等以完全一致的方式加载同一份语义长期记忆 上下文引擎能力。读完本文你将掌握该插件包的目录结构与真实清单内容、stdio 代理的传输原理与凭据解析链、模型驱动的记忆召回—持久化循环以及如何运行一致性测试与参与开发。Agent Plugins 1.0 是什么为什么 OpenViking 需要它Agent Plugins 1.0 是一种与厂商无关的打包格式用于扩展 AI 编码 Agent。一个插件就是一个普通目录包含三部分plugin.json—— 清单manifest声明插件的名称、版本、作者、许可与关键字skills/—— Agent Skills 目录客户端自动发现其中的技能Skillmcp.json—— 可选的 MCP 服务器声明。对 OpenViking 而言这意味着一套包、多处复用不再为每个客户端各写一套集成代码而是一份符合规范的包被所有客户端以相同方式加载。agent-plugins/就是这个包的实现。包内结构一个零 npm 依赖的目录agent-plugins/ ├── plugin.json # Agent Plugins 1.0 清单name: openviking ├── mcp.json # 一个 stdio MCP 服务器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 # 教模型执行 recall persist 循环 └── plugin.test.mjs # node --test 一致性检查整个包零 npm 依赖代理与测试只依赖 Node.js 标准库全局fetch需要 Node 18。清单plugin.json的真实内容agent-plugins/plugin.json声明了插件身份与用途{ $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json, name: openviking, version: 0.1.0, description: Semantic long-term memory and context engine for coding agents. Recall prior knowledge with the find/search/read MCP tools and persist durable facts with remember/write, backed by an OpenViking server., author: { name: Volcano Engine }, license: AGPL-3.0, keywords: [memory, long-term-memory, context-engine, semantic-search, mcp, openviking] }MCP 服务器声明mcp.json的真实内容agent-plugins/mcp.json声明了一个 stdio 类型的 MCP 服务器客户端加载后会执行{ $schema: https://agent-plugins.org/schemas/1.0.0/mcp.schema.json, mcpServers: { openviking: { type: stdio, command: node, args: [${PLUGIN_ROOT}/servers/mcp-proxy.mjs] } } }注意${PLUGIN_ROOT}占位符规范允许它在args、env、cwd中被客户端展开为插件根目录而command必须是单个可执行 token不允许含空格或占位符这正是plugin.test.mjs会校验的规则之一见下文一致性测试。安装三步接入任意符合规范的客户端准备一个可达的 OpenViking 服务器。若还没有参考 Quickstart本地默认端点为http://127.0.0.1:1933。把符合 Agent Plugins 规范的客户端指向agent-plugins/目录。每个客户端有自己的安装命令或插件目录请查阅其文档。加载时客户端会自动从mcp.json注册名为openviking的 MCP 服务器以 stdio 方式运行node plugin/servers/mcp-proxy.mjs从skills/发现openviking-memory技能。配置凭据见下节并开始会话。模型即可获得find/search/read/list/grep/glob/remember/add_resource/forget/health工具较新的服务器上还会多出tree/write/edit。为什么用 stdio 代理而不是streamable-http入口OpenViking 服务器本身就在/mcp提供 streamable HTTP 能力但直接在mcp.json里写streamable-http入口无法做到可移植原因有二服务器 URL 因部署而异对 A 用户是localhost对 B 用户是远程端点静态配置无法兼顾规范禁止在静态headers中携带凭据API Key 不能写死在mcp.json的 headers 里。stdio 代理在运行时解决这两点它从与ovCLI 相同的本地凭据源读取 URL 与 API Key见下节按请求注入并将 JSON-RPC 原样转发到服务器的 streamable HTTP 端点。传输层实现要点源码级代理主体在agent-plugins/servers/mcp-proxy.mjs其核心传输逻辑来自生成文件agent-plugins/servers/shared/mcp-proxy-core.mjs值得注意的实现细节协议版本协商代理始终以自身当前版本默认2025-06-18发送MCP-Protocol-Version头initialize响应中若服务器协商了更低版本则降级——绝不转发客户端未协商的版本号否则严格的 upstream 会在协商开始前就以 HTTP 400 拒绝源码注释原意。会话管理与重连代理跟踪Mcp-Session-Id收到 400/404会话失效或 401/403认证失败时自动重新发起initialize并重放请求认证失败时还会先检查凭据文件是否变化变化则热重载后重连。并发控制通过信号量将并发请求限制为 16MAX_CONCURRENT_REQUESTS避免打爆上游。错误映射超时AbortError映射为-32004并提示服务器可能仍在计算rerank 可能较慢可检查 /health 或调大OPENVIKING_TIMEOUT_MS认证失败映射为-32001并提示检查~/.openviking/ovcli.conf或OPENVIKING_API_KEY——两类错误被刻意区分避免误诊。协议洁净的 stdout所有写入 stdout 的消息经串行队列stdoutChain输出调试日志绝不污染协议流。凭据热加载代理快照被监视配置文件mtime:size变化时自动重载——这就是改配置文件无需重启的实现基础。凭据解析链与ovCLI 完全一致代理的配置加载在agent-plugins/servers/config.mjs优先级从高到低与ovCLI 及其余 OpenViking 插件一致环境变量OPENVIKING_URL或OPENVIKING_BASE_URL、OPENVIKING_API_KEY或OPENVIKING_BEARER_TOKEN两者均以 Bearer 发送、OPENVIKING_ACCOUNT、OPENVIKING_USER、OPENVIKING_PEER_ID~/.openviking/ovcli.confurl、api_key、account、user——可用OPENVIKING_CLI_CONFIG_FILE覆盖路径~/.openviking/ov.conf的server段url或host/port以及root_api_key——可用OPENVIKING_CONFIG_FILE覆盖路径默认值http://127.0.0.1:1933无认证本地模式。例如~/.openviking/ovcli.conf{ url: https://openviking.example.com, api_key: your-api-key }从源码看baseUrl的推导还有两个细节其一0.0.0.0会被替换为127.0.0.1其二URL 末尾多余的斜杠会被去除replace(/\/$/, )。apiKey的解析顺序为OPENVIKING_BEARER_TOKEN→OPENVIKING_API_KEY→cliFile.api_key→server.root_api_key空串兜底。运行中的代理会感知配置文件变更而无需重启通过监听配置文件的 mtime/size 快照。调试相关环境变量OPENVIKING_DEBUG1向~/.openviking/logs/agent-plugins.log写入 JSON Lines 日志每条形如{ ts, hook, stage, data }或{ ts, hook, stage, error }可用OPENVIKING_DEBUG_LOG覆盖日志路径未开启时日志函数是零成本的 no-opOPENVIKING_TIMEOUT_MS调整默认 15s 的每请求超时源码中下限被钳制为 1000ms。模型驱动的记忆循环openviking-memory技能由于 Agent Plugins 1.0 不包含 hooks本包不做自动捕获与自动召回而是通过agent-plugins/skills/openviking-memory/SKILL.md教会模型用 MCP 工具自己驱动召回—持久化整个循环。技能的核心工具集所有受支持部署上均可用召回find、search、read、list、grep、glob持久化remember、add_resource维护forget、health部分部署还会注册可选工具tree、write、edit、list_watches、cancel_watch——是否注册取决于服务器版本与托管模式托管云会裁掉部分工具使用前应先查看会话中已注册的工具列表详见 references/optional-tools.md绝不调用未注册的工具也不得回退到裸 HTTP。若会话中完全没有 OpenViking 工具则继续执行、不使用记忆。任务开始时召回Recall先判断该请求是否值得检索可执行或多步工作、涉及可能见过的系统、故障恢复——这些都该检索闲聊与一次性琐碎问题跳过。从任务目标、领域对象、预期操作、约束构建一条简洁查询失败恢复时把失败操作与错误信息中稳定的部分一并放入查询。调用find快速、带排序的结果URI 摘要 分数limit取 5~10需要更深意图分析时用search或使用search配合modecontext让服务器组装受 token 预算约束的上下文块。列表模式下用target_uri限定范围例如viking://~/memories/experiences检索既往任务经验。按任务与环境契合度而非标题相似度评判结果read一到三个最可能改变执行方式的精确文件 URI忽略.abstract.md、.overview.md、.relations.json等 sidecar 文件。若无相关结果则不带记忆继续只有当执行因全新原因失败时才做最多一次聚焦的补充检索。技能还明确了优先级规则系统与开发者指令 当前用户请求 当前环境与工具证据 记忆。记忆始终是建议性的——命令、路径、版本必须对照当前任务验证既往成功绝不授权现在的破坏性操作。工作期间与之后持久化Persist由于没有自动捕获不主动存储就丢失。遇到值得保留的内容要在同一会话内持久化remember(messages)—— 默认方式。传入关键对话或简短事实摘要带 role 标记的消息由服务器自行提取并归档记忆偏好、实体、事件、经验。适合用户说记住这个、陈述长期偏好或决策、出现来之不易的经验教训根因、可行流程、环境怪癖时。add_resource—— 导入外部文档或 URL 作为可检索资源。需要在已知位置写入精确文档时自己用户根目录viking://~/下的精修笔记或viking://resources/下的共享参考资料可选工具write/edit更合适若未注册则回退到remember。该存什么稳定偏好与约定、环境事实、带理由的决策、可复用的流程或修复。不该存什么密钥与凭据、瞬时状态、猜测、整段对话转储——存结论不存滚动记录。示例修复一次失败的部署find查询deployment image pull failure private registrytarget_uri: viking://~/memories/experiencesread最相关的经验 URI在应用其步骤前对照当前集群核对其假设修复问题并验证线上结果remember一段根因与可用修复的简短摘要供下次会话召回。可选工具速查references/optional-tools.md 给出了可用性矩阵工具服务器要求托管云服务tree≥ 0.4.14云滚到 0.4.14 之后write、edit≥ 0.4.14云滚到 0.4.14 之后list_watches、cancel_watch≥ 0.3.18自托管 / 私有不开放托管云是无状态多实例服务因此账户级有状态工具list_watches、cancel_watch即使底层版本存在也会被裁掉。tree(uri, level_limit?)比list更深一层的目录树用于在不熟悉的范围内先定位再决定read什么单个已知目录优先用更廉价的list。write(uri, content, mode?)/edit(uri, ...)在已知 URI 上做精确文档持久化。write覆盖、追加或新建文件新建要求父目录已存在edit对已有文件做定向字符串替换优先于整文件重写若本地副本可能过期需先重新read。list_watches()/cancel_watch(to_uri)管理add_resource带 watch 间隔创建的自动刷新订阅仅私有/自托管。cancel_watch是破坏性操作只处理用户明确要求管理的 watch。边界hooks 被刻意排除何时该选专用插件Agent Plugins 1.0 只覆盖 skills 与 MCP 服务器——hooks、commands、agents 被规范刻意排除在外因为它们在各个客户端间的语义差异太大。因此本包是可移植的召回 写入表面由模型驱动而非生命周期事件驱动自动对话捕获与自动预置召回不在本包范围内。如果你的宿主有自己的 hook 体系优先使用专用插件hook 驱动的召回与捕获不消耗模型工具调用、不依赖模型决定去记住比技能驱动循环更便宜也更可靠。专用插件一览宿主专用集成Claude CodeClaude Code Memory PluginCodexCodex Memory PluginOpenCodeOpenCode PluginCursorCursor Memory IntegrationTRAE / TRAE CNTRAE Memory Integrationpipi Coding Agent ExtensionOpenClawOpenClaw Plugin独立安装流程ZCodeCommunity Integrations这些专用插件由一个安装器统一覆盖Claude Code、Codex、Cursor、TRAE / TRAE CN、ZCode、OpenCode、pi它会询问语言、要安装哪些宿主、下载源与 OpenViking 凭据且每一步都幂等。本 Agent Plugins 包适用于没有 hook 体系的宿主或需要一份包在多个客户端间通用的场景。按规范客户端专属集成将来也可以放入同一包内的反向域名命名目录如com.example.client/或清单的extensions字段而不影响其他客户端。一致性测试与开发流程运行一致性检查node --test agent-plugins/plugin.test.mjsplugin.test.mjs是零依赖的node --test套件逐项校验plugin.json的$schema指向 1.0.0 规范、name 符合 1~64 位小写字母数字加连字符/点号且无连续分隔符的规则、根字段封闭只允许$schema/name/version/description/author/homepage/repository/license/keywords/extensions、version 为 semver、author 字段受限mcp.json的$schema与plugin.json的规范版本一致、根字段只允许$schema与mcpServers、至少声明一个服务器每个 MCP 服务器条目command是单个 token无空格、无占位符streamable-http的 headers 不得携带 authorization/api-key/token/secret/cookie 等凭据args中的${PLUGIN_ROOT}展开后必须落在插件根目录内且文件真实存在每个skills/*子目录都带SKILL.mdfrontmatter 含与目录名一致的name与description技能内相对 Markdown 链接必须解析到真实文件包内所有.mjs通过node --check且mcp-proxy.mjs的所有相对导入真实存在。关于servers/shared/*.mjs的生成机制它们是examples/memory-plugin-shared/lib的生成副本不要直接编辑。修改共享库后重新运行node examples/memory-plugin-shared/sync.mjs该目录是同步脚本的 target 之一sync.mjs中AGENT_PLUGINS_SHARED_FILES [credentials.mjs, debug-log.mjs, ...MCP_PROXY_SHARED_FILES]即只带凭据、调试日志与 MCP 代理所需模块——因为本规范无 hookshook 相关模块被整体剔除examples/memory-plugin-shared/sync.test.mjs会在副本漂移时失败。而agent-plugins/servers/mcp-proxy.mjs与config.mjs是从 Claude Code 插件的对应文件改编而来只保留连接字段丢弃全部 hook 调优旋钮。两个测试文件都会在 CI 中运行。小结这份 Agent Plugins 1.0 包把 OpenViking 的语义长期记忆 上下文引擎压缩成一个零依赖、可移植、模型驱动的目录stdio 代理在运行时解析凭据并透明转发 streamable HTTPopenviking-memory技能把完整的召回—持久化循环教给模型而严格的一致性测试保证它在任何符合规范的客户端上都能被一致加载。没有 hook 体系的宿主、或想要一份包跨多客户端通用的场景正是它的主场需要 hook 级自动化的场景则应转向各宿主的专用插件。更多能力细节可继续阅读 Capability Reference。【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考