Skip to content

v0.5.4

Latest

Choose a tag to compare

@qin-ctx qin-ctx released this 09 Nov 10:08
9dfa901

中文

主要更新

  • MCP 与实时上下文:注册 Streamable HTTP MCP Server,检索、调用工具,并把工具挂载为可读取的 Markdown 节点。提供 REST、CLI 和 SDK 入口;同步上游工具后可查看受影响的挂载。#6263
  • Agent 规则查询:多种 Agent 集成增加 Rule Search 入口,在执行操作前按需查找适用规则。升级插件或重连 MCP 客户端后生效;这不会自动增加每轮拦截。#7005
  • Watch 多节点运行:增加 MySQL Watch 存储和列表分页;Connector 授权撤销后自动暂停,重新授权时只恢复此前自动暂停的任务。#6756、#6944
  • 会话恢复与记忆整理:失败或失去执行任务的归档支持带内容哈希的显式重试;可用 ov compile memory 整理当前用户的已有记忆。#5802、#6829
  • 配置与访问控制:Account 可独立配置抽取开关、生成语言及解析凭证;普通用户可管理自己的添加位置和记忆策略。新增由 ROOT 管理的 GLOBAL 身份及按数据所有者配置的读取策略。#6986、#7050、#6900、#6932

可选可观测性上报

新增可选 Kafka 事件与存量盘点上报,需要安装 openviking[reporting] 并显式开启,默认关闭。上报保留部署、数据空间、用户和模型费用归属,不包含原文、提示词或 API Key;采用内存队列,允许丢失,不适合作为持久化审计或计费账本。#7143

发布版本

主包 openviking==0.5.4、Python SDK openviking-sdk==0.1.19、独立 CLI 0.5.2。已有 Python SDK 和独立 CLI 用户需要升级相应组件,才能获得本版的组成员接口适配。

pip install --upgrade 'openviking==0.5.4' 'openviking-sdk==0.1.19'

使用示例

以下示例要求已配置对应版本的 ov 和用户凭证。天气 MCP 的地址、工具名及参数需替换为实际服务。

ov mcps add -p viking://agent/tools --wait '{"mcpServers":{"weather":{"url":"https://mcp.example.com/mcp"}}}'
ov mcps find "查询北京当前天气" --limit 5
ov mcps mount viking://agent/tools/weather/current.json viking://resources/live/weather-beijing.md --title "北京实时天气" --args '{"city":"Beijing"}' --wait
ov read viking://resources/live/weather-beijing.md

ov compile memory --instruction "整理已有记忆,保留不同对象的独立事实"

读取实时节点只会透明调用符合只读要求的工具。显式声明为非只读或破坏性的工具,需要通过 ov mcps invoke 调用。

升级与迁移

  1. 共享存储部署不能新旧混跑:锁租约协议发生变化。先停止所有锁参与者(包括队列 worker),再统一部署新版本。SQLite 自动增加 holders 列;不要丢弃已有队列 handoff。
  2. 组成员移除 HTTP 接口变更:从 DELETE .../members/{user_id} 改为 DELETE .../members,请求体为 {"user_ids":["alice","bob"]}。本版 CLI、Python/Go SDK 已适配批量端点,原有单用户方法仍可调用;直接使用旧 HTTP 路径的调用方需要迁移。
  3. 单文件恢复参数变更:POST /api/v1/snapshot/restore 的单文件模式改用 restore_commit_id、current_commit_id,两者均为完整 40 位 commit ID;不能继续传原有版本 UUID。目录恢复仍使用原有入口。
  4. Python/Go SDK 移除旧配置方法:Agent Evolution 和旧 Account settings 方法已删除,调用方应迁移至 Account configuration HTTP 接口。服务端旧 HTTP 适配器本版本仍保留并标记弃用。
  5. CacheFS 配置收敛:删除 max_file_size_bytes、traversal_mode、bypass_prefixes。缓存改为文件系统查询结果缓存。Redis 默认连接超时改为 10 秒、命令超时为 0(不设超时)、缓存 TTL 为 300 秒;依赖原默认值的部署应显式配置。
  6. Noul rerank 默认变化:默认隔离候选;需要旧的共享候选行为时显式设置 candidates_visible=true。Choice 模式不受此开关影响。

MySQL Watch 是可选能力:启用前安装 MySQL 依赖、执行建表脚本,并为所有节点配置相同的凭证加密密钥。默认 file Watch 仍只适用于单进程。

修复

  • 恢复跨目录并发:创建新的 Watch、目录和目录迁移时只锁定实际目标范围,不再因兄弟目录正在处理而扩大到公共父目录;删除多级不存在路径时不额外创建空目录。#7265

  • 文件写入与目录刷新分离:写入仍等待文件自身摘要和向量完成,直接父目录的 L0/L1 与目录向量独立刷新;慢目录处理不再延长正文锁等待。#7268

  • 保持组成员客户端方法可用:CLI、Python 和 Go SDK 的单成员添加/移除方法使用批量端点和单元素请求体。#7258

  • 修复训练、记忆替换后的 case/experience 链接维护,以及 LangChain Store 生命周期、持久化和 Unicode 归档查询。#6898、#7038、#7039、#7040

  • 保留旧添加位置配置兼容:viking://user/resources、viking://user/skills 在加载时转换为当前用户家目录 URI,避免沿用旧 ov.conf 升级后无法启动。#7140

  • Go SDK 的 AddSkill、UpdateSkill 可接收较长的内联 Markdown,不再因本地文件名长度限制而提前失败。#7103

  • 飞书表格单元格、嵌入白板,以及带空 ATX 标题或 CRLF frontmatter 的 Markdown 内容解析。#7083、#7075、#7117、#6819

  • 关闭去重的 recall 不再创建会话;eager prefetch 尊重大于 5 的 prefetch_search_topn,并正确序列化时间元数据。#7064、#6925、#6977

  • 改善记忆抽取修复截断时的有效操作保留、记忆拆分后的链接维护,以及会话压缩的历史大小控制。#7052、#5922、#6771

  • 改善上游流式错误传递、断连后的工具流清理、任务取消及跨节点锁续租行为。#6995、#6892、#7082、#6718

首次贡献者

感谢本版本的 11 位首次贡献者:名单见下方中英文共用的贡献者列表。

English

Highlights

  • MCP and live context: Register Streamable HTTP MCP servers, discover and invoke tools, and mount tools as readable Markdown nodes through REST, CLI and SDK interfaces. Sync reports affected mounts. #6263
  • Rule discovery across agent integrations: Query applicable rules before taking an action. Update the plugin or reconnect the MCP client to discover the new tool; this does not add an automatic per-turn enforcement hook. #7005
  • Distributed Watches: Optional MySQL storage, paginated listing, and connector credential lifecycle handling. Reauthorization resumes only Watches paused automatically by credential revocation. #6756, #6944
  • Archive recovery and memory consolidation: Explicit, hash-bound retry for failed or ownerless archives; use ov compile memory to consolidate existing memories for the current user. #5802, #6829
  • Scoped configuration and access control: Account-level extraction, language and parser credentials, user-managed settings, and ROOT-managed GLOBAL identities with data-owner access policies. #6986, #7050, #6900, #6932

The CLI examples above show registration, discovery, mounting and reading of a live node, followed by memory consolidation. Replace the example MCP server and tool schema with your actual service. Only tools meeting the read-only requirements execute transparently during reads; invoke non-read-only or destructive tools explicitly.

Published versions

Main package openviking==0.5.4, Python SDK openviking-sdk==0.1.19, and standalone CLI 0.5.2. Upgrade the corresponding client package or binary to receive the group-membership adaptation.

Optional observability reporting

Optional Kafka events and inventory export require openviking[reporting] and explicit enablement. Reporting preserves deployment, workspace, user and model-cost ownership without source text, prompts or API keys. Its in-memory queue allows loss and is not a durable audit or billing ledger. #7143

Upgrade and migration

  1. Do not mix old and new lock participants on shared storage. Stop all participants, including queue workers, before deploying the new lease protocol. SQLite adds the holders column automatically; retain persisted queue handoffs.
  2. Group member removal uses a batch body. Replace DELETE .../members/{user_id} with DELETE .../members and {"user_ids":["alice","bob"]}. The CLI and Python/Go SDK now adapt existing single-user methods to the collection route; direct callers of the old HTTP path must migrate.
  3. Single-file restore uses commit IDs. Supply restore_commit_id and current_commit_id, both full 40-character commit IDs, instead of version UUIDs. The directory restore interface is unchanged.
  4. Legacy configuration methods are removed from the Python and Go SDKs. Migrate Agent Evolution and old Account settings calls to the Account configuration HTTP API. Deprecated server-side HTTP adapters remain in this release.
  5. CacheFS now caches query results. Remove max_file_size_bytes, traversal_mode and bypass_prefixes. Redis defaults become a 10-second connection timeout, no command timeout, and a 300-second cache TTL; configure explicit values when needed.
  6. Noul reranking isolates candidates by default. Set candidates_visible=true to retain shared candidate visibility. Choice mode is unaffected by this option.

MySQL Watch storage requires the MySQL dependency, schema initialization and the same credential encryption key on every participating node. File-backed Watches remain single-process.

Fixes

  • Restore sibling-path concurrency for Watch creation, directory creation and transfers by locking the actual target scope. Idempotent removal of deeply missing paths does not create empty parents. #7265

  • Separate file processing from direct-parent L0/L1 and directory-vector refresh. File writes still wait for their own summaries and vectors; slow directory refresh no longer extends the content-lock wait. #7268

  • Keep existing single-member CLI, Python and Go methods working through collection membership routes and singleton request bodies. #7258

  • Preserve case/experience links during training and memory replacement; correct LangChain Store ownership, persistence and Unicode archive queries. #6898, #7038, #7039, #7040

  • Preserve legacy add-target configuration by translating viking://user/resources and viking://user/skills to current-user home URIs during configuration loading, preventing startup failures with existing ov.conf files. #7140

  • Accept long inline Markdown in Go SDK AddSkill and UpdateSkill without failing on local filename-length limits. #7103
    This release improves Feishu table and whiteboard parsing, Markdown parsing, sessionless recall, eager-prefetch limits and datetime serialization, memory-operation recovery and link maintenance, session compression, upstream stream errors, cancellation and distributed lock renewal. See the linked PRs in the Chinese section for the exact changes.

First-time contributors

Thank you to the 11 first-time contributors below. GitHub generated this list for the locked release range; each PR is present in that range.

贡献者 / Contributors

完整变更 / Full changelog