前言¶
在 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 / 幻方无官方从属关系。