前言¶
在 DeepSeek Harness(DSH)裏用主會話做長任務時,常會想「順便問一句進度對不對」,又不想打斷主線程、複製整段歷史,或再開一個會改文件的平行會話。主會話繼續跑工具、寫代碼;側欄裏開一個臨時空對話,通過有界摘要跟着主會話走,問完關掉即銷燬——這是 dsh-live-side-chat 要解決的問題。它不是主會話的分叉拷貝,子會話從空開始,靠插件維護的 sideChatDigest 投影在每步重讀主會話進展。
這是什麼¶
dsh-live-side-chat(GitHub:XBXyftx/dsh-live-side-chat)是 DSH 的客戶端類插件,維護者爲 XBXyftx。定位是 Codex 風格的側欄對話:在右側打開一個臨時、只讀的子會話,綁定當前左側選中的主會話,關閉標籤頁並確認後銷燬(agent 釋放、會話目錄刪除)。子會話不出現在左側會話列表,主會話照常工作;需要把結論交回主會話時,通過排隊 follow-up 回傳,而非搶佔主會話。
核心功能¶
空啓動與 live digest¶
子會話創建時不帶 seed、不帶歷史,標籤頁是真正的空對話;可在主會話任意時刻打開,不必等主會話跑完一輪。
主會話信息來自插件自己的 sideChatDigest 會話投影:目標、已結算輪次摘要、進行中的輪次、todos、近期工具調用、計數等,有界裁剪。每步作爲 runtime context 重新注入,因此側欄打開之後主會話上的工作仍可見;摘要故意不完整,模型應通過只讀工具覈對細節。
只讀沙箱¶
側會話運行在 sandbox/mode: read-only,審批固定爲 never,並對會改狀態的工具做 guard:拒絕 write/edit 等寫文件工具、持久 shell(terminal)、後臺任務,並檢查參數以拒絕 run_in_background 與 sandbox_permissions 升級。一次性 shell 查詢(如 ls、git log)在沙箱已拒寫的前提下可允許;run_code 在 PTC 預設下僅暴露對應傳輸時可用。只讀指無文件副作用;網絡與進程壽命不受同一 seam 約束,若只要插件自帶只讀工具,可在配置裏關閉 shell 查詢。
界面與入口¶
| 能力 | 說明 |
|---|---|
| 側欄入口 | 右側 guide 頁增加「Side chat」 |
/btw |
在 composer 中打開側欄對話 |
| 狀態條 | 主會話標題、運行/空閒點、輪次、todos、最新工具、相對活動時間、進行中輪次的 prompt |
| Background digest | 可展開,展示模型實際讀到的 digest 塊 |
| 空問候卡片 | 標明所連主會話,並提供三條快捷問題 |
| Composer | 底部錨定,複用主會話 composer 樣式;只讀 pill + 34px 圓形發送 |
| 模型 chip | 顯示下一 turn 將用的模型,可切換 Host 路由的全部模型(按 provider 分組);僅影響側會話下一 turn |
只讀工具與回傳主會話¶
side_chat_main_status:最新 digest + 運行/空閒狀態side_chat_main_history:按turn/contains過濾的主會話日誌,有界side_chat_report:將結果排隊進主會話(可在設置中關閉)
關閉標籤頁會彈出「Close this side chat?」,可選「Don’t ask again」;取消則重新打開標籤。銷燬時會 dispose agent 並刪除該會話 JSONL 目錄,經 persistence seam 校驗成功。
安裝與啓用¶
官方安裝命令(來自倉庫 README):
dsh plugin add dsh-live-side-chat
本地開發時可用 checkout 路徑(示例路徑以你本機爲準):
dsh plugin add /absolute/path/to/dsh-side-chat
安裝後刷新 Web 頁面;插件卡片出現在 Settings → Plugins。package.json 標明需 Node >=22.19.0、DSH >=0.2.1-rc.2 <0.3.0,許可證 MIT,當前資料中版本爲 0.4.4。
插件行配置可在 profile 或 cordis.patch.yml 中覆蓋 side-chat 行,常用字段如下:
| 字段 | 默認 | 含義 |
|---|---|---|
readOnly |
true |
側會話強制只讀沙箱 |
allowShellQueries |
true |
是否允許一次性 bash/pwsh 查詢 |
allowReportToMain |
true(volatile) |
是否允許 side_chat_report;側欄設置面板可改 |
liveContext |
true |
每步注入主會話 digest;關則主要靠按需 status 工具 |
digestTurns |
12(4–60) |
digest 保留的已結算主會話輪數 |
historyEventLimit |
40(5–200) |
單次 history 讀取的最大日誌行數 |
preset |
"" |
側會話 agent preset;空則繼承主會話 |
sessionsRoot |
"" |
僅用於銷燬時的會話存儲根;空爲 $DSH_HOME/sessions |
右側面板 Side chat 中還有:Allow messages to the main session(默認開),關閉後拒絕 side_chat_report,側欄結論不進入主會話。
典型用法¶
- 在左側選中一個主會話(側欄對話綁定當前打開的主會話)。
- 打開右側 sidebar,在 guide 頁選 Side chat,或在 composer 輸入
/btw。 - 標籤頁以空對話打開,上方爲 live 狀態條;在右側提問。側欄每步重讀 digest,細節用
side_chat_main_status/side_chat_main_history覈實。 - 展開 Background digest 可查看模型讀到的完整注入塊。
- 需要交回主會話時,直接說明(例如要求「告訴主會話這個結論」)。
- 關閉標籤 → 確認 → 側欄會話銷燬。
工作原理可概括爲:主會話每個 committed event 經有界增量 fold 得到 sideChatDigest;同一投影供側欄模型 runtime context、Host 控制流推送到瀏覽器狀態條,以及重啓恢復使用。
適用場景與注意¶
適合:長任務中並行做「進度確認」「結論複覈」「只讀查主會話歷史」而不打斷主 agent;需要臨時第二視角、且不希望側欄改倉庫或開持久 terminal 的場景。
注意:
- 插件以當前 DSH 進程權限運行;安裝前請自行查看源碼與 MIT 許可證,確認組織策略允許。
- 側欄不是主會話 fork,不會複製完整聊天日誌;依賴 partial digest + 只讀工具,複雜事實應顯式查 history。
- 關閉即銷燬,未通過
side_chat_report(或等效請求)交回的內容不會自動進入主會話。 - DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-live-side-chat 在主會話右側提供空啓動、只讀、隨主會話 live 更新的側欄對話,關閉即清理,必要時可將結論排隊回主會話。目錄頁:https://www.skillhub.cn/plugins/XBXyftx/dsh-live-side-chat;源碼與完整說明:https://github.com/XBXyftx/dsh-live-side-chat。