openclaw 小龙虾 2026.4.20 更新说明
🎨 新增功能 (Changes)
🧙 向导与设置优化
- 安全声明重构:使用单个黄色警告横幅、章节标题和要点清单重新设计设置安全声明,取消正文淡化使关键指导易于浏览
- 加载指示器:在初始模型目录加载时添加加载旋转器,向导不再空白运行
- API 密钥提示:为提供商 API 密钥提示添加"API key"占位符
- 贡献者: @Patrick-Erichsen (#69553)
🤖 Agent 增强
- 系统提示强化:增强默认系统提示和 OpenAI GPT-5 覆盖,包含更清晰的完成偏差、实时状态检查、弱结果恢复和最终前验证指导
- 上下文压缩通知:在上下文压缩期间发送可选的开始和完成通知
- 贡献者: @feniix (#67830)
💰 模型与成本
- 分层定价支持:支持来自缓存目录和配置模型的分层模型定价
- Moonshot Kimi 成本估算:在 token 使用报告中包含捆绑的 Moonshot Kimi K2.6/K2.5 成本估算
- 贡献者: @sliverp (#67605)
📅 会话与维护
- 强制条目上限:默认强制执行内置条目上限和年龄修剪
- 加载时修剪:在加载时修剪过大的存储,防止累积的 cron/executor 会话积压在写入路径运行前导致网关 OOM
- 贡献者: @bobrenze-bot (#69404)
🔌 插件系统
- 测试优化:在重复的相同上下文加载中重用插件加载器别名和 Jiti 配置解析,减少导入密集型测试开销
- 贡献者: @amknight (#69316)
- 任务生命周期:添加分离的运行时注册契约,使插件执行器能够拥有分离的任务生命周期和取消,而无需触及核心任务内部
- 贡献者: @mbelinky (#68915)
- 启动依赖安装:将捆绑的运行时依赖安装到每个插件自己的运行时目录,重建后重用源码检出修复缓存,仅记录实际安装的包
- 启动路径修复:忽略 pnpm 的 npm_execpath,跳过仅限工作区的包规范
⏰ Cron 任务
- 状态分离:将运行时执行状态分离到 jobs-state.json,使 jobs.json 保持稳定以进行 git 跟踪的作业定义
- 贡献者: @Feelw00 (#63105)
🌙 Moonshot/Kimi 集成
- 默认配置:默认捆绑的 Moonshot 设置、网络搜索和媒体理解界面指向 kimi-k2.6,同时保留 kimi-k2.5 以保持兼容性
- 思考模式:允许在 moonshot/kimi-k2.6 上使用 thinking.keep = "all",并为其他 Moonshot 模型或请求剥离它
- 贡献者: @scoootscooob (#69477), @aniaan (#68816)
💬 BlueBubbles (iMessage)
- 群组系统提示:将每个群组的 systemPrompt 配置转发到入站上下文 GroupSystemPrompt,使配置的群组特定行为指令(如线程回复和 tapback 约定)在每一轮注入
- 通配符支持:支持 "*" 通配符回退匹配现有的 requireMention 模式
- 贡献者: @omarshahine (#69198, #60665)
📊 终端与日志
- 日志优化:通过单次正则表达式传递替换迭代控制字符剥离循环来优化 sanitizeForLog(),同时保留现有的 ANSI 优先消毒行为
- 贡献者: @bulutmuf (#67205)
✅ QA/CI
- 失败默认:使 openclaw qa suite 和 openclaw qa telegram 在场景失败时默认失败
- 允许失败标志:添加 --allow-failures 用于仅工件运行
- CI 自动化:收紧实时通道默认值
- 贡献者: @joshavant (#69122)
💬 Mattermost
- 流式预览:将思考、工具活动和部分回复文本流式传输到单个草稿预览帖子中,安全时原地完成
- 贡献者: @ninjaa (#47838)
🐛 修复 (Fixes)
⚡ 执行与 YOLO 模式
- Exec/YOLO 修复:停止通过 Python/Node 脚本预检强化路径拒绝 security=full 加 ask=off 模式下的网关主机执行,使无提示 YOLO 执行再次运行直接解释器 stdin 和 heredoc 形式
🔗 OpenAI Codex
- 传输标准化:在默认 OpenAI/Codex 和 GitHub Copilot 兼容主机上将传统 openai-completions 传输覆盖标准化回原生 Codex Responses 传输
- OAuth 路由:通过 /backend-api/codex 端点路由 ChatGPT/Codex OAuth Responses 请求
- 贡献者: @dyss1992, @DeadlySilent (#45304, #42194), @mzogithub (#69336)
🔐 安全修复
- Anthropic 插件范围:将 Anthropic api 范围限定为"anthropic-messages",默认指向 Anthropic 自有提供商
- QQBot SSRF 防护:在 uploadC2CMedia 和 uploadGroupMedia 中为直接上传 URL 路径添加 SSRF 防护 [AI 辅助]
- 会话键强制:在模板渲染的映射 sessionKeys 上强制执行 allowRequestSessionKey 门
- MINIMAX_API_HOST 阻止:阻止工作区.env 文件中的 MINIMAX_API_HOST 环境注入,移除环境驱动的 URL 路由 [AI 辅助]
- dotenv 安全:阻止所有 OPENCLAW_* 键从不受信任的工作区.env 文件加载
- 设备配对限制:限制非管理员配对设备会话(设备令牌认证)只能访问自己的配对列表、批准和拒绝操作
- 网关工具防护:扩展面向代理的网关工具的配置突变防护,防止模型驱动的配置重写操作员可信路径
- WebSocket 广播:要求 operator.read(或更高)用于聊天、代理和工具结果事件帧
- 贡献者: @pgondhi987 (#69595, #69381, #67300), @eleqtrizit (#69375, #69377, #69373)
🌐 浏览器与 Chrome MCP
- 错误表面化:将 DevToolsActivePort 附加失败表面化为浏览器连接错误,而非通用的"等待标签页"超时
- 登出回退:将登出回退指向管理的 openclaw 配置文件
🖼️ Webchat 图片
- 内联图片处理:将内联图片附件视为媒体用于空轮门控,同时仍然忽略仅元数据的空白轮
- 贡献者: @Jaswir (#69474)
🎮 Discord
- 思考命令:仅在 /think 自动完成中为实际支持提供商管理自适应思考的提供商/模型对显示自适应
- 斜杠命令:容忍部分 Discord 频道元数据在斜杠命令和模型选择器流中
- 贡献者: @dutifulbob (#68953)
💭 思考模式
- 最大思考暴露:仅为明确支持提供商最大推理的模型暴露 max
- 重新映射设置:当用户切换到另一个模型时,将存储的 max 设置重新映射到支持的最大思考模式
📊 网关使用量
- 缓存边界:使用 FIFO 驱逐绑定成本使用缓存,使日期/范围查找无法无限增长
- 贡献者: @Feelw00 (#68842)
🤖 OpenAI Responses
- 思考级别解析:针对每个 GPT 模型支持的推理努力解析 /think 级别
- 禁用推理负载:当 /think off 激活时省略禁用的推理负载
- 剥离孤立推理块:在出站 Responses API 调用前剥离孤立的推理块
- 贡献者: @a-tokyo (#61982), @suboss87 (#55787)
🦞 Lobster/TaskFlow
- 批准恢复:允许管理的批准恢复使用 approvalId 而无需恢复令牌,并在批准等待状态中持久化该 id
- 贡献者: @kirkluokun (#69559)
🔧 MCP
- 环境变量阻止:阻止解释器启动环境键(如 NODE_OPTIONS)用于 stdio 服务器,同时保留普通凭证和代理环境变量
- 贡献者: @drobison00 (#69540)
🐚 Agent Shell
- 非交互式 Shell 忽略:忽略非交互式占位符 shell(如/usr/bin/false 和/sbin/nologin),回退到 sh
- 贡献者: @sk7n4k3d (#69308)
🛠️ 设置/TUI
- 重新启动进程:在全新进程中重新启动设置 hatch TUI,同时保留配置的网关目标和认证源
- 贡献者: @shakkernerd (#69524)
🖼️ Codex 图片生成
- 避免重复暴露:避免在具有入站图片的原生视觉轮上重新暴露图片生成工具
- 贡献者: @zhulijin1991 (#65061)
🔄 会话重置与成本
- 清除自动覆盖:在 /new 和 /reset 上清除自动来源的模型、提供商和认证配置文件覆盖
- 成本快照:像 token 计数器一样快照 estimatedCostUsd,防止重复持久化路径将相同运行成本复合数十倍
- 贡献者: @sk7n4k3d (#69419), @MrMiaigi (#69403)
🔗 网关配对
- 本地客户端处理:将环回共享密钥节点主机、TUI 和网关客户端视为本地用于配对决策
- 原因特定错误:返回原因特定的 PAIRING_REQUIRED 详细信息、修复提示和请求 id
- 贡献者: @SARAMALI15792 (#69431), @obviyus (#69227)
🧠 主动记忆
- 优雅降级:当记忆召回在提示构建期间失败时优雅降级,记录警告并让回复在没有记忆上下文的情况下继续
- 贡献者: @Magicray1217 (#69485)
🦙 Ollama
- 提供商策略默认值:为 baseUrl 和模型添加提供商策略默认值,使隐式本地发现能够在配置验证拒绝最小 Ollama 提供商配置之前运行
- 贡献者: @PratikRai0101 (#69370)
🤖 Agent 模型选择
- 清除自动故障转移覆盖:在每轮之前清除瞬态自动故障转移会话覆盖
- 贡献者: @hitesh-github99 (#69365)
📬 自动回复
- NO_REPLY 策略:根据对话类型应用静默 NO_REPLY 策略
- 贡献者: @Takhoffman (#68644)
📱 Telegram
- 状态反应:当生命周期状态反应启用时尊重 messages.removeAckAfterReply
- 轮询阈值:将默认轮询看门狗阈值从 90s 提高到 120s,添加可配置的 channels.telegram.pollingStallThresholdMs
- 轮询超时:用客户端超时限制持久化偏移确认 getUpdates 探测
- 设置要求:在设置期间需要数字 allowFrom 用户 ID
- 贡献者: @poiskgit (#68067), @Vitalcheffe (#57737), @boticlaw (#50368), @obviyus (#69191)
🔍 网络搜索插件
- SecretRef 解析:为捆绑的 Exa、Firecrawl、Gemini、Kimi、Perplexity、Tavily 和 Grok 网络搜索提供商解析插件范围的 SecretRef API 密钥
- 贡献者: @afurm (#68424)
🏃 Agent Pi Runner
- 错误轮重试:重试静默 stopReason=error 轮(无输出且无副作用运行)
- 贡献者: @Chased1k (#68310)
🧠 插件记忆
- 保留主动记忆能力:在只读快照插件加载运行时保留主动记忆能力
- 贡献者: @zeroaltitude (#69219)
🔌 插件优先级
- 最高优先级清单:当不同的已发现插件共享 id 时,仅保留最高优先级的清单
- 贡献者: @Tortes (#41626)
⏰ Cron 交付
- 无交付模式处理:将显式 delivery.mode: "none" 运行视为未请求
- 孤立交付工具:保持孤立 cron 聊天交付工具可用
- Telegram 去重:将孤立直接交付去重键控到每个 cron 执行
- 交付预览:在 cron list/show 中显示交付预览
- 贡献者: @matsuri1987 (#69285), @obviyus (#69587, #69000)
📱 BlueBubbles 消息
- 超时提高:将出站 /api/v1/message/text 发送超时默认从 10s 提高到 30s
- 方法显式设置:始终在出站文本发送上显式设置方法
- iMessage 优先:当同一_handle 存在 iMessage 和 SMS 时优先 iMessage
- 反应回退:当代理用 iMessage tapback 集之外的 emoji 反应时回退到 love
- SSRF 策略:通过类型化的 BlueBubblesClient 整合出站 HTTP
- 贡献者: @omarshahine (#69193, #68234), @xqing3 (#69070), @zqchris (#64693), @rmartin (#61781)
🧠 Agent Bootstrap
- 预算截断标记:针对每文件上限预算截断标记,保留源内容
- 贡献者: @BKF-Gitty (#69114)
🔧 上下文引擎插件
- 停止拒绝第三方:停止拒绝 info.id 与注册的插件槽 id 不同的第三方上下文引擎
- 贡献者: @GodsBoy (#66601, #66678)
📝 Agent 压缩事件
- 事件重命名:将嵌入式 Pi 压缩生命周期事件重命名为 compaction_start / compaction_end
- 贡献者: @mpz4life (#67713)
🌐 网关启动
- 延迟 HTTP 绑定:延迟 HTTP 绑定直到 WebSocket 处理程序附加
- 贡献者: @dalefrieswthat (#43392)
🤖 Codex 应用服务器
- 释放会话通道:当下游消费者在排出轮/完成通知时抛出异常时释放会话通道
- 批准处理默认值:将批准处理默认设置为 on-request
- 贡献者: @ayeshakhalid192007-dev (#67996, #69072), @Lucenx9 (#68721)
📊 模型/Kimi
- 思考默认关闭:默认捆绑 Kimi 思考为关闭,标准化 Anthropic 兼容思考负载
- 贡献者: @frankekn (#68907)
🎛️ 控制 UI/Cron
- 最后交付哨兵:保持仅运行时的最后交付哨兵不实例化到持久化的 cron 交付和失败警报通道配置中
- 贡献者: @tianhaocui (#68829)
📝 Cron/CLI
- PowerShell 风格解析:以与逗号分隔输入相同的方式解析 PowerShell 风格的 --tools 允许列表
- 贡献者: @chen-zhang-cs-code (#68858)
🌐 浏览器用户配置文件
- 自动路由:让现有会话 profile="user"工具调用自动路由到连接的浏览器节点或使用显式 target="node"
- 贡献者: #48677
📧 Matrix
- 允许列表热重载:在入站消息上热重载 dm.allowFrom 和 groupAllowFrom 条目
- 斜杠命令识别:识别以机器人 Matrix 提及为前缀的斜杠命令
- 贡献者: @johnlanni (#68546, #68570), @nightq
🏥 Doctor/Gateway
- 表面化配对请求:表面化待处理的设备配对请求、范围升级批准漂移和过时设备令牌不匹配修复步骤
- 贡献者: @obviyus (#69210)
📊 网关状态
- 分离报告:分离可达性、能力和读探针报告
- SSH 目标标准化:标准化作为 ssh user@host 输入的 SSH 目标
- 贡献者: @obviyus (#69215)
💬 Slack
- SecretRef 修复:修复通过文件或执行秘密源配置的账户的出站回复失败
- 贡献者: @openperf (#68954)
🔗 控制 UI 设备配对
- 解释升级:在重新连接期间解释范围和角色批准升级
- 表面化批准:在认证错误和控制 UI 提示中表面化待处理的范围、角色和设备元数据配对批准
- 贡献者: @obviyus (#69221, #69226)
🤖 Agent 子代理
- 失败负载信息:在子代理失败负载中包含请求的角色和运行时计时
- 贡献者: @BKF-Gitty (#68726)
🗑️ 网关会话
- 拒绝过时会话:在代理从配置中移除后拒绝过时的代理范围会话
- 贡献者: @bittoby (#65986)
🧠 记忆核心/Dreaming
- 标准化扫描时间戳:标准化扫描时间戳并重用哈希叙事会话键进行回退清理
- 贡献者: @chiyouYCH (#67023)
📱 GitHub Copilot 入职
- 默认模型:将 GitHub Copilot 设置默认设置为 claude-opus-4.6
- 贡献者: @obviyus (#69207)
🎭 芙宁娜的总结
本次更新包含了大量的功能增强和 bug 修复,主要亮点包括:
- 🔐 安全性大幅提升 - 多个 SSRF 防护、环境变量阻止、设备配对限制
- ⏰ Cron 任务优化 - 状态分离、交付改进、去重机制
- 🤖 Agent 能力增强 - 系统提示强化、模型选择优化、子代理改进
- 💬 多平台支持 - BlueBubbles、Telegram、Matrix、Discord、Slack 全面修复
- 🧠 记忆系统 - 主动记忆优雅降级、Dreaming 泄漏修复
- 🌙 Moonshot Kimi 集成 - 默认配置优化、思考模式支持
总计: 约 80+ 项改进和修复!✨
「每一份更新日志,都是精心编排的技术华章!」 🎭
https://www.fireself.cn/post/MBx7qFri