前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在實際開發與調試會話時,一旦用戶消息發出且 AI 完成回覆,若發現之前的提問需要修正,通常只能通過發送新消息或重啓會話來處理,這會打斷上下文的連貫性。dsh-message-rewrite 插件通過引入 Codex 風格的消息編輯機制,允許用戶在會話過程中直接修改歷史消息,並在同一會話內觸發 AI 重新生成後續回覆,從而保持對話流的完整性。
插件概覽¶
這是一個運行在 DSH 客戶端(桌面 App / Web)上的插件,利用 DSH 的 profile 插件體系與 Cordis 框架實現功能。插件支持消息原地編輯、浮層編輯器、編輯鏈、中間消息自動 fork 以及虛擬滾動兼容。
- 名稱: dsh-message-rewrite
- 維護者: zouxiaoyang
- 許可證: MIT
核心功能¶
插件提供以下核心能力:
1. 消息原地編輯: 鼠標懸停在已發送的用戶消息行上,出現編輯入口。
2. 精緻浮層編輯器: 點擊後彈出居中的編輯卡片,支持深色/淺色主題自適應,可反覆編輯形成編輯鏈。
3. Codex 式截斷重生成: 發送修改後,舊消息及後續回覆從會話表面(surface)移除,AI 從編輯點重新生成回覆。
4. 編輯鏈: 支持對已編輯的消息繼續編輯(A → B → C),界面僅展示最終版本。
5. 中間消息自動 fork: 若編輯的是中間消息(其後還有更新的用戶消息),會自動 fork 新會話進行改寫,避免影響後續對話。
6. 虛擬滾動兼容: 通過 UUID 精確綁定消息行,確保長會話或虛擬列表複用時不錯位。
安裝與啓用¶
插件通過 profile bundle 方式安裝,需手動編輯 DSH 的配置文件。
- 創建目錄並複製文件
創建插件目錄,將必要的文件複製進去:
PLUGIN_DIR=~/.dsh/profiles/web/plugins/dsh-message-rewrite
mkdir -p "$PLUGIN_DIR"
cp index.js client.js cordis.patch.yml package.json "$PLUGIN_DIR/"
- 修改配置
編輯~/.dsh/profiles/web/package.json:- 在
dependencies中加入:
- 在
"dsh-message-rewrite": "file:./plugins/dsh-message-rewrite"
* 在 `dsh.profile.bundles` 數組中添加:
"dsh-message-rewrite"
- 重啓服務
安裝依賴並重啓 DSH 服務器(例如執行~/bin/dsh-server-restart),隨後刷新瀏覽器頁面即可生效。
使用方法¶
- 在任意會話中,將鼠標移動到一條用戶消息(自己發送的消息)上。
- 點擊消息行末尾出現的 ✎ 編輯 按鈕。
- 在彈出的編輯浮層中修改文本內容,按發送並重新生成(或快捷鍵 ⌘Enter)。
- 該消息後的舊回覆會被隱藏,新的編輯後內容氣泡和 AI 重新生成的回覆將出現在原位置。
- 若需繼續修改,再次 hover 新生成的消息氣泡,點擊「✎ 再次編輯」,形成編輯鏈。
注意事項¶
- 編輯範圍: 僅對「用戶消息」行掛載編輯按鈕,AI 的回覆行暫不支持編輯。
- 運行環境: 依賴 DSH 桌面 App 或 Web 的 profile 插件體系,非獨立 CLI 工具。
- 內核版本: 插件適配目標爲 DSH 內核版本 0.1.2-rc.1,內核 API 隨版本演進可能變化。
- 配置衝突:
cordis.patch.yml通過 bundle 通道自動加載。請勿在主cordis.patch.yml中重複 insert 本插件,否則 webserver 會因路由衝突(duplicate prefix route/dsh-rewrite)啓動崩潰。
結語¶
dsh-message-rewrite 插件爲 DSH 用戶提供了更接近 IDE 或現代 AI 客戶端的消息編輯體驗。通過保持會話的連續性和上下文的一致性,它降低了調試與對話修正的門檻。更多細節可查看社區目錄或GitHub 倉庫。