github volcengine/OpenViking v0.2.8

latest release: v0.2.9
7 hours ago

OpenViking v0.2.8 发布公告

OpenViking v0.2.8 现已发布。

这是一次围绕 上下文工程能力、插件生态、检索与记忆链路、可观测性以及工程兼容性 持续增强的版本更新。
整体来看,v0.2.8 以功能补强和稳定性修复为主,适合现有用户升级;如果你在使用 OpenClaw / OpenCode 插件、长会话记忆、资源同步或自定义模型接入,本次更新尤其值得关注。

本次更新亮点

1. 插件生态继续升级,OpenClaw / OpenCode 集成更完整

  • openclaw-plugin 升级到 2.0,从 memory plugin 进一步演进为 context engine
  • 新增并完善 OpenCode memory plugin example,补充 attribution 与后续插件更新。
  • 支持 多智能体 memory isolation,可基于 hook context 中的 agentId 做记忆隔离。
  • 修复插件自动 recall 可能导致 agent 长时间挂起的问题,并补强 legacy commit 兼容。
  • MCP 查询服务补充 api_key 支持与默认配置能力,降低接入成本。

2. Session / Memory 链路增强,长期记忆能力更稳

  • 新增 memory cold-storage archival,通过 hotness scoring 管理长期记忆冷热分层。
  • 新增长记忆 chunked vectorization,改善超长内容的向量化处理能力。
  • 增加 used() 接口,用于上下文 / skill 使用追踪。
  • 修复 async commit 过程中的上下文透传、批次内重复写入、非标准 LLM 响应处理等问题。
  • Bot 场景下改用 commit_async(),减少阻塞风险,提升长会话稳定性。

3. 检索与 Embedding 能力持续增强

  • 分层检索中正式集成 rerank,并修复无 rerank 场景下的检索可用性问题。
  • 新增 RetrievalObserver,可用于检索质量指标观测,并已接入 ov observer
  • Embedding 侧新增:
    • Ollama 本地 embedding provider 支持(#644
    • Voyage dense embedding 支持(#635
    • OpenAI-compatible provider 的 extra HTTP headers 支持(#694
    • query / document 非对称 embedding 支持(#608#702
    • OpenAI embedder 的 key=value 参数解析能力(#711
  • 修复 CJK token 估算偏低等问题,提升多语言场景下的稳定性。

4. 资源、存储与解析链路更完善

  • 新增 resource watch scheduling 与状态跟踪能力,资源同步流程更可控。
  • 新增 reindex endpoint,支持内容手动修改后的重新 embedding。
  • 解析能力新增对 legacy .doc / .xls 格式的支持。
  • 修复从 URL 导入文件时文件名与扩展名丢失的问题。
  • 存储层新增 path locking 与选择性 crash recovery,进一步提升写入安全性。
  • 修复 tenant API 的隐式 root fallback、文件系统接口路径处理、工作目录 ~ 展开等问题。

5. VLM、Trace 与可观测性能力加强

  • 新增 request-level trace metrics 与对应 API 支持。
  • 新增 memory extract telemetry breakdown,帮助更细粒度地分析记忆提取过程。
  • OpenAI VLM 支持 streaming response handling
  • 补充 max_tokens 参数以避免 vLLM 拒绝请求,并支持 OpenAI-compatible VLM 的自定义 HTTP headers。
  • 自动清理模型输出中的 <think> 标签,减少推理内容污染存储结果。

6. 工程兼容性与交付体验继续改进

  • 修复 Windows zip 路径、代码仓库索引、Rust CLI 版本等跨平台问题。
  • agfs Makefile 完成跨平台兼容性重构。
  • Vectordb engine 支持按 CPU variant 拆分。
  • Docker 构建链路持续修复,补齐 build_support/ 拷贝逻辑。
  • Release workflow 支持发布 Python 3.14 wheels

7. 文档与社区内容持续补强

  • README、INSTALL、INSTALL-ZH 等文档持续更新。
  • 新增 日文文档,进一步提升国际化支持。
  • 补充 OpenClaw 插件升级说明与新链接修复。
  • 更新社区微信群二维码等资料,方便用户加入交流。

升级建议

  • 如果你在使用 OpenClaw 旧版 memory plugin,建议重点阅读 2.0 升级说明后再升级。https://github.com/volcengine/OpenViking/blob/main/examples/openclaw-plugin/INSTALL-ZH.md
  • 如果你依赖 OpenAI-compatible 模型网关 / 本地模型服务,建议关注本次新增的 headers、max_tokensapi_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

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

Full Changelog: v0.2.6...v0.2.8

Don't miss a new OpenViking release

NewReleases is sending notifications on new releases.