前言¶
DSH 的插件生态强调「一切皆插件」。在 dsh web composition 中,如果需要在 composer 区域增加一个可编辑 Markdown 的草稿面,同时保留原生 composer 的提交路径,可以安装 @mars.liu/dsh-rich-editor。它是一个第三方 dsh web 插件,用于在 composer 区域提供富 Markdown notebook。
资料中给出 owner 字段为 MarchLiu;包名前缀为 @mars.liu,仓库写法另见 mars。本文不将这些不同写法混同,只引用已核实的包名、命令和能力。
插件定位¶
@mars.liu/dsh-rich-editor 在 composer 区域提供两个入口:
- 工具行切换:
conversation.input.left - composer 上下文栈中的编辑器卡片:
conversation.input.dock
两个入口对应同一个按会话隔离的 notebook 草稿。它的定位不是替代原生 composer,而是在 composer 区域增加一个可编辑 Markdown 的草稿面,并与原生 composer 共享同一份草稿。
核心功能¶
入口¶
在 composer 区域中,可以通过工具行切换打开编辑器卡片,也可以从 composer 上下文栈中的卡片进入。这两个入口分别对应 conversation.input.left 和 conversation.input.dock。
草稿保留¶
每个会话保留独立 notebook。关闭或重开面板、组件重挂载时,草稿会保留。
CodeMirror 6 Markdown 编辑¶
编辑器基于 CodeMirror 6 和 Markdown 语言,提供:
- 草稿语法高亮
- 原生撤销/重做
- 原生选择
Enter 键列表编辑¶
列表编辑采用 Codex 风格的 Enter 行为:
- 非空列表项按
Enter打开下一项 - 有序项标记递增
- 复选项重开为未勾选
- 缩进保留
- 空列表项按
Enter去除标记
提交¶
提交通过 conversation 服务的 send 路径完成。失败时,会在 session 的 composer 通知渠道显示,并保留当前草稿。
与原生 composer 同步¶
富编辑器与原生 composer 共享同一草稿。打开/关闭面板和实时编辑都会双向同步;成功提交后,双方草稿都会清空。
安装与启用¶
先确认环境满足以下要求:
- dsh family >=0.0.1-rc.1
- dsh web composition 已挂载
dsh-client-ui-conversation
安装命令如下,用于把插件加入 web profile:
dsh plugin --profile web add @mars.liu/dsh-rich-editor
如果你手工组成 profile,需要把该 bundle 写入 dsh.profile.bundles。包自带 cordis.patch.yml 补丁,用于增加 ui-rich-editor 行;手工 profile 场景下,要自行保证这个 bundle 被列出。
从本地 checkout 构建和测试:
pnpm install && pnpm run build && pnpm test
典型用法¶
1、安装并启用插件后,在 composer 区域打开 notebook 卡片。
2、输入 Markdown 内容。编辑器会按 Markdown 语法高亮草稿,并提供原生撤销/重做和选择。
3、编辑列表时,在列表项上按 Enter:
- 非空项打开下一项
- 有序项标记递增
- 复选项以未勾选状态重开
- 缩进保留
- 空列表项去除标记
4、按 Mod+Enter 提交。提交走 conversation 服务的 send 路径;失败会在 session 的 composer 通知渠道显示,草稿仍保留。
适用场景与注意¶
适合在 dsh web composition 中,希望在 composer 区域使用 Markdown 草稿编辑,同时保持与原生 composer 草稿同步和提交路径一致的开发者。
使用前注意:
- 许可证为 MIT。
- 插件以当前 dsh 进程权限运行;安装前应检查源码、依赖和许可证。
- 依赖 dsh family >=0.0.1-rc.1,并且需要挂载
dsh-client-ui-conversation的 dsh web composition。 - 有序列表前项编辑/删除不会重编号后续项。
- 不支持
/和@触发集成。 - 草稿仅会话生命周期有效,整页刷新会丢失。
- 未接入图片附件粘贴/拖入。
- 浏览器 bundle 内联约 268 kB gzip 的 CodeMirror 依赖。
- 开发阶段对不完整 npm dsh snapshot 使用 stub 和别名到本地 harness checkout;待 dsh 发布完整可安装闭包后移除。
结尾¶
@mars.liu/dsh-rich-editor 提供了一个可落地的 composer 区域富 Markdown 编辑面:两个入口、会话级草稿、CodeMirror 6 Markdown 编辑、Enter 列表编辑,以及与原生 composer 的草稿同步。
社区目录页:已核实资料中未提供具体 URL;社区目录属于 DSH 插件生态的第三方目录,不是官方应用商店。
GitHub:https://github.com/MarchLiu/dsh-rich-editor(资料中另有 git+https://github.com/mars/dsh-rich-editor.git 写法,二者未统一,使用前请核对发布来源)。