OpenClaw 24h 更新快报(2026-03-28):Ollama 流式输出、Discord 崩溃修复、多渠道安全加固

内容管家 AI领域评论5字数 1479阅读4分55秒阅读模式
OpenClaw 24h 更新快报(2026-03-28):Ollama 流式输出、Discord 崩溃修复、多渠道安全加固

OpenClaw 24h 更新快报(2026-03-27):Ollama 流式输出、Discord 崩溃修复、多渠道安全加固

过去 24 小时,OpenClaw 代码库经历了相当密集的变更。本批次以三方面工作为主:Ollama 模型流式输出的行为修复结束了下游无法接收增量文字的历史;Discord 在连接耗尽场景的稳定性问题得到根治;同时 Telegram、Zalo、Nextcloud Talk 等多个渠道集中进行 SSRF 防护和认证加固。以下是主要变化详解。

模型与 AI 能力

PR #53891 修复了 Ollama 流式输出的一个长期问题:此前 Ollama stream 函数虽然向 API 声明了 stream: true,却在内部将所有内容块累积到末尾才一次性发送 done 事件,导致 onPartialReply、块流管道、typing indicators 等下游消费者在整个生成期间完全收不到任何增量文字。修复后改为立即逐个发送 text_start → text_delta* → text_end 事件序列,使打字效果、流式草稿等实时交互重新可用。

渠道集成与通知

本批次有多项渠道安全加固,且都针对真实攻击面。

PR #55991 解决了 Discord 频道在 reconnect exhausted 场景下的崩溃问题:当 Discord WebSocket 以 1005 关闭码收到 reconnect-exhausted 事件时,若此时生命周期已开始关闭流程(lifecycleStopping 已置位),错误会被错误地上报到顶层进而 kill 整个 Gateway 进程。修复将 drain logic 与关闭事件的处理路径对齐,改为由频道健康监控负责后续重启,不再影响主进程。

PR #56004 强化了 Telegram 媒体下载的 SSRF 防护:此前 Telegram 媒体路径会绕过对已解析地址和重定向目标的私有网络检查,改为仅允许 Telegram API 主机域名白名单,并对重定向目标保持 SSRF 检查激活状态,同时禁用了 allowRfc2544BenchmarkRange

PR #55979 在 Zalo 频道中将图片下载移至 DM/群组授权检查之后:此前 Zalo 的图片消息下载在授权判断前就开始 fetch,改为提取授权逻辑为可复用 helper,先完成授权再执行远程下载。

PR #56007 为 Nextcloud Talk 的 Webhook 入口增加了请求级节流:在读取请求 body 之前以 {path, remote IP} 为 key 启动计数器,对超过阈值的来源直接返回 HTTP 429,并将同一来源的重复无效签名尝试纳入回归测试覆盖。

PR #56014 将 Discord 现有 guild/channel 策略检查扩展至组件交互(component interactions):对 groupPolicychannelConfig.enabledchannelConfig.allowed 的校验覆盖到直接组件入口和模态对话框入口,并增加对已删除 guild、已禁用/已拒绝频道的回归覆盖。

PR #56015 则对齐了 Discord 文字 /approve 处理与配置的 exec approval 审批人策略:账号未启用 exec approvals 或发送者不在配置的审批人列表中时,文字执行审批将被拒绝,同时保留现有插件审批路由行为不变。

Gateway 安全与权限边界

PR #55904session_status 引入了对非沙盒调用方的可见性检查:现在无论会话 ID 经过多少次重定向解析,都会对最终目标的可见性进行检查,覆盖 selftreeagent 等可见性模式,防止未授权调用者通过间接路由绕过访问控制。

PR #55951 限制了 node.pair.approve 的权限范围:配对审批的 scope 现在精确匹配请求的节点命令集,并将 reconnect 命令声明锚定到已审批的节点配对记录,防止审批范围被扩大使用。

PR #55952 在设备被移除或 Token 被吊销时,主动断开对应的活跃 Gateway 客户端连接,新增 disconnectClientsForDevice hook 并在运行时接入。

PR #56009 将内部 chat.send 的 reset 处理与现有的 admin-only 会话重置边界对齐:现在 reset trigger 需要持有 operator.admin 权限,而非网关内部调用方。

PR #56002 要求 phone-control 配置写入和 talk-voice 持久化操作均需 operator.admin 权限,移除了频道各自独立的 admin 门控,统一为扩展级别强制执行。

安全与稳定性

PR #55947 堵住了 exec approval 机制的一个路径绕过:当 shell wrapper 命令携带的 allow-always 目标经过归一化后指向 dispatch wrapper 或 shell wrapper 时,现在会在 allowlist 解析阶段直接拒绝,而不是让携带的目标得以绕过。

PR #55905 在 jq safe-bin 语义校验层新增了 $ENV 内置变量检查:任何引用 $ENV 的 jq 程序现在会被安全策略拦截,防止通过 ($ENV).OPENAI_API_KEY 等形式的环境变量探测。

macOS 主机的共享执行环境黑名单本次也得到扩展。PR #55977 新增 GIT_TEMPLATE_DIRAWS_CONFIG_FILE 两个阻断 key,并同步重新生成了 HostEnvSecurityPolicy.generated.swift 以保持跨运行时行为一致。

PR #55452插件inbound_claim 元数据中能拿到完整的 staged 附件数组(mediaPaths/mediaTypes),而不再只能访问第一个附件的 mediaPath,同时保持了对现有 singular 字段的兼容性。

独立 commit 49dbf64 扩展了 bundler provider 运行时表面的安全边界;d9d5688 使扩展的无测试覆盖率动态化,减少了 CI 中的假阳性。

网络与构建

PR #56008 在网络层阻断了此前未被覆盖的 IPv6 特殊用途地址段,填补了 IPv6 场景下的地址校验盲区。

PR #56003 将 Plivo V3 验证请求的 replay key 规范化,使其与签名的 base URL 对齐,防止 reorder 参数的 replay 攻击,同时添加了对相同 nonce 不同参数顺序场景的回归覆盖。

本次更新批次整体呈现高密度的安全修复与权限边界收严,同时结束了 Ollama 流式输出在 Generation 期间无法向 UI 实时推送的体验问题。

常用链接

 
内容管家

发表评论