前言¶
用 DeepSeek Harness Web(下稱 DSH Web)做開發時,會話窗口是主角。想看一眼某個文件的改動、確認哪些代碼還沒提交,或者跑一條構建命令,通常要在會話和其它視圖之間來回切換,上下文一再被打斷。
DSH 的理念是「一切皆插件」,這類佈局層面的需求同樣可以由插件解決。dsh-workbench-layout 做的事情是:把官方 AppFrame 重排成三欄——左側導航、中間文件與終端、右側保留原生會話——讓你在看文件、查 Git、開終端的同時不丟掉當前對話。
這是什麼¶
dsh-workbench-layout 是一個 DSH Web 插件,npm 包名爲 @lsq64737/dsh-workbench-layout,當前版本 0.1.5,作者 lsq64737,許可證 MIT,engines 要求 Node >= 24.0.0,由 GitHub 上的 lsq-dsh-plugins 組織維護,倉庫地址見文末。
它不替換會話本身:文件、Git 狀態、編輯器標籤和終端跟隨所選 Workspace,右側的官方 DSH 會話、任務狀態、工具與輸入區保持原樣。
整體結構是三欄:
- 左側:Sessions、文件瀏覽器、Git 變更與 Commit Graph、終端列表;
- 中間:多文件標籤編輯器;
- 右側:官方 DSH 會話、任務狀態、工具與輸入區。
核心功能¶
文件與編輯¶
- 文件樹懶加載瀏覽,支持創建、重命名、刪除文件與文件夾,可通過上下文菜單複製工作區相對路徑或絕對路徑。
- 按 Workspace 的 Git 狀態給文件樹和編輯器標籤着色:untracked / deleted / conflicted 爲紅色,added 爲綠色,modified / renamed 使用警告色。
- 編輯器緩衝與 Git
HEAD比較,提供可點擊的變更槽標記;點擊後打開本地 Unified Diff 彈窗,含上下文、成對新舊行號與字符級強調,可逐個跳轉變更,或只撤銷當前塊(撤銷落在草稿上,仍可再撤銷)。彈窗寬度可調,且跨變更、跨文件、跨頁面刷新記憶。 - 多文件標籤頁;標籤溢出時可用滾輪橫向滾動。
Ctrl/Cmd+S保存。寫入使用 DSH 版本令牌,外部修改過的文件不會被靜默覆蓋;頁面可見時約每秒批量檢查一次打開文件的外部變更,髒草稿會給出 Reload / Keep Current 兩個選擇。- 保存時保留文件原有的 CRLF / LF / CR 行尾風格,避免行尾歸一化造成假的髒標記。
- Markdown 默認以渲染後的 Preview 模式打開,編輯時切換到 Source 模式。
- DSH 工具產出的文件引用,可以直接在中間編輯器打開。
Git 工作區¶
- staged / unstaged 變更以列表或目錄樹查看,通過顯式操作執行 stage、unstage、discard 與 commit。
- 工作樹、staged、commit、比較 Diff 均以獨立編輯器標籤打開,使用 CodeMirror MergeView 渲染,支持 Side by side、Unified、Inline 三種模式、未變區域摺疊與長行折行。
- lane 式 Commit Graph 展示本地與遠程 ref 的分支、合併、標籤、作者、時間戳與文件統計;滾動時按 40 條分頁自動加載更早提交。提交可原地展開,文件以列表或樹排列。
- 本地分支的創建、切換、重命名與安全刪除;可從選定 ref 或 commit 創建分支。
- 配置 remote 後可執行 Fetch、快進 Pull、Push、Publish、Sync。
- 提交操作:複製 hash、Cherry-pick、Revert、創建分支、與當前 Workspace 比較。
終端¶
- 基於 xterm.js 與 node-pty 的交互終端,在所選 Workspace 根運行。
- 可保留多個終端會話,與文件、Diff 標籤並列;切換標籤時終端狀態保留。
- 使用主機配置的 shell:Windows 爲
ComSpec,類 Unix 爲SHELL。
佈局¶
- 使用官方 AppFrame 分隔條調整中/右列寬度。
- 可從側欄頁腳摺疊中間編輯器;選擇文件、Diff 或終端時自動恢復。
- 會話變窄時,輸入區、菜單與統計信息會相應適配。
安裝與啓用¶
把公共包安裝進 DSH Web profile:
dsh plugin --profile web add @lsq64737/dsh-workbench-layout
安裝後如果 DSH Web 正在運行,需要重啓。
終端功能依賴原生 node-pty 包。如果 pnpm 報 ERR_PNPM_IGNORED_BUILDS,在 DSH Web profile 目錄運行 pnpm approve-builds,批准 node-pty,然後重新執行安裝或重啓 DSH Web。
更新時重新運行同一條 add 命令。卸載:
dsh plugin --profile web remove @lsq64737/dsh-workbench-layout
典型用法¶
按 README 給出的流程:
1、選擇一個 DSH Workspace。
2、用側欄模式在 Sessions / Files / Git / Terminal 之間切換。
3、選擇文件、Diff、提交文件或終端,在中間列打開。
4、拖動中/右分隔條,分配編輯與會話各自的空間。
5、用右下角側欄操作摺疊或恢復中間列。
適用場景與注意¶
適合主要在 DSH Web 裏工作、希望不離開會話就能看代碼、查 Git 狀態、開終端的人。如果你習慣把編輯器、終端和會話放在同一個窗口裏,這套佈局可以省去在多個窗口之間的切換。
使用前注意以下幾點:
- Git 功能要求所選 Workspace 根是一個 Git 倉庫;遠程操作使用運行 DSH 的機器上已配置的 Git 憑據,插件不請求也不存儲遠程憑據。
- Pull 與 Sync 僅快進;Cherry-pick 與 Revert 要求乾淨工作樹,Git 報告衝突時自動中止。
- 遞歸刪除文件夾與破壞性 Git 操作需要確認;文件與文件夾刪除是永久的。
- 安全設計上:拒絕 Workspace 外的路徑遍歷與符號鏈接訪問;文件創建爲原子操作,保存使用版本檢查,重命名不會替換已有條目;外部刷新通過官方 DSH 文件系統批量比較版本,從不自動替換未保存草稿;Git 命令使用固定參數不經 shell,Git 操作禁用終端憑據提示。
最後提醒:插件以當前 dsh 進程的權限運行,能訪問該進程能訪問的資源。安裝前建議查看其源碼與許可證(本項目爲 MIT),確認符合自己的安全要求。
小結¶
dsh-workbench-layout 在不動官方會話與輸入流程的前提下,把文件編輯、Git 操作與終端搬進 DSH Web 的三欄佈局,安裝和卸載各只需一條命令。相關鏈接:
- 目錄頁(社區維護的獨立插件目錄,與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/lsq-dsh-plugins/dsh-workbench-layout
- GitHub:https://github.com/lsq-dsh-plugins/dsh-workbench-layout