dsh-better-markdown:在 DSH 输入区与会话里补齐 Markdown 体验

前言

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 可立即回到纯文本体验。

典型用法

  1. 按上一节命令把插件加入 profile,确认 enabled 与各子开关符合需求。
  2. 启动或刷新 DSH Web/Desktop,在 composer 中输入例如 ## 小节、列表或围栏代码块,观察输入区上方预览与编辑区高亮。
  3. 发送消息后,在时间线中查看用户气泡是否按 Markdown 显示;用复制功能核对文本是否与发送内容一致。
  4. 若仅需在本机浏览器临时关闭预览,点 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye