dsh-plugin-edit-regenerate:修改歷史中的用戶消息並重新生成

前言

在 DSH 的會話流程裏,用戶消息一旦發出,後續內容通常會繼續追加到會話日誌中。對於需要修正提示詞、重新基於同一上下文生成回覆的場景,直接編輯歷史消息並重新生成會更方便。

dsh-plugin-edit-regenerate 是一個 DSH 插件,用來處理這個流程:在用戶消息下確認修改,丟棄該消息之後的內容,並從修改後的提示重新生成。

這是什麼

dsh-plugin-edit-regenerate 的定位是:在 DSH 會話歷史中編輯一條用戶消息,並基於修改後的提示重新生成後續回覆。

它適合需要在對話中途修正用戶提示,而不是從頭新建會話的場景。插件以 fork 的方式完成“編輯後重新生成”,原會話保持不改動。

該插件使用 MIT 許可證。倉庫地址爲:

https://github.com/ExploringBB/dsh-edit-regenerate

本次資料中未明確聲明維護者信息,只給出了上述倉庫地址。

核心功能

下面介紹已覈實的能力。

  1. 在用戶消息下提供 “✎ Edit” 編輯入口。
  2. 確認修改後,丟棄該消息之後的內容,並從修改後的提示重新生成。
  3. 非首條消息:在上一輪結束處分叉出新的子會話。
  4. 首條消息:在同一工作區創建空白新會話,並以修改後的文本作爲開場提示。
  5. 保留用戶消息原有的 “⧉ 複製” 動作,與編輯按鈕並存。
  6. 註冊 Cordis 服務 editRegenerate,並在瀏覽器端覆蓋 user 消息渲染器。

需要注意,附件不會被保留。帶附件的消息在修改後會以純文本重發。

安裝與啓用

安裝按 DSH profile 區分。desktopweb 相互獨立,安裝到其中一個 profile 不會影響另一個。

如果使用的是 DSH Desktop,安裝到 desktop profile:

dsh plugin --profile desktop add file:./dsh-plugin-edit-regenerate

如果使用的是 official launcher / CLI,也就是 dsh web,安裝到 web profile:

dsh plugin --profile web add file:./dsh-plugin-edit-regenerate

也可以手動安裝。做法是:

  1. dsh-plugin-edit-regenerate 加入 dsh.profile.bundles
  2. 在該 profile 的 package.jsondependencies 中加入 file:<absolute path>
  3. 在該 profile 目錄下運行 pnpm install

安裝或更新後,需要重啓 DSH 才生效。

如果後續更新了插件源碼,已經安裝到 profile 中的 file: 依賴副本可能不會自動更新。需要刷新該副本,或者在對應 profile 目錄中運行:

pnpm install --force

完成刷新或更新後,再次重啓 DSH。

典型用法

下面是文檔中的基本用法。

  1. 安裝插件並重啓 DSH。
  2. 在會話中找到要修改的用戶消息。
  3. 點擊用戶氣泡下的 “✎ Edit”。
  4. 確認修改。
  5. 插件會丟棄該消息之後的內容,並從修改後的提示重新生成。

如果修改的是非首條用戶消息,插件會在上一輪結束處分叉出新的子會話,原會話保持不改動。

如果修改的是首條用戶消息,插件會在同一工作區創建空白新會話,並以修改後的文本作爲開場提示。

用戶消息上仍會保留原有的 “⧉ 複製” 動作,和 “✎ Edit” 並存。

適用場景與注意

這個插件適合希望在既有會話中修正用戶提示,並基於修正後的提示重新生成回覆的使用者。它不改變原會話,而是通過 fork 生成新的會話路徑。

使用時需要特別注意以下幾點:

  1. 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
  2. 帶附件的消息在修改後會以純文本重發,附件不會被保留。
  3. DSH 的會話存儲爲 append-only,不能原地截斷,插件通過 fork 實現編輯後重新生成。
  4. desktopweb 兩個 profile 相互獨立,需要按實際運行方式分別安裝。
  5. 更改配置、安裝或更新後,需要重啓 DSH 才生效。
  6. 更新源碼後,已安裝 profile 中的 file: 依賴副本可能不會自動更新,需要刷新副本或運行 pnpm install --force

如果 forked 會話在重啓 DSH 後加載失敗,可先停止 DSH,再運行:

node scripts/repair-session-logs.mjs

結尾

dsh-plugin-edit-regenerate 解決的是一個很具體的問題:在 DSH 會話中修改已經發出的用戶消息,並基於修改後的提示重新生成後續內容。它通過 fork 會話避免直接改動原會話,同時保留用戶消息上的複製動作,適合作爲日常開發中的提示修正工具。

GitHub 倉庫:

https://github.com/ExploringBB/dsh-edit-regenerate

本次資料中未提供已覈實的社區目錄頁地址。

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

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

小夜