dsh-sidechat:DSH 右側臨時側邊聊天與隱藏主對話上下文

前言

在 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 / 幻方無官方從屬關係。

核心功能

臨時側欄對話

  1. 點擊 header 裏 「側邊聊天」(位於 Standard mode 右側):創建新的空白會話(同工作區、隨機 id,不復用舊 blank),不是 fork 主對話,面板初始爲空。
  2. 右欄出現對應 tab,內容爲空白英雄頁與獨立輸入框;不調用 openSession,主欄當前選中的會話保持不變。
  3. 可多次點擊,每次一個新 tab、新會話,多個側邊聊天可並存。
  4. 關閉 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

典型用法

  1. 在主對話中繼續你的主任務;需要旁路追問時,點 header 「側邊聊天」,右欄出現臨時 tab。
  2. 在側欄輸入問題併發送;左側會話列表會出現該 Session 行,但主欄 dsh.sessions.current 不變。
  3. 若已裝 dsh-selection-chat:在主對話選中文本 → 浮條 「側邊提問」 → 側欄草稿出現形如 引用 會話記錄 > … 的內容,確認後自行發送。
  4. 問完關閉側欄 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
羽毛球分组比赛记分
小程序二维码

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

小夜