在 DSH Web 環境中,處理文件通常需要切換窗口或使用功能臃腫的側邊欄。dsh-file-panel-left 提供了一個集中的“文件工作臺”體驗,將文件資源管理器、代碼編輯器和預覽器整合在一個面板中。這是一個精簡的 Fork,保留了文件相關的核心能力(文件樹、編輯器、預覽、@ 引用),移除了終端、瀏覽器、Git 和標籤頁等無關功能。
核心功能¶
佈局與交互¶
插件採用經典的“左樹右內容”佈局。左側爲文件樹,右側爲內容區域。支持可拖動的面板寬度(240-480px,默認 280px)。內容區域的“關閉”按鈕可摺疊顯示頁,恢復 65% 的視口寬度以專注於文件樹。佈局狀態和寬度偏好會按會話隔離保存。
文件樹¶
文件樹支持懶加載目錄(每次加載一級以保持響應速度)、符號鏈接支持(解析真實類型並標記斷鏈)、UNC 網絡路徑以及全局文件名搜索(300ms 防抖)。用戶可以通過樹頭或文件夾行的“+”號創建新文件(Enter 確認,Esc 取消),或右鍵複製相對/絕對路徑、重命名或刪除文件。會話根目錄不可刪除。
代碼編輯器¶
編輯器基於 CodeMirror 6 構建,支持 20+ 種語言的語法高亮(包括 JS/TS/JSON/Python/HTML/CSS/Markdown/Rust/Go 等)。提供 Ctrl/Cmd+F 搜索、括號匹配、代碼摺疊、自動縮進和列選擇。支持 Ctrl/Cmd+S 保存文件,且包含自動保存機制(每秒檢查一次未保存更改)。對於 JSON/JSONC 文件,支持 Ctrl/Cmd+Shift+F 快捷格式化。
查看器¶
內置 6 種查看器:圖像、PDF、Markdown(含 Mermaid 預覽)、HTML(在沙箱 iframe 中運行,不訪問 GUI 數據或本地文件)、代碼和二進制文件。超大文件會被截斷顯示(前 512 KB)。Markdown 支持預覽和編輯模式切換。
@ 引用¶
在編輯器中選中代碼並釋放鼠標,會觸發“添加到對話”彈窗,插入純引用行(如 @relative/path L12-L25),不復制選中文本,以保持 Token 友好。插件包含 file-line-reading 技能,引導 AI 僅讀取引用的行範圍。該功能與 DSH 官方的 @ 源共存,互不干擾。
集成能力¶
聊天中的文件鏈接會優先在側邊欄打開。外部插件可以通過 ctx.betterSidebar 服務註冊側邊欄標籤和自定義文件查看器。
安裝與啓用¶
安裝前請確保環境滿足要求:Node.js >= 20 且已安裝 DSH Web(CLI)。
dsh plugin --profile web add dsh-file-panel-left
安裝後,無需額外配置文件。DSH 運行時會自動提供 React 18、Cordis 和 @deepseek-ai/dsh-* 依賴。安裝完成後需重啓 DSH 並硬刷新瀏覽器(Ctrl+Shift+R / Cmd+Shift+R)以加載插件。
典型用法¶
- 文件操作:單擊文件打開,或使用樹頭/文件夾行的“+”創建新文件。
- 代碼編輯:在編輯器中按 Ctrl/Cmd+S 保存,按 Ctrl/Cmd+F 搜索代碼,按 Ctrl/Cmd+Shift+F 格式化 JSON。
- 引用代碼:在編輯器中選中一段代碼並釋放鼠標,系統會自動插入
@path L12-L25引用行。
注意事項¶
- 本地開發:如果使用 pnpm 進行本地開發,
file:依賴是複製而非鏈接。修改源碼後,需刪除~/.dsh/profiles/web/node_modules/dsh-file-panel-left並重新運行pnpm install,否則瀏覽器可能加載舊的構建。 - 會話隔離:每個會話擁有獨立的工作目錄和麪板狀態。
- 兼容性:Windows 標題欄兼容模式下會預留空間;無設置服務的部署會回退使用
~/.dsh/dsh-file-panel-left-prefs.json存儲偏好。
總結¶
dsh-file-panel-left 爲 DSH Web 提供了一個輕量、專注的文件工作環境。它通過移除非必要功能提升了文件操作的效率,並提供了完善的編輯和引用體驗。更多細節可參考 GitHub 倉庫。