← 返回更新日志

OpenClaw v2026.4.15

2026-04-16 · GitHub 原文
### 变更 - Anthropic/models:默认 Anthropic 选择项、`opus` 别名、Claude CLI 默认值,以及捆绑的图像理解功能已更新至 Claude Opus 4.7。 - Google/TTS:在捆绑的 `google` 插件中添加 Gemini 文本转语音支持,包括提供者注册、语音选择、WAV 回复输出、PCM 电话输出以及设置/文档指南。(#67515) 感谢 @barronlroth。 - 控制 UI/概览:新增模型认证状态卡片,可一目了然地显示 OAuth 令牌健康状况和提供者速率限制压力,并在 OAuth 令牌即将过期或已过期时发出提醒。由新的 `models.authStatus` 网关方法提供支持,该方法会剥离凭据并缓存 60 秒。(#66211) 感谢 @omarshahine。 - Memory/LanceDB:为 `memory-lancedb` 添加云存储支持,使持久化内存索引可在远程对象存储而非仅本地磁盘上运行。(#63502) 感谢 @rugvedS07。 - GitHub Copilot/memory search:添加用于内存搜索的 GitHub Copilot 嵌入提供者,并公开专用的 Copilot 嵌入主机辅助工具,以便插件可重用传输层,同时尊重远程覆盖、令牌刷新和更安全的负载验证。(#61718) 感谢 @feiskyer 和 @vincentkoc。 - Agents/local models:添加实验性 `agents.defaults.experimental.localModelLean: true` 以移除 `browser`、`cron` 和 `message` 等重型默认工具,从而在不改变正常路径的情况下减少弱本地模型设置的提示词大小。(#66495) 感谢 @ImLukeF。 - Packaging/plugins:将捆绑插件运行时依赖本地化到其所属扩展,精简发布的文档负载,并加强安装/包管理器防护,使发布的构建保持精简,核心不再携带扩展拥有的运行时负担。(#67099) 感谢 @vincentkoc。 - QA/Matrix:将 Matrix 实时 QA 拆分为源链接的 `qa-matrix` 运行器,并将仓库私有的 `qa-*` 界面排除在打包和发布构建之外。(#66723) 感谢 @gumadeiras。 - Docs/showcase:添加可扫描的横幅、完整的章节跳转链接以及社区示例的响应式视频网格。(#48493) 感谢 @jchopard69。 ### 修复 - Gateway/tools:将受信任的本地 `MEDIA:` 工具结果直通锚定在当前运行注册的内置工具的确切原始名称上,并拒绝名称与内置工具或同一请求中其他客户端工具规范化冲突的客户端工具定义(在 JSON 和 SSE 路径上均返回 `400 invalid_request_error`),因此客户端提供的、名称与内置工具相似的工具不再能继承其本地媒体信任。(#67303) - Agents/replay recovery:将提供者错误信息 `401 input item ID does not belong to this connection` 分类为重放无效,以便用户获得现有的 `/new` 会话重置指导,而非原始的 401 风格失败。(#66475) 感谢 @dallylee。 - Gateway/webchat:在 webchat 音频嵌入路径上强制执行 localRoots containment(AI 辅助)。(#67298) 感谢 @pgondhi987。 - Matrix/pairing:阻止 DM 配对存储条目授权房间控制命令(AI 辅助)。(#67294) 感谢 @pgondhi987。 - Docker/build:在 `node_modules` 下使用 `find` 验证 `@matrix-org/matrix-sdk-crypto-nodejs` 原生绑定,而非硬编码的 `.pnpm/...` 路径,使 pnpm v10+ 虚拟存储布局不再导致镜像构建失败。(#67143) 感谢 @ly85206559。 - Matrix/E2EE:保持无密码令牌认证机器人启动时的保守引导,仍尝试受保护的修复过程而不要求 `channels.matrix.password`,并记录剩余的密码-UIA 限制。(#66228) 感谢 @SARAMALI15792。 - Cron/announce delivery:抑制以 `NO_REPLY` 结尾的混合内容隔离 cron 公告回复,使 trailing silent sentinels 不再将摘要文本泄露到目标频道。(#65004) 感谢 @neo1027144-creator。 - Plugins/bundled channels:按活动捆绑根目录分区捆绑频道延迟缓存,使 `OPENCLAW_BUNDLED_PLUGINS_DIR` 切换停止重用陈旧的插件、设置、密钥和运行时状态。(#67200) 感谢 @gumadeiras。 - Packaging/plugins:从捆绑插件运行时依赖中清理通用测试/规范冗余,并在 npm 发布验证中失败如果打包的测试 cargo 重新出现,使发布的 tarball 保持精简,无需插件特定特殊情况。(#67275) 感谢 @gumadeiras。 - Agents/context + Memory:修剪默认启动/技能提示词预算,默认限制 `memory_get` 摘录并附带显式延续元数据,使 QMD 读取与相同的有限摘录契约对齐,因此长会话默认拉取更少上下文而不丢失确定性后续读取。 - Matrix/commands:由于房间控制命令授权忽略配对存储条目,现在跳过房间流量上的 DM 配对存储读取,使房间路径更窄而不改变房间授权行为。(#67325) 感谢 @gumadeiras。 - Memory-core/dreaming:在引导记录落地前,从会话存储元数据中跳过梦境叙述记录稿,使梦境日记提示词/散文行不会污染会话摄取。(#67315) 感谢 @jalehman。 - Agents/local models:澄清自托管模型的低上下文预检提示,将配置支持的容量指向相关 OpenClaw 设置,并在 `agents.defaults.contextTokens` 是真正限制时停止建议更大的模型。(#66236) 感谢 @ImLukeF。 - Dreaming/memory-core:将默认 `dreaming.storage.mode` 从 `inline` 改为 `separate`,使梦境阶段块(`## Light Sleep`、`## REM Sleep`)落入 `memory/dreaming/{phase}/YYYY-MM-DD.md`,而非注入 `memory/YYYY-MM-DD.md`。每日内存文件不再被结构化候选输出主导,且已剥离梦境标记块的每日摄取扫描器不再需要在每次运行时与数百个阶段块行竞争。希望保留先前行为的操作员可通过设置 `plugins.entries.memory-core.config.dreaming.storage.mode: "inline"` 选择加入。(#66412) 感谢 @mjamiv。 - Control UI/Overview:修复模型认证状态卡片上针对别名提供者、基于 env 的 OAuth(使用 auth.profiles)和无法解析的 env SecretRef 的误报“缺失”警报。(#67253) 感谢 @omarshahine。 - Dashboard:约束桌面端执行批准模态框溢出,使长命令内容不再将操作按钮推出视图。(#67082) 感谢 @Ziy1-Tan。 - Agents/CLI transcripts:将成功的 CLI 支持回合持久化到 OpenClaw 会话记录稿,使 google-gemini-cli 回复出现在会话历史中,控制 UI 也恢复正常。(#67490) 感谢 @obviyus。 - Discord/tool-call text:从可见助手文本中剥离独立的 Gemma 风格 `<function>...</function>` 工具调用负载,而不截断散文示例或尾随回复。(#67318) 感谢 @joelnishanth。 - WhatsApp/web-session:在重新打开套接字前排空待处理的每认证凭据保存队列,使重连时认证引导不再与进行中的 `creds.json` 写入竞争并错误地从备份恢复。(#67464) 感谢 @neeravmakwana。 - BlueBubbles/catchup:为每条消息添加重试上限(`catchup.maxFailureRetries`,默认 10),使具有畸形负载的持续失败消息不再永远卡住捕获光标。在对同一 GUID 的 `processMessage` 连续失败 N 次后,捕获记录 WARN,在后续扫描中跳过该消息,并让光标从其上方通过。瞬态失败仍从同一点重试。还修复了持久化去重文件锁中的丢失更新竞争(该竞争在并发写入时静默丢弃入站 GUID)、版本升级时的去重文件命名迁移差距,以及让捕获重放防抖-合并事件作为独立消息重放的 balloon-event 旁路。(#67426, #66870) 感谢 @omarshahine。 - Ollama/chat:从 Ollama 聊天请求模型 ID 中剥离 `ollama/` 提供者前缀,使像 `ollama/qwen3:14b-q8_0` 这样的配置引用不再对 Ollama API 返回 404。(#67457) 感谢 @suboss87。 - Agents/tools:将非工作区主机 tilde 路径解析为 OS 主目录,并使编辑恢复与同一路径目标对齐,因此当 `OPENCLAW_HOME` 不同时,`~/...` 主机编辑/写入操作不再失败或读回错误文件。(#62804) 感谢 @stainlu。 - Speech/TTS:自动启用捆绑的 Microsoft 和 ElevenLabs 语音提供者,并将通用 TTS 指令令牌路由到显式或活动提供者优先,因此像 `[[tts:speed=1.2]]` 这样的覆盖不再静默落到错误提供者。(#62846) 感谢 @stainlu。 - OpenAI Codex/models:在运行时解析和发现/列表中将过时的原生传输元数据规范化,使 legacy `openai-codex` 行(缺失 `api` 或 `https://chatgpt.com/backend-api/v1`)自愈到规范 Codex 传输,而非通过损坏的 HTML/Cloudflare 路径路由请求,结合了 #66969(saamuelng601-pixel)和 #67159(hclsys)中提出的原始修复。(#67635) - Agents/failover:将 HTML 提供者错误页面视为 CDN 风格 5xx 响应的上游传输失败,同时不将嵌入正文文本错误分类为 API 速率限制,且仍为 HTML 401/403 页面保留认证修复,为 HTML 407 页面保留代理修复。(#67642) 感谢 @stainlu。 - Gateway/skills:每当配置写入触及 `skills.*`(例如 `skills.allowBundled`、`skills.entries.<id>.enabled` 或 `skills.profile`)时,使缓存的技能快照版本失效。现有代理会话在 `sessions.json` 中持久化 `skillsSnapshot`,该快照复用会话创建时冻结的技能列表;若无此失效,从允许列表中移除捆绑技能会使旧快照保持活动状态,模型继续调用已禁用工具,产生 `Tool <name> not found` 循环,直至嵌入式运行超时。(#67401) 感谢 @xantorres。 - Agents/tool-loop:默认启用未知工具流防护。此前 `resolveUnknownToolGuardThreshold` 在 `tools.loopDetection.enabled` 未显式设为 `true` 时返回 `undefined`,导致默认配置下保护关闭。幻觉或移除的工具(例如从 `skills.allowBundled` 中删除后的 `himalaya`)将循环“Tool X not found”尝试,直至完整嵌入式运行超时。该防护无误报表面,因为它仅在工具客观未在运行中注册时触发,因此现在无论 `tools.loopDetection.enabled` 如何都保持启用,且仍接受 `tools.loopDetection.unknownToolThreshold` 作为每运行覆盖(默认 10)。(#67401) 感谢 @xantorres。 - TUI/streaming:向 `tui-event-handlers` 添加客户端流式监视器,使 `streaming · Xm Ys` 活动指示器在活跃运行增量静默 30 秒后重置为 `idle`。防止丢失或延迟的 `state: "final"` 聊天事件(WS 重连、网关重启等)使 TUI 无限期卡在 `streaming`;新系统日志行显示重置,以便用户知道发送新消息以重新同步。该窗口可通过新的 `streamingWatchdogMs` 上下文选项配置(设为 `0` 禁用),且处理程序现在公开 `dispose()` 以在关闭时清除待处理计时器。(#67401) 感谢 @xantorres。 - Extensions/lmstudio:为推理预加载包装器添加指数退避,使 LM Studio 模型加载失败(例如内置内存保护栏因交换饱和而拒绝加载)不再为每个聊天请求每 ~2s 产生一条 WARN 行。包装器现在按 `(baseUrl, modelKey, contextLength)` 元组记录连续预加载失败,具有 5s → 10s → 20s → … → 5min 冷却,并在冷却激活时完全跳过预加载步骤,使聊天请求直接流向流(模型通常已通过 LM Studio UI 加载)。合并的 `preload failed` 日志行现在报告连续失败计数和剩余冷却,以便操作员可针对实际问题采取行动,而非淹没在重复警告中。(#67401) 感谢 @xantorres。 - Agents/replay:在出站请求上执行严格重放工具调用 ID 清理后重新运行工具/结果配对,使 Anthropic 兼容提供者(如 MiniMax)不再接收畸形孤立工具结果 ID(例如在压缩和重试流中的 `...toolresult1`)。(#67620) 感谢 @stainlu。 - Gateway/startup:修复 Linux/systemd 上仅插件自动启用为唯一启动配置写入时的虚假 SIGUSR1 重启循环;配置哈希保护未捕获该写入路径,导致 chokidar 将每次启动写入视为外部更改并触发重载 → 重启循环,在重复循环后损坏 manifest.db。修复 #67436。(#67557) 感谢 @openperf。 - Codex/harness:当 `codex` 被选为嵌入式代理 harness 运行时自动启用 Codex 插件,包括强制默认、每代理和 `OPENCLAW_AGENT_RUNTIME` 路径。(#67474) 感谢 @duqaXxX。 - OpenAI Codex/CLI:通过传递支持的 `--skip-git-repo-check` 恢复参数加上 Codex 原生的 `sandbox_mode="workspace-write"` 配置覆盖,使恢复的 `codex exec resume` 运行保持在安全非交互路径上,而不重新引入已移除的危险绕过标志。(#67666) 感谢 @plgonzalezrx8。 - Codex/app-server:解析 Desktop 来源的应用服务器用户代理(如 `Codex Desktop/0.118.0`),使版本门在 Codex CLI 继承多单词来源时仍能工作。(#64666) 感谢 @cyrusaf。 - Cron/announce delivery:在直接和文本投递中保持不区分大小写的隔离公告 `NO_REPLY` 剥离,当标题剥离静默时保留结构化仅媒体发送,并从清理负载推导主会话感知,使静默标题不再泄露陈旧的 `NO_REPLY` 文本。(#65016) 感谢 @BKF-Gitty。 - Sessions/Codex:仅当最新助手消息具有相同可见文本时跳过冗余 `delivery-mirror` 记录稿追加,防止 Codex 支持回合上重复可见回复,而不抑制跨回合的重复答案。(#67185) 感谢 @andyylin。 - Auto-reply/prompt-cache:使易失性入站聊天 ID 脱离稳定系统提示词,以便任务作用域适配器可在运行间重用提示词缓存,同时保留用户回合和仅媒体消息的对话元数据。(#65071) 感谢 @MonkeyLeeT。 - BlueBubbles/inbound:通过剥离非 SSRF 获取路径中不兼容的捆绑-undici 调度器,恢复 Node 22+ 上的入站图像附件下载,接受携带附件的 `updated-message` webhook,使用事件类型感知去重键使附件后续操作不被拒绝为重复,并在初始 webhook 到达时带有空数组时从 BB API 重试附件获取。(#64105, #61861, #65430, #67510) 感谢 @omarshahine。 - Agents/skills:合并来源后按技能名称排序提示词面向的 `available_skills` 条目,使 `skills.load.extraDirs` 顺序不再改变提示词缓存前缀。(#64198) 感谢 @Bartok9。 - Agents/OpenAI Responses:添加 `models.providers.*.models.*.compat.supportsPromptCacheKey`,使转发 `prompt_cache_key` 的 OpenAI 兼容代理可在保持提示词缓存启用同时,不兼容端点仍可强制剥离。(#67427) 感谢 @damselem。 - Agents/context engines:使循环钩子和最终 `afterTurn` 提示词缓存触摸元数据与当前助手回合对齐,使缓存感知上下文引擎在工具循环期间保持准确的缓存 TTL 状态。(#67767) 感谢 @jalehman。 - Memory/dreaming:在归一化前从会话语料用户回合中剥离 AI 面向的入站元数据信封,使 REM 主题提取看到用户实际消息文本,包括数组形状的分割信封。(#66548) 感谢 @zqchris。 - Agents/errors:在传输 DNS 分类前检测独立的 Cloudflare/CDN HTML 挑战页面,使提供者阻止页面不再显示为本地 DNS 查找失败。(#67704) 感谢 @chris-yyau。 - Security/approvals:在执行批准提示词中编辑密钥,使内联批准审查不再在渲染提示词内容中泄露凭证材料。(#61077, #64790) - CLI/configure:写入后重新读取持久化配置哈希,使配置更新不再因陈旧哈希竞争而失败。(#64188, #66528) - CLI/update:npm 升级后清理陈旧的打包 `dist` 块,并使降级/验证库存检查保持兼容安全,使全局升级不再因陈旧块导入而失败。(#66959) 感谢 @obviyus。 - Onboarding/CLI:修复全局安装 CLI 设置期间入门时的频道选择崩溃。(#66736) - Video generation/live tests:限制提供者为实时视频冒烟测试轮询,默认为快速非 FAL 文本到视频路径,并使用一秒龙虾提示词,使发布验证不再因缓慢提供者队列而无限等待。 - Memory-core/QMD `memory_get`:拒绝任意工作区 markdown 路径的读取,仅允许规范内存文件(`MEMORY.md`、`memory.md`、`DREAMS.md`、`dreams.md`、`memory/**`)加上活动索引 QMD 工作区文档的精确路径,因此 QMD 内存后端不再能用作绕过 `read` 工具策略拒绝的通用工作区文件读取填充。(#66026) 感谢 @eleqtrizit。 - Cron/agents:将嵌入式运行工具策略和内部事件参数转发到尝试层,使 `--tools` 允许列表、cron 拥有的消息工具抑制、显式消息 targeting 和命令路径内部事件全部在运行时再次生效。(#62675) 感谢 @hexsprite。 - Setup/providers:在设置期间保护首选提供者查找,使具有缺失提供者 ID 的畸形插件元数据不再导致向导崩溃,错误为 `Cannot read properties of undefined (reading 'trim')`。(#66649) 感谢 @Tianworld。 - Matrix/security:规范化沙盒化配置文件头像参数,保留 `mxc://` 头像 URL,并在重载期间暴露 gmail 观察程序停止失败。(#64701) 感谢 @slepybear。 - Telegram/documents:从入站 Telegram 文本处理中丢弃泄漏的二进制标题字节,使 `.mobi` 或 `.epub` 等文档上传不再通过回复元数据或存档到 `text/plain` 的强制使提示词令牌计数爆炸。(#66663) 感谢 @joelnishanth。 - Gateway/auth:在 HTTP 服务器和 HTTP 升级处理程序上通过 `getResolvedAuth()` 解析活跃网关 bearer,镜像 WebSocket 路径,因此通过 `secrets.reload` 或配置热重载旋转的密钥立即停止在 `/v1/*`、`/tools/invoke`、插件 HTTP 路由和 canvas 升级路径上认证,而非在 HTTP 上保持有效直至网关重启。(#66651) 感谢 @mmaps。 - Agents/compaction:将压缩保留令牌下限限制为模型上下文窗口,使小上下文本地模型(例如 16K 令牌的 Ollama)不再在每次提示词上触发上下文溢出错误或无限压缩循环。(#65671) 感谢 @openperf。 - Agents/OpenAI Responses:将精确的 `Unknown error (no error details in response)` 传输失败分类为故障转移原因 `unknown`,因此助手/模型回退仍对该无详情失败路径运行。(#65254) 感谢 @OpenCodeEngineer。 - Models/probe:在 `models list --probe` 中将无效模型探测失败显示为 `format` 而非 `unknown`,并锁定无效模型回退路径配合回归覆盖。(#50028) 感谢 @xiwuqi。 - Agents/failover:将 OpenAI 兼容的 `finish_reason: network_error` 流失败分类为超时,因此模型故障转移重试继续而非以未知故障转移原因停止。(#61784) 感谢 @lawrence3699。 - Onboarding/channels:在发现和验证前规范化频道设置元数据,使畸形或混合形状频道插件元数据不再破坏设置和入门频道列表。(#66706) 感谢 @darkamenosa。 - Slack/native commands:为斜杠命令(如 `/verbose`)修复选项菜单,当 Slack 渲染原生按钮时,为每个按钮提供唯一操作 ID,同时仍通过共享 `openclaw_cmdarg*` 监听器路由它们。感谢 @Wangmerlyn。 - Feishu/webhook:强化 webhook 传输和卡片操作重放防护,在缺失 `encryptKey` 和空白回调令牌时失败关闭——无 `encryptKey` 拒绝启动 webhook 传输,无密钥时拒绝未签名请求而非接受,并在去重声明和调度器前丢弃空白卡片操作令牌。在已关闭的监控账户层之上的深度防御。(#66707) 感谢 @eleqtrizit。 - Agents/workspace files:将 `agents.files.get`、`agents.files.set` 和工作区列表路由通过共享 `fs-safe` 辅助工具(`openFileWithinRoot`/`readFileWithinRoot`/`writeFileWithinRoot`),拒绝允许列表代理文件的符号链接别名,并让 `fs-safe` 从文件描述符解析打开文件真实路径,后备到基于路径的 `realpath`,因此 `open` 和 `realpath` 之间的符号链接交换不能再将验证路径重定向到预期 inode 之外。(#66636) 感谢 @eleqtrizit。 - Gateway/MCP loopback:将 `/mcp` bearer 比较从普通 `!==` 切换到恒定时间 `safeEqualSecret`(匹配代码库中每个其他认证表面的惯例),并在认证门运行前通过 `checkBrowserOrigin` 拒绝非环回浏览器来源请求。环回来源(`127.0.0.1:*`、`localhost:*`、同源)仍通过,包括浏览器标记为 `Sec-Fetch-Site: cross-site` 的 `localhost`↔`127.0.0.1` 主机不匹配。(#66665) 感谢 @eleqtrizit。 - Auto-reply/billing:将纯计费冷却回退摘要从结构化回退原因中分类,以便用户看到计费指导而非通用失败回复。(#66363) 感谢 @Rohan5commit。 - Agents/fallback:在带有会话历史的模型故障转移重试上保留原始提示词正文,使重试模型保持活跃任务而非仅看到通用继续消息。(#66029) 感谢 @WuKongAI-CMU。 - Reply/secrets:在回复运行消息操作发现前解析活跃回复频道/账户 SecretRefs,使频道令牌 SecretRefs(例如 Discord)不降级为发现时未解析秘密失败。(#66796) 感谢 @joshavant。 - Agents/Anthropic:忽略非正 Anthropic 消息令牌覆盖,并在无正令牌预算时本地失败,使无效 `max_tokens` 值不再到达提供者 API。(#66664) 感谢 @jalehman。 - Agents/context engines:当延迟维护重用回合后运行时上下文时,保留仅提示词令牌计数而非完整请求总数,使后台压缩簿记与活跃提示词窗口匹配。(#66820) 感谢 @jalehman。 - BlueBubbles/inbound:添加持久化文件支持的 GUID 去重,使 BB 服务器重启或重连后 MessagePoller webhook 重放不再导致代理重新回复已处理消息。(#19176, #12053, #66816) 感谢 @omarshahine。 - Secrets/plugins/status:对齐插件预加载、只读状态/代理表面和运行时认证路径中的 SecretRef 检查与严格处理,使未解析引用不再使只读 CLI 流程崩溃,而运行时必需的非 env 引用保持严格。(#66818) 感谢 @joshavant。 - Memory/dreaming:阻止仅引用梦境日记提示词的普通记录稿被分类为内部梦境运行并从会话回忆摄取中静默丢弃。(#66852) 感谢 @gumadeiras。 - Telegram/documents:清理二进制回复上下文和 ZIP 类存档提取,使 `.epub` 和 `.mobi` 上传不再通过回复元数据或存档到 `text/plain` 的强制将原始二进制泄露到提示词上下文。(#66877) 感谢 @martinfrancois。 - Telegram/native commands:恢复插件注册表支持的自动默认值用于原生命令和原生技能,使 Telegram 斜杠命令在 `commands.native` 和 `commands.nativeSkills` 保持 `auto` 时保持注册。(#66843) 感谢 @kashevk0。 - OpenRouter/Qwen3:将 `reasoning_details` 流增量解析为思考内容而不跳过同块工具调用,使 Qwen3 回复在 OpenRouter 上不再为空失败,且混合推理/工具调用块仍正常执行。(#66905) 感谢 @bladin。 - BlueBubbles/catchup:通过持久化每帐户光标和 `/api/v1/message/query?after=<ts>` 传递,在网关重启后重放错过的 webhook 消息,使网关关闭时传递的消息不再消失。使用现有 `processMessage` 路径并由 #66816 的入站 GUID 缓存去重。(#66857, #66721) 感谢 @omarshahine。 - Telegram/native commands:保持 Telegram 命令同步缓存进程本地,使网关重启重新注册菜单,而非信任 Telegram 带外清除命令后的陈旧磁盘同步状态。(#66730) 感谢 @nightq。 - Audio/self-hosted STT:恢复 `models.providers.*.request.allowPrivateNetwork` 用于音频转录,使私有或 LAN 语音转文本端点不再在 v2026.4.14 回归后触发 SSRF 阻止。(#66692) 感谢 @jhsmith409。 - Auto-reply/media:在自动回复发送流程中允许工作区根绝对媒体路径,使有效本地媒体引用不再失败路径验证。(#66689) - WhatsApp/Baileys media upload:强化加密上传处理,使大型出站媒体发送避免缓冲区峰值和可靠性回归。(#65966) 感谢 @frankekn。 - QQBot/cron:防护 `parseFaceTags` 和 `filterInternalMarkers` 中未定义的 `event.content`,使无内容负载的 cron 触发代理回合不再崩溃,错误为 `TypeError: Cannot read properties of undefined (reading 'startsWith')`。(#66302) 感谢 @xinmotlanthua。 - CLI/plugins:停止 `--dangerously-force-unsafe-install` 插件安装在安全扫描失败后回退到 hook-pack 安装,同时仍为真实 hook pack 保留非安全回退行为。(#58909) 感谢 @hxy91819。 - Claude CLI/sessions:将 `No conversation found with session ID` 分类为 `session_expired`,使过期的 CLI 支持对话清除陈旧绑定并在下一回合恢复。(#65028) 感谢 @Ivan-Fn。 - Context Engine:当第三方上下文引擎插件在解析时间失败(未注册 ID、工厂抛出或合约违反)时优雅回退到旧引擎,防止每个频道的完整网关中断。(#66930) 感谢 @openperf。 - Control UI/chat:通过延迟同会话历史重载直到活跃运行结束(包括中止和错误运行),在活跃发送期间保持乐观用户消息卡片可见。(#66997) 感谢 @scotthuang 和 @vincentkoc。 - Media/Slack:仅当回退缓冲区实际解码为文本时允许主机本地 CSV 和 Markdown 上传,使真实纯文本文件工作而不让重命名为 `.csv` 或 `.md` 的不透明非文本 blob 通过主机读取防护。(#67047) 感谢 @Unayung。 - Ollama/onboarding:将设置拆分为 `Cloud + Local`、`Cloud only` 和 `Local only`,支持无本地守护进程的直接 `OLLAMA_API_KEY` 云设置,并保持 Ollama 网络搜索在本地主机路径。(#67005) 感谢 @obviyus。 - Webchat/security:在媒体嵌入路径中拒绝远程主机 `file://` URL。(#67293) 感谢 @pgondhi987。 - Dreaming/memory-core:使用摄取日而非源文件日进行每日回忆去重,使相同每日笔记的重复扫描可跨天增加 `dailyCount`,而非停滞在 `1`。(#67091) 感谢 @Bartok9。 - Node-host/tools.exec:让批准绑定区分已知原生二进制文件和可变 shell 负载文件,同时仍失败关闭未知或竞争文件探测,使绝对路径 node-host 命令(如 `/usr/bin/whoami`)不再被拒绝为不安全解释器/运行时命令。(#66731) 感谢 @tmimmanuel。