前言¶
在 DeepSeek Harness(DSH)裏和智能體多輪對話時,常見問題是一條用戶消息發出去才發現措辭不對,或者希望從某一輪重新試一條不同的提示。DSH 的對話歷史是隻追加的,不能像普通聊天軟件那樣原地改記錄。社區插件 dsh-message-edit(維護者 haroon0x,分類爲工作流)的做法是:在每條已發送的用戶消息上方提供 Edit,通過在該時間點分叉會話,把修改後的文本作爲新分支的第一條提示再發出去,語義上接近 Claude Code 的消息編輯,而不改寫原會話後續內容。
這是什麼¶
dsh-message-edit 是面向 DSH Web UI 的插件包(Host + Client 兩半),在 DeepSeek Harness 中爲你已發送的用戶消息增加編輯入口。點擊後在內聯編輯器裏改字,再 Save & branch 即可分叉併發送;原會話及該消息之後的記錄保持不變。源碼與說明見 GitHub:haroon0x/dsh-message-edit,社區目錄頁爲 skillhub.cn 條目。許可證爲 MIT;package.json 中版本爲 1.1.0。
核心功能¶
消息編輯與分支¶
插件在每個已發送的用戶消息上方增加 Edit。打開內聯編輯器後,按 Save & branch 會依次:
- 在該消息對應事件的前一刻分叉會話;
- 打開得到的分支;
- 將編輯後的文本作爲分支的第一條提示發送。
原會話及其後所有輪次不受影響。分叉會生成新會話,而不是在原歷史裏就地改寫。
文件回滾(v2)¶
僅分叉對話不會自動恢復磁盤上的文件:被原輪次改過的文件可能仍留在工作區。若被編輯的消息是會話的最後一輪用戶輸入,v2 提供可選項 「Also revert the N files this turn changed」:按 DSH 工作區變更記錄器爲該輪保存的快照,把本輪改過的文件恢復到輪次開始時的內容,並刪除本輪新建的文件。
回滾有安全約束:僅當文件當前內容與記錄的輪次結束狀態一致時才恢復;之後又被改過的文件會跳過,避免覆蓋。二進制與過大文件會跳過。更早的用戶消息(非最後一輪)只能分支,不提供回滾選項。
運行要求¶
- 使用 DSH Web 配置(
dsh web);插件爲 Web bundle。 - 可與任意 provider 路由配合使用,插件本身不持有 API 密鑰。
安裝與啓用¶
在本地已有該倉庫目錄的前提下,通過 DSH 插件管理器安裝 bundle,刷新 Web 頁面後,在已發送用戶消息上方應能看到 Edit:
install_bundle → /path/to/dsh-message-edit
README 說明:該包名已在 npm 預留,發佈後可用 @haroon0x/dsh-message-edit 作爲安裝 spec 替代本地目錄路徑。卸載時,在插件管理器中禁用或移除 @haroon0x/dsh-message-edit bundle。
安裝前建議自行閱讀倉庫源碼與 MIT 許可證;插件隨當前 DSH 進程權限運行,應對其行爲有基本瞭解。
典型用法¶
- 在 DSH Web 中正常對話,直到需要修改某條已經發出的用戶消息。
- 在該消息上方點擊 Edit,在內聯編輯器中修改文本。
- 點擊 Save & branch,等待新分支打開並以編輯後的內容爲首輪提示繼續。
- 若編輯的是最後一輪用戶消息,且希望撤銷該輪對文件的副作用,在保存時勾選回滾選項(界面文案爲 revert the N files this turn changed),再確認分支。
純文本消息會進入分支;附件不會帶到分支中。
適用場景與注意¶
適合:需要從歷史某一輪用戶輸入重新試提示、又不想丟掉原會話軌跡的 DSH Web 用戶;最後一輪發錯指令且希望連同工作區文件一起「重來」時,可配合 v2 回滾(在記錄器覆蓋範圍內)。
限制(以 README 爲準):
- 僅支持文本消息向分支傳遞,附件不攜帶。
- 分叉產生新會話,不原地重寫歷史。
- 回滾依賴 workspace-changes 記錄器捕獲的變更;git 外的 shell 改動、二進制或過大文件、Host 重啓之前的輪次等不在覆蓋範圍內。
DSH 生態強調「一切皆插件」;skillhub.cn 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-message-edit 把「改已發消息」落實爲會話分叉加可選文件回滾,與 DSH 只追加的歷史模型一致。若要安裝或跟進 issue,可使用目錄頁 https://www.skillhub.cn/plugins/haroon0x/dsh-message-edit 與倉庫 https://github.com/haroon0x/dsh-message-edit。