前言¶
DSH 桌面端自身有代码与纯文本预览,但定位是查看,不是编辑:没有补全、折叠、自动配对括号、保存冲突保护这些东西。想在 DSH 里改代码,要么跳到外部编辑器,要么忍受预览面板。DSH CodeCraft 就是为填这个缺口来的。
作者是 lllrunze,插件名 lllirunze/dsh-codecraft,npm 包名 dsh-codecraft,当前版本 0.2.2,许可证 MIT。它的做法不是另开一个窗口,而是在 DSH 原生的工作区浏览器和文件标签页里挂一个 CodeMirror 6 编辑器,编辑和保存都走宿主的原生标签页流程。
下面按功能、安装、用法、注意事项介绍。需要说明,该插件在 SkillHub 目录的分类是「客户端」,其 manifest 声明的是 Web 客户端侧的注入与外部依赖,属于客户端型插件。
核心功能¶
编辑器基础能力¶
- 语法高亮、行号、折叠、搜索、行注释、缩进、撤销/重做、补全。
- 按回车时自动闭合常见括号和引号,包括选中后包裹、成对删除,以及语言相关的反引号和 Python 三引号。
- 回车时按 Python 语法上下文决定缩进:块、分支、多行表达式、闭合定界符。
- 缩进宽度可选两个或四个空格,同一设置面板里切换,改动只影响打开的编辑器,不重写已有文件内容。
Python 智能补全¶
- Python 文件在 macOS 和 Windows 上默认开启语义补全(v0.2.2)。
- 使用插件自带的 Pyright 服务,工作区范围;优先选显式解释器或工作区的
.venv/venv,PATH 兜底时 macOS 用python3,Windows 用python。 - 补全覆盖 import、跨文件符号、推断出的成员、所选环境中的包。
- 在明确的调用上下文中接受方法、函数或构造函数补全时,会插入
()并把光标放在括号内;赋值右侧、回调参数、容器、import、装饰器、已有片段和已有括号保持不变。 - 状态栏会显示
Starting、Ready/Unavailable;服务不可用不影响正常编辑和保存。
Google Style Docstring 占位¶
在 Python 函数、方法、异步函数或类的第一个语句位置输入 """ 后回车,插件会生成 summary、Args、Returns / Yields 占位内容。仅在语法上下文明确时生成;模块作用域、赋值语句、嵌套块、后续语句或带前缀字符串中的三引号仍然是普通多行字符串。
保存与草稿¶
- 手动保存
Cmd+S(macOS)或Ctrl+S(Windows),也可点状态栏的保存动作。保存路径有冲突保护:能检测外部改动并拒绝写入过期内容。 - 自动保存默认关闭,可在
Settings → CodeCraft打开,间隔可选 10、30、60、120 秒。自动保存与手动保存共用同一条无冲突写入路径。 - 切标签页、关标签页或刷新页面后恢复未保存草稿。
- 保留 LF / CRLF、UTF-8 BOM,并在支持的平台保留 POSIX 文件权限位。
安全边界¶
- 文件只本地编辑,没有模型调用、遥测或文件上传。
- 自动拒绝过大、二进制、非 UTF-8、行尾混合的文件。
- 限制在 2 MiB 以内的 UTF-8 源码和文本文件。
安装与启用¶
环境要求¶
| 组件 | 要求 |
|---|---|
| 基础编辑器 | macOS 或 Windows |
| Python Intelligence | v0.2.2 仅 macOS 或 Windows |
| DSH Desktop | 0.2.1-rc.5 |
| Node.js | 从源码构建时需要 20 或更高 |
Linux 未做验证,当前不支持。
从 npm 安装¶
dsh plugin --profile desktop add dsh-codecraft@latest
装完重启 DSH Desktop。插件 manifest 会自动把 CodeCraft 加进所选 DSH profile,不需要手工改 profile。
从源码安装¶
git clone https://github.com/lllirunze/dsh-codecraft.git
cd dsh-codecraft
npm install
npm run check
dsh plugin --profile desktop add "$PWD"
npm run check 依次跑 typecheck、test、build、verify。装完同样需要重启 DSH Desktop。
更新与卸载¶
dsh plugin --profile desktop update --latest dsh-codecraft
或者指定版本:
dsh plugin --profile desktop add dsh-codecraft@0.2.2
卸载:
dsh plugin --profile desktop remove dsh-codecraft
卸载后重启 DSH Desktop,原生文件预览会自动恢复。插件目前没有应用内更新通知或后台静默更新,安装与更新都由 DSH CLI 负责。
典型用法¶
- 在 DSH 工作区浏览器里打开一个支持的源码或文本文件。
- DSH 打开原生文件标签页,并选中 CodeCraft 渲染器。
- 直接编辑,按
Cmd+S或Ctrl+S,或点状态栏保存动作。 - 需要看原始内容时,用标签页上方的 viewer 菜单切回 DSH 原生代码或纯文本预览。
若要打开自动保存:进 Settings → CodeCraft,选择 10 / 30 / 60 / 120 秒间隔。若要调整缩进宽度,在同一个设置区里改;Python 文件额外享受语法感知的回车缩进。
快捷键(macOS 与 Windows 对照):
| macOS | Windows | 作用 |
|---|---|---|
Cmd+S |
Ctrl+S |
保存当前文件 |
Cmd+F |
Ctrl+F |
文件内搜索 |
Cmd+/ |
Ctrl+/ |
切换行注释 |
Cmd+Z / Cmd+Shift+Z |
Ctrl+Z / Ctrl+Y |
撤销 / 重做 |
Tab / Shift+Tab |
Tab / Shift+Tab |
增加 / 减少缩进 |
| — | Ctrl+Space |
手动打开补全 |
macOS 未绑定 Option 组合键,因为可能产生组合输入字符。Ctrl+Space 在操作系统没有占用的环境下可用。
适用场景与注意¶
适合在 DSH 桌面端里直接改 .py 或常见文本源码、希望编辑动作保留在原生标签页和工作区流程里的人。Mac 和 Windows 用户可用 Python 语义补全;只做查看或纯文本编辑的场景用原生预览就够了,不必装。
按 DSH 的插件模型,插件以当前 DSH 进程权限运行,并可以通过 manifest 声明注入客户端模块。本插件的 manifest 声明了 inject 项(dsh-client-locale、dsh-client-ui-settings、dsh-client-ui-settings-plugins、dsh-client-ui-sidebar-right、dsh-client-ui-sidebar-documentpreview)和 external 依赖(dsh-client-ui-primitives、react、react/jsx-runtime)。安装前建议检查源码与许可证(MIT),再决定是否装入。
两个已被文档确认的兼容性注意点:
- 若同时装了修改 DSH 侧栏文件区的插件(例如
dsh-better-sidebar),它可能替换或拦截原生Files内容,导致 CodeCraft 拿不到正常的原生文件标签页流程。处理方式是进入该侧栏插件的设置,关闭它对Files的作用,必要时重启 DSH Desktop,再从原生Files侧栏打开文件确认。 - 排查顺序上的建议:先确认另一个插件替换或拦截了 DSH 的哪个原生界面,优先把那个插件配置成不干扰本插件需要的原生流程。
限制方面:符号链接只读;Python 的 hover、签名帮助、诊断、跨文件自动编辑、跳转定义尚未提供;不支持 Linux;没有跨窗口草稿同步。
结尾¶
DSH CodeCraft 把编辑能力放进 DSH 原生的文件标签页里,靠原生工作区的权限和保存链路做冲突保护与草稿恢复,而不是另起一套编辑器界面。它的价值在于让「在 DSH 里改代码」这件事不需要跳出宿主环境。目前维护在 0.2.2,Linux 和若干 Python 语义功能还缺位。
目录页:https://www.skillhub.cn/plugins/lllirunze/dsh-codecraft
GitHub:https://github.com/lllirunze/dsh-codecraft
文档:https://github.com/lllirunze/dsh-codecraft/tree/master/docs