前言¶
用 DeepSeek Harness(下文簡稱 DSH)跑長任務時,常見的情況是:主對話正在改代碼、跑命令,你臨時想問一個不相關的問題,或者讓另一個會話去查一個文件。直接開新會話,上下文要重新鋪一遍;把問題塞進主對話,又會打斷當前任務的節奏。
dsh-side-chat 針對的就是這個場景:在主對話旁邊並排打開一個側聊,兩邊都是完整的 DSH 會話,互不打斷。按 DSH「一切皆插件」的思路,它以 Web 插件的形式加載,不改動 DSH 本體。
這是什麼¶
dsh-side-chat 是由 KarlOfLaw 維護的 DSH 插件,MIT 許可,當前版本 1.2.0,badge 顯示測試 24 passing。
一句話定位:在 DSH 主對話旁邊,打開一個真正獨立、原生、理解上下文的並行對話。
它不是浮在主對話上方的臨時面板,也不是手寫的聊天界面。第一次打開時,插件通過 DSH 的 agents.create/resume 創建一個帶 parentSession 的真實 Session,並立即歸檔,所以不會出現在 workspace 左側會話列表裏。側聊有自己的 transcript,與主會話相互獨立,但共享同一個 workspace。
核心能力¶
下面按使用時的關注點列出主要能力,均來自插件的 README 與包信息。
- 真實獨立會話:通過 DSH
agents.create/resume創建或恢復帶parentSession的 Session,不佔用 subagent routing。 - 完整原生 UI:左右兩欄都渲染完整的
ConversationRoot,消息、工具、審批、附件、輸入框、模型和權限控件仍由 DSH 提供;空白側聊在發送第一條消息之前就顯示原生 header 和輸入框。 - 按需理解主對話:插件不復制主 transcript。側聊需要背景時,通過
side_chat_context按需檢索有界、相關的父會話片段。 - 真正並排:只增加一個最小 split shell,分隔條可拖拽,聚焦後可用方向鍵微調,按住 Shift 加速;側聊佔比限制在 25%–70%。
- 不污染會話列表:新側聊立即歸檔,不出現在 workspace 左側列表中。
- 選文即問:在主消息中選中文字後可「引用到側聊」,引用可預覽、可刪除,不會在原生輸入框中殘留
@或隱藏文本;引用只在發送時加入該次側聊請求。 - 可隱藏、可恢復、可刪除:隱藏只收起面板,保留後可恢復;關閉時可選擇安全刪除。
- 原生模式與模型:新側聊默認標準模式,可選 PTC、極簡或創造模式。
- 會話隔離:每個主會話維護自己的側聊狀態,切換主會話不會串用另一條側聊。
- 兼容 Better Sidebar:兩種右側並行面板自動互斥,並對齊 header 控件。
host 側只增加側聊需要的生命週期與上下文能力,結構如下:
主 Session
└─ archived side Session (parentSession=主 Session)
├─ 原生 DSH Agent / preset / tools / approvals
├─ 獨立 transcript,共享 workspace
└─ side_chat_context → 按需讀取父會話的相關上下文
client 側保留 DSH 已註冊的原生 conversation component,插件沒有自己的消息 renderer 和輸入實現;split shell 只負責佈局、分隔條和生命週期入口。
安裝與啓用¶
要求 Node.js 22 或更高版本,以及能夠加載 Web 插件的 DSH。
先下載插件包(優先從 GitHub Releases 獲取,也可用倉庫內 release/ 目錄),然後執行安裝命令:
# 從 GitHub Release 下載後:
dsh plugin --profile web add .\dsh-side-chat-1.2.0.tgz
# 或使用倉庫內副本:
dsh plugin --profile web add .\release\dsh-side-chat-1.2.0.tgz
安裝完成後,從希望 Agent 操作的工程目錄啓動 DSH,打開輸出的網址,插件會自動加載到 Web 客戶端:
cd D:\path\to\your-project
dsh web --port 3080
插件可以在 DSH 設置的「側邊聊天」頁面啓用或停用,同一頁面也能選擇新側聊默認使用的原生 Agent 模式。
後續更新與卸載使用以下命令,更新後需要重啓 DSH Web:
# 更新
dsh plugin --profile web update dsh-side-chat
# 卸載
dsh plugin --profile web remove dsh-side-chat
典型用法¶
經過上面的安裝步驟,插件已經加載到 Web 客戶端。下面是一次完整的並排使用流程:
- 打開主會話,點擊 header 中的消息氣泡+圖標,側聊立即出現,無需先發送第一條消息;隱藏與關閉按鈕位於原生 header 右上角。
- 在側聊中像普通 DSH 會話一樣選擇模型、輸入消息、使用附件、工具和審批流程。
- 拖動中間分隔線調整兩欄比例;聚焦分隔線後可用方向鍵微調,按住 Shift 可加速調整,側聊佔比限制在 25%–70%。
- 在主消息中選中文字,點擊「引用到側聊」,輸入框上方會顯示可預覽、可刪除的引用提示;輸入框草稿本身保持爲空,引用只在發送時加入側聊請求。
- 點擊側聊 header 的面板圖標可隱藏面板;之後從主 header 的消息氣泡圖標恢復同一個側聊。
- 點擊關閉按鈕後,可選擇「保留對話」或「刪除並關閉」。
選擇「保留對話」的側聊,下次打開時會恢復最近保留的那一條,而不是重新創建空會話。
適用場景與注意事項¶
適合的場景:主會話在跑長任務時需要並行提問、讓另一個會話查資料或改文件,又不想打斷當前節奏;或者想在不出現在會話列表裏的情況下做一次隔離的小實驗。
使用前需要了解的邊界:
- 主會話與側聊共享同一個 workspace。側聊中的文件修改、命令執行、審批等副作用是真實的;隱藏、保留或關閉面板不會撤銷這些操作。
- 側聊按需讀取的是有界的父會話上下文,不保證包含主會話全部歷史細節。
- 單次選文引用最多保留 8,000 個字符,超出的部分會被截斷。
- 當前選文入口主要針對鼠標選擇;移動端長按選文和觸摸操作條尚未做專門優化。
- 完整會話渲染依賴 DSH
SessionProvider的 BindingContext seam;若上游移除該 seam,插件會顯式報錯,不會退回自定義聊天界面。 - 安全徹底刪除依賴 JSONL 會話存儲和正式本地插件包提供的刪除能力;不支持時會保留數據並返回明確錯誤。
- 和其他 DSH 插件一樣,插件以當前 dsh 進程的權限運行。安裝前建議閱讀倉庫源碼和 LICENSE(MIT),確認符合自己的安全要求再裝進環境。
小結¶
dsh-side-chat 做的事情不復雜:把「並行對話」從一個浮層或手寫界面,落到一個歸檔的、帶 parentSession 的真實 DSH Session 上,UI 和能力全部複用 DSH 原生組件,主對話與側聊通過有界上下文按需互通。如果你經常需要在主任務旁邊並行提問,值得一試。
- GitHub:https://github.com/KarlOfLaw/dsh-side-chat
- 社區插件目錄:https://www.skillhub.cn/plugins/KarlOfLaw/dsh-side-chat (目錄爲社區獨立站點,與 DeepSeek / 幻方無官方從屬關係,收錄信息來自插件線索)