
OpenClaw 24h 更新快报(2026-06-05):流式容错、幂等投递、compaction 签名
过去 24 小时,openclaw/openclaw 仓库合并了 18 个 PR,并伴随一批围绕文档和测试基础设施的提交。本期重点关注三个方向:Provider 传输层稳定性(流式响应 content-type 容错)、渠道投递保障(Feishu 流式卡片内容保真、message-tool 幂等键稳定)、以及 Agent 会话内存安全(compaction 后 thinking 签名清理)。
模型与 AI 能力
流式响应缺失 content-type 容错处理
当 OpenAI/Codex transport 收到 HTTP 200 的流式响应但缺少 content-type 头时,之前会直接抛出 invalid_provider_content_type 错误导致请求失败,尤其影响 openai/gpt-5.5 通过 llm.complete 插件接口调用 ChatGPT Codex 时的后台维护场景。
本次修复(PR #90205,作者 jalehman)在 provider-transport-fetch 层引入 body 前缀嗅探:对于 content-type 缺失的响应,先读取少量 body 确认内容为 SSE 或 JSON,再标准化 header 后放行;明确为 HTML 时仍拒绝并给出清晰的 baseUrl 指导。这保留了原有的"错误 baseUrl 返回 HTML"防护,同时解决了 ChatGPT Codex 端点偶发的无 content-type 合流式响应问题。
安全与稳定性
Feishu 流式卡片内容保真
FeishuStreamingSession 在更新卡片内容时,曾将已合并的流式文本错误地截断为仅发送后缀部分,导致用户在卡片上只看到最后一块字符而非完整的累积文本。
PR #90181(作者 mushuiyu886)修复了 CardKit content element 的更新 payload,使其携带完整的累积文本而非 suffix-only 内容。根因在于 FeishuStreamingSession.update() 拿到了累积文本但传递给 CardKit 接口前做了不必要的截断;修复后保持现有的合并/节流/重试机制不变。
message-tool 幂等键稳定化
当 message(action=send) 请求在网关侧超时,调用方重试时会生成新的 tool-call id,导致自动生成的幂等键与首次发送不同,网关无法识别为同一次发送从而可能重复投递。
PR #90351(作者 jesse-merhi)将自动生成的幂等键改为哈希"规范化投递参数 + run id",而非直接包含 timeoutMs、gatewayUrl 等非投递控制参数。这样精确重试会复用同一幂等键,避免超时恢复场景下的重复发送。相关 issue 包括 #87068、#51628、#37446。
Agent / Cron / 会话调度
Compaction 后 thinking 签名清理
当会话触发 compaction 后,被保留下来的 pre-compaction 助手消息携带的 thinkingSignature 仍绑定到原始对话前缀。Compaction 后前缀发生了变化(被摘要替换),Anthropic 服务端验证会拒绝这些过时的签名,导致此后所有 API 调用永久失败。
PR #90163(作者 openperf)在两个位置修复:在 replay-history 的签名校验前新增 stripStaleThinkingSignaturesForCompactionReplay,在 compaction-successor-transcript 写入轮换后继文件时对 pre-compaction 条目单独清理签名。stripInvalidThinkingSignatures 接着将无签名的 thinking block 转换为 [assistant reasoning omitted],会话恢复正常可用。
ACP 父级评论默认行为
现在 parent channel 如果已处于 progress mode,则默认开启 ACP 父级评论;Discord 保持原有的预览模式默认;Telegram 和其他渠道仍需手动开启 progress mode 才显示评论。PR #90341(作者 obviyus)。
渠道集成与通知
MS Teams 状态迁移从 runtime 移至 doctor
MS Teams 的 conversation、poll、SSO-token JSON 文件不再在 runtime 启动时读取,而是通过 doctor 迁移命令将 durable 状态迁移至现有插件 SQLite 命名空间。pending-upload JSON 作为短期缓存保留,OAuth token 文件边界不变。文档同步更新以引导用户使用 doctor 而非 runtime 启动进行迁移。PR #90385(作者 steipete)。
Feishu runtime dedupe JSON 回退移除
移除了 Feishu runtime 中的 dedupe JSON 回退逻辑,简化状态管理。PR #90375(作者 steipete)。
控制台与开发者体验
全局 Agent 配置默认保护
Agent-facing gateway config 写入的保护范围扩大:agents.defaults.promptOverlays 和 agents.defaults.model.primary 不再允许通过 config.patch 或 config.apply 变更,防止模型通过对话持久化修改全局 prompt 或默认模型。Bounded tuning、per-agent model selection 等有效配置路径保持可用。PR #90145(作者 Pavan Kumar Gondhi)。
CI PR merge diff 检查范围限定
CI 层对 PR merge diff 的检查范围收窄为仅检查第一个父提交,避免对包含大量合并历史的工作流误判,同时降低 CI 运行开销。PR #90287(作者 Mason Huang)。
本期更新基调
本期核心主题是投递保障与传输鲁棒性:从渠道消息的幂等投递、Feishu 流式内容保真,到 provider transport 对异常响应的容错处理,再到 agent 会话内存 compaction 后的签名安全——多个并行的修复共同补强了系统在边界条件和异常路径下的可靠性。


评论