OpenViking v0.2.8 发布公告
OpenViking v0.2.8 现已发布。
这是一次围绕 上下文工程能力、插件生态、检索与记忆链路、可观测性以及工程兼容性 持续增强的版本更新。
整体来看,v0.2.8 以功能补强和稳定性修复为主,适合现有用户升级;如果你在使用 OpenClaw / OpenCode 插件、长会话记忆、资源同步或自定义模型接入,本次更新尤其值得关注。
本次更新亮点
1. 插件生态继续升级,OpenClaw / OpenCode 集成更完整
openclaw-plugin升级到 2.0,从 memory plugin 进一步演进为 context engine。- 相关 PR:#662
- 新增并完善 OpenCode memory plugin example,补充 attribution 与后续插件更新。
- 支持 多智能体 memory isolation,可基于 hook context 中的
agentId做记忆隔离。- 相关 PR:#637
- 修复插件自动 recall 可能导致 agent 长时间挂起的问题,并补强 legacy commit 兼容。
- MCP 查询服务补充
api_key支持与默认配置能力,降低接入成本。
2. Session / Memory 链路增强,长期记忆能力更稳
- 新增 memory cold-storage archival,通过 hotness scoring 管理长期记忆冷热分层。
- 相关 PR:#620
- 新增长记忆 chunked vectorization,改善超长内容的向量化处理能力。
- 相关 PR:#734
- 增加
used()接口,用于上下文 / skill 使用追踪。- 相关 PR:#684
- 修复 async commit 过程中的上下文透传、批次内重复写入、非标准 LLM 响应处理等问题。
- Bot 场景下改用
commit_async(),减少阻塞风险,提升长会话稳定性。
3. 检索与 Embedding 能力持续增强
- 分层检索中正式集成 rerank,并修复无 rerank 场景下的检索可用性问题。
- 新增 RetrievalObserver,可用于检索质量指标观测,并已接入
ov observer。 - Embedding 侧新增:
- 修复 CJK token 估算偏低等问题,提升多语言场景下的稳定性。
4. 资源、存储与解析链路更完善
- 新增 resource watch scheduling 与状态跟踪能力,资源同步流程更可控。
- 相关 PR:#709
- 新增 reindex endpoint,支持内容手动修改后的重新 embedding。
- 相关 PR:#631
- 解析能力新增对 legacy
.doc/.xls格式的支持。- 相关 PR:#652
- 修复从 URL 导入文件时文件名与扩展名丢失的问题。
- 相关 PR:#619
- 存储层新增 path locking 与选择性 crash recovery,进一步提升写入安全性。
- 相关 PR:#431
- 修复 tenant API 的隐式 root fallback、文件系统接口路径处理、工作目录
~展开等问题。
5. VLM、Trace 与可观测性能力加强
- 新增 request-level trace metrics 与对应 API 支持。
- 相关 PR:#640
- 新增 memory extract telemetry breakdown,帮助更细粒度地分析记忆提取过程。
- 相关 PR:#735
- OpenAI VLM 支持 streaming response handling。
- 相关 PR:#756
- 补充
max_tokens参数以避免 vLLM 拒绝请求,并支持 OpenAI-compatible VLM 的自定义 HTTP headers。 - 自动清理模型输出中的
<think>标签,减少推理内容污染存储结果。- 相关 PR:#690
6. 工程兼容性与交付体验继续改进
- 修复 Windows zip 路径、代码仓库索引、Rust CLI 版本等跨平台问题。
- 相关 PR:#577
agfsMakefile 完成跨平台兼容性重构。- 相关 PR:#571
- Vectordb engine 支持按 CPU variant 拆分。
- 相关 PR:#656
- Docker 构建链路持续修复,补齐
build_support/拷贝逻辑。 - Release workflow 支持发布 Python 3.14 wheels。
- 相关 PR:#720
7. 文档与社区内容持续补强
- README、INSTALL、INSTALL-ZH 等文档持续更新。
- 新增 日文文档,进一步提升国际化支持。
- 相关 PR:#755
- 补充 OpenClaw 插件升级说明与新链接修复。
- 更新社区微信群二维码等资料,方便用户加入交流。
- 相关 PR:#649
升级建议
- 如果你在使用 OpenClaw 旧版 memory plugin,建议重点阅读 2.0 升级说明后再升级。https://github.com/volcengine/OpenViking/blob/main/examples/openclaw-plugin/INSTALL-ZH.md
- 如果你依赖 OpenAI-compatible 模型网关 / 本地模型服务,建议关注本次新增的 headers、
max_tokens、api_key与 embedding 参数能力。 - 如果你在生产环境中使用 长会话记忆、资源自动同步或多智能体场景,建议升级后重点验证 memory commit、resource watch 和检索观测链路。
总结
v0.2.8 是一次面向真实智能体应用场景的持续演进版本。
这次更新重点集中在:
- 插件生态升级,OpenClaw / OpenCode 集成更成熟
- Session / Memory 长链路能力增强
- 检索、Embedding 与观测能力进一步完善
- 资源、解析、存储链路稳定性提升
- 跨平台、Docker、CI 与发布体验持续优化
欢迎大家升级体验,并继续反馈问题与建议。
致谢
感谢所有贡献者参与本次版本更新,也欢迎本版本中的多位新贡献者加入社区。
从累计变更来看,v0.2.6 -> v0.2.8 期间共有 20 位新贡献者 完成首次贡献。
Full Changelog
-
v0.2.7...v0.2.8
v0.2.7...v0.2.8 -
v0.2.6...v0.2.8
v0.2.6...v0.2.8
What's Changed
- docs: add MCP integration guide (EN + ZH) by @r266-tech in #518
- Add Trendshift badge to README by @qin-ctx in #536
- fix(session): propagate extractor failures to async task error by @dr3243636-ops in #511
- feat(openclaw-memory-plugin): add default log configuration by @qin-ctx in #541
- Add files via upload by @yuyaoyoyo-svg in #543
- Update install.sh by @qin-ptr in #545
- Revert "Update install.sh" by @qin-ptr in #547
- refactor(openclaw-memory-plugin): use openclaw CLI for plugin configuration by @qin-ctx in #550
- fix: correct Volcengine sparse/hybrid embedder and update sparse model docs by @yangxinxin-7 in #561
- feat: CLI sub-command optimization by @MaojiaSheng in #560
- fix(storage): reject traversal segments before VikingFS access checks by @lyfmt in #557
- feat(resource): implement incremental update with COW pattern by @myysy in #535
- build(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #556
- build(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #555
- build(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #554
- build(deps): bump docker/metadata-action from 5 to 6 by @dependabot[bot] in #553
- feat(bot):Feishu channel mention, support PIC conversation, per-channel workspace, by @yeshion23333 in #567
- feat: add --sender parameter to chat commands by @chenjw in #562
- fix(Dockerfile): add rust ov by @zhoujh01 in #570
- Fix: change Role.ROOT to Role.USER, and mirror the HTTP server behavior (sessions.py:94-95) by calling initialize_user_directories() and initialize_agent_directories() at the start of create_session(). by @yangxinxin-7 in #572
- fix: use normalized path in ClassifiedFile for cross-platform consistency by @sponge225 in #574
- fix(session): remove redundant parameters from archive call by @myysy in #575
- feat:Add OpenCode memory plugin example by @LittleLory in #569
- Update README.md by @Soda-Wong in #581
- Update README_CN.md by @Soda-Wong in #582
- Revert "feat(resource): implement incremental update with COW pattern" by @qin-ctx in #584
- Limit buffered OpenViking stderr output by @callzhang in #598
- fix(agfs): refactor Makefile for cross-platform compatibility by @chuanbao666 in #571
- fix: integrate rerank into hierarchical retriever by @mildred522 in #599
- feat: generate a framework of config by @zhougit86 in #600
- Follow up to #569: add attribution notice to OpenCode memory plugin example by @LittleLory in #588
- fix: windows zip path, code repo indexing, search retrieval, account id, rust cli version... by @MaojiaSheng in #577
- fix(core): add separator to agent_space_name to prevent hash collisions by @mvanhorn in #609
- fix(session): pass ctx/user/session_id into async commit memory extraction by @mvanhorn in #610
- fix: simplify embedding rate-limit re-enqueue and clean up tests by @qin-ctx in #615
- fix(mcp): add early detection for multi-instance stdio contention by @mvanhorn in #611
- fix(session): skip messages.jsonl in semantic file summary generation by @mvanhorn in #617
- fix(session): handle non-dict LLM responses in memory extraction by @mvanhorn in #618
- fix old assert by @BytedanceFu in #621
- feat(retrieve): add RetrievalObserver for retrieval quality metrics by @mvanhorn in #622
- fix(parse): preserve original filename and extension when importing from URL by @mvanhorn in #619
- fix: add observer for retrieval in "ov observer" by @MaojiaSheng in #623
- fix: avoid report error when config is not set by @zhougit86 in #629
- feat: allow ov tui to show all vector records in vikingdb by @MaojiaSheng in #626
- feat(openclaw-plugin): support multi-agent memory isolation via hook context agentId by @yingriyanlong in #637
- feat(trace): add request-level trace metrics and API support by @zhoujh01 in #640
- fix(embed): add text chunking for oversized embedding inputs (#616) by @lgYanami in #642
- Add new wechat group qrcode image by @yuyaoyoyo-svg in #649
- feat(parse): add support for legacy .doc and .xls file formats by @ngoclam9415 in #652
- fix(language): add threshold for ko/ru/ar detection to avoid misclass… by @KorenKrita in #658
- fix: file system operation endpoints /ov/fs/ls and /... in app.py by @orbisai0security in #647
- feat: split vectordb engine by cpu variant by @zhoujh01 in #656
- feat(embedding): add Ollama provider support for local embedding by @chenxiaofei-cxf in #644
- Update INSTALL-ZH.md by @yuyaoyoyo-svg in #663
- feat: optimize the feature of ov tui - vector records by @MaojiaSheng in #664
- Fix CJK token underestimation in _estimate_tokens fallback by @jnMetaCode in #661
- Update INSTALL.md by @yuyaoyoyo-svg in #666
- feat(embedder): add non-symmetric embedding support for query/document by @CHW0n9 in #608
- fix(bot): when used as bot provider, minimax not support role: system, avoid the role by @zhougit86 in #628
- feat(content): add reindex endpoint for re-embedding after manual edits by @deepakdevp in #631
- feat(embedding): add Voyage dense embedding support by @kfiramar in #635
- Feature/add resource increment by @myysy in #659
- feat(opencode): update plugin by @yangxinxin-7 in #678
- Improve FastAPI service clarity by @itsviseph in #670
- feat(session): add used() endpoint for context/skill tracking by @qin-ctx in #684
- fix(memory-openviking): share pending clientPromise across dual-context registrations by @Boshoff93 in #681
- fix(semantic): add budget guard to overview generation with batched summarization by @deepakdevp in #683
- Update INSTALL-ZH.md by @yuyaoyoyo-svg in #692
- fix(vlm): strip reasoning tags from model responses by @qin-ctx in #690
- fix(plugin): wrap auto-recall in withTimeout to prevent indefinite agent hang by @mvanhorn in #688
- feat(embedder): support extra HTTP headers for OpenAI-compatible providers by @Astro-Han in #694
- fix(plugin): memcommit session resolution and legacy commit compatibility by @LittleLory in #697
- fix(docker): copy build_support/ into container image by @qin-ctx in #699
- fix(session): add batch-internal dedup to prevent duplicates within same commit (#687) by @Astro-Han in #701
- feat(embedder): Gemini Embedding 2 multimodal support (text + image/video/audio/PDF) by @chethanuk in #607
- Revert: feat(embedder): Gemini Embedding 2 multimodal support (#607) by @qin-ctx in #703
- fix: docker by @qin-ctx in #705
- feat(embedding): combine document embedder and query embedder to avoi… by @zhougit86 in #702
- feat(session): add memory cold-storage archival via hotness scoring by @mvanhorn in #620
- fix(ci): publish wheels for Python 3.14 in release workflow by @illusion77 in #720
- fix: expand tilde (~) in storage workspace paths by @ZaynJarvis in #725
- fix(auth): reject implicit root fallback on tenant APIs by @Astro-Han in #716
- feat: add key=value parameter parsing to OpenAI embedder by @ZaynJarvis in #711
- fix(mcp): add api_key support and configurable defaults to MCP query server by @mvanhorn in #691
- fix(vlm): add max_tokens parameter to VLM completion calls to prevent vLLM rejection by @mvanhorn in #689
- feat(storage): add path locking and selective crash recovery for write operations by @qin-ctx in #431
- feat(resources): add resource watch scheduling and status tracking by @myysy in #709
- fix(bot):user memory message role changed to 'user',session add token use by @yeshion23333 in #733
- Add support for custom HTTP headers in VLM models (OpenAI-compatible) by @KorenKrita in #723
- feat(vlm): add streaming response handling for OpenAI VLM by @KorenKrita in #740
- revert-embedding-chunking by @qin-ctx in #741
- feat(openclaw-plugin 2.0): from memory plugin to context engine by @Mijamind719 in #662
- Revert "feat(vlm): add streaming response handling for OpenAI VLM" by @KorenKrita in #745
- feat(session): add chunked vectorization for long memories by @deepakdevp in #734
- fix(retrieval): allow find without rerank and preserve level-2 rerank scores by @mildred522 in #754
- docs: add Japanese documents by @eltociear in #755
- feat(vlm): add streaming response handling for OpenAI VLM by @KorenKrita in #756
- add openclaw-plugin upgrade description by @wlff123 in #758
- fix(session): replace blocking commit() with commit_async() in bot by @deepakdevp in #728
- doc.fix openclaw new plugin link by @KorenKrita in #761
- feat: add memory extract telemetry breakdown by @zhoujh01 in #735
- update docs for openclaw-plugin by @wlff123 in #766
- fix(plugin): add timeout protection to getClient() in before_prompt_build hook by @Meskjei in #749
- feat(client): add account/user params for root key multi-tenant auth by @qin-ctx in #767
- fix(bot): root key add account\user by @yeshion23333 in #770
- fix(vectordb): fix croaring avx by @zhoujh01 in #771
New Contributors
- @lyfmt made their first contribution in #557
- @LittleLory made their first contribution in #569
- @callzhang made their first contribution in #598
- @mvanhorn made their first contribution in #609
- @yingriyanlong made their first contribution in #637
- @lgYanami made their first contribution in #642
- @ngoclam9415 made their first contribution in #652
- @KorenKrita made their first contribution in #658
- @orbisai0security made their first contribution in #647
- @chenxiaofei-cxf made their first contribution in #644
- @jnMetaCode made their first contribution in #661
- @CHW0n9 made their first contribution in #608
- @deepakdevp made their first contribution in #631
- @kfiramar made their first contribution in #635
- @itsviseph made their first contribution in #670
- @Boshoff93 made their first contribution in #681
- @Astro-Han made their first contribution in #694
- @chethanuk made their first contribution in #607
- @illusion77 made their first contribution in #720
- @eltociear made their first contribution in #755
- @Meskjei made their first contribution in #749
Full Changelog: v0.2.6...v0.2.8