前言¶
在 DSH 裏做對話式開發時,工具輸出、代碼生成和本地工作區文件經常混在一起。如果只是想查看一個文件、改一小段代碼並保存,切到外部編輯器會打斷當前會話節奏。dsh-classic-coding 解決的是這個問題:它在 DSH Web UI 中提供一個覆蓋層面板,把文件樹和 Monaco 編輯器放在側邊打開,讓你在不離開當前 DSH 界面的情況下查看和保存文件。
這是什麼¶
dsh-classic-coding 是由 better-er 維護的一個 dsh 客戶端插件,採用 MIT 許可證。它的定位很具體:在 DSH Web UI 中提供 Monaco 編輯器加文件樹的覆蓋層面板,用來快速查看當前工作區文件、打開多文件標籤、保存修改,並把消息流中的文件入口接到這個面板裏。
它聲明 dsh.client 並導出 ./client,同時聲明 dsh.bundle。安裝後會被自動識別爲 profile layer 並掛載,不需要手工寫組合 entry。
核心功能¶
這個插件主要做三件事:提供側欄入口、提供文件樹、提供編輯器讀寫與保存反饋。
- 側欄底部有「古法編程」按鈕,點擊可以展開或收起編輯器面板。
- 左側文件樹支持懶加載目錄、摺疊或展開目錄,並過濾
.git、node_modules等目錄。 - Monaco 編輯器通過 CDN 動態加載,支持多文件 Tab、語法高亮,以及
Ctrl+S保存當前文件。 - 底部狀態欄顯示當前文件路徑和保存結果。
- 面板可以通過點擊遮罩、按
Esc或點關閉按鈕關閉,並跟隨 DSH 明暗主題自動適配。 - 當側欄收起成窄 rail 時,按鈕會切換爲單圖標按鈕;側欄展開時恢復完整兩行結構。
- 消息流中的工具行路徑和產物區文件按鈕後會出現「古法編程」尾巴,點擊尾巴在插件內打開對應文件;點擊按鈕本身保持原來的外部打開行爲。
安裝與啓用¶
先執行安裝命令,讓 DSH 從 GitHub 拉取該插件:
dsh plugin --profile web add github:better-er/dsh-classic-coding
安裝後會自動掛載,不需要手工編輯任何組合文件。重啓 DSH web 後即可啓用。
如果需要移除,執行卸載命令:
dsh plugin --profile web remove dsh-classic-coding
卸載後重啓 DSH web,該插件不再加載。
典型用法¶
下面是一個常用的查看與保存流程。
1、從側欄底部點擊「古法編程」按鈕,展開編輯器面板。
2、在左側文件樹中找到目標文件;目錄會懶加載,也可以摺疊或展開。
3、在 Monaco 編輯器中打開文件,查看語法高亮或多文件 Tab。
4、修改完成後按 Ctrl+S 保存當前文件。
5、在底部狀態欄確認當前文件路徑和保存結果。
6、完成後點擊遮罩、按 Esc 或點關閉按鈕收起面板。
如果文件來自消息流中的工具行路徑或產物區文件按鈕,可以優先點擊後面的「古法編程」尾巴,直接在插件內打開;如果仍想使用外部打開,就點擊按鈕本身。
適用場景與注意¶
適合的場景是:你在 DSH Web 對話中已經拿到工具輸出或代碼文件,只想快速查看、小幅修改並保存,不想離開當前界面。
需要注意以下幾點:
- 插件的 Host 端通過
ctx.connection.rpc.handle('/classic-coding', ...)註冊describe、listDir、readFile、writeFile四個端點,文件樹與編輯器讀寫底層走 DSH 內置ctx.fs文件系統服務。 /api共享通道的唯一攔截器槽位已被官方 gateway 佔用,因此插件端點走handle獨立通道。- UI 掛載點爲
sidebar.footer.action觸發按鈕和shell.overlay編輯器面板兩個插槽。 - 樣式使用 DSH 主題 CSS 變量
--dsw-alias-*,用於明暗主題自適應。 - Monaco Editor 經 CDN 動態加載,不引入額外 npm 依賴。
- 該插件以當前 dsh 進程權限運行,安裝前應先檢查源碼與 MIT 許可證,確認其文件讀寫路徑和服務端點符合預期。
- 如果你要改插件,
lib/index.js與lib/client.js均爲源碼即產物,改完即用;同時lib/client.js的factory必須以return module.exports結尾,否則模塊導出爲undefined,DSH 啓動會 fail-loud。
結尾¶
dsh-classic-coding 的價值在於把“看文件、改文件、保存文件”這三步壓縮在 DSH Web UI 內完成,避免頻繁切換到外部編輯器。它不是通用 IDE 替代品,而是一個圍繞 DSH 會話場景的輕量文件編輯面板。
目錄頁是插件目錄頁,不是官方應用商店;它與 DeepSeek / 幻方無官方從屬關係。