前言¶
在 DeepSeek Harness(DSH)里带图对话时,常见两类限制:一类是总像素预算(宽 × 高),另一类是单张图某一边不能超过固定像素。Anthropic Messages API 在「一次请求里超过 20 张图」时,若任一张图任一边超过 2000 px,会直接返回 400。DSH 自带的 requestImagePixelBudget 只压总像素,长条截图、竖版全页截图往往在像素预算内仍触边长上限;会话每轮会重发整段历史,一旦历史里图片超过 20 张且有一张超边,后续每一轮乃至 /compact 都可能卡死。
下面介绍社区插件 dsh-image-edge-cap(维护者 mrbeandev),在「模型推理」场景下,对你选定的 provider 或 model 发出的请求图片做最长边封顶,默认 2000 px,并自带 Settings → Image size 配置页。
这是什么¶
dsh-image-edge-cap 是 DSH 社区插件:对所选 provider / model 发往模型的图片,在保持宽高比的前提下缩小最长边(默认 2000 px)。只改模型请求里送出的副本,不改动本地附件存储与会话日志;未选中的 provider / model 请求与未装插件时一致。
- 源码:github.com/mrbeandev/dsh-image-edge-cap
- npm:npmjs.com/package/dsh-image-edge-cap
- 目录页:skillhub.cn/plugins/mrbeandev/dsh-image-edge-cap
- 许可证:MIT(README / package.json)
- 当前 npm 包版本(package.json):
0.1.0
DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与运行方式遵循 DSH「一切皆插件」的用法,本文事实以仓库 README 为准。
支持的 DSH 与 Node 版本¶
安装前用 dsh --version 核对主机版本。
DSH 支持范围:0.2.0-rc.1 起至(不含)0.3.0。
| DSH 版本 | 说明 |
|---|---|
0.2.0-rc.1、0.2.0-rc.2 |
README 标注已测试 |
0.2.1-alpha.1 |
集成测试通过,加载时可能有 untested 警告 |
| 上述区间内其他版本 | 未测试,加载时警告 |
低于 0.2.0-rc.1(0.1.x) |
不支持:无 route-chosen 请求图目标 |
0.3.0 及更新(含预发布) |
默认拒绝加载,可用 allowUntestedHarness: true 覆盖 |
Node.js: ^22.19.0 或 >=24.0.0。
插件无运行时依赖,不依赖其他社区插件。版本不匹配时启动会明确报错且不会半加载;此时 Settings 里会提示 host 插件未运行。
核心功能¶
最长边封顶,而非总像素¶
缩小时保持宽高比。例如 README 中的对比:390×2475 的竖版截图在 1.15 MP 像素预算下可能不变,但 Anthropic 多图规则仍判超 2000 px;设为最长边 2000 后会变为 315×2000,会话可继续。
按 provider / model 粒度生效¶
每个已注册的 model provider 可单独设模式:
| 模式 | 效果 |
|---|---|
| Off(默认) | 该 provider 不做任何改动 |
| All models | 该 provider 下全部 model 封顶 |
| Selected models | 勾选列表中的 model 才封顶,同 provider 未选中的 model 不变 |
Max edge 可调 16–16384 px,默认 2000;点 Apply 后从下一次请求起生效(含恢复会话、子 agent、重试),无需重启 DSH。
只动请求路径上的读图¶
机制概要(README):
- 监听
llm/stream,按provider/model匹配规则;不匹配则原样透传。 - 匹配时在
AsyncLocalStorage中带入 cap,覆盖 adapter 读图过程。 - 包装
attachments服务的readImageRequest,在 cap 作用域内降低目标尺寸;实际缩放与缓存仍由 attachment store 完成,插件不含图像处理代码。 - 不会放大图片,也不会取消 DSH 已有的像素或字节预算;已从请求中 offload 的图片不处理。
进程日志中每张被 cap 的图会记一条,例如:dsh-image-edge-cap: capped a request image 390×2475 → 315×2000 (max edge 2000)。
安装与启用¶
Web profile 从 npm 安装:
dsh plugin --profile web add dsh-image-edge-cap
当前工作告一段落后再停掉正在跑的 DSH Web 进程,重新启动(例如 dsh web --no-open --port 3080),刷新页面。打开 Settings → Image size,为需要的 provider / model 选择模式并设置 Max edge。
从本地目录安装(目录需保持不动,profile 会链接到该路径):
dsh plugin --profile web add "/absolute/path/to/dsh-image-edge-cap"
卸载:
dsh plugin --profile web remove dsh-image-edge-cap
也可把某个 provider 设为 Off,其下一次请求即恢复为未封顶行为。
典型用法¶
路由 provider 同时提供 Claude 与 GPT: 对该 provider 选 Selected models,只勾选 Claude 系列 model,Max edge 设为 2000;其余 model 仍送原尺寸图片。
规则保存在 profile patch(cordis.patch.yml)里该插件条目下,也可手改:
- id: dsh-image-edge-cap
name: dsh-image-edge-cap
config:
providers:
my-router:
mode: selected # off | all | selected
models: [cc/claude-a, cc/claude-b]
maxImageEdge: 2000
配置项(插件条目 config)中,providers 下每个 provider 含 mode、models(selected 时)、maxImageEdge 等字段,与 Settings 页一致。
适用场景与注意¶
适合谁: 经常用 Claude / Anthropic 等多图 vision 接口、会话历史图片多、且素材里常有超长边截图(尤其竖版全页)的 DSH Web 用户;需要在「总像素预算」之外单独遵守「最长边 2000 px」类限制时。
兼容性说明(README): 插件可逆地包装 attachment store 的一个方法,并非 DSH 官方扩展 API;版本门控会在内部 API 变化时拒绝加载而非静默出错。在 DSH 0.2 上,经 readImageRequest 准备请求图的 adapter(含 pi-ai 与 native DeepSeek adapter)会受影响;设为 Off 的 provider 不受影响。
安全与信任: 插件以当前 DSH 进程的权限运行,会介入发往模型的图片数据路径。安装前应阅读 源码 与 MIT 许可证,并确认 DSH、Node 版本在支持范围内。
结尾¶
dsh-image-edge-cap 在选定 provider / model 上对请求图片做最长边限制(默认 2000 px),配合独立 Image size 设置页,用来缓解 Anthropic 多图边长限制与 DSH 总像素预算之间的缝隙,避免长会话因一张超长边截图整体失败。
- 目录页:https://www.skillhub.cn/plugins/mrbeandev/dsh-image-edge-cap
- GitHub:https://github.com/mrbeandev/dsh-image-edge-cap