前言¶
在 DeepSeek Harness(dsh)中,輸入框草稿的丟失、跨會話/跨工作區切換時的上下文中斷,以及無法顯式指定本輪要調用的插件,是常見的體驗痛點。現有做法要麼依賴瀏覽器本地存儲,要麼需要在會話間手動複製粘貼,難以做到無感恢復與精確控制。
dsh-composer-draft-cache 是一個輸入框增強插件,提供草稿緩存與 @插件提及兩個能力。它基於 dsh 的擴展接口實現,不依賴 dsh Client 包,僅使用公開的 slot、remote、locale 等 API,通過內存 + sessionStorage 存儲草稿,在頁面刷新時保留,關閉窗口時清除。
插件定位與維護¶
- 名稱:dsh-composer-draft-cache
- 維護者:CatLollipop
- 分類:記憶
- 許可證:MIT
- 倉庫:https://github.com/CatLollipop/dsh-composer-draft-cache
核心功能¶
草稿緩存¶
- 作用域:
- 工作區的新會話(blank Session):以 workspace 爲 key 存儲
- 已創建的歷史會話:以 Session id 爲 key 存儲
- 機制:
- 在
conversation.input.dock註冊一個渲染null的插槽,無視覺干擾 - 使用內存 map + sessionStorage 副本(鍵前綴
dsh.composer-draft-cache.v1:,格式workspace:<path>或session:<id>) - 頁面刷新時恢復,關閉應用窗口時清空
- 不會恢復的內容:
- 已發送或已手動清空的草稿
- 草稿中包含的引用/命令 chip(恢復爲純文本)
- 附件和圖片
- 性能:
- 通過原始選擇器讀取 composer 狀態(draft、附件數、提交階段),使用
Object.is比較,避免無關 store 發佈觸發重渲染 - 無定時器、無 DOM 寫入、無每渲染分配
@插件提及¶
- 觸發方式:
- 在輸入框中輸入
@,在原有文件與會話之外,新增“Plugins”分組 - 手工輸入
@plugin:<package name>也可觸發 - 顯示與選擇:
- 僅列出已安裝的社區插件(Loader 可見、有 Host 行的包),不列出核心
@deepseek-ai/*行 - 選中後插入原子引用
@[Title](dsh-plugin:<package name>),渲染爲@ Title - Agent 上下文:
- 在
agent/pre-step階段,Host 端從已接受的用戶消息中收集提及 - 將插件元數據(標題、包名、Loader entry id、描述)作爲有界上下文注入系統提示,明確告知用戶指定使用該插件,並禁止虛構能力
- 未知或已禁用的包會被報告而非猜測
- 渲染:
- 已發送消息在聊天中顯示爲緊湊的內聯 chip,而非原始 Markdown
- 提及在當前輪次有效,後續輪次若無提及則清除
安裝與啓用¶
- 將插件目錄放置到本地任意位置(例如工作區文件夾)。
- 通過插件管理器將其安裝爲配置包,或使用
plugin_manager工具:
plugin_manager action=install_bundle target=<絕對路徑>
- 刷新 Web 界面,檢查註冊:
-composer-draft-cache應出現在conversation.input.dock
-plugin應出現在conversation.user.text.node
典型用法¶
- 草稿恢復:
1. 在某個工作區的“新會話”輸入框中輸入內容(不發送)。
2. 切換到其他工作區或關閉輸入框。
3. 再次打開該工作區的“新會話”,草稿內容自動填回。
4. 在歷史會話中同樣適用:切換離開再返回,會話草稿自動恢復。 - 發送/清空不恢復:
- 發送或清空草稿後,該草稿不再出現,直到關閉應用。
- 插件提及:
1. 在輸入框輸入@,在彈出的菜單中選擇一個已安裝的社區插件。
2. 繼續輸入任務描述,Agent 會在本輪收到該插件的元數據作爲顯式上下文。
3. 也可直接手工輸入@plugin:<package name>觸發。
適用場景與注意¶
- 適合需要頻繁切換工作區或會話,希望草稿不丟失的開發者與 Agent 使用者。
- 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與許可證(MIT)。
- 注意草稿恢復的限制:引用/命令 chip 變爲純文本、附件/圖片不恢復、關閉窗口即清空緩存。
結尾¶
dsh-composer-draft-cache 通過草稿緩存與 @插件提及,緩解輸入中斷與插件調用不明確的問題。更多詳情與源碼見:
- 技能庫目錄:https://www.skillhub.cn/plugins/CatLollipop/dsh-composer-draft-cache
- GitHub 倉庫:https://github.com/CatLollipop/dsh-composer-draft-cache