dsh-user-resend:在 DSH Chat 裏重發用戶消息

前言

在 DeepSeek Harness(DSH)裏做 Agent 對話時,常見情況是:用戶消息已經出現在會話裏,但模型沒有繼續輸出——例如 Harness 重啓、進程中斷,或某次請求失敗。消息還在,重新打字、重新拖圖片、重新寫 @ 文件路徑既費時,也容易和上下文對不齊。

官方輸入框可以發新消息,卻沒有針對「某一條歷史用戶消息」的一鍵重發。社區插件 dsh-user-resend(維護者 yrui-ql)在用戶消息上增加「重新發送」,走與輸入框相同的提交鏈路,把文本、圖片附件和 @ 文件提及一併再發一次,讓 Agent 繼續回答。

這是什麼

dsh-user-resend 是 DSH 的客戶端插件:在 Chat 裏給用戶角色的消息加 Resend / 重新發送 動作。它不改動會話存儲邏輯,Host 側幾乎是空殼,能力在瀏覽器端完成。

SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,安裝第三方 bundle 前建議自行閱讀源碼與許可證。插件以當前 DSH 進程權限運行。

核心功能

下面介紹插件在界面上做什麼,以及重發時包含哪些內容。事實均來自倉庫 README。

用戶消息上的動作行

懸停(或按 DSH 默認規則顯示)用戶消息時,右側動作行與官方風格一致:時間 · 複製 · 重新發送。

重發時重建的內容

  1. 文本:按原順序保留;@path 或 @"path with spaces" 形式的文件提及作爲普通提示文本原樣發送。
  2. 圖片附件:從會話附件存儲讀回,重新編碼後隨消息發送,多張圖片保持原順序。
  3. 發送鏈路:與輸入框相同——先 session.beginSubmission 登記本地回顯,再帶 requestId 調用 session.prompt;失敗時撤回回顯,避免留下孤兒排隊項。

點擊後按鈕進入「正在重新發送…」;Host 接受後,對話裏會出現一條新的用戶消息(含圖片),AI 開始回答。中英文文案跟隨 DSH 語言設置。

回合空閒時才發送

會話正在運行時(session.running === true),點擊重發只會提示「回合進行中,等它結束再重發」,不會把消息塞進宿主排隊區。README 說明:排隊副本沒有本地回顯,可能與相鄰消息合併或被丟棄;0.2.1 修復的正是這類問題。若要在運行中插入內容,應使用輸入框的官方排隊/打斷語義。

發送失敗時的反饋

會話不可用、圖片讀取失敗、連接失敗等情況下,按鈕變紅並提示「重新發送失敗」,約 2.5 秒後恢復。

限制(使用前必讀)

  • 回合運行中不支持重發:只能等待當前回合結束。
  • 通用文件附件暫不重發:拖入的非圖片文件在會話裏多爲持久附件引用(模型通過只讀路徑讀取),客戶端沒有將其重新變成發送回執(receipt)的接口;文本和圖片仍會發送。
  • 斜槓命令(如 /goal)不經過命令解析器,會作爲普通文本發送;需要命令語義時請用輸入框。
  • 歷史不會被原地改寫:重發會在會話裏追加新用戶消息,與官方「發送」一致;不會創建分支。從某條消息另開分支請用助手消息尾部的官方「分支」動作。
  • 實現耦合:插件以 priority: -1 覆蓋官方 conversation.chat.node 的 user 渲染器(仍調用官方內容工廠)。DSH 升級後若渲染器簽名變化,需要同步本插件。

安裝與啓用

安裝步驟以 README 爲準:先克隆倉庫,再在 DSH 會話裏通過插件管理器安裝本地 bundle。

git clone https://github.com/yrui-ql/dsh-user-resend.git

然後在 DSH 會話中通過插件管理器安裝(plugin_manager 的 install_bundle,target 指向克隆目錄的絕對路徑)。安裝後插件以普通 bundle 出現在 設置 → 插件 中。

卸載:在 設置 → 插件 中禁用或移除 dsh-user-resend 即可;插件不寫會話數據或配置文件。

開發校驗(可選,要求 Node.js 22+,僅用於清單自檢):

npm test   # node test/manifest.test.mjs

典型用法

  1. 在 DSH Chat 中正常發送一條用戶消息(可含文本、圖片、@ 文件路徑)。
  2. 若因重啓、中斷或請求失敗導致 AI 未繼續輸出,將鼠標移到該條用戶消息上。
  3. 點擊 重新發送(Resend),等待按鈕從「正在重新發送…」完成;確認會話空閒後再點(若正在運行會先被提示等待)。
  4. 對話中出現新的用戶消息副本,Agent 按常規則繼續回答,無需重新輸入。

適用場景

適合經常在本地或遠程跑 DSH Chat、且容易遇到進程重啓或單次請求失敗的長會話開發者。不適合依賴「運行中排隊重發同一條用戶消息」的工作流——該場景應直接用輸入框。

結尾

dsh-user-resend 解決的是「用戶消息還在、模型沒接上」時的補發問題:一條按鈕、標準 composer 路徑、文本與圖片及 @ 提及一併帶上。安裝前請覈對源碼與 MIT 許可證,並留意 DSH 版本與 user 渲染器兼容性。

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

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

小夜