OpenViking v0.2.11
OpenViking v0.2.11 聚焦在四个方向:模型与检索生态扩展、解析与导入能力增强、服务端可观测性与运维能力补齐,以及多租户安全性和稳定性加固。相较 v0.2.9,这一版本不仅补上了 Helm 部署、Prometheus 指标、健康统计 API、ov doctor 与 reindex 等工程能力,也持续扩展了 embedding、rerank、VLM 与 bot 侧的模型接入面。
这次更新的代表性改动包括:新增 MiniMax embedding、Azure OpenAI、GeminiDenseEmbedder、LiteLLM embedding/rerank、OpenAI-compatible rerank 与 Tavily 搜索后端;新增 Whisper 音频转写与飞书/Lark 云文档解析;新增多租户文件加密与文档加密;增加 Prometheus 指标导出、内存健康统计接口、可信租户头鉴权模式,以及面向 Kubernetes 的 Helm Chart。与此同时,版本还集中修复了 Windows 锁文件、会话异步提交、向量检索 NaN/Inf 分数、ZIP 路径穿越、SOCKS5 代理兼容等一批实际使用中的问题。
版本亮点
- 模型与检索生态继续扩展:新增 MiniMax embedding #624、Azure OpenAI embedding/VLM #808、GeminiDenseEmbedder #751、LiteLLM embedding #853 与 rerank #888,并补充 OpenAI-compatible rerank #785 与 Tavily 搜索后端 #788。
- 内容接入链路更完整:音频资源现在支持 Whisper ASR 解析 #805,云文档场景新增飞书/Lark 解析器 #831,文件向量化策略变为可配置 #858,搜索结果还新增了 provenance 元数据 #852。
- 服务端运维能力明显补齐:新增
ov reindex#795、ov doctor#851、Prometheus exporter #806、内存健康统计 API #706、可信租户头模式 #868 与 Helm Chart #800。 - 多租户与安全能力增强:新增多租户文件加密 #828 和文档加密能力 #893,修复租户上下文在 observer 与 reindex 流程中的透传问题 #807 #820,并修复 ZIP Slip 风险 #879 与 trusted auth 模式下 API key 校验缺失 #924。
- 稳定性与工程体验持续加固:向量检索 NaN/Inf 分数处理在结果端 #824 和源头 #882 双重兜底,会话异步提交与并发提交问题被修复 #819 #783 #900,Windows stale lock 与 TUI 输入问题持续修复 #790 #798 #854,同时补上了代理兼容 #957 与 API 重试风暴保护 #772。
升级提示
- 如果你使用
litellm集成,请关注这一版本中的安全策略调整:先临时硬禁用 #937,后恢复为仅允许<1.82.6的版本范围 #966。建议显式锁定依赖版本。 - 如果你启用 trusted auth 模式,需要同时配置服务端 API key,相关校验已在 #924 中强制执行。
- Helm 默认配置已切换为更适合 Volcengine 场景的默认值,并补齐缺失字段 #822。升级 chart 时建议重新审阅 values 配置。
- Windows 用户建议关注 stale PID / RocksDB LOCK 文件处理增强 #790 #798 #854。
详细变更
以下列表已按主题去重整理,保留每一项唯一 PR,并附上对应链接,便于直接用于 GitHub Release。
模型、Embedding、Rerank 与检索生态
- 新增 MiniMax embedding provider,支持通过官方 HTTP API 接入 MiniMax 向量模型。PR #624
- 新增 OpenAI-compatible rerank provider。PR #785
- 新增 Azure OpenAI 对 embedding 与 VLM 的支持。PR #808
- 新增 GeminiDenseEmbedder 文本向量模型提供方。PR #751
- 新增 Tavily 作为可配置的 web search backend。PR #788
- 修复 LiteLLM 下
zai/模型前缀处理,避免重复拼接zhipu前缀。PR #789 - 修复 Gemini embedder 相关问题。PR #841
- 新增 LiteLLM embedding provider。PR #853
- 新增默认向量索引名可配置能力。PR #861
- 新增 LiteLLM rerank provider。PR #888
- 修复 Ollama embedding provider 的维度解析问题。PR #915
- 为 Jina 代码模型补充 code-specific task 默认值。PR #914
- 在 embedder 与 vectordb 维度不匹配时给出警告提示。PR #930
- 为 Jina embedding provider 增加代码模型维度与更可操作的 422 错误提示。PR #928
- 搜索结果新增 provenance 元数据,方便追踪召回来源。PR #852
- 修复 recall limit 逻辑。PR #821
- 在结果序列化前钳制向量检索中的
inf/nan分数,避免 JSON 失败。PR #824 - 在相似度分数源头钳制
inf/nan,进一步避免 JSON crash。PR #882
解析、导入与内容处理
- 新增基于 Whisper 的音频解析与 ASR 集成。PR #805
- 修复 PDF 书签目标页为整数索引时的解析问题。PR #794
- 新增飞书/Lark 云文档解析器。PR #831
- 修复 MarkdownParser 的字符数限制处理。PR #826
- 支持可配置的文件向量化策略。PR #858
- 优化语义处理性能,并发执行 batch overview 与 file summary 生成。PR #840
- 修复
resource add时可能出现的file exists错误。PR #845 - 修复 ZIP 解压中的 Zip Slip 路径穿越风险。PR #879
服务端、观测、部署与运维
- 新增 CLI
reindex命令,用于主动触发内容重建索引。PR #795 - 修复 observer 中
RequestContext透传,支持 tenant-scoped vector count。PR #807 - 新增基于 observer pattern 的 Prometheus metrics exporter。PR #806
- 新增内存健康统计 API endpoints。PR #706
- 新增 Helm Chart,支持 Kubernetes 部署。PR #800
- 修复 Helm 默认值并补齐缺失配置字段,默认切换为 Volcengine 场景。PR #822
- 新增
ov doctor诊断命令。PR #851 - 将
ov doctor中的ov.confJSON 加载逻辑集中管理。PR #913 - 新增 trusted auth mode,支持基于 tenant headers 的可信鉴权模式。PR #868
- 修复 trusted auth mode 下必须提供 server API key 的校验。PR #924
- 修复 dockerized localhost server 场景下 CLI 上传本地文件的问题。PR #961
- 将 vectordb engine 迁移到 abi3 packaging,改善构建与分发兼容性。PR #897
- 重构集成测试体系。PR #910
多租户、安全、会话与稳定性
- 新增多租户文件加密能力。PR #828
- 新增文档加密能力,并重构加密相关代码。PR #893
- 修复 reindex existence check 未正确传递 tenant context 的问题。PR #820
- 为
client.Session新增commit_async。PR #819 - 修复 session archive 相关问题。PR #883
- 修复 session 并发提交时旧消息可能被重复提交的问题。PR #783
- 新增异步 session commit、session metadata 与 archive continuity threading。PR #900
- 为队列增加 circuit breaker,避免 API retry storm。PR #772
- 修复 Semantic queue worker 使用错误并发限制的问题,改为
_max_concurrent_semantic。PR #905 - 修复 HTTPX 在 SOCKS5 代理场景下的识别问题,避免 OpenViking crash。PR #957
- 严格校验
ov.conf与ovcli.conf。PR #904 - 加强
LogConfig未知字段校验,并在ParserConfig中给出告警。PR #856 - 读取
ov.confJSON 时支持展开环境变量。PR #908 - 临时硬禁用 LiteLLM 集成以规避安全风险。PR #937
- 在安全范围内恢复 LiteLLM 集成,仅允许
<1.82.6版本。PR #966
Windows 兼容性与底层资源处理
- 修复 Windows 下 stale PID lock 与 TUI console input 处理问题。PR #790
- 启动时清理 Windows 下残留的 RocksDB
LOCK文件。PR #798 - 说明文档中补充
process_lock在 Windows 的错误处理说明。PR #849 - 修复
process_lock._is_pid_alive对WinError 11的处理。PR #854
Bot、Plugin 与 OpenClaw
- 为 memory-openviking plugin 增加清理脚本。PR #832
- 增加旧版本 plugin 清理说明。PR #843
- 为 openclaw-plugin 增加卸载脚本。PR #933
- openclaw-plugin 上下文引擎重构,增加 token budget 约束并减少上下文膨胀。PR #891
- 新增 archive-aware context assembly 与 async session commit 到 openclaw-plugin。PR #938
- 回滚 openclaw-plugin 的 archive-aware context assembly 与 async session commit 变更。PR #953
- bot 侧新增 multi read tool,优化 loop memory,修复 agent memory search,并更新 README。PR #895
- bot 侧删除无效工具,并更新 search/grep tool 描述。PR #929
- bot 默认 provider 切换为 OpenAI,并修复飞书
chat_mode值。PR #962 - 在
ov脚本中新增import locomo。PR #965 - 重构 memory extract 逻辑。PR #916
- 再次重构 memory extract 逻辑。PR #952
VLM 与多模态相关修复
- 修复当 API 返回字符串响应时 VLM 抛出
AttributeError的问题。PR #814 - 将
thinking标记透传给 dashscope OpenAI backend。PR #939
构建、CI、版本与仓库维护
- 使用
pull_request_target让 Qodo review 能在 fork PR 上运行。PR #816 - 同步
ovCLI 版本与openviking包版本。PR #869 - 修复 CI 构建依赖中缺失
setuptools-scm的问题。PR #870 - 更新
.pr_agent.toml。PR #838 - 新增 gitcgr code graph badge。PR #872
- 回滚 gitcgr code graph badge。PR #884
文档与社区更新
- README banner 替换为居中 logo。PR #799
- 更新
INSTALL-ZH.md。PR #818 - 更新
INSTALL.md。PR #823 - 增加 Gemini embedding provider 的使用与安装文档。PR #830
- 新增 OpenCode 与 OpenClaw plugin 的中文 README 翻译。PR #850
- 新增增量更新功能的 API 文档。PR #886
- 新增飞书/Lark 云文档解析文档。PR #906
- 更新
INSTALL.md。PR #917 - 更新
INSTALL-ZH.md。PR #918 - 更新最新微信交流群二维码。PR #919
- 更新
README_CN.md。PR #920 - 更新
README.md。PR #921
New Contributors
- @jackjin1997 首次贡献:PR #800
- @zeng121 首次贡献:PR #808
- @Bortlesboat 首次贡献:PR #790
- @evanYDL 首次贡献:PR #788
- @RobertIndie 首次贡献:PR #820
- @REMvisual 首次贡献:PR #798
- @boyweb 首次贡献:PR #819
- @Protocol-zero-0 首次贡献:PR #789
- @a1461750564 首次贡献:PR #824
- @SCPZ24 首次贡献:PR #850
- @ryzn0518 首次贡献:PR #831
- @stubbi 首次贡献:PR #853
- @vitali87 首次贡献:PR #872
- @snemesh 首次贡献:PR #882
- @vincent067 首次贡献:PR #905
- @ningfeemic-dev 首次贡献:PR #858
- @everforge 首次贡献:PR #913
- @JasonOA888 首次贡献:PR #915
- @itlackey 首次贡献:PR #908
- @3kyou1 首次贡献:PR #914
- @sacloudy 首次贡献:PR #939
- @Ghostknight0 首次贡献:PR #957
What's Changed
- feat(embedder): minimax embeding by @zhougit86 in #624
- feat(cli): add reindex command to trigger content re-indexing by @mvanhorn in #795
- feat: replace banner with centered logo in README files by @ZaynJarvis in #799
- fix(observer): pass RequestContext through vikingdb observer for tenant-scoped vector count by @qin-ctx in #807
- feat(parse): implement Whisper ASR integration for audio parser by @mvanhorn in #805
- feat(rerank): add OpenAI-compatible rerank provider by @chenxiaofei-cxf in #785
- fix(ci): use pull_request_target so Qodo review runs on fork PRs by @qin-ctx in #816
- feat: add Helm chart for Kubernetes deployment by @jackjin1997 in #800
- feat: add Azure OpenAI support for embedding and VLM by @zeng121 in #808
- fix(windows): handle stale PID locks and TUI console input by @Bortlesboat in #790
- fix(vlm): fix AttributeError when API returns string response (Issue #801) by @sponge225 in #814
- fix(parser): resolve PDF bookmark destinations for integer page indices by @mvanhorn in #794
- Update INSTALL-ZH.md by @yuyaoyoyo-svg in #818
- feat: add Tavily as configurable web search backend by @evanYDL in #788
- fix(content): pass tenant context to reindex existence check by @RobertIndie in #820
- fix(recall): fix recall limit by @zhoujh01 in #821
- fix(helm): switch to volcengine defaults and add missing config fields by @qin-ctx in #822
- fix(windows): clean stale RocksDB LOCK files on startup by @REMvisual in #798
- Update INSTALL.md by @yuyaoyoyo-svg in #823
- fix(session): add commit_async for client.Session by @boyweb in #819
- feat(gemini): add GeminiDenseEmbedder text embedding provider by @chethanuk in #751
- fix(vlm): skip zhipu prefix when model already uses zai/ (LiteLLM) by @Protocol-zero-0 in #789
- add script to clean up memory-openviking plugin by @wlff123 in #832
- feat: Add multi-tenant file encryption capability by @baojun-zhang in #828
- fix(parser): MarkdownParser char limit by @chenxiaofei-cxf in #826
- feat(telemetry): add Prometheus metrics exporter via observer pattern by @mvanhorn in #806
- fix(search): clamp inf/nan scores from vector search to prevent JSON serialization failure by @a1461750564 in #824
- Update .pr_agent.toml by @qin-ptr in #838
- feat(server): add memory health statistics API endpoints by @mvanhorn in #706
- fix/gemini_embedder by @qin-ptr in #841
- Add instructions for cleaning up old version plugins. by @wlff123 in #843
- fix(resource): resolve 'file exists' errors on resource add by @qin-ptr in #845
- docs: Add Chinese README translations for OpenCode and OpenClaw plugins by @SCPZ24 in #850
- docs(process_lock): clarify Windows error handling for _is_pid_alive by @haosenwang1018 in #849
- fix(config): validate unknown fields in LogConfig and warn in ParserConfig by @r266-tech in #856
- docs: add Gemini embedding provider usage and installation guide by @chethanuk in #830
- fix(utils): handle WinError 11 in process_lock._is_pid_alive by @Bortlesboat in #854
- feat(parse): add Feishu/Lark cloud document parser by @ryzn0518 in #831
- feat(vectordb): make default index name configurable by @zhoujh01 in #861
- feat(embedding): add litellm as embedding provider by @stubbi in #853
- fix(build): sync ov cli version with openviking by @zhoujh01 in #869
- fix(scm) Fix missing setuptools-scm in CI build dependencies by @zhoujh01 in #870
- docs: add gitcgr code graph badge by @vitali87 in #872
- feat(server): add trusted auth mode for tenant headers by @zhoujh01 in #868
- Revert "docs: add gitcgr code graph badge" by @qin-ptr in #884
- fix: clamp inf/nan similarity scores at source to prevent JSON crash by @snemesh in #882
- docs(api): add documentation for incremental update feature by @myysy in #886
- Fix/session archive by @myysy in #883
- feat(openclaw-plugin):context engine refactor design & enforce token budget and reduce context bloat by @Mijamind719 in #891
- fix(session): prevent concurrent commit re-committing old messages by @deepakdevp in #783
- fix: prevent Zip Slip path traversal in ZIP extraction by @r266-tech in #879
- feat(rerank): add litellm as rerank provider by @mvanhorn in #888
- feat(vectordb)Migrate vectordb engine to abi3 packaging by @zhoujh01 in #897
- feat: add encrypt doc && refactoring encrypt code by @baojun-zhang in #893
- feat(bot):add multi read tool, opt loop memory, fix agent memory search, update README by @yeshion23333 in #895
- feat(cli): add ov doctor diagnostic command by @mvanhorn in #851
- fix: use _max_concurrent_semantic in Semantic queue worker by @vincent067 in #905
- docs: add Feishu/Lark cloud document parser documentation by @r266-tech in #906
- feat: make file vectorization strategy configurable by @ningfeemic-dev in #858
- feat(retrieve): add provenance metadata to search results by @mvanhorn in #852
- perf(semantic): run batch overview generation and file summaries concurrently by @ahmedhesham6 in #840
- fix(queue): add circuit breaker to prevent API retry storms by @deepakdevp in #772
- feat: refactor integration test by @baojun-zhang in #910
- Refactor(CLI): Centralize ov.conf JSON loading in ov doctor by @everforge in #913
- fix(config): validate ov.conf and ovcli.conf strictly by @qin-ctx in #904
- fix(embedding): add dimension resolution for Ollama embedding provider by @JasonOA888 in #915
- fix: expand env vars when loading ov.conf JSON config files by @itlackey in #908
- Update INSTALL.md by @yuyaoyoyo-svg in #917
- Update INSTALL-ZH.md by @yuyaoyoyo-svg in #918
- add latest wechat-group-qrcode by @yuyaoyoyo-svg in #919
- Use code-specific Jina task defaults for code embedding models by @3kyou1 in #914
- Update README_CN.md by @yuyaoyoyo-svg in #920
- Update README.md by @yuyaoyoyo-svg in #921
- Refactor memory extract by @chenjw in #916
- fix: require server api key in trusted auth mode by @zhoujh01 in #924
- add script to uninstall openclaw-plugin by @wlff123 in #933
- feat(bot):delete invalid tools, update search\grep tool's description by @yeshion23333 in #929
- fix(embed): give warning when embeder and vectoerdb are not the same. by @zhougit86 in #930
- fix(embedder): add code model dimensions and actionable 422 error for Jina by @deepakdevp in #928
- feat(session): async commit, session metadata, and archive continuity threading by @qin-ctx in #900
- fix(security): hard-disable litellm integrations by @qin-ctx in #937
- feat(openclaw-plugin): add archive-aware context assembly and async session commit by @Mijamind719 in #938
- Revert "feat(openclaw-plugin): add archive-aware context assembly and async session commit" by @qin-ctx in #953
- fix(vlm): pass thinking flag to dashscope openai backend by @sacloudy in #939
- Refactor memory extract by @chenjw in #952
- Fix HTTPX recognition issue with SOCKS5 proxy causing OpenViking crash by @Ghostknight0 in #957
- fix(cli): upload local files for dockerized localhost servers by @qin-ctx in #961
- fix(bot):change provider to OpenAI, fix feishu chat_mode value by @yeshion23333 in #962
- feat(bot): add import locomo to ov script by @yeshion23333 in #965
- fix(security): restore litellm integrations below 1.82.6 by @qin-ctx in #966
- Fix/watch manager file not found by @myysy in #970
- fix release build workflow by @zhoujh01 in #971
New Contributors
- @jackjin1997 made their first contribution in #800
- @zeng121 made their first contribution in #808
- @Bortlesboat made their first contribution in #790
- @evanYDL made their first contribution in #788
- @RobertIndie made their first contribution in #820
- @REMvisual made their first contribution in #798
- @boyweb made their first contribution in #819
- @Protocol-zero-0 made their first contribution in #789
- @a1461750564 made their first contribution in #824
- @SCPZ24 made their first contribution in #850
- @ryzn0518 made their first contribution in #831
- @stubbi made their first contribution in #853
- @vitali87 made their first contribution in #872
- @snemesh made their first contribution in #882
- @vincent067 made their first contribution in #905
- @ningfeemic-dev made their first contribution in #858
- @everforge made their first contribution in #913
- @JasonOA888 made their first contribution in #915
- @itlackey made their first contribution in #908
- @3kyou1 made their first contribution in #914
- @sacloudy made their first contribution in #939
- @Ghostknight0 made their first contribution in #957
Full Changelog: v0.2.9...v0.2.11