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

发布时间:2026/9/10 18:44:06

如何把 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/9/10 18:44:06

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

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

2026/9/10 18:44:06

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

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

2026/9/10 18:39:06

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

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

2026/9/10 19:34:12

网页爬虫合规指南:法律边界与技术实践

1. 网页爬取的法律边界与合规要点在数字化时代,数据已成为重要资产,网页爬取作为获取公开数据的主要技术手段,其合法性边界一直是业界热议话题。我从事数据采集工作近十年,处理过数百个爬虫项目,深刻理解其中的法律风险…

2026/9/10 19:34:12

从响应式到预测式:客户体验数据分析的落地实践

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

2026/9/10 19:34:12

9款AI降率工具实测对比与优化策略

1. 为什么我们需要降AI率工具? 在内容创作领域,AI生成内容(AIGC)的普及带来了效率革命,但也引发了新的挑战。作为一名长期从事数字内容创作的从业者,我深刻体会到AI生成内容的两面性:一方面它能…

2026/9/10 19:34:12

keploy 实操:5 分钟离线跑通第一条 API 测试用例

keploy 实操:5 分钟离线跑通第一条 API 测试用例 【免费下载链接】keploy Open-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing. 项目地址: https://gitcode.com/GitHub_Trending/ke/keploy kepl…

2026/9/10 19:29:11

信息技术治理3.1框架:数字化转型中的架构管控实践

1. 项目概述:信息技术治理的日常实践 "每天写点什么"这个系列我已经坚持了三年多,2026年2月5日这篇笔记聚焦的是信息技术治理这个专业领域。作为企业数字化转型的亲历者,我发现很多技术团队在追求创新时常常忽视治理这个基础环节&a…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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