DeepSeek Harness (DSH) 採用“一切皆插件”的架構。在 Web 界面中直接瀏覽本地文件是常見需求。fsviewer 接管了 DSH 原生的右側詳情欄,提供了一個 Codex 風格的文件樹與預覽工作區。
這是一個由 sunyuhuirong 維護的客戶端插件。它爲 DSH Web 提供了右側欄的文件管理能力,包括目錄樹、文件預覽和側邊聊天。
安裝與配置¶
- 克隆插件源碼到指定目錄:
git clone https://github.com/sunyuhuirong/fsviewer.git YOUR_PLUGIN_PATH
- 編輯 DSH Web profile 的
package.json,添加依賴與配置:
{
"dependencies": {
"fsviewer": "link:YOUR_PLUGIN_PATH"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "fsviewer"]
}
}
}
- 進入 profile 目錄並安裝依賴:
cd ~/.dsh/profiles/web && pnpm install
- 重啓
dsh web使配置生效。
核心功能¶
- 接管原生右欄:渲染在 DSH 原生
details列內(priority -10 影子註冊),與佈局/主題一致;插件停用後原生工具詳情自動恢復。 - 目錄樹 + 文件列表:Host 路由真實列舉目錄與文件(含類型徽章、隱藏項標記),支持懶加載與名稱篩選。
- 文件預覽:Markdown 文件使用官方
MarkdownText渲染並支持源碼切換;文本文件顯示源碼;二進制或超大文件給出提示並提供系統打開。 - 多文件頁籤:已打開文件以頁簽呈現,支持切換與關閉。
- 複製內容:預覽區支持一鍵複製文件全文。
- 麪包屑 + 智能默認根:默認根優先取當前會話工作目錄(cwd),回退到最近 workspace;麪包屑支持回退。
- 按工作區徹底隔離:頁籤、文件樹展開狀態、樹欄開關與寬度、瀏覽器頁籤、側邊聊天(含歷史)均按
workspaceId獨立存儲;切換工作區時整體切換面板並原地恢復狀態。 - 會話文件引用改道:攔截
workspaces.openPath,會話內點擊文件直接在本面板預覽,而非彈出系統選擇框。 - 明暗主題自適應:配色全部使用 DSH 主題變量。
典型用法¶
- 進入任一會話,點擊頂部 Session log 導出按鈕右邊的「右側欄」圖標按鈕,面板接管原生右側
details欄並滑入。 - 右側文件樹欄:點擊 ▸ 展開目錄、點擊目錄名進入;篩選框按名稱過濾;拖拽左緣調整樹欄寬度(120–320px);點文件夾圖標可收起/展開樹欄。
- 文件預覽:點擊文件後,左側預覽區渲染內容。Markdown 文件可切換「查看源代碼 / 渲染視圖」;文本文件顯示源碼;二進制或超大文件提示並提供「⧉ 打開」用系統應用打開。
- 操作按鈕:頂部「⧉ 打開」按鈕用系統默認應用打開當前文件;「⤢」按鈕在默認寬度(360px)與加寬(520px)間切換。
- 引用改道:在會話中點擊文件引用(如工具產出的路徑),會改道到本面板預覽。
- 關閉面板:再次點擊頂部按鈕(或面板內「打開文件」僞頁籤的 ×)收起面板;切換會話時自動收起。
適用場景與注意¶
- 安全提示:Host 半邊通過
/fsviewer-api路由直接使用 Nodefs讀取本機任意絕對路徑,無任何鑑權(與 DSH 原生 browse 目錄後端同級)。請勿在多用戶或網絡暴露的環境中使用。 - 已知限制:
- 單目錄最多列舉 1000 項,超出截斷。
- 文件預覽上限 1MB,超出部分截斷顯示,不返回二進制內容。
- 「選擇目錄」走 DSH 原生目錄選擇器,其行爲受 profile 的
directory-picker後端配置影響。
總結¶
fsviewer 解決了在 DSH Web 中直接管理本地文件的需求。它通過接管原生 UI 提供了沉浸式的文件瀏覽體驗,並利用工作區隔離機制確保了多會話場景下的狀態管理。