上一轮发布结束时,龙虾刚从十天的安全围城里走出来。甲胄厚了一层,爪子也更快了,但它在水里游过时,眼睛还不怎么看自己。
4.15 做的事情不大,但方向挺清晰:让龙虾换一个更好用的脑子,让它学会看一眼自己手里攥着的钥匙,再悄悄把记忆挪个地方放。
这一版不会出现在任何一张产品截图的 hero 位。但你升级完之后,有几个默认值会静静地变掉——如果你之前在某些角落依赖过老行为,值得提前知道。
脑子换成 Opus 4.7
默认的 Anthropic 选择切到了 Claude Opus 4.7。以前 opus 这个别名需要你自己在配置里挑版本,现在它直接指向最新的 Opus;走 Claude CLI 的那条路,默认也同步过来。
跟着一起进来的是 Opus 4.7 的图像理解能力——这一部分原本要靠额外插件或者外部 vision provider 才能用,这一版直接捆进了核心。你把一张截图丢进聊天窗口,龙虾现在自己就能看懂,不用再兜一圈。
如果你之前手动把 provider pin 在某个旧版 Opus 上,这次升级不会动你的配置——显式的 pin 仍然优先。但如果你用的是默认,你会发现聊天速度和画面理解都往前挪了一截。
给跑不动的机器一条退路
跟 Opus 4.7 上位同时出现的,是一个方向相反的 flag:agents.defaults.experimental.localModelLean: true。
这是给本地小模型准备的。打开它之后,提示词里会自动砍掉那些对小模型压力过大的重型工具——browser、cron 之类——让上下文窗口瘦一圈,推理压力也轻一些。名字里带 experimental 是因为它还在调,但对于在自己机器上跑 7B、13B 的用户,这一条可能比 Opus 上位更值得打开。
"给强的更强、给弱的减负"是这一版比较隐性的主旋律。
第一次看得见自己的钥匙
这是这一版最值得讲的一件事,也是最容易被忽略的一件。
Control UI 里多了一张 Model Auth Status Card。它做的事情听起来很普通:告诉你当前绑定的每个 provider 的 OAuth token 是不是健康、还有多久过期、最近有没有被 rate limit 压过。
听起来普通,但以前并没有这一张卡。OAuth token 过期是在 provider 返回 401 的那一刻你才知道的;rate limit 是你跑到一半突然被卡住的时候才意识到的。龙虾一直在用这些凭据,但从来没有一个单独的地方让它——或者让你——在事情坏掉之前看见这些状态。
支撑这张卡的后端是一个新的网关方法:models.authStatus。它带 60 秒的缓存,所以 UI 不会真的每秒轮询 provider;多个客户端共用同一只龙虾实例时,也不会把 provider 的 introspection 端点打穿。
和这件事配套的还有几个更底层的修复:凭据竞态——socket 重连之前,pending 的 auth 保存会先被落盘,避免重连过程吃掉一次即将完成的认证;工作区文件访问——所有路径操作统一走共享的 fs-safe helper,符号链接对准 allowlist 文件的伎俩会被拒掉。都不是什么能拍成 demo 的东西,但都是"龙虾对自己手里的东西更清楚了"的一部分。
Memory 在悄悄搬家
这一版的 memory 层改了三件事,加起来是一次方向性的调整。
第一件,LanceDB 的 memory 索引现在支持远程对象存储。以前它只能放在本地磁盘,意味着你换台机器就得重新建索引,跨设备共享记忆基本没戏。新版本里,同一份 LanceDB 索引可以放在 S3 或者兼容 S3 的对象存储上,本地只是一个 cache 层。对于把龙虾部署在多台机器、或者在笔记本和 VPS 之间来回切的人,这是从"记忆绑在机器上"变成"记忆绑在账户上"的关键一步。
第二件,GitHub Copilot 被加进了 embedding provider 池。memory 搜索需要一个 embedding 模型来把记忆条目向量化,以前你只能在 OpenAI、本地 sentence-transformers 这些选项里挑。现在多一个选项:如果你已经有 Copilot 订阅,memory 搜索就可以直接复用那条鉴权通道——带专属的 host helper,尊重远程 override 和 token 刷新。
第三件,也是唯一带破坏性的一件:dreaming.storage.mode 的默认值从 inline 改成了 separate。
dreaming 是龙虾在"空闲时间"对记忆做归纳重组的那个阶段。以前它产出的 phase block 会被直接塞回当天的 memory 文件里——优点是所有东西都在一个时间线上,缺点是 memory 文件会因为这些生成内容变得很胖,而且 diff 很难看。
新默认把 phase block 挪到单独的路径:memory/dreaming/{phase}/YYYY-MM-DD.md。每个 phase 按天分文件,原始 memory 文件只保留手写的东西。升级之后,你现有的 memory 文件不会被改动,但下一次 dreaming 跑的时候,输出会去新位置。如果你写过脚本从 memory 文件里读 dreaming 的内容,那些脚本需要改路径。
想保留老行为的话,显式把这个配置设回 inline 就行。
Google 的语音也进来了
捆绑的 Google 插件加了 Gemini TTS 支持:可选 voice、WAV 输出、为电话场景准备的 PCM 格式。如果你本来就在用 Google Cloud 做 STT 或者其他 Gemini 调用,这次不用再接一个独立的 TTS provider 了,一套鉴权过到底。
不是什么大改动,但把一块之前得自己拼的东西变成了开箱即用。
那些没上头条、但你可能每天在踩的东西
剩下这些单拿出来都上不了小标题,但加起来覆盖了一片日常卡点:
- •Ollama 聊天的 404 修好了——如果你的模型 ID 里写了
ollama/前缀,旧版本会傻乎乎地把这个前缀也发给 Ollama 服务端,导致 404。新版本会在发请求前把这个前缀剥掉。 - •BlueBubbles 图片下载恢复了 Node 22+ 的兼容性——webhook 处理和附件抓取的重试逻辑都跟着修了一遍。如果你在 macOS 上用 BlueBubbles 做 iMessage 桥接,升一下 Node 也该跟着升这一版。
- •TUI 流式 watchdog——如果 30 秒内没有任何 chat event delta 到达,流式指示器会被重置。以前遇到 provider 那边悄悄断流的场景,TUI 会卡在"streaming"状态里不动,现在不会了。
- •Skill 快照失效——以前
skills.*配置改了之后,已经开着的 agent session 还在用旧的 skill 列表,要重启才能看到新技能。现在只要配置一变,缓存的 snapshot 就会失效。 - •未知工具 stream guard 默认开——以前这是一个需要手动开启的保护:当模型幻觉出一个不存在的工具名时,守卫会阻止"Tool X not found"进入无限循环。现在默认开着,不用再单独配。
- •路径解析——非 workspace 的
~路径现在会按 OS 的 home 目录解析,而不是按OPENCLAW_HOME。以前这两个目录不一样时,同一个~/foo.txt在 edit 和 write 操作里可能指向不同的地方,修完之后统一了。 - •Prompt cache 对齐——task-scoped adapter 跑的时候,系统提示里的入站 chat ID 被稳定化了,同一个任务跨多次调用时,prompt cache 命中率会更高。
- •MEDIA 工具结果通道——以前本地受信任工具返回的
MEDIA:passthrough 会按内建工具名做匹配;现在匹配改成精确、按 normalize 后会撞到内建名字的 client 工具会被直接拒掉,避免命名碰撞钻空子。 - •Replay 恢复——provider 侧返回的
401 input item ID does not belong to this connection错误,现在会被识别成"replay-invalid",给出正确的 session reset 指引,而不是一路当成普通 401 重试。
默认值清单
这一版一共动了几个默认值,单独拎出来列一遍方便对账:
- •
dreaming.storage.mode:inline→separate(phase block 落到memory/dreaming/{phase}/YYYY-MM-DD.md) - •未知工具 stream guard:默认开启(以前需要显式打开)
- •捆绑 Microsoft / ElevenLabs 语音 provider:默认启用
- •默认 Anthropic:指向 Opus 4.7
- •Claude CLI 默认:同步到 Opus 4.7
前两条是行为层面的变化,如果你依赖老行为,升级前记得在 config 里显式覆盖。
一句话版
如果你只想从这一版里拿走一件事:跑 openclaw update,然后去 Control UI 看一眼新的 Model Auth Status Card。那张卡会告诉你一件你以前不知道的事——龙虾手里到底攥着哪些钥匙,哪一把快过期了,哪一把最近被 rate limit 掐过脖子。
如果你是 dreaming 的重度用户、或者在 memory 文件里翻过 phase block 的原文——注意 dreaming.storage.mode 的默认变更,新的 dreaming 产物会去 memory/dreaming/ 子目录。升级之后第一次跑 dreaming 的时候,看一眼新目录就知道该怎么用了。