dsh-live-side-chat:主會話旁的只讀實時側欄對話

前言

在 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,側欄結論不進入主會話。

典型用法

  1. 在左側選中一個主會話(側欄對話綁定當前打開的主會話)。
  2. 打開右側 sidebar,在 guide 頁選 Side chat,或在 composer 輸入 /btw。
  3. 標籤頁以空對話打開,上方爲 live 狀態條;在右側提問。側欄每步重讀 digest,細節用 side_chat_main_status / side_chat_main_history 覈實。
  4. 展開 Background digest 可查看模型讀到的完整注入塊。
  5. 需要交回主會話時,直接說明(例如要求「告訴主會話這個結論」)。
  6. 關閉標籤 → 確認 → 側欄會話銷燬。

工作原理可概括爲:主會話每個 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。

羽毛球分组比赛记分
小程序二维码

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

小夜