dsh-edit-retry:在 DSH 裏右鍵編輯並重試任意用戶消息

前言

在 DeepSeek Harness(DSH)裏做智能體對話,常見需求是:某條用戶消息發錯、想換模型或權限再跑一遍,或從中間某輪重新分支。產品自帶的分叉能力通常要從固定入口操作;若只想針對「這一條用戶氣泡」原樣重發或改字後再發,步驟往往不夠直接。

下面介紹的 dsh-edit-retry 是維護者 huangmiuXyz 發佈的 客戶端插件(分類:客戶端)。它在會話轉錄裏對任意用戶消息提供右鍵菜單,通過 DSH 已有的會話分叉路徑重試,並可選在成功後刪除原會話。插件當前版本 0.3.3(MIT),尚未發佈到 npm,需從 GitHub 源安裝。

這是什麼

dsh-edit-retry 注入 DSH Web 聊天 UI:在會話記錄中 右鍵點擊任意一條用戶消息,彈出「重試」「編輯並重試」,以及「重試後刪除原會話」開關。重試不會原地改寫日誌(DSH 持久化是追加式,原地改 surface 會導致模型與界面不一致),而是從該消息之前的合適事件點 分叉出新會話,把原文或編輯後的文本作爲新會話的第一條提示詞發出。整個過程複用 DSH 自帶「分支」的同一路徑;插件額外在分叉前把源會話 當前 composer 裏選中的模型與權限預設 顯式帶到子會話。

核心功能

右鍵菜單

菜單項 行爲
重試 原樣重發這條消息
編輯並重試 氣泡變爲編輯器(預填原文),改完再發
重試後刪除原會話 開關;勾選後,上述動作成功發出重試後刪除源會話,新會話 繼承原會話名稱

編輯器快捷鍵:回車換行,⌘/Ctrl + Enter 保存,Esc 取消。選擇菜單項後菜單關閉;進度與錯誤顯示在氣泡下方(如「正在重試…」「重試失敗:原因」等)。刪除開關狀態保存在 localStorage,勾一次會保持勾選。

分叉點與「第一條消息」

插件儘量把分叉切到 上一個已閉合 turn 的 turn/end,避免子會話在重試內容前多出一行空的「用時 N 秒」。若消息是該 turn 第一條、上一個 turn 結束時 inbox 仍有未取走提示詞、消息是 turn 中途插話(steering)、或事件窗口尚未加載完,則保持默認的 seq - 1 策略。會話 第一條用戶消息 走「新建會話」而非分叉,與 README 中的 turn 邊界說明一致。

模型與權限

  • 模型:重試使用源會話 當前 composer 模型控件所選路由(modelSelection 投影),在新會話第一條提示詞前調用宿主 session/selectModel;已與目標一致時不額外調用;取不到或路由不可用時重試仍發出,僅控制台警告。
  • 權限:重試使用源會話 當前 權限預設(permissions 投影的 currentValue),在新會話第一條提示詞前通過 /permission <預設> 切換;已是同一預設、custom、預設名含空白、或切換失敗時不強切,重試仍發出。

附件與邊界

  • 文本與圖片 可重試:圖片經源會話 readAttachment 讀回並以內聯 base64 重發;須在刪除原會話之前完成讀取。
  • 文件附件 不支持重試:宿主不接受客戶端用已存文件字節換新回執,帶文件的消息保留原生右鍵菜單。
  • 消息內鏈接、按鈕等交互元素不搶佔其右鍵菜單。
  • 空白消息的「重試」置灰;帶圖無文仍可重試。「編輯並重試」始終可用。
  • 重試產生的子會話落在與源會話相同的 Workspace 分組。
  • 界面文案隨 DSH locale 設置中英文切換。

刪除原會話(可選)

刪除默認關閉、不可逆。實現走宿主側 HTTP 路由 POST /dsh-edit-retry/session/delete(帶自定義請求頭以限制跨站調用),順序包括取消 agent、刷盤、摘內存、刪除 ~/.dsh/sessions/ 下對應日誌等。README 註明:依賴 DSH 內部結構,升級後可能部分失效;刪除後側邊欄舊條目有時需刷新頁面才消失。

安裝與啓用

插件作爲某個 profile 的普通依賴安裝,並由 dsh plugin 自動登記到該 profile 的 dsh.profile.bundles(包內聲明瞭 dsh.bundle)。

  1. 在終端執行(將 <你的 profile> 換成實際 profile 名):
dsh plugin --profile <你的 profile> add github:huangmiuXyz/dsh-edit-retry
  1. 重啓 DSH,或刷新 Web 界面。

說明:

  • 須使用 github:huangmiuXyz/dsh-edit-retry:包未上 npm,裸名 dsh-edit-retry 會 404。
  • DSH Desktop:--profile desktop 由 Electron 應用獨佔,dsh plugin 會拒絕;需在應用內插件管理入口安裝同一 GitHub 源。
  • 若 profile 的 dsh.profile.bundles 存在解析不到的 link: 等懸空條目,安裝可能在登記階段報錯但依賴已裝好;清理懸空條目後重跑,或按 README 手動編輯 package.json 的 bundles 數組。

開發時可本地鏈接:

dsh plugin --profile <你的 profile> add link:/絕對路徑/dsh-edit-retry

典型用法

  1. 在 DSH Web 客戶端打開已有會話,找到要重試的 用戶消息(含中途 steering 插入的消息,菜單相同)。
  2. 右鍵 該氣泡,視需要選擇「重試」或「編輯並重試」;若希望新會話頂替舊會話,先勾選「重試後刪除原會話」。
  3. 若選編輯:在編輯器中修改文本,用 ⌘/Ctrl + Enter 提交;需要換模型或權限時,在 分叉前 於 composer 選好,重試會按當前選項運行。
  4. 等待氣泡下方狀態完成;若勾選了刪除,確認新會話已打開且標題已繼承(若源會話曾有標題)。

入口限制: 僅右鍵;無獨立重試按鈕或雙擊,README 說明與自帶操作欄渲染位置有關。

適用場景與注意

適合: 經常在長對話中從某一用戶輪次重新實驗提示詞、模型或權限預設的 DSH 用戶;需要「改一句再跑」且希望保留 DSH 分叉語義而非手改日誌的場景。

注意:

  • 插件以 當前 DSH 進程權限 運行;可選刪除會永久移除會話日誌。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,自行評估是否滿足環境要求。
  • 刪除與會話存儲走宿主擴展實現,非 DSH 公開插件 API;升級 DSH 後關注 README 中的兼容性說明。
  • 社區插件目錄 SkillHub 條目 與 GitHub 爲獨立生態信息源,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-edit-retry 把「從某條用戶消息重試或改後再試」收成右鍵一步,並在分叉子會話上對齊當前模型、權限與分組,可選清理原會話。若你已在用 DSH 的 Web profile,可按上文命令安裝 0.3.3 版本試用。

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

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

小夜