- Date: 2026-04-14
- Tag:
v0.3.6 - Compare: v0.3.5...v0.3.6
中文说明
OpenViking v0.3.6 主要聚焦于 Memory V2、Agent/插件生态增强,以及一批配置、检索和稳定性修复。本次版本共整理了 35 个变更项,覆盖 Memory V2、CLI、OpenClaw、Codex、VikingBot、检索性能和部署体验,并包含 8 位新贡献者。
Memory V2 专题
Memory V2 是 v0.3.6 的核心主题之一。本节重点介绍其记忆格式设计,以及模板化、结构化更新和可扩展性带来的架构优化。
- 记忆格式:
- Memory V2 不再把长期记忆限制在 v1 的固定类别里,而是改成基于 YAML 模板定义记忆类型。
- 每种记忆模板都可以定义
directory、filename_template、fields、merge_op,必要时还可以定义content_template。 - 最终写入的仍然是可读的 Markdown 记忆文件,但文件路径、文件名、字段结构和更新方式都由模板控制,文件名也更语义化,便于导航和检索。
- 内置模板已经覆盖
profile、preferences、entities、events、cases、patterns、tools、skills,并支持初始化soul.md、identity.md这类基础记忆文件。
- 重构与优化:
- v1 的问题是记忆类别、抽取提示和合并逻辑相对固定,新增类型往往需要改核心代码;Memory V2 把这部分能力抽到模板层,新增记忆类型不再需要继续硬编码。
- 抽取链路从“抽出来再做多轮合并”的思路,演进为基于 ReAct 编排的结构化
write/edit/delete操作,更新路径更统一,也更适合后续扩展。 - 通过
memory.custom_templates_dir,团队可以在不改主干逻辑的情况下扩展自己的业务记忆模板。 - 本次版本同时补充了 Memory V2 full suite test,并修复了异常响应、越界范围、额外迭代终止等边界问题,使默认开启后的稳定性更可控。
- 对用户的直接价值:
- 记忆文件更可读,目录结构和文件名更有语义。
- 记忆类型更容易扩展,不再受限于固定类别。
- 记忆更新逻辑更统一,后续做定制模板、行业知识卡片、事件索引、工具经验沉淀会更顺。
- 在 LoCoMo 评测中,Memory V2 路径的准确率达到 80%,说明这套记忆格式和更新机制不仅更灵活,也已经具备实际效果支撑。
重点更新
- Memory V2 默认开启:
- Memory V2 将长期记忆从 v1 的固定类别抽取,升级为基于 YAML 模板的记忆系统,核心链路由模板定义、ReAct 抽取编排和
write/edit/delete结构化操作组成。 - 记忆类型不再需要写死在核心代码里,内置模板可覆盖
profile、preferences、entities、events、cases、patterns、tools、skills,并可初始化soul.md、identity.md等基础记忆文件。 - Memory V2 支持通过
memory.custom_templates_dir扩展自定义模板,便于团队按业务场景定义新的记忆类型,而不必继续修改核心抽取逻辑。 - 本次版本还补充了 Memory V2 full suite test,并修复了抽取循环中的异常响应、越界范围和额外迭代终止等边界问题,默认开启后更适合直接投入真实对话流量。
- Memory V2 将长期记忆从 v1 的固定类别抽取,升级为基于 YAML 模板的记忆系统,核心链路由模板定义、ReAct 抽取编排和
- 本地部署与初始化体验:
- 新增
openviking-server init交互式向导,面向本地 Ollama 模型部署场景,支持自动检测环境、推荐模型、拉取模型并生成可用的ov.conf。 openviking-server doctor与服务端健康检查增强了对 Ollama 的识别和联通性检查,降低本地部署排障成本。
- 新增
- 插件与 Agent 生态增强:
- VikingBot 新增 MCP client 支持,可连接
stdio、SSE、streamable HTTP三类 MCP 服务,把第三方工具并入代理运行时。 - VikingBot 新增可按 channel 关闭 OpenViking 的配置,并修复 heartbeat 消息误入对话、过期 heartbeat 重复检查等问题。
- 新增 Codex memory plugin 示例,提供
openviking_recall、openviking_store、openviking_forget、openviking_health四个工具,方便在 Codex 中接入 OpenViking 长期记忆。 - OpenClaw 插件新增统一的
ov_import和ov_search,并补强会话消息捕获、tool_input透传、commit 等待超时和 trace 日志,提升接入稳定性。
- VikingBot 新增 MCP client 支持,可连接
- 配置与部署体验改进:
ovcli.conf新增upload.ignore_dirs,支持为add-resource配置默认忽略目录。- rerank 配置支持
extra_headers,便于对接 OpenAI 兼容 provider、代理层或网关。 - AGFS S3 插件默认启用;同时在 S3/OSS 兼容场景新增
disable_batch_delete,改善与部分 S3 兼容服务的适配。 - 移除了仓库中的历史 Go 依赖和 AGFS 第三方代码,简化了构建、打包和仓库维护。
- 性能与稳定性:
- 优化大目录检索,跳过冗余
target_directories作用域过滤,减少不必要的搜索开销。 - 修复 overview 生成时仓库层级丢失、embedding message ID 序列化丢失、legacy session row 重载、watch task 控制文件保护等问题。
- 改善 Claude Code memory plugin 的 Windows 兼容性,并修复 PDF 书签页码映射、OpenAI-like embedding 的 Matryoshka 报错、
VolcengineSparseEmbedder异步状态初始化,以及默认 Doubao embedding 模型更新等问题。 - 修复内存提取循环中的异常响应处理、越界范围处理和额外迭代终止逻辑,减少记忆抽取异常;同时补充 Memory V2 全量测试与一批安全/兼容性测试。
- 优化大目录检索,跳过冗余
- 其他补充:
- 文件系统新增目录描述支持,可在
mkdir场景下为目录补充语义信息。 - 仓库同步更新了新的微信交流群二维码。
- 文件系统新增目录描述支持,可在
升级提示
- 如果你经常通过 CLI 导入目录资源,建议在
ovcli.conf中配置upload.ignore_dirs,减少无关目录上传。 - 如果你需要保留旧行为,可在
ov.conf中显式设置"memory": { "version": "v1" }回退到 legacy memory pipeline。 - 如果你之前使用
ov init或ov doctor,请改用openviking-server init和openviking-server doctor。 - 如果你使用 OpenRouter 或其他 OpenAI 兼容 rerank/VLM 服务,可以通过
extra_headers注入平台要求的 Header。 - 如果你的对象存储是阿里云 OSS 或其他 S3 兼容实现,且批量删除存在兼容问题,可开启
storage.agfs.s3.disable_batch_delete。 - 如果你在做 Agent 集成,建议查看
examples/codex-memory-plugin与examples/openclaw-plugin中的新示例和工具能力。
致谢
感谢所有为 v0.3.6 提交特性、修复和文档改进的贡献者。
English Release Notes
OpenViking v0.3.6 focuses on Memory V2, stronger agent/plugin integrations, and a broad set of configuration, retrieval, and stability improvements. This release rolls up 35 tracked changes across Memory V2, the CLI, OpenClaw, Codex, VikingBot, retrieval performance, and local deployment, and it also welcomes 8 new contributors.
Memory V2 Spotlight
Memory V2 is one of the central themes of v0.3.6. This section highlights its memory format, along with the architectural improvements brought by templating, structured updates, and extensibility.
- Format:
- Memory V2 no longer treats long-term memory as a fixed set of hard-coded v1 categories. Instead, memory types are defined through YAML templates.
- Each memory template can define
directory,filename_template,fields, andmerge_op, and can optionally provide acontent_template. - The final output is still readable Markdown memory files, but the path layout, filenames, field structure, and update behavior are now template-driven. Filenames are also more semantic and easier to navigate.
- Built-in templates already cover
profile,preferences,entities,events,cases,patterns,tools, andskills, and can initialize baseline files such assoul.mdandidentity.md.
- Refactor and optimization:
- In v1, memory categories, extraction prompts, and merge behavior were relatively fixed, so adding a new memory type usually meant changing core code. Memory V2 moves that flexibility into the template layer.
- The update path evolves from a mostly extract-then-merge flow into a ReAct-orchestrated structured operation model built around
write/edit/delete. - Through
memory.custom_templates_dir, teams can extend memory behavior with domain-specific templates without modifying the main extraction pipeline. - This release also adds a full Memory V2 test suite and fixes extraction edge cases around unexpected responses, out-of-bounds ranges, and extended-iteration termination, which matters now that the path is default-on.
- What users get from this:
- More readable memory files with more meaningful directory and filename structure.
- A memory system that is easier to extend beyond a fixed category list.
- A more uniform update pipeline for future custom templates, event indexing, knowledge cards, and tool/skill experience capture.
- In LoCoMo evaluation, the Memory V2 path reached 80% accuracy, which is a useful signal that the new format and update model are not only more flexible but also practically effective.
Highlights
- Memory V2 by default:
- Memory V2 moves long-term memory beyond the fixed-category v1 pipeline into a YAML-templated system built around schema-defined memory types, ReAct-style extraction orchestration, and structured
write/edit/deleteoperations. - Memory types are no longer hard-coded in the core extractor. Built-in templates cover
profile,preferences,entities,events,cases,patterns,tools, andskills, and can initialize baseline files such assoul.mdandidentity.md. - Teams can extend the system through
memory.custom_templates_dir, making it practical to define domain-specific memory types without changing core extraction code. - This release also adds a full Memory V2 test suite and fixes several extraction edge cases, making the default-on rollout materially safer.
- Memory V2 moves long-term memory beyond the fixed-category v1 pipeline into a YAML-templated system built around schema-defined memory types, ReAct-style extraction orchestration, and structured
- Local deployment and setup:
- Added
openviking-server init, an interactive setup wizard for local Ollama-based deployments that can detect the environment, recommend models, pull them, and generate a validov.conf. - Improved
openviking-server doctorand server-side readiness checks so Ollama availability is easier to diagnose in local deployments.
- Added
- Plugin and agent ecosystem improvements:
- VikingBot now supports MCP clients and can connect to third-party MCP servers over
stdio,SSE, andstreamable HTTP. - VikingBot also adds per-channel disable controls for OpenViking and fixes heartbeat behavior so health-check traffic no longer pollutes conversations.
- Added a Codex memory plugin example with
openviking_recall,openviking_store,openviking_forget, andopenviking_healthtools for explicit long-term memory operations in Codex. - The OpenClaw plugin now exposes unified
ov_importandov_searchflows, and also improves session capture,tool_inputpropagation, commit wait behavior, and trace logging.
- VikingBot now supports MCP clients and can connect to third-party MCP servers over
- Config and deployment improvements:
ovcli.confnow supportsupload.ignore_dirssoadd-resourcecan ignore default directories out of the box.- Rerank config now supports
extra_headers, which helps when working with OpenAI-compatible providers, gateways, or custom proxies. - AGFS S3 is now enabled by default, and
disable_batch_deleteis available for S3/OSS compatibility scenarios. - Removed legacy Go-based dependencies and AGFS third-party code from the repository, simplifying builds, packaging, and maintenance.
- Performance and reliability:
- Improved retrieval performance for large directories by skipping redundant
target_directoriesscope filters when safe. - Fixed repository hierarchy loss in semantic overviews, embedding message ID serialization issues, legacy session row reload behavior, and watch-task control file protection.
- Also improved Windows compatibility for the Claude Code memory plugin, fixed PDF bookmark page mapping, resolved OpenAI-like embedding Matryoshka errors, corrected async client initialization in
VolcengineSparseEmbedder, and updated the default Doubao embedding model. - Fixed several memory extraction edge cases, including unexpected VLM response shapes, out-of-bounds extraction ranges, and extended-iteration termination behavior, and added broader Memory V2 and security test coverage.
- Improved retrieval performance for large directories by skipping redundant
- Other additions:
- The filesystem now supports directory descriptions in
mkdirflows. - The repository also updates the WeChat community QR code.
- The filesystem now supports directory descriptions in
Upgrade Notes
- If you frequently upload directories through the CLI, consider setting
upload.ignore_dirsinovcli.confto reduce noisy uploads. - If you need legacy behavior, you can explicitly set
"memory": { "version": "v1" }inov.confto fall back to the v1 memory pipeline. - If you previously used
ov initorov doctor, switch toopenviking-server initandopenviking-server doctor. - If you use OpenRouter or other OpenAI-compatible rerank/VLM providers,
extra_headerscan now be used to inject required headers. - If you run against Alibaba Cloud OSS or other S3-compatible services with batch-delete quirks, consider enabling
storage.agfs.s3.disable_batch_delete. - If you are building agent integrations, review the updated examples under
examples/codex-memory-pluginandexamples/openclaw-plugin.
Thanks
Thanks to all contributors who shipped features, fixes, and documentation improvements for v0.3.6.
Detailed Changes / 详细变更
以下补充 v0.3.6 的详细 PR 列表与新贡献者信息,便于直接同步到 GitHub Release。
What's Changed
- reorg: remove golang depends by @MaojiaSheng in #1339
- Feat/mem opt by @chenjw in #1349
- fix: openai like embedding models fix, no more matryoshka error by @MaojiaSheng in #1350
- feat(bot): Add disable OpenViking config for channels. by @yeshion23333 in #1352
- fix(config): point missing-config help messages to openviking.ai docs by @Gujiassh in #1370
- fix(embedder): initialize async client state in VolcengineSparseEmbedder by @lRoccoon in #1362
- feat(examples): add Codex memory plugin example by @0xble in #1080
- feat(openclaw-plugin): add unified ov_import and ov_search by @jcp0578 in #1369
- feat(bot): add MCP client support (port from HKUDS/nanobot v0.1.5) by @ponsde in #1392
- feat(eval):Readme add qa by @yeshion23333 in #1400
- feat(cli): support for default file/dir ignore config in
ovcli.confby @sentisso in #1393 - benchmark: add LoCoMo evaluation for Supermemory by @yangxinxin-7 in #1401
- fix(embedder): report configured provider in slow-call logs by @qin-ptr in #1403
- fix(queue): preserve embedding message ids across serialization by @officialasishkumar in #1380
- test(security): add unit tests for network_guard and zip_safe modules by @sjhddh in #1395
- fix(semantic): preserve repository hierarchy in overviews by @chethanuk in #1376
- fix(tests): align pytest coverage docs with required setup (#1259) by @chethanuk in #1373
- feat: rerank support extra headers by @caisirius in #1359
- fix: reload legacy session rows by @chethanuk in #1365
- fix: protect global watch-task control files from non-root access by @Hinotoi-agent in #1396
- fix(agfs): enable agfs s3 plugin default by @chuanbao666 in #1408
- fix(claude-code-memory-plugin): improve Windows compatibility by @Castor6 in #1249
- fix(pdf): resolve bookmark page mapping by @qin-ctx in #1412
- fix: update observer test to use /models endpoint instead of non-existent /vlm by @kaisongli in #1407
- fix(openclaw-plugin): extend default Phase 2 commit wait timeout by @yeyitech in #1415
- pref(retrieve): Optimize the search performance of larger directories by skipping redundant target_directories scope by @sponge225 in #1426
- Add third_party directory to Dockerfile by @qin-ptr in #1433
- Fix/openclaw addmsg by @chenjw in #1391
- feat(bot):Heartbeat fix by @yeshion23333 in #1434
- feat: add
openviking-server initinteractive setup wizard for local Ollama model deployment by @t0saki in #1353 - fix(volcengine): update default doubao embedding model by @qin-ctx in #1438
- feat: add Memory V2 full suite test by @kaisongli in #1354
- update new wechat group qr code by @yuyaoyoyo-svg in #1440
- feat(filesystem): support directory descriptions on mkdir by @qin-ctx in #1443
- feat(memory): default to memory v2 by @chenjw in #1445
New Contributors
- @Gujiassh made their first contribution in #1370
- @lRoccoon made their first contribution in #1362
- @sentisso made their first contribution in #1393
- @officialasishkumar made their first contribution in #1380
- @caisirius made their first contribution in #1359
- @Hinotoi-agent made their first contribution in #1396
- @yeyitech made their first contribution in #1415
- @t0saki made their first contribution in #1353
Full Changelog: v0.3.5...v0.3.6