OpenViking v0.3.18
OpenViking v0.3.18 已发布。
这个版本重点围绕三件事展开:一是继续推进 Web Studio,逐步完成从 legacy console 到新前端工作台的切换;二是增强 MCP、API 与 CLI 的能力边界,让自动化接入、文件上传和代码导航更加完整;三是继续打磨底层稳定性,在 Memory、Storage、Embedding、Observability 和测试体系上补齐大量细节问题。
相比前几个版本,v0.3.18 更像一次“产品体验 + 接入能力 + 基础设施”的同步推进。一方面,用户可见的 Web Studio、OAuth 与移动端体验明显改善;另一方面,面向开发者和平台侧的 Watch Management、MCP 工具扩展、存储异步化、指标与测试稳定性也一起落地,让 OpenViking 在可用性和可维护性上都更进一步。
重点变更
1. Web Studio 成为新的默认前端体验
这一版本里,Web Studio 的定位进一步明确,不再只是附加能力,而是开始承接主控制台职责。我们新增了前端 console workspace,将 Web Studio 打包进 Docker,并通过 /studio 统一提供服务;同时,OAuth authorize UI 也迁移到 Web Studio,旧版 legacy console 则正式下线。
除了功能接管,这一轮还做了大量面向真实使用体验的优化,包括 PWA 支持、移动端界面打磨、OAuth setup 标签页补齐、request logs 细节优化,以及 resource reader 的体验增强。配合 README logo、favicon 和微信二维码更新,整个项目在默认品牌形象和入口体验上也更加统一。
2. MCP / API / CLI 的能力面继续扩展
本版本新增了 Watch Management API,并且不是只停留在单一接口层,而是同步覆盖 REST、ov CLI 与 MCP,使其可以直接进入自动化编排和外部集成场景。对于需要持续监控、取消任务或构建管理流的用户来说,这部分补齐非常关键。
MCP 能力也继续增强。新增了本地文件的 progressive single-entrypoint upload,让上传链路更适合复杂客户端和渐进式接入;同时补充了 code_outline、code_search、code_expand 三个代码导航工具,进一步提升了 OpenViking 在代码理解和工程自动化场景中的可用性。
CLI 和 OpenClaw 生态也有不少细节增强,比如 zip 阶段支持 --ignore-dirs、upload-only 相关参数作用域修正、setup helper 支持 npm 插件安装,以及新增 ov_dream OpenClaw skill。这些改动虽然分散,但组合起来能明显减少接入和使用过程中的摩擦。
3. Memory 与 Retrieval 持续增强
在智能能力层面,这个版本继续沿着 Memory 方向深入。trajectory extraction 做了升级,目标是进一步提升记忆效果;同时加入了 memory link 能力,并支持通过开关启用 Vaka memory templates。对于依赖长期上下文、轨迹抽取和记忆增强的场景,这一轮改动是实质性的能力补强。
除了新增能力,也修掉了一批影响稳定性的细节问题,包括缺失 role_id 时的 agent memory 检索异常、tool call 计数缺失时的处理,以及语言输出相关问题。检索链路上还对 hierarchical child search 做了并行化,继续提升复杂层级检索的性能。
4. Storage / VectorDB / 数据层稳定性继续补课
底层数据与存储相关的改动很多,而且价值都比较务实。这个版本继续推进存储锁与 IO 的异步化,按事件循环隔离异步客户端,并修复一系列容易在复杂部署和高并发环境下暴露的问题,比如 mv not found 误报、semantic lock ownership 丢失、vectordb unicode recovery 异常,以及 oversized bytes row strings 的防护。
同时,S3 backend grep 做了性能优化,URI mapping 更新时改为重新加载完整记录。这些改动单看都不算“显眼功能”,但对线上运行稳定性、诊断成本和长周期维护很重要。
5. Embedding、VLM、OpenClaw 与模型链路更健壮
模型接入链路上,这一版本继续补强“错误要看得见、行为要更可控”这件事。Embedding 场景里,上游错误现在会显式返回,而不是静默超时;OpenAI / Azure embedder 也新增了 encoding_format 暴露能力。VLM 侧则补上了对 LiteLLM native routes 的兼容,并为 token usage stat 增加了 backup 逻辑。
此外,LoCaMo LLM judge 增加了空 choices 与 message=None 的防护,OpenClaw Tool Result Compression / Externalization 能力加入,opencode 在 session error 时也会保留 pending messages。这些细节共同提升了模型调用链的可诊断性和容错性。
6. Observability、测试与工程质量进一步扎实
平台可观测性方面,本版本加入了 VikingBot feedback observability,并将 metric registry 做了集中化治理;usage audit sqlite 也调整到 system data 目录,减少部署环境下的数据路径混乱。
测试与工程质量上,新增了一批 API 测试用例,修复了 memory v2 测试可靠性问题,并持续稳定 API / CLI 集成测试 CI。与此同时,还处理了 root / health endpoint 上不必要的 async、quickstart 预览过早的问题,以及 Helm chart 默认配置刷新等工程收尾项。这些改动会让后续迭代更稳定,也更容易回归验证。
7. 文档与发布资产同步更新
文档方面,这个版本也做了较系统的补齐。包括 server.observability.dump_body、embedding 和 ollama 在 /ready 的探针、Watch Management endpoints、public_base_url、upload_signed_ttl_seconds、MCP 新工具、OpenClaw 插件安装与包名、Web Studio /studio 路径迁移等内容,都在文档中同步落地。
整体来看,v0.3.18 不只是功能堆叠,而是一次比较完整的产品化推进:前端入口更统一,接入能力更强,底层链路更稳,文档也更跟得上变化。
按主题汇总的相关 PR
Web Studio / 前端体验
- #2066 更新 README Logo
#2066 - #2067 将 favicon 从 indigo 替换为 crystal sailboat
#2067 - #2128 新增 Web Studio 前端 console workspace
#2128 - #2156 将 Web Studio 打包进 Docker,并通过
/studio提供服务
#2156 - #2160 下线 legacy console,随 pip 分发 Web Studio,并保留 favicon 路由
#2160 - #2170 将 OAuth authorize UI 迁移到 Web Studio
#2170 - #2163 改进 Web Studio 的 resource reader
#2163 - #2178 增加 PWA、移动端优化、OAuth-setup 标签页与 request logs 细节优化
#2178 - #2162 更新微信二维码
#2162
MCP / API / CLI / OpenClaw 接入能力
- #2110 新增 Watch Management API,覆盖 REST、
ovCLI 与 MCP
#2110 - #1847 新增面向本地文件的渐进式单入口上传能力
#1847 - #2146 新增代码导航工具
code_outline、code_search、code_expand
#2146 - #2069 在
/mcp/下提供 favicon,兼容 connector-relative 客户端
#2069 - #2072 让 OpenClaw setup helper 支持 npm 插件安装
#2072 - #2136 新增
ov_dreamOpenClaw skill,用于 OpenViking sync
#2136 - #2070 在 zip 压缩阶段应用
--ignore-dirs过滤指定目录
#2070 - #2073 修复 upload-only 相关选项的作用域
#2073 - #2058 为 OpenClaw 增加 OpenViking Tool Result Externalization 能力
#2058 - #2094 在 session error 时保留 opencode 的 pending messages
#2094
Memory / Retrieval / Agent
- #2017 升级 trajectory extraction,提升 memory 效果
#2017 - #2010 新增 memory link 能力
#2010 - #2130 支持通过开关启用 Vaka memory templates
#2130 - #2147 更新 Vaka 相关实验
#2147 - #2185 调整模板开关名称
#2185 - #2108 修复缺失
role_id时 bot 开启 agent memory 检索的问题
#2108 - #2098 处理 memory 中缺失 tool call 计数的场景
#2098 - #2155 并行化 hierarchical child search,提升检索性能
#2155 - #2164 修复语言输出相关问题
#2164
Storage / VectorDB / 数据层
- #2074 修复存储层
mv not found误报
#2074 - #2103 修复 vectordb 的 unicode recovery 问题
#2103 - #2140 保留 semantic lock ownership,避免锁语义异常
#2140 - #2078 优化 S3 backend grep 性能
#2078 - #2165 更新 URI mapping 时重新加载完整记录
#2165 - #2168 按事件循环隔离异步客户端
#2168 - #2171 拒绝 oversized bytes row strings,增强 vectordb 健壮性
#2171 - #2143 异步化存储锁与 IO
#2143
Embedding / VLM / 模型链路
- #1910 显式透出 Embedding 上游错误,避免静默超时
#1910 - #2092 为 OpenAI / Azure embedder 暴露
encoding_format
#2092 - #2068 为 VLM token usage stat 增加 backup 逻辑
#2068 - #2111 让 VLM 兼容 LiteLLM native routes
#2111 - #2096 为 LoCaMo LLM judge 增加空
choices与message=None防护
#2096
Observability / Metrics / 安全
- #2037 新增 VikingBot feedback observability
#2037 - #2161 集中化治理 metric registry
#2161 - #2149 将 usage audit sqlite 存储到 system data 目录
#2149
测试 / 工程质量 / 部署
- #2097 新增 API 测试用例,并修复 memory v2 测试可靠性
#2097 - #2105 稳定 API 与 CLI 集成测试 CI
#2105 - #2109 跳过
test_wait_with_timeout,规避 CLI/Server timeout 参数不一致
#2109 - #2126 移除 root 与 health endpoint 上不必要的 async
#2126 - #2167 在 quickstart 示例中增加等待,避免预览过早
#2167 - #2189 刷新 OpenViking Helm chart 默认配置
#2189 - #2148 删除部分无用文件
#2148 - #2172 为 tau2 基准补充通用 scope fairness 检查
#2172
文档更新
- #2063 补充
server.observability.dump_body文档
#2063 - #2055 修复上传 clean URL aliases 到 TOS 的文档说明
#2055 - #2077 补充 OpenClaw 的
plugin-source/plugin-package/plugin-version自动识别文档
#2077 - #2088 补充 v0.3.17 中英文 changelog
#2088 - #2086 补充 embedding 与 ollama 在
/ready的探针说明
#2086 - #2082 补充 metrics 中 per-channel one-turn resolution 的 PromQL 示例
#2082 - #2107 说明 resource API 字段命名
#2107 - #2014 补充
ov_server.api_key_type与exp_write_tools文档
#2014 - #2134 在 MCP 集成表中补充
list_watches与cancel_watch
#2134 - #2123 补充 Watch Management API endpoints 文档
#2123 - #2153 补充
public_base_url与upload_signed_ttl_seconds文档
#2153 - #2152 修复中文 quickstart 中的认证链接
#2152 - #2176 补充
code_outline/code_search/code_expand文档
#2176 - #2175 将文档中的 legacy console /
8020端口引用替换为 Web Studio/studio
#2175 - #2150 让 OpenClaw 插件文档与 ClawHub 标准安装体验对齐
#2150 - #2099 在 OpenClaw 文档中使用 canonical OpenViking plugin package
#2099
新贡献者
@qizwiz首次贡献:#2096
#2096@CuSO41108首次贡献:#2094
#2094@Ferry-200首次贡献:#2128
#2128@lazyayuan首次贡献:#2167
#2167
完整变更
- Compare: v0.3.17...v0.3.18
What's Changed
- docs: update readme logo by @ZaynJarvis in #2066
- docs: replace indigo favicons with crystal sailboat by @ZaynJarvis in #2067
- fix(server): serve favicons under /mcp/ for connector-relative clients by @t0saki in #2069
- fix: backup vlm token usage stat by @MaojiaSheng in #2068
- fix(cli): 在 zip 压缩阶段应用 --ignore-dirs 参数过滤指定目录 by @sponge225 in #2070
- feat(metrics): add vikingbot feedback observability by @myysy in #2037
- fix(openclaw): support npm plugin installs in setup helper by @LinQiang391 in #2072
- docs(observability): document server.observability.dump_body from #2052 by @r266-tech in #2063
- fix(docs): upload clean URL aliases to TOS by @yufeng201 in #2055
- fix(storage): avoid false mv not found errors by @qin-ctx in #2074
- fix(cli): scope upload-only options by @ZaynJarvis in #2073
- docs(openclaw): document plugin-source / plugin-package and plugin-version auto-detect from #2072 by @r266-tech in #2077
- fix(embedding): surface upstream errors instead of silent timeout by @ZaynJarvis in #1910
- docs(openclaw): use canonical OpenViking plugin package by @LinQiang391 in #2099
- feat: add new API test cases and fix memory v2 test reliability by @kaisongli in #2097
- fix(storage): sanitize vectordb unicode recovery by @qin-ctx in #2103
- fix: guard against empty choices and message=None in LoCaMo LLM judge by @qizwiz in #2096
- fix: stabilize API & CLI integration tests in CI by @kaisongli in #2105
- docs(changelog): add v0.3.17 entry (EN+ZH) by @r266-tech in #2088
- docs(deployment): document embedding + ollama probes on /ready from #1910 by @r266-tech in #2086
- docs(en/metrics): add per-channel one-turn resolution PromQL example from #2037 by @r266-tech in #2082
- feat(embedder): expose encoding_format for OpenAI/Azure providers by @simonsmh in #2092
- fix(opencode): preserve pending messages on session error by @CuSO41108 in #2094
- docs: clarify resource API field names by @qin-ctx in #2107
- 修复缺失role_id的bug,bot开启agent memory检索 by @fujiajie666 in #2108
- fix(vlm): honor LiteLLM native routes by @qin-ctx in #2111
- fix(memory): Handle missing tool call counts by @Gujiassh in #2098
- fix: skip test_wait_with_timeout due to CLI/Server timeout parameter … by @kaisongli in #2109
- feat: Watch Management API — REST + ov CLI + MCP (RFC #2104) by @t0saki in #2110
- feat(mcp): progressive single-entrypoint upload for local files by @t0saki in #1847
- fix: remove unnecessary async from root and health endpoints by @xiejianqiao in #2126
- docs(bot): document ov_server.api_key_type and exp_write_tools (#1994 + #2007) by @r266-tech in #2014
- Support Vaka memory templates via a switch by @fujiajie666 in #2130
- feat: add ov_dream OpenClaw skill for OpenViking sync by @heaoxiang-ai in #2136
- docs(mcp): document list_watches and cancel_watch in MCP integration table (#2110) by @r266-tech in #2134
- docs(api): document Watch Management endpoints from #2110 by @r266-tech in #2123
- fix(storage): preserve semantic lock ownership by @qin-ctx in #2140
- feat(web-studio): add frontend console workspace by @Ferry-200 in #2128
- perf(storage): optimize s3 backend grep performance by @baojun-zhang in #2078
- update vaka exp by @fujiajie666 in #2147
- delete files by @fujiajie666 in #2148
- fix(observability): store usage audit sqlite under system data by @qin-ctx in #2149
- feat(memory): upgrade trajectory extraction to beat no-memory baseline by @huangruiteng in #2017
- perf(retrieval): parallelize hierarchical child search by @qin-ctx in #2155
- feat(web-studio): bundle web-studio into docker, serve at /studio by @ZaynJarvis in #2156
- docs(server): document
public_base_urlandupload_signed_ttl_seconds(#1847) by @r266-tech in #2153 - docs: fix Chinese quickstart authentication links by @CuSO41108 in #2152
- Feat(OpenclawToolResultCompression): Add OpenViking Tool Result Externalization for OpenClaw by @HaotianChen616 in #2058
- Feat/memory link by @chenjw in #2010
- Security/centralize metric registry by @MDNDDD in #2161
- feat(console): drop legacy console, ship web-studio in pip, keep favicon routes by @ZaynJarvis in #2160
- wechat QR code update by @Lumos088 in #2162
- Fix/language output by @fujiajie666 in #2164
- fix: reload full records when updating uri mapping by @zhoujh01 in #2165
- fix(examples): wait before quickstart preview by @lazyayuan in #2167
- fix(storage): 按事件循环隔离异步客户端 by @qin-ctx in #2168
- feat(oauth): move authorize UI into web-studio (#2160 follow-up) by @t0saki in #2170
- Improve web-studio resource reader by @ZaynJarvis in #2163
- feat(mcp): add code navigation tools (code_outline / code_search / code_expand) by @wlff123 in #2146
- fix(vectordb): reject oversized bytes row strings by @qin-ctx in #2171
- bench(tau2): add generic scope fairness check by @huangruiteng in #2172
- docs: replace legacy console / port 8020 refs with Web Studio (/studio) by @ZaynJarvis in #2175
- docs(openclaw): align plugin docs with ClawHub standard install exper… by @LinQiang391 in #2150
- feat(web-studio): PWA, mobile UI polish, OAuth-setup tab, request-logs touch-ups by @ZaynJarvis in #2178
- docs(mcp): document code_outline / code_search / code_expand from #2146 by @r266-tech in #2176
- refactor(storage): 异步化存储锁与 IO by @qin-ctx in #2143
- change switch name of template by @fujiajie666 in #2185
- fix(helm): refresh OpenViking chart defaults by @ZaynJarvis in #2189
New Contributors
- @qizwiz made their first contribution in #2096
- @CuSO41108 made their first contribution in #2094
- @Ferry-200 made their first contribution in #2128
- @lazyayuan made their first contribution in #2167
Full Changelog: v0.3.17...v0.3.18