dsh-image-governor:DeepSeek Harness 会话图片载荷治理插件

前言

在使用 DeepSeek Harness 进行多轮会话开发时,会话上下文中的图片附件往往会不断累积:工具产出的截图、Agent 读取的界面、早期轮次粘贴的文件等。这些图片会在每一步请求中被重新上传。实测数据显示,一个会话携带 13 张附件(约 14.7 MB base64),在 0.07–0.10 MB/s 的上行速率下,仅此一项每步就要消耗 100–140 秒,极易触发网关超时(约 150 秒)。

现有的路由级解决方案是设置 maxRequestImageBytes 上限。但这是一种基于字节的“字节预算”策略,通常只会保留最新的图片。这会导致一个尴尬的结果:真正依赖的原始参考图被隐藏,而最新生成的产物却可见。

dsh-image-governor 插件将选择权交还给开发者,允许你针对单个会话,明确指定保留哪些图片,将不需要的移出模型视野。

插件定位

  • 名称:dsh-image-governor
  • 定位:Session image payload governor(会话图片载荷治理器)。
  • 功能:审计会话当前携带的图片,允许手动筛选并移除多余图片,仅改变模型视野,不删除实际附件。
  • 维护者:2432450223
  • 许可证:MIT

核心功能

交互界面

  • Picker 浮层:在右下角提供整屏浮层(shell.overlay),列出所有携带图片的会话。同一面板也会注册在会话标题旁。
  • 操作方式:面板打开时默认不勾选任何图片。复选框是操作对象,支持预设逻辑(保留最新、模型不可见、全选、清空)。
  • 撤销机制:每次写入变更后,面板会提供撤销入口。

命令行工具

  • 查看状态:/images status。显示历史图片大小、实际发送载荷、以及被上限规则隐藏的图片。
  • 移出图片:/images clear [keep <seq|name|id> …] [--newest N] [--yes]。
    • 支持通过序号、文件名或 ID 指定保留项。
    • --newest N 用于快速保留最近 N 张。
    • 不加 --yes 时仅预览,不加参数则清空。
  • 恢复图片:/images restore [--yes]。将之前移出的图片重新放回视野。

安装与启用

该插件为纯 JavaScript,无构建步骤。安装命令如下:

dsh plugin --profile web add github:2432450223/dsh-image-governor

典型用法

  1. 确认当前图片载荷:
    在会话中输入:
    /images status
查看当前有多少张图片,以及它们占用的带宽。
  1. 清理不需要的图片:
    如果不需要某几张,勾选它们并执行:
    /images clear
系统会弹出预览,确认无误后加上 `--yes` 强制执行:
    /images clear --yes
  1. 恢复误删的图片:
    如果发现误删,立即执行:
    /images restore --yes

技术细节与限制

  • 实现原理:插件不修改已冻结的出站请求。它利用会话格式允许的 surface-replacing 协议,追加位置替换操作({ op: 'replace', start, end }),将图片块替换为文本占位符。原始图片事件仍保留在 append-only 日志中,因此恢复功能成立。
  • 文件操作:插件不删除任何附件。附件服务本身不提供删除操作,且该插件也不写入附件服务。
  • 执行时机:写入操作仅在会话处于空闲状态时执行。当 Agent 正在运行回合时,写入请求会被拒绝。
  • 依赖情况:零依赖,纯 JavaScript。通过 ctx.get 读取服务,缺省服务仅降级而不阻塞启动。
  • 权限注意:该插件运行在 DSH 进程权限范围内。安装前请务必检查源码与许可证(MIT)。

结尾

dsh-image-governor 提供了一种精细化的方式来管理会话上下文中的图片,避免因附件泛滥导致的性能损耗和上下文丢失。更多细节与源码可参考项目主页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜