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 提供了一種精細化的方式來管理會話上下文中的圖片,避免因附件氾濫導致的性能損耗和上下文丟失。更多細節與源碼可參考項目主頁。

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

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

小夜