OpenClaw v2026.5.22 发布摘要
OpenClaw v2026.5.22 发布摘要
关键变更
OpenClaw v2026.5.22 引入了一系列深层的技术优化和稳定性改进,旨在降低延迟、改进内存管理,并增强不同操作系统下的系统安全性。
网关性能与延迟
其中最显著的更新之一是 /models 列表查询延迟的大幅降低。通过在启动时预热提供商身份验证状态映射(provider auth-state map),模型列表的单次调用成本已从约 20 秒降至 5 毫秒——实现了 4,100 倍的加速。这确保了 Discord 和 Telegram 中的模型选择器能够保持响应,不再触发交互超时。
进一步的性能提升包括:
- 插件注册表复用:网关现在在分发期间复用兼容的启动插件注册表,避免了冗余加载并降低了首次分发延迟。
- 延迟加载:启动期间空闲的插件工作、核心网关方法处理程序以及嵌入式 ACPX 运行时现在采用延迟加载,允许网关健康状态和就绪信号在无需等待未使用的处理程序树的情况下发出。
- 资源缓存:系统现在缓存插件 SDK 公共表面别名映射(plugin SDK public-surface alias maps),并复用不可变的插件元数据快照,以避免在热路径上重复进行文件系统统计。
智能体与子智能体协作
父智能体与委派工作者之间的协作已得到优化,以实现更好的 Token 效率和可靠性:
- 引导程序优化:用户现在可以为子智能体配置特定的引导文件列表(例如,使用
SUBAGENTS.md而不是完整的SOUL.md和USER.md堆栈),从而降低委派任务的 Token 开销。 - 完成交付:Codex 原生的
spawn_agent完成结果现在会主动交付回父会话,确保后台工作者结果在 Discord 中可见,而无需用户手动干预。 - 子智能体移交:原生的子智能体完成移交已得到简化;子智能体现在直接向请求者报告其最新的可见助手结果。
内存与会话管理
为了支持高负载部署,会话存储已重新设计,以降低内存占用:
- 不可变读取 API:新的快照和条目级读取 API 取代了可变的完整存储克隆,防止了在多会话环境中因重复大型
skillsSnapshot.prompt字符串而导致的 OOM 错误。 - 锁定机制强化:会话写入锁现在在获取期间独立执行
maxHoldMs策略,防止网关在大型会话文件(>300KB)导致写入缓慢时发生冻结。 - 上下文预算管理:
/status命令现在在无法获取最新的提供商使用情况时,会展示估计的上下文预算快照,从而为提示词压力提供更好的可见性。
操作系统特定强化
- macOS (launchd):
reload移交脚本现在会轮询以检查卸载完成情况,以防止引导过程中出现Input/output error竞态条件。此外,通过在报告失败前探测服务状态,现在可以优雅地处理并发引导竞态条件。 - Windows:Codex 应用服务器现在会验证命令覆盖(command overrides)以防止格式错误的字符串(例如,将可执行文件与参数组合在一起)被视为单个模块路径。Windows 安装程序也已得到强化,以处理 Git 检出失败并能在原始主机上引导便携式 Node.js。
影响
已修复的问题
- 稳定性:修复了由于工作区引导条目中未定义的文件名导致的引导上下文构建中的严重崩溃问题 (#85523)。
- 可靠性:解决了
openclaw agent在 cron 任务下忽略SIGTERM导致进程链挂起和内存耗尽的问题 (#71710)。 - 连接性:修复了一个回环 CDP 问题,其中托管代理阻止了浏览器的 WebSocket 握手,导致代理后的用户无法使用
openclaw browser start(#83255)。 - 准确性:Anthropic 传输层中存在一个精度损失 bug,即大型整数 ID(例如 Discord snowflakes)在 JSON 解析期间被四舍五入 (#47229)。
- 用户体验:修复了一个
/verbose on在普通群组会话中被忽略的 bug,导致工具和进度摘要被隐藏 (#85488)。
集成改进
- xAI/Grok:增加了对 Grok
web_search的 xAI OAuth 配置文件的支持,并引入了新的 Grok 模型别名。 - Telegram:通过允许将本地附件路径作为实际媒体发送,改进了媒体交付。
- Discord:为组件注册表生命周期增加了可配置的
agentComponents.ttlMs,以支持更长时间运行的异步工作流。
升级指南
重大变更与迁移
- 工作区提供商插件:出于安全强化,除非被显式信任,否则在设置模式下不再自动发现工作区来源的提供商插件。用户必须将这些插件 ID 添加到
config.plugins.allow列表中以维持现有行为。 - Codex App-Server (Windows):手动
appServer.command覆盖设置现在会拒绝组合了可执行文件和参数的单个字符串。用户应移除这些覆盖设置,并改为依赖托管的启动路径或提供有效的可执行文件路径。
Sources
- Releasev2026.5.22 — openclaw 2026.5.22
- PRFix: preserve modelOverride in agent handler (#5369)
- PRfeat(anthropic): migrate 1M context from beta to GA
- PRdocs/types: clarify that omitting accountId in bindings matches default account only, not all accounts
- PRfix(gateway): normalize explicit state dir overrides at startup
- PRfix(memory): report missing qmd workspace cwd
- PRfeat: start onboarding for fresh CLI installs
- PRfix(agents): handle parallel tool call deltas in openai-completions stream
- PRfix(proxy): add missing clientSocket error handler in CONNECT tunnel
- PRfix(browser): bypass managed proxy for loopback CDP
- PRfix(update): repair managed npm plugin peers
- PRAllow Discord component registry TTL override
- PRperf(plugins): reuse compatible gateway startup registry on dispatch
- PRperf: isolate doctor core check tests
- PRfix(sessions): reduce session-store memory retention
- PRSpeed up /models browse replies
- PRfix: summarize internal webchat message tool results
- PRfix(diffs): continue after card hydration errors
- PRperf(models): /models 20s → 5ms via pre-warmed provider auth state
- PRfeat(agents): expose estimated context budget status
- PRfix(cli): validate tasks audit limit
- PRfix(agents): bound embedded compaction write locks
- PRfix(skills): show empty state notice in config wizard
- PRfix(memory-lancedb): expose public memory artifacts
- PRFix Telegram forum-topic subagent completion delivery
- PRfeat: add xAI OAuth web search and provider timeouts
- PRLet plugin binding commands escape bound routes
- PRfix(telegram): send attachment paths as media
- PRAdd chat picker search and pagination
- PR[Fix] Preserve deferred lifecycle errors
- PR[token efficiency] subagent bootstrap files
- PRrefactor(crabbox): parse provider list from binary help instead of hardcoding
- PRfix(twitch): preserve newer message handler during cleanup
- PRRestore Control UI gateway token pairing [AI]
- PRfix(status): bound deep docker audit probes
- PRfix(channels): honor /verbose in group sessions
- PRRecover stuck Codex compaction
- PRfix(microsoft-foundry): DeepSeek models incorrectly use openai-completions API
- PRfix(tools): honor config apiKey in media tool preflight
- PRfix(session): surface previous-transcript archive failures on /new rotation (#81984)
- PRfix(agents): add openai-responses family to non-visible turn retry guard
- PRfix(bootstrap): guard bootstrap name checks against undefined names (#85523)
- PRfix(status): show configured cost for aws-sdk models
- PRfix(cli-output): ignore cumulative usage from result events in stream-json parser (#85573)
- PRfix(agents/harness): pass CLI runtime aliases through to PI in selectAgentHarnessDecision
- PRfix(secrets): show irreversible warning after interactive apply confirmation
- PRfix(gateway): omit stream-error placeholders from agent prompts
- PRperf(utils): preserve message identity in stripInlineDirectiveTagsFromMessageForDisplay
- PRfix(cli): waitForever must keep the event loop alive
- PRfix(session-lock): enforce maxHoldMs in shouldReclaim during lock acquisition
- PRfix(agents): omit empty tools array for proxy-like openai-completions endpoints
- PRfix(status): add gateway delivery health telemetry
- PRfix: resolve per-model api override in auth hooks and transport selection
- PRfix(agents): surface blocked subagent completions
- PRfix(plugins): secure setup-mode provider discovery against untrusted workspace plugins [AI-assisted]
- PRPrepack npm git update specs before install
- PRfix(update): preserve package service state during cutover
- PRfix(anthropic): preserve unsafe integer tool inputs
- PRfix(models): resolve set aliases from runtime config [AI-assisted]
- PRfix(push): use valid default VAPID subject [AI-assisted]
- PRfix(channels): bypass debounce for bare abort triggers [AI-assisted]
- PRfix(code-mode): return structured worker error codes
- PRfix(codex): deliver native spawn_agent completions
- PRfix(code-mode): align outer exec hook params
- PR[AI-assisted] fix(reply): wait for block replies before tools
- PRfix(core): route dmScope main event wakes to agent main
- PRfix(update): harden managed handoff cwd
- PRFix media completion duplicate delivery
- PRLog Discord component registry error details
- PRfix(agent): abort accepted gateway runs on signal
- PRValidate Codex app-server command overrides
- PRfix(gateway): include openclaw bin in service PATH
- PRfix(gateway): harden launchd reload handoff race recovery
- PRfix(gateway): handle concurrent launchd bootstrap restart race
- PRfix #84745: scope Google preview model normalization to Google providers only
- PRfix(gateway): mirror source message sends into transcript
- PRfix(gateway): eager-load lifecycle runtime to survive in-place upgrades
- PRfix(integrations): enforce channel read target allowlists [AI]
- PRfix(agent): await local agent_end hooks
- PRfix(channels): pass allowBootstrap from channel-selection so in-agent message tool resolves channels in --local processes
- PRfix: constrain Windows task script names [AI]
- PRfix(gemini): strip sub-second precision from web_search time_range_filter
- PRfix(openai): preserve codex gpt-5.5 image input
- PRfix(codex): block progress-only completions [AI-assisted]
- PRfix(agent): support explicit CLI session keys
- PRfix(skills): dedupe shared-directory watchers across agent workspaces (#84968)
- PRfix: strip -plugin suffix in deriveIdHint to match manifest ids
- PRfix(gateway): close child ACP sessions on parent reset/delete (#68916)
- PRfix(agents): stop denied exec followups
- PRfix(messages): strip unsupported citation markers
- PRfix(telegram): preserve fenced code languages
- PR[codex] fix control ui chat session picker history
- PR[codex] Clarify inherited thinking off label
- PR[codex] add color mode tooltips
- PR[Fix] Surface gateway connect assembly failures
- PRfix(agents): preserve OpenAI reasoning token usage
- PRFix heartbeat message-tool delivery policy
- PRfix(codex): add API key paste auth
- PRfix(codex): honor node exec policy for native surfaces
- PRFix context pressure preflight for tool-heavy sessions
- PRFix Telegram missing harness spool poison
- PRFix/codex deactivated workspace failover
- PRfix(tui): raise streaming watchdog threshold to 120s and suppress false-positive warning
- PRfix(memory-core): allow bounded dreaming session cleanup
- PRfix(trajectory): tolerate partial skill snapshot entries in support capture
- PRfix(agents): disable pi-coding-agent auto-retry to prevent tool call replay loops
- PRfix(agents): classify auth HTML provider responses
- PRfix(exec): protect pathPrepend against posix login-shell RC overrides
- PRfix(gateway): allow bearer-auth session history reads
- PRKeep legacy Codex OAuth sidecar profiles usable
- PRfix(diffs): replace iconMarkup string with ToolbarIconName enum to el…
- PRfix(agents): tolerate in-process session writes during prompt release
- PRfix(slack): suppress reasoning payloads in non-streaming delivery paths
- PRfix(memory): stop recall tracking when dreaming is disabled
- PRperf(cli): lazy-load agents actions for help
- PRperf(cli): speed up onboarding help startup
- PRSkip empty sherpa structured transcripts
- PRfix(codex): stabilize heartbeat dynamic tool schema
- PRfix(pdf): time out idle remote PDF reads
- PRperf(cli): cache stable subcommand help
- PRfix(config): validate browser sandbox bind sources [AI]
- PRdoctor: constrain legacy plugin cleanup paths [AI]
- PRperf: speed up secrets and nodes help startup
- PRFix Telegram isolated polling stall watchdog
- PRfix(update): prune stale local bundled plugin shadows
- PRfix(codex): beta blocker - keep context engine on canonical session key
- PRFix Discord session recovery abort ownership
- PRHandle Codex turns missing completion
- PRFix Matrix configured two-person room routing
- PRFix inherited XDG env for exec subprocesses
- PRfix: redact denied exec failure params
- PRfix: require configured subagent allowlist targets
- PRfix(codex): surface native compaction failures
- PRfix(telegram): dedupe replayed message dispatches
- PRfix(codex): extend message tool timeout