前言¶
在 DeepSeek Harness(DSH)里跑带 Claude 的智能体会话时,每一轮都会把完整对话历史连同其中的图片一并发给 Anthropic Messages API。截图类任务(Android/iOS 模拟器、浏览器自动化等)会在历史里堆积大量 base64 图片;请求体一旦超过接口上限,就会固定报错 HTTP 413 request_too_large,会话无法继续。
Anthropic 对 Messages 请求体的上限是 32 MB。README 中举过一例:1280×2856 的截图约 34 张时,单次请求约 38 MB。下面介绍社区插件 dsh-anthropic-request-size-guard(维护者 noahchalifour,GitHub 分类相关于模型推理),如何在 host 侧自动缩小超限请求,避免会话卡死。
这是什么¶
dsh-anthropic-request-size-guard 是 DSH 的 host 插件:包装发往 api.anthropic.com/v1/messages 的 fetch 调用。请求体在预算内(默认 30 MB)时原样透传;超过预算则按固定、可复现的步骤缩小体积,并尽量保持每轮重发历史的字节一致,以利于 prompt cache 命中。
仓库:noahchalifour/dsh-anthropic-request-size-guard
社区目录:skillhub.cn 插件页(独立站点,与 DeepSeek / 幻方无官方从属关系)
核心功能¶
插件针对的典型错误如下(摘自 README):
claude API error (HTTP 413): { "error": { "type": "request_too_large",
"message": "Request exceeds the maximum size" } }
README 说明:DSH 每轮重发整段对话;手机尺寸 PNG 经 base64 后大约每张约 1.33 MB,几十张截图即可触顶。
缩小策略按「成本最低优先」、且步骤确定并可按内容哈希缓存:
- 将大图重编码为 JPEG,长边从 1568px 起(Anthropic 侧也会约缩到该量级);若仍超限,再逐步降到 1280、1024、768、512。README 称上述 38 MB 案例在第一步可降到约 6.1 MB。
- 若仍不够,每次用短文本占位替换最旧的五张图片,直到请求 fit。
- 最后手段:截断体积最大的旧文本块(不截断最新一条消息)。
图片重编码依赖 sharp;README 写明 DSH 已自带,无需额外安装该依赖。
安装与启用¶
在 profile 为 desktop 的环境下,使用 README 给出的命令安装:
dsh plugin --profile desktop add github:noahchalifour/dsh-anthropic-request-size-guard
安装后重启 DSH。插件以当前 DSH 进程权限运行;安装前建议在 GitHub 阅读源码与 LICENSE(MIT,package.json 版本 0.1.0,要求 Node >=22)。
配置¶
可在 profile 的 cordis.patch.yml 中覆盖默认项(字段与示例均来自 README):
- id: anthropic-request-size-guard
config:
maxBytes: 30000000 # body budget in bytes (API limit is 32 MB)
hosts: [api.anthropic.com]
minImageBytes: 65536 # images smaller than this are never re-encoded
dropChunk: 5 # oldest images dropped per step when needed
maxBytes 默认 30 MB,略低于 API 硬限 32 MB,为编码与 JSON 开销留余量。
适用场景与注意¶
适合谁: 在 DSH 中长时间使用 Claude、且会话历史含大量截图(移动模拟器、浏览器 agent 等)的开发者;已出现或担心 HTTP 413 request_too_large 的场景。
局限(README Limitation): 若请求经 subscriptions-plugin 的 HTTP 代理转发,会使用 undici 自带的 fetch,不经过本插件包装,缩小逻辑不会生效。
开发与自测: 仓库提供 npm test(node --test test/*.test.js),供维护者或贡献者在本地验证 shrink 逻辑。
结尾¶
dsh-anthropic-request-size-guard 把「整段历史 + base64 截图」导致的 Claude 413 问题放在 host 层处理:先 JPEG 重编码,再按需丢弃最旧图片占位,最后才动旧文本,并在预算内保持透传与缓存友好行为。
- 目录页:https://www.skillhub.cn/plugins/noahchalifour/dsh-anthropic-request-size-guard
- GitHub:https://github.com/noahchalifour/dsh-anthropic-request-size-guard