消息編輯(dsh-message-pencil):同會話內改寫已發送用戶消息

前言

在 DeepSeek Harness(DSH)裏跑 Agent 時,常見情況是:某條用戶消息打錯字、漏了約束,或想換一種問法,但後面已經多輪對話和工具調用。若只能新開會話,早期上下文要手動搬,側欄也會多出一堆分支。部分社區插件採用「分支會話」或「只改最後一條」等語義,與 Codex 一類產品裏「改本條、截斷其後、在同一 conversation 裏重生成」的體驗並不相同。

下面介紹維護者 Stxr 發佈的 消息編輯(GitHub:Stxr/dsh-message-pencil),分類爲工作流,面向 DSH 0.2.2-rc.1,當前插件版本 1.1.3(MIT)。它在不改變會話 ID 的前提下,編輯已發送的用戶消息,保留該條之前的對話,丟棄該條及之後內容,再按新正文(與原附件)重新生成。

這是什麼

消息編輯 爲 DSH 提供 Codex 風格的「已發送用戶消息編輯」:更早的消息保留;被編輯的消息及其後的全部輪次從聊天視圖和模型上下文中移除,隨後提交修改後的正文並重新生成。界面在生成結束後,於用戶消息懸浮操作區在「複製」右側顯示鉛筆;不提供編輯助手回覆、不提供增刪附件(當前版本僅編輯正文,已有圖片與文件附件自動保留)。

生態上,DSH 走「一切皆插件」路線;SkillHub 目錄頁 等社區站點用於發現插件,與 DeepSeek / 幻方無官方從屬關係。安裝前請自行查看倉庫源碼與許可證,插件以當前 DSH 進程的權限運行。

核心功能

界面編輯

  1. 將鼠標移到目標用戶消息上,在「複製」右側點擊鉛筆(僅在本輪生成完全結束後出現;提交排隊或任務執行期間不渲染)。
  2. 原氣泡切換爲簡潔編輯框,保留正文、已有附件,以及「取消 / 發送」。
  3. 編輯後點「發送」,或 Cmd/Ctrl+Enter 提交;Enter 換行;Esc 或「取消」放棄。中文輸入法選詞時的回車不會誤提交。
  4. 第一條用戶消息也可編輯。即使文字未改、直接再次發送,仍會截斷後續對話並重新生成。

提交後:同一 sessionId;目標消息之前的對話保留;目標消息及之後從視圖與模型輸入中移除,再按新正文和原附件生成。不創建分支、不在側欄保留舊會話副本。未保存草稿僅留在當前頁,切換會話或刷新會丟失。此操作不會撤銷已執行的文件修改、命令或外部副作用。

自動化:/message-edit 與 edit_sent_message

  • UI 支持 /message-edit 命令。
  • Host 註冊 edit_sent_message 工具,與界面走同一套邏輯並記錄相同命令結果:
  • list:返回最近 20 條可編輯用戶消息;beforeSeq 向前分頁。
  • edit:須在另一空閒會話指定 sessionId,並提供完整原文以校驗是否過期;Agent 當前會話須在回覆結束後通過鉛筆編輯。
  • 成功返回原 sessionId、editedSeq、markerSeq 及截斷範圍。若截斷後重發失敗,返回 historyChanged: true、accepted 與錯誤信息。工具列表中超過 4000 字符的正文會標爲 truncated,編輯時需從原始會話讀取全文。

歷史與兼容性(實現要點)

Host 使用原生 surfaceOp: replace 截斷歷史尾部,經空 developer 消息去掉對應模型輸入,再以完整用戶消息重發。修改在 Agent 空閒維護階段執行,提交新消息前先持久化截斷;請求去重避免重複點擊。聊天列表、工具過程、輪次導航與統計沿用 Chat builder 的隱藏語義;全歷史輪次導航會過濾被截斷輪次。

DSH 審計日誌爲追加式,軌跡或原始日誌仍可能看到舊記錄。停用插件會恢復原生歷史展示,但不會把已截斷內容放回模型上下文。Client 針對 0.2.2-rc.1 包裝 Chat builder factory 並裝飾輪次提綱讀取,卸載時恢復;升級 DSH 後須複驗。

安裝與啓用

DSH 不內置插件索引源,需用戶自行添加;倉庫 dsh-plugin topic 僅用於發現,不會自動出現在列表裏。

從插件索引安裝

  1. 打開「插件」,在實驗插件中啓用 Custom plugin indexes(自定義插件索引)。
  2. 進入 Discover(發現) → Add index source(添加索引源)。
  3. 粘貼索引地址,在索引中選擇「消息編輯」並確認安裝:
https://raw.githubusercontent.com/Stxr/dsh-message-pencil/main/index.json

索引將各版本固定到完整 Git commit SHA,並聲明與插件相同的 DSH 版本要求。安裝確認頁請覈對來源;索引源按 profile 保存。

直接安裝

在插件管理器「添加插件」中可輸入:

git+https://github.com/Stxr/dsh-message-pencil.git#v1.1.3

也可從 Releases 下載安裝包,解壓後安裝解壓目錄(運行包已含構建好的 Client,無需本地編譯;該目錄安裝後宜保留)。插件顯示名稱爲「消息編輯」。安裝影響當前 profile 的全部會話;升級後界面仍像舊版時可重新加載頁面(桌面端 Cmd+R)。在「已安裝」中可停用或移除。

典型用法

手工糾錯並重跑後續對話

  1. 等待當前 Agent 回覆完全結束。
  2. 移到需要修改的用戶消息,點鉛筆,改正正文(附件保持不動)。
  3. Cmd/Ctrl+Enter 或點「發送」。該條及之後消息從會話中消失,模型按新用戶消息繼續在同一對話裏生成。

Agent 側列舉可編輯消息(需在非當前忙碌會話上調用 edit,並帶完整原文防過期):

  • 通過 Host 暴露的 edit_sent_message:list 分頁查看;edit 在指定空閒 sessionId 上提交編輯(具體參數以倉庫 README 與 src/shared/protocol.ts 爲準)。

適用場景與注意

適合:需要在同一 conversation 內「改提問、丟後文、重生成」的 DSH 0.2.2-rc.1 用戶;希望交互接近 Codex 鉛筆編輯、又不想維護側欄分支副本時。

不適合或有限制:

  • 僅支持編輯用戶消息正文,不能改助手回覆,不能在本版本增刪附件。
  • 生成或排隊期間無鉛筆;依賴宿主私有兼容接口,DSH 大版本變更後需重新驗收。
  • 不撤回磁盤上的文件改動或已執行命令;審計軌跡可能仍保留舊輪次記錄。
  • 與同形態社區的其它方案(如分支語義、只回填最後一條、DOM 補丁類插件)目標不同;0.2.2-rc.1 上可參考 README「參考方案」一節對照選型。

安裝與運行前請閱讀 GitHub 倉庫 源碼、engines.dsh 聲明及 MIT 許可證;插件能力受當前 Harness 進程權限約束。

結尾

消息編輯 把「截斷其後、同會話重生成」落到 DSH 的工作流裏:界面鉛筆、命令 /message-edit 與 edit_sent_message 共用一套截斷與重發邏輯,並明確不保留側欄舊分支。若你正在 0.2.2-rc.1 上調試 Agent 提示詞或多輪工具鏈,值得一試。

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

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

小夜