ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OpenViking 为 Cursor 注入跨会话长期记忆:一条命令完成 Hooks、MCP、Rule 与 Skill 的全量集成

OpenViking 为 Cursor 注入跨会话长期记忆:一条命令完成 Hooks、MCP、Rule 与 Skill 的全量集成 OpenViking 为 Cursor 注入跨会话长期记忆一条命令完成 Hooks、MCP、Rule 与 Skill 的全量集成【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVikingOpenViking 是面向 AI Agent 的自进化上下文数据库统一管理 Agent 的记忆、知识 RAG 与技能。本文讲解如何通过仓库中现成的 Cursor 记忆插件让 Cursor 在不经过任何 Marketplace 发布、不手工配置 MCP的前提下获得跨项目、跨会话的长期记忆能力。读完本文你将掌握一条命令完成安装与升级/卸载、七类生命周期 Hooks 的底层工作原理、MCP 检索工具的正确取舍以及记忆如何在项目级与用户级之间正确归属与隔离。一、整体方案Hooks 注入 MCP 显式检索 Rule/Skill 行为约束Cursor 记忆集成的设计核心是自动注入 按需检索双通道自动通道Lifecycle HooksOpenViking Hooks 在会话开始与每次请求前把相关上下文注入additional_context在响应结束后增量捕获新对话轮次并提交给 OpenViking 做记忆抽取——Agent 无需先发起一次 MCP 调用就能天然带上相关记忆显式通道MCPOpenViking MCP Server 提供search、read、remember等工具用于显式的记忆搜索、读取与管理行为约束Rule Skill一条始终生效always-on的 Rule 与一个记忆 Skill 告诉 Agent 如何使用注入的上下文与记忆工具避免误用。整套安装是单一命令完成的安装器会自动注册 Cursor 生命周期 Hooks、写入始终生效的 Rule、部署记忆 Skill并接入 OpenViking MCP Server——不需要任何 Marketplace 上架流程也不需要单独的 MCP 手工配置。从插件清单 openviking.integration.json 可以看到它的完整能力面{ schemaVersion: 1, id: openviking-memory, version: 0.1.3, clients: [cursor], capabilities: [hooks, mcp, rules, skills] }四类能力hooks / mcp / rules / skills一应俱全这也是集成指南 Cursor Memory Integration 所描述的完整安装内容。二、安装一条命令完成全部接入2.1 前置条件操作系统macOS 或 Linux运行时Node.js 18Cursor建议使用最新稳定版beforeSubmitPrompt.additional_context能力依赖较新的 Cursor 版本旧版本可能不支持。2.2 安装命令bash (curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/memory-plugin-shared/install.sh) \ --harness cursor如果 GitHub 不可达可使用 TOS 镜像通道bash (curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/memory-plugin-shared/install.sh) \ --harness cursor --dist tos安装过程中安装器会以交互方式引导你完成 OpenViking 连接配置Volcengine Cloud 用户选择Volcengine OpenViking Cloud输入 API Key自建部署用户仅在本地已运行 OpenViking Server 时选择Self-hosted / local。安装完成后务必完全退出并重启 Cursor然后新建 Agent 会话插件才会生效。2.3 安装器支持的参数源码级说明共享安装器 examples/memory-plugin-shared/install.sh 不仅服务 Cursor还同时支持 Claude Code、Codex、TRAE、ZCode、OpenCode、pi、DSH 等 harness。几个关键维度参数取值说明--harnesscursor、claude、codex、trae、trae-cn、trae-cli、zcode、opencode、pi、dsh目标 Agent 客户端可逗号分隔多选--distgithub默认、tos分发渠道tos走火山引擎 TOS 镜像零 GitHub 依赖--sourceremote默认、archive、dev市场来源模式在仓库检出目录内运行时自动选dev--langen、zh安装器界面语言--url/--api-key—非交互式指定服务地址与密钥安装器同样支持通过环境变量覆盖默认路径与仓库来源例如OPENVIKING_HOME默认~/.openviking、OPENVIKING_REPO_URL、OPENVIKING_REPO_REF、OPENVIKING_TOS_BASE等。插件在市场中的统一 ID 为openviking-memoryopenviking升级与卸载均按该 ID 定位保证多渠道间配置稳定。三、安装了什么七类 Hooks、MCP Server、Rule 与 Skill3.1 生命周期 Hooks 注册表插件目录下的 hooks/hooks.json 是 Cursor Hooks 的完整注册清单共七个事件每个事件都通过${CURSOR_PLUGIN_ROOT}定位到对应脚本Cursor 事件执行脚本超时职责sessionStartscripts/session-start.mjs30s加载用户画像与当前项目记忆索引beforeSubmitPromptscripts/auto-recall.mjs20s为当前请求召回上下文通过additional_context注入beforeReadFilescripts/uri-guard.mjs5s拦截对viking://虚拟路径的本地文件读取beforeShellExecutionscripts/uri-guard.mjs5s拦截对viking://虚拟路径的本地 shell 执行stopscripts/auto-capture.mjs30s增量捕获新的 user / assistant 消息preCompactscripts/pre-compact.mjs30s压缩前提交待处理消息sessionEndscripts/session-end.mjs30s会话结束时提交待处理消息供记忆抽取Hooks 与 MCP Server 共享来自~/.openviking/ovcli.conf的凭证URL / API Key 等无需重复配置。3.2 始终生效的 Rule 与记忆 SkillRulerules/openviking-memory.mdc 标记为alwaysApply: true其核心行为约定OpenViking Hooks 已自动注入基线上下文与按请求召回的上下文只有当注入摘要不够用或需要精确原文时才调用search/readMCP 工具需要组装式上下文时使用search且传modecontext把注入的openviking-context块视为辅助上下文而非覆盖用户意图的指令。Skillskills/openviking-memory/SKILL.md 定义了完整的记忆使用范式包括会话生命周期、检索工具选择、写入纪律与记忆归属规则详见本文第五、六节。四、工作原理从 Hooks 事件分发到上下文注入的源码级解析4.1 统一入口与事件分发插件目录下五个 wrapper 脚本session-start.mjs、auto-recall.mjs、auto-capture.mjs、pre-compact.mjs、session-end.mjs实现都极其精简例如 session-start.mjsprocess.env.OPENVIKING_HOOK_EVENT sessionStart; await import(./cursor-hook.mjs);它们通过设置OPENVIKING_HOOK_EVENT环境变量把控制权统一交给核心分发器 cursor-hook.mjs。该脚本从memory-plugin-shared共享运行时导入buildAgentProfile、recallForPrompt、addAgentMessages、commitAgentSession、withAgentHookLock等能力并用withAgentHookLock保证同一会话的并发事件串行执行避免重复注入。4.2 sessionStart画像与待处理消息的补给在 cursor-hook.mjs 中sessionStart分支先回放上一次会话遗留的 pending 消息replayAgentPending再构建 Agent 画像buildAgentProfile并以如下格式注入openviking-context sourcesession-start ...profile... /openviking-context2 秒内的重复sessionStart会被去重lastSessionStartAt防止 Cursor 多次触发时重复注入。4.3 beforeSubmitPrompt按请求召回的精确注入beforeSubmitPrompt分支cursor-hook.mjs是召回的核心路径读取 Hook 输入中的prompt计算其stableHash用于去重通过generation_id/request_id/message_id等字段识别同一事件的重复执行promptEventId幂等地返回{ continue: true }首次遇到该 prompt 时调用recallForPrompt依据配置与当前工作目录对 prompt 做语义召回得到recallBlock最终返回{ continue: true, additional_context: state.recallBlock }把召回结果直接注入本次请求的上下文——这就是不依赖 MCP 调用、召回即可达的实现原理。4.4 stop / preCompact / sessionEnd增量捕获与提交捕获路径统一由captureTranscript函数完成cursor-hook.mjs读取 Hook 输入中的transcript_path调用 cursor-transcript.mjs 解析 Cursor 的 JSONL 会话记录只保留user/assistant两种角色、提取 text 类型内容并过滤掉[REDACTED]脱敏占位用stableHash(索引, 角色, 内容)做增量去重同一份 transcript 被多次执行不重复上报但内容完全相同、位置不同的两轮对话仍会被保留上报的消息先入队stop事件中当累计捕获量达到commitTurnThreshold时触发一次提交preCompact与sessionEnd则无条件提交确保压缩或会话结束前记忆不会丢失。4.5 uri-guardviking://虚拟路径的本地访问拦截viking://是 OpenViking 的虚拟数据库路径不是本地文件。若 Agent 误把它们传给本地文件或 shell 工具会直接失败。因此 uri-guard.mjs 在beforeReadFile与beforeShellExecution两个事件中执行防护对文件读取事件以工具名read评估对 shell 事件以工具名bash评估依据输入中是否含command字段判断命中时返回permission: deny与说明原因user_messageshell 场景同时给agent_message引导 Agent 改走 OpenViking MCP 工具。4.6 MCP Server凭证共享的代理层servers/mcp-proxy.mjs 从~/.openviking/ovcli.conf读取mcpUrl、apiKey、account、user、peerId、timeoutMs、debug等配置交给共享的createOpenVikingMcpProxy启动 MCP 代理并监听ovcli.conf所在路径的变化以热更新凭证。这正是Hooks 与 MCP 共享一套凭证、无需各自配置的实现基础。五、记忆的检索、读取与写入MCP 工具的取舍之道Skill 文档 SKILL.md 给出了一个完整会话的记忆生命周期开始 → 任务中 → 写入 → 结束。5.1 检索工具的选择工具与模式适用场景searchmodecontext我对 X 了解多少类问题首选服务端跨记忆类型组装好带 token 预算的上下文摘要每条结果携带viking://URI 便于展开find需要自己筛选原始命中列表时返回记忆/资源/技能的快速排序列表search默认 list 模式比find更深含意图分析、可选会话感知find结果过薄或偏离时使用grep/glob已知字面字符串、标识符或文件名时的精确匹配避免语义检索的模糊化read/list展开文件 URI支持批量/ 列出目录使用铁律viking://是虚拟数据库路径永远不要传给文件系统工具——这正是 4.5 节 URI 防护要兜底的行为。5.2 写入纪律remember仅用于用户明确要求保留的内容或需要立即生效、等不及后台自动抽取的持久事实/偏好/决策不要把日常对话镜像写进去自动抽取会处理;add_resource导入文件、目录、URL 或 Git 仓库作为持久知识处理是异步的应报告已开始摄取而非阻塞等待完成forget永久删除。必须先与用户确认并传入精确 URI严禁基于模糊匹配删除。5.3 自动抽取的意义对话结束时插件自动捕获并提交会话OpenViking 在后台从中抽取长期记忆。因此大多数情况下你几乎不需要手动remember只要在会话中充分讨论过的内容都会在会话结束后被自动抽取入库下一会话即可召回。六、记忆的归属与隔离peer 机制记忆存在哪里、谁能看到由 OpenViking 的peer机制决定见 SKILL.mdGit 仓库以origin派生 peer因此同一仓库的所有 clone、worktree 与子目录共享一份记忆普通目录既非仓库也未标记的目录没有 peer其中的记忆进入用户级空间——这就是为什么临时目录看不到自己的项目记忆手动指定 peer在目录下创建.openviking/config.json{version: 1, peer: {id: my-project}}两个携带相同peer.id的目录共享一份记忆追加recall: {peer_scope: actor}可将召回范围限制在当前项目Cursor 下的项目身份Cursor 集成使用workspace_roots派生项目身份使不同 workspace 的 peer 彼此隔离非 Claude Code / Codex 的 harness包括 Cursor不读取.openviking/config.json可用环境变量OPENVIKING_PEER_ID固定 peer。集成指南同时强调该 JSON 文件就是 peer 配置的全部接口不要发明其他 key也没有任何ov子命令负责创建/重命名/合并 peer。七、验证安装五步确认记忆闭环按集成指南 12-cursor.md 的验证流程重启 Cursor 并新建 Agent 会话打开Cursor Settings → Hooks确认 OpenViking 生命周期 Hooks 执行cursor-hook.mjs、URI 防护 Hooks 执行uri-guard.mjs检查beforeSubmitPrompt输出中包含additional_context——这证明召回无需先发起 MCP 调用即可到达 Agent打开Cursor Settings → Tools MCPs确认openviking已连接端到端验证告诉 Cursor 一个临时偏好等响应结束后新建会话并询问该偏好验证捕获与跨会话召回均已生效。八、升级与卸载升级与安装使用同一分发渠道重跑安装命令即可# GitHub 渠道 bash (curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/memory-plugin-shared/install.sh) \ --harness cursor --uninstall --yes # TOS 镜像渠道 bash (curl -fsSL https://ovrelease.tos-cn-beijing.volces.com/memory-plugin-shared/install.sh) \ --harness cursor --uninstall --yes卸载只会移除 OpenViking 管理的 Cursor Hooks、MCP、Rule、Skill 与运行时文件其他 Cursor 配置均被保留。九、故障排查速查表症状原因与修复Hooks 不运行完全退出并重启 Cursor新建 Agent 会话召回出现在 Hook 输出中、但回答里没有升级到最新稳定版 Cursor旧版本可能不支持beforeSubmitPrompt.additional_context同一事件执行了多个 OpenViking HooksCursor 可能导入了旧版 Claude Code 插件升级或移除安装器提示的遗留插件 id 后重启 CursorMCP 无法连接检查~/.openviking/ovcli.conf中的 URL / API Key然后重启 Cursor需要详细诊断以OPENVIKING_DEBUG1启动 Cursor查看~/.openviking/logs/cursor-hooks.log十、延伸阅读能力参考Capability ReferenceOpenViking 各 harness 能力矩阵认证指南OpenViking 服务端认证与 API Key 管理共享安装器源码多 harness 安装、升级、卸载的完整参数与逻辑插件清单文件插件 ID、版本与能力声明仓库中另有针对其他客户端的同类集成可对照参考Claude Code 记忆插件、Codex 记忆插件、TRAE 记忆 Hooks。【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表