“同一个会话里截了十几张图,突然所有请求都返回 413 了……”

“前几次截图好好的,截到第 28 张就彻底卡死,会话直接废了……”

“更崩溃的是,截图保存在会话文件里,删又删不掉,整个会话只能废弃……”

如果你在用 OpenClaw 做网页自动化、爬虫调试或浏览器操作,你一定遇到过这种“截图撑爆会话”的问题。一个含 28 张截图的会话文件能膨胀到 5.33MB,其中图片数据占了 3.52MB(约 88%)。当这些图片数据随每次 API 请求一起发送时,超过接口大小限制,就会触发 413 Payload Too Large,整个会话彻底瘫痪。

今天这篇文章,就从 413 错误的根源出发,拆解 OpenClaw 内置的压缩与清理机制,并给出从升级到配置的一站式解决方案。读完这篇,你就能让截图数据不再“压垮”会话。

一、先弄懂:为什么截图多了会报 413?

1.1 会话文件里的“隐形胖子”

OpenClaw 的每个会话都会保存完整的对话逐字稿(transcript)。当你使用 browser 工具截图或调用 camera 快照功能时,图片会以 Base64 格式直接存入会话文件

一张截图 Base64 编码后通常是 100KB-300KB。存 10 张就是 1-3MB,存 28 张就是 3.5MB+。每次与大模型 API 交互时,整个会话文件都会被当作上下文发送出去。一旦超过 API 的大小限制(不同服务商阈值不同,常见为 4MB-10MB),就会返回 413 错误,且该会话无法再使用

1.2 413 错误的核心成因

成因 说明
图片 Base64 占满会话 截图越多、分辨率越高,会话文件越大
旧版本无自动清理 v2026.2.x 之前的版本不会自动压缩图片数据
API 大小限制 大模型接口对单次请求有 Payload 上限

好消息是:OpenClaw 在 v2026.2.x 之后 已经通过 PR #5817 修复了这个问题。如果你还在用旧版本,升级并触发一次压缩就能立刻恢复。

二、核心解决方案:三步搞定 413 错误

第一步:立即恢复(会话已报 413)

如果你的会话已经卡死在 413 错误,不要废弃会话,执行一条命令即可恢复:

/compact

这会触发 OpenClaw 的上下文压缩(Compaction)机制。修复后的版本会在压缩时自动保留最近 3 条含图片的消息,更早的图片会被替换为文本占位符:

[Image omitted during compaction: image/jpeg, ~150KB]

会话文件体积会瞬间从 5MB+ 降到几百 KB,会话立即恢复可用。

第二步:升级到最新版本(防患于未然)

旧版本(v2026.2.x 之前)不会自动清理历史图片数据,每次截图都会永久累积。升级后,每次压缩都会自动清理旧图片,让会话体积持续保持健康。

# 检查当前版本
openclaw --version

# 升级到最新版本
npm update -g @openclaw/openclaw

# 升级后确认版本
openclaw --version   # 应显示 v2026.3.28 或更高

第三步:配置自动压缩策略

升级后,建议在 config.yamlopenclaw.json 中配置主动压缩阈值,避免上下文在撑满后才压缩(撑满后每次请求都会很慢):

{
  "agents": {
    "defaults": {
      "compaction": {
        "triggerAtPercent": 75,                    // 上下文使用率达75%时自动压缩
        "model": "claude-haiku-4-5-20251001"       // 用轻量模型执行压缩,节省主模型 token
      },
      "params": {
        "max_tokens": 4096                         // 按实际需要设置,避免单次生成过长
      }
    }
  }
}

关键原则:压缩触发阈值设为 75-80%,用轻量模型(如 Haiku)执行压缩任务,避免主模型 token 浪费。

三、进阶:会话修剪与自动清理机制

除了主动 /compact,OpenClaw 还内置了会话修剪(Session Pruning)机制,能在每次 LLM 调用前自动裁剪旧的工具结果(包括历史截图数据)。

3.1 修剪的工作原理

机制 作用
软修剪 对过大的工具结果,保留开头和结尾,中间插入 ...
硬清除 将非核心内容替换为占位符
图片清理 在重播视图中,将已处理的旧图片替换为 [image data removed - already processed by model]

修剪不会重写原始会话逐字稿,只影响后续请求中发送给模型的内容,因此历史查看器仍能看到原始记录,但 API 请求不再携带海量图片数据。

3.2 修剪 vs 压缩

对比维度 修剪(Pruning) 压缩(Compaction)
处理内容 裁剪工具结果(如图片数据) 用 AI 摘要整个对话
是否持久化 否(每次请求独立处理) 是(摘要写入会话逐字稿)
覆盖范围 仅工具输出 整个对话

两者相辅相成:修剪让工具输出保持精炼,压缩让对话摘要保持精简。

四、日常预防建议

除了升级和配置压缩策略,日常使用中注意以下几点,可以大幅降低 413 复现概率:

  1. 周期性执行 /compact:尤其是截图密集的任务,建议每 10-20 张截图手动触发一次压缩

  2. 控制截图分辨率:在采集指令中明确要求“低分辨率截图”或“仅截取可见区域”

  3. 定期清理无效会话:不需要的历史会话直接删除,避免磁盘和内存占用

  4. 监控会话文件大小:周期性检查 ~/.openclaw/workspace/sessions/ 目录,超过 2MB 的会话主动处理

五、站大爷隧道代理的配合

在解决 413 错误的过程中,站大爷隧道代理虽然不直接修复图片膨胀问题,但能提供稳定的网络环境,让升级、压缩操作不受代理波动干扰。

环境变量配置法(最稳)

# Mac/Linux
export HTTP_PROXY="http://隧道ID:密码@tps.zdaye.com:8080"
export HTTPS_PROXY="http://隧道ID:密码@tps.zdaye.com:8080"
openclaw gateway start
# Windows PowerShell
$env:HTTP_PROXY="http://隧道ID:密码@tps.zdaye.com:8080"
$env:HTTPS_PROXY="http://隧道ID:密码@tps.zdaye.com:8080"
openclaw gateway start

站大爷隧道代理 24 小时连接成功率 99.3%,故障自愈 <30 秒。稳定的网络环境让压缩、升级操作不会因为代理中断而失败。

总结

413 Payload Too Large 的核心病因是截图 Base64 数据在会话文件中无限累积,导致 API 请求超限。

解决方案三件套

  1. 立即恢复/compact 一键压缩,自动保留最近 3 张截图,清理历史图片数据

  2. 版本升级:升级到 v2026.3.28 或更高,获得自动清理能力

  3. 主动防御:配置 compaction.triggerAtPercent: 75,让系统在会话撑满前主动压缩

截图再多,只要会压缩,会话就不会“撑死”。配合站大爷隧道代理的稳定网络环境,你的 OpenClaw 采集任务就能告别 413 的困扰。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐