OpenClaw 小龙虾 2026.5.7 更新说明
一句话总结
本次 2026.5.7 是一版以修复、权限收紧、通道投递可靠性、Cron/会话状态一致性、Codex/OpenAI 鉴权修复、插件发布稳定性为主的维护版本。对长期运行的 Gateway、Cron、Telegram/Discord/WhatsApp 通道、Codex OAuth 环境都有实用改进。
统计概览
| 类别 | 数量/说明 |
|---|---|
| 主要修复条目 | 32 项 |
| 涉及 PR/Issue | 至少 26 个编号项 |
| 重点模块 | 插件发布、OpenAI/Codex、Cron、会话、Active Memory、Telegram、Discord、WhatsApp、模型供应商 |
| 风险性质 | 中低风险维护更新,偏稳定性与权限修复 |
重点变化速览
1. 插件发布与安装更稳
- Release/plugin publishing:
- ClawHub CLI 依赖安装遇到瞬时失败时会自动重试。
- 当某个 preview cell 偶发失败时,仍允许已经通过 preview 的插件继续发布。
- 发布后会校验每个预期 ClawHub 包版本,降低“部分插件发布成功但未被发现”的风险。
- Plugins/install:
- 托管插件的 install / rollback / repair / uninstall npm 生命周期操作,统一使用绝对 POSIX npm lifecycle shell。
- 避免受限 PATH shell 导致插件清理或回滚失败。
2. OpenAI / Codex 相关修复
- OpenAI:新增
openai/chat-latest作为显式 direct API-key 模型覆盖项,可用于尝试移动的 ChatGPT Instant API alias,而不影响稳定默认模型。 - Doctor/Codex OAuth:
doctor --fix会保留可工作的openai-codex/*PI 路由。- 当只有 Codex OAuth 授权可用时,会恢复被 2026.5.5 改写的
openai/*GPT-5 路由。 - 解决更新修复流程破坏订阅鉴权环境的问题。
- Codex/approvals:
- Codex 审批模式默认不再安装 pre-guardian native
PermissionRequesthook,让 Codex reviewer 先审批安全命令。 - 同一活跃会话窗口内,相同 Codex native
PermissionRequest可记住 allow-always 决策。 - 插件审批请求会校验并渲染真实可用的决策,避免 Telegram 等原生审批 UI 展示过期操作。
- Codex 审批模式默认不再安装 pre-guardian native
3. Cron、任务与投递状态更可靠
- Cron CLI:
cron list --json与cron show --json增加 computed status,外部工具可直接读取disabled/running/ok/error/skipped/idle状态,无需重新推导。 - Cron/doctor:
openclaw doctor --fix会修复持久化 Cron job 中错误保存的payload.model值(如default、null、空字符串、JSON null),通过移除错误覆盖项修复,同时保持 Cron runtime model 校验严格。 - Cron/isolated runs:当
delivery.channel=last但没有上一条路由时,会在模型执行前失败,避免定时任务先消耗 tokens 后才撞上永久投递目标错误。 - Gateway/tasks:会调和 live run context 已消失的陈旧 CLI run-context task,并限制通道热重载 deferral,避免旧任务永久阻塞 Discord/Slack/Telegram 重载。
4. 会话、上下文与子代理修复
- Gateway/sessions:
/new和sessions.reset时会清理已缓存的 skills 快照,让长期通道会话在技能变更后能重建可见技能列表。 - Agents/context engine:当源历史收缩或上下文组装失败时,会使缓存的 assembled context view 失效,避免复位前的旧历史被重复使用。
- Agents/compaction:将 compaction summary reserve tokens 限制在各模型输出上限内,避免高上下文压缩时请求非法
max_tokens。 - Gateway/sessions:每日 gateway-agent session rollover 改变 session id 时,会持久化新的 transcript 文件,同时保留自定义 transcript 路径。
- Agents/subagents:完成状态的 session-mode subagent registry 行会遵守
agents.defaults.subagents.archiveAfterMinutes,不再硬编码 5 分钟 TTL。
5. 权限与安全边界收紧
- Native commands:原生命令处理器会遵守 owner enforcement。
- Active Memory:全局 memory toggles 需要 admin scope。
- Auto-reply:inline skill tool dispatch 会通过
before-tool-callauthorization hooks。 - Telegram:DM、群组、原生命令、callback 授权会先尊重
accessGroup:*sender allowlists,再应用 Telegram 数字 sender-ID 检查。
6. 通道修复:Discord / Telegram / WhatsApp
Discord
message(action="send")解析discord:channel:<id>这类 provider-prefixed target 时,会作为频道发送处理,而不是误走旧版 Discord DM 目标逻辑。- Discord voice channel capabilities 与
channels status --probe会审计语音频道权限,包括 auto-join 目标,提前暴露缺少 Connect / Speak / Read Message History 的问题。 - Discord 语音捕获默认 post-speech silence grace 延长到 2.5 秒,并新增
voice.captureSilenceGraceMs,改善嘈杂语音会话中的断续问题;同时收紧 live STT fragment 的 spoken-output prompt。
Telegram
- polling watchdog 绑定到
getUpdates活性,不再让无关 outbound Bot API 调用掩盖卡死的 inbound poller。 - inbound Telegram turn 中,如果同聊天的 message tool outbound send 成功,会在判断是否发送 silent reply fallback 时视为已投递。
/modelscallback buttons 支持解析包含点号的 provider id,让hf.co模型列表可正确渲染 inline keyboard。
- 主动向电话号码发送消息时,会使用 Baileys LID forward mappings,让 LID 地址联系人收到 agent 消息,避免创建“只有发送者”的幽灵聊天。
- captioned
MEDIA:directive 自动回复只发送一次,不再先发空媒体消息、再发带 caption 的媒体回复。
7. 模型供应商与工具细节
- Tavily:专用
tavily_search与tavily_extract工具会从 active runtime config snapshot 解析凭证,避免 execSecretRefAPI key 传到工具时仍是未解析状态。 - Model providers:
- 规范化 APNG sniffed PNG uploads。
- 保留 Gemini 3 tool-call thought-signature replay,并支持 fallback signatures。
- 接受旧版
__env__:VARcustom-provider key。 - 修复 snake_case tool-call transcript sanitization。
- Commands/BTW:
/btw缺少问题时的 usage placeholder 会带括号展示,避免 outbound channel sanitization 把它吞掉。 - Channels CLI:
openclaw channels list默认只显示 channel-only。- 新增
--all查看 bundled 与 catalog channels。 - 展示 installed/configured/enabled 状态。
- 模型鉴权与用量细节移动到
openclaw models auth list、openclaw status、openclaw models list。
对当前环境的可能影响
值得关注
-
Cron 可观测性增强
如果后续要做自动化状态面板或巡检脚本,可以直接读取cron list --json的 computed status,减少自写推导逻辑。 -
Codex OAuth 修复很关键
当前会话使用openai-codex/gpt-5.5,本次doctor --fix保留/恢复 Codex OAuth 路由的修复,对订阅鉴权环境很有价值。 -
会话 reset 后技能列表刷新
/new、sessions.reset后长期会话会重新构建 skills 可见列表,减少“技能已安装但会话看不到”的缓存问题。 -
通道投递状态更诚实
deliverySucceeded=false、Cron isolated runs 先校验投递目标、Telegram same-chat send 视为已送达,这些都能降低“看起来成功、实际没发出去”的误判。
升级后建议检查
openclaw status
openclaw cron list --json
openclaw models auth list
openclaw models list
如有 Cron 任务历史上保存过 payload.model: default/null/空值,可考虑运行:
openclaw doctor --fix
修复清单(逐条中文翻译)
- Release/plugin publishing:重试 ClawHub CLI 依赖安装的瞬时失败;当一个 preview cell 偶发失败时,保持 preview 通过的插件仍可发布;发布后校验每个预期 ClawHub 包版本,使维护发布更易恢复,且不易隐藏部分插件发布失败。
- OpenAI:支持
openai/chat-latest作为显式 direct API-key 模型覆盖,用于尝试移动的 ChatGPT Instant API alias,而不改变稳定默认模型。 - Cron CLI:
cron list --json与cron show --json输出 computed status,外部工具无需重新实现状态推导。 - Channels CLI:
openclaw channels list改为 channel-only;新增--all展示 bundled/catalog channels;渲染 installed/configured/enabled 状态;模型鉴权/用量细节迁移到 models/status 命令。 - Native commands:原生命令处理器遵守 owner enforcement。
- Active Memory:全局 memory toggles 需要 admin scope。
- Gateway/sessions:
/new与sessions.reset时清理 skills 快照缓存,使长期通道会话在技能变化后重建可见技能列表。 - Auto-reply:inline skill tool dispatch 通过
before-tool-call授权钩子。 - Tavily:从 active runtime config snapshot 解析
tavily_search与tavily_extract凭证,避免 SecretRef API key 未解析。 - Plugins/install:托管插件 install/rollback/repair/uninstall 的 npm 操作统一使用绝对 POSIX npm lifecycle shell,避免受限 PATH shell 破坏清理。
- Agents/context engine:源历史缩减或组装失败时,使缓存上下文视图失效,防止复用 reset 前的旧历史。
- Discord/message:将
discord:channel:<id>正确解析为频道发送,避免误路由成 Discord DM 导致 Unknown Channel。 - Agents/compaction:将压缩摘要 reserve tokens 限制在模型输出上限内,避免非法
max_tokens。 - Commands/BTW:
/btw缺少问题时的 usage placeholder 带括号显示,避免通道清洗后不可见。 - Cron/doctor:修复 Cron jobs 中错误保存的
payload.model(default、null、空、JSON null),doctor --fix会移除错误覆盖项,同时保持严格运行时模型校验。 - Telegram:DM、群组、原生命令和 callback 授权先遵守
accessGroup:*sender allowlists,再进行 Telegram 数字 sender-ID 检查。 - Agent delivery:当 outbound delivery 没有 adapter result 时报告
deliverySucceeded=false,避免空投递路径伪装成成功。 - Cron/isolated runs:当
delivery.channel=last无上一条路由时,在模型执行前失败,避免浪费 tokens。 - Gateway/sessions:每日 gateway-agent session rollover 改变 session id 时持久化新 transcript 文件,并保留自定义 transcript 路径。
- Doctor/Codex OAuth:
doctor --fix保留可工作的openai-codex/*PI 路由,并在只有 Codex OAuth 时恢复 GPT-5 路由,避免破坏订阅鉴权。 - Telegram:polling watchdog 绑定
getUpdates活性,无关 outbound Bot API 调用不能掩盖 wedged inbound poller。 - Agents/subagents:完成的 session-mode subagent registry 行遵守
agents.defaults.subagents.archiveAfterMinutes,不再硬编码 5 分钟 TTL。 - Plugins/channel setup:从非 bundled 外部插件 setup entries 转发
setChannelRuntime,确保延迟外部通道 runtime 初始化器在 startup polling 前安装。 - Telegram:inbound Telegram turn 中,同聊天 message tool outbound send 成功时,视为已投递,避免错误 silent reply fallback。
- Gateway/tasks:调和陈旧 CLI run-context tasks,并限制通道热重载 deferrals,避免 stale task 永久阻塞通道 reload。
- Discord/voice:在 channel capabilities 与
channels status --probe中审计语音频道权限,包括 auto-join 目标。 - Discord/voice:默认 post-speech silence grace 延长到 2.5 秒,新增
voice.captureSilenceGraceMs,改善语音捕获断续问题。 - WhatsApp:主动电话号码发送通过 Baileys LID forward mappings 路由,让 LID 联系人收到消息,避免 ghost chats。
- WhatsApp:captioned
MEDIA:directive 自动回复只发送一次,避免先空媒体后 caption 媒体的重复发送。 - Codex/approvals:Codex 审批模式调整 PermissionRequest hook、记住同会话 allow-always、并校验插件审批可用决策。
- Model providers:规范化 APNG/PNG 上传,保留 Gemini 3 thought-signature replay,接受旧版
__env__:VARkey,修复 snake_case tool-call transcript sanitization。 - Telegram/models:
/modelscallback buttons 支持包含点号的 provider id,使hf.co模型列表可渲染 inline keyboard。
结论
这是一版“把长期运行边角磨平”的维护更新:重点不是新增大功能,而是让插件发布、Cron、会话 reset、投递确认、Codex OAuth、Telegram/Discord/WhatsApp 通道在复杂场景下更稳、更诚实、更少误判。
https://www.fireself.cn/post/ffVgWp9m