前言¶
DeepSeek Harness(DSH)默认会把助手的回复按 Markdown 渲染,但输入框仍是纯文本编辑器,你已发送的用户消息在会话时间线里也往往以纯文本显示。如果你在 composer 里习惯写标题、列表、代码块或表格,就会出现「写的时候全是符号、发出去还是原文、只有对面排版好看」的不对称。
下面介绍的 dsh-better-markdown(维护者 ceasarXuu,GitHub:ceasarXuu/dsh-better-markdown)是运行在浏览器侧的客户端插件:在输入区上方做实时渲染预览,在编辑区对 Markdown 标记做原位高亮,并把已发送的用户消息在时间线里按 Markdown 展示——同时保证复制、会话日志以及模型实际读到的文本与原始字节一致。README 标明其为第三方插件,并非 DeepSeek / DSH 官方组件。
这是什么¶
- 定位:面向 DSH 会话界面的 Markdown 增强(composer 预览 + 原位语法高亮 + 用户消息 Markdown 渲染)。
- 分发:仅通过 GitHub 分发,未发布到 npm;当前资料中的包版本为 0.1.0,许可证 MIT。
- 运行面:Web 与 Desktop 界面均可;逻辑主要在浏览器端,宿主侧只暴露配置开关。
核心功能¶
输入区上方的实时预览¶
在 composer 中输入 Markdown 时,渲染结果会即时出现在输入区上方,走 DSH 自身的 Markdown 管线,资料中列举的支持范围包括:标题、粗体/斜体、行内代码、列表与任务列表、引用、表格、带语法高亮的围栏代码、链接、脚注与数学公式。
编辑区原位语法高亮¶
composer 本体不会把草稿改成 WYSIWYG;插件通过 CSS Custom Highlight API 对 #、**、反引号、列表标记等做降透明度或着色,便于边写边看结构。草稿文本内容不被修改。
用户消息在时间线中按 Markdown 显示¶
每条由你编写并发送的、含 Markdown 语法的消息,可在会话 transcript 中按 Markdown 渲染;复制操作、会话记录以及传给模型的文本仍与发送时字节一致。@ 提及等芯片仍使用宿主自带渲染。
工具栏开关与快捷键¶
composer 工具栏提供 M↓ 按钮,用于切换预览;⌘⇧M / Ctrl+Shift+M 同样有效。该选择在浏览器内记住(localStorage 键 better-markdown.prefs.v1)。时间线是否渲染 Markdown 由插件配置项 transcript 等决定,而非仅由该按钮控制。
环境要求¶
安装前请核对 README 与 package.json 中的约束:
- DSH:
>=0.2.1-rc.5且<0.3.0 - Node:
>=22 - 界面:Web 或 Desktop
安装与启用¶
通过 GitHub 仓库安装¶
将 <profile> 替换为你的 DSH profile 名:
dsh plugin --profile <profile> add github:ceasarXuu/dsh-better-markdown
DSH 应用内 Plugins → Add 可使用同一 spec。若需固定版本,可使用标签,例如:
dsh plugin --profile <profile> add github:ceasarXuu/dsh-better-markdown#v0.1.0
在网络更适合作物安装时,可使用 Release 压缩包(示例对应 v0.1.0):
dsh plugin --profile <profile> add https://github.com/ceasarXuu/dsh-better-markdown/releases/download/v0.1.0/ceasarxuu-dsh-better-markdown-0.1.0.tgz
配置项(cordis.patch.yml)¶
包安装进 profile 后,可在 profiles/<profile>/cordis.patch.yml 中插入或调整插件行。资料中的示例:
# profiles/<profile>/cordis.patch.yml
- insert:
- id: better-markdown
name: '@ceasarxuu/dsh-better-markdown'
config:
enabled: true
transcript: true
composer: true
syntax: true
preview: true
页面加载时,浏览器通过同源请求 GET /plugin/better-markdown/config 读取上述布尔开关。
| 开关 | 默认值 | 作用 |
|---|---|---|
enabled |
true |
总开关;关闭后恢复宿主默认行为,插件仍保持已安装 |
transcript |
true |
会话中已发送用户消息是否按 Markdown 渲染 |
composer |
true |
是否启用 composer 预览及工具栏开关 |
syntax |
true |
是否在 composer 内绘制 Markdown 语法高亮 |
preview |
true |
草稿含 Markdown 时是否默认显示预览 |
将 enabled 设为 false 可立即回到纯文本体验。
典型用法¶
- 按上一节命令把插件加入 profile,确认
enabled与各子开关符合需求。 - 启动或刷新 DSH Web/Desktop,在 composer 中输入例如
## 小节、列表或围栏代码块,观察输入区上方预览与编辑区高亮。 - 发送消息后,在时间线中查看用户气泡是否按 Markdown 显示;用复制功能核对文本是否与发送内容一致。
- 若仅需在本机浏览器临时关闭预览,点 M↓ 或使用 Ctrl+Shift+M(macOS 为 ⌘⇧M);清除站点数据会恢复由
preview等配置决定的默认行为。
消息中的 Markdown 检测与纯文本书写:若无 Markdown 语法,气泡行为与宿主默认一致;含语法时才进入渲染路径。资料说明:代码块、表格与缩进块外的单换行会按 CommonMark 硬换行处理,多行消息不会挤成一段。会话标题、侧栏行等宿主生成的纯文本区域 intentionally 不改动。
实现要点(便于排错)¶
- Transcript:在较低优先级注册
conversation.user.text.node的text键,用平台MarkdownText渲染 run;复制/引用仍读原文。 - Preview:通过
conversation.input.dock读取 live draft 并渲染。 - 高亮:
conversation.input.right提供开关,控制器刷新CSS.highlights,只改绘制、不改布局与 IME。 - 渲染依赖平台模块表中的
@deepseek-ai/dsh-client-ui-primitives;模块不可用时降级为纯文本,避免整页失败。
适用场景与注意¶
适合谁:经常在 DSH 里用 Markdown 写提示词、任务清单或带代码块的说明,又希望输入与历史消息视觉上与助手回复一致的开发者。
限制(来自 README):
- composer 为宿主拥有的 Lexical 编辑器,插件只能装饰,不能变成完整 WYSIWYG;中文输入法、撤销与光标行为仍属宿主。
- 原位高亮依赖 CSS Custom Highlight API(Chromium 105+);不支持的浏览器会跳过该层,预览与 transcript 仍可用。
- 插槽契约针对 DSH 0.2.x;未来
conversation.user.text.node或conversation.input.dock变更可能需要插件更新。
安全与信任:插件以当前 DSH 进程权限运行;安装前请自行审阅 仓库源码 与 MIT 许可证。社区目录 SkillHub 插件页 为独立收录站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态奉行「一切皆插件」,第三方包需自行评估后再装入 profile。
结尾¶
dsh-better-markdown 用一条 GitHub 安装 spec 把 composer 预览、原位高亮与会话内用户消息 Markdown 渲染接到一起,并与助手侧 GFM 管线对齐。若你正在使用 DSH 0.2.x 且 Node ≥ 22,可按本文安装命令启用后,用工具栏 M↓ 与配置项 transcript / preview 微调行为。
- 目录页:https://www.skillhub.cn/plugins/ceasarXuu/dsh-better-markdown
- GitHub:https://github.com/ceasarXuu/dsh-better-markdown