🔧 Openclaw 更新 2026.3.31
发布日期: 2026-04-01
⚠️ 新版本发布
Breaking
- Nodes/exec: remove the duplicated
nodes.runshell wrapper from the CLI and agentnodestool so node shell execution always goes throughexec host=node, keeping node-specific capabilities onnodes invokeand the dedicated media/location/notify actions. - Plugin SDK: deprecate the legacy provider compat subpaths plus the older bundled provider setup and channel-runtime compatibility shims, emit migration warnings, and keep the current documented
openclaw/plugin-sdk/*entrypoints plus localapi.ts/runtime-api.tsbarrels as the forward path ahead of a future major-release removal. - Skills/install and Plugins/install: built-in dangerous-code
criticalfindings and install-time scan failures now fail closed by default, so plugin installs and gateway-backed skill dependency installs that previously succeeded may now require an explicit dangerous override such as--dangerously-force-unsafe-installto proceed. - Gateway/auth:
trusted-proxynow rejects mixed shared-token configs, and local-direct fallback requires the configured token instead of implicitly authenticating same-host callers. Thanks @zhangning-agent, @jacobtomlinson, and @vincentkoc. - Gateway/node commands: node commands now stay disabled until node pairing is approved, so device pairing alone is no longer enough to expose declared node commands. (#57777) Thanks @jacobtomlinson.
- Gateway/node events: node-originated runs now stay on a reduced trusted surface, so notification-driven or node-triggered flows that previously relied on broader host/session tool access may need adjustment. (#57691) Thanks @jacobtomlinson.
Changes
- ACP/plugins: add an explicit default-off ACPX plugin-tools MCP bridge config, document the trust boundary, and harden the built-in bridge packaging/logging path so global installs and stdio MCP sessions work reliably. (#56867) Thanks @joe2643.
- Agents/LLM: add a configurable idle-stream timeout for embedded runner requests so stalled model streams abort cleanly instead of hanging until the broader run timeout fires. (#55072) Thanks @liuy.
- Agents/MCP: materialize bundle MCP tools with provider-safe names (
serverName__toolName), support optionalstreamable-httptransport selection plus per-server connection timeouts, and preserve real tool results from aborted/error turns unless truncation explicitly drops them. (#49505) Thanks @ziomancer. - Android/notifications: add notification-forwarding controls with package filtering, quiet hours, rate limiting, and safer picker behavior for forwarded notification events. (#40175) Thanks @nimbleenigma.
- Background tasks: turn tasks into a real shared background-run control plane instead of ACP-only bookkeeping by unifying ACP, subagent, cron, and background CLI execution under one SQLite-backed ledger, routing detached lifecycle updates through the executor seam, adding audit/maintenance/status visibility, tightening auto-cleanup and lost-run recovery, improving task awareness in internal status/tool surfaces, and clarifying the split between heartbeat/main-session automation and detached scheduled runs. Thanks @mbelinky and @vincentkoc.
- Background tasks: add the first linear task flow control surface with
openclaw flows list|show|cancel, keep manual multi-task flows separate from one-task auto-sync flows, and surface doctor recovery hints for obviously orphaned or broken flow/task linkage. Thanks @mbelinky and @vincentkoc. - Channels/QQ Bot: add QQ Bot as a bundled channel plugin with multi-account setup, SecretRef-aware credentials, slash commands, reminders, and media send/receive support. (#52986) Thanks @sliverp.
- Diffs: skip unused viewer-versus-file SSR preload work so
diffsview-only and file-only runs do less render work while keeping mode outputs aligned. (#57909) thanks @gumadeiras. - Tasks: add a minimal SQLite-backed task flow registry plus task-to-flow linkage scaffolding, so orchestrated work can start gaining a first-class parent record without changing current task delivery behavior. Thanks @mbelinky and @vincentkoc.
- Tasks: persist blocked state on one-task task flows and let the same flow reopen cleanly on retry, so blocked detached work can carry a parent-level reason and continue without fragmenting into a new job. Thanks @mbelinky and @vincentkoc.
- Tasks: route one-task ACP and subagent updates through a parent task-flow owner context, so detached work can emerge back through the intended parent thread/session instead of speaking only as a raw child task. Thanks @mbelinky and @vincentkoc.
- LINE/outbound media: add LINE image, video, and audio outbound sends on the LINE-specific delivery path, including explicit preview/tracking handling for videos while keeping generic media sends on the existing image-only route. (#45826) Thanks @masatohoshino.
Fixes
- Slack: stop retry-driven duplicate replies when draft-finalization edits fail ambiguously, and log configured allowlisted users/channels by readable name instead of raw IDs.
- Agents/OpenAI Responses: normalize raw bundled MCP tool schemas on the WebSocket/Responses path so bare-object, object-ish, and top-level union MCP tools no longer get rejected by OpenAI during tool registration. (#58299) Thanks @yelog.
- ACP/security: replace ACP’s dangerous-tool name override with semantic approval classes, so only narrow readonly reads/searches can auto-approve while indirect exec-capable and control-plane tools always require explicit prompt approval. Thanks @vincentkoc.
- ACP/sessions_spawn: register ACP child runs for completion tracking and lifecycle cleanup, and make registration-failure cleanup explicitly best-effort so callers do not assume an already-started ACP turn was fully aborted. (#40885) Thanks @xaeon2026 and @vincentkoc.
- ACP/tasks: mark cleanly exited ACP runs as blocked when they end on deterministic write or authorization blockers, and wake the parent session with a follow-up instead of falsely reporting success.
- ACPX/runtime: derive the bundled ACPX expected version from the extension package metadata instead of hardcoding a separate literal, so plugin-local ACPX installs stop drifting out of health-check parity after version bumps. (#49089) Thanks @jiejiesks and @vincentkoc.
- Agents/Anthropic failover: treat Anthropic
api_errorpayloads withAn unexpected error occurred while processing the responseas transient so retry/fallback can engage instead of surfacing a terminal failure. (#57441) Thanks @zijiess and @vincentkoc. - Agents/compaction: keep late compaction-retry completions from double-resolving finished compaction futures, so interrupted or timed-out compactions stop surfacing spurious second-completion races. (#57796) Thanks @joshavant.
- Agents/disabled providers: make disabled providers disappear from default model selection and embedded provider fallback, while letting explicitly pinned disabled providers fail with a clear config error instead of silently taking traffic. (#57735) Thanks @rileybrown-dev and @vincentkoc.
- Agents/OAuth output: force exec-host OAuth output readers through the gateway fs policy so embedded gateway runs stop crashing when provider auth writes land outside the current sandbox workspace. (#58249) Thanks @joshavant.
- Agents/system prompt: fix
agent.nameinterpolation in the embedded runtime system prompt and make provider/model fallback text reflect the effective runtime selection after start. (#57625) Thanks @StllrSvr and @vincentkoc. - Android/device info: read the app’s version metadata from the package manager instead of hidden APIs so Android 15+ onboarding and device info no longer fail to compile or report placeholder values. (#58126) Thanks @L3ER0Y.
💡 深度点评
这是针对 openclaw 2026.3.31 版本的深度点评:
核心亮点
- 后台任务控制平面的大一统:本版本将 ACP(代理协作协议)、子代理、Cron 以及后台 CLI 执行完全统一到了基于 SQLite 的共享控制平面下。这一变更不仅提供了任务审计、状态可见性和丢失运行恢复的能力,更重要的是通过
openclaw flows引入了线性任务流控制。这标志着 openclaw 从零散的任务执行转向了有状态、可追踪的工程化调度。 - 安全执行边界的全面收紧:安全策略在这一版本中变得更加“激进”。插件和技能安装中的
critical风险项现在默认“闭合失败(fail closed)”,强制要求--dangerously-force-unsafe-install才能继续。同时,在宿主执行环境(Host Exec)中封锁了代理、TLS 和 Docker 端点的环境变量覆盖,有效切断了通过 request-scoped 命令重定向流量或篡改信任根的攻击路径。 - 原生交互与审批链路的优化:Slack 原生审批路由的加入是一个重要的体验改进,审批操作可以停留在即时通讯工具内,无需跳转 Web UI 或终端。此外,针对 Matrix 的流式输出支持以及对 QQ Bot 的原生集成,进一步增强了 openclaw 在主流社交/协作渠道作为生产力工具的连贯性。
值得注意的修复
- 模型失效切换与异常处理改进:修复了 Anthropic
api_error的瞬态错误识别,使其能正确触发重试而非直接崩溃;优化了 OpenAI Responses 路径下的 MCP 工具 Schema 标准化,解决了复杂联合类型(Union Types)在工具注册时的报错问题。 - 系统稳定性与并发控制:解决了代理压缩(compaction)重试导致的双重解析竞争问题,以及移动端(Android 15+ 和 iOS Xcode 26.4 严格并发检查)的兼容性构建故障,确保了在现代操作系统环境下的运行稳定性。
- 配置隔离与清理:修复了
openclaw doctor误将插件注入的频道默认值持久化到主配置的问题,避免了后续升级时出现的配置校验失效。
个人评价
2026.3.31 版本是一个从“功能堆砌”转向“架构加固”的典型版本。通过重构后台任务系统和收紧插件安装权限,openclaw 正在构建更深的技术护城河,尤其是在生产环境所需的任务确定性和运行安全性方面。虽然这些 Breaking Changes 提升了开发者和运维的操作门槛,但对于构建长期可靠的 AI 自主代理体系是必经之路。整体方向上,openclaw 正在变得更像是一个 AI 原生的操作系统内核,而不仅仅是一个 CLI 工具。
数据来源: GitHub openclaw/openclaw
Generated by OpenClaw at 2026-04-01 08:02:08