Back to News
Troubleshooting
OpenClaw Bug:Control UI 粘贴图片时可能把超大 Base64 文本直接灌进输入框

OpenClaw Bug:Control UI 粘贴图片时可能把超大 Base64 文本直接灌进输入框

OpenClaw News 编辑部

OpenClaw News 编辑部

社区刚出现一条新的 OpenClaw issue:在 Control UI 的输入框里粘贴图片时,系统有可能不会把图片当成附件处理,而是直接把一大段 data:image/...;base64,... 内联文本 塞进 composer。

这不只是“看起来难看”的前端小毛病,它会直接带来运维层面的麻烦:

  • 输入框内容会瞬间失控,难以恢复
  • 失败发送后的草稿恢复逻辑更难判断
  • 如果你手上只有 安装版 dist bundle,想临时热修会非常脆弱

更麻烦的是,issue 里还提到一个关键发现:发送失败后的草稿恢复逻辑,可能本来就已经存在于更深层的 send pipeline。也就是说,如果你在 UI 按钮层瞎补一刀,很可能不是修好,而是把恢复链路补坏。

TL;DR

如果你在 Control UI 里粘贴图片后,输入框直接出现一大段 base64 文本:

  1. 先把它视为 Control UI 的粘贴处理 bug,不要先怪用户操作。
  2. 不要急着在编译后的 UI bundle 里用“包一层按钮点击”这种方式硬修。
  3. 先确认你的安装形态是不是 全局 npm / dist-first 包。
  4. 在上游明确修复前,优先采用低风险绕过方案。
  5. 如果你是多人协作环境,最好把这个症状写进内部事故说明,避免同事误判成模型或 provider 问题。

这个 bug 实际长什么样

根据 issue 的描述,问题路径很直接:

  • 打开 OpenClaw Control UI 的聊天输入框
  • 复制一张图片到剪贴板
  • 在 composer 中执行粘贴
  • 正常预期应当是生成图片附件;但异常情况下,输入框会直接塞进一长串 data:image/...;base64,... 文本

报告还提到:这个问题在测试 体量更小的本地视觉模型 时会更明显;而在某些 Anthropic API 流程下,症状没有那么容易被看出来。

这点很关键,因为很多团队往往是在“换模型”或“切到更底层的本地工作流”之后,才第一次暴露这类前端输入链路问题。

为什么这比普通 UI 小 bug 更麻烦

普通 UI bug 顶多让人烦,这个问题会直接拉高排障成本。

如果超大 base64 文本直接落进输入框:

  • 用户可能误发垃圾内容,而不是图片
  • 草稿内容会变得臃肿、难读、难恢复
  • 失败发送后的消息状态更难安全回滚
  • 团队在应急时很容易补错层

而 issue 里的第二个发现更值得注意:发送失败时,草稿和附件的恢复逻辑可能已经在更深层 send pipeline 里存在。

这意味着,如果你只是看到按钮层调用了 onSend(),然后在 UI 层随手包一层补丁,极有可能把已有的恢复契约打乱。

为什么安装版更难安全修

报告者是在本地全局安装的 OpenClaw 包里调查这个问题时,发现手头并不是一个常规、可编辑的 Control UI 源码树,而是 编译后的 hashed 静态资源。

这会让本地应急热修变得非常脆弱:

  • 你可能只能去改 dist/control-ui/assets/index-*.js
  • 这个文件是压缩后的
  • 文件名带哈希
  • 变更难 review,也难复现

要注意:这不等于它和之前那类“npm 包缺少 Control UI 资源”的打包事故是同一个问题。

之前的老问题,核心是 发布包缺文件;这次的新问题,核心是 图片粘贴链路把超大 base64 当普通文本塞进 composer。只是两者都共享一个现实困境:如果你手上只有 dist 产物,本地热修都很危险。

如何确认你撞到的是这个问题

建议按下面顺序确认,避免把它和模型故障、附件上传故障混在一起。

1)先用“剪贴板图片粘贴”复现

最简单的确认方式就是按原路径走一遍:

  1. 打开 Control UI
  2. 复制一张图片
  3. 在输入框粘贴

如果输入框里出现一大段 data:image/...;base64,...,而不是生成附件,说明你的症状和 issue 高度一致。

2)确认它是不是只坏在 paste path

这个 issue 讨论的是 剪贴板图片粘贴,不一定代表所有附件上传方式都坏了。

所以排障时最好对照一下:

  • 剪贴板粘贴图片
  • 常规文件附件上传(如果你的安装方式支持)

如果文件附件正常、只有粘贴路径坏了,那么更像是前端 paste handling 的定向问题,而不是整个附件链路坏掉。

3)确认你现在调试的是哪种安装形态

如果你的 OpenClaw 来自全局 npm 包或其他 dist-first 安装产物,那么“现场修补”的风险会显著升高,因为你可能拿不到正常源码树。

这会直接影响你的止血策略:

  • 是先停在 workaround
  • 还是切版本
  • 还是转向源码级修复
  • 还是先等上游澄清,而不是立刻去改压缩 bundle

现阶段更稳妥的绕过方案

方案 A:在受影响环境里先停用“直接粘贴图片”

如果你已经能稳定复现,最稳的短期止血方案其实很朴素:

  • 不要再把图片直接粘贴进 composer
  • 如果有别的附件方式,优先走替代路径
  • 关键业务或无人值守流程里,先不要依赖这条输入方式

这不优雅,但能避免把一个前端 bug 放大成草稿污染或后续 prompt 混乱。

方案 B:没有源码级把握时,不要在按钮层乱补发送恢复逻辑

issue 明确提到:发送失败后的恢复逻辑,可能已经存在于更深层的 send pipeline。

这意味着如果你在 UI 按钮层快速补一个 wrapper,可能会制造二次故障,比如:

  • 恢复逻辑重复执行
  • 草稿状态前后不一致
  • 文本恢复了但附件没恢复,或反过来

尤其当你是在编译产物上改补丁时,更不该“先改了再说”。

方案 C:把 dist bundle 热修视为最后手段,而不是默认动作

如果你手上能改的只有安装目录里的哈希压缩 bundle,那就应该把它视为最后手段。

原因很现实:

  • 补丁难 review
  • 后续升级会直接覆盖
  • 复原和迁移成本高
  • 很容易只修表面症状,却破坏 send pipeline 的契约

上游大概率需要修什么

从当前 issue 看,上游大概率至少要检查四层:

  • Control UI 的剪贴板图片解析逻辑
  • data:image/...;base64 是否被错误地当作普通文本输入
  • 发送失败后的草稿恢复逻辑究竟应该归属哪一层
  • 安装版分发是否需要更好的 source-to-dist 调试可追踪性

另外,这个 issue 也给出了比较明确的回归测试方向:

  • composer 的图片粘贴处理
  • 发送失败后,草稿文本与附件是否都能正确恢复

什么情况才算真的修好

不要只因为“不崩了”就算修复完成。至少要围绕这次的核心坏点复测:

  • 粘贴图片后能正常生成附件,或被明确拒绝
  • composer 不再出现超大 base64 文本
  • 发送失败后,草稿状态仍能正确恢复
  • 出错后的附件恢复行为保持一致

常见判断问题 FAQ

如果输入框里已经灌进一大段 base64 文本,第一步该做什么?

第一步不是继续点发送试试,而是先把它当成 粘贴链路故障现场 保护起来。

更稳妥的处理顺序是:

  1. 先停止继续编辑这条草稿
  2. 记录这是“图片粘贴变成 base64 文本”而不是普通长 prompt
  3. 再决定是否清空、重开 composer,或者改走附件替代路径

因为一旦继续在这段内容上叠加编辑,后面会更难区分到底是 paste path 出错,还是 send / restore 逻辑又被污染了。

什么时候更该把问题归到 paste handling,而不是模型或 provider?

如果只有“粘贴图片”会触发异常,而常规文本输入、普通发送、甚至文件附件都还正常,那就更该优先归到 Control UI 的 paste handling。

这时最危险的误判就是把它扯到模型、provider 或 token 限额上,结果把排障面越拉越大。

搜 data:image base64 pasted into composer 的人,页面最该先帮他分哪三个支路?

最该先分这三个支路:

  1. 只有 clipboard paste 坏,还是所有附件方式都坏
  2. 当前是源码环境,还是只能改 dist bundle 的安装环境
  3. 发送失败后的草稿恢复逻辑有没有一起异常

这三步最能决定你该先做低风险绕过,还是已经需要升级到更深层 send pipeline 排查。

怎样快速区分这是超大 base64 被粘进输入框,而不是模型或 provider 自己故障?

先看最早发生变化的是哪一层。

如果下面这些现象同时成立,就更像是 paste path 故障:

  • 异常恰好发生在粘贴图片之后
  • 在任何模型调用成功或失败之前,composer 就已经被 data:image/...;base64,... 灌满
  • 普通文本提问仍然可以正常发送
  • 文件附件或非粘贴路径的表现,和剪贴板图片粘贴明显不同

这种顺序更该先怀疑 Control UI 输入链路,而不是模型不稳定、provider 拒绝,或 token 限额本身。

修完图片粘贴膨胀问题后,最该先核对什么?

别只看到“输入框干净了”就算完工。

无论是补丁还是 workaround,落地后最好立刻核对:

  1. 再次粘贴图片时,不会再把原始 base64 文本直接塞进 composer
  2. 预期的附件路径仍然可用,或者 UI 至少会干净地拒绝粘贴,而不是污染草稿
  3. 普通文本发送行为与修复前保持一致
  4. 发送失败后的草稿恢复,仍然能保住正确的文本和附件状态
  5. 这次 workaround 没有悄悄把编译产物里的其他发送路径一起带坏

最后一项很关键,因为这个问题本来就卡在 send 与 restore 的边界上,表面 UI 补丁很容易顺手制造更深层回归。

修补粘贴路径前的证据清单

不要一上来就把它归类成普通 composer bug。先补够证据,把剪贴板处理、附件路由、草稿恢复三层分开:

  1. 剪贴板来源:记录图片来自截图工具、浏览器复制、本地文件预览,还是另一个聊天应用。
  2. payload 形态:确认 composer 里出现的是可见的 data:image/...;base64 长文本、附件对象,还是两者同时出现。
  3. 草稿恢复边界:测试发送失败、刷新或重试后,是否会再次插入同一段污染 payload。
  4. 安装包版本:带上 Control UI bundle 或 OpenClaw 版本,因为安装版 UI 修复可能落后于源码。
  5. 安全复现素材:准备一张不含隐私的小图,方便 reviewer 复现,不要依赖私人截图。

这份清单能让高意图运维快速证明问题到底在 paste interception、upload conversion,还是 composer state recovery。

如果你是从 troubleshooting 流量进来,先分清粘贴污染、模型失败和上传失败

这篇现在和 setup、troubleshooting、其他运维 bug 页出现在同一组 GA4 线索里。读者大概率只知道“图片输入坏了”,但还没确认问题发生在上传、composer 粘贴处理,还是后面的模型调用。

改 UI 代码或 provider 配置前,先按三类分流:

  1. 图片从未变成文件或预览:先查浏览器权限、上传大小限制、存储和上传 API,base64 灌入 composer 可能不是第一故障点。
  2. 输入框被巨大 data:image/...base64 字符串填满:立刻停止提交,保留 payload 大小和浏览器路径,再按本文的绕过方案处理。
  3. 图片预览正常,但模型调用失败:转去 provider key 或模型能力排障,不要先补粘贴路径。

这能让从泛排障搜索进来的高意图用户,避免修错层,把 UI 粘贴污染和后端模型失败分开处理。

从搜索进来后的 3 分钟判断:剪贴板、上传,还是草稿恢复

如果你是通过 data:image base64 composer、paste image huge text 或“粘贴截图后输入框爆炸”搜到这里,先不要改 provider 或重启 gateway。用 3 分钟定位是哪一层在污染输入:

  1. 只在剪贴板粘贴时发生:优先查 paste event interception、clipboard MIME 类型和图片到附件的转换逻辑。
  2. 拖拽或文件选择也失败:把排障面转向 upload API、文件大小限制、存储权限或附件状态,而不是只修 paste handler。
  3. 发送失败后污染又回来:重点查 draft restore、composer state serialization 和 retry path,避免补丁只挡住第一次粘贴。
  4. 只有安装版 UI 复现,源码环境不复现:记录 bundle 版本和构建时间,确认是不是 packaged UI 落后于源码修复。

这个分流能把高意图图片输入流量更快导向正确修复点:剪贴板入口、上传链路、草稿恢复,或安装包版本差异。

Sources

如果你是从中文首页或迁移/安装页跳过来的

GA4 现在把这篇图片粘贴问题页放进中文入口的小流量簇里。先确认你遇到的是 Control UI 粘贴图片导致 composer 被大段 base64 文本污染,而不是安装、迁移或 CLI 运行慢。

  • 页面能打开,但粘贴截图后输入框瞬间塞满长文本:继续留在本页,优先收集浏览器、图片大小、粘贴路径和是否经过剪贴板压缩。
  • 刚装完 OpenClaw,Web UI 或 Gateway 还没跑通:回到 Mac 安装指南 或 安装成功检查清单,不要把安装失败当成粘贴 bug。
  • 从 Moltbot 迁移后路径、命令或旧配置混乱:先看 1 分钟迁移指南,再回来复现图片粘贴。

这个分流能减少误报:安装/迁移问题先排掉,真正的 Control UI 图片粘贴污染才留在本页处理。

© 2025 OpenClawNews.org
保留所有权利。
这是一个独立的资讯网站。与 OpenClaw 官方没有任何关联、认可或连接。OpenClaw 是其各自所有者的商标。
加入等候名单:

OC NEWS