前言¶
在 DSH 裏做長對話時,常見做法是開新會話、複製粘貼上文,或把整段歷史塞進一條新消息。主欄會話會被切換,草稿也容易混在一起。Codex 一類產品則在主對話旁邊提供一個臨時側欄,專門用來「就着當前上下文再問一句」,且側欄裏不必重複展示整段主聊天記錄。
下面介紹維護者 xywen97 發佈的客戶端插件 dsh-sidechat(npm:@xywen97/dsh-sidechat):在右側欄打開一個臨時的空白對話面板,與主對話並排;模型側會自動帶上主對話最近歷史作爲隱藏系統提示,面板裏只顯示你自己的提問、回答,以及從選區帶入的引用片段。關掉側欄標籤即歸檔會話,不長期佔用會話列表。
這是什麼¶
dsh-sidechat 是 DeepSeek Harness 的客戶端插件,分類爲「客戶端」。它在會話 header 增加「側邊聊天」入口,通過資源地址 dsh-resource://sidechat/session/<id> 在右欄打開 tab,標題爲「臨時對話 · 關掉標籤頁就歸檔」。面板複用宿主的 conversation.content(variant: embedded),輸入框、工具行、@ 引用、模型選擇與主對話一致,但是獨立 Session,草稿與主欄互不影響。
插件以 MIT 許可證發佈,當前 npm 版本爲 0.1.0;package.json 聲明依賴 DSH >=0.2.1-rc.5 <0.3.0-0、Node >=20。社區目錄頁:skillhub.cn/plugins/xywen97/dsh-sidechat;源碼與說明:github.com/xywen97/dsh-sidechat。DSH 生態強調「一切皆插件」,SkillHub 目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
臨時側欄對話¶
- 點擊 header 裏 「側邊聊天」(位於
Standard mode右側):創建新的空白會話(同工作區、隨機 id,不復用舊 blank),不是 fork 主對話,面板初始爲空。 - 右欄出現對應 tab,內容爲空白英雄頁與獨立輸入框;不調用
openSession,主欄當前選中的會話保持不變。 - 可多次點擊,每次一個新 tab、新會話,多個側邊聊天可並存。
- 關閉 tab 時立即通過
workspace/archiveSession歸檔;刷新或退出應用後,仍開着的側邊會話會在下次啓動時統一清掃(localStorage 記賬,僅在頁面第一次 apply 時執行,避免 HMR 誤傷)。
隱藏主對話上下文(v0.3 行爲)¶
側邊聊天默認攜帶主對話歷史,但不在側欄聊天記錄裏展示:
- 側邊會話 id 編碼父會話 id(形如
session-sidechat-<base64url(parent)>-<rand>)。 - 宿主在
agent/created時識別該會話,對這一個 agent 註冊每會話作用域的系統提示詞段;每次組裝時重新讀取主對話最近的用戶/助手文本(跳過工具調用與結果,約 24k 字符)。 - 因此側欄裏繼續追問時,上下文會隨主對話更新;系統提示不進聊天記錄。
模型實際看到的是:主對話歷史(隱藏 system 段)+ 引用片段(若有)+ 側欄提問 + 側欄會話自身歷史。
選區帶入(需配套插件)¶
主對話中選中文字後,浮條上的 「側邊提問」 會打開側邊會話,並把引用片段寫入側欄輸入框草稿(不自動發送),對應 Codex 的 Ask in side chat。該入口由同作者插件 dsh-selection-chat 提供;只安裝 dsh-sidechat 時,仍可通過 header 的「側邊聊天」按鈕進入。
安裝與啓用¶
推薦從 npm 安裝(包名使用 scope,因 npm 上 dsh-side-chat 已被佔用):
# npm(推薦)
dsh plugin --profile desktop add @xywen97/dsh-sidechat
# 或直接釘 Git 提交
dsh plugin --profile desktop add "git+https://github.com/xywen97/dsh-sidechat.git"
也可在桌面版 設置 → 插件 → 安裝 中,將 spec 填爲 @xywen97/dsh-sidechat。
裝完後重啓一次 DSH:宿主半端負責上下文注入邏輯,重啓後纔會加載;客戶端部分可熱加載。
若需要「選中文字 → 側邊提問」,可額外安裝:
dsh plugin --profile desktop add dsh-selection-chat
典型用法¶
- 在主對話中繼續你的主任務;需要旁路追問時,點 header 「側邊聊天」,右欄出現臨時 tab。
- 在側欄輸入問題併發送;左側會話列表會出現該 Session 行,但主欄
dsh.sessions.current不變。 - 若已裝
dsh-selection-chat:在主對話選中文本 → 浮條 「側邊提問」 → 側欄草稿出現形如引用 會話記錄 > …的內容,確認後自行發送。 - 問完關閉側欄 tab,該會話歸檔並從列表消失;無需在面板內找單獨「關閉」按鈕。
適用場景與注意¶
適合:長主對話中不想切換會話、又不想把整段歷史複製到新窗口;希望側欄「乾淨 UI + 背後仍有主對話上下文」的開發者。
限制與行爲(來自 README 已知說明):
- 側邊聊天是真實 Session:tab 開着時仍會出現在左側列表;歸檔不是刪除,磁盤上可能仍有記錄(宿主無面向客戶端的刪除會話 RPC)。
- 父會話 agent 已關閉或未在線時,隱藏上下文會退化爲不帶主對話歷史。
- 無單獨鍵盤快捷鍵,入口爲 header 按鈕。
- 宿主 API(
sessions、sidebarRight、conversation.content等)變更時插件可能靜默降級(按鈕仍在,失敗僅 toast)。
安全:插件在當前 DSH 進程的權限下運行,安裝前請查看 GitHub 倉庫 源碼與 MIT 許可證,自行判斷是否適合你的環境。
結尾¶
dsh-sidechat 把「右側臨時空面板 + 主對話隱藏上下文 + 關 tab 即歸檔」收進一個客戶端插件,主欄會話與草稿保持隔離。需要選區入口時再裝 dsh-selection-chat 即可。
- 目錄頁:https://www.skillhub.cn/plugins/xywen97/dsh-sidechat
- GitHub:https://github.com/xywen97/dsh-sidechat