前言¶
在 DeepSeek Harness(DSH)裏用 Web 界面工作時,常見做法是側邊欄選一個工作區,主面板只跟一條對話。要同時看多套倉庫、多路會話,往往要在工作區之間來回切換,上下文也容易錯位。
dsh-split-workspaces 把主面板改成可調整的多窗格棋盤:每個窗格綁定一個工作區,各自複用完整的 embedded 對話(記錄、輸入、流式輸出)。下面介紹它的能力邊界、怎麼用,以及和宿主、其它插件的配合方式。
這是什麼¶
dsh-split-workspaces 是維護者 liufeicc 發佈的本地 DSH 插件包(npm 包名 @local/dsh-split-workspaces,README 標註版本 1.0.0,MIT 許可證)。分類上屬於 客戶端 插件:package.json 中 dsh.client.platform 爲 web,並在客戶端注入會話、對話、側邊欄、工作區等 UI 模塊。
一句話定位:在 Harness Web UI 主面板裏,把多個工作區上下左右平鋪,一格一個完整對話;分隔條改尺寸,拖標題欄交換位置,焦點窗格用品牌色標題欄標出。
核心功能¶
進入平鋪面板¶
側邊欄在 Plugins 圖標旁增加一行「兩個平鋪格子」圖標。點擊後,主區域切換到 多工作區平鋪 面板;頂部有標題和 添加工作區(或英文 UI 下的 Add workspace),下方是窗格棋盤。
每個窗格里有什麼¶
每個窗格有獨立標題欄:工作區名與路徑、打開目錄、替換工作區、分屏、Agent 模式選擇、MCP / SKILL 開關(按工作區策略)、切換會話、關閉等。
窗格內部掛載共享的 conversation.content Factory(embedded 變體),並包在顯式 SessionProvider 下,因此每格都是完整對話,而不是隻讀預覽。
若系統註冊了額外的 conversation.view(例如裝了 Git 面板會出現「對話 / Git」),窗格對話區上方會出現視圖標籤欄;每格獨立選擇,默認對話。Trajectory(軌跡)只在主對話提供,平鋪窗格不列出。 沒有額外視圖插件時標籤欄不渲染,行爲與改造前一致。
平鋪與佈局¶
- 添加工作區:新窗格總是接到整塊棋盤的最右側;下拉列出尚未鋪開的工作區,也可用文件夾選擇器 新建工作區。
- 分屏(兩步菜單):先在標題欄選方向(左 / 右 / 上 / 下),再選要放進新窗格的工作區(或新建)。方向本身不會立刻分屏,也不會給當前工作區再開一格——目的是攤開不同工作區。例如「上排兩格並排、下排一格」可先對 A 向下分並選 C,再對 A 向右分並選 B。
- 拖動分隔條:按佈局方向調整比例;雙擊恢復均分;聚焦分隔條後方向鍵微調(Shift 加大步長)。比例按容器百分比保存,窗口縮放後比例不變。
- 拖標題欄交換位置:按住標題欄(避開內部按鈕與菜單)拖到另一窗格上鬆手才交換;交換的是位置,各格的工作區、會話、預選 Agent 模式隨格一起走。
- Alt+方向鍵:在棋盤內把焦點移到該方向上最近的窗格,並把光標送進輸入框;快捷鍵登記在 設置 → 快捷鍵,不可再分配給其它命令。
替換工作區與打開目錄¶
替換工作區(每格標題欄一個圖標):只換這一格綁定的工作區,佈局樹與分隔比例不變。菜單形狀與 添加工作區 相同;已在棋盤上的工作區不會出現在候選裏(要對調兩格請拖標題欄)。
打開目錄:把這一格的工作區目錄交給系統文件管理器。實現上覆用已安裝的 @deepseek-ai/dsh-api-session-controller:canOpenWorkspacePath() 判斷部署能否把路徑交給桌面,openWorkspacePath({ path }) 校驗並打開。無圖形環境、路徑不可達等情況會在該窗格錯誤行給出本地化說明。
會話與刪除¶
切換會話 下拉每一行自帶刪除按鈕,刪除的是該行會話,不必是當前顯示會話。確認與停會話等邏輯交給 dsh-session-delete 提供的 sessionDeleteUi(本插件點擊時惰性 ctx.get)。未安裝該插件時按鈕仍在,錯誤行會說明刪除服務不可用。刪除成功後,所有釘住該會話的窗格會鬆手並按規則回退或進入空態。
保存佈局¶
右上角 保存佈局 把當前棋盤(分屏方向、比例、順序、焦點)、每格會話與 Agent 預設、任務分派圖(邊與說明)、面板模式寫入瀏覽器 localStorage。頁面重載後第一次進入平鋪面板時恢復;同頁內切換面板不覆蓋實時佈局。缺失的工作區、會話等會靜默丟棄;旁側垃圾桶僅清除保存記錄。模型按會話由 DSH 持久化,恢復會話即恢復當時的模型。
設計模式與任務分派¶
面板可在 平鋪模式 與 任務分派(設計) 間切換。設計模式把每個會話畫成卡片,用有向箭頭表示委派關係(樹結構:禁止成環,每個會話最多一個上級)。箭頭持久化在 Host 的 ~/.dsh/storages/pane_dispatch_bindings.json。授權後上遊會話獲得作用域版 dispatch_task 工具,可向目標會話派任務並按 wait 策略等待結果。點卡片會回到平鋪並聚焦顯示該會話的窗格。
Host 側還提供批處理、重定向、等待子任務等配套能力(見倉庫 README「設計模式」專節與 dispatch_task 參數表)。
安裝與啓用¶
本次覈對使用的 GitHub README(中英文)未給出形如 dsh plugin add … 的獨立一行安裝命令。請以社區目錄頁爲準查閱維護者發佈的安裝方式:
- 目錄頁:https://www.skillhub.cn/plugins/liufeicc/dsh-split-workspaces
- 源碼:https://github.com/liufeicc/dsh-split-workspaces
SkillHub 爲 DSH 社區插件目錄站點,與 DeepSeek / 幻方無官方從屬關係;安裝前請自行閱讀源碼與 MIT 許可證,確認插件將以當前 dsh 進程權限在本地運行。
README 中的 本地開發 說明:在 profile 裏用 link: 指向插件目錄;dsh-client-hmr 約每 500ms 輪詢入口 client.js 以熱重載瀏覽器端。若同時安裝 dsh-dev-hmr,保存 index.js 或 host.*.js 可熱重載 Host 插件;僅當 package.json 依賴變更或新增包時才需重啓 dsh web。修改 client.*.js 後需 touch client.js 以刷新入口版本戳:
touch client.js
啓用後,在 Harness Web UI 側邊欄點擊平鋪圖標即可進入多工作區面板;dsh.client.immediately 爲 true,客戶端加載時會立即注入。
典型用法¶
並排對比兩個倉庫的 Agent¶
- 點擊側邊欄平鋪圖標進入面板。
- 用 添加工作區 或第一格標題欄的 分屏 把第二個(及更多)工作區鋪到棋盤右側或上下方向。
- 在各格 切換會話 或新建會話,獨立輸入;用分隔條調整閱讀寬度。
- 需要下次打開仍保持棋盤時,點 保存佈局,再刷新頁面驗證恢復。
用 Alt+方向鍵在多格間打字¶
滿屏多窗格時,用 Alt+←/→/↑/↓ 移動焦點並直接進入目標格輸入框,無需鼠標點選。
編排跨會話委派¶
- 切換到 設計 / 任務分派模式,在卡片間拖出箭頭建立樹狀授權。
- 回到平鋪,在授權上游會話中調用
dispatch_task(參數含task、targets、wait等,見 README 表格)。 - 與 保存佈局 一併持久化的分派圖會在重載後由 Host 存儲文件恢復。
手動驗收流程見 README「本地開發」末尾清單(含 dsh web --no-open --port 0 與無頭瀏覽器探針說明)。
適用場景與注意¶
適合誰
- 需要在同一瀏覽器裏並行跟進多個工作區、多路會話的 DSH 用戶。
- 要用可視化分派圖管理會話間
dispatch_task授權的團隊或個人。
依賴與協作
- 打開目錄 依賴
@deepseek-ai/dsh-api-session-controller的 Session 遠端能力;容器或無桌面環境會表現爲不可用。 - 會話刪除的完整體驗依賴
dsh-session-delete;未安裝時僅刪除入口不可用,其它平鋪功能仍可用。 - MCP、SKILL 可見性按工作區共享;Agent 模式預選按窗格暫存、按會話生效(README 中有對比說明)。
安全與審查
插件代碼在 GitHub 公開倉庫維護(當前線索顯示 0 stars,不代表質量結論)。安裝執行的是你看過的那份源碼;勿在未審閱的情況下把不可信插件加入 profile。
結尾¶
dsh-split-workspaces 把 Harness Web UI 從「單工作區單對話」擴展成可持久化佈局的多窗格工作臺,並在同一面板內提供會話級任務分派設計視圖。若你已經在用 DSH 管理多個代碼目錄,可先在測試 profile 裏啓用,再按 README 的契約測試或瀏覽器探針驗證與你部署的匹配度。