dsh-workbench-layout:爲 DSH Web 提供三欄工作區佈局

前言

用 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
羽毛球分组比赛记分
小程序二维码

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

小夜