如何把 OpenViking 接入 OpenCode,让编码会话自动召回和捕获记忆

发布时间:2026/11/9 11:28:07

如何把 OpenViking 接入 OpenCode,让编码会话自动召回和捕获记忆 如何把 OpenViking 接入 OpenCode让编码会话自动召回和捕获记忆【免费下载链接】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 与 Skills。OpenCode 是命令行编码工具两者之间的官方插件完成接入后每次 OpenCode 对话都会自动召回相关记忆并注入为隐藏上下文同时把当前轮次的消息与工具结果捕获回服务端在会话 commit 时归档并抽取为长期记忆——编码会话由此获得跨项目、跨会话的记忆能力。本文给出从前提条件、安装、配置到验证的完整路径以及接入后的自动行为和常见异常排查方式。前提条件按 OpenCode 插件文档 与 插件 README需要OpenCode 已安装Node.js 18一个运行中的 OpenViking HTTP server且服务端支持viking://~home-alias召回目标viking://~/memories与viking://~/skills依赖它新版服务端会拒绝无 uid 的viking://user/memories简写如果服务端启用了鉴权需要一个可用的 OpenViking API key。先启动 OpenViking serveropenviking-server --config ~/.openviking/ov.conf在另一个终端检查服务curl http://localhost:1933/health安装插件npm 包主路径已发布的 npm 包是openviking/opencode-plugin先确认包可获取npm view openviking/opencode-plugin version首次配置 OpenCode 时创建配置文件mkdir -p ~/.config/opencode cat ~/.config/opencode/opencode.json JSON { $schema: https://opencode.ai/config.json, plugin: [openviking/opencode-plugin] } JSON opencode已有~/.config/opencode/opencode.json时不要覆盖原文件只把openviking/opencode-plugin合并进已有的plugin数组。OpenCode 启动时会自动下载这个 npm 包插件随后自动注册 OpenViking 的 MCP server。源码安装可选分支如果当前环境不能通过 package 安装开发调试或 PR 测试在 OpenViking 仓库根目录执行mkdir -p ~/.config/opencode/plugins/openviking cp examples/opencode-plugin/wrappers/openviking.js ~/.config/opencode/plugins/openviking.js cp examples/opencode-plugin/index.mjs examples/opencode-plugin/package.json ~/.config/opencode/plugins/openviking/ cp -r examples/opencode-plugin/lib ~/.config/opencode/plugins/openviking/ cp -r examples/opencode-plugin/servers ~/.config/opencode/plugins/openviking/安装后 OpenCode 能发现的目录结构~/.config/opencode/plugins/ ├── openviking.js └── openviking/ ├── index.mjs ├── package.json ├── lib/ └── servers/顶层openviking.js只是一个 wrapper把 OpenCode 能发现的一级插件入口转发到实际安装目录源码安装必须使用这个.jswrapper因为 OpenCode 的本地插件扫描器发现的是 JavaScript/TypeScript 插件文件。npm 包安装则通过package.json直接加载index.mjs不需要 wrapper。统一安装器可选分支OpenCode 与 Claude Code、Codex 共用同一个安装器脚本在仓库的 install.sh用--harness opencode参数选择 OpenCode。每一步都是幂等的重复运行安全它注册 npm 插件TOS 渠道则安装本地文件插件把openvikingMCP server 条目写进~/.config/opencode/opencode.json并配置~/.openviking/ovcli.conf。官方文档提供以bash (curl -fsSL …)形式拉取脚本并运行的一行命令在 GitHub 访问困难的地区可改用文档中给出的火山引擎 TOS 镜像地址完整命令见 OpenCode 插件文档 的安装章节。配置凭据凭据与 Claude Code / Codex 记忆插件共用。推荐用环境变量OPENVIKING_API_KEY的优先级高于ovcli.confexport OPENVIKING_API_KEYyour-api-key-here # 替换为你自己的 key export OPENVIKING_ACCOUNTdefault # 可选仅 trusted-mode 部署需要 export OPENVIKING_USERopencode # 可选仅 trusted-mode 部署需要 export OPENVIKING_PEER_IDopencode # 可选peer 维度记忆路由需要另一种方式是在仓库根目录运行 setup 向导交互式写入~/.openviking/ovcli.conf统一安装器也会写这个文件node examples/opencode-plugin/scripts/setup.mjsAPI key 会由 hooks 和 MCP proxy 作为Authorization: Bearer ...发送account和user是 trusted-mode 身份头。旧版openviking-config.json里的凭据字段仍会作为迁移 fallback 读取但新安装建议使用ovcli.conf或环境变量。peer 影响记忆落在哪个空间默认插件从项目目录的 git 身份派生 peer归一化后的originURL取不到则回落仓库根路径。不在 git 仓库中时什么都不发送在那里记下的内容进入用户级空间viking://user/you/memories。需要覆盖派生值时用OPENVIKING_PEER_ID。行为配置可选~/.config/opencode/openviking-config.json只放行为旋钮示例来自 插件 README{ enabled: true, mcp: { enabled: true }, timeoutMs: 30000, repoContext: { enabled: true, cacheTtlMs: 60000 }, autoRecall: { enabled: true, limit: 6, scoreThreshold: 0.35, maxContentChars: 500, preferAbstract: true, tokenBudget: 2000, minQueryLength: 3 }, commitTokenThreshold: 20000, commitKeepRecentCount: 10, profileTokenBudget: 10000, resumeContextBudget: 32000 }文档对其中两个字段给出了明确说明autoRecall.limit是遗留的配额缩放输入不是最终结果上限。显式设置为 1 到 5 时有效总配额仍为 6因为六个 coding 分类各保留一个检索槽位需要精确的分类上限时直接使用 Contextquotas。如果 OpenViking 已经通过另一个 MCP server 暴露把mcp.enabled设为false插件保留生命周期 hooksrepo context、自动召回、消息捕获、生命周期 commit继续工作且不会添加或覆盖 OpenCode 的mcp.openviking条目。高级场景下OPENVIKING_PLUGIN_CONFIG可以指向另一个配置文件路径。验证接入修改插件或 OpenViking 配置后需要重启 OpenCode。进入新的 session 后插件应暴露openvikingMCP server透传服务端完整 MCP 工具集15 个工具。OpenCode 会给 MCP 工具加openviking_前缀openviking_find、openviking_searchopenviking_search的modecontext替代原 recall 工具openviking_read、openviking_list、openviking_tree、openviking_grep、openviking_globopenviking_remember、openviking_write、openviking_edit、openviking_add_resourceopenviking_list_watches、openviking_cancel_watch、openviking_forget、openviking_health让 OpenCode 搜索或浏览 OpenViking memory例如通过openviking_search或openviking_find服务端已有数据时应返回检索结果。行为异常时先查看运行时文件插件默认把运行时文件写入~/.config/opencode/openviking/ls ~/.config/opencode/openviking/ tail -n 100 ~/.config/opencode/openviking/openviking-memory.log该目录下有openviking-memory.log错误与运行日志和openviking-session-state.json会话状态可通过配置里的runtime.dataDir修改目录。本地 server 场景再确认一次curl http://localhost:1933/health。自动召回与捕获如何发生安装完成后召回与捕获都由插件 hook 自动执行不需要 agent 运行任何ov命令召回触发每条chat.message中的 user 消息触发一次召回query 取自非 synthetic text part若消息正文已含openviking-context跳过本轮召回避免注入内容被二次处理。召回结果合成一个 synthetic part 插到当前消息 parts 最前。召回目标为viking://~/memories与viking://~/skillsresources 被刻意排除在自动召回之外资源类文档由模型主动调用openviking_search获取。开场注入每会话首条chat.message注入一次 profile 与可用记忆清单预算 10000 tokensubagent 会话跳过开场注入每会话只尝试一次失败后本进程内不重试。repo 上下文已索引的viking://resources/仓库列表经experimental.chat.system.transform放进 system prompt由repoContext开关控制。捕获user 与 assistant 文本消息捕获到服务端工具调用与结果作为独立的toolpart 捕获tool_output原样上报。截断由服务端负责超过tool_output_externalization.threshold_chars默认20000的输出写入 session 的 tool-result 存储part 中只保留 synopsis stub 和tool_output_ref原文仍可通过/api/v1/sessions/{id}/tool-results接口读回。commit 与记忆抽取每个 OpenCode 会话映射为oc-idsubagent 为oc-parent__subagent-child挂在父命名空间下。session.idle路径在 flush 执行后需满足pending_tokens ≥ 20000才 commitkeep 10session.deleted与session.error强制 commitdispose强制 commit宿主 ≥ 1.15.11 才有该 hook旧版本关闭时不 commit一次宿主压缩在experimental.session.compacting前与session.compacted后各触发一次 commit。commit 完成归档并触发记忆抽取捕获的对话由此沉淀为长期记忆。离线补偿可重试的写入失败进入磁盘队列~/.openviking/pending在会话启动时重放≤50 条/次、≤3 次/条、TTL 7 天4xx含 401/403判为不可重试不入队。故障排查与限制问题排查方向插件没有加载确认~/.config/opencode/opencode.json引用了openviking/opencode-plugin源码安装时确认~/.config/opencode/plugins/openviking.js存在MCP tools 连到了错误的 server检查~/.openviking/ovcli.conf或用OPENVIKING_*环境变量 /OPENVIKING_PLUGIN_CONFIG指向正确配置OpenViking 返回 401 / 403检查OPENVIKING_API_KEYtrusted-mode 部署还要检查OPENVIKING_ACCOUNT和OPENVIKING_USERrecall 为空确认 OpenViking 中已有 memories/resources并且autoRecall.enabled为true注意自动召回不覆盖 resources资源检索要靠模型主动调openviking_search本地openviking_add_resource失败传入文件路径而不是目录目前还不支持自动上传本地目录两个容易误判的现象OpenCode 本地read、glob、grep工具读不了viking://URIagent 误用时插件会阻止这次本地文件系统调用并提示改用openviking_read、openviking_glob或openviking_search——这是预期行为不是故障。另外dispose的宿主 shutdown 预算为 5s多会话串行 commit 超预算时会被截断且 pending queue 不覆盖此场景这是文档明确给出的边界。相关文档OpenCode 插件安装、配置与排查的集成页插件 README 与 安装说明完整工具说明、openviking_add_resource的三类输入远端 URL、本地文件、file://与使用建议集成能力参考 的 opencode 档案卡opencode 与其他 harness 在召回、commit、关闭语义上的横向对照。【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/7 5:50:51

语音通知接口开发指南:核心价值与实现方案

1. 语音通知接口的核心价值与应用场景在移动应用开发中,语音通知接口正逐渐成为提升用户体验的关键组件。相比传统的短信通知,语音通知具有更高的触达率和即时性——根据行业实测数据,在金融、物流等关键业务场景中,语音通知的打开…

2026/11/4 11:21:56

数据采集技术全解析:从基础概念到实战应用

1. 数据采集基础概念解析数据采集作为数据分析流程的第一步,其重要性不言而喻。简单来说,数据采集就是从各种数据源获取原始数据的过程,这些数据源可能包括网站、数据库、传感器、日志文件等。在实际工作中,我发现很多新手容易把数…

2026/11/3 23:35:55

桌面Agent不是高级宏:语义理解驱动的智能自动化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/9 11:25:12

杭州特种工找工作报名避坑良心建议

杭州特种工找工作报名避坑良心建议 不知道去哪报名怕被中介坑?杭州特种工找工作,报名流程复杂、培训机构鱼龙混杂,很多人都踩过坑。今天这条内容,就从杭州本地角度出发,结合郑州劳务班组负责人的实际经验,给你一套 良心建议…

2026/11/9 11:25:12

杭州特种工找工作上岗必备怎么准备实操考试

杭州特种工找工作上岗必备怎么准备实操考试 实操考试心里没底怕挂科?你不是一个人。现在杭州特种工找工作越来越依赖【上岗必备】的特种作业证,但很多人在准备考试时,总担心自己能不能通过。尤其对于刚入行或者想转行的你来说,这不仅是证书的问题,更是关…

2026/11/9 11:25:12

杭州特种工找工作证怎么转异地 上岗必备全攻略

杭州特种工找工作证怎么转异地 上岗必备全攻略 之前考的证在外省能不能转过来?这个问法我听得太多了。我是干了10年特种作业相关工作的,从报名、考试到复审,每一步都踩过坑、吃过亏。今天就用一个真实的案例,带你们看看 杭州特种工找工作…

2026/11/9 11:25:12

株洲如何考取电工证2026河南最新政策怎么走

株洲如何考取电工证2026河南最新政策怎么走 不知道去哪报名怕被中介坑?株洲地区想考电工证的你,一定经历过这样的纠结。现在2026河南最新政策已经落地,报名流程、考试要求、证书查询等信息都有了明确的规定,但也正是这些信息,让不少人摸不着头脑…

2026/11/9 11:20:12

宜宾电工证培训条件全知道,外省证怎么转?在哪考最靠谱?

宜宾电工证培训条件全知道,外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到过不下十次,很多老电工、新学员都问过。现在宜宾的电工证培训条件和政策越来越规范,但 外省证能不能转 ,关键在于 在哪考…

2026/11/9 0:37:55

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/9 0:03:09

建设厅的特种工有哪些含金量高?别交完钱考不过

建设厅的特种工有哪些含金量高?别交完钱考不过 怕考不过白交培训费?别急,先搞清楚建设厅的特种工有哪些含金量高的证,再决定是不是值得投入时间和金钱。 建设厅的特种工证是建筑行业里最基础、也最实用的证书之一,涉及多个作业类别,每种证的 含金量…

2026/11/9 0:03:09

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱 怕考不过白交培训费?荆门市电工证报名前必须知道这些避坑指南。别看网上一堆培训机构广告,真要报个电工证,很多人被坑得一塌糊涂。特别是那些打着“包过”旗号的,最后不是考试不过,就是证不是全国通…

2026/11/9 0:03:09

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑 不知道去哪报名怕被中介坑?你不是一个人。现在特种作业证报名渠道五花八门,从线下培训机构到线上代理,真假难辨。尤其是像高空电工作业这类高风险、高门槛的作业类型,证书含金量和考试通过率直接影响你…

2026/11/9 6:30:27

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑