在开发基于 DeepSeek Harness (DSH) 的智能体时,处理多模态请求常遇到图片 Payload 过大、重复图片堆积、以及保留策略不清晰的问题。虽然 DSH 0.1.0-rc.8 提供了基础的附件准入和移除机制,但开发者往往需要更精细的控制,例如在发送前压缩图片、按内容去重、优先保留特定图片,并监控图片处理状态。dsh-media-guard 插件正是为此设计,它在每次代理循环模型调用前,对提供者绑定的图片视图进行优化、保留策略执行和可观测性上报。
插件定位与核心功能¶
dsh-media-guard 是一个为 DSH 提供图片优化、智能保留和可观测性的插件。它运行在 llm/stream 流水线上,仅作用于代理循环构建的请求。插件不会修改持久化的会话日志和原始附件,而是通过 DSH 的不可变附件存储添加压缩后的变体。
核心功能包括:
- 智能压缩与去重:在每次模型调用前优化图片视图。插件会将过大的图片压缩为 WebP 格式,并根据内容地址(content address)对图片进行去重。
- 保留策略:优先保留当前轮次的媒体和用户媒体,随后才是工具媒体。
- 溢出处理:对于仍然无法放入预算的媒体,插件会将其替换为确定的“证据笔记”,包含哈希、大小、尺寸、来源和原因,而非编造的描述。
- 运行模式:默认运行在
protect模式下。支持配置observe(仅盘点和报告)和optimize(压缩但不外溢)模式。 - 可观测性:通过报告 UI 和事件发射,提供图片处理的监控能力。
安装与启用¶
插件通过官方命令安装。安装后需重启配置文件。
dsh plugin --profile <name> add dsh-media-guard
安装后,插件会自动在 DSH 首页的状态条中插入一行 media-guard 状态。
环境要求:
插件需要 Node.js 版本 ^22.19.0 或 >=24.0.0。
配置说明¶
在配置文件的 cordis.patch.yml 中,通过 id: media-guard 行进行配置。
基础配置¶
- id: media-guard
config:
mode: protect # observe | optimize | protect
log: false # true 打印每一步投影的摘要
budget:
maxMediaBlocks: 8
maxSerializedMediaBytes: 2097152
maxDecodedMediaBytes: 1572864
maxSerializedBytesPerImage: 524288
adapterMaxRequestImageBytes: 20971520 # 镜像适配器的设置(rc.8 默认为 20MiB)
profiles: # 针对不同路由覆盖预算
my-vision-gateway:
maxSerializedMediaBytes: 12582912
maxDecodedMediaBytes: 9437184
adapterMaxRequestImageBytes: 12582912
statusPollIntervalMs: 2000 # 状态刷新间隔
配置项说明¶
- mode:
protect:压缩图片,并将溢出媒体外泄(默认)。observe:仅盘点并报告图片状态。optimize:压缩图片但不外泄溢出媒体。
- budget:全局默认预算限制。
maxSerializedMediaBytes指序列化后的 Base64 字节数上限。 - profiles:针对特定路由(provider route)的预算覆盖。该配置优先级高于顶层
budget。 - adapterMaxRequestImageBytes:镜像对应适配器的请求图片字节数上限。DSH 0.1.0-rc.8 的官方适配器默认限制为 20 MiB。此值用于告诉插件当前适配器的安全上限,以便插件在该限制内进行优化,避免双重清理。
- enabled:设为
false可完全绕过插件。
注意事项¶
- 与 DSH rc.8 的关系:DSH 0.1.0-rc.8 已经提供了基础的附件准入和
offloadRequestImages功能来限制 Base64 payload。dsh-media-guard的定位是优化、保留策略和可观测性层,而非填补安全缺失。 - 数据完整性:原始附件和持久化会话日志不会被修改,压缩后的变体是新增的。
- 适配器行为:在
observe和optimize模式下,超预算的图片会被保留,以便官方适配器(如 Pi AI 或 DeepSeek 适配器)执行其自身的 oldest-first 移除逻辑。只有在protect模式下,插件才会确保最终的图片选择符合预算限制。 - 许可证:MIT 许可证。
该插件为 DSH 开发者提供了更精细的图片管理能力,适合需要处理大量图片、对图片大小敏感或需要严格保留策略的场景。