dsh-file:DeepSeek Harness 的當前對話工作區文件管理器

前言

DeepSeek Harness 的插件生態強調「一切皆插件」。在 Web 或桌面端使用 dsh 做會話式開發時,經常會碰到一個具體需求:當前對話已經綁定了一個工作區目錄,希望在不離開界面的情況下查看文件、編輯文件、保存修改,而不用切到本地編輯器或終端。

dsh-file 就是針對這個場景的插件。維護者是 chengzhi43,包名爲 @rose43/dsh-file,許可證爲 MIT。它做的事情比較集中:在 Web 側邊欄瀏覽當前對話工作區的文件,在中間主區域編輯。

這是什麼

dsh-file 是 DeepSeek Harness 的 VS Code 風格文件管理器插件。

它把三個動作放進同一個界面:

  • 在側邊欄顯示當前工作區的文件樹;
  • 在中間主區域打開文件編輯視圖;
  • 文件視圖與對話/軌跡並列,不依賴彈窗。

它適合希望在 dsh web 或桌面端內直接處理當前會話工作區文件的場景。

核心功能

側邊欄文件管理器

側邊欄底部有“文件”按鈕。點擊後,側邊欄主體切換爲文件管理器;再次點擊,切回工作區/會話列表。

文件管理器打開時,會解析當前會話的工作區目錄(SessionHeader.cwd),並通過 setRoot 重新固定網關根目錄。因此瀏覽範圍跟隨當前對話,而不是固定爲啓動 dsh web 的目錄。

中間列編輯

點擊文件後,文件在中間列的“文件”視圖中打開。該視圖與“對話/軌跡”並列。

編輯器使用 Monaco Editor,並按擴展名自動進行語法高亮。Monaco EditorCDN 加載;CDN 不可達時降級爲純文本 textarea

Markdown 預覽

打開 .md 文件時,默認渲染爲只讀預覽。Markdown 解析使用 marked + GFM

預覽/源碼切換按鈕用於切換顯示模式;模式選擇會保存到 localStorage,下次打開沿用。

主題設置

編輯器工具欄的“主題”按鈕可以打開主題設置面板。

預設主題包括淺色、深色、One DarkGitHub。可自定義背景色、文字色和字號,範圍 10–28px。設置會即時應用,並持久化到 localStorage

主題也支持導出 JSON 主題文件,並支持從 JSON 文件導入恢復。

編輯與保存

保存可以使用 Ctrl+S,也可以點擊編輯器內“保存”按鈕。未保存修改會有 dirty 標記。

多文件打開時,可以在頂部標籤條切換,並逐個關閉。

文件操作

文件操作支持:

  • 新建文件;
  • 新建目錄;
  • 重命名;
  • 刪除。

刪除需要確認;非空目錄會被拒絕。

工作區邊界

所有路徑解析都相對當前固定的 root。越界路徑會被 host 拒絕,並且包含 symlink 逃逸防護。

安裝與啓用

資料給出的 npm 安裝命令爲:

dsh plugin --profile web add @rose43/dsh-file

如果從 clone 下來的 dsh-file 目錄本地安裝,需要在插件目錄內執行:

cd /path/to/dsh-file
dsh plugin --profile web add .

桌面端使用 desktop profile。命令爲:

cd /path/to/dsh-file
dsh plugin --profile desktop add .

Releases 下載 tarball 後,資料中的本地安裝示例爲:

dsh plugin --profile web add ./rose43-dsh-file-0.1.2.tgz

執行 dsh plugin add 後,包會被 pnpm-link 進 profile,並追加到 dsh.profile.bundlesweb 插件需要重啓 dsh web 後生效。

桌面端 profile 與 web profile 獨立,插件不會自動共享。安裝到 desktop profile 後,需要完全退出並重啓桌面端。

注意:不要往 ~/.dsh/profiles/desktop/cordis.yml 添加插件。正確入口是 profile package.jsondsh.profile.bundles + dependenciesdsh plugin add 做的正是這件事。

另外,不要在插件目錄裏跑 npm install,這可能破壞 profiles 的 symlink 結構。@deepseek-ai/* 包不能在插件自己的 node_modules 裏安裝副本;必須讓 Node 解析到 dsh 安裝目錄的同一實例。生產發佈時,插件將 @deepseek-ai/* 聲明爲 peerDependencies,由 profile 提供。

配置

cordis.patch.yml 中的 root 只是無會話時的兜底根目錄,默認 process.cwd()。文件管理器打開時,會按當前對話工作區重新固定,因此一般無需改動:

- insert:
    - id: '@rose43/dsh-file'
      name: '@rose43/dsh-file'
      config:
        root: !!js process.cwd()

典型用法

1、點擊側邊欄底部“文件”按鈕,打開文件管理器。

2、點擊某個文件,在中間列“文件”視圖中打開。

3、如果打開 .md 文件,使用預覽/源碼切換按鈕切換顯示模式。

4、通過工具欄“主題”按鈕打開主題設置,導出或導入 JSON 主題文件。

5、修改後使用 Ctrl+S 或“保存”按鈕保存。

6、使用插件提供的文件操作新建、重命名或刪除文件/目錄。

適用場景

適合這些場景:

  • dsh web 中使用當前對話工作區;
  • 在桌面端 dsh 中希望快速查看和修改工作區文件;
  • 需要 Markdown 預覽、主題設置和基礎文件操作;
  • 希望把文件瀏覽和編輯保留在插件化界面內。

注意事項

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證;
  • 工作區邊界依賴當前固定 root,越界路徑會被拒絕;
  • Monaco Editor 依賴 CDNCDN 不可達時降級爲純文本 textarea
  • desktopweb profile 獨立,安裝命令中的 --profile 要與目標端一致;
  • 不要往 ~/.dsh/profiles/desktop/cordis.yml 添加插件;
  • 不要在插件目錄裏跑 npm install
  • @deepseek-ai/* 需要解析到 dsh 安裝目錄的同一實例。

鏈接

目錄頁(社區目錄):

https://www.skillhub.cn/plugins/chengzhi43/dsh-file

GitHub:

https://github.com/chengzhi43/dsh-file
羽毛球分组比赛记分
小程序二维码

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

小夜