dsh-classic-coding:在 DSH Web UI 中打开 Monaco 编辑器与文件树

前言

在 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。

核心功能

这个插件主要做三件事:提供侧栏入口、提供文件树、提供编辑器读写与保存反馈。

  • 侧栏底部有「古法编程」按钮,点击可以展开或收起编辑器面板。
  • 左侧文件树支持懒加载目录、折叠或展开目录,并过滤 .gitnode_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', ...) 注册 describelistDirreadFilewriteFile 四个端点,文件树与编辑器读写底层走 DSH 内置 ctx.fs 文件系统服务。
  • /api 共享通道的唯一拦截器槽位已被官方 gateway 占用,因此插件端点走 handle 独立通道。
  • UI 挂载点为 sidebar.footer.action 触发按钮和 shell.overlay 编辑器面板两个插槽。
  • 样式使用 DSH 主题 CSS 变量 --dsw-alias-*,用于明暗主题自适应。
  • Monaco Editor 经 CDN 动态加载,不引入额外 npm 依赖。
  • 该插件以当前 dsh 进程权限运行,安装前应先检查源码与 MIT 许可证,确认其文件读写路径和服务端点符合预期。
  • 如果你要改插件,lib/index.jslib/client.js 均为源码即产物,改完即用;同时 lib/client.jsfactory 必须以 return module.exports 结尾,否则模块导出为 undefined,DSH 启动会 fail-loud。

结尾

dsh-classic-coding 的价值在于把“看文件、改文件、保存文件”这三步压缩在 DSH Web UI 内完成,避免频繁切换到外部编辑器。它不是通用 IDE 替代品,而是一个围绕 DSH 会话场景的轻量文件编辑面板。

目录页是插件目录页,不是官方应用商店;它与 DeepSeek / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

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

小夜